summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.mk7
-rw-r--r--CleanSpec.mk2
-rw-r--r--api/current.txt52
-rw-r--r--cmds/am/src/com/android/commands/am/Am.java96
-rw-r--r--cmds/app_process/app_main.cpp29
-rw-r--r--cmds/bootanimation/BootAnimation.cpp107
-rw-r--r--cmds/bootanimation/BootAnimation.h3
-rw-r--r--core/java/android/app/Activity.java7
-rw-r--r--core/java/android/app/ActivityManager.java101
-rw-r--r--core/java/android/app/ActivityManagerNative.java181
-rw-r--r--core/java/android/app/ActivityThread.java37
-rw-r--r--core/java/android/app/ActivityView.java285
-rw-r--r--core/java/android/app/AppOpsManager.java2
-rw-r--r--core/java/android/app/ApplicationPackageManager.java33
-rw-r--r--core/java/android/app/Dialog.java4
-rw-r--r--core/java/android/app/Fragment.java1
-rw-r--r--core/java/android/app/FragmentManager.java5
-rw-r--r--core/java/android/app/IActivityContainer.aidl35
-rw-r--r--core/java/android/app/IActivityContainerCallback.aidl24
-rw-r--r--core/java/android/app/IActivityManager.java32
-rw-r--r--core/java/android/app/IWallpaperManager.aidl10
-rw-r--r--core/java/android/app/NativeActivity.java37
-rw-r--r--core/java/android/app/Notification.java65
-rw-r--r--core/java/android/app/SharedPreferencesImpl.java6
-rw-r--r--core/java/android/app/backup/BackupDataInput.java12
-rw-r--r--core/java/android/app/backup/BackupDataOutput.java12
-rw-r--r--core/java/android/app/backup/FileBackupHelperBase.java13
-rw-r--r--core/java/android/bluetooth/BluetoothInputDevice.java26
-rw-r--r--core/java/android/bluetooth/BluetoothSocket.java27
-rw-r--r--core/java/android/content/ContentProviderNative.java13
-rw-r--r--core/java/android/content/Intent.java11
-rw-r--r--core/java/android/content/pm/ComponentInfo.java18
-rw-r--r--core/java/android/content/pm/PackageItemInfo.java52
-rw-r--r--core/java/android/content/pm/PackageManager.java122
-rw-r--r--core/java/android/content/pm/PackageParser.java73
-rw-r--r--core/java/android/content/res/AssetManager.java7
-rw-r--r--core/java/android/database/CursorWindow.java53
-rw-r--r--core/java/android/database/sqlite/SQLiteConnection.java66
-rw-r--r--core/java/android/database/sqlite/SQLiteDatabase.java10
-rw-r--r--core/java/android/ddm/DdmHandleProfiling.java47
-rw-r--r--core/java/android/hardware/Camera.java2
-rw-r--r--core/java/android/hardware/SystemSensorManager.java12
-rw-r--r--core/java/android/hardware/display/DisplayManager.java21
-rw-r--r--core/java/android/hardware/display/DisplayManagerInternal.java109
-rw-r--r--core/java/android/hardware/display/DisplayViewport.java (renamed from services/java/com/android/server/display/DisplayViewport.java)4
-rw-r--r--core/java/android/hardware/input/IInputManager.aidl11
-rw-r--r--core/java/android/hardware/input/InputDeviceIdentifier.aidl19
-rw-r--r--core/java/android/hardware/input/InputDeviceIdentifier.java82
-rw-r--r--core/java/android/hardware/input/InputManager.java84
-rw-r--r--core/java/android/hardware/input/InputManagerInternal.java36
-rw-r--r--core/java/android/hardware/usb/UsbDevice.java49
-rw-r--r--core/java/android/hardware/usb/UsbDeviceConnection.java2
-rw-r--r--core/java/android/hardware/usb/UsbRequest.java2
-rw-r--r--core/java/android/inputmethodservice/IInputMethodSessionWrapper.java10
-rw-r--r--core/java/android/net/ConnectivityManager.java12
-rw-r--r--core/java/android/net/EthernetDataTracker.java2
-rw-r--r--core/java/android/net/INetworkManagementEventObserver.aidl27
-rw-r--r--core/java/android/net/LinkAddress.java207
-rw-r--r--core/java/android/net/LinkProperties.java48
-rw-r--r--core/java/android/net/NetworkIdentity.java8
-rw-r--r--core/java/android/net/NetworkPolicy.java8
-rw-r--r--core/java/android/net/NetworkStats.java6
-rw-r--r--core/java/android/net/NetworkTemplate.java13
-rw-r--r--core/java/android/net/ProxyDataTracker.java204
-rw-r--r--core/java/android/net/SSLCertificateSocketFactory.java2
-rw-r--r--core/java/android/net/arp/ArpPeer.java174
-rw-r--r--core/java/android/os/BatteryStats.java16
-rw-r--r--core/java/android/os/Binder.java8
-rw-r--r--core/java/android/os/Bundle.java2
-rw-r--r--core/java/android/os/Debug.java54
-rw-r--r--core/java/android/os/FactoryTest.java14
-rw-r--r--core/java/android/os/MemoryFile.java10
-rw-r--r--core/java/android/os/MessageQueue.java12
-rw-r--r--core/java/android/os/Parcel.java89
-rw-r--r--core/java/android/os/PowerManager.java13
-rw-r--r--core/java/android/os/PowerManagerInternal.java60
-rw-r--r--core/java/android/os/Process.java17
-rw-r--r--core/java/android/os/RecoverySystem.java64
-rw-r--r--core/java/android/os/SELinux.java12
-rw-r--r--core/java/android/os/storage/StorageVolume.java2
-rw-r--r--core/java/android/service/dreams/DozeHardware.java77
-rw-r--r--core/java/android/service/dreams/DreamManagerInternal.java39
-rw-r--r--core/java/android/service/dreams/DreamService.java298
-rw-r--r--core/java/android/service/dreams/IDozeHardware.aidl (renamed from services/java/com/android/server/display/DisplayTransactionListener.java)12
-rw-r--r--core/java/android/service/dreams/IDreamManager.aidl6
-rw-r--r--core/java/android/service/dreams/IDreamService.aidl2
-rw-r--r--core/java/android/service/notification/NotificationListenerService.java11
-rw-r--r--core/java/android/speech/SpeechRecognizer.java2
-rw-r--r--core/java/android/speech/srec/MicrophoneInputStream.java12
-rw-r--r--core/java/android/speech/srec/Recognizer.java136
-rw-r--r--core/java/android/text/MeasuredText.java2
-rw-r--r--core/java/android/util/CharsetUtils.java198
-rw-r--r--core/java/android/util/TypedValue.java16
-rw-r--r--core/java/android/view/DisplayAdjustments.java6
-rw-r--r--core/java/android/view/DisplayEventReceiver.java8
-rw-r--r--core/java/android/view/GLES20Canvas.java264
-rw-r--r--core/java/android/view/GLES20DisplayList.java98
-rw-r--r--core/java/android/view/GLES20Layer.java8
-rw-r--r--core/java/android/view/GLES20RecordingCanvas.java2
-rw-r--r--core/java/android/view/GraphicBuffer.java20
-rw-r--r--core/java/android/view/HardwareCanvas.java14
-rw-r--r--core/java/android/view/HardwareRenderer.java8
-rw-r--r--core/java/android/view/InputChannel.java2
-rw-r--r--core/java/android/view/InputDevice.java90
-rw-r--r--core/java/android/view/InputEventReceiver.java10
-rw-r--r--core/java/android/view/InputEventSender.java10
-rw-r--r--core/java/android/view/InputQueue.java22
-rw-r--r--core/java/android/view/KeyCharacterMap.java24
-rw-r--r--core/java/android/view/KeyEvent.java14
-rw-r--r--core/java/android/view/MotionEvent.java80
-rw-r--r--core/java/android/view/Surface.java36
-rw-r--r--core/java/android/view/SurfaceControl.java100
-rw-r--r--core/java/android/view/TextureView.java6
-rw-r--r--core/java/android/view/VelocityTracker.java18
-rw-r--r--core/java/android/view/View.java31
-rw-r--r--core/java/android/view/ViewGroup.java9
-rw-r--r--core/java/android/view/Window.java13
-rw-r--r--core/java/android/view/WindowManagerInternal.java33
-rw-r--r--core/java/android/view/WindowManagerPolicy.java22
-rw-r--r--core/java/android/view/accessibility/AccessibilityManager.java40
-rw-r--r--core/java/android/widget/CompoundButton.java2
-rwxr-xr-x[-rw-r--r--]core/java/android/widget/CursorTreeAdapter.java2
-rw-r--r--core/java/android/widget/NumberPicker.java53
-rw-r--r--core/java/android/widget/SpellChecker.java6
-rw-r--r--core/java/android/widget/Spinner.java6
-rw-r--r--core/java/com/android/internal/app/ProcessStats.java6
-rw-r--r--core/java/com/android/internal/os/BatteryStatsImpl.java13
-rw-r--r--core/java/com/android/internal/os/BinderInternal.java7
-rw-r--r--core/java/com/android/internal/os/LoggingPrintStream.java2
-rw-r--r--core/java/com/android/internal/os/ZygoteConnection.java77
-rw-r--r--core/java/com/android/internal/os/ZygoteInit.java10
-rw-r--r--core/java/com/android/internal/util/Objects.java62
-rw-r--r--core/java/com/android/internal/util/XmlUtils.java19
-rw-r--r--core/java/com/android/internal/view/RotationPolicy.java6
-rw-r--r--core/java/com/android/internal/widget/SwipeDismissLayout.java308
-rw-r--r--core/java/com/android/server/LocalServices.java60
-rw-r--r--core/java/com/android/server/SystemService.java218
-rw-r--r--core/java/com/android/server/SystemServiceManager.java164
-rw-r--r--core/java/com/android/server/net/BaseNetworkObserver.java10
-rw-r--r--core/jni/Android.mk4
-rw-r--r--core/jni/AndroidRuntime.cpp8
-rw-r--r--core/jni/android/graphics/Bitmap.cpp194
-rw-r--r--core/jni/android/graphics/BitmapFactory.cpp10
-rw-r--r--core/jni/android/graphics/BitmapRegionDecoder.cpp32
-rw-r--r--core/jni/android/graphics/Camera.cpp74
-rw-r--r--core/jni/android/graphics/Canvas.cpp593
-rw-r--r--core/jni/android/graphics/ColorFilter.cpp53
-rw-r--r--core/jni/android/graphics/DrawFilter.cpp14
-rw-r--r--core/jni/android/graphics/Graphics.cpp87
-rw-r--r--core/jni/android/graphics/Interpolator.cpp33
-rw-r--r--core/jni/android/graphics/LayerRasterizer.cpp12
-rw-r--r--core/jni/android/graphics/MaskFilter.cpp38
-rw-r--r--core/jni/android/graphics/Matrix.cpp356
-rw-r--r--core/jni/android/graphics/Movie.cpp37
-rw-r--r--core/jni/android/graphics/NinePatch.cpp49
-rw-r--r--core/jni/android/graphics/Paint.cpp246
-rw-r--r--core/jni/android/graphics/Path.cpp226
-rw-r--r--core/jni/android/graphics/PathEffect.cpp62
-rw-r--r--core/jni/android/graphics/PathMeasure.cpp98
-rw-r--r--core/jni/android/graphics/Picture.cpp89
-rw-r--r--core/jni/android/graphics/PorterDuff.cpp8
-rw-r--r--core/jni/android/graphics/Rasterizer.cpp5
-rw-r--r--core/jni/android/graphics/Region.cpp173
-rw-r--r--core/jni/android/graphics/Shader.cpp194
-rw-r--r--core/jni/android/graphics/SurfaceTexture.cpp22
-rw-r--r--core/jni/android/graphics/Typeface.cpp44
-rw-r--r--core/jni/android/graphics/Xfermode.cpp22
-rw-r--r--core/jni/android/graphics/YuvToJpegEncoder.cpp8
-rw-r--r--core/jni/android/opengl/util.cpp20
-rw-r--r--core/jni/android_app_NativeActivity.cpp72
-rw-r--r--core/jni/android_app_backup_FullBackup.cpp12
-rw-r--r--core/jni/android_backup_BackupDataInput.cpp24
-rw-r--r--core/jni/android_backup_BackupDataOutput.cpp28
-rw-r--r--core/jni/android_backup_BackupHelperDispatcher.cpp34
-rw-r--r--core/jni/android_backup_FileBackupHelperBase.cpp34
-rw-r--r--core/jni/android_database_CursorWindow.cpp88
-rw-r--r--core/jni/android_database_SQLiteConnection.cpp132
-rw-r--r--core/jni/android_hardware_Camera.cpp22
-rw-r--r--core/jni/android_hardware_SensorManager.cpp22
-rw-r--r--core/jni/android_hardware_UsbDeviceConnection.cpp20
-rw-r--r--core/jni/android_hardware_UsbRequest.cpp20
-rw-r--r--core/jni/android_media_AudioRecord.cpp44
-rw-r--r--core/jni/android_media_AudioSystem.cpp52
-rw-r--r--core/jni/android_media_AudioTrack.cpp42
-rw-r--r--core/jni/android_media_JetPlayer.cpp34
-rw-r--r--core/jni/android_media_RemoteDisplay.cpp18
-rw-r--r--core/jni/android_media_ToneGenerator.cpp36
-rw-r--r--core/jni/android_net_LocalSocketImpl.cpp20
-rw-r--r--core/jni/android_opengl_GLES20.cpp3
-rw-r--r--core/jni/android_opengl_GLES30.cpp2
-rw-r--r--core/jni/android_os_Debug.cpp6
-rw-r--r--core/jni/android_os_MemoryFile.cpp25
-rw-r--r--core/jni/android_os_MessageQueue.cpp28
-rw-r--r--core/jni/android_os_Parcel.cpp150
-rw-r--r--core/jni/android_os_SystemClock.cpp84
-rw-r--r--core/jni/android_util_AssetManager.cpp13
-rw-r--r--core/jni/android_util_Binder.cpp63
-rw-r--r--core/jni/android_util_EventLog.cpp84
-rw-r--r--core/jni/android_util_Process.cpp32
-rw-r--r--core/jni/android_view_DisplayEventReceiver.cpp20
-rw-r--r--core/jni/android_view_GLES20Canvas.cpp654
-rw-r--r--core/jni/android_view_GLES20DisplayList.cpp237
-rw-r--r--core/jni/android_view_GraphicBuffer.cpp69
-rw-r--r--core/jni/android_view_InputChannel.cpp10
-rw-r--r--core/jni/android_view_InputEventReceiver.cpp22
-rw-r--r--core/jni/android_view_InputEventSender.cpp18
-rw-r--r--core/jni/android_view_InputQueue.cpp26
-rw-r--r--core/jni/android_view_KeyCharacterMap.cpp46
-rw-r--r--core/jni/android_view_MotionEvent.cpp170
-rw-r--r--core/jni/android_view_Surface.cpp68
-rw-r--r--core/jni/android_view_SurfaceControl.cpp54
-rw-r--r--core/jni/android_view_TextureView.cpp38
-rw-r--r--core/jni/android_view_VelocityTracker.cpp36
-rw-r--r--core/jni/com_android_internal_content_NativeLibraryHelper.cpp34
-rw-r--r--core/jni/com_android_internal_net_NetworkStatsFactory.cpp2
-rw-r--r--core/jni/com_android_internal_os_ZygoteInit.cpp25
-rw-r--r--core/jni/com_google_android_gles_jni_EGLImpl.cpp4
-rw-r--r--core/jni/com_google_android_gles_jni_GLImpl.cpp2
-rw-r--r--core/res/AndroidManifest.xml13
-rw-r--r--core/res/res/anim/swipe_window_enter.xml (renamed from packages/DefaultContainerService/res/values-en-rIN/strings.xml)20
-rw-r--r--core/res/res/anim/swipe_window_exit.xml (renamed from packages/DefaultContainerService/res/values-hy-rAM/strings.xml)20
-rw-r--r--core/res/res/layout/number_picker_with_selector_wheel_micro.xml (renamed from packages/DefaultContainerService/res/values-fr-rCA/strings.xml)25
-rw-r--r--core/res/res/layout/screen_swipe_dismiss.xml (renamed from packages/ExternalStorageProvider/res/values-az/strings.xml)22
-rw-r--r--core/res/res/values-af/strings.xml2
-rw-r--r--core/res/res/values-am/strings.xml2
-rw-r--r--core/res/res/values-ar/strings.xml2
-rw-r--r--core/res/res/values-az-rAZ/strings.xml1588
-rw-r--r--core/res/res/values-az/strings.xml1583
-rw-r--r--core/res/res/values-be/strings.xml1
-rw-r--r--core/res/res/values-bg/strings.xml2
-rw-r--r--core/res/res/values-ca/strings.xml4
-rw-r--r--core/res/res/values-cs/strings.xml2
-rw-r--r--core/res/res/values-da/strings.xml2
-rw-r--r--core/res/res/values-de/strings.xml2
-rw-r--r--core/res/res/values-el/strings.xml2
-rw-r--r--core/res/res/values-en-rGB/strings.xml2
-rw-r--r--core/res/res/values-en-rIN/strings.xml2
-rw-r--r--core/res/res/values-es-rUS/strings.xml2
-rw-r--r--core/res/res/values-es/strings.xml2
-rw-r--r--core/res/res/values-et-rEE/strings.xml2
-rw-r--r--core/res/res/values-et/strings.xml31
-rw-r--r--core/res/res/values-fa/strings.xml2
-rw-r--r--core/res/res/values-fi/strings.xml2
-rw-r--r--core/res/res/values-fr-rCA/strings.xml2
-rw-r--r--core/res/res/values-fr/strings.xml2
-rw-r--r--core/res/res/values-hi/strings.xml2
-rw-r--r--core/res/res/values-hr/strings.xml2
-rw-r--r--core/res/res/values-hu/strings.xml2
-rw-r--r--core/res/res/values-hy-rAM/strings.xml6
-rw-r--r--core/res/res/values-hy/strings.xml1585
-rw-r--r--core/res/res/values-in/strings.xml2
-rw-r--r--core/res/res/values-it/strings.xml2
-rw-r--r--core/res/res/values-iw/strings.xml2
-rw-r--r--core/res/res/values-ja/strings.xml2
-rw-r--r--core/res/res/values-ka-rGE/strings.xml2
-rw-r--r--core/res/res/values-ka/strings.xml1587
-rw-r--r--core/res/res/values-km-rKH/strings.xml2
-rw-r--r--core/res/res/values-km/strings.xml1587
-rw-r--r--core/res/res/values-ko/strings.xml2
-rw-r--r--core/res/res/values-lo-rLA/strings.xml2
-rw-r--r--core/res/res/values-lo/strings.xml1587
-rw-r--r--core/res/res/values-lt/strings.xml2
-rw-r--r--core/res/res/values-lv/strings.xml2
-rw-r--r--core/res/res/values-mn-rMN/strings.xml4
-rw-r--r--core/res/res/values-mn/strings.xml1583
-rw-r--r--core/res/res/values-ms-rMY/strings.xml2
-rw-r--r--core/res/res/values-ms/strings.xml38
-rw-r--r--core/res/res/values-nb/strings.xml2
-rw-r--r--core/res/res/values-ne-rNP/strings.xml1588
-rw-r--r--core/res/res/values-ne/strings.xml1587
-rw-r--r--core/res/res/values-nl/strings.xml2
-rw-r--r--core/res/res/values-pl/strings.xml2
-rw-r--r--core/res/res/values-pt-rPT/strings.xml2
-rw-r--r--core/res/res/values-pt/strings.xml2
-rw-r--r--core/res/res/values-rm/strings.xml1
-rw-r--r--core/res/res/values-ro/strings.xml2
-rw-r--r--core/res/res/values-ru/strings.xml2
-rw-r--r--core/res/res/values-si-rLK/strings.xml1591
-rw-r--r--core/res/res/values-si/strings.xml1590
-rw-r--r--core/res/res/values-sk/strings.xml2
-rw-r--r--core/res/res/values-sl/strings.xml2
-rw-r--r--core/res/res/values-sr/strings.xml2
-rw-r--r--core/res/res/values-sv/strings.xml4
-rw-r--r--core/res/res/values-sw/strings.xml2
-rw-r--r--core/res/res/values-th/strings.xml2
-rw-r--r--core/res/res/values-tl/strings.xml2
-rw-r--r--core/res/res/values-tr/strings.xml2
-rw-r--r--core/res/res/values-uk/strings.xml2
-rw-r--r--core/res/res/values-vi/strings.xml2
-rw-r--r--core/res/res/values-zh-rCN/strings.xml2
-rw-r--r--core/res/res/values-zh-rHK/strings.xml2
-rw-r--r--core/res/res/values-zh-rTW/strings.xml6
-rw-r--r--core/res/res/values-zu/strings.xml2
-rw-r--r--core/res/res/values/attrs.xml7
-rw-r--r--core/res/res/values/attrs_manifest.xml26
-rw-r--r--core/res/res/values/config.xml175
-rw-r--r--core/res/res/values/public.xml6
-rw-r--r--core/res/res/values/strings.xml8
-rw-r--r--core/res/res/values/styles.xml8
-rw-r--r--core/res/res/values/styles_micro.xml34
-rw-r--r--core/res/res/values/symbols.xml10
-rw-r--r--core/res/res/values/themes_micro.xml58
-rw-r--r--core/tests/coretests/src/android/net/LinkAddressTest.java331
-rw-r--r--core/tests/coretests/src/android/net/LinkPropertiesTest.java36
-rw-r--r--core/tests/coretests/src/com/android/internal/util/XmlUtilsTest.java41
-rw-r--r--data/keyboards/Generic.kl17
-rw-r--r--data/keyboards/Vendor_18d1_Product_2c40.kl42
-rw-r--r--docs/html/guide/topics/ui/accessibility/services.jd3
-rw-r--r--docs/html/guide/topics/ui/drag-drop.jd110
-rw-r--r--docs/html/training/articles/perf-tips.jd1
-rw-r--r--drm/java/android/drm/DrmManagerClient.java2
-rw-r--r--drm/jni/android_drm_DrmManagerClient.cpp31
-rw-r--r--graphics/java/android/graphics/AvoidXfermode.java4
-rw-r--r--graphics/java/android/graphics/Bitmap.java64
-rw-r--r--graphics/java/android/graphics/BitmapFactory.java4
-rw-r--r--graphics/java/android/graphics/BitmapRegionDecoder.java16
-rw-r--r--graphics/java/android/graphics/BitmapShader.java6
-rw-r--r--graphics/java/android/graphics/BlurMaskFilter.java2
-rw-r--r--graphics/java/android/graphics/Camera.java10
-rw-r--r--graphics/java/android/graphics/Canvas.java196
-rw-r--r--graphics/java/android/graphics/ColorFilter.java6
-rw-r--r--graphics/java/android/graphics/ColorMatrixColorFilter.java4
-rw-r--r--graphics/java/android/graphics/ComposePathEffect.java3
-rw-r--r--graphics/java/android/graphics/ComposeShader.java14
-rw-r--r--graphics/java/android/graphics/CornerPathEffect.java2
-rw-r--r--graphics/java/android/graphics/DashPathEffect.java2
-rw-r--r--graphics/java/android/graphics/DiscretePathEffect.java2
-rw-r--r--graphics/java/android/graphics/DrawFilter.java4
-rw-r--r--graphics/java/android/graphics/EmbossMaskFilter.java2
-rw-r--r--graphics/java/android/graphics/Interpolator.java14
-rw-r--r--graphics/java/android/graphics/LargeBitmap.java14
-rw-r--r--graphics/java/android/graphics/LayerRasterizer.java4
-rw-r--r--graphics/java/android/graphics/LightingColorFilter.java4
-rw-r--r--graphics/java/android/graphics/LinearGradient.java8
-rw-r--r--graphics/java/android/graphics/MaskFilter.java4
-rw-r--r--graphics/java/android/graphics/Matrix.java95
-rw-r--r--graphics/java/android/graphics/Movie.java10
-rw-r--r--graphics/java/android/graphics/NinePatch.java18
-rw-r--r--graphics/java/android/graphics/Paint.java102
-rw-r--r--graphics/java/android/graphics/PaintFlagsDrawFilter.java2
-rw-r--r--graphics/java/android/graphics/Path.java86
-rw-r--r--graphics/java/android/graphics/PathDashPathEffect.java2
-rw-r--r--graphics/java/android/graphics/PathEffect.java4
-rw-r--r--graphics/java/android/graphics/PathMeasure.java20
-rw-r--r--graphics/java/android/graphics/Picture.java24
-rw-r--r--graphics/java/android/graphics/PixelXorXfermode.java2
-rw-r--r--graphics/java/android/graphics/PorterDuffColorFilter.java4
-rw-r--r--graphics/java/android/graphics/PorterDuffXfermode.java2
-rw-r--r--graphics/java/android/graphics/RadialGradient.java8
-rw-r--r--graphics/java/android/graphics/Rasterizer.java4
-rw-r--r--graphics/java/android/graphics/Region.java46
-rw-r--r--graphics/java/android/graphics/RegionIterator.java10
-rw-r--r--graphics/java/android/graphics/Shader.java10
-rw-r--r--graphics/java/android/graphics/SumPathEffect.java2
-rw-r--r--graphics/java/android/graphics/SurfaceTexture.java6
-rw-r--r--graphics/java/android/graphics/SweepGradient.java8
-rw-r--r--graphics/java/android/graphics/TableMaskFilter.java8
-rw-r--r--graphics/java/android/graphics/Typeface.java30
-rw-r--r--graphics/java/android/graphics/Xfermode.java4
-rw-r--r--graphics/java/android/renderscript/Byte2.java356
-rw-r--r--graphics/java/android/renderscript/Byte3.java388
-rw-r--r--graphics/java/android/renderscript/Byte4.java420
-rw-r--r--graphics/java/android/renderscript/Double2.java372
-rw-r--r--graphics/java/android/renderscript/Double3.java406
-rw-r--r--graphics/java/android/renderscript/Double4.java442
-rw-r--r--graphics/java/android/renderscript/Float2.java372
-rw-r--r--graphics/java/android/renderscript/Float3.java406
-rw-r--r--graphics/java/android/renderscript/Float4.java441
-rw-r--r--graphics/java/android/renderscript/Int2.java426
-rw-r--r--graphics/java/android/renderscript/Int3.java465
-rw-r--r--graphics/java/android/renderscript/Int4.java505
-rw-r--r--graphics/java/android/renderscript/Long2.java425
-rw-r--r--graphics/java/android/renderscript/Long3.java464
-rw-r--r--graphics/java/android/renderscript/Long4.java504
-rw-r--r--graphics/java/android/renderscript/Short2.java428
-rw-r--r--graphics/java/android/renderscript/Short3.java465
-rw-r--r--graphics/java/android/renderscript/Short4.java505
-rw-r--r--graphics/jni/android_renderscript_RenderScript.cpp12
-rw-r--r--include/androidfw/AssetManager.h14
-rw-r--r--include/androidfw/ResourceTypes.h2
-rw-r--r--include/androidfw/ZipFileRO.h172
-rw-r--r--include/androidfw/ZipUtils.h18
-rw-r--r--libs/androidfw/Android.mk7
-rw-r--r--libs/androidfw/Asset.cpp4
-rw-r--r--libs/androidfw/AssetManager.cpp91
-rw-r--r--libs/androidfw/ObbFile.cpp2
-rw-r--r--libs/androidfw/ZipFileRO.cpp954
-rw-r--r--libs/androidfw/ZipUtils.cpp233
-rw-r--r--libs/androidfw/tests/Android.mk2
-rw-r--r--libs/androidfw/tests/ZipUtils_test.cpp (renamed from libs/androidfw/tests/ZipFileRO_test.cpp)10
-rw-r--r--libs/common_time/Android.mk (renamed from services/common_time/Android.mk)0
-rw-r--r--libs/common_time/clock_recovery.cpp (renamed from services/common_time/clock_recovery.cpp)0
-rw-r--r--libs/common_time/clock_recovery.h (renamed from services/common_time/clock_recovery.h)0
-rw-r--r--libs/common_time/common_clock.cpp (renamed from services/common_time/common_clock.cpp)0
-rw-r--r--libs/common_time/common_clock.h (renamed from services/common_time/common_clock.h)0
-rw-r--r--libs/common_time/common_clock_service.cpp (renamed from services/common_time/common_clock_service.cpp)0
-rw-r--r--libs/common_time/common_clock_service.h (renamed from services/common_time/common_clock_service.h)0
-rw-r--r--libs/common_time/common_time_config_service.cpp (renamed from services/common_time/common_time_config_service.cpp)0
-rw-r--r--libs/common_time/common_time_config_service.h (renamed from services/common_time/common_time_config_service.h)0
-rw-r--r--libs/common_time/common_time_server.cpp (renamed from services/common_time/common_time_server.cpp)0
-rw-r--r--libs/common_time/common_time_server.h (renamed from services/common_time/common_time_server.h)0
-rw-r--r--libs/common_time/common_time_server_api.cpp (renamed from services/common_time/common_time_server_api.cpp)0
-rw-r--r--libs/common_time/common_time_server_packets.cpp (renamed from services/common_time/common_time_server_packets.cpp)0
-rw-r--r--libs/common_time/common_time_server_packets.h (renamed from services/common_time/common_time_server_packets.h)0
-rw-r--r--libs/common_time/diag_thread.cpp (renamed from services/common_time/diag_thread.cpp)0
-rw-r--r--libs/common_time/diag_thread.h (renamed from services/common_time/diag_thread.h)0
-rw-r--r--libs/common_time/main.cpp (renamed from services/common_time/main.cpp)0
-rw-r--r--libs/common_time/utils.cpp (renamed from services/common_time/utils.cpp)0
-rw-r--r--libs/common_time/utils.h (renamed from services/common_time/utils.h)0
-rw-r--r--libs/hwui/FontRenderer.cpp4
-rw-r--r--libs/hwui/OpenGLRenderer.cpp6
-rw-r--r--libs/hwui/SkiaShader.h2
-rw-r--r--libs/input/Android.mk (renamed from services/input/Android.mk)0
-rw-r--r--libs/input/EventHub.cpp (renamed from services/input/EventHub.cpp)110
-rw-r--r--libs/input/EventHub.h (renamed from services/input/EventHub.h)8
-rw-r--r--libs/input/InputApplication.cpp (renamed from services/input/InputApplication.cpp)0
-rw-r--r--libs/input/InputApplication.h (renamed from services/input/InputApplication.h)0
-rw-r--r--libs/input/InputDispatcher.cpp (renamed from services/input/InputDispatcher.cpp)190
-rw-r--r--libs/input/InputDispatcher.h (renamed from services/input/InputDispatcher.h)9
-rw-r--r--libs/input/InputListener.cpp (renamed from services/input/InputListener.cpp)0
-rw-r--r--libs/input/InputListener.h (renamed from services/input/InputListener.h)0
-rw-r--r--libs/input/InputManager.cpp (renamed from services/input/InputManager.cpp)0
-rw-r--r--libs/input/InputManager.h (renamed from services/input/InputManager.h)0
-rw-r--r--libs/input/InputReader.cpp (renamed from services/input/InputReader.cpp)27
-rw-r--r--libs/input/InputReader.h (renamed from services/input/InputReader.h)5
-rw-r--r--libs/input/InputWindow.cpp (renamed from services/input/InputWindow.cpp)0
-rw-r--r--libs/input/InputWindow.h (renamed from services/input/InputWindow.h)0
-rw-r--r--libs/input/PointerController.cpp (renamed from services/input/PointerController.cpp)0
-rw-r--r--libs/input/PointerController.h (renamed from services/input/PointerController.h)0
-rw-r--r--libs/input/SpriteController.cpp (renamed from services/input/SpriteController.cpp)0
-rw-r--r--libs/input/SpriteController.h (renamed from services/input/SpriteController.h)0
-rw-r--r--libs/input/tests/Android.mk (renamed from services/input/tests/Android.mk)0
-rw-r--r--libs/input/tests/InputDispatcher_test.cpp (renamed from services/input/tests/InputDispatcher_test.cpp)39
-rw-r--r--libs/input/tests/InputReader_test.cpp (renamed from services/input/tests/InputReader_test.cpp)2
-rw-r--r--media/java/android/media/AmrInputStream.java12
-rw-r--r--media/java/android/media/AudioRecord.java4
-rw-r--r--media/java/android/media/AudioTrack.java4
-rw-r--r--media/java/android/media/FaceDetector.java6
-rw-r--r--media/java/android/media/JetPlayer.java2
-rw-r--r--media/java/android/media/MediaCodec.java2
-rw-r--r--media/java/android/media/MediaCrypto.java2
-rw-r--r--media/java/android/media/MediaDrm.java2
-rw-r--r--media/java/android/media/MediaExtractor.java2
-rw-r--r--media/java/android/media/MediaMetadataRetriever.java2
-rw-r--r--media/java/android/media/MediaMuxer.java20
-rw-r--r--media/java/android/media/MediaPlayer.java4
-rw-r--r--media/java/android/media/MediaRecorder.java2
-rw-r--r--media/java/android/media/MediaRouter.java7
-rw-r--r--media/java/android/media/MediaScanner.java2
-rw-r--r--media/java/android/media/RemoteDisplay.java10
-rw-r--r--media/java/android/media/SoundPool.java2
-rw-r--r--media/java/android/media/ToneGenerator.java2
-rw-r--r--media/java/android/media/audiofx/AudioEffect.java4
-rw-r--r--media/java/android/media/audiofx/Visualizer.java4
-rw-r--r--media/java/android/media/videoeditor/MediaArtistNativeHelper.java2
-rwxr-xr-xmedia/java/android/mtp/MtpDatabase.java2
-rw-r--r--media/java/android/mtp/MtpDevice.java2
-rw-r--r--media/java/android/mtp/MtpServer.java2
-rw-r--r--media/jni/android_media_AmrInputStream.cpp28
-rw-r--r--media/jni/android_media_MediaCodec.cpp12
-rw-r--r--media/jni/android_media_MediaCrypto.cpp20
-rw-r--r--media/jni/android_media_MediaDrm.cpp9
-rw-r--r--media/jni/android_media_MediaExtractor.cpp70
-rw-r--r--media/jni/android_media_MediaMetadataRetriever.cpp22
-rw-r--r--media/jni/android_media_MediaMuxer.cpp35
-rw-r--r--media/jni/android_media_MediaPlayer.cpp85
-rw-r--r--media/jni/android_media_MediaProfiles.cpp16
-rw-r--r--media/jni/android_media_MediaRecorder.cpp12
-rw-r--r--media/jni/android_media_MediaScanner.cpp8
-rw-r--r--media/jni/android_mtp_MtpDatabase.cpp10
-rw-r--r--media/jni/android_mtp_MtpDevice.cpp31
-rw-r--r--media/jni/android_mtp_MtpServer.cpp8
-rw-r--r--media/jni/audioeffect/android_media_AudioEffect.cpp64
-rw-r--r--media/jni/audioeffect/android_media_Visualizer.cpp50
-rw-r--r--media/jni/mediaeditor/VideoEditorClasses.cpp16
-rw-r--r--media/jni/mediaeditor/VideoEditorMain.cpp56
-rw-r--r--media/jni/soundpool/android_media_SoundPool_SoundPoolImpl.cpp38
-rw-r--r--media/lib/java/com/android/media/remotedisplay/RemoteDisplay.java8
-rw-r--r--media/mca/filterfw/jni/jni_gl_environment.cpp4
-rw-r--r--native/android/input.cpp2
-rw-r--r--native/android/looper.cpp22
-rw-r--r--opengl/java/android/opengl/EGLLogWrapper.java2
-rw-r--r--packages/BackupRestoreConfirmation/res/values-en-rIN/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-et-rEE/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-fr-rCA/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-hi/strings.xml16
-rw-r--r--packages/BackupRestoreConfirmation/res/values-hy-rAM/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-ka-rGE/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-km-rKH/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-lo-rLA/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-mn-rMN/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-ms-rMY/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-zh-rHK/strings.xml38
-rw-r--r--packages/BackupRestoreConfirmation/res/values-zu/strings.xml2
-rw-r--r--packages/DefaultContainerService/res/values-et-rEE/strings.xml24
-rw-r--r--packages/DefaultContainerService/res/values-ka-rGE/strings.xml24
-rw-r--r--packages/DefaultContainerService/res/values-km-rKH/strings.xml24
-rw-r--r--packages/DefaultContainerService/res/values-lo-rLA/strings.xml24
-rw-r--r--packages/DefaultContainerService/res/values-mn-rMN/strings.xml24
-rw-r--r--packages/DefaultContainerService/res/values-ms-rMY/strings.xml24
-rw-r--r--packages/DefaultContainerService/res/values-zh-rHK/strings.xml24
-rw-r--r--packages/DocumentsUI/res/values-af/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-am/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-ar/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-az-rAZ/strings.xml53
-rw-r--r--packages/DocumentsUI/res/values-az/strings.xml53
-rw-r--r--packages/DocumentsUI/res/values-bg/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-ca/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-cs/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-da/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-de/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-el/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-en-rGB/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-en-rIN/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-es-rUS/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-es/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-et-rEE/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-fa/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-fi/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-fr-rCA/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-fr/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-hi/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-hr/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-hu/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-hy-rAM/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-in/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-it/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-iw/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-ja/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-ka-rGE/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-km-rKH/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-ko/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-lo-rLA/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-lt/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-lv/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-mn-rMN/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-mn/strings.xml53
-rw-r--r--packages/DocumentsUI/res/values-ms-rMY/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-nb/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-ne-rNP/strings.xml53
-rw-r--r--packages/DocumentsUI/res/values-nl/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-pl/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-pt-rPT/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-pt/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-ro/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-ru/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-si-rLK/strings.xml53
-rw-r--r--packages/DocumentsUI/res/values-sk/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-sl/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-sr/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-sv/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-sw/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-th/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-tl/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-tr/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-uk/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-vi/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-zh-rCN/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-zh-rHK/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-zh-rTW/strings.xml54
-rw-r--r--packages/DocumentsUI/res/values-zu/strings.xml54
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/RootsCache.java6
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java4
-rw-r--r--packages/ExternalStorageProvider/res/values-am/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-ar/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-bg/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-ca/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-cs/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-da/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-de/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-el/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-en-rGB/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-en-rIN/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-es-rUS/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-es/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-et-rEE/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-fa/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-fi/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-fr-rCA/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-fr/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-hi/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-hr/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-hu/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-hy-rAM/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-in/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-it/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-iw/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-ja/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-ka-rGE/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-km-rKH/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-ko/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-lo-rLA/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-lt/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-lv/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-mn-rMN/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-mn/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-ms-rMY/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-nb/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-ne-rNP/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-nl/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-pl/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-pt-rPT/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-pt/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-ro/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-ru/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-si-rLK/strings.xml21
-rw-r--r--packages/ExternalStorageProvider/res/values-sk/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-sl/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-sr/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-sv/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-sw/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-th/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-tl/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-tr/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-uk/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-vi/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-zh-rCN/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-zh-rHK/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-zh-rTW/strings.xml22
-rw-r--r--packages/ExternalStorageProvider/res/values-zu/strings.xml22
-rw-r--r--packages/FusedLocation/res/values-af/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-am/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-ar/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-bg/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-ca/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-cs/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-da/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-de/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-el/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-en-rGB/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-en-rIN/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-es-rUS/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-es/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-et-rEE/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-fa/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-fi/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-fr-rCA/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-fr/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-hi/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-hr/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-hu/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-hy-rAM/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-in/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-it/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-iw/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-ja/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-ka-rGE/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-km-rKH/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-ko/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-lo-rLA/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-lt/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-lv/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-mn-rMN/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-ms-rMY/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-nb/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-nl/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-pl/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-pt-rPT/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-pt/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-ro/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-ru/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-sk/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-sl/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-sr/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-sv/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-sw/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-th/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-tl/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-tr/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-uk/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-vi/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-zh-rCN/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-zh-rHK/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-zh-rTW/strings.xml5
-rw-r--r--packages/FusedLocation/res/values-zu/strings.xml5
-rw-r--r--packages/InputDevices/res/values-af/strings.xml37
-rw-r--r--packages/InputDevices/res/values-am/strings.xml37
-rw-r--r--packages/InputDevices/res/values-ar/strings.xml37
-rw-r--r--packages/InputDevices/res/values-bg/strings.xml37
-rw-r--r--packages/InputDevices/res/values-ca/strings.xml37
-rw-r--r--packages/InputDevices/res/values-cs/strings.xml37
-rw-r--r--packages/InputDevices/res/values-da/strings.xml37
-rw-r--r--packages/InputDevices/res/values-de/strings.xml37
-rw-r--r--packages/InputDevices/res/values-el/strings.xml37
-rw-r--r--packages/InputDevices/res/values-en-rGB/strings.xml37
-rw-r--r--packages/InputDevices/res/values-en-rIN/strings.xml37
-rw-r--r--packages/InputDevices/res/values-es-rUS/strings.xml37
-rw-r--r--packages/InputDevices/res/values-es/strings.xml37
-rw-r--r--packages/InputDevices/res/values-et-rEE/strings.xml37
-rw-r--r--packages/InputDevices/res/values-fa/strings.xml37
-rw-r--r--packages/InputDevices/res/values-fi/strings.xml37
-rw-r--r--packages/InputDevices/res/values-fr-rCA/strings.xml37
-rw-r--r--packages/InputDevices/res/values-fr/strings.xml37
-rw-r--r--packages/InputDevices/res/values-hi/strings.xml37
-rw-r--r--packages/InputDevices/res/values-hr/strings.xml37
-rw-r--r--packages/InputDevices/res/values-hu/strings.xml37
-rw-r--r--packages/InputDevices/res/values-hy-rAM/strings.xml37
-rw-r--r--packages/InputDevices/res/values-in/strings.xml37
-rw-r--r--packages/InputDevices/res/values-it/strings.xml37
-rw-r--r--packages/InputDevices/res/values-iw/strings.xml37
-rw-r--r--packages/InputDevices/res/values-ja/strings.xml37
-rw-r--r--packages/InputDevices/res/values-ka-rGE/strings.xml37
-rw-r--r--packages/InputDevices/res/values-km-rKH/strings.xml37
-rw-r--r--packages/InputDevices/res/values-ko/strings.xml37
-rw-r--r--packages/InputDevices/res/values-lo-rLA/strings.xml37
-rw-r--r--packages/InputDevices/res/values-lt/strings.xml37
-rw-r--r--packages/InputDevices/res/values-lv/strings.xml37
-rw-r--r--packages/InputDevices/res/values-mn-rMN/strings.xml37
-rw-r--r--packages/InputDevices/res/values-ms-rMY/strings.xml37
-rw-r--r--packages/InputDevices/res/values-nb/strings.xml37
-rw-r--r--packages/InputDevices/res/values-nl/strings.xml37
-rw-r--r--packages/InputDevices/res/values-pl/strings.xml37
-rw-r--r--packages/InputDevices/res/values-pt-rPT/strings.xml37
-rw-r--r--packages/InputDevices/res/values-pt/strings.xml37
-rw-r--r--packages/InputDevices/res/values-ro/strings.xml37
-rw-r--r--packages/InputDevices/res/values-ru/strings.xml37
-rw-r--r--packages/InputDevices/res/values-sk/strings.xml37
-rw-r--r--packages/InputDevices/res/values-sl/strings.xml37
-rw-r--r--packages/InputDevices/res/values-sr/strings.xml37
-rw-r--r--packages/InputDevices/res/values-sv/strings.xml37
-rw-r--r--packages/InputDevices/res/values-sw/strings.xml37
-rw-r--r--packages/InputDevices/res/values-th/strings.xml37
-rw-r--r--packages/InputDevices/res/values-tl/strings.xml37
-rw-r--r--packages/InputDevices/res/values-tr/strings.xml37
-rw-r--r--packages/InputDevices/res/values-uk/strings.xml37
-rw-r--r--packages/InputDevices/res/values-vi/strings.xml37
-rw-r--r--packages/InputDevices/res/values-zh-rCN/strings.xml37
-rw-r--r--packages/InputDevices/res/values-zh-rHK/strings.xml37
-rw-r--r--packages/InputDevices/res/values-zh-rTW/strings.xml37
-rw-r--r--packages/InputDevices/res/values-zu/strings.xml37
-rw-r--r--packages/Keyguard/Android.mk2
-rw-r--r--packages/Keyguard/res/values-af/strings.xml7
-rw-r--r--packages/Keyguard/res/values-am/strings.xml7
-rw-r--r--packages/Keyguard/res/values-ar/strings.xml7
-rw-r--r--packages/Keyguard/res/values-be/strings.xml14
-rw-r--r--packages/Keyguard/res/values-bg/strings.xml7
-rw-r--r--packages/Keyguard/res/values-ca/strings.xml7
-rw-r--r--packages/Keyguard/res/values-cs/strings.xml7
-rw-r--r--packages/Keyguard/res/values-da/strings.xml7
-rw-r--r--packages/Keyguard/res/values-de/strings.xml7
-rw-r--r--packages/Keyguard/res/values-el/strings.xml7
-rw-r--r--packages/Keyguard/res/values-en-rGB/strings.xml7
-rw-r--r--packages/Keyguard/res/values-en-rIN/strings.xml145
-rw-r--r--packages/Keyguard/res/values-es-rUS/strings.xml7
-rw-r--r--packages/Keyguard/res/values-es/strings.xml9
-rw-r--r--packages/Keyguard/res/values-et-rEE/strings.xml145
-rw-r--r--packages/Keyguard/res/values-fa/strings.xml7
-rw-r--r--packages/Keyguard/res/values-fi/strings.xml7
-rw-r--r--packages/Keyguard/res/values-fr-rCA/strings.xml145
-rw-r--r--packages/Keyguard/res/values-fr/strings.xml7
-rw-r--r--packages/Keyguard/res/values-hi/strings.xml29
-rw-r--r--packages/Keyguard/res/values-hr/strings.xml7
-rw-r--r--packages/Keyguard/res/values-hu/strings.xml7
-rw-r--r--packages/Keyguard/res/values-hy-rAM/strings.xml145
-rw-r--r--packages/Keyguard/res/values-in/strings.xml7
-rw-r--r--packages/Keyguard/res/values-it/strings.xml7
-rw-r--r--packages/Keyguard/res/values-iw/strings.xml11
-rw-r--r--packages/Keyguard/res/values-ja/strings.xml7
-rw-r--r--packages/Keyguard/res/values-ka-rGE/strings.xml145
-rw-r--r--packages/Keyguard/res/values-km-rKH/strings.xml145
-rw-r--r--packages/Keyguard/res/values-ko/strings.xml7
-rw-r--r--packages/Keyguard/res/values-lo-rLA/strings.xml145
-rw-r--r--packages/Keyguard/res/values-lt/strings.xml7
-rw-r--r--packages/Keyguard/res/values-lv/strings.xml7
-rw-r--r--packages/Keyguard/res/values-mn-rMN/strings.xml145
-rw-r--r--packages/Keyguard/res/values-ms-rMY/strings.xml145
-rw-r--r--packages/Keyguard/res/values-nb/strings.xml7
-rw-r--r--packages/Keyguard/res/values-nl/strings.xml7
-rw-r--r--packages/Keyguard/res/values-pl/strings.xml7
-rw-r--r--packages/Keyguard/res/values-pt-rPT/strings.xml7
-rw-r--r--packages/Keyguard/res/values-pt/strings.xml7
-rw-r--r--packages/Keyguard/res/values-rm/strings.xml14
-rw-r--r--packages/Keyguard/res/values-ro/strings.xml7
-rw-r--r--packages/Keyguard/res/values-ru/strings.xml7
-rw-r--r--packages/Keyguard/res/values-sk/strings.xml7
-rw-r--r--packages/Keyguard/res/values-sl/strings.xml7
-rw-r--r--packages/Keyguard/res/values-sr/strings.xml9
-rw-r--r--packages/Keyguard/res/values-sv/strings.xml7
-rw-r--r--packages/Keyguard/res/values-sw/strings.xml7
-rw-r--r--packages/Keyguard/res/values-th/strings.xml7
-rw-r--r--packages/Keyguard/res/values-tl/strings.xml7
-rw-r--r--packages/Keyguard/res/values-tr/strings.xml7
-rw-r--r--packages/Keyguard/res/values-uk/strings.xml7
-rw-r--r--packages/Keyguard/res/values-vi/strings.xml7
-rw-r--r--packages/Keyguard/res/values-zh-rCN/strings.xml7
-rw-r--r--packages/Keyguard/res/values-zh-rHK/strings.xml145
-rw-r--r--packages/Keyguard/res/values-zh-rTW/strings.xml7
-rw-r--r--packages/Keyguard/res/values-zu/strings.xml7
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardSimPukView.java2
-rw-r--r--packages/PrintSpooler/res/values-af/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-am/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-ar/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-bg/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-ca/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-cs/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-da/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-de/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-el/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-en-rGB/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-en-rIN/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-es-rUS/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-es/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-et-rEE/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-fa/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-fi/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-fr-rCA/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-fr/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-hi/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-hr/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-hu/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-hy-rAM/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-in/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-it/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-iw/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-ja/arrays.xml1
-rw-r--r--packages/PrintSpooler/res/values-ja/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-ka-rGE/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-km-rKH/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-ko/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-lo-rLA/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-lt/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-lv/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-mn-rMN/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-ms-rMY/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-nb/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-nl/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-pl/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-pt-rPT/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-pt/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-ro/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-ru/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-sk/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-sl/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-sr/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-sv/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-sw/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-th/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-tl/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-tr/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-uk/strings.xml78
-rw-r--r--packages/PrintSpooler/res/values-vi/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-zh-rCN/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-zh-rHK/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-zh-rTW/strings.xml76
-rw-r--r--packages/PrintSpooler/res/values-zu/strings.xml78
-rw-r--r--packages/SettingsProvider/res/values-en-rIN/strings.xml23
-rw-r--r--packages/SettingsProvider/res/values-et-rEE/strings.xml23
-rw-r--r--packages/SettingsProvider/res/values-fr-rCA/strings.xml23
-rw-r--r--packages/SettingsProvider/res/values-hy-rAM/strings.xml23
-rw-r--r--packages/SettingsProvider/res/values-ka-rGE/strings.xml23
-rw-r--r--packages/SettingsProvider/res/values-km-rKH/strings.xml23
-rw-r--r--packages/SettingsProvider/res/values-lo-rLA/strings.xml23
-rw-r--r--packages/SettingsProvider/res/values-mn-rMN/strings.xml23
-rw-r--r--packages/SettingsProvider/res/values-ms-rMY/strings.xml23
-rw-r--r--packages/SettingsProvider/res/values-zh-rHK/strings.xml23
-rw-r--r--packages/SettingsProvider/res/values/defaults.xml4
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java3
-rw-r--r--packages/Shell/res/values-cs/strings.xml6
-rw-r--r--packages/Shell/res/values-da/strings.xml2
-rw-r--r--packages/Shell/res/values-en-rIN/strings.xml24
-rw-r--r--packages/Shell/res/values-et-rEE/strings.xml24
-rw-r--r--packages/Shell/res/values-fr-rCA/strings.xml24
-rw-r--r--packages/Shell/res/values-hi/strings.xml2
-rw-r--r--packages/Shell/res/values-hy-rAM/strings.xml24
-rw-r--r--packages/Shell/res/values-iw/strings.xml2
-rw-r--r--packages/Shell/res/values-ka-rGE/strings.xml24
-rw-r--r--packages/Shell/res/values-km-rKH/strings.xml24
-rw-r--r--packages/Shell/res/values-lo-rLA/strings.xml24
-rw-r--r--packages/Shell/res/values-mn-rMN/strings.xml24
-rw-r--r--packages/Shell/res/values-ms-rMY/strings.xml24
-rw-r--r--packages/Shell/res/values-zh-rHK/strings.xml24
-rw-r--r--packages/SystemUI/proguard.flags1
-rw-r--r--packages/SystemUI/res/values-af/strings.xml18
-rw-r--r--packages/SystemUI/res/values-am/strings.xml12
-rw-r--r--packages/SystemUI/res/values-ar/strings.xml18
-rw-r--r--packages/SystemUI/res/values-az-rAZ-land/strings.xml23
-rw-r--r--packages/SystemUI/res/values-az-rAZ/strings.xml206
-rw-r--r--packages/SystemUI/res/values-az/strings.xml208
-rw-r--r--packages/SystemUI/res/values-be/strings.xml17
-rw-r--r--packages/SystemUI/res/values-bg/strings.xml18
-rw-r--r--packages/SystemUI/res/values-ca/strings.xml12
-rw-r--r--packages/SystemUI/res/values-cs/strings.xml18
-rw-r--r--packages/SystemUI/res/values-da/strings.xml16
-rw-r--r--packages/SystemUI/res/values-de/strings.xml18
-rw-r--r--packages/SystemUI/res/values-el/strings.xml12
-rw-r--r--packages/SystemUI/res/values-en-rGB/strings.xml12
-rw-r--r--packages/SystemUI/res/values-en-rIN-land/strings.xml23
-rw-r--r--packages/SystemUI/res/values-en-rIN/strings.xml203
-rw-r--r--packages/SystemUI/res/values-es-rUS/strings.xml18
-rw-r--r--packages/SystemUI/res/values-es/strings.xml12
-rw-r--r--packages/SystemUI/res/values-et-rEE-land/strings.xml23
-rw-r--r--packages/SystemUI/res/values-et-rEE/strings.xml203
-rw-r--r--packages/SystemUI/res/values-et/strings.xml3
-rw-r--r--packages/SystemUI/res/values-fa/strings.xml18
-rw-r--r--packages/SystemUI/res/values-fi/strings.xml12
-rw-r--r--packages/SystemUI/res/values-fr-rCA-land/strings.xml23
-rw-r--r--packages/SystemUI/res/values-fr-rCA/strings.xml205
-rw-r--r--packages/SystemUI/res/values-fr/strings.xml18
-rw-r--r--packages/SystemUI/res/values-hi/strings.xml42
-rw-r--r--packages/SystemUI/res/values-hr/strings.xml12
-rw-r--r--packages/SystemUI/res/values-hu/strings.xml12
-rw-r--r--packages/SystemUI/res/values-hy-rAM-land/strings.xml23
-rw-r--r--packages/SystemUI/res/values-hy-rAM/strings.xml203
-rw-r--r--packages/SystemUI/res/values-hy/strings.xml204
-rw-r--r--packages/SystemUI/res/values-in/strings.xml18
-rw-r--r--packages/SystemUI/res/values-it/strings.xml18
-rw-r--r--packages/SystemUI/res/values-iw/strings.xml36
-rw-r--r--packages/SystemUI/res/values-ja/strings.xml12
-rw-r--r--packages/SystemUI/res/values-ka-rGE-land/strings.xml23
-rw-r--r--packages/SystemUI/res/values-ka-rGE/strings.xml203
-rw-r--r--packages/SystemUI/res/values-ka/strings.xml204
-rw-r--r--packages/SystemUI/res/values-km-rKH-land/strings.xml23
-rw-r--r--packages/SystemUI/res/values-km-rKH/strings.xml203
-rw-r--r--packages/SystemUI/res/values-km/strings.xml204
-rw-r--r--packages/SystemUI/res/values-ko/strings.xml18
-rw-r--r--packages/SystemUI/res/values-lo-rLA-land/strings.xml23
-rw-r--r--packages/SystemUI/res/values-lo-rLA/strings.xml203
-rw-r--r--packages/SystemUI/res/values-lo/strings.xml204
-rw-r--r--packages/SystemUI/res/values-lt/strings.xml12
-rw-r--r--packages/SystemUI/res/values-lv/strings.xml12
-rw-r--r--packages/SystemUI/res/values-mn-rMN-land/strings.xml23
-rw-r--r--packages/SystemUI/res/values-mn-rMN/strings.xml203
-rw-r--r--packages/SystemUI/res/values-mn/strings.xml208
-rw-r--r--packages/SystemUI/res/values-ms-rMY-land/strings.xml23
-rw-r--r--packages/SystemUI/res/values-ms-rMY/strings.xml203
-rw-r--r--packages/SystemUI/res/values-ms/strings.xml9
-rw-r--r--packages/SystemUI/res/values-nb/strings.xml12
-rw-r--r--packages/SystemUI/res/values-ne-rNP-land/strings.xml23
-rw-r--r--packages/SystemUI/res/values-ne-rNP/strings.xml206
-rw-r--r--packages/SystemUI/res/values-ne/strings.xml204
-rw-r--r--packages/SystemUI/res/values-nl/strings.xml12
-rw-r--r--packages/SystemUI/res/values-pl/strings.xml12
-rw-r--r--packages/SystemUI/res/values-pt-rPT/strings.xml12
-rw-r--r--packages/SystemUI/res/values-pt/strings.xml18
-rw-r--r--packages/SystemUI/res/values-rm/strings.xml20
-rw-r--r--packages/SystemUI/res/values-ro/strings.xml18
-rw-r--r--packages/SystemUI/res/values-ru/strings.xml18
-rw-r--r--packages/SystemUI/res/values-si-rLK-land/strings.xml23
-rw-r--r--packages/SystemUI/res/values-si-rLK/strings.xml206
-rw-r--r--packages/SystemUI/res/values-si/strings.xml204
-rw-r--r--packages/SystemUI/res/values-sk/strings.xml12
-rw-r--r--packages/SystemUI/res/values-sl/strings.xml12
-rw-r--r--packages/SystemUI/res/values-sr/strings.xml12
-rw-r--r--packages/SystemUI/res/values-sv/strings.xml12
-rw-r--r--packages/SystemUI/res/values-sw/strings.xml22
-rw-r--r--packages/SystemUI/res/values-th/strings.xml12
-rw-r--r--packages/SystemUI/res/values-tl/strings.xml12
-rw-r--r--packages/SystemUI/res/values-tr/strings.xml18
-rw-r--r--packages/SystemUI/res/values-uk/strings.xml12
-rw-r--r--packages/SystemUI/res/values-vi/strings.xml12
-rw-r--r--packages/SystemUI/res/values-zh-rCN/strings.xml28
-rw-r--r--packages/SystemUI/res/values-zh-rHK-land/strings.xml23
-rw-r--r--packages/SystemUI/res/values-zh-rHK/strings.xml205
-rw-r--r--packages/SystemUI/res/values-zh-rTW/strings.xml12
-rw-r--r--packages/SystemUI/res/values-zu/strings.xml24
-rw-r--r--packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java5
-rw-r--r--packages/VpnDialogs/res/values-en-rIN/strings.xml30
-rw-r--r--packages/VpnDialogs/res/values-et-rEE/strings.xml30
-rw-r--r--packages/VpnDialogs/res/values-fr-rCA/strings.xml30
-rw-r--r--packages/VpnDialogs/res/values-hi/strings.xml4
-rw-r--r--packages/VpnDialogs/res/values-hy-rAM/strings.xml30
-rw-r--r--packages/VpnDialogs/res/values-iw/strings.xml4
-rw-r--r--packages/VpnDialogs/res/values-ka-rGE/strings.xml30
-rw-r--r--packages/VpnDialogs/res/values-km-rKH/strings.xml30
-rw-r--r--packages/VpnDialogs/res/values-lo-rLA/strings.xml30
-rw-r--r--packages/VpnDialogs/res/values-mn-rMN/strings.xml30
-rw-r--r--packages/VpnDialogs/res/values-ms-rMY/strings.xml30
-rw-r--r--packages/VpnDialogs/res/values-nb/strings.xml4
-rw-r--r--packages/VpnDialogs/res/values-zh-rHK/strings.xml30
-rw-r--r--policy/src/com/android/internal/policy/impl/GlobalActions.java1
-rw-r--r--policy/src/com/android/internal/policy/impl/PhoneLayoutInflater.java3
-rw-r--r--policy/src/com/android/internal/policy/impl/PhoneWindow.java69
-rw-r--r--policy/src/com/android/internal/policy/impl/PhoneWindowManager.java85
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardServiceDelegate.java3
-rw-r--r--preloaded-classes13
-rw-r--r--services/Android.mk64
-rw-r--r--services/accessibility/Android.mk10
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java (renamed from services/java/com/android/server/accessibility/AccessibilityInputFilter.java)0
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java (renamed from services/java/com/android/server/accessibility/AccessibilityManagerService.java)0
-rw-r--r--services/accessibility/java/com/android/server/accessibility/EventStreamTransformation.java (renamed from services/java/com/android/server/accessibility/EventStreamTransformation.java)0
-rw-r--r--services/accessibility/java/com/android/server/accessibility/GestureUtils.java (renamed from services/java/com/android/server/accessibility/GestureUtils.java)0
-rw-r--r--services/accessibility/java/com/android/server/accessibility/ScreenMagnifier.java (renamed from services/java/com/android/server/accessibility/ScreenMagnifier.java)0
-rw-r--r--services/accessibility/java/com/android/server/accessibility/TouchExplorer.java (renamed from services/java/com/android/server/accessibility/TouchExplorer.java)0
-rw-r--r--services/appwidget/Android.mk10
-rw-r--r--services/appwidget/java/com/android/server/appwidget/AppWidgetService.java384
-rw-r--r--services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java (renamed from services/java/com/android/server/AppWidgetServiceImpl.java)2
-rw-r--r--services/backup/Android.mk12
-rw-r--r--services/backup/java/com/android/server/backup/BackupManagerService.java (renamed from services/java/com/android/server/BackupManagerService.java)30
-rw-r--r--services/backup/java/com/android/server/backup/PackageManagerBackupAgent.java (renamed from services/java/com/android/server/PackageManagerBackupAgent.java)2
-rw-r--r--services/backup/java/com/android/server/backup/SystemBackupAgent.java (renamed from services/java/com/android/server/SystemBackupAgent.java)48
-rw-r--r--services/core/Android.mk14
-rw-r--r--services/core/java/com/android/server/AlarmManagerService.java (renamed from services/java/com/android/server/AlarmManagerService.java)599
-rw-r--r--services/core/java/com/android/server/AppOpsService.java (renamed from services/java/com/android/server/AppOpsService.java)4
-rw-r--r--services/core/java/com/android/server/AssetAtlasService.java (renamed from services/java/com/android/server/AssetAtlasService.java)4
-rw-r--r--services/core/java/com/android/server/AttributeCache.java (renamed from services/java/com/android/server/AttributeCache.java)0
-rw-r--r--services/core/java/com/android/server/BatteryService.java (renamed from services/java/com/android/server/BatteryService.java)33
-rw-r--r--services/core/java/com/android/server/BluetoothManagerService.java (renamed from services/java/com/android/server/BluetoothManagerService.java)0
-rw-r--r--services/core/java/com/android/server/BootReceiver.java (renamed from services/java/com/android/server/BootReceiver.java)7
-rw-r--r--services/core/java/com/android/server/BrickReceiver.java (renamed from services/java/com/android/server/BrickReceiver.java)0
-rw-r--r--services/core/java/com/android/server/CertBlacklister.java (renamed from services/java/com/android/server/CertBlacklister.java)0
-rw-r--r--services/core/java/com/android/server/CommonTimeManagementService.java (renamed from services/java/com/android/server/CommonTimeManagementService.java)0
-rw-r--r--services/core/java/com/android/server/ConnectivityService.java (renamed from services/java/com/android/server/ConnectivityService.java)11
-rw-r--r--services/core/java/com/android/server/ConsumerIrService.java (renamed from services/java/com/android/server/ConsumerIrService.java)0
-rw-r--r--services/core/java/com/android/server/CountryDetectorService.java (renamed from services/java/com/android/server/CountryDetectorService.java)0
-rw-r--r--services/core/java/com/android/server/DiskStatsService.java (renamed from services/java/com/android/server/DiskStatsService.java)0
-rw-r--r--services/core/java/com/android/server/DisplayThread.java56
-rw-r--r--services/core/java/com/android/server/DockObserver.java (renamed from services/java/com/android/server/DockObserver.java)0
-rw-r--r--services/core/java/com/android/server/DropBoxManagerService.java (renamed from services/java/com/android/server/DropBoxManagerService.java)0
-rw-r--r--services/core/java/com/android/server/EntropyMixer.java (renamed from services/java/com/android/server/EntropyMixer.java)37
-rw-r--r--services/core/java/com/android/server/EventLogTags.logtags (renamed from services/java/com/android/server/EventLogTags.logtags)0
-rw-r--r--services/core/java/com/android/server/FgThread.java (renamed from services/java/com/android/server/FgThread.java)11
-rw-r--r--services/core/java/com/android/server/INativeDaemonConnectorCallbacks.java (renamed from services/java/com/android/server/INativeDaemonConnectorCallbacks.java)0
-rw-r--r--services/core/java/com/android/server/IdleMaintenanceService.java (renamed from services/java/com/android/server/IdleMaintenanceService.java)0
-rw-r--r--services/core/java/com/android/server/InputMethodManagerService.java (renamed from services/java/com/android/server/InputMethodManagerService.java)2
-rw-r--r--services/core/java/com/android/server/IntentResolver.java (renamed from services/java/com/android/server/IntentResolver.java)0
-rw-r--r--services/core/java/com/android/server/IoThread.java (renamed from services/java/com/android/server/IoThread.java)11
-rw-r--r--services/core/java/com/android/server/LocationManagerService.java (renamed from services/java/com/android/server/LocationManagerService.java)0
-rw-r--r--services/core/java/com/android/server/LockSettingsService.java (renamed from services/java/com/android/server/LockSettingsService.java)0
-rw-r--r--services/core/java/com/android/server/MasterClearReceiver.java (renamed from services/java/com/android/server/MasterClearReceiver.java)4
-rw-r--r--services/core/java/com/android/server/MountService.java (renamed from services/java/com/android/server/MountService.java)5
-rw-r--r--services/core/java/com/android/server/NativeDaemonConnector.java (renamed from services/java/com/android/server/NativeDaemonConnector.java)0
-rw-r--r--services/core/java/com/android/server/NativeDaemonConnectorException.java (renamed from services/java/com/android/server/NativeDaemonConnectorException.java)0
-rw-r--r--services/core/java/com/android/server/NativeDaemonEvent.java (renamed from services/java/com/android/server/NativeDaemonEvent.java)0
-rw-r--r--services/core/java/com/android/server/NetworkManagementService.java (renamed from services/java/com/android/server/NetworkManagementService.java)84
-rw-r--r--services/core/java/com/android/server/NetworkTimeUpdateService.java (renamed from services/java/com/android/server/NetworkTimeUpdateService.java)0
-rw-r--r--services/core/java/com/android/server/NsdService.java (renamed from services/java/com/android/server/NsdService.java)0
-rw-r--r--services/core/java/com/android/server/RandomBlock.java (renamed from services/java/com/android/server/RandomBlock.java)4
-rw-r--r--services/core/java/com/android/server/RecognitionManagerService.java (renamed from services/java/com/android/server/RecognitionManagerService.java)0
-rw-r--r--services/core/java/com/android/server/SamplingProfilerService.java (renamed from services/java/com/android/server/SamplingProfilerService.java)0
-rw-r--r--services/core/java/com/android/server/SerialService.java (renamed from services/java/com/android/server/SerialService.java)0
-rw-r--r--services/core/java/com/android/server/ServiceThread.java48
-rw-r--r--services/core/java/com/android/server/ServiceWatcher.java (renamed from services/java/com/android/server/ServiceWatcher.java)0
-rw-r--r--services/core/java/com/android/server/ShutdownActivity.java (renamed from services/java/com/android/server/ShutdownActivity.java)0
-rw-r--r--services/core/java/com/android/server/TelephonyRegistry.java (renamed from services/java/com/android/server/TelephonyRegistry.java)0
-rw-r--r--services/core/java/com/android/server/TextServicesManagerService.java (renamed from services/java/com/android/server/TextServicesManagerService.java)0
-rw-r--r--services/core/java/com/android/server/TwilightCalculator.java (renamed from services/java/com/android/server/TwilightCalculator.java)0
-rw-r--r--services/core/java/com/android/server/UiModeManagerService.java (renamed from services/java/com/android/server/UiModeManagerService.java)294
-rw-r--r--services/core/java/com/android/server/UiThread.java (renamed from services/java/com/android/server/UiThread.java)20
-rw-r--r--services/core/java/com/android/server/UpdateLockService.java (renamed from services/java/com/android/server/UpdateLockService.java)0
-rw-r--r--services/core/java/com/android/server/VibratorService.java (renamed from services/java/com/android/server/VibratorService.java)0
-rw-r--r--services/core/java/com/android/server/Watchdog.java (renamed from services/java/com/android/server/Watchdog.java)33
-rw-r--r--services/core/java/com/android/server/WiredAccessoryManager.java (renamed from services/java/com/android/server/WiredAccessoryManager.java)0
-rw-r--r--services/core/java/com/android/server/accounts/AccountAuthenticatorCache.java (renamed from services/java/com/android/server/accounts/AccountAuthenticatorCache.java)0
-rw-r--r--services/core/java/com/android/server/accounts/AccountManagerService.java (renamed from services/java/com/android/server/accounts/AccountManagerService.java)0
-rw-r--r--services/core/java/com/android/server/accounts/IAccountAuthenticatorCache.java (renamed from services/java/com/android/server/accounts/IAccountAuthenticatorCache.java)0
-rw-r--r--services/core/java/com/android/server/am/ActiveServices.java (renamed from services/java/com/android/server/am/ActiveServices.java)0
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java (renamed from services/java/com/android/server/am/ActivityManagerService.java)491
-rw-r--r--services/core/java/com/android/server/am/ActivityRecord.java (renamed from services/java/com/android/server/am/ActivityRecord.java)9
-rw-r--r--services/core/java/com/android/server/am/ActivityResult.java (renamed from services/java/com/android/server/am/ActivityResult.java)0
-rwxr-xr-x[-rw-r--r--]services/core/java/com/android/server/am/ActivityStack.java (renamed from services/java/com/android/server/am/ActivityStack.java)183
-rw-r--r--services/core/java/com/android/server/am/ActivityStackSupervisor.java (renamed from services/java/com/android/server/am/ActivityStackSupervisor.java)1272
-rw-r--r--services/core/java/com/android/server/am/AppBindRecord.java (renamed from services/java/com/android/server/am/AppBindRecord.java)0
-rw-r--r--services/core/java/com/android/server/am/AppErrorDialog.java (renamed from services/java/com/android/server/am/AppErrorDialog.java)0
-rw-r--r--services/core/java/com/android/server/am/AppErrorResult.java (renamed from services/java/com/android/server/am/AppErrorResult.java)0
-rw-r--r--services/core/java/com/android/server/am/AppNotRespondingDialog.java (renamed from services/java/com/android/server/am/AppNotRespondingDialog.java)0
-rw-r--r--services/core/java/com/android/server/am/AppWaitingForDebuggerDialog.java (renamed from services/java/com/android/server/am/AppWaitingForDebuggerDialog.java)0
-rw-r--r--services/core/java/com/android/server/am/BackupRecord.java (renamed from services/java/com/android/server/am/BackupRecord.java)0
-rw-r--r--services/core/java/com/android/server/am/BaseErrorDialog.java (renamed from services/java/com/android/server/am/BaseErrorDialog.java)0
-rw-r--r--services/core/java/com/android/server/am/BatteryStatsService.java (renamed from services/java/com/android/server/am/BatteryStatsService.java)5
-rw-r--r--services/core/java/com/android/server/am/BroadcastFilter.java (renamed from services/java/com/android/server/am/BroadcastFilter.java)0
-rw-r--r--services/core/java/com/android/server/am/BroadcastQueue.java (renamed from services/java/com/android/server/am/BroadcastQueue.java)15
-rw-r--r--services/core/java/com/android/server/am/BroadcastRecord.java (renamed from services/java/com/android/server/am/BroadcastRecord.java)0
-rw-r--r--services/core/java/com/android/server/am/CompatModeDialog.java (renamed from services/java/com/android/server/am/CompatModeDialog.java)0
-rw-r--r--services/core/java/com/android/server/am/CompatModePackages.java (renamed from services/java/com/android/server/am/CompatModePackages.java)41
-rw-r--r--services/core/java/com/android/server/am/ConnectionRecord.java (renamed from services/java/com/android/server/am/ConnectionRecord.java)0
-rw-r--r--services/core/java/com/android/server/am/ContentProviderConnection.java (renamed from services/java/com/android/server/am/ContentProviderConnection.java)0
-rw-r--r--services/core/java/com/android/server/am/ContentProviderRecord.java (renamed from services/java/com/android/server/am/ContentProviderRecord.java)0
-rw-r--r--services/core/java/com/android/server/am/CoreSettingsObserver.java (renamed from services/java/com/android/server/am/CoreSettingsObserver.java)0
-rw-r--r--services/core/java/com/android/server/am/EventLogTags.logtags (renamed from services/java/com/android/server/am/EventLogTags.logtags)0
-rw-r--r--services/core/java/com/android/server/am/FactoryErrorDialog.java (renamed from services/java/com/android/server/am/FactoryErrorDialog.java)0
-rw-r--r--services/core/java/com/android/server/am/IntentBindRecord.java (renamed from services/java/com/android/server/am/IntentBindRecord.java)0
-rw-r--r--services/core/java/com/android/server/am/LaunchWarningWindow.java (renamed from services/java/com/android/server/am/LaunchWarningWindow.java)0
-rw-r--r--services/core/java/com/android/server/am/NativeCrashListener.java (renamed from services/java/com/android/server/am/NativeCrashListener.java)4
-rw-r--r--services/core/java/com/android/server/am/PendingIntentRecord.java (renamed from services/java/com/android/server/am/PendingIntentRecord.java)10
-rw-r--r--services/core/java/com/android/server/am/PendingThumbnailsRecord.java (renamed from services/java/com/android/server/am/PendingThumbnailsRecord.java)0
-rw-r--r--services/core/java/com/android/server/am/ProcessList.java (renamed from services/java/com/android/server/am/ProcessList.java)135
-rw-r--r--services/core/java/com/android/server/am/ProcessMemInfo.java (renamed from services/java/com/android/server/am/ProcessMemInfo.java)0
-rw-r--r--services/core/java/com/android/server/am/ProcessRecord.java (renamed from services/java/com/android/server/am/ProcessRecord.java)0
-rw-r--r--services/core/java/com/android/server/am/ProcessStatsService.java (renamed from services/java/com/android/server/am/ProcessStatsService.java)0
-rw-r--r--services/core/java/com/android/server/am/ProviderMap.java (renamed from services/java/com/android/server/am/ProviderMap.java)0
-rw-r--r--services/core/java/com/android/server/am/ReceiverList.java (renamed from services/java/com/android/server/am/ReceiverList.java)0
-rw-r--r--services/core/java/com/android/server/am/ServiceRecord.java (renamed from services/java/com/android/server/am/ServiceRecord.java)9
-rw-r--r--services/core/java/com/android/server/am/StrictModeViolationDialog.java (renamed from services/java/com/android/server/am/StrictModeViolationDialog.java)0
-rw-r--r--services/core/java/com/android/server/am/TaskAccessInfo.java (renamed from services/java/com/android/server/am/TaskAccessInfo.java)0
-rw-r--r--services/core/java/com/android/server/am/TaskRecord.java (renamed from services/java/com/android/server/am/TaskRecord.java)5
-rw-r--r--services/core/java/com/android/server/am/ThumbnailHolder.java (renamed from services/java/com/android/server/am/ThumbnailHolder.java)0
-rw-r--r--services/core/java/com/android/server/am/UriPermission.java (renamed from services/java/com/android/server/am/UriPermission.java)0
-rw-r--r--services/core/java/com/android/server/am/UriPermissionOwner.java (renamed from services/java/com/android/server/am/UriPermissionOwner.java)0
-rw-r--r--services/core/java/com/android/server/am/UsageStatsService.java (renamed from services/java/com/android/server/am/UsageStatsService.java)7
-rw-r--r--services/core/java/com/android/server/am/UserStartedState.java (renamed from services/java/com/android/server/am/UserStartedState.java)0
-rw-r--r--services/core/java/com/android/server/am/package.html (renamed from services/java/com/android/server/am/package.html)0
-rw-r--r--services/core/java/com/android/server/clipboard/ClipboardService.java (renamed from services/java/com/android/server/ClipboardService.java)2
-rw-r--r--services/core/java/com/android/server/connectivity/DataConnectionStats.java (renamed from services/java/com/android/server/connectivity/DataConnectionStats.java)0
-rw-r--r--services/core/java/com/android/server/connectivity/Nat464Xlat.java (renamed from services/java/com/android/server/connectivity/Nat464Xlat.java)0
-rw-r--r--services/core/java/com/android/server/connectivity/PacManager.java (renamed from services/java/com/android/server/connectivity/PacManager.java)0
-rw-r--r--services/core/java/com/android/server/connectivity/Tethering.java (renamed from services/java/com/android/server/connectivity/Tethering.java)11
-rw-r--r--services/core/java/com/android/server/connectivity/Vpn.java (renamed from services/java/com/android/server/connectivity/Vpn.java)4
-rw-r--r--services/core/java/com/android/server/content/ContentService.java (renamed from services/java/com/android/server/content/ContentService.java)0
-rw-r--r--services/core/java/com/android/server/content/SyncManager.java (renamed from services/java/com/android/server/content/SyncManager.java)0
-rw-r--r--services/core/java/com/android/server/content/SyncOperation.java (renamed from services/java/com/android/server/content/SyncOperation.java)0
-rw-r--r--services/core/java/com/android/server/content/SyncQueue.java (renamed from services/java/com/android/server/content/SyncQueue.java)0
-rw-r--r--services/core/java/com/android/server/content/SyncStorageEngine.java (renamed from services/java/com/android/server/content/SyncStorageEngine.java)8
-rw-r--r--services/core/java/com/android/server/display/DisplayAdapter.java (renamed from services/java/com/android/server/display/DisplayAdapter.java)0
-rw-r--r--services/core/java/com/android/server/display/DisplayDevice.java (renamed from services/java/com/android/server/display/DisplayDevice.java)1
-rw-r--r--services/core/java/com/android/server/display/DisplayDeviceInfo.java (renamed from services/java/com/android/server/display/DisplayDeviceInfo.java)11
-rw-r--r--services/core/java/com/android/server/display/DisplayManagerService.java (renamed from services/java/com/android/server/display/DisplayManagerService.java)933
-rw-r--r--services/core/java/com/android/server/display/LocalDisplayAdapter.java (renamed from services/java/com/android/server/display/LocalDisplayAdapter.java)0
-rw-r--r--services/core/java/com/android/server/display/LogicalDisplay.java (renamed from services/java/com/android/server/display/LogicalDisplay.java)0
-rw-r--r--services/core/java/com/android/server/display/OverlayDisplayAdapter.java (renamed from services/java/com/android/server/display/OverlayDisplayAdapter.java)0
-rw-r--r--services/core/java/com/android/server/display/OverlayDisplayWindow.java (renamed from services/java/com/android/server/display/OverlayDisplayWindow.java)0
-rw-r--r--services/core/java/com/android/server/display/PersistentDataStore.java (renamed from services/java/com/android/server/display/PersistentDataStore.java)0
-rw-r--r--services/core/java/com/android/server/display/VirtualDisplayAdapter.java (renamed from services/java/com/android/server/display/VirtualDisplayAdapter.java)7
-rw-r--r--services/core/java/com/android/server/display/WifiDisplayAdapter.java (renamed from services/java/com/android/server/display/WifiDisplayAdapter.java)0
-rw-r--r--services/core/java/com/android/server/display/WifiDisplayController.java (renamed from services/java/com/android/server/display/WifiDisplayController.java)0
-rw-r--r--services/core/java/com/android/server/dreams/DreamController.java (renamed from services/java/com/android/server/dreams/DreamController.java)19
-rw-r--r--services/core/java/com/android/server/dreams/DreamManagerService.java655
-rw-r--r--services/core/java/com/android/server/dreams/McuHal.java46
-rw-r--r--services/core/java/com/android/server/firewall/AndFilter.java (renamed from services/java/com/android/server/firewall/AndFilter.java)0
-rw-r--r--services/core/java/com/android/server/firewall/CategoryFilter.java (renamed from services/java/com/android/server/firewall/CategoryFilter.java)0
-rw-r--r--services/core/java/com/android/server/firewall/Filter.java (renamed from services/java/com/android/server/firewall/Filter.java)0
-rw-r--r--services/core/java/com/android/server/firewall/FilterFactory.java (renamed from services/java/com/android/server/firewall/FilterFactory.java)0
-rw-r--r--services/core/java/com/android/server/firewall/FilterList.java (renamed from services/java/com/android/server/firewall/FilterList.java)0
-rw-r--r--services/core/java/com/android/server/firewall/IntentFirewall.java (renamed from services/java/com/android/server/firewall/IntentFirewall.java)12
-rw-r--r--services/core/java/com/android/server/firewall/NotFilter.java (renamed from services/java/com/android/server/firewall/NotFilter.java)0
-rw-r--r--services/core/java/com/android/server/firewall/OrFilter.java (renamed from services/java/com/android/server/firewall/OrFilter.java)0
-rw-r--r--services/core/java/com/android/server/firewall/PortFilter.java (renamed from services/java/com/android/server/firewall/PortFilter.java)0
-rw-r--r--services/core/java/com/android/server/firewall/SenderFilter.java (renamed from services/java/com/android/server/firewall/SenderFilter.java)0
-rw-r--r--services/core/java/com/android/server/firewall/SenderPermissionFilter.java (renamed from services/java/com/android/server/firewall/SenderPermissionFilter.java)0
-rw-r--r--services/core/java/com/android/server/firewall/StringFilter.java (renamed from services/java/com/android/server/firewall/StringFilter.java)0
-rw-r--r--services/core/java/com/android/server/input/InputApplicationHandle.java (renamed from services/java/com/android/server/input/InputApplicationHandle.java)2
-rw-r--r--services/core/java/com/android/server/input/InputManagerService.java (renamed from services/java/com/android/server/input/InputManagerService.java)228
-rw-r--r--services/core/java/com/android/server/input/InputWindowHandle.java (renamed from services/java/com/android/server/input/InputWindowHandle.java)2
-rw-r--r--services/core/java/com/android/server/input/PersistentDataStore.java (renamed from services/java/com/android/server/input/PersistentDataStore.java)0
-rw-r--r--services/core/java/com/android/server/lights/Light.java41
-rw-r--r--services/core/java/com/android/server/lights/LightsManager.java31
-rw-r--r--services/core/java/com/android/server/lights/LightsService.java (renamed from services/java/com/android/server/LightsService.java)98
-rw-r--r--services/core/java/com/android/server/location/ComprehensiveCountryDetector.java (renamed from services/java/com/android/server/location/ComprehensiveCountryDetector.java)0
-rw-r--r--services/core/java/com/android/server/location/CountryDetectorBase.java (renamed from services/java/com/android/server/location/CountryDetectorBase.java)0
-rw-r--r--services/core/java/com/android/server/location/FlpHardwareProvider.java (renamed from services/java/com/android/server/location/FlpHardwareProvider.java)0
-rw-r--r--services/core/java/com/android/server/location/FusedLocationHardwareSecure.java (renamed from services/java/com/android/server/location/FusedLocationHardwareSecure.java)0
-rw-r--r--services/core/java/com/android/server/location/FusedProxy.java (renamed from services/java/com/android/server/location/FusedProxy.java)0
-rw-r--r--services/core/java/com/android/server/location/GeocoderProxy.java (renamed from services/java/com/android/server/location/GeocoderProxy.java)0
-rw-r--r--services/core/java/com/android/server/location/GeofenceManager.java (renamed from services/java/com/android/server/location/GeofenceManager.java)0
-rw-r--r--services/core/java/com/android/server/location/GeofenceProxy.java (renamed from services/java/com/android/server/location/GeofenceProxy.java)0
-rw-r--r--services/core/java/com/android/server/location/GeofenceState.java (renamed from services/java/com/android/server/location/GeofenceState.java)0
-rw-r--r--services/core/java/com/android/server/location/GpsLocationProvider.java (renamed from services/java/com/android/server/location/GpsLocationProvider.java)0
-rw-r--r--services/core/java/com/android/server/location/GpsXtraDownloader.java (renamed from services/java/com/android/server/location/GpsXtraDownloader.java)0
-rw-r--r--services/core/java/com/android/server/location/LocationBasedCountryDetector.java (renamed from services/java/com/android/server/location/LocationBasedCountryDetector.java)0
-rw-r--r--services/core/java/com/android/server/location/LocationBlacklist.java (renamed from services/java/com/android/server/location/LocationBlacklist.java)0
-rw-r--r--services/core/java/com/android/server/location/LocationFudger.java (renamed from services/java/com/android/server/location/LocationFudger.java)0
-rw-r--r--services/core/java/com/android/server/location/LocationProviderInterface.java (renamed from services/java/com/android/server/location/LocationProviderInterface.java)0
-rw-r--r--services/core/java/com/android/server/location/LocationProviderProxy.java (renamed from services/java/com/android/server/location/LocationProviderProxy.java)0
-rw-r--r--services/core/java/com/android/server/location/MockProvider.java (renamed from services/java/com/android/server/location/MockProvider.java)0
-rw-r--r--services/core/java/com/android/server/location/PassiveProvider.java (renamed from services/java/com/android/server/location/PassiveProvider.java)0
-rw-r--r--services/core/java/com/android/server/media/MediaRouterService.java (renamed from services/java/com/android/server/media/MediaRouterService.java)8
-rw-r--r--services/core/java/com/android/server/media/RemoteDisplayProviderProxy.java (renamed from services/java/com/android/server/media/RemoteDisplayProviderProxy.java)7
-rw-r--r--services/core/java/com/android/server/media/RemoteDisplayProviderWatcher.java (renamed from services/java/com/android/server/media/RemoteDisplayProviderWatcher.java)0
-rw-r--r--services/core/java/com/android/server/net/LockdownVpnTracker.java (renamed from services/java/com/android/server/net/LockdownVpnTracker.java)0
-rw-r--r--services/core/java/com/android/server/net/NetworkIdentitySet.java (renamed from services/java/com/android/server/net/NetworkIdentitySet.java)0
-rw-r--r--services/core/java/com/android/server/net/NetworkPolicyManagerService.java (renamed from services/java/com/android/server/net/NetworkPolicyManagerService.java)6
-rw-r--r--services/core/java/com/android/server/net/NetworkStatsCollection.java (renamed from services/java/com/android/server/net/NetworkStatsCollection.java)6
-rw-r--r--services/core/java/com/android/server/net/NetworkStatsRecorder.java (renamed from services/java/com/android/server/net/NetworkStatsRecorder.java)0
-rw-r--r--services/core/java/com/android/server/net/NetworkStatsService.java (renamed from services/java/com/android/server/net/NetworkStatsService.java)0
-rw-r--r--services/core/java/com/android/server/notification/NotificationDelegate.java27
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerInternal.java24
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerService.java (renamed from services/java/com/android/server/NotificationManagerService.java)1266
-rw-r--r--services/core/java/com/android/server/os/SchedulingPolicyService.java (renamed from services/java/com/android/server/os/SchedulingPolicyService.java)0
-rw-r--r--services/core/java/com/android/server/pm/BasePermission.java (renamed from services/java/com/android/server/pm/BasePermission.java)0
-rw-r--r--services/core/java/com/android/server/pm/GrantedPermissions.java (renamed from services/java/com/android/server/pm/GrantedPermissions.java)0
-rw-r--r--services/core/java/com/android/server/pm/Installer.java (renamed from services/java/com/android/server/pm/Installer.java)22
-rw-r--r--services/core/java/com/android/server/pm/KeySetManager.java (renamed from services/java/com/android/server/pm/KeySetManager.java)0
-rw-r--r--services/core/java/com/android/server/pm/PackageKeySetData.java (renamed from services/java/com/android/server/pm/PackageKeySetData.java)0
-rwxr-xr-xservices/core/java/com/android/server/pm/PackageManagerService.java (renamed from services/java/com/android/server/pm/PackageManagerService.java)92
-rw-r--r--services/core/java/com/android/server/pm/PackageSetting.java (renamed from services/java/com/android/server/pm/PackageSetting.java)0
-rw-r--r--services/core/java/com/android/server/pm/PackageSettingBase.java (renamed from services/java/com/android/server/pm/PackageSettingBase.java)0
-rw-r--r--services/core/java/com/android/server/pm/PackageSignatures.java (renamed from services/java/com/android/server/pm/PackageSignatures.java)0
-rw-r--r--services/core/java/com/android/server/pm/PackageVerificationResponse.java (renamed from services/java/com/android/server/pm/PackageVerificationResponse.java)0
-rw-r--r--services/core/java/com/android/server/pm/PackageVerificationState.java (renamed from services/java/com/android/server/pm/PackageVerificationState.java)0
-rw-r--r--services/core/java/com/android/server/pm/PendingPackage.java (renamed from services/java/com/android/server/pm/PendingPackage.java)0
-rw-r--r--services/core/java/com/android/server/pm/PreferredActivity.java (renamed from services/java/com/android/server/pm/PreferredActivity.java)1
-rw-r--r--services/core/java/com/android/server/pm/PreferredComponent.java (renamed from services/java/com/android/server/PreferredComponent.java)2
-rw-r--r--services/core/java/com/android/server/pm/PreferredIntentResolver.java (renamed from services/java/com/android/server/pm/PreferredIntentResolver.java)0
-rw-r--r--services/core/java/com/android/server/pm/SELinuxMMAC.java (renamed from services/java/com/android/server/pm/SELinuxMMAC.java)248
-rw-r--r--services/core/java/com/android/server/pm/Settings.java (renamed from services/java/com/android/server/pm/Settings.java)3
-rw-r--r--services/core/java/com/android/server/pm/SharedUserSetting.java (renamed from services/java/com/android/server/pm/SharedUserSetting.java)0
-rw-r--r--services/core/java/com/android/server/pm/UserManagerService.java (renamed from services/java/com/android/server/pm/UserManagerService.java)0
-rw-r--r--services/core/java/com/android/server/power/DisplayBlanker.java (renamed from services/java/com/android/server/power/DisplayBlanker.java)0
-rw-r--r--services/core/java/com/android/server/power/DisplayPowerController.java (renamed from services/java/com/android/server/power/DisplayPowerController.java)64
-rw-r--r--services/core/java/com/android/server/power/DisplayPowerRequest.java (renamed from services/java/com/android/server/power/DisplayPowerRequest.java)24
-rw-r--r--services/core/java/com/android/server/power/DisplayPowerState.java (renamed from services/java/com/android/server/power/DisplayPowerState.java)6
-rw-r--r--services/core/java/com/android/server/power/ElectronBeam.java (renamed from services/java/com/android/server/power/ElectronBeam.java)29
-rw-r--r--services/core/java/com/android/server/power/Notifier.java (renamed from services/java/com/android/server/power/Notifier.java)0
-rw-r--r--services/core/java/com/android/server/power/PowerManagerService.java (renamed from services/java/com/android/server/power/PowerManagerService.java)1361
-rw-r--r--services/core/java/com/android/server/power/RampAnimator.java (renamed from services/java/com/android/server/power/RampAnimator.java)0
-rw-r--r--services/core/java/com/android/server/power/ScreenOnBlocker.java (renamed from services/java/com/android/server/power/ScreenOnBlocker.java)0
-rw-r--r--services/core/java/com/android/server/power/ShutdownThread.java (renamed from services/java/com/android/server/power/ShutdownThread.java)0
-rw-r--r--services/core/java/com/android/server/power/SuspendBlocker.java (renamed from services/java/com/android/server/power/SuspendBlocker.java)0
-rw-r--r--services/core/java/com/android/server/power/WirelessChargerDetector.java (renamed from services/java/com/android/server/power/WirelessChargerDetector.java)0
-rw-r--r--services/core/java/com/android/server/search/SearchManagerService.java (renamed from services/java/com/android/server/search/SearchManagerService.java)0
-rw-r--r--services/core/java/com/android/server/search/Searchables.java (renamed from services/java/com/android/server/search/Searchables.java)0
-rw-r--r--services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java29
-rw-r--r--services/core/java/com/android/server/statusbar/StatusBarManagerService.java (renamed from services/java/com/android/server/StatusBarManagerService.java)236
-rw-r--r--services/core/java/com/android/server/storage/DeviceStorageMonitorInternal.java24
-rw-r--r--services/core/java/com/android/server/storage/DeviceStorageMonitorService.java (renamed from services/java/com/android/server/DeviceStorageMonitorService.java)250
-rw-r--r--services/core/java/com/android/server/twilight/TwilightListener.java21
-rw-r--r--services/core/java/com/android/server/twilight/TwilightManager.java24
-rw-r--r--services/core/java/com/android/server/twilight/TwilightService.java (renamed from services/java/com/android/server/TwilightService.java)251
-rw-r--r--services/core/java/com/android/server/twilight/TwilightState.java112
-rw-r--r--services/core/java/com/android/server/updates/CarrierProvisioningUrlsInstallReceiver.java (renamed from services/java/com/android/server/updates/CarrierProvisioningUrlsInstallReceiver.java)0
-rw-r--r--services/core/java/com/android/server/updates/CertPinInstallReceiver.java (renamed from services/java/com/android/server/updates/CertPinInstallReceiver.java)0
-rw-r--r--services/core/java/com/android/server/updates/ConfigUpdateInstallReceiver.java (renamed from services/java/com/android/server/updates/ConfigUpdateInstallReceiver.java)0
-rw-r--r--services/core/java/com/android/server/updates/IntentFirewallInstallReceiver.java (renamed from services/java/com/android/server/updates/IntentFirewallInstallReceiver.java)0
-rw-r--r--services/core/java/com/android/server/updates/SELinuxPolicyInstallReceiver.java (renamed from services/java/com/android/server/updates/SELinuxPolicyInstallReceiver.java)14
-rw-r--r--services/core/java/com/android/server/updates/SmsShortCodesInstallReceiver.java (renamed from services/java/com/android/server/updates/SmsShortCodesInstallReceiver.java)0
-rw-r--r--services/core/java/com/android/server/updates/TZInfoInstallReceiver.java (renamed from services/java/com/android/server/updates/TZInfoInstallReceiver.java)0
-rw-r--r--services/core/java/com/android/server/wallpaper/WallpaperManagerService.java (renamed from services/java/com/android/server/WallpaperManagerService.java)20
-rw-r--r--services/core/java/com/android/server/wifi/README.txt (renamed from services/java/com/android/server/wifi/README.txt)0
-rw-r--r--services/core/java/com/android/server/wifi/WifiController.java (renamed from services/java/com/android/server/wifi/WifiController.java)0
-rw-r--r--services/core/java/com/android/server/wifi/WifiNotificationController.java (renamed from services/java/com/android/server/wifi/WifiNotificationController.java)0
-rw-r--r--services/core/java/com/android/server/wifi/WifiService.java (renamed from services/java/com/android/server/wifi/WifiService.java)0
-rw-r--r--services/core/java/com/android/server/wifi/WifiSettingsStore.java (renamed from services/java/com/android/server/wifi/WifiSettingsStore.java)0
-rw-r--r--services/core/java/com/android/server/wifi/WifiTrafficPoller.java (renamed from services/java/com/android/server/wifi/WifiTrafficPoller.java)0
-rw-r--r--services/core/java/com/android/server/wm/AppTransition.java (renamed from services/java/com/android/server/wm/AppTransition.java)0
-rw-r--r--services/core/java/com/android/server/wm/AppWindowAnimator.java (renamed from services/java/com/android/server/wm/AppWindowAnimator.java)16
-rw-r--r--services/core/java/com/android/server/wm/AppWindowToken.java (renamed from services/java/com/android/server/wm/AppWindowToken.java)2
-rw-r--r--services/core/java/com/android/server/wm/BlackFrame.java (renamed from services/java/com/android/server/wm/BlackFrame.java)0
-rw-r--r--services/core/java/com/android/server/wm/DimLayer.java (renamed from services/java/com/android/server/wm/DimLayer.java)95
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java415
-rw-r--r--services/core/java/com/android/server/wm/DisplayMagnifier.java (renamed from services/java/com/android/server/wm/DisplayMagnifier.java)0
-rw-r--r--services/core/java/com/android/server/wm/DisplaySettings.java (renamed from services/java/com/android/server/wm/DisplaySettings.java)0
-rw-r--r--services/core/java/com/android/server/wm/DragState.java (renamed from services/java/com/android/server/wm/DragState.java)0
-rw-r--r--services/core/java/com/android/server/wm/FakeWindowImpl.java (renamed from services/java/com/android/server/wm/FakeWindowImpl.java)0
-rw-r--r--services/core/java/com/android/server/wm/FocusedStackFrame.java (renamed from services/java/com/android/server/wm/FocusedStackFrame.java)8
-rw-r--r--services/core/java/com/android/server/wm/InputMonitor.java (renamed from services/java/com/android/server/wm/InputMonitor.java)9
-rw-r--r--services/core/java/com/android/server/wm/KeyguardDisableHandler.java (renamed from services/java/com/android/server/wm/KeyguardDisableHandler.java)0
-rw-r--r--services/core/java/com/android/server/wm/PointerEventDispatcher.java (renamed from services/java/com/android/server/wm/PointerEventDispatcher.java)0
-rw-r--r--services/core/java/com/android/server/wm/ScreenRotationAnimation.java (renamed from services/java/com/android/server/wm/ScreenRotationAnimation.java)0
-rw-r--r--services/core/java/com/android/server/wm/Session.java (renamed from services/java/com/android/server/wm/Session.java)6
-rw-r--r--services/core/java/com/android/server/wm/StackTapPointerEventListener.java (renamed from services/java/com/android/server/wm/StackTapPointerEventListener.java)0
-rw-r--r--services/core/java/com/android/server/wm/StartingData.java (renamed from services/java/com/android/server/wm/StartingData.java)0
-rw-r--r--services/core/java/com/android/server/wm/StrictModeFlash.java (renamed from services/java/com/android/server/wm/StrictModeFlash.java)0
-rw-r--r--services/core/java/com/android/server/wm/Task.java (renamed from services/java/com/android/server/wm/Task.java)20
-rw-r--r--services/core/java/com/android/server/wm/TaskGroup.java (renamed from services/java/com/android/server/wm/TaskGroup.java)0
-rw-r--r--services/core/java/com/android/server/wm/TaskStack.java (renamed from services/java/com/android/server/wm/TaskStack.java)190
-rw-r--r--services/core/java/com/android/server/wm/ViewServer.java (renamed from services/java/com/android/server/wm/ViewServer.java)0
-rw-r--r--services/core/java/com/android/server/wm/Watermark.java (renamed from services/java/com/android/server/wm/Watermark.java)0
-rw-r--r--services/core/java/com/android/server/wm/WindowAnimator.java (renamed from services/java/com/android/server/wm/WindowAnimator.java)98
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java (renamed from services/java/com/android/server/wm/WindowManagerService.java)749
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java (renamed from services/java/com/android/server/wm/WindowState.java)125
-rw-r--r--services/core/java/com/android/server/wm/WindowStateAnimator.java (renamed from services/java/com/android/server/wm/WindowStateAnimator.java)96
-rw-r--r--services/core/java/com/android/server/wm/WindowToken.java (renamed from services/java/com/android/server/wm/WindowToken.java)0
-rw-r--r--services/core/jni/Android.mk57
-rw-r--r--services/core/jni/com_android_server_AlarmManagerService.cpp321
-rw-r--r--services/core/jni/com_android_server_AssetAtlasService.cpp (renamed from services/jni/com_android_server_AssetAtlasService.cpp)18
-rw-r--r--services/core/jni/com_android_server_ConsumerIrService.cpp (renamed from services/jni/com_android_server_ConsumerIrService.cpp)0
-rw-r--r--services/core/jni/com_android_server_SerialService.cpp (renamed from services/jni/com_android_server_SerialService.cpp)0
-rw-r--r--services/core/jni/com_android_server_SystemServer.cpp (renamed from services/jni/com_android_server_SystemServer.cpp)0
-rw-r--r--services/core/jni/com_android_server_UsbDeviceManager.cpp (renamed from services/jni/com_android_server_UsbDeviceManager.cpp)0
-rw-r--r--services/core/jni/com_android_server_UsbHostManager.cpp (renamed from services/jni/com_android_server_UsbHostManager.cpp)14
-rw-r--r--services/core/jni/com_android_server_VibratorService.cpp (renamed from services/jni/com_android_server_VibratorService.cpp)0
-rw-r--r--services/core/jni/com_android_server_connectivity_Vpn.cpp (renamed from services/jni/com_android_server_connectivity_Vpn.cpp)0
-rw-r--r--services/core/jni/com_android_server_dreams_McuHal.cpp100
-rw-r--r--services/core/jni/com_android_server_input_InputApplicationHandle.cpp (renamed from services/jni/com_android_server_input_InputApplicationHandle.cpp)12
-rw-r--r--services/core/jni/com_android_server_input_InputApplicationHandle.h (renamed from services/jni/com_android_server_input_InputApplicationHandle.h)0
-rw-r--r--services/core/jni/com_android_server_input_InputManagerService.cpp (renamed from services/jni/com_android_server_input_InputManagerService.cpp)179
-rw-r--r--services/core/jni/com_android_server_input_InputWindowHandle.cpp (renamed from services/jni/com_android_server_input_InputWindowHandle.cpp)12
-rw-r--r--services/core/jni/com_android_server_input_InputWindowHandle.h (renamed from services/jni/com_android_server_input_InputWindowHandle.h)0
-rw-r--r--services/core/jni/com_android_server_lights_LightsService.cpp (renamed from services/jni/com_android_server_LightsService.cpp)18
-rw-r--r--services/core/jni/com_android_server_location_FlpHardwareProvider.cpp (renamed from services/jni/com_android_server_location_FlpHardwareProvider.cpp)0
-rw-r--r--services/core/jni/com_android_server_location_GpsLocationProvider.cpp (renamed from services/jni/com_android_server_location_GpsLocationProvider.cpp)57
-rw-r--r--services/core/jni/com_android_server_power_PowerManagerService.cpp (renamed from services/jni/com_android_server_power_PowerManagerService.cpp)0
-rw-r--r--services/core/jni/com_android_server_power_PowerManagerService.h (renamed from services/jni/com_android_server_power_PowerManagerService.h)0
-rw-r--r--services/core/jni/onload.cpp (renamed from services/jni/onload.cpp)3
-rw-r--r--services/devicepolicy/Android.mk12
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java (renamed from services/java/com/android/server/DevicePolicyManagerService.java)352
-rw-r--r--services/java/Android.mk18
-rw-r--r--services/java/com/android/server/AppWidgetService.java363
-rw-r--r--services/java/com/android/server/SystemServer.java612
-rw-r--r--services/java/com/android/server/display/HeadlessDisplayAdapter.java73
-rw-r--r--services/java/com/android/server/dreams/DreamManagerService.java425
-rw-r--r--services/java/com/android/server/print/PrintManagerService.java656
-rw-r--r--services/java/com/android/server/wm/DisplayContent.java523
-rw-r--r--services/java/com/android/server/wm/StackBox.java414
-rw-r--r--services/jni/Android.mk63
-rw-r--r--services/jni/com_android_server_AlarmManagerService.cpp114
-rw-r--r--services/print/Android.mk10
-rw-r--r--services/print/java/com/android/server/print/PrintManagerService.java689
-rw-r--r--services/print/java/com/android/server/print/RemotePrintService.java (renamed from services/java/com/android/server/print/RemotePrintService.java)0
-rw-r--r--services/print/java/com/android/server/print/RemotePrintSpooler.java (renamed from services/java/com/android/server/print/RemotePrintSpooler.java)0
-rw-r--r--services/print/java/com/android/server/print/UserState.java (renamed from services/java/com/android/server/print/UserState.java)0
-rw-r--r--services/tests/Android.mk3
-rw-r--r--services/tests/servicestests/src/com/android/server/EntropyMixerTest.java2
-rw-r--r--services/tests/servicestests/src/com/android/server/NetworkManagementServiceTest.java54
-rw-r--r--services/usb/Android.mk12
-rw-r--r--services/usb/java/com/android/server/usb/UsbDebuggingManager.java (renamed from services/java/com/android/server/usb/UsbDebuggingManager.java)0
-rw-r--r--services/usb/java/com/android/server/usb/UsbDeviceManager.java (renamed from services/java/com/android/server/usb/UsbDeviceManager.java)2
-rw-r--r--services/usb/java/com/android/server/usb/UsbHostManager.java (renamed from services/java/com/android/server/usb/UsbHostManager.java)4
-rw-r--r--services/usb/java/com/android/server/usb/UsbService.java (renamed from services/java/com/android/server/usb/UsbService.java)23
-rw-r--r--services/usb/java/com/android/server/usb/UsbSettingsManager.java (renamed from services/java/com/android/server/usb/UsbSettingsManager.java)169
-rw-r--r--telephony/java/android/telephony/CellSignalStrengthCdma.java4
-rw-r--r--telephony/java/com/android/internal/telephony/RILConstants.java6
-rw-r--r--test-runner/src/android/test/mock/MockPackageManager.java21
-rw-r--r--tests/DozeTest/Android.mk14
-rw-r--r--tests/DozeTest/AndroidManifest.xml35
-rwxr-xr-xtests/DozeTest/res/drawable-hdpi/ic_app.pngbin0 -> 3608 bytes
-rw-r--r--tests/DozeTest/res/drawable-mdpi/ic_app.pngbin0 -> 5198 bytes
-rw-r--r--tests/DozeTest/res/layout/dream.xml41
-rw-r--r--tests/DozeTest/res/values/strings.xml (renamed from packages/ExternalStorageProvider/res/values-af/strings.xml)19
-rw-r--r--tests/DozeTest/src/com/android/dreams/dozetest/DozeTestDream.java165
-rw-r--r--tests/TileBenchmark/Android.mk4
-rw-r--r--tools/aapt/AaptAssets.cpp45
-rw-r--r--tools/aapt/AaptAssets.h8
-rw-r--r--tools/aapt/Android.mk7
-rw-r--r--tools/aapt/Bundle.h6
-rw-r--r--tools/aapt/Command.cpp44
-rw-r--r--tools/aapt/Images.cpp48
-rw-r--r--tools/aapt/Main.cpp2
-rw-r--r--tools/aapt/Resource.cpp44
-rw-r--r--tools/aapt/ResourceTable.cpp18
-rw-r--r--tools/aidl/Android.mk4
-rw-r--r--tools/aidl/aidl.cpp15
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/AvoidXfermode_Delegate.java2
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/BitmapShader_Delegate.java4
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/Bitmap_Delegate.java50
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/BlurMaskFilter_Delegate.java2
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java157
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/ColorFilter_Delegate.java4
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/ColorMatrixColorFilter_Delegate.java4
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/ComposePathEffect_Delegate.java2
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/ComposeShader_Delegate.java14
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/CornerPathEffect_Delegate.java2
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/DashPathEffect_Delegate.java2
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/DiscretePathEffect_Delegate.java2
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/DrawFilter_Delegate.java4
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/EmbossMaskFilter_Delegate.java2
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/LayerRasterizer_Delegate.java4
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/LightingColorFilter_Delegate.java4
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/LinearGradient_Delegate.java12
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/MaskFilter_Delegate.java4
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/Matrix_Delegate.java84
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/NinePatch_Delegate.java18
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/PaintFlagsDrawFilter_Delegate.java2
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/Paint_Delegate.java72
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/PathDashPathEffect_Delegate.java2
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/PathEffect_Delegate.java4
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/Path_Delegate.java82
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/PixelXorXfermode_Delegate.java2
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/PorterDuffColorFilter_Delegate.java4
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/PorterDuffXfermode_Delegate.java2
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/RadialGradient_Delegate.java8
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/Rasterizer_Delegate.java4
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/Region_Delegate.java32
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/Shader_Delegate.java8
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/SumPathEffect_Delegate.java2
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/SweepGradient_Delegate.java8
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/Typeface_Delegate.java16
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/Xfermode_Delegate.java4
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/DelegateManager.java8
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/SparseWeakArray.java51
-rw-r--r--wifi/java/android/net/wifi/WifiStateMachine.java25
1361 files changed, 28734 insertions, 51551 deletions
diff --git a/Android.mk b/Android.mk
index 9f8afb9e0a08..7cbc3396186c 100644
--- a/Android.mk
+++ b/Android.mk
@@ -59,6 +59,8 @@ LOCAL_SRC_FILES += \
core/java/android/accounts/IAccountManagerResponse.aidl \
core/java/android/accounts/IAccountAuthenticator.aidl \
core/java/android/accounts/IAccountAuthenticatorResponse.aidl \
+ core/java/android/app/IActivityContainer.aidl \
+ core/java/android/app/IActivityContainerCallback.aidl \
core/java/android/app/IActivityController.aidl \
core/java/android/app/IActivityPendingResult.aidl \
core/java/android/app/IAlarmManager.aidl \
@@ -174,6 +176,7 @@ LOCAL_SRC_FILES += \
core/java/android/print/IWriteResultCallback.aidl \
core/java/android/printservice/IPrintService.aidl \
core/java/android/printservice/IPrintServiceClient.aidl \
+ core/java/android/service/dreams/IDozeHardware.aidl \
core/java/android/service/dreams/IDreamManager.aidl \
core/java/android/service/dreams/IDreamService.aidl \
core/java/android/service/wallpaper/IWallpaperConnection.aidl \
@@ -462,8 +465,8 @@ html_dirs := \
# Common sources for doc check and api check
common_src_files := \
$(call find-other-html-files, $(html_dirs)) \
- $(addprefix ../../libcore/, $(call libcore_to_document, $(LOCAL_PATH)/../../libcore)) \
- $(addprefix ../../external/junit/, $(call junit_to_document, $(LOCAL_PATH)/../../external/junit))
+ $(addprefix ../../libcore/, $(libcore_to_document)) \
+ $(addprefix ../../external/junit/, $(junit_to_document))
# These are relative to frameworks/base
framework_docs_LOCAL_SRC_FILES := \
diff --git a/CleanSpec.mk b/CleanSpec.mk
index cfa8be9a13c7..ef3f4aea190a 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -184,7 +184,7 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/media/audio/)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/media/audio/effects/)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/framework-res_intermediates)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework-base_intermediates/src/core/java/android/print/IPrintClient.*)
-
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/services_intermediates)
# ************************************************
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
# ************************************************
diff --git a/api/current.txt b/api/current.txt
index 8e69592ecabc..56d6e49337b7 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -311,6 +311,7 @@ package android {
field public static final int backgroundSplit = 16843659; // 0x101038b
field public static final int backgroundStacked = 16843658; // 0x101038a
field public static final int backupAgent = 16843391; // 0x101027f
+ field public static final int banner = 16843762; // 0x10103f2
field public static final int baseline = 16843548; // 0x101031c
field public static final int baselineAlignBottom = 16843042; // 0x1010122
field public static final int baselineAligned = 16843046; // 0x1010126
@@ -2850,6 +2851,7 @@ package android.app {
method public void onUserInteraction();
method protected void onUserLeaveHint();
method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
+ method public void onWindowDismissed();
method public void onWindowFocusChanged(boolean);
method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
method public void openContextMenu(android.view.View);
@@ -3366,6 +3368,7 @@ package android.app {
method public boolean onTouchEvent(android.view.MotionEvent);
method public boolean onTrackballEvent(android.view.MotionEvent);
method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
+ method public void onWindowDismissed();
method public void onWindowFocusChanged(boolean);
method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
method public void openContextMenu(android.view.View);
@@ -3941,6 +3944,7 @@ package android.app {
field public static final int FLAG_FOREGROUND_SERVICE = 64; // 0x40
field public static final deprecated int FLAG_HIGH_PRIORITY = 128; // 0x80
field public static final int FLAG_INSISTENT = 4; // 0x4
+ field public static final int FLAG_LOCAL_ONLY = 256; // 0x100
field public static final int FLAG_NO_CLEAR = 32; // 0x20
field public static final int FLAG_ONGOING_EVENT = 2; // 0x2
field public static final int FLAG_ONLY_ALERT_ONCE = 8; // 0x8
@@ -4007,7 +4011,9 @@ package android.app {
public static class Notification.Builder {
ctor public Notification.Builder(android.content.Context);
method public android.app.Notification.Builder addAction(int, java.lang.CharSequence, android.app.PendingIntent);
+ method public android.app.Notification.Builder addExtras(android.os.Bundle);
method public android.app.Notification build();
+ method public android.os.Bundle getExtras();
method public deprecated android.app.Notification getNotification();
method public android.app.Notification.Builder setAutoCancel(boolean);
method public android.app.Notification.Builder setContent(android.widget.RemoteViews);
@@ -4021,6 +4027,7 @@ package android.app {
method public android.app.Notification.Builder setFullScreenIntent(android.app.PendingIntent, boolean);
method public android.app.Notification.Builder setLargeIcon(android.graphics.Bitmap);
method public android.app.Notification.Builder setLights(int, int, int);
+ method public android.app.Notification.Builder setLocalOnly(boolean);
method public android.app.Notification.Builder setNumber(int);
method public android.app.Notification.Builder setOngoing(boolean);
method public android.app.Notification.Builder setOnlyAlertOnce(boolean);
@@ -6442,6 +6449,7 @@ package android.content {
field public static final java.lang.String CATEGORY_HOME = "android.intent.category.HOME";
field public static final java.lang.String CATEGORY_INFO = "android.intent.category.INFO";
field public static final java.lang.String CATEGORY_LAUNCHER = "android.intent.category.LAUNCHER";
+ field public static final java.lang.String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
field public static final java.lang.String CATEGORY_LE_DESK_DOCK = "android.intent.category.LE_DESK_DOCK";
field public static final java.lang.String CATEGORY_MONKEY = "android.intent.category.MONKEY";
field public static final java.lang.String CATEGORY_OPENABLE = "android.intent.category.OPENABLE";
@@ -7072,6 +7080,7 @@ package android.content.pm {
ctor public ComponentInfo();
ctor public ComponentInfo(android.content.pm.ComponentInfo);
ctor protected ComponentInfo(android.os.Parcel);
+ method public final int getBannerResource();
method public final int getIconResource();
method public final int getLogoResource();
method public boolean isEnabled();
@@ -7175,11 +7184,13 @@ package android.content.pm {
ctor protected PackageItemInfo(android.os.Parcel);
method protected void dumpBack(android.util.Printer, java.lang.String);
method protected void dumpFront(android.util.Printer, java.lang.String);
+ method public android.graphics.drawable.Drawable loadBanner(android.content.pm.PackageManager);
method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
method public java.lang.CharSequence loadLabel(android.content.pm.PackageManager);
method public android.graphics.drawable.Drawable loadLogo(android.content.pm.PackageManager);
method public android.content.res.XmlResourceParser loadXmlMetaData(android.content.pm.PackageManager, java.lang.String);
method public void writeToParcel(android.os.Parcel, int);
+ field public int banner;
field public int icon;
field public int labelRes;
field public int logo;
@@ -7207,12 +7218,16 @@ package android.content.pm {
method public abstract void clearPackagePreferredActivities(java.lang.String);
method public abstract java.lang.String[] currentToCanonicalPackageNames(java.lang.String[]);
method public abstract void extendVerificationTimeout(int, int, long);
+ method public abstract android.graphics.drawable.Drawable getActivityBanner(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public abstract android.graphics.drawable.Drawable getActivityBanner(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
method public abstract android.graphics.drawable.Drawable getActivityIcon(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
method public abstract android.graphics.drawable.Drawable getActivityIcon(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
method public abstract android.content.pm.ActivityInfo getActivityInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
method public abstract android.graphics.drawable.Drawable getActivityLogo(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
method public abstract android.graphics.drawable.Drawable getActivityLogo(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
method public abstract java.util.List<android.content.pm.PermissionGroupInfo> getAllPermissionGroups(int);
+ method public abstract android.graphics.drawable.Drawable getApplicationBanner(android.content.pm.ApplicationInfo);
+ method public abstract android.graphics.drawable.Drawable getApplicationBanner(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
method public abstract int getApplicationEnabledSetting(java.lang.String);
method public abstract android.graphics.drawable.Drawable getApplicationIcon(android.content.pm.ApplicationInfo);
method public abstract android.graphics.drawable.Drawable getApplicationIcon(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
@@ -7277,6 +7292,7 @@ package android.content.pm {
field public static final java.lang.String EXTRA_VERIFICATION_RESULT = "android.content.pm.extra.VERIFICATION_RESULT";
field public static final java.lang.String FEATURE_APP_WIDGETS = "android.software.app_widgets";
field public static final java.lang.String FEATURE_AUDIO_LOW_LATENCY = "android.hardware.audio.low_latency";
+ field public static final java.lang.String FEATURE_BACKUP = "android.software.backup";
field public static final java.lang.String FEATURE_BLUETOOTH = "android.hardware.bluetooth";
field public static final java.lang.String FEATURE_BLUETOOTH_LE = "android.hardware.bluetooth_le";
field public static final java.lang.String FEATURE_CAMERA = "android.hardware.camera";
@@ -7291,6 +7307,7 @@ package android.content.pm {
field public static final java.lang.String FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND = "android.hardware.faketouch.multitouch.jazzhand";
field public static final java.lang.String FEATURE_HOME_SCREEN = "android.software.home_screen";
field public static final java.lang.String FEATURE_INPUT_METHODS = "android.software.input_methods";
+ field public static final java.lang.String FEATURE_LEANBACK = "android.software.leanback";
field public static final java.lang.String FEATURE_LIVE_WALLPAPER = "android.software.live_wallpaper";
field public static final java.lang.String FEATURE_LOCATION = "android.hardware.location";
field public static final java.lang.String FEATURE_LOCATION_GPS = "android.hardware.location.gps";
@@ -7298,6 +7315,7 @@ package android.content.pm {
field public static final java.lang.String FEATURE_MICROPHONE = "android.hardware.microphone";
field public static final java.lang.String FEATURE_NFC = "android.hardware.nfc";
field public static final java.lang.String FEATURE_NFC_HOST_CARD_EMULATION = "android.hardware.nfc.hce";
+ field public static final java.lang.String FEATURE_PRINTING = "android.software.print";
field public static final java.lang.String FEATURE_SCREEN_LANDSCAPE = "android.hardware.screen.landscape";
field public static final java.lang.String FEATURE_SCREEN_PORTRAIT = "android.hardware.screen.portrait";
field public static final java.lang.String FEATURE_SENSOR_ACCELEROMETER = "android.hardware.sensor.accelerometer";
@@ -7313,13 +7331,14 @@ package android.content.pm {
field public static final java.lang.String FEATURE_TELEPHONY = "android.hardware.telephony";
field public static final java.lang.String FEATURE_TELEPHONY_CDMA = "android.hardware.telephony.cdma";
field public static final java.lang.String FEATURE_TELEPHONY_GSM = "android.hardware.telephony.gsm";
- field public static final java.lang.String FEATURE_TELEVISION = "android.hardware.type.television";
+ field public static final deprecated java.lang.String FEATURE_TELEVISION = "android.hardware.type.television";
field public static final java.lang.String FEATURE_TOUCHSCREEN = "android.hardware.touchscreen";
field public static final java.lang.String FEATURE_TOUCHSCREEN_MULTITOUCH = "android.hardware.touchscreen.multitouch";
field public static final java.lang.String FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT = "android.hardware.touchscreen.multitouch.distinct";
field public static final java.lang.String FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND = "android.hardware.touchscreen.multitouch.jazzhand";
field public static final java.lang.String FEATURE_USB_ACCESSORY = "android.hardware.usb.accessory";
field public static final java.lang.String FEATURE_USB_HOST = "android.hardware.usb.host";
+ field public static final java.lang.String FEATURE_WATCH = "android.hardware.type.watch";
field public static final java.lang.String FEATURE_WIFI = "android.hardware.wifi";
field public static final java.lang.String FEATURE_WIFI_DIRECT = "android.hardware.wifi.direct";
field public static final int GET_ACTIVITIES = 1; // 0x1
@@ -10870,6 +10889,7 @@ package android.hardware.display {
method public void registerDisplayListener(android.hardware.display.DisplayManager.DisplayListener, android.os.Handler);
method public void unregisterDisplayListener(android.hardware.display.DisplayManager.DisplayListener);
field public static final java.lang.String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION";
+ field public static final int VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY = 8; // 0x8
field public static final int VIRTUAL_DISPLAY_FLAG_PRESENTATION = 2; // 0x2
field public static final int VIRTUAL_DISPLAY_FLAG_PUBLIC = 1; // 0x1
field public static final int VIRTUAL_DISPLAY_FLAG_SECURE = 4; // 0x4
@@ -11027,7 +11047,10 @@ package android.hardware.usb {
method public int getDeviceSubclass();
method public android.hardware.usb.UsbInterface getInterface(int);
method public int getInterfaceCount();
+ method public java.lang.String getManufacturerName();
method public int getProductId();
+ method public java.lang.String getProductName();
+ method public java.lang.String getSerialNumber();
method public int getVendorId();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator CREATOR;
@@ -17648,6 +17671,7 @@ package android.os {
method public static void startMethodTracing(java.lang.String);
method public static void startMethodTracing(java.lang.String, int);
method public static void startMethodTracing(java.lang.String, int, int);
+ method public static void startMethodTracingSampling(java.lang.String, int, int);
method public static void startNativeTracing();
method public static deprecated void stopAllocCounting();
method public static void stopMethodTracing();
@@ -21790,7 +21814,7 @@ package android.renderscript {
}
public class BaseObj {
- method public synchronized void destroy();
+ method public void destroy();
method public java.lang.String getName();
method public void setName(java.lang.String);
}
@@ -22691,6 +22715,7 @@ package android.service.dreams {
method public boolean onPreparePanel(int, android.view.View, android.view.Menu);
method public boolean onSearchRequested();
method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
+ method public void onWindowDismissed();
method public void onWindowFocusChanged(boolean);
method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
method public void setContentView(int);
@@ -24053,12 +24078,16 @@ package android.test.mock {
method public void clearPackagePreferredActivities(java.lang.String);
method public java.lang.String[] currentToCanonicalPackageNames(java.lang.String[]);
method public void extendVerificationTimeout(int, int, long);
+ method public android.graphics.drawable.Drawable getActivityBanner(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public android.graphics.drawable.Drawable getActivityBanner(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
method public android.graphics.drawable.Drawable getActivityIcon(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
method public android.graphics.drawable.Drawable getActivityIcon(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
method public android.content.pm.ActivityInfo getActivityInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
method public android.graphics.drawable.Drawable getActivityLogo(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
method public android.graphics.drawable.Drawable getActivityLogo(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
method public java.util.List<android.content.pm.PermissionGroupInfo> getAllPermissionGroups(int);
+ method public android.graphics.drawable.Drawable getApplicationBanner(android.content.pm.ApplicationInfo);
+ method public android.graphics.drawable.Drawable getApplicationBanner(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
method public int getApplicationEnabledSetting(java.lang.String);
method public android.graphics.drawable.Drawable getApplicationIcon(android.content.pm.ApplicationInfo);
method public android.graphics.drawable.Drawable getApplicationIcon(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
@@ -26171,7 +26200,6 @@ package android.util {
method public final java.lang.CharSequence coerceToString();
method public static final java.lang.String coerceToString(int, int);
method public static float complexToDimension(int, android.util.DisplayMetrics);
- method public static float complexToDimensionNoisy(int, android.util.DisplayMetrics);
method public static int complexToDimensionPixelOffset(int, android.util.DisplayMetrics);
method public static int complexToDimensionPixelSize(int, android.util.DisplayMetrics);
method public static float complexToFloat(int);
@@ -26889,6 +26917,7 @@ package android.view {
field public static final int KEYCODE_SHIFT_LEFT = 59; // 0x3b
field public static final int KEYCODE_SHIFT_RIGHT = 60; // 0x3c
field public static final int KEYCODE_SLASH = 76; // 0x4c
+ field public static final int KEYCODE_SLEEP = 223; // 0xdf
field public static final int KEYCODE_SOFT_LEFT = 1; // 0x1
field public static final int KEYCODE_SOFT_RIGHT = 2; // 0x2
field public static final int KEYCODE_SPACE = 62; // 0x3e
@@ -26910,6 +26939,7 @@ package android.view {
field public static final int KEYCODE_VOLUME_MUTE = 164; // 0xa4
field public static final int KEYCODE_VOLUME_UP = 24; // 0x18
field public static final int KEYCODE_W = 51; // 0x33
+ field public static final int KEYCODE_WAKEUP = 224; // 0xe0
field public static final int KEYCODE_WINDOW = 171; // 0xab
field public static final int KEYCODE_X = 52; // 0x34
field public static final int KEYCODE_Y = 53; // 0x35
@@ -28639,6 +28669,7 @@ package android.view {
field public static final int FEATURE_OPTIONS_PANEL = 0; // 0x0
field public static final int FEATURE_PROGRESS = 2; // 0x2
field public static final int FEATURE_RIGHT_ICON = 4; // 0x4
+ field public static final int FEATURE_SWIPE_TO_DISMISS = 11; // 0xb
field public static final int ID_ANDROID_CONTENT = 16908290; // 0x1020002
field public static final int PROGRESS_END = 10000; // 0x2710
field public static final int PROGRESS_INDETERMINATE_OFF = -4; // 0xfffffffc
@@ -28670,6 +28701,7 @@ package android.view {
method public abstract boolean onPreparePanel(int, android.view.View, android.view.Menu);
method public abstract boolean onSearchRequested();
method public abstract void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
+ method public abstract void onWindowDismissed();
method public abstract void onWindowFocusChanged(boolean);
method public abstract android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
}
@@ -42716,11 +42748,11 @@ package java.util.concurrent {
}
public class ConcurrentHashMap extends java.util.AbstractMap implements java.util.concurrent.ConcurrentMap java.io.Serializable {
- ctor public ConcurrentHashMap(int, float, int);
- ctor public ConcurrentHashMap(int, float);
- ctor public ConcurrentHashMap(int);
ctor public ConcurrentHashMap();
+ ctor public ConcurrentHashMap(int);
ctor public ConcurrentHashMap(java.util.Map<? extends K, ? extends V>);
+ ctor public ConcurrentHashMap(int, float);
+ ctor public ConcurrentHashMap(int, float, int);
method public boolean contains(java.lang.Object);
method public java.util.Enumeration<V> elements();
method public java.util.Set<java.util.Map.Entry<K, V>> entrySet();
@@ -44160,12 +44192,12 @@ package java.util.regex {
public final class Matcher implements java.util.regex.MatchResult {
method public java.util.regex.Matcher appendReplacement(java.lang.StringBuffer, java.lang.String);
method public java.lang.StringBuffer appendTail(java.lang.StringBuffer);
- method public int end(int);
method public int end();
+ method public int end(int);
method public boolean find(int);
method public boolean find();
- method public java.lang.String group(int);
method public java.lang.String group();
+ method public java.lang.String group(int);
method public int groupCount();
method public boolean hasAnchoringBounds();
method public boolean hasTransparentBounds();
@@ -44182,8 +44214,8 @@ package java.util.regex {
method public boolean requireEnd();
method public java.util.regex.Matcher reset();
method public java.util.regex.Matcher reset(java.lang.CharSequence);
- method public int start(int) throws java.lang.IllegalStateException;
method public int start();
+ method public int start(int) throws java.lang.IllegalStateException;
method public java.util.regex.MatchResult toMatchResult();
method public java.util.regex.Matcher useAnchoringBounds(boolean);
method public java.util.regex.Matcher usePattern(java.util.regex.Pattern);
@@ -50924,7 +50956,7 @@ package org.json {
method public java.lang.String getString(java.lang.String) throws org.json.JSONException;
method public boolean has(java.lang.String);
method public boolean isNull(java.lang.String);
- method public java.util.Iterator keys();
+ method public java.util.Iterator<java.lang.String> keys();
method public int length();
method public org.json.JSONArray names();
method public static java.lang.String numberToString(java.lang.Number) throws org.json.JSONException;
diff --git a/cmds/am/src/com/android/commands/am/Am.java b/cmds/am/src/com/android/commands/am/Am.java
index 0344d261fd35..89e15d25dd62 100644
--- a/cmds/am/src/com/android/commands/am/Am.java
+++ b/cmds/am/src/com/android/commands/am/Am.java
@@ -19,8 +19,9 @@
package com.android.commands.am;
import android.app.ActivityManager;
-import android.app.ActivityManager.StackBoxInfo;
+import android.app.ActivityManager.StackInfo;
import android.app.ActivityManagerNative;
+import android.app.IActivityContainer;
import android.app.IActivityController;
import android.app.IActivityManager;
import android.app.IInstrumentationWatcher;
@@ -31,9 +32,11 @@ import android.content.IIntentReceiver;
import android.content.Intent;
import android.content.pm.IPackageManager;
import android.content.pm.ResolveInfo;
+import android.graphics.Rect;
import android.net.Uri;
import android.os.Binder;
import android.os.Bundle;
+import android.os.IBinder;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.os.ServiceManager;
@@ -106,11 +109,11 @@ public class Am extends BaseCommand {
" am to-intent-uri [INTENT]\n" +
" am switch-user <USER_ID>\n" +
" am stop-user <USER_ID>\n" +
- " am stack create <TASK_ID> <RELATIVE_STACK_BOX_ID> <POSITION> <WEIGHT>\n" +
+ " am stack start <DISPLAY_ID> <INTENT>\n" +
" am stack movetask <TASK_ID> <STACK_ID> [true|false]\n" +
- " am stack resize <STACK_ID> <WEIGHT>\n" +
- " am stack boxes\n" +
- " am stack box <STACK_BOX_ID>\n" +
+ " am stack resize <STACK_ID> <LEFT,TOP,RIGHT,BOTTOM>\n" +
+ " am stack list\n" +
+ " am stack info <STACK_ID>\n" +
"\n" +
"am start: start an Activity. Options are:\n" +
" -D: enable debugging\n" +
@@ -204,24 +207,16 @@ public class Am extends BaseCommand {
"am stop-user: stop execution of USER_ID, not allowing it to run any\n" +
" code until a later explicit switch to it.\n" +
"\n" +
- "am stack create: create a new stack relative to an existing one.\n" +
- " <TASK_ID>: the task to populate the new stack with. Must exist.\n" +
- " <RELATIVE_STACK_BOX_ID>: existing stack box's id.\n" +
- " <POSITION>: 0: before <RELATIVE_STACK_BOX_ID>, per RTL/LTR configuration,\n" +
- " 1: after <RELATIVE_STACK_BOX_ID>, per RTL/LTR configuration,\n" +
- " 2: to left of <RELATIVE_STACK_BOX_ID>,\n" +
- " 3: to right of <RELATIVE_STACK_BOX_ID>," +
- " 4: above <RELATIVE_STACK_BOX_ID>, 5: below <RELATIVE_STACK_BOX_ID>\n" +
- " <WEIGHT>: float between 0.2 and 0.8 inclusive.\n" +
+ "am stack start: start a new activity on <DISPLAY_ID> using <INTENT>.\n" +
"\n" +
"am stack movetask: move <TASK_ID> from its current stack to the top (true) or" +
" bottom (false) of <STACK_ID>.\n" +
"\n" +
- "am stack resize: change <STACK_ID> relative size to new <WEIGHT>.\n" +
+ "am stack resize: change <STACK_ID> size and position to <LEFT,TOP,RIGHT,BOTTOM>.\n" +
"\n" +
- "am stack boxes: list the hierarchy of stack boxes and their contents.\n" +
+ "am stack list: list all of the activity stacks and their sizes.\n" +
"\n" +
- "am stack box: list the hierarchy of stack boxes rooted at <STACK_BOX_ID>.\n" +
+ "am stack info: display the information about activity stack <STACK_ID>.\n" +
"\n" +
"<INTENT> specifications include these flags and arguments:\n" +
" [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]\n" +
@@ -1546,35 +1541,32 @@ public class Am extends BaseCommand {
private void runStack() throws Exception {
String op = nextArgRequired();
- if (op.equals("create")) {
- runStackCreate();
+ if (op.equals("start")) {
+ runStackStart();
} else if (op.equals("movetask")) {
runStackMoveTask();
} else if (op.equals("resize")) {
- runStackBoxResize();
- } else if (op.equals("boxes")) {
- runStackBoxes();
- } else if (op.equals("box")) {
- runStackBoxInfo();
+ runStackResize();
+ } else if (op.equals("list")) {
+ runStackList();
+ } else if (op.equals("info")) {
+ runStackInfo();
} else {
showError("Error: unknown command '" + op + "'");
return;
}
}
- private void runStackCreate() throws Exception {
- String taskIdStr = nextArgRequired();
- int taskId = Integer.valueOf(taskIdStr);
- String relativeToStr = nextArgRequired();
- int relativeTo = Integer.valueOf(relativeToStr);
- String positionStr = nextArgRequired();
- int position = Integer.valueOf(positionStr);
- String weightStr = nextArgRequired();
- float weight = Float.valueOf(weightStr);
+ private void runStackStart() throws Exception {
+ String displayIdStr = nextArgRequired();
+ int displayId = Integer.valueOf(displayIdStr);
+ Intent intent = makeIntent(UserHandle.USER_CURRENT);
try {
- int stackId = mAm.createStack(taskId, relativeTo, position, weight);
- System.out.println("createStack returned new stackId=" + stackId + "\n\n");
+ IBinder homeActivityToken = mAm.getHomeActivityToken();
+ IActivityContainer container = mAm.createActivityContainer(homeActivityToken, null);
+ container.attachToDisplay(displayId);
+ container.startActivity(intent);
} catch (RemoteException e) {
}
}
@@ -1601,34 +1593,40 @@ public class Am extends BaseCommand {
}
}
- private void runStackBoxResize() throws Exception {
- String stackBoxIdStr = nextArgRequired();
- int stackBoxId = Integer.valueOf(stackBoxIdStr);
- String weightStr = nextArgRequired();
- float weight = Float.valueOf(weightStr);
+ private void runStackResize() throws Exception {
+ String stackIdStr = nextArgRequired();
+ int stackId = Integer.valueOf(stackIdStr);
+ String leftStr = nextArgRequired();
+ int left = Integer.valueOf(leftStr);
+ String topStr = nextArgRequired();
+ int top = Integer.valueOf(topStr);
+ String rightStr = nextArgRequired();
+ int right = Integer.valueOf(rightStr);
+ String bottomStr = nextArgRequired();
+ int bottom = Integer.valueOf(bottomStr);
try {
- mAm.resizeStackBox(stackBoxId, weight);
+ mAm.resizeStack(stackId, new Rect(left, top, right, bottom));
} catch (RemoteException e) {
}
}
- private void runStackBoxes() throws Exception {
+ private void runStackList() throws Exception {
try {
- List<StackBoxInfo> stackBoxes = mAm.getStackBoxes();
- for (StackBoxInfo info : stackBoxes) {
+ List<StackInfo> stacks = mAm.getAllStackInfos();
+ for (StackInfo info : stacks) {
System.out.println(info);
}
} catch (RemoteException e) {
}
}
- private void runStackBoxInfo() throws Exception {
+ private void runStackInfo() throws Exception {
try {
- String stackBoxIdStr = nextArgRequired();
- int stackBoxId = Integer.valueOf(stackBoxIdStr);
- StackBoxInfo stackBoxInfo = mAm.getStackBoxInfo(stackBoxId);
- System.out.println(stackBoxInfo);
+ String stackIdStr = nextArgRequired();
+ int stackId = Integer.valueOf(stackIdStr);
+ StackInfo info = mAm.getStackInfo(stackId);
+ System.out.println(info);
} catch (RemoteException e) {
}
}
diff --git a/cmds/app_process/app_main.cpp b/cmds/app_process/app_main.cpp
index 28752a5315ad..8d2b739fc301 100644
--- a/cmds/app_process/app_main.cpp
+++ b/cmds/app_process/app_main.cpp
@@ -7,7 +7,6 @@
#define LOG_TAG "appproc"
-#include <cutils/properties.h>
#include <binder/IPCThreadState.h>
#include <binder/ProcessState.h>
#include <utils/Log.h>
@@ -15,7 +14,6 @@
#include <cutils/memory.h>
#include <cutils/trace.h>
#include <android_runtime/AndroidRuntime.h>
-#include <sys/personality.h>
#include <stdlib.h>
#include <stdio.h>
@@ -137,33 +135,6 @@ static void setArgv0(const char *argv0, const char *newArgv0)
int main(int argc, char* const argv[])
{
-#ifdef __arm__
- /*
- * b/7188322 - Temporarily revert to the compat memory layout
- * to avoid breaking third party apps.
- *
- * THIS WILL GO AWAY IN A FUTURE ANDROID RELEASE.
- *
- * http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=7dbaa466
- * changes the kernel mapping from bottom up to top-down.
- * This breaks some programs which improperly embed
- * an out of date copy of Android's linker.
- */
- char value[PROPERTY_VALUE_MAX];
- property_get("ro.kernel.qemu", value, "");
- bool is_qemu = (strcmp(value, "1") == 0);
- if ((getenv("NO_ADDR_COMPAT_LAYOUT_FIXUP") == NULL) && !is_qemu) {
- int current = personality(0xFFFFFFFF);
- if ((current & ADDR_COMPAT_LAYOUT) == 0) {
- personality(current | ADDR_COMPAT_LAYOUT);
- setenv("NO_ADDR_COMPAT_LAYOUT_FIXUP", "1", 1);
- execv("/system/bin/app_process", argv);
- return -1;
- }
- }
- unsetenv("NO_ADDR_COMPAT_LAYOUT_FIXUP");
-#endif
-
// These are global variables in ProcessState.cpp
mArgC = argc;
mArgV = argv;
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp
index ad4e4c876882..1a2ab81badc3 100644
--- a/cmds/bootanimation/BootAnimation.cpp
+++ b/cmds/bootanimation/BootAnimation.cpp
@@ -52,7 +52,6 @@
#include "BootAnimation.h"
-#define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"
#define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip"
#define EXIT_PROP_NAME "service.bootanim.exit"
@@ -63,14 +62,19 @@ extern "C" int clock_nanosleep(clockid_t clock_id, int flags,
namespace android {
+static const int ANIM_ENTRY_NAME_MAX = 256;
+
// ---------------------------------------------------------------------------
-BootAnimation::BootAnimation() : Thread(false)
+BootAnimation::BootAnimation() : Thread(false), mZip(NULL)
{
mSession = new SurfaceComposerClient();
}
BootAnimation::~BootAnimation() {
+ if (mZip != NULL) {
+ delete mZip;
+ }
}
void BootAnimation::onFirstRef() {
@@ -86,7 +90,7 @@ sp<SurfaceComposerClient> BootAnimation::session() const {
}
-void BootAnimation::binderDied(const wp<IBinder>& who)
+void BootAnimation::binderDied(const wp<IBinder>&)
{
// woah, surfaceflinger died!
ALOGD("SurfaceFlinger died, exiting...");
@@ -159,8 +163,8 @@ status_t BootAnimation::initTexture(void* buffer, size_t len)
SkBitmap bitmap;
SkMemoryStream stream(buffer, len);
SkImageDecoder* codec = SkImageDecoder::Factory(&stream);
- codec->setDitherImage(false);
if (codec) {
+ codec->setDitherImage(false);
codec->decode(&stream, &bitmap,
SkBitmap::kARGB_8888_Config,
SkImageDecoder::kDecodePixels_Mode);
@@ -268,25 +272,21 @@ status_t BootAnimation::readyToRun() {
mFlingerSurfaceControl = control;
mFlingerSurface = s;
- mAndroidAnimation = true;
-
- // If the device has encryption turned on or is in process
+ // If the device has encryption turned on or is in process
// of being encrypted we show the encrypted boot animation.
char decrypt[PROPERTY_VALUE_MAX];
property_get("vold.decrypt", decrypt, "");
bool encryptedAnimation = atoi(decrypt) != 0 || !strcmp("trigger_restart_min_framework", decrypt);
+ ZipFileRO* zipFile = NULL;
if ((encryptedAnimation &&
(access(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE, R_OK) == 0) &&
- (mZip.open(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE) == NO_ERROR)) ||
-
- ((access(USER_BOOTANIMATION_FILE, R_OK) == 0) &&
- (mZip.open(USER_BOOTANIMATION_FILE) == NO_ERROR)) ||
+ ((zipFile = ZipFileRO::open(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE)) != NULL)) ||
((access(SYSTEM_BOOTANIMATION_FILE, R_OK) == 0) &&
- (mZip.open(SYSTEM_BOOTANIMATION_FILE) == NO_ERROR))) {
- mAndroidAnimation = false;
+ ((zipFile = ZipFileRO::open(SYSTEM_BOOTANIMATION_FILE)) != NULL))) {
+ mZip = zipFile;
}
return NO_ERROR;
@@ -295,15 +295,14 @@ status_t BootAnimation::readyToRun() {
bool BootAnimation::threadLoop()
{
bool r;
- if (mAndroidAnimation) {
+ // We have no bootanimation file, so we use the stock android logo
+ // animation.
+ if (mZip == NULL) {
r = android();
} else {
r = movie();
}
- // No need to force exit anymore
- property_set(EXIT_PROP_NAME, "0");
-
eglMakeCurrent(mDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
eglDestroyContext(mDisplay, mContext);
eglDestroySurface(mDisplay, mSurface);
@@ -392,11 +391,14 @@ void BootAnimation::checkExit() {
bool BootAnimation::movie()
{
- ZipFileRO& zip(mZip);
+ ZipEntryRO desc = mZip->findEntryByName("desc.txt");
+ ALOGE_IF(!desc, "couldn't find desc.txt");
+ if (!desc) {
+ return false;
+ }
- size_t numEntries = zip.getNumEntries();
- ZipEntryRO desc = zip.findEntryByName("desc.txt");
- FileMap* descMap = zip.createEntryFileMap(desc);
+ FileMap* descMap = mZip->createEntryFileMap(desc);
+ mZip->releaseEntry(desc);
ALOGE_IF(!descMap, "descMap is null");
if (!descMap) {
return false;
@@ -415,7 +417,7 @@ bool BootAnimation::movie()
String8 line(s, endl - s);
const char* l = line.string();
int fps, width, height, count, pause;
- char path[256];
+ char path[ANIM_ENTRY_NAME_MAX];
char pathType;
if (sscanf(l, "%d %d %d", &width, &height, &fps) == 3) {
//LOGD("> w=%d, h=%d, fps=%d", width, height, fps);
@@ -438,28 +440,37 @@ bool BootAnimation::movie()
// read all the data structures
const size_t pcount = animation.parts.size();
- for (size_t i=0 ; i<numEntries ; i++) {
- char name[256];
- ZipEntryRO entry = zip.findEntryByIndex(i);
- if (zip.getEntryFileName(entry, name, 256) == 0) {
- const String8 entryName(name);
- const String8 path(entryName.getPathDir());
- const String8 leaf(entryName.getPathLeaf());
- if (leaf.size() > 0) {
- for (int j=0 ; j<pcount ; j++) {
- if (path == animation.parts[j].path) {
- int method;
- // supports only stored png files
- if (zip.getEntryInfo(entry, &method, 0, 0, 0, 0, 0)) {
- if (method == ZipFileRO::kCompressStored) {
- FileMap* map = zip.createEntryFileMap(entry);
- if (map) {
- Animation::Frame frame;
- frame.name = leaf;
- frame.map = map;
- Animation::Part& part(animation.parts.editItemAt(j));
- part.frames.add(frame);
- }
+ void *cookie = NULL;
+ if (!mZip->startIteration(&cookie)) {
+ return false;
+ }
+
+ ZipEntryRO entry;
+ char name[ANIM_ENTRY_NAME_MAX];
+ while ((entry = mZip->nextEntry(cookie)) != NULL) {
+ const int foundEntryName = mZip->getEntryFileName(entry, name, ANIM_ENTRY_NAME_MAX);
+ if (foundEntryName > ANIM_ENTRY_NAME_MAX || foundEntryName == -1) {
+ ALOGE("Error fetching entry file name");
+ continue;
+ }
+
+ const String8 entryName(name);
+ const String8 path(entryName.getPathDir());
+ const String8 leaf(entryName.getPathLeaf());
+ if (leaf.size() > 0) {
+ for (size_t j=0 ; j<pcount ; j++) {
+ if (path == animation.parts[j].path) {
+ int method;
+ // supports only stored png files
+ if (mZip->getEntryInfo(entry, &method, NULL, NULL, NULL, NULL, NULL)) {
+ if (method == ZipFileRO::kCompressStored) {
+ FileMap* map = mZip->createEntryFileMap(entry);
+ if (map) {
+ Animation::Frame frame;
+ frame.name = leaf;
+ frame.map = map;
+ Animation::Part& part(animation.parts.editItemAt(j));
+ part.frames.add(frame);
}
}
}
@@ -468,6 +479,8 @@ bool BootAnimation::movie()
}
}
+ mZip->endIteration(cookie);
+
// clear screen
glShadeModel(GL_FLAT);
glDisable(GL_DITHER);
@@ -494,7 +507,7 @@ bool BootAnimation::movie()
Region clearReg(Rect(mWidth, mHeight));
clearReg.subtractSelf(Rect(xc, yc, xc+animation.width, yc+animation.height));
- for (int i=0 ; i<pcount ; i++) {
+ for (size_t i=0 ; i<pcount ; i++) {
const Animation::Part& part(animation.parts[i]);
const size_t fcount = part.frames.size();
glBindTexture(GL_TEXTURE_2D, 0);
@@ -504,7 +517,7 @@ bool BootAnimation::movie()
if(exitPending() && !part.playUntilComplete)
break;
- for (int j=0 ; j<fcount && (!exitPending() || part.playUntilComplete) ; j++) {
+ for (size_t j=0 ; j<fcount && (!exitPending() || part.playUntilComplete) ; j++) {
const Animation::Frame& frame(part.frames[j]);
nsecs_t lastFrame = systemTime();
@@ -564,7 +577,7 @@ bool BootAnimation::movie()
// free the textures for this part
if (part.count != 1) {
- for (int j=0 ; j<fcount ; j++) {
+ for (size_t j=0 ; j<fcount ; j++) {
const Animation::Frame& frame(part.frames[j]);
glDeleteTextures(1, &frame.tid);
}
diff --git a/cmds/bootanimation/BootAnimation.h b/cmds/bootanimation/BootAnimation.h
index fa908eb06204..22963c220b40 100644
--- a/cmds/bootanimation/BootAnimation.h
+++ b/cmds/bootanimation/BootAnimation.h
@@ -95,8 +95,7 @@ private:
EGLDisplay mSurface;
sp<SurfaceControl> mFlingerSurfaceControl;
sp<Surface> mFlingerSurface;
- bool mAndroidAnimation;
- ZipFileRO mZip;
+ ZipFileRO *mZip;
};
// ---------------------------------------------------------------------------
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index d6db8c2a0d13..ec58fb0be2e0 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -2402,6 +2402,13 @@ public class Activity extends ContextThemeWrapper
}
return false;
}
+
+ /**
+ * Called when the main window associated with the activity has been dismissed.
+ */
+ public void onWindowDismissed() {
+ finish();
+ }
/**
* Called to process key events. You can override this to intercept all
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 7ca345993c23..c877cd3ac264 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -1289,106 +1289,15 @@ public class ActivityManager {
}
/**
- * Information you can retrieve about the WindowManager StackBox hierarchy.
- * @hide
- */
- public static class StackBoxInfo implements Parcelable {
- public int stackBoxId;
- public float weight;
- public boolean vertical;
- public Rect bounds;
- public StackBoxInfo[] children;
- public int stackId;
- public StackInfo stack;
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeInt(stackBoxId);
- dest.writeFloat(weight);
- dest.writeInt(vertical ? 1 : 0);
- bounds.writeToParcel(dest, flags);
- dest.writeInt(stackId);
- if (children != null) {
- children[0].writeToParcel(dest, flags);
- children[1].writeToParcel(dest, flags);
- } else {
- stack.writeToParcel(dest, flags);
- }
- }
-
- public void readFromParcel(Parcel source) {
- stackBoxId = source.readInt();
- weight = source.readFloat();
- vertical = source.readInt() == 1;
- bounds = Rect.CREATOR.createFromParcel(source);
- stackId = source.readInt();
- if (stackId == -1) {
- children = new StackBoxInfo[2];
- children[0] = StackBoxInfo.CREATOR.createFromParcel(source);
- children[1] = StackBoxInfo.CREATOR.createFromParcel(source);
- } else {
- stack = StackInfo.CREATOR.createFromParcel(source);
- }
- }
-
- public static final Creator<StackBoxInfo> CREATOR =
- new Creator<ActivityManager.StackBoxInfo>() {
-
- @Override
- public StackBoxInfo createFromParcel(Parcel source) {
- return new StackBoxInfo(source);
- }
-
- @Override
- public StackBoxInfo[] newArray(int size) {
- return new StackBoxInfo[size];
- }
- };
-
- public StackBoxInfo() {
- }
-
- public StackBoxInfo(Parcel source) {
- readFromParcel(source);
- }
-
- public String toString(String prefix) {
- StringBuilder sb = new StringBuilder(256);
- sb.append(prefix); sb.append("Box id=" + stackBoxId); sb.append(" weight=" + weight);
- sb.append(" vertical=" + vertical); sb.append(" bounds=" + bounds.toShortString());
- sb.append("\n");
- if (children != null) {
- sb.append(prefix); sb.append("First child=\n");
- sb.append(children[0].toString(prefix + " "));
- sb.append(prefix); sb.append("Second child=\n");
- sb.append(children[1].toString(prefix + " "));
- } else {
- sb.append(prefix); sb.append("Stack=\n");
- sb.append(stack.toString(prefix + " "));
- }
- return sb.toString();
- }
-
- @Override
- public String toString() {
- return toString("");
- }
- }
-
- /**
* Information you can retrieve about an ActivityStack in the system.
* @hide
*/
public static class StackInfo implements Parcelable {
public int stackId;
- public Rect bounds;
+ public Rect bounds = new Rect();
public int[] taskIds;
public String[] taskNames;
+ public int displayId;
@Override
public int describeContents() {
@@ -1404,6 +1313,7 @@ public class ActivityManager {
dest.writeInt(bounds.bottom);
dest.writeIntArray(taskIds);
dest.writeStringArray(taskNames);
+ dest.writeInt(displayId);
}
public void readFromParcel(Parcel source) {
@@ -1412,6 +1322,7 @@ public class ActivityManager {
source.readInt(), source.readInt(), source.readInt(), source.readInt());
taskIds = source.createIntArray();
taskNames = source.createStringArray();
+ displayId = source.readInt();
}
public static final Creator<StackInfo> CREATOR = new Creator<StackInfo>() {
@@ -1435,7 +1346,9 @@ public class ActivityManager {
public String toString(String prefix) {
StringBuilder sb = new StringBuilder(256);
sb.append(prefix); sb.append("Stack id="); sb.append(stackId);
- sb.append(" bounds="); sb.append(bounds.toShortString()); sb.append("\n");
+ sb.append(" bounds="); sb.append(bounds.toShortString());
+ sb.append(" displayId="); sb.append(displayId);
+ sb.append("\n");
prefix = prefix + " ";
for (int i = 0; i < taskIds.length; ++i) {
sb.append(prefix); sb.append("taskId="); sb.append(taskIds[i]);
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index 74266ccf58a2..7695eccabc60 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -16,7 +16,7 @@
package android.app;
-import android.app.ActivityManager.StackBoxInfo;
+import android.app.ActivityManager.StackInfo;
import android.content.ComponentName;
import android.content.IIntentReceiver;
import android.content.IIntentSender;
@@ -31,6 +31,7 @@ import android.content.pm.ParceledListSlice;
import android.content.pm.UserInfo;
import android.content.res.Configuration;
import android.graphics.Bitmap;
+import android.graphics.Rect;
import android.net.Uri;
import android.os.Binder;
import android.os.Bundle;
@@ -611,18 +612,6 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM
return true;
}
- case CREATE_STACK_TRANSACTION: {
- data.enforceInterface(IActivityManager.descriptor);
- int taskId = data.readInt();
- int relativeStackId = data.readInt();
- int position = data.readInt();
- float weight = data.readFloat();
- int res = createStack(taskId, relativeStackId, position, weight);
- reply.writeNoException();
- reply.writeInt(res);
- return true;
- }
-
case MOVE_TASK_TO_STACK_TRANSACTION: {
data.enforceInterface(IActivityManager.descriptor);
int taskId = data.readInt();
@@ -635,25 +624,26 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM
case RESIZE_STACK_TRANSACTION: {
data.enforceInterface(IActivityManager.descriptor);
- int stackBoxId = data.readInt();
+ int stackId = data.readInt();
float weight = data.readFloat();
- resizeStackBox(stackBoxId, weight);
+ Rect r = Rect.CREATOR.createFromParcel(data);
+ resizeStack(stackId, r);
reply.writeNoException();
return true;
}
- case GET_STACK_BOXES_TRANSACTION: {
+ case GET_ALL_STACK_INFOS_TRANSACTION: {
data.enforceInterface(IActivityManager.descriptor);
- List<StackBoxInfo> list = getStackBoxes();
+ List<StackInfo> list = getAllStackInfos();
reply.writeNoException();
reply.writeTypedList(list);
return true;
}
- case GET_STACK_BOX_INFO_TRANSACTION: {
+ case GET_STACK_INFO_TRANSACTION: {
data.enforceInterface(IActivityManager.descriptor);
- int stackBoxId = data.readInt();
- StackBoxInfo info = getStackBoxInfo(stackBoxId);
+ int stackId = data.readInt();
+ StackInfo info = getStackInfo(stackId);
reply.writeNoException();
if (info != null) {
reply.writeInt(1);
@@ -2028,6 +2018,54 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM
reply.writeNoException();
return true;
}
+
+ case CREATE_ACTIVITY_CONTAINER_TRANSACTION: {
+ data.enforceInterface(IActivityManager.descriptor);
+ IBinder parentActivityToken = data.readStrongBinder();
+ IActivityContainerCallback callback =
+ (IActivityContainerCallback) data.readStrongBinder();
+ IActivityContainer activityContainer =
+ createActivityContainer(parentActivityToken, callback);
+ reply.writeNoException();
+ if (activityContainer != null) {
+ reply.writeInt(1);
+ reply.writeStrongBinder(activityContainer.asBinder());
+ } else {
+ reply.writeInt(0);
+ }
+ return true;
+ }
+
+ case DELETE_ACTIVITY_CONTAINER_TRANSACTION: {
+ data.enforceInterface(IActivityManager.descriptor);
+ IActivityContainer activityContainer =
+ IActivityContainer.Stub.asInterface(data.readStrongBinder());
+ deleteActivityContainer(activityContainer);
+ reply.writeNoException();
+ return true;
+ }
+
+ case GET_ACTIVITY_CONTAINER_TRANSACTION: {
+ data.enforceInterface(IActivityManager.descriptor);
+ IBinder activityToken = data.readStrongBinder();
+ IActivityContainer activityContainer = getEnclosingActivityContainer(activityToken);
+ reply.writeNoException();
+ if (activityContainer != null) {
+ reply.writeInt(1);
+ reply.writeStrongBinder(activityContainer.asBinder());
+ } else {
+ reply.writeInt(0);
+ }
+ return true;
+ }
+
+ case GET_HOME_ACTIVITY_TOKEN_TRANSACTION: {
+ data.enforceInterface(IActivityManager.descriptor);
+ IBinder homeActivityToken = getHomeActivityToken();
+ reply.writeNoException();
+ reply.writeStrongBinder(homeActivityToken);
+ return true;
+ }
}
return super.onTransact(code, data, reply, flags);
@@ -2715,24 +2753,6 @@ class ActivityManagerProxy implements IActivityManager
reply.recycle();
}
@Override
- public int createStack(int taskId, int relativeStackBoxId, int position, float weight)
- throws RemoteException
- {
- Parcel data = Parcel.obtain();
- Parcel reply = Parcel.obtain();
- data.writeInterfaceToken(IActivityManager.descriptor);
- data.writeInt(taskId);
- data.writeInt(relativeStackBoxId);
- data.writeInt(position);
- data.writeFloat(weight);
- mRemote.transact(CREATE_STACK_TRANSACTION, data, reply, 0);
- reply.readException();
- int res = reply.readInt();
- data.recycle();
- reply.recycle();
- return res;
- }
- @Override
public void moveTaskToStack(int taskId, int stackId, boolean toTop) throws RemoteException
{
Parcel data = Parcel.obtain();
@@ -2747,44 +2767,44 @@ class ActivityManagerProxy implements IActivityManager
reply.recycle();
}
@Override
- public void resizeStackBox(int stackBoxId, float weight) throws RemoteException
+ public void resizeStack(int stackBoxId, Rect r) throws RemoteException
{
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
data.writeInt(stackBoxId);
- data.writeFloat(weight);
+ r.writeToParcel(data, 0);
mRemote.transact(RESIZE_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
reply.readException();
data.recycle();
reply.recycle();
}
@Override
- public List<StackBoxInfo> getStackBoxes() throws RemoteException
+ public List<StackInfo> getAllStackInfos() throws RemoteException
{
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
- mRemote.transact(GET_STACK_BOXES_TRANSACTION, data, reply, 0);
+ mRemote.transact(GET_ALL_STACK_INFOS_TRANSACTION, data, reply, 0);
reply.readException();
- ArrayList<StackBoxInfo> list = reply.createTypedArrayList(StackBoxInfo.CREATOR);
+ ArrayList<StackInfo> list = reply.createTypedArrayList(StackInfo.CREATOR);
data.recycle();
reply.recycle();
return list;
}
@Override
- public StackBoxInfo getStackBoxInfo(int stackBoxId) throws RemoteException
+ public StackInfo getStackInfo(int stackId) throws RemoteException
{
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
- data.writeInt(stackBoxId);
- mRemote.transact(GET_STACK_BOX_INFO_TRANSACTION, data, reply, 0);
+ data.writeInt(stackId);
+ mRemote.transact(GET_STACK_INFO_TRANSACTION, data, reply, 0);
reply.readException();
int res = reply.readInt();
- StackBoxInfo info = null;
+ StackInfo info = null;
if (res != 0) {
- info = StackBoxInfo.CREATOR.createFromParcel(reply);
+ info = StackInfo.CREATOR.createFromParcel(reply);
}
data.recycle();
reply.recycle();
@@ -4660,5 +4680,70 @@ class ActivityManagerProxy implements IActivityManager
reply.recycle();
}
+ public IActivityContainer createActivityContainer(IBinder parentActivityToken,
+ IActivityContainerCallback callback) throws RemoteException {
+ Parcel data = Parcel.obtain();
+ Parcel reply = Parcel.obtain();
+ data.writeInterfaceToken(IActivityManager.descriptor);
+ data.writeStrongBinder(parentActivityToken);
+ data.writeStrongBinder((IBinder)callback);
+ mRemote.transact(CREATE_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0);
+ reply.readException();
+ final int result = reply.readInt();
+ final IActivityContainer res;
+ if (result == 1) {
+ res = IActivityContainer.Stub.asInterface(reply.readStrongBinder());
+ } else {
+ res = null;
+ }
+ data.recycle();
+ reply.recycle();
+ return res;
+ }
+
+ public void deleteActivityContainer(IActivityContainer activityContainer)
+ throws RemoteException {
+ Parcel data = Parcel.obtain();
+ Parcel reply = Parcel.obtain();
+ data.writeInterfaceToken(IActivityManager.descriptor);
+ data.writeStrongBinder(activityContainer.asBinder());
+ mRemote.transact(DELETE_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0);
+ reply.readException();
+ data.recycle();
+ reply.recycle();
+ }
+
+ public IActivityContainer getEnclosingActivityContainer(IBinder activityToken)
+ throws RemoteException {
+ Parcel data = Parcel.obtain();
+ Parcel reply = Parcel.obtain();
+ data.writeInterfaceToken(IActivityManager.descriptor);
+ data.writeStrongBinder(activityToken);
+ mRemote.transact(GET_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0);
+ reply.readException();
+ final int result = reply.readInt();
+ final IActivityContainer res;
+ if (result == 1) {
+ res = IActivityContainer.Stub.asInterface(reply.readStrongBinder());
+ } else {
+ res = null;
+ }
+ data.recycle();
+ reply.recycle();
+ return res;
+ }
+
+ public IBinder getHomeActivityToken() throws RemoteException {
+ Parcel data = Parcel.obtain();
+ Parcel reply = Parcel.obtain();
+ data.writeInterfaceToken(IActivityManager.descriptor);
+ mRemote.transact(GET_HOME_ACTIVITY_TOKEN_TRANSACTION, data, reply, 0);
+ reply.readException();
+ IBinder res = reply.readStrongBinder();
+ data.recycle();
+ reply.recycle();
+ return res;
+ }
+
private IBinder mRemote;
}
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 4825c56bab2b..b038f9e75e69 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -93,10 +93,11 @@ import com.android.internal.os.BinderInternal;
import com.android.internal.os.RuntimeInit;
import com.android.internal.os.SamplingProfilerIntegration;
import com.android.internal.util.FastPrintWriter;
-import com.android.internal.util.Objects;
import com.android.org.conscrypt.OpenSSLSocketImpl;
import com.google.android.collect.Lists;
+import dalvik.system.VMRuntime;
+
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileOutputStream;
@@ -109,6 +110,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Objects;
import java.util.TimeZone;
import java.util.regex.Pattern;
@@ -117,6 +119,7 @@ import libcore.io.EventLogger;
import libcore.io.IoUtils;
import dalvik.system.CloseGuard;
+import dalvik.system.VMRuntime;
final class RemoteServiceException extends AndroidRuntimeException {
public RemoteServiceException(String msg) {
@@ -221,7 +224,7 @@ public final class ActivityThread {
public boolean equals(Object o) {
if (o instanceof ProviderKey) {
final ProviderKey other = (ProviderKey) o;
- return Objects.equal(authority, other.authority) && userId == other.userId;
+ return Objects.equals(authority, other.authority) && userId == other.userId;
}
return false;
}
@@ -739,6 +742,9 @@ public final class ActivityThread {
setCoreSettings(coreSettings);
+ // Tell the VMRuntime about the application.
+ VMRuntime.registerAppInfo(appInfo.dataDir, appInfo.processName);
+
AppBindData data = new AppBindData();
data.processName = processName;
data.appInfo = appInfo;
@@ -1068,8 +1074,15 @@ public final class ActivityThread {
synchronized (this) {
if (mLastProcessState != processState) {
mLastProcessState = processState;
-
- // Update Dalvik state here based on ActivityManager.PROCESS_STATE_* constants.
+ // Update Dalvik state based on ActivityManager.PROCESS_STATE_* constants.
+ final int DALVIK_PROCESS_STATE_JANK_PERCEPTIBLE = 0;
+ final int DALVIK_PROCESS_STATE_JANK_IMPERCEPTIBLE = 1;
+ int dalvikProcessState = DALVIK_PROCESS_STATE_JANK_IMPERCEPTIBLE;
+ // TODO: Tune this since things like gmail sync are important background but not jank perceptible.
+ if (processState <= ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND) {
+ dalvikProcessState = DALVIK_PROCESS_STATE_JANK_PERCEPTIBLE;
+ }
+ VMRuntime.getRuntime().updateProcessState(dalvikProcessState);
if (false) {
Slog.i(TAG, "******************* PROCESS STATE CHANGED TO: " + processState
+ (fromIpc ? " (from ipc": ""));
@@ -2194,15 +2207,27 @@ public final class ActivityThread {
final Activity activity) {
ContextImpl appContext = ContextImpl.createActivityContext(this, r.packageInfo, r.token);
appContext.setOuterContext(activity);
+ Context baseContext = appContext;
+
+ final DisplayManagerGlobal dm = DisplayManagerGlobal.getInstance();
+ try {
+ IActivityContainer container =
+ ActivityManagerNative.getDefault().getEnclosingActivityContainer(r.token);
+ final int displayId =
+ container == null ? Display.DEFAULT_DISPLAY : container.getDisplayId();
+ if (displayId > Display.DEFAULT_DISPLAY) {
+ Display display = dm.getRealDisplay(displayId, r.token);
+ baseContext = appContext.createDisplayContext(display);
+ }
+ } catch (RemoteException e) {
+ }
// For debugging purposes, if the activity's package name contains the value of
// the "debug.use-second-display" system property as a substring, then show
// its content on a secondary display if there is one.
- Context baseContext = appContext;
String pkgName = SystemProperties.get("debug.second-display.pkg");
if (pkgName != null && !pkgName.isEmpty()
&& r.packageInfo.mPackageName.contains(pkgName)) {
- DisplayManagerGlobal dm = DisplayManagerGlobal.getInstance();
for (int displayId : dm.getDisplayIds()) {
if (displayId != Display.DEFAULT_DISPLAY) {
Display display = dm.getRealDisplay(displayId, r.token);
diff --git a/core/java/android/app/ActivityView.java b/core/java/android/app/ActivityView.java
new file mode 100644
index 000000000000..113f1230386e
--- /dev/null
+++ b/core/java/android/app/ActivityView.java
@@ -0,0 +1,285 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app;
+
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.IIntentSender;
+import android.content.Intent;
+import android.content.IntentSender;
+import android.graphics.SurfaceTexture;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.util.AttributeSet;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.InputDevice;
+import android.view.InputEvent;
+import android.view.MotionEvent;
+import android.view.Surface;
+import android.view.TextureView;
+import android.view.TextureView.SurfaceTextureListener;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+
+/** @hide */
+public class ActivityView extends ViewGroup {
+ private final String TAG = "ActivityView";
+ private final boolean DEBUG = false;
+
+ private final TextureView mTextureView;
+ private IActivityContainer mActivityContainer;
+ private Activity mActivity;
+ private int mWidth;
+ private int mHeight;
+ private Surface mSurface;
+
+ // Only one IIntentSender or Intent may be queued at a time. Most recent one wins.
+ IIntentSender mQueuedPendingIntent;
+ Intent mQueuedIntent;
+
+ public ActivityView(Context context) {
+ this(context, null);
+ }
+
+ public ActivityView(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public ActivityView(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+
+ while (context instanceof ContextWrapper) {
+ if (context instanceof Activity) {
+ mActivity = (Activity)context;
+ break;
+ }
+ context = ((ContextWrapper)context).getBaseContext();
+ }
+ if (mActivity == null) {
+ throw new IllegalStateException("The ActivityView's Context is not an Activity.");
+ }
+
+ mTextureView = new TextureView(context);
+ mTextureView.setSurfaceTextureListener(new ActivityViewSurfaceTextureListener());
+ addView(mTextureView);
+ if (DEBUG) Log.v(TAG, "ctor()");
+ }
+
+ @Override
+ protected void onLayout(boolean changed, int l, int t, int r, int b) {
+ mTextureView.layout(0, 0, r - l, b - t);
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ if (DEBUG) Log.v(TAG, "onAttachedToWindow()");
+ super.onAttachedToWindow();
+ try {
+ final IBinder token = mActivity.getActivityToken();
+ mActivityContainer =
+ ActivityManagerNative.getDefault().createActivityContainer(token, null);
+ } catch (RemoteException e) {
+ throw new IllegalStateException("ActivityView: Unable to create ActivityContainer. "
+ + e);
+ }
+
+ attachToSurfaceWhenReady();
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ if (DEBUG) Log.v(TAG, "onDetachedFromWindow(): mActivityContainer=" + mActivityContainer);
+ super.onDetachedFromWindow();
+ if (mActivityContainer != null) {
+ detach();
+ try {
+ ActivityManagerNative.getDefault().deleteActivityContainer(mActivityContainer);
+ } catch (RemoteException e) {
+ }
+ mActivityContainer = null;
+ }
+ }
+
+ @Override
+ protected void onWindowVisibilityChanged(int visibility) {
+ if (DEBUG) Log.v(TAG, "onWindowVisibilityChanged(): visibility=" + visibility);
+ super.onWindowVisibilityChanged(visibility);
+ switch (visibility) {
+ case View.VISIBLE:
+ attachToSurfaceWhenReady();
+ break;
+ case View.INVISIBLE:
+ break;
+ case View.GONE:
+ break;
+ }
+ }
+
+ private boolean injectInputEvent(InputEvent event) {
+ try {
+ return mActivityContainer != null && mActivityContainer.injectEvent(event);
+ } catch (RemoteException e) {
+ return false;
+ }
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ return injectInputEvent(event) || super.onTouchEvent(event);
+ }
+
+ @Override
+ public boolean onGenericMotionEvent(MotionEvent event) {
+ if (event.isFromSource(InputDevice.SOURCE_CLASS_POINTER)) {
+ if (injectInputEvent(event)) {
+ return true;
+ }
+ }
+ return super.onGenericMotionEvent(event);
+ }
+
+ public boolean isAttachedToDisplay() {
+ return mSurface != null;
+ }
+
+ public void startActivity(Intent intent) {
+ if (DEBUG) Log.v(TAG, "startActivity(): intent=" + intent + " " +
+ (isAttachedToDisplay() ? "" : "not") + " attached");
+ if (mSurface != null) {
+ try {
+ mActivityContainer.startActivity(intent);
+ } catch (RemoteException e) {
+ throw new IllegalStateException("ActivityView: Unable to startActivity. " + e);
+ }
+ } else {
+ mQueuedIntent = intent;
+ mQueuedPendingIntent = null;
+ }
+ }
+
+ private void startActivityIntentSender(IIntentSender iIntentSender) {
+ try {
+ mActivityContainer.startActivityIntentSender(iIntentSender);
+ } catch (RemoteException e) {
+ throw new IllegalStateException(
+ "ActivityView: Unable to startActivity from IntentSender. " + e);
+ }
+ }
+
+ public void startActivity(IntentSender intentSender) {
+ if (DEBUG) Log.v(TAG, "startActivityIntentSender(): intentSender=" + intentSender + " " +
+ (isAttachedToDisplay() ? "" : "not") + " attached");
+ final IIntentSender iIntentSender = intentSender.getTarget();
+ if (mSurface != null) {
+ startActivityIntentSender(iIntentSender);
+ } else {
+ mQueuedPendingIntent = iIntentSender;
+ mQueuedIntent = null;
+ }
+ }
+
+ public void startActivity(PendingIntent pendingIntent) {
+ if (DEBUG) Log.v(TAG, "startActivityPendingIntent(): PendingIntent=" + pendingIntent + " "
+ + (isAttachedToDisplay() ? "" : "not") + " attached");
+ final IIntentSender iIntentSender = pendingIntent.getTarget();
+ if (mSurface != null) {
+ startActivityIntentSender(iIntentSender);
+ } else {
+ mQueuedPendingIntent = iIntentSender;
+ mQueuedIntent = null;
+ }
+ }
+
+ private void attachToSurfaceWhenReady() {
+ final SurfaceTexture surfaceTexture = mTextureView.getSurfaceTexture();
+ if (mActivityContainer == null || surfaceTexture == null || mSurface != null) {
+ // Either not ready to attach, or already attached.
+ return;
+ }
+
+ WindowManager wm = (WindowManager)mActivity.getSystemService(Context.WINDOW_SERVICE);
+ DisplayMetrics metrics = new DisplayMetrics();
+ wm.getDefaultDisplay().getMetrics(metrics);
+
+ mSurface = new Surface(surfaceTexture);
+ try {
+ mActivityContainer.attachToSurface(mSurface, mWidth, mHeight, metrics.densityDpi);
+ } catch (RemoteException e) {
+ mSurface.release();
+ mSurface = null;
+ throw new IllegalStateException(
+ "ActivityView: Unable to create ActivityContainer. " + e);
+ }
+
+ if (DEBUG) Log.v(TAG, "attachToSurfaceWhenReady: " + (mQueuedIntent != null ||
+ mQueuedPendingIntent != null ? "" : "no") + " queued intent");
+ if (mQueuedIntent != null) {
+ startActivity(mQueuedIntent);
+ mQueuedIntent = null;
+ } else if (mQueuedPendingIntent != null) {
+ startActivityIntentSender(mQueuedPendingIntent);
+ mQueuedPendingIntent = null;
+ }
+ }
+
+ private void detach() {
+ if (DEBUG) Log.d(TAG, "detach: attached=" + isAttachedToDisplay());
+ if (mSurface != null) {
+ try {
+ mActivityContainer.detachFromDisplay();
+ } catch (RemoteException e) {
+ }
+ mSurface.release();
+ mSurface = null;
+ }
+ }
+
+ private class ActivityViewSurfaceTextureListener implements SurfaceTextureListener {
+ @Override
+ public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width,
+ int height) {
+ if (DEBUG) Log.d(TAG, "onSurfaceTextureAvailable: width=" + width + " height="
+ + height);
+ mWidth = width;
+ mHeight = height;
+ if (mActivityContainer != null) {
+ attachToSurfaceWhenReady();
+ }
+ }
+
+ @Override
+ public void onSurfaceTextureSizeChanged(SurfaceTexture surfaceTexture, int width,
+ int height) {
+ if (DEBUG) Log.d(TAG, "onSurfaceTextureSizeChanged: w=" + width + " h=" + height);
+ }
+
+ @Override
+ public boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) {
+ if (DEBUG) Log.d(TAG, "onSurfaceTextureDestroyed");
+ detach();
+ return true;
+ }
+
+ @Override
+ public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) {
+// Log.d(TAG, "onSurfaceTextureUpdated");
+ }
+
+ }
+}
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java
index 286bde0bcf3b..079cf7a210c9 100644
--- a/core/java/android/app/AppOpsManager.java
+++ b/core/java/android/app/AppOpsManager.java
@@ -369,8 +369,8 @@ public class AppOpsManager {
android.Manifest.permission.WRITE_CALL_LOG,
android.Manifest.permission.READ_CALENDAR,
android.Manifest.permission.WRITE_CALENDAR,
- null, // no permission required for notifications
android.Manifest.permission.ACCESS_WIFI_STATE,
+ null, // no permission required for notifications
null, // neighboring cells shares the coarse location perm
android.Manifest.permission.CALL_PHONE,
android.Manifest.permission.READ_SMS,
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index b505d4f8e878..6f53df4efb0d 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -729,6 +729,39 @@ final class ApplicationPackageManager extends PackageManager {
}
@Override
+ public Drawable getActivityBanner(ComponentName activityName)
+ throws NameNotFoundException {
+ return getActivityInfo(activityName, 0).loadBanner(this);
+ }
+
+ @Override
+ public Drawable getActivityBanner(Intent intent)
+ throws NameNotFoundException {
+ if (intent.getComponent() != null) {
+ return getActivityBanner(intent.getComponent());
+ }
+
+ ResolveInfo info = resolveActivity(
+ intent, PackageManager.MATCH_DEFAULT_ONLY);
+ if (info != null) {
+ return info.activityInfo.loadBanner(this);
+ }
+
+ throw new NameNotFoundException(intent.toUri(0));
+ }
+
+ @Override
+ public Drawable getApplicationBanner(ApplicationInfo info) {
+ return info.loadBanner(this);
+ }
+
+ @Override
+ public Drawable getApplicationBanner(String packageName)
+ throws NameNotFoundException {
+ return getApplicationBanner(getApplicationInfo(packageName, 0));
+ }
+
+ @Override
public Drawable getActivityLogo(ComponentName activityName)
throws NameNotFoundException {
return getActivityInfo(activityName, 0).loadLogo(this);
diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java
index cda2c5f3b7c5..a8277b5e7018 100644
--- a/core/java/android/app/Dialog.java
+++ b/core/java/android/app/Dialog.java
@@ -695,6 +695,10 @@ public class Dialog implements DialogInterface, Window.Callback,
public void onDetachedFromWindow() {
}
+
+ public void onWindowDismissed() {
+ dismiss();
+ }
/**
* Called to process key events. You can override this to intercept all
diff --git a/core/java/android/app/Fragment.java b/core/java/android/app/Fragment.java
index d626e5f54aee..af8f1776599b 100644
--- a/core/java/android/app/Fragment.java
+++ b/core/java/android/app/Fragment.java
@@ -1402,6 +1402,7 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene
mRestored = false;
mBackStackNesting = 0;
mFragmentManager = null;
+ mChildFragmentManager = null;
mActivity = null;
mFragmentId = 0;
mContainerId = 0;
diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java
index 4371907ad590..76f9d97455cf 100644
--- a/core/java/android/app/FragmentManager.java
+++ b/core/java/android/app/FragmentManager.java
@@ -574,12 +574,12 @@ final class FragmentManagerImpl extends FragmentManager {
return null;
}
if (index >= mActive.size()) {
- throwException(new IllegalStateException("Fragement no longer exists for key "
+ throwException(new IllegalStateException("Fragment no longer exists for key "
+ key + ": index " + index));
}
Fragment f = mActive.get(index);
if (f == null) {
- throwException(new IllegalStateException("Fragement no longer exists for key "
+ throwException(new IllegalStateException("Fragment no longer exists for key "
+ key + ": index " + index));
}
return f;
@@ -1026,6 +1026,7 @@ final class FragmentManagerImpl extends FragmentManager {
f.mActivity = null;
f.mParentFragment = null;
f.mFragmentManager = null;
+ f.mChildFragmentManager = null;
}
}
}
diff --git a/core/java/android/app/IActivityContainer.aidl b/core/java/android/app/IActivityContainer.aidl
new file mode 100644
index 000000000000..5b80e06e1611
--- /dev/null
+++ b/core/java/android/app/IActivityContainer.aidl
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app;
+
+import android.app.IActivityContainerCallback;
+import android.content.Intent;
+import android.content.IIntentSender;
+import android.os.IBinder;
+import android.view.InputEvent;
+import android.view.Surface;
+
+/** @hide */
+interface IActivityContainer {
+ void attachToDisplay(int displayId);
+ void attachToSurface(in Surface surface, int width, int height, int density);
+ void detachFromDisplay();
+ int startActivity(in Intent intent);
+ int startActivityIntentSender(in IIntentSender intentSender);
+ int getDisplayId();
+ boolean injectEvent(in InputEvent event);
+}
diff --git a/core/java/android/app/IActivityContainerCallback.aidl b/core/java/android/app/IActivityContainerCallback.aidl
new file mode 100644
index 000000000000..55c2001e90ef
--- /dev/null
+++ b/core/java/android/app/IActivityContainerCallback.aidl
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app;
+
+import android.os.IBinder;
+
+/** @hide */
+interface IActivityContainerCallback {
+ oneway void onLastActivityRemoved(IBinder container);
+}
diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java
index 77c2ea0c1694..02a6343bf746 100644
--- a/core/java/android/app/IActivityManager.java
+++ b/core/java/android/app/IActivityManager.java
@@ -18,7 +18,7 @@ package android.app;
import android.app.ActivityManager.RunningTaskInfo;
import android.app.ActivityManager.RunningServiceInfo;
-import android.app.ActivityManager.StackBoxInfo;
+import android.app.ActivityManager.StackInfo;
import android.content.ComponentName;
import android.content.ContentProviderNative;
import android.content.IContentProvider;
@@ -36,6 +36,7 @@ import android.content.pm.ProviderInfo;
import android.content.pm.UserInfo;
import android.content.res.Configuration;
import android.graphics.Bitmap;
+import android.graphics.Rect;
import android.net.Uri;
import android.os.Bundle;
import android.os.Debug;
@@ -117,12 +118,10 @@ public interface IActivityManager extends IInterface {
public void moveTaskToBack(int task) throws RemoteException;
public boolean moveActivityTaskToBack(IBinder token, boolean nonRoot) throws RemoteException;
public void moveTaskBackwards(int task) throws RemoteException;
- public int createStack(int taskId, int relativeStackBoxId, int position, float weight)
- throws RemoteException;
public void moveTaskToStack(int taskId, int stackId, boolean toTop) throws RemoteException;
- public void resizeStackBox(int stackBoxId, float weight) throws RemoteException;
- public List<StackBoxInfo> getStackBoxes() throws RemoteException;
- public StackBoxInfo getStackBoxInfo(int stackBoxId) throws RemoteException;
+ public void resizeStack(int stackId, Rect bounds) throws RemoteException;
+ public List<StackInfo> getAllStackInfos() throws RemoteException;
+ public StackInfo getStackInfo(int stackId) throws RemoteException;
public void setFocusedStack(int stackId) throws RemoteException;
public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException;
/* oneway */
@@ -408,6 +407,18 @@ public interface IActivityManager extends IInterface {
public void performIdleMaintenance() throws RemoteException;
+ /** @hide */
+ public IActivityContainer createActivityContainer(IBinder parentActivityToken,
+ IActivityContainerCallback callback) throws RemoteException;
+
+ /** @hide */
+ public void deleteActivityContainer(IActivityContainer container) throws RemoteException;
+
+ public IActivityContainer getEnclosingActivityContainer(IBinder activityToken)
+ throws RemoteException;
+
+ public IBinder getHomeActivityToken() throws RemoteException;
+
/*
* Private non-Binder interfaces
*/
@@ -678,12 +689,12 @@ public interface IActivityManager extends IInterface {
int KILL_UID_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+164;
int SET_USER_IS_MONKEY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+165;
int HANG_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+166;
- int CREATE_STACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+167;
+ int CREATE_ACTIVITY_CONTAINER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+167;
int MOVE_TASK_TO_STACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+168;
int RESIZE_STACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+169;
- int GET_STACK_BOXES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+170;
+ int GET_ALL_STACK_INFOS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+170;
int SET_FOCUSED_STACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+171;
- int GET_STACK_BOX_INFO_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+172;
+ int GET_STACK_INFO_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+172;
int CONVERT_FROM_TRANSLUCENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+173;
int CONVERT_TO_TRANSLUCENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+174;
int NOTIFY_ACTIVITY_DRAWN_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+175;
@@ -694,4 +705,7 @@ public interface IActivityManager extends IInterface {
int RELEASE_PERSISTABLE_URI_PERMISSION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+180;
int GET_PERSISTED_URI_PERMISSIONS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+181;
int APP_NOT_RESPONDING_VIA_PROVIDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+182;
+ int GET_HOME_ACTIVITY_TOKEN_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+183;
+ int GET_ACTIVITY_CONTAINER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+184;
+ int DELETE_ACTIVITY_CONTAINER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+185;
}
diff --git a/core/java/android/app/IWallpaperManager.aidl b/core/java/android/app/IWallpaperManager.aidl
index 3efd3c0ede8b..181eb63bce69 100644
--- a/core/java/android/app/IWallpaperManager.aidl
+++ b/core/java/android/app/IWallpaperManager.aidl
@@ -71,4 +71,14 @@ interface IWallpaperManager {
* Returns the desired minimum height for the wallpaper.
*/
int getHeightHint();
+
+ /**
+ * Returns the name of the wallpaper. Private API.
+ */
+ String getName();
+
+ /**
+ * Informs the service that wallpaper settings have been restored. Private API.
+ */
+ void settingsRestored();
}
diff --git a/core/java/android/app/NativeActivity.java b/core/java/android/app/NativeActivity.java
index 4ca37476db6a..2e05edb2e7d9 100644
--- a/core/java/android/app/NativeActivity.java
+++ b/core/java/android/app/NativeActivity.java
@@ -76,7 +76,7 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2,
private NativeContentView mNativeContentView;
private InputMethodManager mIMM;
- private int mNativeHandle;
+ private long mNativeHandle;
private InputQueue mCurInputQueue;
private SurfaceHolder mCurSurfaceHolder;
@@ -91,27 +91,26 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2,
private boolean mDestroyed;
- private native int loadNativeCode(String path, String funcname, MessageQueue queue,
+ private native long loadNativeCode(String path, String funcname, MessageQueue queue,
String internalDataPath, String obbPath, String externalDataPath, int sdkVersion,
AssetManager assetMgr, byte[] savedState);
- private native void unloadNativeCode(int handle);
-
- private native void onStartNative(int handle);
- private native void onResumeNative(int handle);
- private native byte[] onSaveInstanceStateNative(int handle);
- private native void onPauseNative(int handle);
- private native void onStopNative(int handle);
- private native void onConfigurationChangedNative(int handle);
- private native void onLowMemoryNative(int handle);
- private native void onWindowFocusChangedNative(int handle, boolean focused);
- private native void onSurfaceCreatedNative(int handle, Surface surface);
- private native void onSurfaceChangedNative(int handle, Surface surface,
+ private native void unloadNativeCode(long handle);
+ private native void onStartNative(long handle);
+ private native void onResumeNative(long handle);
+ private native byte[] onSaveInstanceStateNative(long handle);
+ private native void onPauseNative(long handle);
+ private native void onStopNative(long handle);
+ private native void onConfigurationChangedNative(long handle);
+ private native void onLowMemoryNative(long handle);
+ private native void onWindowFocusChangedNative(long handle, boolean focused);
+ private native void onSurfaceCreatedNative(long handle, Surface surface);
+ private native void onSurfaceChangedNative(long handle, Surface surface,
int format, int width, int height);
- private native void onSurfaceRedrawNeededNative(int handle, Surface surface);
- private native void onSurfaceDestroyedNative(int handle);
- private native void onInputQueueCreatedNative(int handle, int queuePtr);
- private native void onInputQueueDestroyedNative(int handle, int queuePtr);
- private native void onContentRectChangedNative(int handle, int x, int y, int w, int h);
+ private native void onSurfaceRedrawNeededNative(long handle, Surface surface);
+ private native void onSurfaceDestroyedNative(long handle);
+ private native void onInputQueueCreatedNative(long handle, long queuePtr);
+ private native void onInputQueueDestroyedNative(long handle, long queuePtr);
+ private native void onContentRectChangedNative(long handle, int x, int y, int w, int h);
static class NativeContentView extends View {
NativeActivity mActivity;
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index cce6fc42da58..6be2b7bc3d7e 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -348,6 +348,13 @@ public class Notification implements Parcelable
*/
public static final int FLAG_HIGH_PRIORITY = 0x00000080;
+ /**
+ * Bit to be bitswise-ored into the {@link #flags} field that should be
+ * set if this notification is relevant to the current device only
+ * and it is not recommended that it bridge to other devices.
+ */
+ public static final int FLAG_LOCAL_ONLY = 0x00000100;
+
public int flags;
/**
@@ -1532,6 +1539,17 @@ public class Notification implements Parcelable
}
/**
+ * Set whether or not this notification should not bridge to other devices.
+ *
+ * <p>Some notifications can be bridged to other devices for remote display.
+ * This hint can be set to recommend this notification not be bridged.
+ */
+ public Builder setLocalOnly(boolean localOnly) {
+ setFlag(FLAG_LOCAL_ONLY, localOnly);
+ return this;
+ }
+
+ /**
* Set which notification properties will be inherited from system defaults.
* <p>
* The value should be one or more of the following fields combined with
@@ -1568,12 +1586,31 @@ public class Notification implements Parcelable
}
/**
- * Add metadata to this notification.
+ * Merge additional metadata into this notification.
+ *
+ * <p>Values within the Bundle will replace existing extras values in this Builder.
*
- * A reference to the Bundle is held for the lifetime of this Builder, and the Bundle's
+ * @see Notification#extras
+ */
+ public Builder addExtras(Bundle bag) {
+ if (mExtras == null) {
+ mExtras = new Bundle(bag);
+ } else {
+ mExtras.putAll(bag);
+ }
+ return this;
+ }
+
+ /**
+ * Set metadata for this notification.
+ *
+ * <p>A reference to the Bundle is held for the lifetime of this Builder, and the Bundle's
* current contents are copied into the Notification each time {@link #build()} is
* called.
*
+ * <p>Replaces any existing extras values with those from the provided Bundle.
+ * Use {@link #addExtras} to merge in metadata instead.
+ *
* @see Notification#extras
*/
public Builder setExtras(Bundle bag) {
@@ -1582,6 +1619,23 @@ public class Notification implements Parcelable
}
/**
+ * Get the current metadata Bundle used by this notification Builder.
+ *
+ * <p>The returned Bundle is shared with this Builder.
+ *
+ * <p>The current contents of this Bundle are copied into the Notification each time
+ * {@link #build()} is called.
+ *
+ * @see Notification#extras
+ */
+ public Bundle getExtras() {
+ if (mExtras == null) {
+ mExtras = new Bundle();
+ }
+ return mExtras;
+ }
+
+ /**
* Add an action to this notification. Actions are typically displayed by
* the system as a button adjacent to the notification content.
* <p>
@@ -1839,7 +1893,7 @@ public class Notification implements Parcelable
* this Notification object.
* @hide
*/
- public void addExtras(Bundle extras) {
+ public void populateExtras(Bundle extras) {
// Store original information used in the construction of this object
extras.putCharSequence(EXTRA_TITLE, mContentTitle);
extras.putCharSequence(EXTRA_TEXT, mContentText);
@@ -1877,7 +1931,7 @@ public class Notification implements Parcelable
n.extras = mExtras != null ? new Bundle(mExtras) : new Bundle();
- addExtras(n.extras);
+ populateExtras(n.extras);
if (mStyle != null) {
mStyle.addExtras(n.extras);
}
@@ -1900,8 +1954,7 @@ public class Notification implements Parcelable
* An object that can apply a rich notification style to a {@link Notification.Builder}
* object.
*/
- public static abstract class Style
- {
+ public static abstract class Style {
private CharSequence mBigContentTitle;
private CharSequence mSummaryText = null;
private boolean mSummaryTextSet = false;
diff --git a/core/java/android/app/SharedPreferencesImpl.java b/core/java/android/app/SharedPreferencesImpl.java
index 86fd7b977b1a..a292ecbf4df0 100644
--- a/core/java/android/app/SharedPreferencesImpl.java
+++ b/core/java/android/app/SharedPreferencesImpl.java
@@ -421,13 +421,15 @@ final class SharedPreferencesImpl implements SharedPreferences {
for (Map.Entry<String, Object> e : mModified.entrySet()) {
String k = e.getKey();
Object v = e.getValue();
- if (v == this) { // magic value for a removal mutation
+ // "this" is the magic value for a removal mutation. In addition,
+ // setting a value to "null" for a given key is specified to be
+ // equivalent to calling remove on that key.
+ if (v == this || v == null) {
if (!mMap.containsKey(k)) {
continue;
}
mMap.remove(k);
} else {
- boolean isSame = false;
if (mMap.containsKey(k)) {
Object existingValue = mMap.get(k);
if (existingValue != null && existingValue.equals(v)) {
diff --git a/core/java/android/app/backup/BackupDataInput.java b/core/java/android/app/backup/BackupDataInput.java
index 43b920a9b180..03205fb05d52 100644
--- a/core/java/android/app/backup/BackupDataInput.java
+++ b/core/java/android/app/backup/BackupDataInput.java
@@ -59,7 +59,7 @@ import java.io.IOException;
* }</pre>
*/
public class BackupDataInput {
- int mBackupReader;
+ long mBackupReader;
private EntityHeader mHeader = new EntityHeader();
private boolean mHeaderReady;
@@ -185,10 +185,10 @@ public class BackupDataInput {
}
}
- private native static int ctor(FileDescriptor fd);
- private native static void dtor(int mBackupReader);
+ private native static long ctor(FileDescriptor fd);
+ private native static void dtor(long mBackupReader);
- private native int readNextHeader_native(int mBackupReader, EntityHeader entity);
- private native int readEntityData_native(int mBackupReader, byte[] data, int offset, int size);
- private native int skipEntityData_native(int mBackupReader);
+ private native int readNextHeader_native(long mBackupReader, EntityHeader entity);
+ private native int readEntityData_native(long mBackupReader, byte[] data, int offset, int size);
+ private native int skipEntityData_native(long mBackupReader);
}
diff --git a/core/java/android/app/backup/BackupDataOutput.java b/core/java/android/app/backup/BackupDataOutput.java
index 22668b6533ab..3a070b602c12 100644
--- a/core/java/android/app/backup/BackupDataOutput.java
+++ b/core/java/android/app/backup/BackupDataOutput.java
@@ -62,7 +62,7 @@ import java.io.IOException;
* @see BackupAgent
*/
public class BackupDataOutput {
- int mBackupWriter;
+ long mBackupWriter;
/** @hide */
public BackupDataOutput(FileDescriptor fd) {
@@ -121,11 +121,11 @@ public class BackupDataOutput {
}
}
- private native static int ctor(FileDescriptor fd);
- private native static void dtor(int mBackupWriter);
+ private native static long ctor(FileDescriptor fd);
+ private native static void dtor(long mBackupWriter);
- private native static int writeEntityHeader_native(int mBackupWriter, String key, int dataSize);
- private native static int writeEntityData_native(int mBackupWriter, byte[] data, int size);
- private native static void setKeyPrefix_native(int mBackupWriter, String keyPrefix);
+ private native static int writeEntityHeader_native(long mBackupWriter, String key, int dataSize);
+ private native static int writeEntityData_native(long mBackupWriter, byte[] data, int size);
+ private native static void setKeyPrefix_native(long mBackupWriter, String keyPrefix);
}
diff --git a/core/java/android/app/backup/FileBackupHelperBase.java b/core/java/android/app/backup/FileBackupHelperBase.java
index 887a2e69374c..4ed5197aa6b4 100644
--- a/core/java/android/app/backup/FileBackupHelperBase.java
+++ b/core/java/android/app/backup/FileBackupHelperBase.java
@@ -29,7 +29,7 @@ import java.io.FileDescriptor;
class FileBackupHelperBase {
private static final String TAG = "FileBackupHelperBase";
- int mPtr;
+ long mPtr;
Context mContext;
boolean mExceptionLogged;
@@ -115,14 +115,13 @@ class FileBackupHelperBase {
return false;
}
- private static native int ctor();
- private static native void dtor(int ptr);
+ private static native long ctor();
+ private static native void dtor(long ptr);
native private static int performBackup_native(FileDescriptor oldState,
- int data, FileDescriptor newState, String[] files, String[] keys);
-
- private static native int writeFile_native(int ptr, String filename, int backupReader);
- private static native int writeSnapshot_native(int ptr, FileDescriptor fd);
+ long data, FileDescriptor newState, String[] files, String[] keys);
+ private static native int writeFile_native(long ptr, String filename, long backupReader);
+ private static native int writeSnapshot_native(long ptr, FileDescriptor fd);
}
diff --git a/core/java/android/bluetooth/BluetoothInputDevice.java b/core/java/android/bluetooth/BluetoothInputDevice.java
index 844f432ca32f..c48b15d10246 100644
--- a/core/java/android/bluetooth/BluetoothInputDevice.java
+++ b/core/java/android/bluetooth/BluetoothInputDevice.java
@@ -76,6 +76,19 @@ public final class BluetoothInputDevice implements BluetoothProfile {
public static final String ACTION_PROTOCOL_MODE_CHANGED =
"android.bluetooth.input.profile.action.PROTOCOL_MODE_CHANGED";
+ /**
+ * @hide
+ */
+ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
+ public static final String ACTION_HANDSHAKE =
+ "android.bluetooth.input.profile.action.HANDSHAKE";
+
+ /**
+ * @hide
+ */
+ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
+ public static final String ACTION_REPORT =
+ "android.bluetooth.input.profile.action.REPORT";
/**
* @hide
@@ -130,17 +143,17 @@ public final class BluetoothInputDevice implements BluetoothProfile {
/**
* @hide
*/
- public static final byte REPORT_TYPE_INPUT = 0;
+ public static final byte REPORT_TYPE_INPUT = 1;
/**
* @hide
*/
- public static final byte REPORT_TYPE_OUTPUT = 1;
+ public static final byte REPORT_TYPE_OUTPUT = 2;
/**
* @hide
*/
- public static final byte REPORT_TYPE_FEATURE = 2;
+ public static final byte REPORT_TYPE_FEATURE = 3;
/**
* @hide
@@ -180,6 +193,11 @@ public final class BluetoothInputDevice implements BluetoothProfile {
/**
* @hide
*/
+ public static final String EXTRA_STATUS = "android.bluetooth.BluetoothInputDevice.extra.STATUS";
+
+ /**
+ * @hide
+ */
public static final String EXTRA_VIRTUAL_UNPLUG_STATUS = "android.bluetooth.BluetoothInputDevice.extra.VIRTUAL_UNPLUG_STATUS";
private Context mContext;
@@ -603,7 +621,7 @@ public final class BluetoothInputDevice implements BluetoothProfile {
* @hide
*/
public boolean setReport(BluetoothDevice device, byte reportType, String report) {
- if (DBG) log("setReport(" + device + "), reportType=" + reportType + " report=" + report);
+ if (VDBG) log("setReport(" + device + "), reportType=" + reportType + " report=" + report);
if (mService != null && isEnabled() && isValidDevice(device)) {
try {
return mService.setReport(device, reportType, report);
diff --git a/core/java/android/bluetooth/BluetoothSocket.java b/core/java/android/bluetooth/BluetoothSocket.java
index d10eaea2fba1..1e75fc2a1c01 100644
--- a/core/java/android/bluetooth/BluetoothSocket.java
+++ b/core/java/android/bluetooth/BluetoothSocket.java
@@ -417,27 +417,28 @@ public final class BluetoothSocket implements Closeable {
* if an i/o error occurs.
*/
/*package*/ void flush() throws IOException {
+ if (mSocketOS == null) throw new IOException("flush is called on null OutputStream");
if (VDBG) Log.d(TAG, "flush: " + mSocketOS);
mSocketOS.flush();
}
/*package*/ int read(byte[] b, int offset, int length) throws IOException {
-
- if (VDBG) Log.d(TAG, "read in: " + mSocketIS + " len: " + length);
- int ret = mSocketIS.read(b, offset, length);
- if(ret < 0)
- throw new IOException("bt socket closed, read return: " + ret);
- if (VDBG) Log.d(TAG, "read out: " + mSocketIS + " ret: " + ret);
- return ret;
+ if (mSocketIS == null) throw new IOException("read is called on null InputStream");
+ if (VDBG) Log.d(TAG, "read in: " + mSocketIS + " len: " + length);
+ int ret = mSocketIS.read(b, offset, length);
+ if(ret < 0)
+ throw new IOException("bt socket closed, read return: " + ret);
+ if (VDBG) Log.d(TAG, "read out: " + mSocketIS + " ret: " + ret);
+ return ret;
}
/*package*/ int write(byte[] b, int offset, int length) throws IOException {
-
- if (VDBG) Log.d(TAG, "write: " + mSocketOS + " length: " + length);
- mSocketOS.write(b, offset, length);
- // There is no good way to confirm since the entire process is asynchronous anyway
- if (VDBG) Log.d(TAG, "write out: " + mSocketOS + " length: " + length);
- return length;
+ if (mSocketOS == null) throw new IOException("write is called on null OutputStream");
+ if (VDBG) Log.d(TAG, "write: " + mSocketOS + " length: " + length);
+ mSocketOS.write(b, offset, length);
+ // There is no good way to confirm since the entire process is asynchronous anyway
+ if (VDBG) Log.d(TAG, "write out: " + mSocketOS + " length: " + length);
+ return length;
}
@Override
diff --git a/core/java/android/content/ContentProviderNative.java b/core/java/android/content/ContentProviderNative.java
index bcf0b637a213..39286d6ea9b6 100644
--- a/core/java/android/content/ContentProviderNative.java
+++ b/core/java/android/content/ContentProviderNative.java
@@ -112,17 +112,24 @@ abstract public class ContentProviderNative extends Binder implements IContentPr
Cursor cursor = query(callingPkg, url, projection, selection, selectionArgs,
sortOrder, cancellationSignal);
if (cursor != null) {
+ CursorToBulkCursorAdaptor adaptor = null;
+
try {
- CursorToBulkCursorAdaptor adaptor = new CursorToBulkCursorAdaptor(
- cursor, observer, getProviderName());
- BulkCursorDescriptor d = adaptor.getBulkCursorDescriptor();
+ adaptor = new CursorToBulkCursorAdaptor(cursor, observer,
+ getProviderName());
cursor = null;
+ BulkCursorDescriptor d = adaptor.getBulkCursorDescriptor();
+ adaptor = null;
+
reply.writeNoException();
reply.writeInt(1);
d.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
} finally {
// Close cursor if an exception was thrown while constructing the adaptor.
+ if (adaptor != null) {
+ adaptor.close();
+ }
if (cursor != null) {
cursor.close();
}
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index 3c66b6871f74..590ccf894e30 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -2765,6 +2765,12 @@ public class Intent implements Parcelable, Cloneable {
@SdkConstant(SdkConstantType.INTENT_CATEGORY)
public static final String CATEGORY_LAUNCHER = "android.intent.category.LAUNCHER";
/**
+ * Indicates an activity optimized for Leanback mode, and that should
+ * be displayed in the Leanback launcher.
+ */
+ @SdkConstant(SdkConstantType.INTENT_CATEGORY)
+ public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
+ /**
* Provides information about the package it is in; typically used if
* a package does not contain a {@link #CATEGORY_LAUNCHER} to provide
* a front-door to the user without having to be shown in the all apps list.
@@ -3538,6 +3544,11 @@ public class Intent implements Parcelable, Cloneable {
* it will be finished so that the user does not return to them, but
* instead returns to whatever activity preceeded it.
*
+ * <p>When this flag is assigned to the root activity all activities up
+ * to, but not including the root activity, will be cleared. This prevents
+ * this flag from being used to finish all activities in a task and thereby
+ * ending the task.
+ *
* <p>This is useful for cases where you have a logical break in your
* application. For example, an e-mail application may have a command
* to view an attachment, which launches an image view activity to
diff --git a/core/java/android/content/pm/ComponentInfo.java b/core/java/android/content/pm/ComponentInfo.java
index 4dbcf233dd33..7e8f285e93aa 100644
--- a/core/java/android/content/pm/ComponentInfo.java
+++ b/core/java/android/content/pm/ComponentInfo.java
@@ -128,6 +128,17 @@ public class ComponentInfo extends PackageItemInfo {
return logo != 0 ? logo : applicationInfo.logo;
}
+ /**
+ * Return the banner resource identifier to use for this component. If the
+ * component defines a banner, that is used; else, the application banner is
+ * used.
+ *
+ * @return The banner associated with this component.
+ */
+ public final int getBannerResource() {
+ return banner != 0 ? banner : applicationInfo.banner;
+ }
+
protected void dumpFront(Printer pw, String prefix) {
super.dumpFront(pw, prefix);
pw.println(prefix + "enabled=" + enabled + " exported=" + exported
@@ -175,6 +186,13 @@ public class ComponentInfo extends PackageItemInfo {
/**
* @hide
*/
+ @Override protected Drawable loadDefaultBanner(PackageManager pm) {
+ return applicationInfo.loadBanner(pm);
+ }
+
+ /**
+ * @hide
+ */
@Override
protected Drawable loadDefaultLogo(PackageManager pm) {
return applicationInfo.loadLogo(pm);
diff --git a/core/java/android/content/pm/PackageItemInfo.java b/core/java/android/content/pm/PackageItemInfo.java
index a67326eafb0c..58f1c84803c8 100644
--- a/core/java/android/content/pm/PackageItemInfo.java
+++ b/core/java/android/content/pm/PackageItemInfo.java
@@ -68,6 +68,12 @@ public class PackageItemInfo {
/**
* A drawable resource identifier (in the package's resources) of this
+ * component's banner. From the "banner" attribute or, if not set, 0.
+ */
+ public int banner;
+
+ /**
+ * A drawable resource identifier (in the package's resources) of this
* component's logo. Logos may be larger/wider than icons and are
* displayed by certain UI elements in place of a name or name/icon
* combination. From the "logo" attribute or, if not set, 0.
@@ -92,6 +98,7 @@ public class PackageItemInfo {
nonLocalizedLabel = orig.nonLocalizedLabel;
if (nonLocalizedLabel != null) nonLocalizedLabel = nonLocalizedLabel.toString().trim();
icon = orig.icon;
+ banner = orig.banner;
logo = orig.logo;
metaData = orig.metaData;
}
@@ -146,6 +153,27 @@ public class PackageItemInfo {
}
/**
+ * Retrieve the current graphical banner associated with this item. This
+ * will call back on the given PackageManager to load the banner from
+ * the application.
+ *
+ * @param pm A PackageManager from which the banner can be loaded; usually
+ * the PackageManager from which you originally retrieved this item.
+ *
+ * @return Returns a Drawable containing the item's banner. If the item
+ * does not have a banner, this method will return null.
+ */
+ public Drawable loadBanner(PackageManager pm) {
+ if (banner != 0) {
+ Drawable dr = pm.getDrawable(packageName, banner, getApplicationInfo());
+ if (dr != null) {
+ return dr;
+ }
+ }
+ return loadDefaultBanner(pm);
+ }
+
+ /**
* Retrieve the default graphical icon associated with this item.
*
* @param pm A PackageManager from which the icon can be loaded; usually
@@ -159,7 +187,22 @@ public class PackageItemInfo {
protected Drawable loadDefaultIcon(PackageManager pm) {
return pm.getDefaultActivityIcon();
}
-
+
+ /**
+ * Retrieve the default graphical banner associated with this item.
+ *
+ * @param pm A PackageManager from which the banner can be loaded; usually
+ * the PackageManager from which you originally retrieved this item.
+ *
+ * @return Returns a Drawable containing the item's default banner
+ * or null if no default logo is available.
+ *
+ * @hide
+ */
+ protected Drawable loadDefaultBanner(PackageManager pm) {
+ return null;
+ }
+
/**
* Retrieve the current graphical logo associated with this item. This
* will call back on the given PackageManager to load the logo from
@@ -224,10 +267,11 @@ public class PackageItemInfo {
pw.println(prefix + "name=" + name);
}
pw.println(prefix + "packageName=" + packageName);
- if (labelRes != 0 || nonLocalizedLabel != null || icon != 0) {
+ if (labelRes != 0 || nonLocalizedLabel != null || icon != 0 || banner != 0) {
pw.println(prefix + "labelRes=0x" + Integer.toHexString(labelRes)
+ " nonLocalizedLabel=" + nonLocalizedLabel
- + " icon=0x" + Integer.toHexString(icon));
+ + " icon=0x" + Integer.toHexString(icon)
+ + " banner=0x" + Integer.toHexString(banner));
}
}
@@ -243,6 +287,7 @@ public class PackageItemInfo {
dest.writeInt(icon);
dest.writeInt(logo);
dest.writeBundle(metaData);
+ dest.writeInt(banner);
}
protected PackageItemInfo(Parcel source) {
@@ -254,6 +299,7 @@ public class PackageItemInfo {
icon = source.readInt();
logo = source.readInt();
metaData = source.readBundle();
+ banner = source.readInt();
}
/**
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index c97c2b89304d..34a6f1d0d726 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -1225,6 +1225,26 @@ public abstract class PackageManager {
/**
* Feature for {@link #getSystemAvailableFeatures} and
+ * {@link #hasSystemFeature}: The device supports leanback UI. This is
+ * typically used in a living room television experience, but is a software
+ * feature unlike {@link #FEATURE_TELEVISION}. Devices running with this
+ * feature will use resources associated with the "television" UI mode.
+ */
+ @SdkConstant(SdkConstantType.FEATURE)
+ public static final String FEATURE_LEANBACK = "android.software.leanback";
+
+ /**
+ * Feature for {@link #getSystemAvailableFeatures} and
+ * {@link #hasSystemFeature}: The device supports only leanback UI. Only
+ * applications designed for this experience should be run, though this is
+ * not enforced by the system.
+ * @hide
+ */
+ @SdkConstant(SdkConstantType.FEATURE)
+ public static final String FEATURE_LEANBACK_ONLY = "android.software.leanback_only";
+
+ /**
+ * Feature for {@link #getSystemAvailableFeatures} and
* {@link #hasSystemFeature}: The device supports WiFi (802.11) networking.
*/
@SdkConstant(SdkConstantType.FEATURE)
@@ -1244,11 +1264,35 @@ public abstract class PackageManager {
* room television experience: displayed on a big screen, where the user
* is sitting far away from it, and the dominant form of input will be
* something like a DPAD, not through touch or mouse.
+ * @deprecated use {@link #FEATURE_LEANBACK} instead.
*/
@SdkConstant(SdkConstantType.FEATURE)
public static final String FEATURE_TELEVISION = "android.hardware.type.television";
/**
+ * Feature for {@link #getSystemAvailableFeatures} and
+ * {@link #hasSystemFeature}: This is a device dedicated to showing UI
+ * on a watch. A watch here is defined to be a device worn on the body, perhaps on
+ * the wrist. The user is very close when interacting with the device.
+ */
+ @SdkConstant(SdkConstantType.FEATURE)
+ public static final String FEATURE_WATCH = "android.hardware.type.watch";
+
+ /**
+ * Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}:
+ * The device supports printing.
+ */
+ @SdkConstant(SdkConstantType.FEATURE)
+ public static final String FEATURE_PRINTING = "android.software.print";
+
+ /**
+ * Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}:
+ * The device can perform backup and restore operations on installed applications.
+ */
+ @SdkConstant(SdkConstantType.FEATURE)
+ public static final String FEATURE_BACKUP = "android.software.backup";
+
+ /**
* Action to external storage service to clean out removed apps.
* @hide
*/
@@ -2369,9 +2413,43 @@ public abstract class PackageManager {
throws NameNotFoundException;
/**
+ * Retrieve the banner associated with an activity. Given the full name of
+ * an activity, retrieves the information about it and calls
+ * {@link ComponentInfo#loadIcon ComponentInfo.loadIcon()} to return its
+ * banner. If the activity cannot be found, NameNotFoundException is thrown.
+ *
+ * @param activityName Name of the activity whose banner is to be retrieved.
+ * @return Returns the image of the banner, or null if the activity has no
+ * banner specified.
+ * @throws NameNotFoundException Thrown if the resources for the given
+ * activity could not be loaded.
+ * @see #getActivityBanner(Intent)
+ */
+ public abstract Drawable getActivityBanner(ComponentName activityName)
+ throws NameNotFoundException;
+
+ /**
+ * Retrieve the banner associated with an Intent. If intent.getClassName()
+ * is set, this simply returns the result of
+ * getActivityBanner(intent.getClassName()). Otherwise it resolves the
+ * intent's component and returns the banner associated with the resolved
+ * component. If intent.getClassName() cannot be found or the Intent cannot
+ * be resolved to a component, NameNotFoundException is thrown.
+ *
+ * @param intent The intent for which you would like to retrieve a banner.
+ * @return Returns the image of the banner, or null if the activity has no
+ * banner specified.
+ * @throws NameNotFoundException Thrown if the resources for application
+ * matching the given intent could not be loaded.
+ * @see #getActivityBanner(ComponentName)
+ */
+ public abstract Drawable getActivityBanner(Intent intent)
+ throws NameNotFoundException;
+
+ /**
* Return the generic icon for an activity that is used when no specific
* icon is defined.
- *
+ *
* @return Drawable Image of the icon.
*/
public abstract Drawable getDefaultActivityIcon();
@@ -2409,19 +2487,43 @@ public abstract class PackageManager {
throws NameNotFoundException;
/**
- * Retrieve the logo associated with an activity. Given the full name of
- * an activity, retrieves the information about it and calls
- * {@link ComponentInfo#loadLogo ComponentInfo.loadLogo()} to return its logo.
- * If the activity cannot be found, NameNotFoundException is thrown.
- *
- * @param activityName Name of the activity whose logo is to be retrieved.
+ * Retrieve the banner associated with an application.
*
- * @return Returns the image of the logo or null if the activity has no
- * logo specified.
+ * @param info Information about application being queried.
+ * @return Returns the image of the banner or null if the application has no
+ * banner specified.
+ * @see #getApplicationBanner(String)
+ */
+ public abstract Drawable getApplicationBanner(ApplicationInfo info);
+
+ /**
+ * Retrieve the banner associated with an application. Given the name of the
+ * application's package, retrieves the information about it and calls
+ * getApplicationIcon() to return its banner. If the application cannot be
+ * found, NameNotFoundException is thrown.
*
+ * @param packageName Name of the package whose application banner is to be
+ * retrieved.
+ * @return Returns the image of the banner or null if the application has no
+ * banner specified.
* @throws NameNotFoundException Thrown if the resources for the given
- * activity could not be loaded.
+ * application could not be loaded.
+ * @see #getApplicationBanner(ApplicationInfo)
+ */
+ public abstract Drawable getApplicationBanner(String packageName)
+ throws NameNotFoundException;
+
+ /**
+ * Retrieve the logo associated with an activity. Given the full name of an
+ * activity, retrieves the information about it and calls
+ * {@link ComponentInfo#loadLogo ComponentInfo.loadLogo()} to return its
+ * logo. If the activity cannot be found, NameNotFoundException is thrown.
*
+ * @param activityName Name of the activity whose logo is to be retrieved.
+ * @return Returns the image of the logo or null if the activity has no logo
+ * specified.
+ * @throws NameNotFoundException Thrown if the resources for the given
+ * activity could not be loaded.
* @see #getActivityLogo(Intent)
*/
public abstract Drawable getActivityLogo(ComponentName activityName)
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index e6da288fedbd..4f1983e4978e 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -58,7 +58,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
+import java.util.jar.StrictJarFile;
import java.util.zip.ZipEntry;
import com.android.internal.util.XmlUtils;
@@ -167,18 +167,20 @@ public class PackageParser {
final int labelRes;
final int iconRes;
final int logoRes;
+ final int bannerRes;
String tag;
TypedArray sa;
ParsePackageItemArgs(Package _owner, String[] _outError,
- int _nameRes, int _labelRes, int _iconRes, int _logoRes) {
+ int _nameRes, int _labelRes, int _iconRes, int _logoRes, int _bannerRes) {
owner = _owner;
outError = _outError;
nameRes = _nameRes;
labelRes = _labelRes;
iconRes = _iconRes;
logoRes = _logoRes;
+ bannerRes = _bannerRes;
}
}
@@ -190,10 +192,10 @@ public class PackageParser {
int flags;
ParseComponentArgs(Package _owner, String[] _outError,
- int _nameRes, int _labelRes, int _iconRes, int _logoRes,
+ int _nameRes, int _labelRes, int _iconRes, int _logoRes, int _bannerRes,
String[] _sepProcesses, int _processRes,
int _descriptionRes, int _enabledRes) {
- super(_owner, _outError, _nameRes, _labelRes, _iconRes, _logoRes);
+ super(_owner, _outError, _nameRes, _labelRes, _iconRes, _logoRes, _bannerRes);
sepProcesses = _sepProcesses;
processRes = _processRes;
descriptionRes = _descriptionRes;
@@ -456,7 +458,7 @@ public class PackageParser {
return pi;
}
- private Certificate[] loadCertificates(JarFile jarFile, JarEntry je,
+ private Certificate[] loadCertificates(StrictJarFile jarFile, ZipEntry je,
byte[] readBuffer) {
try {
// We must read the stream for the JarEntry to retrieve
@@ -466,13 +468,11 @@ public class PackageParser {
// not using
}
is.close();
- return je != null ? je.getCertificates() : null;
+ return je != null ? jarFile.getCertificates(je) : null;
} catch (IOException e) {
- Slog.w(TAG, "Exception reading " + je.getName() + " in "
- + jarFile.getName(), e);
+ Slog.w(TAG, "Exception reading " + je.getName() + " in " + jarFile, e);
} catch (RuntimeException e) {
- Slog.w(TAG, "Exception reading " + je.getName() + " in "
- + jarFile.getName(), e);
+ Slog.w(TAG, "Exception reading " + je.getName() + " in " + jarFile, e);
}
return null;
}
@@ -591,9 +591,9 @@ public class PackageParser {
*/
public boolean collectManifestDigest(Package pkg) {
try {
- final JarFile jarFile = new JarFile(mArchiveSourcePath);
+ final StrictJarFile jarFile = new StrictJarFile(mArchiveSourcePath);
try {
- final ZipEntry je = jarFile.getEntry(ANDROID_MANIFEST_FILENAME);
+ final ZipEntry je = jarFile.findEntry(ANDROID_MANIFEST_FILENAME);
if (je != null) {
pkg.manifestDigest = ManifestDigest.fromInputStream(jarFile.getInputStream(je));
}
@@ -624,7 +624,7 @@ public class PackageParser {
}
try {
- JarFile jarFile = new JarFile(mArchiveSourcePath);
+ StrictJarFile jarFile = new StrictJarFile(mArchiveSourcePath);
Certificate[] certs = null;
@@ -633,7 +633,7 @@ public class PackageParser {
// can trust it... we'll just use the AndroidManifest.xml
// to retrieve its signatures, not validating all of the
// files.
- JarEntry jarEntry = jarFile.getJarEntry(ANDROID_MANIFEST_FILENAME);
+ ZipEntry jarEntry = jarFile.findEntry(ANDROID_MANIFEST_FILENAME);
certs = loadCertificates(jarFile, jarEntry, readBuffer);
if (certs == null) {
Slog.e(TAG, "Package " + pkg.packageName
@@ -656,9 +656,9 @@ public class PackageParser {
}
}
} else {
- Enumeration<JarEntry> entries = jarFile.entries();
- while (entries.hasMoreElements()) {
- final JarEntry je = entries.nextElement();
+ Iterator<ZipEntry> entries = jarFile.iterator();
+ while (entries.hasNext()) {
+ final ZipEntry je = entries.next();
if (je.isDirectory()) continue;
final String name = je.getName();
@@ -744,6 +744,10 @@ public class PackageParser {
Slog.w(TAG, "Exception reading " + mArchiveSourcePath, e);
mParseError = PackageManager.INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING;
return false;
+ } catch (SecurityException e) {
+ Slog.w(TAG, "Exception reading " + mArchiveSourcePath, e);
+ mParseError = PackageManager.INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING;
+ return false;
} catch (RuntimeException e) {
Slog.w(TAG, "Exception reading " + mArchiveSourcePath, e);
mParseError = PackageManager.INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION;
@@ -1654,7 +1658,8 @@ public class PackageParser {
com.android.internal.R.styleable.AndroidManifestPermissionGroup_name,
com.android.internal.R.styleable.AndroidManifestPermissionGroup_label,
com.android.internal.R.styleable.AndroidManifestPermissionGroup_icon,
- com.android.internal.R.styleable.AndroidManifestPermissionGroup_logo)) {
+ com.android.internal.R.styleable.AndroidManifestPermissionGroup_logo,
+ com.android.internal.R.styleable.AndroidManifestPermissionGroup_banner)) {
sa.recycle();
mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;
return null;
@@ -1697,7 +1702,8 @@ public class PackageParser {
com.android.internal.R.styleable.AndroidManifestPermission_name,
com.android.internal.R.styleable.AndroidManifestPermission_label,
com.android.internal.R.styleable.AndroidManifestPermission_icon,
- com.android.internal.R.styleable.AndroidManifestPermission_logo)) {
+ com.android.internal.R.styleable.AndroidManifestPermission_logo,
+ com.android.internal.R.styleable.AndroidManifestPermission_banner)) {
sa.recycle();
mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;
return null;
@@ -1766,7 +1772,8 @@ public class PackageParser {
com.android.internal.R.styleable.AndroidManifestPermissionTree_name,
com.android.internal.R.styleable.AndroidManifestPermissionTree_label,
com.android.internal.R.styleable.AndroidManifestPermissionTree_icon,
- com.android.internal.R.styleable.AndroidManifestPermissionTree_logo)) {
+ com.android.internal.R.styleable.AndroidManifestPermissionTree_logo,
+ com.android.internal.R.styleable.AndroidManifestPermissionTree_banner)) {
sa.recycle();
mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;
return null;
@@ -1811,7 +1818,8 @@ public class PackageParser {
com.android.internal.R.styleable.AndroidManifestInstrumentation_name,
com.android.internal.R.styleable.AndroidManifestInstrumentation_label,
com.android.internal.R.styleable.AndroidManifestInstrumentation_icon,
- com.android.internal.R.styleable.AndroidManifestInstrumentation_logo);
+ com.android.internal.R.styleable.AndroidManifestInstrumentation_logo,
+ com.android.internal.R.styleable.AndroidManifestInstrumentation_banner);
mParseInstrumentationArgs.tag = "<instrumentation>";
}
@@ -1927,6 +1935,8 @@ public class PackageParser {
com.android.internal.R.styleable.AndroidManifestApplication_icon, 0);
ai.logo = sa.getResourceId(
com.android.internal.R.styleable.AndroidManifestApplication_logo, 0);
+ ai.banner = sa.getResourceId(
+ com.android.internal.R.styleable.AndroidManifestApplication_banner, 0);
ai.theme = sa.getResourceId(
com.android.internal.R.styleable.AndroidManifestApplication_theme, 0);
ai.descriptionRes = sa.getResourceId(
@@ -2220,7 +2230,7 @@ public class PackageParser {
private boolean parsePackageItemInfo(Package owner, PackageItemInfo outInfo,
String[] outError, String tag, TypedArray sa,
- int nameRes, int labelRes, int iconRes, int logoRes) {
+ int nameRes, int labelRes, int iconRes, int logoRes, int bannerRes) {
String name = sa.getNonConfigurationString(nameRes, 0);
if (name == null) {
outError[0] = tag + " does not specify android:name";
@@ -2244,6 +2254,11 @@ public class PackageParser {
outInfo.logo = logoVal;
}
+ int bannerVal = sa.getResourceId(bannerRes, 0);
+ if (bannerVal != 0) {
+ outInfo.banner = bannerVal;
+ }
+
TypedValue v = sa.peekValue(labelRes);
if (v != null && (outInfo.labelRes=v.resourceId) == 0) {
outInfo.nonLocalizedLabel = v.coerceToString();
@@ -2267,6 +2282,7 @@ public class PackageParser {
com.android.internal.R.styleable.AndroidManifestActivity_label,
com.android.internal.R.styleable.AndroidManifestActivity_icon,
com.android.internal.R.styleable.AndroidManifestActivity_logo,
+ com.android.internal.R.styleable.AndroidManifestActivity_banner,
mSeparateProcesses,
com.android.internal.R.styleable.AndroidManifestActivity_process,
com.android.internal.R.styleable.AndroidManifestActivity_description,
@@ -2552,6 +2568,7 @@ public class PackageParser {
com.android.internal.R.styleable.AndroidManifestActivityAlias_label,
com.android.internal.R.styleable.AndroidManifestActivityAlias_icon,
com.android.internal.R.styleable.AndroidManifestActivityAlias_logo,
+ com.android.internal.R.styleable.AndroidManifestActivityAlias_banner,
mSeparateProcesses,
0,
com.android.internal.R.styleable.AndroidManifestActivityAlias_description,
@@ -2586,6 +2603,7 @@ public class PackageParser {
info.flags = target.info.flags;
info.icon = target.info.icon;
info.logo = target.info.logo;
+ info.banner = target.info.banner;
info.labelRes = target.info.labelRes;
info.nonLocalizedLabel = target.info.nonLocalizedLabel;
info.launchMode = target.info.launchMode;
@@ -2699,6 +2717,7 @@ public class PackageParser {
com.android.internal.R.styleable.AndroidManifestProvider_label,
com.android.internal.R.styleable.AndroidManifestProvider_icon,
com.android.internal.R.styleable.AndroidManifestProvider_logo,
+ com.android.internal.R.styleable.AndroidManifestProvider_banner,
mSeparateProcesses,
com.android.internal.R.styleable.AndroidManifestProvider_process,
com.android.internal.R.styleable.AndroidManifestProvider_description,
@@ -3005,6 +3024,7 @@ public class PackageParser {
com.android.internal.R.styleable.AndroidManifestService_label,
com.android.internal.R.styleable.AndroidManifestService_icon,
com.android.internal.R.styleable.AndroidManifestService_logo,
+ com.android.internal.R.styleable.AndroidManifestService_banner,
mSeparateProcesses,
com.android.internal.R.styleable.AndroidManifestService_process,
com.android.internal.R.styleable.AndroidManifestService_description,
@@ -3302,6 +3322,9 @@ public class PackageParser {
outInfo.logo = sa.getResourceId(
com.android.internal.R.styleable.AndroidManifestIntentFilter_logo, 0);
+ outInfo.banner = sa.getResourceId(
+ com.android.internal.R.styleable.AndroidManifestIntentFilter_banner, 0);
+
sa.recycle();
int outerDepth = parser.getDepth();
@@ -3664,6 +3687,11 @@ public class PackageParser {
outInfo.logo = logoVal;
}
+ int bannerVal = args.sa.getResourceId(args.bannerRes, 0);
+ if (bannerVal != 0) {
+ outInfo.banner = bannerVal;
+ }
+
TypedValue v = args.sa.peekValue(args.labelRes);
if (v != null && (outInfo.labelRes=v.resourceId) == 0) {
outInfo.nonLocalizedLabel = v.coerceToString();
@@ -4088,6 +4116,7 @@ public class PackageParser {
public CharSequence nonLocalizedLabel;
public int icon;
public int logo;
+ public int banner;
public int preferred;
}
diff --git a/core/java/android/content/res/AssetManager.java b/core/java/android/content/res/AssetManager.java
index fc9e48661815..93ce633fdcdc 100644
--- a/core/java/android/content/res/AssetManager.java
+++ b/core/java/android/content/res/AssetManager.java
@@ -70,7 +70,6 @@ public final class AssetManager {
// For communication with native code.
private int mObject;
- private int mNObject; // used by the NDK
private StringBlock mStringBlocks[] = null;
@@ -540,6 +539,12 @@ public final class AssetManager {
public final int getAssetInt() {
return mAsset;
}
+ /**
+ * @hide
+ */
+ public final long getNativeAsset() {
+ return mAsset;
+ }
private AssetInputStream(int asset)
{
mAsset = asset;
diff --git a/core/java/android/database/CursorWindow.java b/core/java/android/database/CursorWindow.java
index f1f30175c588..197e3ff3eda7 100644
--- a/core/java/android/database/CursorWindow.java
+++ b/core/java/android/database/CursorWindow.java
@@ -27,6 +27,7 @@ import android.os.Parcelable;
import android.os.Process;
import android.util.Log;
import android.util.SparseIntArray;
+import android.util.LongSparseArray;
/**
* A buffer containing multiple cursor rows.
@@ -52,40 +53,40 @@ public class CursorWindow extends SQLiteClosable implements Parcelable {
* The native CursorWindow object pointer. (FOR INTERNAL USE ONLY)
* @hide
*/
- public int mWindowPtr;
+ public long mWindowPtr;
private int mStartPos;
private final String mName;
private final CloseGuard mCloseGuard = CloseGuard.get();
- private static native int nativeCreate(String name, int cursorWindowSize);
- private static native int nativeCreateFromParcel(Parcel parcel);
- private static native void nativeDispose(int windowPtr);
- private static native void nativeWriteToParcel(int windowPtr, Parcel parcel);
+ private static native long nativeCreate(String name, int cursorWindowSize);
+ private static native long nativeCreateFromParcel(Parcel parcel);
+ private static native void nativeDispose(long windowPtr);
+ private static native void nativeWriteToParcel(long windowPtr, Parcel parcel);
- private static native void nativeClear(int windowPtr);
+ private static native void nativeClear(long windowPtr);
- private static native int nativeGetNumRows(int windowPtr);
- private static native boolean nativeSetNumColumns(int windowPtr, int columnNum);
- private static native boolean nativeAllocRow(int windowPtr);
- private static native void nativeFreeLastRow(int windowPtr);
+ private static native int nativeGetNumRows(long windowPtr);
+ private static native boolean nativeSetNumColumns(long windowPtr, int columnNum);
+ private static native boolean nativeAllocRow(long windowPtr);
+ private static native void nativeFreeLastRow(long windowPtr);
- private static native int nativeGetType(int windowPtr, int row, int column);
- private static native byte[] nativeGetBlob(int windowPtr, int row, int column);
- private static native String nativeGetString(int windowPtr, int row, int column);
- private static native long nativeGetLong(int windowPtr, int row, int column);
- private static native double nativeGetDouble(int windowPtr, int row, int column);
- private static native void nativeCopyStringToBuffer(int windowPtr, int row, int column,
+ private static native int nativeGetType(long windowPtr, int row, int column);
+ private static native byte[] nativeGetBlob(long windowPtr, int row, int column);
+ private static native String nativeGetString(long windowPtr, int row, int column);
+ private static native long nativeGetLong(long windowPtr, int row, int column);
+ private static native double nativeGetDouble(long windowPtr, int row, int column);
+ private static native void nativeCopyStringToBuffer(long windowPtr, int row, int column,
CharArrayBuffer buffer);
- private static native boolean nativePutBlob(int windowPtr, byte[] value, int row, int column);
- private static native boolean nativePutString(int windowPtr, String value, int row, int column);
- private static native boolean nativePutLong(int windowPtr, long value, int row, int column);
- private static native boolean nativePutDouble(int windowPtr, double value, int row, int column);
- private static native boolean nativePutNull(int windowPtr, int row, int column);
+ private static native boolean nativePutBlob(long windowPtr, byte[] value, int row, int column);
+ private static native boolean nativePutString(long windowPtr, String value, int row, int column);
+ private static native boolean nativePutLong(long windowPtr, long value, int row, int column);
+ private static native boolean nativePutDouble(long windowPtr, double value, int row, int column);
+ private static native boolean nativePutNull(long windowPtr, int row, int column);
- private static native String nativeGetName(int windowPtr);
+ private static native String nativeGetName(long windowPtr);
/**
* Creates a new empty cursor window and gives it a name.
@@ -713,9 +714,9 @@ public class CursorWindow extends SQLiteClosable implements Parcelable {
dispose();
}
- private static final SparseIntArray sWindowToPidMap = new SparseIntArray();
+ private static final LongSparseArray<Integer> sWindowToPidMap = new LongSparseArray<Integer>();
- private void recordNewWindow(int pid, int window) {
+ private void recordNewWindow(int pid, long window) {
synchronized (sWindowToPidMap) {
sWindowToPidMap.put(window, pid);
if (Log.isLoggable(STATS_TAG, Log.VERBOSE)) {
@@ -724,7 +725,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable {
}
}
- private void recordClosingOfWindow(int window) {
+ private void recordClosingOfWindow(long window) {
synchronized (sWindowToPidMap) {
if (sWindowToPidMap.size() == 0) {
// this means we are not in the ContentProvider.
@@ -771,6 +772,6 @@ public class CursorWindow extends SQLiteClosable implements Parcelable {
@Override
public String toString() {
- return getName() + " {" + Integer.toHexString(mWindowPtr) + "}";
+ return getName() + " {" + Long.toHexString(mWindowPtr) + "}";
}
}
diff --git a/core/java/android/database/sqlite/SQLiteConnection.java b/core/java/android/database/sqlite/SQLiteConnection.java
index 725a1ff6c9c0..24a7d3327664 100644
--- a/core/java/android/database/sqlite/SQLiteConnection.java
+++ b/core/java/android/database/sqlite/SQLiteConnection.java
@@ -107,7 +107,7 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen
private final OperationLog mRecentOperations = new OperationLog();
// The native SQLiteConnection pointer. (FOR INTERNAL USE ONLY)
- private int mConnectionPtr;
+ private long mConnectionPtr;
private boolean mOnlyAllowReadOnlyOperations;
@@ -117,45 +117,45 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen
// we can ensure that we detach the signal at the right time.
private int mCancellationSignalAttachCount;
- private static native int nativeOpen(String path, int openFlags, String label,
+ private static native long nativeOpen(String path, int openFlags, String label,
boolean enableTrace, boolean enableProfile);
- private static native void nativeClose(int connectionPtr);
- private static native void nativeRegisterCustomFunction(int connectionPtr,
+ private static native void nativeClose(long connectionPtr);
+ private static native void nativeRegisterCustomFunction(long connectionPtr,
SQLiteCustomFunction function);
- private static native void nativeRegisterLocalizedCollators(int connectionPtr, String locale);
- private static native int nativePrepareStatement(int connectionPtr, String sql);
- private static native void nativeFinalizeStatement(int connectionPtr, int statementPtr);
- private static native int nativeGetParameterCount(int connectionPtr, int statementPtr);
- private static native boolean nativeIsReadOnly(int connectionPtr, int statementPtr);
- private static native int nativeGetColumnCount(int connectionPtr, int statementPtr);
- private static native String nativeGetColumnName(int connectionPtr, int statementPtr,
+ private static native void nativeRegisterLocalizedCollators(long connectionPtr, String locale);
+ private static native long nativePrepareStatement(long connectionPtr, String sql);
+ private static native void nativeFinalizeStatement(long connectionPtr, long statementPtr);
+ private static native int nativeGetParameterCount(long connectionPtr, long statementPtr);
+ private static native boolean nativeIsReadOnly(long connectionPtr, long statementPtr);
+ private static native int nativeGetColumnCount(long connectionPtr, long statementPtr);
+ private static native String nativeGetColumnName(long connectionPtr, long statementPtr,
int index);
- private static native void nativeBindNull(int connectionPtr, int statementPtr,
+ private static native void nativeBindNull(long connectionPtr, long statementPtr,
int index);
- private static native void nativeBindLong(int connectionPtr, int statementPtr,
+ private static native void nativeBindLong(long connectionPtr, long statementPtr,
int index, long value);
- private static native void nativeBindDouble(int connectionPtr, int statementPtr,
+ private static native void nativeBindDouble(long connectionPtr, long statementPtr,
int index, double value);
- private static native void nativeBindString(int connectionPtr, int statementPtr,
+ private static native void nativeBindString(long connectionPtr, long statementPtr,
int index, String value);
- private static native void nativeBindBlob(int connectionPtr, int statementPtr,
+ private static native void nativeBindBlob(long connectionPtr, long statementPtr,
int index, byte[] value);
private static native void nativeResetStatementAndClearBindings(
- int connectionPtr, int statementPtr);
- private static native void nativeExecute(int connectionPtr, int statementPtr);
- private static native long nativeExecuteForLong(int connectionPtr, int statementPtr);
- private static native String nativeExecuteForString(int connectionPtr, int statementPtr);
+ long connectionPtr, long statementPtr);
+ private static native void nativeExecute(long connectionPtr, long statementPtr);
+ private static native long nativeExecuteForLong(long connectionPtr, long statementPtr);
+ private static native String nativeExecuteForString(long connectionPtr, long statementPtr);
private static native int nativeExecuteForBlobFileDescriptor(
- int connectionPtr, int statementPtr);
- private static native int nativeExecuteForChangedRowCount(int connectionPtr, int statementPtr);
+ long connectionPtr, long statementPtr);
+ private static native int nativeExecuteForChangedRowCount(long connectionPtr, long statementPtr);
private static native long nativeExecuteForLastInsertedRowId(
- int connectionPtr, int statementPtr);
+ long connectionPtr, long statementPtr);
private static native long nativeExecuteForCursorWindow(
- int connectionPtr, int statementPtr, int windowPtr,
+ long connectionPtr, long statementPtr, long windowPtr,
int startPos, int requiredPos, boolean countAllRows);
- private static native int nativeGetDbLookaside(int connectionPtr);
- private static native void nativeCancel(int connectionPtr);
- private static native void nativeResetCancel(int connectionPtr, boolean cancelable);
+ private static native int nativeGetDbLookaside(long connectionPtr);
+ private static native void nativeCancel(long connectionPtr);
+ private static native void nativeResetCancel(long connectionPtr, boolean cancelable);
private SQLiteConnection(SQLiteConnectionPool pool,
SQLiteDatabaseConfiguration configuration,
@@ -886,7 +886,7 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen
skipCache = true;
}
- final int statementPtr = nativePrepareStatement(mConnectionPtr, sql);
+ final long statementPtr = nativePrepareStatement(mConnectionPtr, sql);
try {
final int numParameters = nativeGetParameterCount(mConnectionPtr, statementPtr);
final int type = DatabaseUtils.getSqlStatementType(sql);
@@ -987,7 +987,7 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen
return;
}
- final int statementPtr = statement.mStatementPtr;
+ final long statementPtr = statement.mStatementPtr;
for (int i = 0; i < count; i++) {
final Object arg = bindArgs[i];
switch (DatabaseUtils.getTypeOfObject(arg)) {
@@ -1072,7 +1072,7 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen
void dumpUnsafe(Printer printer, boolean verbose) {
printer.println("Connection #" + mConnectionId + ":");
if (verbose) {
- printer.println(" connectionPtr: 0x" + Integer.toHexString(mConnectionPtr));
+ printer.println(" connectionPtr: 0x" + Long.toHexString(mConnectionPtr));
}
printer.println(" isPrimaryConnection: " + mIsPrimaryConnection);
printer.println(" onlyAllowReadOnlyOperations: " + mOnlyAllowReadOnlyOperations);
@@ -1178,7 +1178,7 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen
return "SQLiteConnection: " + mConfiguration.path + " (" + mConnectionId + ")";
}
- private PreparedStatement obtainPreparedStatement(String sql, int statementPtr,
+ private PreparedStatement obtainPreparedStatement(String sql, long statementPtr,
int numParameters, int type, boolean readOnly) {
PreparedStatement statement = mPreparedStatementPool;
if (statement != null) {
@@ -1225,7 +1225,7 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen
// The native sqlite3_stmt object pointer.
// Lifetime is managed explicitly by the connection.
- public int mStatementPtr;
+ public long mStatementPtr;
// The number of parameters that the prepared statement has.
public int mNumParameters;
@@ -1271,7 +1271,7 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen
if (statement.mInCache) { // might be false due to a race with entryRemoved
String sql = entry.getKey();
printer.println(" " + i + ": statementPtr=0x"
- + Integer.toHexString(statement.mStatementPtr)
+ + Long.toHexString(statement.mStatementPtr)
+ ", numParameters=" + statement.mNumParameters
+ ", type=" + statement.mType
+ ", readOnly=" + statement.mReadOnly
diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java
index 60ccc6180eb6..433d5d1c713e 100644
--- a/core/java/android/database/sqlite/SQLiteDatabase.java
+++ b/core/java/android/database/sqlite/SQLiteDatabase.java
@@ -738,14 +738,16 @@ public final class SQLiteDatabase extends SQLiteClosable {
File dir = file.getParentFile();
if (dir != null) {
final String prefix = file.getName() + "-mj";
- final FileFilter filter = new FileFilter() {
+ File[] files = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File candidate) {
return candidate.getName().startsWith(prefix);
}
- };
- for (File masterJournal : dir.listFiles(filter)) {
- deleted |= masterJournal.delete();
+ });
+ if (files != null) {
+ for (File masterJournal : files) {
+ deleted |= masterJournal.delete();
+ }
}
}
return deleted;
diff --git a/core/java/android/ddm/DdmHandleProfiling.java b/core/java/android/ddm/DdmHandleProfiling.java
index ec083934b1ca..537763dae99a 100644
--- a/core/java/android/ddm/DdmHandleProfiling.java
+++ b/core/java/android/ddm/DdmHandleProfiling.java
@@ -37,6 +37,7 @@ public class DdmHandleProfiling extends ChunkHandler {
public static final int CHUNK_SPSS = type("SPSS");
public static final int CHUNK_SPSE = type("SPSE");
+ private static final boolean DEBUG = false;
private static DdmHandleProfiling mInstance = new DdmHandleProfiling();
@@ -72,7 +73,7 @@ public class DdmHandleProfiling extends ChunkHandler {
* Handle a chunk of data.
*/
public Chunk handleChunk(Chunk request) {
- if (false)
+ if (DEBUG)
Log.v("ddm-heap", "Handling " + name(request.type) + " chunk");
int type = request.type;
@@ -83,13 +84,13 @@ public class DdmHandleProfiling extends ChunkHandler {
} else if (type == CHUNK_MPSS) {
return handleMPSS(request);
} else if (type == CHUNK_MPSE) {
- return handleMPSE(request);
+ return handleMPSEOrSPSE(request, "Method");
} else if (type == CHUNK_MPRQ) {
return handleMPRQ(request);
} else if (type == CHUNK_SPSS) {
return handleSPSS(request);
} else if (type == CHUNK_SPSE) {
- return handleSPSE(request);
+ return handleMPSEOrSPSE(request, "Sample");
} else {
throw new RuntimeException("Unknown packet "
+ ChunkHandler.name(type));
@@ -106,7 +107,7 @@ public class DdmHandleProfiling extends ChunkHandler {
int flags = in.getInt();
int len = in.getInt();
String fileName = getString(in, len);
- if (false)
+ if (DEBUG)
Log.v("ddm-heap", "Method profiling start: filename='" + fileName
+ "', size=" + bufferSize + ", flags=" + flags);
@@ -146,7 +147,7 @@ public class DdmHandleProfiling extends ChunkHandler {
int bufferSize = in.getInt();
int flags = in.getInt();
- if (false) {
+ if (DEBUG) {
Log.v("ddm-heap", "Method prof stream start: size=" + bufferSize
+ ", flags=" + flags);
}
@@ -160,20 +161,18 @@ public class DdmHandleProfiling extends ChunkHandler {
}
/*
- * Handle a "Method Profiling w/Streaming End" request.
+ * Handle a "Method Profiling w/Streaming End" request or a
+ * "Sample Profiling w/Streaming End" request.
*/
- private Chunk handleMPSE(Chunk request) {
- byte result;
-
- if (false) {
- Log.v("ddm-heap", "Method prof stream end");
+ private Chunk handleMPSEOrSPSE(Chunk request, String type) {
+ if (DEBUG) {
+ Log.v("ddm-heap", type + " prof stream end");
}
try {
Debug.stopMethodTracing();
- result = 0;
} catch (RuntimeException re) {
- Log.w("ddm-heap", "Method prof stream end failed: "
+ Log.w("ddm-heap", type + " prof stream end failed: "
+ re.getMessage());
return createFailChunk(1, re.getMessage());
}
@@ -202,7 +201,7 @@ public class DdmHandleProfiling extends ChunkHandler {
int bufferSize = in.getInt();
int flags = in.getInt();
int interval = in.getInt();
- if (false) {
+ if (DEBUG) {
Log.v("ddm-heap", "Sample prof stream start: size=" + bufferSize
+ ", flags=" + flags + ", interval=" + interval);
}
@@ -214,25 +213,5 @@ public class DdmHandleProfiling extends ChunkHandler {
return createFailChunk(1, re.getMessage());
}
}
-
- /*
- * Handle a "Sample Profiling w/Streaming End" request.
- */
- private Chunk handleSPSE(Chunk request) {
- if (false) {
- Log.v("ddm-heap", "Sample prof stream end");
- }
-
- try {
- Debug.stopMethodTracing();
- } catch (RuntimeException re) {
- Log.w("ddm-heap", "Sample prof stream end failed: "
- + re.getMessage());
- return createFailChunk(1, re.getMessage());
- }
-
- /* VM sent the (perhaps very large) response directly */
- return null;
- }
}
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java
index feb47aa6d381..111062d630b1 100644
--- a/core/java/android/hardware/Camera.java
+++ b/core/java/android/hardware/Camera.java
@@ -151,7 +151,7 @@ public class Camera {
private static final int CAMERA_MSG_PREVIEW_METADATA = 0x400;
private static final int CAMERA_MSG_FOCUS_MOVE = 0x800;
- private int mNativeContext; // accessed by native methods
+ private long mNativeContext; // accessed by native methods
private EventHandler mEventHandler;
private ShutterCallback mShutterCallback;
private PictureCallback mRawImageCallback;
diff --git a/core/java/android/hardware/SystemSensorManager.java b/core/java/android/hardware/SystemSensorManager.java
index 50fdb4170c60..8684a042fdc9 100644
--- a/core/java/android/hardware/SystemSensorManager.java
+++ b/core/java/android/hardware/SystemSensorManager.java
@@ -222,14 +222,14 @@ public class SystemSensorManager extends SensorManager {
* the queues and the listeners.
*/
private static abstract class BaseEventQueue {
- private native int nativeInitBaseEventQueue(BaseEventQueue eventQ, MessageQueue msgQ,
+ private native long nativeInitBaseEventQueue(BaseEventQueue eventQ, MessageQueue msgQ,
float[] scratch);
- private static native int nativeEnableSensor(int eventQ, int handle, int rateUs,
+ private static native int nativeEnableSensor(long eventQ, int handle, int rateUs,
int maxBatchReportLatencyUs, int reservedFlags);
- private static native int nativeDisableSensor(int eventQ, int handle);
- private static native void nativeDestroySensorEventQueue(int eventQ);
- private static native int nativeFlushSensor(int eventQ);
- private int nSensorEventQueue;
+ private static native int nativeDisableSensor(long eventQ, int handle);
+ private static native void nativeDestroySensorEventQueue(long eventQ);
+ private static native int nativeFlushSensor(long eventQ);
+ private long nSensorEventQueue;
private final SparseBooleanArray mActiveSensors = new SparseBooleanArray();
protected final SparseIntArray mSensorAccuracies = new SparseIntArray();
protected final SparseBooleanArray mFirstEvent = new SparseBooleanArray();
diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java
index 093e0e9270ff..a517bc5d71c6 100644
--- a/core/java/android/hardware/display/DisplayManager.java
+++ b/core/java/android/hardware/display/DisplayManager.java
@@ -115,6 +115,7 @@ public final class DisplayManager {
* </p>
*
* @see #createVirtualDisplay
+ * @see #VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY
*/
public static final int VIRTUAL_DISPLAY_FLAG_PUBLIC = 1 << 0;
@@ -171,6 +172,22 @@ public final class DisplayManager {
*/
public static final int VIRTUAL_DISPLAY_FLAG_SECURE = 1 << 2;
+ /**
+ * Virtual display flag: Only show this display's own content; do not mirror
+ * the content of another display.
+ *
+ * <p>
+ * This flag is used in conjunction with {@link #VIRTUAL_DISPLAY_FLAG_PUBLIC}.
+ * Ordinarily public virtual displays will automatically mirror the content of the
+ * default display if they have no windows of their own. When this flag is
+ * specified, the virtual display will only ever show its own content and
+ * will be blanked instead if it has no windows.
+ * </p>
+ *
+ * @see #createVirtualDisplay
+ */
+ public static final int VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY = 1 << 3;
+
/** @hide */
public DisplayManager(Context context) {
mContext = context;
@@ -429,8 +446,8 @@ public final class DisplayManager {
* @param surface The surface to which the content of the virtual display should
* be rendered, must be non-null.
* @param flags A combination of virtual display flags:
- * {@link #VIRTUAL_DISPLAY_FLAG_PUBLIC}, {@link #VIRTUAL_DISPLAY_FLAG_PRESENTATION}
- * or {@link #VIRTUAL_DISPLAY_FLAG_SECURE}.
+ * {@link #VIRTUAL_DISPLAY_FLAG_PUBLIC}, {@link #VIRTUAL_DISPLAY_FLAG_PRESENTATION},
+ * {@link #VIRTUAL_DISPLAY_FLAG_SECURE}, or {@link #VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY}.
* @return The newly created virtual display, or null if the application could
* not create the virtual display.
*
diff --git a/core/java/android/hardware/display/DisplayManagerInternal.java b/core/java/android/hardware/display/DisplayManagerInternal.java
new file mode 100644
index 000000000000..8430973c79d3
--- /dev/null
+++ b/core/java/android/hardware/display/DisplayManagerInternal.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.display;
+
+import android.view.DisplayInfo;
+
+/**
+ * Display manager local system service interface.
+ *
+ * @hide Only for use within the system server.
+ */
+public abstract class DisplayManagerInternal {
+ /**
+ * Called by the power manager to blank all displays.
+ */
+ public abstract void blankAllDisplaysFromPowerManager();
+
+ /**
+ * Called by the power manager to unblank all displays.
+ */
+ public abstract void unblankAllDisplaysFromPowerManager();
+
+ /**
+ * Returns information about the specified logical display.
+ *
+ * @param displayId The logical display id.
+ * @return The logical display info, or null if the display does not exist. The
+ * returned object must be treated as immutable.
+ */
+ public abstract DisplayInfo getDisplayInfo(int displayId);
+
+ /**
+ * Registers a display transaction listener to provide the client a chance to
+ * update its surfaces within the same transaction as any display layout updates.
+ *
+ * @param listener The listener to register.
+ */
+ public abstract void registerDisplayTransactionListener(DisplayTransactionListener listener);
+
+ /**
+ * Unregisters a display transaction listener to provide the client a chance to
+ * update its surfaces within the same transaction as any display layout updates.
+ *
+ * @param listener The listener to unregister.
+ */
+ public abstract void unregisterDisplayTransactionListener(DisplayTransactionListener listener);
+
+ /**
+ * Overrides the display information of a particular logical display.
+ * This is used by the window manager to control the size and characteristics
+ * of the default display. It is expected to apply the requested change
+ * to the display information synchronously so that applications will immediately
+ * observe the new state.
+ *
+ * NOTE: This method must be the only entry point by which the window manager
+ * influences the logical configuration of displays.
+ *
+ * @param displayId The logical display id.
+ * @param info The new data to be stored.
+ */
+ public abstract void setDisplayInfoOverrideFromWindowManager(
+ int displayId, DisplayInfo info);
+
+ /**
+ * Called by the window manager to perform traversals while holding a
+ * surface flinger transaction.
+ */
+ public abstract void performTraversalInTransactionFromWindowManager();
+
+ /**
+ * Tells the display manager whether there is interesting unique content on the
+ * specified logical display. This is used to control automatic mirroring.
+ * <p>
+ * If the display has unique content, then the display manager arranges for it
+ * to be presented on a physical display if appropriate. Otherwise, the display manager
+ * may choose to make the physical display mirror some other logical display.
+ * </p>
+ *
+ * @param displayId The logical display id to update.
+ * @param hasContent True if the logical display has content.
+ * @param inTraversal True if called from WindowManagerService during a window traversal
+ * prior to call to performTraversalInTransactionFromWindowManager.
+ */
+ public abstract void setDisplayHasContent(int displayId, boolean hasContent,
+ boolean inTraversal);
+
+ /**
+ * Called within a Surface transaction whenever the size or orientation of a
+ * display may have changed. Provides an opportunity for the client to
+ * update the position of its surfaces as part of the same transaction.
+ */
+ public interface DisplayTransactionListener {
+ void onDisplayTransaction();
+ }
+}
diff --git a/services/java/com/android/server/display/DisplayViewport.java b/core/java/android/hardware/display/DisplayViewport.java
index 5080556a54a3..c2d498b7fe68 100644
--- a/services/java/com/android/server/display/DisplayViewport.java
+++ b/core/java/android/hardware/display/DisplayViewport.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server.display;
+package android.hardware.display;
import android.graphics.Rect;
@@ -25,6 +25,8 @@ import android.graphics.Rect;
* This information is used by the input system to translate touch input from
* physical display coordinates into logical display coordinates.
* </p>
+ *
+ * @hide Only for use within the system server.
*/
public final class DisplayViewport {
// True if this viewport is valid.
diff --git a/core/java/android/hardware/input/IInputManager.aidl b/core/java/android/hardware/input/IInputManager.aidl
index 9b6f82a0c84d..f1e7e98ff9d8 100644
--- a/core/java/android/hardware/input/IInputManager.aidl
+++ b/core/java/android/hardware/input/IInputManager.aidl
@@ -16,6 +16,7 @@
package android.hardware.input;
+import android.hardware.input.InputDeviceIdentifier;
import android.hardware.input.KeyboardLayout;
import android.hardware.input.IInputDevicesChangedListener;
import android.os.IBinder;
@@ -41,13 +42,13 @@ interface IInputManager {
// Keyboard layouts configuration.
KeyboardLayout[] getKeyboardLayouts();
KeyboardLayout getKeyboardLayout(String keyboardLayoutDescriptor);
- String getCurrentKeyboardLayoutForInputDevice(String inputDeviceDescriptor);
- void setCurrentKeyboardLayoutForInputDevice(String inputDeviceDescriptor,
+ String getCurrentKeyboardLayoutForInputDevice(in InputDeviceIdentifier identifier);
+ void setCurrentKeyboardLayoutForInputDevice(in InputDeviceIdentifier identifier,
String keyboardLayoutDescriptor);
- String[] getKeyboardLayoutsForInputDevice(String inputDeviceDescriptor);
- void addKeyboardLayoutForInputDevice(String inputDeviceDescriptor,
+ String[] getKeyboardLayoutsForInputDevice(in InputDeviceIdentifier identifier);
+ void addKeyboardLayoutForInputDevice(in InputDeviceIdentifier identifier,
String keyboardLayoutDescriptor);
- void removeKeyboardLayoutForInputDevice(String inputDeviceDescriptor,
+ void removeKeyboardLayoutForInputDevice(in InputDeviceIdentifier identifier,
String keyboardLayoutDescriptor);
// Registers an input devices changed listener.
diff --git a/core/java/android/hardware/input/InputDeviceIdentifier.aidl b/core/java/android/hardware/input/InputDeviceIdentifier.aidl
new file mode 100644
index 000000000000..7234a91e4875
--- /dev/null
+++ b/core/java/android/hardware/input/InputDeviceIdentifier.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.input;
+
+parcelable InputDeviceIdentifier;
diff --git a/core/java/android/hardware/input/InputDeviceIdentifier.java b/core/java/android/hardware/input/InputDeviceIdentifier.java
new file mode 100644
index 000000000000..5e832e38eb1a
--- /dev/null
+++ b/core/java/android/hardware/input/InputDeviceIdentifier.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.input;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * Wrapper for passing identifying information for input devices.
+ *
+ * @hide
+ */
+public final class InputDeviceIdentifier implements Parcelable {
+ private final String mDescriptor;
+ private final int mVendorId;
+ private final int mProductId;
+
+ public InputDeviceIdentifier(String descriptor, int vendorId, int productId) {
+ this.mDescriptor = descriptor;
+ this.mVendorId = vendorId;
+ this.mProductId = productId;
+ }
+
+ private InputDeviceIdentifier(Parcel src) {
+ mDescriptor = src.readString();
+ mVendorId = src.readInt();
+ mProductId = src.readInt();
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(mDescriptor);
+ dest.writeInt(mVendorId);
+ dest.writeInt(mProductId);
+ }
+
+ public String getDescriptor() {
+ return mDescriptor;
+ }
+
+ public int getVendorId() {
+ return mVendorId;
+ }
+
+ public int getProductId() {
+ return mProductId;
+ }
+
+ public static final Parcelable.Creator<InputDeviceIdentifier> CREATOR =
+ new Parcelable.Creator<InputDeviceIdentifier>() {
+
+ @Override
+ public InputDeviceIdentifier createFromParcel(Parcel source) {
+ return new InputDeviceIdentifier(source);
+ }
+
+ @Override
+ public InputDeviceIdentifier[] newArray(int size) {
+ return new InputDeviceIdentifier[size];
+ }
+
+ };
+}
diff --git a/core/java/android/hardware/input/InputManager.java b/core/java/android/hardware/input/InputManager.java
index 30e69a68d743..a2aeafb9de2e 100644
--- a/core/java/android/hardware/input/InputManager.java
+++ b/core/java/android/hardware/input/InputManager.java
@@ -26,6 +26,8 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
+import android.os.Parcel;
+import android.os.Parcelable;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.Vibrator;
@@ -373,20 +375,17 @@ public final class InputManager {
}
/**
- * Gets the current keyboard layout descriptor for the specified input device.
- *
- * @param inputDeviceDescriptor The input device descriptor.
- * @return The keyboard layout descriptor, or null if no keyboard layout has been set.
+ * Gets the current keyboard layout descriptor for the specified input
+ * device.
*
+ * @param identifier Identifier for the input device
+ * @return The keyboard layout descriptor, or null if no keyboard layout has
+ * been set.
* @hide
*/
- public String getCurrentKeyboardLayoutForInputDevice(String inputDeviceDescriptor) {
- if (inputDeviceDescriptor == null) {
- throw new IllegalArgumentException("inputDeviceDescriptor must not be null");
- }
-
+ public String getCurrentKeyboardLayoutForInputDevice(InputDeviceIdentifier identifier) {
try {
- return mIm.getCurrentKeyboardLayoutForInputDevice(inputDeviceDescriptor);
+ return mIm.getCurrentKeyboardLayoutForInputDevice(identifier);
} catch (RemoteException ex) {
Log.w(TAG, "Could not get current keyboard layout for input device.", ex);
return null;
@@ -394,28 +393,29 @@ public final class InputManager {
}
/**
- * Sets the current keyboard layout descriptor for the specified input device.
+ * Sets the current keyboard layout descriptor for the specified input
+ * device.
* <p>
- * This method may have the side-effect of causing the input device in question
- * to be reconfigured.
+ * This method may have the side-effect of causing the input device in
+ * question to be reconfigured.
* </p>
*
- * @param inputDeviceDescriptor The input device descriptor.
- * @param keyboardLayoutDescriptor The keyboard layout descriptor to use, must not be null.
- *
+ * @param identifier The identifier for the input device.
+ * @param keyboardLayoutDescriptor The keyboard layout descriptor to use,
+ * must not be null.
* @hide
*/
- public void setCurrentKeyboardLayoutForInputDevice(String inputDeviceDescriptor,
+ public void setCurrentKeyboardLayoutForInputDevice(InputDeviceIdentifier identifier,
String keyboardLayoutDescriptor) {
- if (inputDeviceDescriptor == null) {
- throw new IllegalArgumentException("inputDeviceDescriptor must not be null");
+ if (identifier == null) {
+ throw new IllegalArgumentException("identifier must not be null");
}
if (keyboardLayoutDescriptor == null) {
throw new IllegalArgumentException("keyboardLayoutDescriptor must not be null");
}
try {
- mIm.setCurrentKeyboardLayoutForInputDevice(inputDeviceDescriptor,
+ mIm.setCurrentKeyboardLayoutForInputDevice(identifier,
keyboardLayoutDescriptor);
} catch (RemoteException ex) {
Log.w(TAG, "Could not set current keyboard layout for input device.", ex);
@@ -423,20 +423,20 @@ public final class InputManager {
}
/**
- * Gets all keyboard layout descriptors that are enabled for the specified input device.
+ * Gets all keyboard layout descriptors that are enabled for the specified
+ * input device.
*
- * @param inputDeviceDescriptor The input device descriptor.
+ * @param identifier The identifier for the input device.
* @return The keyboard layout descriptors.
- *
* @hide
*/
- public String[] getKeyboardLayoutsForInputDevice(String inputDeviceDescriptor) {
- if (inputDeviceDescriptor == null) {
+ public String[] getKeyboardLayoutsForInputDevice(InputDeviceIdentifier identifier) {
+ if (identifier == null) {
throw new IllegalArgumentException("inputDeviceDescriptor must not be null");
}
try {
- return mIm.getKeyboardLayoutsForInputDevice(inputDeviceDescriptor);
+ return mIm.getKeyboardLayoutsForInputDevice(identifier);
} catch (RemoteException ex) {
Log.w(TAG, "Could not get keyboard layouts for input device.", ex);
return ArrayUtils.emptyArray(String.class);
@@ -446,18 +446,18 @@ public final class InputManager {
/**
* Adds the keyboard layout descriptor for the specified input device.
* <p>
- * This method may have the side-effect of causing the input device in question
- * to be reconfigured.
+ * This method may have the side-effect of causing the input device in
+ * question to be reconfigured.
* </p>
*
- * @param inputDeviceDescriptor The input device descriptor.
- * @param keyboardLayoutDescriptor The descriptor of the keyboard layout to add.
- *
+ * @param identifier The identifier for the input device.
+ * @param keyboardLayoutDescriptor The descriptor of the keyboard layout to
+ * add.
* @hide
*/
- public void addKeyboardLayoutForInputDevice(String inputDeviceDescriptor,
+ public void addKeyboardLayoutForInputDevice(InputDeviceIdentifier identifier,
String keyboardLayoutDescriptor) {
- if (inputDeviceDescriptor == null) {
+ if (identifier == null) {
throw new IllegalArgumentException("inputDeviceDescriptor must not be null");
}
if (keyboardLayoutDescriptor == null) {
@@ -465,7 +465,7 @@ public final class InputManager {
}
try {
- mIm.addKeyboardLayoutForInputDevice(inputDeviceDescriptor, keyboardLayoutDescriptor);
+ mIm.addKeyboardLayoutForInputDevice(identifier, keyboardLayoutDescriptor);
} catch (RemoteException ex) {
Log.w(TAG, "Could not add keyboard layout for input device.", ex);
}
@@ -474,18 +474,18 @@ public final class InputManager {
/**
* Removes the keyboard layout descriptor for the specified input device.
* <p>
- * This method may have the side-effect of causing the input device in question
- * to be reconfigured.
+ * This method may have the side-effect of causing the input device in
+ * question to be reconfigured.
* </p>
*
- * @param inputDeviceDescriptor The input device descriptor.
- * @param keyboardLayoutDescriptor The descriptor of the keyboard layout to remove.
- *
+ * @param identifier The identifier for the input device.
+ * @param keyboardLayoutDescriptor The descriptor of the keyboard layout to
+ * remove.
* @hide
*/
- public void removeKeyboardLayoutForInputDevice(String inputDeviceDescriptor,
+ public void removeKeyboardLayoutForInputDevice(InputDeviceIdentifier identifier,
String keyboardLayoutDescriptor) {
- if (inputDeviceDescriptor == null) {
+ if (identifier == null) {
throw new IllegalArgumentException("inputDeviceDescriptor must not be null");
}
if (keyboardLayoutDescriptor == null) {
@@ -493,7 +493,7 @@ public final class InputManager {
}
try {
- mIm.removeKeyboardLayoutForInputDevice(inputDeviceDescriptor, keyboardLayoutDescriptor);
+ mIm.removeKeyboardLayoutForInputDevice(identifier, keyboardLayoutDescriptor);
} catch (RemoteException ex) {
Log.w(TAG, "Could not remove keyboard layout for input device.", ex);
}
diff --git a/core/java/android/hardware/input/InputManagerInternal.java b/core/java/android/hardware/input/InputManagerInternal.java
new file mode 100644
index 000000000000..8be94d0f7e85
--- /dev/null
+++ b/core/java/android/hardware/input/InputManagerInternal.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.input;
+
+import android.hardware.display.DisplayViewport;
+import android.view.InputEvent;
+
+/**
+ * Input manager local system service interface.
+ *
+ * @hide Only for use within the system server.
+ */
+public abstract class InputManagerInternal {
+ /**
+ * Sets information about the displays as needed by the input system.
+ * The input system should copy this information if required.
+ */
+ public abstract void setDisplayViewports(DisplayViewport defaultViewport,
+ DisplayViewport externalTouchViewport);
+
+ public abstract boolean injectInputEvent(InputEvent event, int displayId, int mode);
+}
diff --git a/core/java/android/hardware/usb/UsbDevice.java b/core/java/android/hardware/usb/UsbDevice.java
index 9bd38f9c33e8..d1e63f6ce673 100644
--- a/core/java/android/hardware/usb/UsbDevice.java
+++ b/core/java/android/hardware/usb/UsbDevice.java
@@ -46,6 +46,9 @@ public class UsbDevice implements Parcelable {
private static final String TAG = "UsbDevice";
private final String mName;
+ private final String mManufacturerName;
+ private final String mProductName;
+ private final String mSerialNumber;
private final int mVendorId;
private final int mProductId;
private final int mClass;
@@ -58,13 +61,18 @@ public class UsbDevice implements Parcelable {
* @hide
*/
public UsbDevice(String name, int vendorId, int productId,
- int Class, int subClass, int protocol, Parcelable[] interfaces) {
+ int Class, int subClass, int protocol,
+ String manufacturerName, String productName, String serialNumber,
+ Parcelable[] interfaces) {
mName = name;
mVendorId = vendorId;
mProductId = productId;
mClass = Class;
mSubclass = subClass;
mProtocol = protocol;
+ mManufacturerName = manufacturerName;
+ mProductName = productName;
+ mSerialNumber = serialNumber;
mInterfaces = interfaces;
}
@@ -80,6 +88,33 @@ public class UsbDevice implements Parcelable {
}
/**
+ * Returns the manufacturer name of the device.
+ *
+ * @return the manufacturer name
+ */
+ public String getManufacturerName() {
+ return mManufacturerName;
+ }
+
+ /**
+ * Returns the product name of the device.
+ *
+ * @return the product name
+ */
+ public String getProductName() {
+ return mProductName;
+ }
+
+ /**
+ * Returns the serial number of the device.
+ *
+ * @return the serial number name
+ */
+ public String getSerialNumber() {
+ return mSerialNumber;
+ }
+
+ /**
* Returns a unique integer ID for the device.
* This is a convenience for clients that want to use an integer to represent
* the device, rather than the device name.
@@ -176,7 +211,8 @@ public class UsbDevice implements Parcelable {
return "UsbDevice[mName=" + mName + ",mVendorId=" + mVendorId +
",mProductId=" + mProductId + ",mClass=" + mClass +
",mSubclass=" + mSubclass + ",mProtocol=" + mProtocol +
- ",mInterfaces=" + mInterfaces + "]";
+ ",mManufacturerName=" + mManufacturerName + ",mProductName=" + mProductName +
+ ",mSerialNumber=" + mSerialNumber + ",mInterfaces=" + mInterfaces + "]";
}
public static final Parcelable.Creator<UsbDevice> CREATOR =
@@ -188,8 +224,12 @@ public class UsbDevice implements Parcelable {
int clasz = in.readInt();
int subClass = in.readInt();
int protocol = in.readInt();
+ String manufacturerName = in.readString();
+ String productName = in.readString();
+ String serialNumber = in.readString();
Parcelable[] interfaces = in.readParcelableArray(UsbInterface.class.getClassLoader());
- return new UsbDevice(name, vendorId, productId, clasz, subClass, protocol, interfaces);
+ return new UsbDevice(name, vendorId, productId, clasz, subClass, protocol,
+ manufacturerName, productName, serialNumber, interfaces);
}
public UsbDevice[] newArray(int size) {
@@ -208,6 +248,9 @@ public class UsbDevice implements Parcelable {
parcel.writeInt(mClass);
parcel.writeInt(mSubclass);
parcel.writeInt(mProtocol);
+ parcel.writeString(mManufacturerName);
+ parcel.writeString(mProductName);
+ parcel.writeString(mSerialNumber);
parcel.writeParcelableArray(mInterfaces, 0);
}
diff --git a/core/java/android/hardware/usb/UsbDeviceConnection.java b/core/java/android/hardware/usb/UsbDeviceConnection.java
index b2034b2636c9..389475fca6c9 100644
--- a/core/java/android/hardware/usb/UsbDeviceConnection.java
+++ b/core/java/android/hardware/usb/UsbDeviceConnection.java
@@ -32,7 +32,7 @@ public class UsbDeviceConnection {
private final UsbDevice mDevice;
// used by the JNI code
- private int mNativeContext;
+ private long mNativeContext;
/**
* UsbDevice should only be instantiated by UsbService implementation
diff --git a/core/java/android/hardware/usb/UsbRequest.java b/core/java/android/hardware/usb/UsbRequest.java
index 36467158d4c9..ce660846c1c9 100644
--- a/core/java/android/hardware/usb/UsbRequest.java
+++ b/core/java/android/hardware/usb/UsbRequest.java
@@ -37,7 +37,7 @@ public class UsbRequest {
private static final String TAG = "UsbRequest";
// used by the JNI code
- private int mNativeContext;
+ private long mNativeContext;
private UsbEndpoint mEndpoint;
diff --git a/core/java/android/inputmethodservice/IInputMethodSessionWrapper.java b/core/java/android/inputmethodservice/IInputMethodSessionWrapper.java
index 726dcec92eb5..bbea8ffa4334 100644
--- a/core/java/android/inputmethodservice/IInputMethodSessionWrapper.java
+++ b/core/java/android/inputmethodservice/IInputMethodSessionWrapper.java
@@ -75,7 +75,15 @@ class IInputMethodSessionWrapper extends IInputMethodSession.Stub
@Override
public void executeMessage(Message msg) {
if (mInputMethodSession == null) {
- // The session has been finished.
+ // The session has been finished. Args needs to be recycled
+ // for cases below.
+ switch (msg.what) {
+ case DO_UPDATE_SELECTION:
+ case DO_APP_PRIVATE_COMMAND: {
+ SomeArgs args = (SomeArgs)msg.obj;
+ args.recycle();
+ }
+ }
return;
}
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index 70c8750623fb..4eecfa9deaf0 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -361,11 +361,17 @@ public class ConnectivityManager {
*/
public static final int TYPE_MOBILE_IA = 14;
+ /**
+ * The network that uses proxy to achieve connectivity.
+ * {@hide}
+ */
+ public static final int TYPE_PROXY = 16;
+
/** {@hide} */
- public static final int MAX_RADIO_TYPE = TYPE_MOBILE_IA;
+ public static final int MAX_RADIO_TYPE = TYPE_PROXY;
/** {@hide} */
- public static final int MAX_NETWORK_TYPE = TYPE_MOBILE_IA;
+ public static final int MAX_NETWORK_TYPE = TYPE_PROXY;
/**
* If you want to set the default network preference,you can directly
@@ -446,6 +452,8 @@ public class ConnectivityManager {
return "WIFI_P2P";
case TYPE_MOBILE_IA:
return "MOBILE_IA";
+ case TYPE_PROXY:
+ return "PROXY";
default:
return Integer.toString(type);
}
diff --git a/core/java/android/net/EthernetDataTracker.java b/core/java/android/net/EthernetDataTracker.java
index 501484c95d49..cc8c77193eca 100644
--- a/core/java/android/net/EthernetDataTracker.java
+++ b/core/java/android/net/EthernetDataTracker.java
@@ -402,7 +402,7 @@ public class EthernetDataTracker extends BaseNetworkStateTracker {
* for this network.
*/
public String getTcpBufferSizesPropName() {
- return "net.tcp.buffersize.wifi";
+ return "net.tcp.buffersize.ethernet";
}
public void setDependencyMet(boolean met) {
diff --git a/core/java/android/net/INetworkManagementEventObserver.aidl b/core/java/android/net/INetworkManagementEventObserver.aidl
index b76e4c24599c..5b16f8b3e581 100644
--- a/core/java/android/net/INetworkManagementEventObserver.aidl
+++ b/core/java/android/net/INetworkManagementEventObserver.aidl
@@ -16,6 +16,8 @@
package android.net;
+import android.net.LinkAddress;
+
/**
* Callback class for receiving events from an INetworkManagementService
*
@@ -55,24 +57,20 @@ interface INetworkManagementEventObserver {
/**
- * An interface address has been added or updated
+ * An interface address has been added or updated.
*
- * @param address The address.
* @param iface The interface.
- * @param flags The address flags.
- * @param scope The address scope.
+ * @param address The address.
*/
- void addressUpdated(String address, String iface, int flags, int scope);
+ void addressUpdated(String iface, in LinkAddress address);
/**
- * An interface address has been removed
+ * An interface address has been removed.
*
- * @param address The address.
* @param iface The interface.
- * @param flags The address flags.
- * @param scope The address scope.
+ * @param address The address.
*/
- void addressRemoved(String address, String iface, int flags, int scope);
+ void addressRemoved(String iface, in LinkAddress address);
/**
* A networking quota limit has been reached. The quota might not
@@ -90,4 +88,13 @@ interface INetworkManagementEventObserver {
* @param active True if the interface is actively transmitting data, false if it is idle.
*/
void interfaceClassDataActivityChanged(String label, boolean active);
+
+ /**
+ * Information about available DNS servers has been received.
+ *
+ * @param iface The interface on which the information was received.
+ * @param lifetime The time in seconds for which the DNS servers may be used.
+ * @param servers The IP addresses of the DNS servers.
+ */
+ void interfaceDnsServerInfo(String iface, long lifetime, in String[] servers);
}
diff --git a/core/java/android/net/LinkAddress.java b/core/java/android/net/LinkAddress.java
index a390add89ebd..22543e3ef156 100644
--- a/core/java/android/net/LinkAddress.java
+++ b/core/java/android/net/LinkAddress.java
@@ -24,8 +24,32 @@ import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.UnknownHostException;
+import static libcore.io.OsConstants.IFA_F_DADFAILED;
+import static libcore.io.OsConstants.IFA_F_DEPRECATED;
+import static libcore.io.OsConstants.IFA_F_TENTATIVE;
+import static libcore.io.OsConstants.RT_SCOPE_HOST;
+import static libcore.io.OsConstants.RT_SCOPE_LINK;
+import static libcore.io.OsConstants.RT_SCOPE_SITE;
+import static libcore.io.OsConstants.RT_SCOPE_UNIVERSE;
+
/**
- * Identifies an address of a network link
+ * Identifies an IP address on a network link.
+ *
+ * A {@code LinkAddress} consists of:
+ * <ul>
+ * <li>An IP address and prefix length (e.g., {@code 2001:db8::1/64} or {@code 192.0.2.1/24}).
+ * The address must be unicast, as multicast addresses cannot be assigned to interfaces.
+ * <li>Address flags: A bitmask of {@code IFA_F_*} values representing properties of the address.
+ * <li>Address scope: An integer defining the scope in which the address is unique (e.g.,
+ * {@code RT_SCOPE_LINK} or {@code RT_SCOPE_SITE}).
+ * <ul>
+ *<p>
+ * When constructing a {@code LinkAddress}, the IP address and prefix are required. The flags and
+ * scope are optional. If they are not specified, the flags are set to zero, and the scope will be
+ * determined based on the IP address (e.g., link-local addresses will be created with a scope of
+ * {@code RT_SCOPE_LINK}, global addresses with {@code RT_SCOPE_UNIVERSE}, etc.) If they are
+ * specified, they are not checked for validity.
+ *
* @hide
*/
public class LinkAddress implements Parcelable {
@@ -35,12 +59,50 @@ public class LinkAddress implements Parcelable {
private InetAddress address;
/**
- * Network prefix length
+ * Prefix length.
*/
private int prefixLength;
- private void init(InetAddress address, int prefixLength) {
- if (address == null || prefixLength < 0 ||
+ /**
+ * Address flags. A bitmask of IFA_F_* values.
+ */
+ private int flags;
+
+ /**
+ * Address scope. One of the RT_SCOPE_* constants.
+ */
+ private int scope;
+
+ /**
+ * Utility function to determines the scope of a unicast address. Per RFC 4291 section 2.5 and
+ * RFC 6724 section 3.2.
+ * @hide
+ */
+ static int scopeForUnicastAddress(InetAddress addr) {
+ if (addr.isAnyLocalAddress()) {
+ return RT_SCOPE_HOST;
+ }
+
+ if (addr.isLoopbackAddress() || addr.isLinkLocalAddress()) {
+ return RT_SCOPE_LINK;
+ }
+
+ // isSiteLocalAddress() returns true for private IPv4 addresses, but RFC 6724 section 3.2
+ // says that they are assigned global scope.
+ if (!(addr instanceof Inet4Address) && addr.isSiteLocalAddress()) {
+ return RT_SCOPE_SITE;
+ }
+
+ return RT_SCOPE_UNIVERSE;
+ }
+
+ /**
+ * Utility function for the constructors.
+ */
+ private void init(InetAddress address, int prefixLength, int flags, int scope) {
+ if (address == null ||
+ address.isMulticastAddress() ||
+ prefixLength < 0 ||
((address instanceof Inet4Address) && prefixLength > 32) ||
(prefixLength > 128)) {
throw new IllegalArgumentException("Bad LinkAddress params " + address +
@@ -48,23 +110,59 @@ public class LinkAddress implements Parcelable {
}
this.address = address;
this.prefixLength = prefixLength;
+ this.flags = flags;
+ this.scope = scope;
}
+ /**
+ * Constructs a new {@code LinkAddress} from an {@code InetAddress} and prefix length, with
+ * the specified flags and scope. Flags and scope are not checked for validity.
+ * @param address The IP address.
+ * @param prefixLength The prefix length.
+ */
+ public LinkAddress(InetAddress address, int prefixLength, int flags, int scope) {
+ init(address, prefixLength, flags, scope);
+ }
+
+ /**
+ * Constructs a new {@code LinkAddress} from an {@code InetAddress} and a prefix length.
+ * The flags are set to zero and the scope is determined from the address.
+ * @param address The IP address.
+ * @param prefixLength The prefix length.
+ */
public LinkAddress(InetAddress address, int prefixLength) {
- init(address, prefixLength);
+ this(address, prefixLength, 0, 0);
+ this.scope = scopeForUnicastAddress(address);
}
+ /**
+ * Constructs a new {@code LinkAddress} from an {@code InterfaceAddress}.
+ * The flags are set to zero and the scope is determined from the address.
+ * @param interfaceAddress The interface address.
+ */
public LinkAddress(InterfaceAddress interfaceAddress) {
- init(interfaceAddress.getAddress(),
+ this(interfaceAddress.getAddress(),
interfaceAddress.getNetworkPrefixLength());
}
/**
* Constructs a new {@code LinkAddress} from a string such as "192.0.2.5/24" or
- * "2001:db8::1/64".
+ * "2001:db8::1/64". The flags are set to zero and the scope is determined from the address.
* @param string The string to parse.
*/
public LinkAddress(String address) {
+ this(address, 0, 0);
+ this.scope = scopeForUnicastAddress(this.address);
+ }
+
+ /**
+ * Constructs a new {@code LinkAddress} from a string such as "192.0.2.5/24" or
+ * "2001:db8::1/64", with the specified flags and scope.
+ * @param string The string to parse.
+ * @param flags The address flags.
+ * @param scope The address scope.
+ */
+ public LinkAddress(String address, int flags, int scope) {
InetAddress inetAddress = null;
int prefixLength = -1;
try {
@@ -81,18 +179,22 @@ public class LinkAddress implements Parcelable {
throw new IllegalArgumentException("Bad LinkAddress params " + address);
}
- init(inetAddress, prefixLength);
+ init(inetAddress, prefixLength, flags, scope);
}
+ /**
+ * Returns a string representation of this address, such as "192.0.2.1/24" or "2001:db8::1/64".
+ * The string representation does not contain the flags and scope, just the address and prefix
+ * length.
+ */
@Override
public String toString() {
- return (address == null ? "" : (address.getHostAddress() + "/" + prefixLength));
+ return address.getHostAddress() + "/" + prefixLength;
}
/**
- * Compares this {@code LinkAddress} instance against the specified address
- * in {@code obj}. Two addresses are equal if their InetAddress and prefixLength
- * are equal
+ * Compares this {@code LinkAddress} instance against {@code obj}. Two addresses are equal if
+ * their address, prefix length, flags and scope are equal.
*
* @param obj the object to be tested for equality.
* @return {@code true} if both objects are equal, {@code false} otherwise.
@@ -104,33 +206,70 @@ public class LinkAddress implements Parcelable {
}
LinkAddress linkAddress = (LinkAddress) obj;
return this.address.equals(linkAddress.address) &&
- this.prefixLength == linkAddress.prefixLength;
+ this.prefixLength == linkAddress.prefixLength &&
+ this.flags == linkAddress.flags &&
+ this.scope == linkAddress.scope;
}
- @Override
- /*
- * generate hashcode based on significant fields
+ /**
+ * Returns a hashcode for this address.
*/
+ @Override
public int hashCode() {
- return ((null == address) ? 0 : address.hashCode()) + prefixLength;
+ return address.hashCode() + 11 * prefixLength + 19 * flags + 43 * scope;
+ }
+
+ /**
+ * Determines whether this {@code LinkAddress} and the provided {@code LinkAddress} represent
+ * the same address. Two LinkAddresses represent the same address if they have the same IP
+ * address and prefix length, even if their properties are different.
+ *
+ * @param other the {@code LinkAddress} to compare to.
+ * @return {@code true} if both objects have the same address and prefix length, {@code false}
+ * otherwise.
+ */
+ public boolean isSameAddressAs(LinkAddress other) {
+ return address.equals(other.address) && prefixLength == other.prefixLength;
}
/**
- * Returns the InetAddress for this address.
+ * Returns the InetAddress of this address.
*/
public InetAddress getAddress() {
return address;
}
/**
- * Get network prefix length
+ * Returns the prefix length of this address.
*/
public int getNetworkPrefixLength() {
return prefixLength;
}
/**
- * Implement the Parcelable interface
+ * Returns the flags of this address.
+ */
+ public int getFlags() {
+ return flags;
+ }
+
+ /**
+ * Returns the scope of this address.
+ */
+ public int getScope() {
+ return scope;
+ }
+
+ /**
+ * Returns true if this {@code LinkAddress} is global scope and preferred.
+ */
+ public boolean isGlobalPreferred() {
+ return (scope == RT_SCOPE_UNIVERSE &&
+ (flags & (IFA_F_DADFAILED | IFA_F_DEPRECATED | IFA_F_TENTATIVE)) == 0L);
+ }
+
+ /**
+ * Implement the Parcelable interface.
* @hide
*/
public int describeContents() {
@@ -142,13 +281,10 @@ public class LinkAddress implements Parcelable {
* @hide
*/
public void writeToParcel(Parcel dest, int flags) {
- if (address != null) {
- dest.writeByte((byte)1);
- dest.writeByteArray(address.getAddress());
- dest.writeInt(prefixLength);
- } else {
- dest.writeByte((byte)0);
- }
+ dest.writeByteArray(address.getAddress());
+ dest.writeInt(prefixLength);
+ dest.writeInt(this.flags);
+ dest.writeInt(scope);
}
/**
@@ -159,14 +295,17 @@ public class LinkAddress implements Parcelable {
new Creator<LinkAddress>() {
public LinkAddress createFromParcel(Parcel in) {
InetAddress address = null;
- int prefixLength = 0;
- if (in.readByte() == 1) {
- try {
- address = InetAddress.getByAddress(in.createByteArray());
- prefixLength = in.readInt();
- } catch (UnknownHostException e) { }
+ try {
+ address = InetAddress.getByAddress(in.createByteArray());
+ } catch (UnknownHostException e) {
+ // Nothing we can do here. When we call the constructor, we'll throw an
+ // IllegalArgumentException, because a LinkAddress can't have a null
+ // InetAddress.
}
- return new LinkAddress(address, prefixLength);
+ int prefixLength = in.readInt();
+ int flags = in.readInt();
+ int scope = in.readInt();
+ return new LinkAddress(address, prefixLength, flags, scope);
}
public LinkAddress[] newArray(int size) {
diff --git a/core/java/android/net/LinkProperties.java b/core/java/android/net/LinkProperties.java
index b4d07a1ec23c..4dfd3d9586fd 100644
--- a/core/java/android/net/LinkProperties.java
+++ b/core/java/android/net/LinkProperties.java
@@ -61,10 +61,10 @@ import java.util.Hashtable;
public class LinkProperties implements Parcelable {
// The interface described by the network link.
private String mIfaceName;
- private Collection<LinkAddress> mLinkAddresses = new ArrayList<LinkAddress>();
- private Collection<InetAddress> mDnses = new ArrayList<InetAddress>();
+ private ArrayList<LinkAddress> mLinkAddresses = new ArrayList<LinkAddress>();
+ private ArrayList<InetAddress> mDnses = new ArrayList<InetAddress>();
private String mDomains;
- private Collection<RouteInfo> mRoutes = new ArrayList<RouteInfo>();
+ private ArrayList<RouteInfo> mRoutes = new ArrayList<RouteInfo>();
private ProxyProperties mHttpProxy;
private int mMtu;
@@ -156,28 +156,52 @@ public class LinkProperties implements Parcelable {
return addresses;
}
+ private int findLinkAddressIndex(LinkAddress address) {
+ for (int i = 0; i < mLinkAddresses.size(); i++) {
+ if (mLinkAddresses.get(i).isSameAddressAs(address)) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
/**
- * Adds a link address if it does not exist, or update it if it does.
+ * Adds a link address if it does not exist, or updates it if it does.
* @param address The {@code LinkAddress} to add.
- * @return true if the address was added, false if it already existed.
+ * @return true if {@code address} was added or updated, false otherwise.
*/
public boolean addLinkAddress(LinkAddress address) {
- // TODO: when the LinkAddress has other attributes beyond the
- // address and the prefix length, update them here.
- if (address != null && !mLinkAddresses.contains(address)) {
+ if (address == null) {
+ return false;
+ }
+ int i = findLinkAddressIndex(address);
+ if (i < 0) {
+ // Address was not present. Add it.
mLinkAddresses.add(address);
return true;
+ } else if (mLinkAddresses.get(i).equals(address)) {
+ // Address was present and has same properties. Do nothing.
+ return false;
+ } else {
+ // Address was present and has different properties. Update it.
+ mLinkAddresses.set(i, address);
+ return true;
}
- return false;
}
/**
- * Removes a link address.
- * @param address The {@code LinkAddress} to remove.
+ * Removes a link address. Specifically, removes the link address, if any, for which
+ * {@code isSameAddressAs(toRemove)} returns true.
+ * @param address A {@code LinkAddress} specifying the address to remove.
* @return true if the address was removed, false if it did not exist.
*/
public boolean removeLinkAddress(LinkAddress toRemove) {
- return mLinkAddresses.remove(toRemove);
+ int i = findLinkAddressIndex(toRemove);
+ if (i >= 0) {
+ mLinkAddresses.remove(i);
+ return true;
+ }
+ return false;
}
/**
diff --git a/core/java/android/net/NetworkIdentity.java b/core/java/android/net/NetworkIdentity.java
index 3c67bf9e845b..36dd2fdfbcf1 100644
--- a/core/java/android/net/NetworkIdentity.java
+++ b/core/java/android/net/NetworkIdentity.java
@@ -26,7 +26,7 @@ import android.net.wifi.WifiManager;
import android.os.Build;
import android.telephony.TelephonyManager;
-import com.android.internal.util.Objects;
+import java.util.Objects;
/**
* Network definition that includes strong identity. Analogous to combining
@@ -60,7 +60,7 @@ public class NetworkIdentity {
@Override
public int hashCode() {
- return Objects.hashCode(mType, mSubType, mSubscriberId, mNetworkId, mRoaming);
+ return Objects.hash(mType, mSubType, mSubscriberId, mNetworkId, mRoaming);
}
@Override
@@ -68,8 +68,8 @@ public class NetworkIdentity {
if (obj instanceof NetworkIdentity) {
final NetworkIdentity ident = (NetworkIdentity) obj;
return mType == ident.mType && mSubType == ident.mSubType && mRoaming == ident.mRoaming
- && Objects.equal(mSubscriberId, ident.mSubscriberId)
- && Objects.equal(mNetworkId, ident.mNetworkId);
+ && Objects.equals(mSubscriberId, ident.mSubscriberId)
+ && Objects.equals(mNetworkId, ident.mNetworkId);
}
return false;
}
diff --git a/core/java/android/net/NetworkPolicy.java b/core/java/android/net/NetworkPolicy.java
index 441db7a0bbe4..10c686b9e211 100644
--- a/core/java/android/net/NetworkPolicy.java
+++ b/core/java/android/net/NetworkPolicy.java
@@ -21,7 +21,7 @@ import static com.android.internal.util.Preconditions.checkNotNull;
import android.os.Parcel;
import android.os.Parcelable;
-import com.android.internal.util.Objects;
+import java.util.Objects;
/**
* Policy for networks matching a {@link NetworkTemplate}, including usage cycle
@@ -146,7 +146,7 @@ public class NetworkPolicy implements Parcelable, Comparable<NetworkPolicy> {
@Override
public int hashCode() {
- return Objects.hashCode(template, cycleDay, cycleTimezone, warningBytes, limitBytes,
+ return Objects.hash(template, cycleDay, cycleTimezone, warningBytes, limitBytes,
lastWarningSnooze, lastLimitSnooze, metered, inferred);
}
@@ -159,8 +159,8 @@ public class NetworkPolicy implements Parcelable, Comparable<NetworkPolicy> {
&& lastWarningSnooze == other.lastWarningSnooze
&& lastLimitSnooze == other.lastLimitSnooze && metered == other.metered
&& inferred == other.inferred
- && Objects.equal(cycleTimezone, other.cycleTimezone)
- && Objects.equal(template, other.template);
+ && Objects.equals(cycleTimezone, other.cycleTimezone)
+ && Objects.equals(template, other.template);
}
return false;
}
diff --git a/core/java/android/net/NetworkStats.java b/core/java/android/net/NetworkStats.java
index 9cb904d4c400..a7aae2ad360f 100644
--- a/core/java/android/net/NetworkStats.java
+++ b/core/java/android/net/NetworkStats.java
@@ -23,12 +23,12 @@ import android.util.SparseBooleanArray;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ArrayUtils;
-import com.android.internal.util.Objects;
import java.io.CharArrayWriter;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.HashSet;
+import java.util.Objects;
/**
* Collection of active network statistics. Can contain summary details across
@@ -337,7 +337,7 @@ public class NetworkStats implements Parcelable {
public int findIndex(String iface, int uid, int set, int tag) {
for (int i = 0; i < size; i++) {
if (uid == this.uid[i] && set == this.set[i] && tag == this.tag[i]
- && Objects.equal(iface, this.iface[i])) {
+ && Objects.equals(iface, this.iface[i])) {
return i;
}
}
@@ -362,7 +362,7 @@ public class NetworkStats implements Parcelable {
}
if (uid == this.uid[i] && set == this.set[i] && tag == this.tag[i]
- && Objects.equal(iface, this.iface[i])) {
+ && Objects.equals(iface, this.iface[i])) {
return i;
}
}
diff --git a/core/java/android/net/NetworkTemplate.java b/core/java/android/net/NetworkTemplate.java
index c189ba4cd630..27197cc8a306 100644
--- a/core/java/android/net/NetworkTemplate.java
+++ b/core/java/android/net/NetworkTemplate.java
@@ -34,8 +34,9 @@ import android.content.res.Resources;
import android.os.Parcel;
import android.os.Parcelable;
+import java.util.Objects;
+
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.Objects;
/**
* Template definition used to generically match {@link NetworkIdentity},
@@ -176,7 +177,7 @@ public class NetworkTemplate implements Parcelable {
@Override
public int hashCode() {
- return Objects.hashCode(mMatchRule, mSubscriberId, mNetworkId);
+ return Objects.hash(mMatchRule, mSubscriberId, mNetworkId);
}
@Override
@@ -184,8 +185,8 @@ public class NetworkTemplate implements Parcelable {
if (obj instanceof NetworkTemplate) {
final NetworkTemplate other = (NetworkTemplate) obj;
return mMatchRule == other.mMatchRule
- && Objects.equal(mSubscriberId, other.mSubscriberId)
- && Objects.equal(mNetworkId, other.mNetworkId);
+ && Objects.equals(mSubscriberId, other.mSubscriberId)
+ && Objects.equals(mNetworkId, other.mNetworkId);
}
return false;
}
@@ -235,7 +236,7 @@ public class NetworkTemplate implements Parcelable {
return true;
} else {
return ((sForceAllNetworkTypes || contains(DATA_USAGE_NETWORK_TYPES, ident.mType))
- && Objects.equal(mSubscriberId, ident.mSubscriberId));
+ && Objects.equals(mSubscriberId, ident.mSubscriberId));
}
}
@@ -280,7 +281,7 @@ public class NetworkTemplate implements Parcelable {
private boolean matchesWifi(NetworkIdentity ident) {
switch (ident.mType) {
case TYPE_WIFI:
- return Objects.equal(
+ return Objects.equals(
removeDoubleQuotes(mNetworkId), removeDoubleQuotes(ident.mNetworkId));
default:
return false;
diff --git a/core/java/android/net/ProxyDataTracker.java b/core/java/android/net/ProxyDataTracker.java
new file mode 100644
index 000000000000..461e8b80212a
--- /dev/null
+++ b/core/java/android/net/ProxyDataTracker.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.net;
+
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.ServiceConnection;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Message;
+import android.os.Messenger;
+import android.os.RemoteException;
+import android.os.UserHandle;
+import android.util.Log;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * A data tracker responsible for bringing up and tearing down the system proxy server.
+ *
+ * {@hide}
+ */
+public class ProxyDataTracker extends BaseNetworkStateTracker {
+ private static final String TAG = "ProxyDataTracker";
+ private static final String NETWORK_TYPE = "PROXY";
+
+ // TODO: investigate how to get these DNS addresses from the system.
+ private static final String DNS1 = "8.8.8.8";
+ private static final String DNS2 = "8.8.4.4";
+ private static final String REASON_ENABLED = "enabled";
+ private static final String REASON_DISABLED = "disabled";
+ private static final String REASON_PROXY_DOWN = "proxy_down";
+
+ private static final int MSG_TEAR_DOWN_REQUEST = 1;
+ private static final int MSG_SETUP_REQUEST = 2;
+
+ private static final String PERMISSION_PROXY_STATUS_SENDER =
+ "android.permission.ACCESS_NETWORK_CONDITIONS";
+ private static final String ACTION_PROXY_STATUS_CHANGE =
+ "com.android.net.PROXY_STATUS_CHANGE";
+ private static final String KEY_IS_PROXY_AVAILABLE = "is_proxy_available";
+ private static final String KEY_REPLY_TO_MESSENGER_BINDER = "reply_to_messenger_binder";
+ private static final String KEY_REPLY_TO_MESSENGER_BINDER_BUNDLE =
+ "reply_to_messenger_binder_bundle";
+
+ private Handler mTarget;
+ private Messenger mProxyStatusService;
+ private AtomicBoolean mReconnectRequested = new AtomicBoolean(false);
+ private AtomicBoolean mIsProxyAvailable = new AtomicBoolean(false);
+ private final AtomicInteger mDefaultGatewayAddr = new AtomicInteger(0);
+
+ private final BroadcastReceiver mProxyStatusServiceListener = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (intent.getAction().equals(ACTION_PROXY_STATUS_CHANGE)) {
+ mIsProxyAvailable.set(intent.getBooleanExtra(KEY_IS_PROXY_AVAILABLE, false));
+ if (mIsProxyAvailable.get()) {
+ Bundle bundle = intent.getBundleExtra(KEY_REPLY_TO_MESSENGER_BINDER_BUNDLE);
+ if (bundle == null || bundle.getBinder(KEY_REPLY_TO_MESSENGER_BINDER) == null) {
+ Log.e(TAG, "no messenger binder in the intent to send future requests");
+ mIsProxyAvailable.set(false);
+ return;
+ }
+ mProxyStatusService =
+ new Messenger(bundle.getBinder(KEY_REPLY_TO_MESSENGER_BINDER));
+ // If there is a pending reconnect request, do it now.
+ if (mReconnectRequested.get()) {
+ reconnect();
+ }
+ } else {
+ setDetailedState(NetworkInfo.DetailedState.DISCONNECTED,
+ REASON_PROXY_DOWN, null);
+ }
+ } else {
+ Log.d(TAG, "Unrecognized broadcast intent");
+ }
+ }
+ };
+
+ /**
+ * Create a new ProxyDataTracker
+ */
+ public ProxyDataTracker() {
+ mNetworkInfo = new NetworkInfo(ConnectivityManager.TYPE_PROXY, 0, NETWORK_TYPE, "");
+ mLinkProperties = new LinkProperties();
+ mLinkCapabilities = new LinkCapabilities();
+ mNetworkInfo.setIsAvailable(true);
+ try {
+ mLinkProperties.addDns(InetAddress.getByName(DNS1));
+ mLinkProperties.addDns(InetAddress.getByName(DNS2));
+ } catch (UnknownHostException e) {
+ Log.e(TAG, "Could not add DNS address", e);
+ }
+ }
+
+ public Object Clone() throws CloneNotSupportedException {
+ throw new CloneNotSupportedException();
+ }
+
+ @Override
+ public void startMonitoring(Context context, Handler target) {
+ mContext = context;
+ mTarget = target;
+ mContext.registerReceiver(mProxyStatusServiceListener,
+ new IntentFilter(ACTION_PROXY_STATUS_CHANGE),
+ PERMISSION_PROXY_STATUS_SENDER,
+ null);
+ }
+
+ /**
+ * Disable connectivity to the network.
+ */
+ public boolean teardown() {
+ setTeardownRequested(true);
+ mReconnectRequested.set(false);
+ try {
+ if (mIsProxyAvailable.get() && mProxyStatusService != null) {
+ mProxyStatusService.send(Message.obtain(null, MSG_TEAR_DOWN_REQUEST));
+ }
+ } catch (RemoteException e) {
+ Log.e(TAG, "Unable to connect to proxy status service", e);
+ return false;
+ }
+ setDetailedState(NetworkInfo.DetailedState.DISCONNECTED, REASON_DISABLED, null);
+ return true;
+ }
+
+ /**
+ * Re-enable proxy data connectivity after a {@link #teardown()}.
+ */
+ public boolean reconnect() {
+ mReconnectRequested.set(true);
+ setTeardownRequested(false);
+ if (!mIsProxyAvailable.get()) {
+ Log.w(TAG, "Reconnect requested even though proxy service is not up. Bailing.");
+ return false;
+ }
+ setDetailedState(NetworkInfo.DetailedState.CONNECTING, REASON_ENABLED, null);
+
+ try {
+ mProxyStatusService.send(Message.obtain(null, MSG_SETUP_REQUEST));
+ } catch (RemoteException e) {
+ Log.e(TAG, "Unable to connect to proxy status service", e);
+ setDetailedState(NetworkInfo.DetailedState.DISCONNECTED, REASON_PROXY_DOWN, null);
+ return false;
+ }
+ // We'll assume proxy is set up successfully. If not, a status change broadcast will be
+ // received afterwards to indicate any failure.
+ setDetailedState(NetworkInfo.DetailedState.CONNECTED, REASON_ENABLED, null);
+ return true;
+ }
+
+ /**
+ * Fetch default gateway address for the network
+ */
+ public int getDefaultGatewayAddr() {
+ return mDefaultGatewayAddr.get();
+ }
+
+ /**
+ * Return the system properties name associated with the tcp buffer sizes
+ * for this network.
+ */
+ public String getTcpBufferSizesPropName() {
+ return "net.tcp.buffersize.wifi";
+ }
+
+ /**
+ * Record the detailed state of a network, and if it is a
+ * change from the previous state, send a notification to
+ * any listeners.
+ * @param state the new @{code DetailedState}
+ * @param reason a {@code String} indicating a reason for the state change,
+ * if one was supplied. May be {@code null}.
+ * @param extraInfo optional {@code String} providing extra information about the state change
+ */
+ private void setDetailedState(NetworkInfo.DetailedState state, String reason,
+ String extraInfo) {
+ mNetworkInfo.setDetailedState(state, reason, extraInfo);
+ Message msg = mTarget.obtainMessage(EVENT_STATE_CHANGED, mNetworkInfo);
+ msg.sendToTarget();
+ }
+}
diff --git a/core/java/android/net/SSLCertificateSocketFactory.java b/core/java/android/net/SSLCertificateSocketFactory.java
index 208b2126e14d..b0278d39e072 100644
--- a/core/java/android/net/SSLCertificateSocketFactory.java
+++ b/core/java/android/net/SSLCertificateSocketFactory.java
@@ -533,7 +533,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory {
@Override
public String[] getDefaultCipherSuites() {
- return getDelegate().getSupportedCipherSuites();
+ return getDelegate().getDefaultCipherSuites();
}
@Override
diff --git a/core/java/android/net/arp/ArpPeer.java b/core/java/android/net/arp/ArpPeer.java
deleted file mode 100644
index 2013b11eb575..000000000000
--- a/core/java/android/net/arp/ArpPeer.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (C) 2012 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.arp;
-
-import android.net.LinkAddress;
-import android.net.LinkProperties;
-import android.net.RouteInfo;
-import android.os.SystemClock;
-import android.util.Log;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.Inet6Address;
-import java.net.SocketException;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.util.Arrays;
-
-import libcore.net.RawSocket;
-
-/**
- * This class allows simple ARP exchanges over an uninitialized network
- * interface.
- *
- * @hide
- */
-public class ArpPeer {
- private static final boolean DBG = false;
- private static final String TAG = "ArpPeer";
- private String mInterfaceName;
- private final InetAddress mMyAddr;
- private final byte[] mMyMac = new byte[6];
- private final InetAddress mPeer;
- private final RawSocket mSocket;
- private final byte[] L2_BROADCAST; // TODO: refactor from DhcpClient.java
- private static final int MAX_LENGTH = 1500; // refactor from DhcpPacket.java
- private static final int ETHERNET_TYPE = 1;
- private static final int ARP_LENGTH = 28;
- private static final int MAC_ADDR_LENGTH = 6;
- private static final int IPV4_LENGTH = 4;
-
- public ArpPeer(String interfaceName, InetAddress myAddr, String mac,
- InetAddress peer) throws SocketException {
- mInterfaceName = interfaceName;
- mMyAddr = myAddr;
-
- if (mac != null) {
- for (int i = 0; i < MAC_ADDR_LENGTH; i++) {
- mMyMac[i] = (byte) Integer.parseInt(mac.substring(
- i*3, (i*3) + 2), 16);
- }
- }
-
- if (myAddr instanceof Inet6Address || peer instanceof Inet6Address) {
- throw new IllegalArgumentException("IPv6 unsupported");
- }
-
- mPeer = peer;
- L2_BROADCAST = new byte[MAC_ADDR_LENGTH];
- Arrays.fill(L2_BROADCAST, (byte) 0xFF);
-
- mSocket = new RawSocket(mInterfaceName, RawSocket.ETH_P_ARP);
- }
-
- /**
- * Returns the MAC address (or null if timeout) for the requested
- * peer.
- */
- public byte[] doArp(int timeoutMillis) {
- ByteBuffer buf = ByteBuffer.allocate(MAX_LENGTH);
- byte[] desiredIp = mPeer.getAddress();
- long timeout = SystemClock.elapsedRealtime() + timeoutMillis;
-
- // construct ARP request packet, using a ByteBuffer as a
- // convenient container
- buf.clear();
- buf.order(ByteOrder.BIG_ENDIAN);
-
- buf.putShort((short) ETHERNET_TYPE); // Ethernet type, 16 bits
- buf.putShort(RawSocket.ETH_P_IP); // Protocol type IP, 16 bits
- buf.put((byte)MAC_ADDR_LENGTH); // MAC address length, 6 bytes
- buf.put((byte)IPV4_LENGTH); // IPv4 protocol size
- buf.putShort((short) 1); // ARP opcode 1: 'request'
- buf.put(mMyMac); // six bytes: sender MAC
- buf.put(mMyAddr.getAddress()); // four bytes: sender IP address
- buf.put(new byte[MAC_ADDR_LENGTH]); // target MAC address: unknown
- buf.put(desiredIp); // target IP address, 4 bytes
- buf.flip();
- mSocket.write(L2_BROADCAST, buf.array(), 0, buf.limit());
-
- byte[] recvBuf = new byte[MAX_LENGTH];
-
- while (SystemClock.elapsedRealtime() < timeout) {
- long duration = (long) timeout - SystemClock.elapsedRealtime();
- int readLen = mSocket.read(recvBuf, 0, recvBuf.length, -1,
- (int) duration);
-
- // Verify packet details. see RFC 826
- if ((readLen >= ARP_LENGTH) // trailing bytes at times
- && (recvBuf[0] == 0) && (recvBuf[1] == ETHERNET_TYPE) // type Ethernet
- && (recvBuf[2] == 8) && (recvBuf[3] == 0) // protocol IP
- && (recvBuf[4] == MAC_ADDR_LENGTH) // mac length
- && (recvBuf[5] == IPV4_LENGTH) // IPv4 protocol size
- && (recvBuf[6] == 0) && (recvBuf[7] == 2) // ARP reply
- // verify desired IP address
- && (recvBuf[14] == desiredIp[0]) && (recvBuf[15] == desiredIp[1])
- && (recvBuf[16] == desiredIp[2]) && (recvBuf[17] == desiredIp[3]))
- {
- // looks good. copy out the MAC
- byte[] result = new byte[MAC_ADDR_LENGTH];
- System.arraycopy(recvBuf, 8, result, 0, MAC_ADDR_LENGTH);
- return result;
- }
- }
-
- return null;
- }
-
- public static boolean doArp(String myMacAddress, LinkProperties linkProperties,
- int timeoutMillis, int numArpPings, int minArpResponses) {
- String interfaceName = linkProperties.getInterfaceName();
- InetAddress inetAddress = null;
- InetAddress gateway = null;
- boolean success;
-
- for (LinkAddress la : linkProperties.getLinkAddresses()) {
- inetAddress = la.getAddress();
- break;
- }
-
- for (RouteInfo route : linkProperties.getRoutes()) {
- gateway = route.getGateway();
- break;
- }
-
- try {
- ArpPeer peer = new ArpPeer(interfaceName, inetAddress, myMacAddress, gateway);
- int responses = 0;
- for (int i=0; i < numArpPings; i++) {
- if(peer.doArp(timeoutMillis) != null) responses++;
- }
- if (DBG) Log.d(TAG, "ARP test result: " + responses + "/" + numArpPings);
- success = (responses >= minArpResponses);
- peer.close();
- } catch (SocketException se) {
- //Consider an Arp socket creation issue as a successful Arp
- //test to avoid any wifi connectivity issues
- Log.e(TAG, "ARP test initiation failure: " + se);
- success = true;
- }
- return success;
- }
-
- public void close() {
- try {
- mSocket.close();
- } catch (IOException ex) {
- }
- }
-}
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index 9ada6e640089..b1a9ea300d74 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -460,7 +460,7 @@ public abstract class BatteryStats implements Parcelable {
public byte batteryHealth;
public byte batteryPlugType;
- public char batteryTemperature;
+ public short batteryTemperature;
public char batteryVoltage;
// Constants from SCREEN_BRIGHTNESS_*
@@ -537,7 +537,7 @@ public abstract class BatteryStats implements Parcelable {
batteryHealth = (byte)((bat>>20)&0xf);
batteryPlugType = (byte)((bat>>24)&0xf);
bat = src.readInt();
- batteryTemperature = (char)(bat&0xffff);
+ batteryTemperature = (short)(bat&0xffff);
batteryVoltage = (char)((bat>>16)&0xffff);
states = src.readInt();
}
@@ -606,7 +606,7 @@ public abstract class BatteryStats implements Parcelable {
if (DEBUG) Slog.i(TAG, "WRITE DELTA: batteryToken=0x"
+ Integer.toHexString(batteryLevelInt)
+ " batteryLevel=" + batteryLevel
- + " batteryTemp=" + (int)batteryTemperature
+ + " batteryTemp=" + batteryTemperature
+ " batteryVolt=" + (int)batteryVoltage);
}
if (stateIntChanged) {
@@ -621,8 +621,8 @@ public abstract class BatteryStats implements Parcelable {
}
private int buildBatteryLevelInt() {
- return ((((int)batteryLevel)<<24)&0xff000000)
- | ((((int)batteryTemperature)<<14)&0x00ffc000)
+ return ((((int)batteryLevel)<<25)&0xfe000000)
+ | ((((int)batteryTemperature)<<14)&0x01ffc000)
| (((int)batteryVoltage)&0x00003fff);
}
@@ -658,13 +658,13 @@ public abstract class BatteryStats implements Parcelable {
if ((firstToken&DELTA_BATTERY_LEVEL_FLAG) != 0) {
int batteryLevelInt = src.readInt();
- batteryLevel = (byte)((batteryLevelInt>>24)&0xff);
- batteryTemperature = (char)((batteryLevelInt>>14)&0x3ff);
+ batteryLevel = (byte)((batteryLevelInt>>25)&0x7f);
+ batteryTemperature = (short)((batteryLevelInt<<7)>>21);
batteryVoltage = (char)(batteryLevelInt&0x3fff);
if (DEBUG) Slog.i(TAG, "READ DELTA: batteryToken=0x"
+ Integer.toHexString(batteryLevelInt)
+ " batteryLevel=" + batteryLevel
- + " batteryTemp=" + (int)batteryTemperature
+ + " batteryTemp=" + batteryTemperature
+ " batteryVolt=" + (int)batteryVoltage);
}
diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java
index f4a83910e652..ba716052d8fc 100644
--- a/core/java/android/os/Binder.java
+++ b/core/java/android/os/Binder.java
@@ -56,7 +56,7 @@ public class Binder implements IBinder {
private static String sDumpDisabled = null;
/* mObject is used by native code, do not remove or rename */
- private int mObject;
+ private long mObject;
private IInterface mOwner;
private String mDescriptor;
@@ -390,7 +390,7 @@ public class Binder implements IBinder {
private native final void destroy();
// Entry point from android_util_Binder.cpp's onTransact
- private boolean execTransact(int code, int dataObj, int replyObj,
+ private boolean execTransact(int code, long dataObj, long replyObj,
int flags) {
Parcel data = Parcel.obtain(dataObj);
Parcel reply = Parcel.obtain(replyObj);
@@ -499,6 +499,6 @@ final class BinderProxy implements IBinder {
}
final private WeakReference mSelf;
- private int mObject;
- private int mOrgue;
+ private long mObject;
+ private long mOrgue;
}
diff --git a/core/java/android/os/Bundle.java b/core/java/android/os/Bundle.java
index f9c1d318a9f6..af57507b8782 100644
--- a/core/java/android/os/Bundle.java
+++ b/core/java/android/os/Bundle.java
@@ -380,7 +380,7 @@ public final class Bundle implements Parcelable, Cloneable {
SparseArray<? extends Parcelable> array =
(SparseArray<? extends Parcelable>) obj;
for (int n = array.size() - 1; n >= 0; n--) {
- if ((array.get(n).describeContents()
+ if ((array.valueAt(n).describeContents()
& Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0) {
fdFound = true;
break;
diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java
index 974bf8ddfb80..2de12047dc48 100644
--- a/core/java/android/os/Debug.java
+++ b/core/java/android/os/Debug.java
@@ -578,7 +578,7 @@ href="{@docRoot}guide/developing/tools/traceview.html">Traceview: A Graphical Lo
* tracing.
*/
public static void startMethodTracing() {
- VMDebug.startMethodTracing(DEFAULT_TRACE_FILE_PATH, 0, 0);
+ VMDebug.startMethodTracing(DEFAULT_TRACE_FILE_PATH, 0, 0, false, 0);
}
/**
@@ -589,7 +589,7 @@ href="{@docRoot}guide/developing/tools/traceview.html">Traceview: A Graphical Lo
* information about reading trace files.
*
* @param traceName Name for the trace log file to create.
- * If no name argument is given, this value defaults to "/sdcard/dmtrace.trace".
+ * If {@code traceName} is null, this value defaults to "/sdcard/dmtrace.trace".
* If the files already exist, they will be truncated.
* If the trace file given does not end in ".trace", it will be appended for you.
*/
@@ -604,7 +604,7 @@ href="{@docRoot}guide/developing/tools/traceview.html">Traceview: A Graphical Lo
href="{@docRoot}guide/developing/tools/traceview.html">Traceview: A Graphical Log Viewer</a> for
* information about reading trace files.
* @param traceName Name for the trace log file to create.
- * If no name argument is given, this value defaults to "/sdcard/dmtrace.trace".
+ * If {@code traceName} is null, this value defaults to "/sdcard/dmtrace.trace".
* If the files already exist, they will be truncated.
* If the trace file given does not end in ".trace", it will be appended for you.
*
@@ -627,26 +627,54 @@ href="{@docRoot}guide/developing/tools/traceview.html">Traceview: A Graphical Lo
* in relative terms (e.g. was run #1 faster than run #2). The times
* for native methods will not change, so don't try to use this to
* compare the performance of interpreted and native implementations of the
- * same method. As an alternative, consider using "native" tracing
- * in the emulator via {@link #startNativeTracing()}.
+ * same method. As an alternative, consider using sampling-based method
+ * tracing via {@link #startMethodTracingSampling(String, int, int)} or
+ * "native" tracing in the emulator via {@link #startNativeTracing()}.
* </p>
*
* @param traceName Name for the trace log file to create.
- * If no name argument is given, this value defaults to "/sdcard/dmtrace.trace".
+ * If {@code traceName} is null, this value defaults to "/sdcard/dmtrace.trace".
* If the files already exist, they will be truncated.
* If the trace file given does not end in ".trace", it will be appended for you.
* @param bufferSize The maximum amount of trace data we gather. If not given, it defaults to 8MB.
+ * @param flags Flags to control method tracing. The only one that is currently defined is {@link #TRACE_COUNT_ALLOCS}.
*/
public static void startMethodTracing(String traceName, int bufferSize,
int flags) {
+ VMDebug.startMethodTracing(fixTraceName(traceName), bufferSize, flags, false, 0);
+ }
+
+ /**
+ * Start sampling-based method tracing, specifying the trace log file name,
+ * the buffer size, and the sampling interval. The trace files will be put
+ * under "/sdcard" unless an absolute path is given. See <a
+ href="{@docRoot}guide/developing/tools/traceview.html">Traceview: A Graphical Log Viewer</a>
+ * for information about reading trace files.
+ *
+ * @param traceName Name for the trace log file to create.
+ * If {@code traceName} is null, this value defaults to "/sdcard/dmtrace.trace".
+ * If the files already exist, they will be truncated.
+ * If the trace file given does not end in ".trace", it will be appended for you.
+ * @param bufferSize The maximum amount of trace data we gather. If not given, it defaults to 8MB.
+ * @param intervalUs The amount of time between each sample in microseconds.
+ */
+ public static void startMethodTracingSampling(String traceName,
+ int bufferSize, int intervalUs) {
+ VMDebug.startMethodTracing(fixTraceName(traceName), bufferSize, 0, true, intervalUs);
+ }
- String pathName = traceName;
- if (pathName.charAt(0) != '/')
- pathName = DEFAULT_TRACE_PATH_PREFIX + pathName;
- if (!pathName.endsWith(DEFAULT_TRACE_EXTENSION))
- pathName = pathName + DEFAULT_TRACE_EXTENSION;
+ /**
+ * Formats name of trace log file for method tracing.
+ */
+ private static String fixTraceName(String traceName) {
+ if (traceName == null)
+ traceName = DEFAULT_TRACE_FILE_PATH;
+ if (traceName.charAt(0) != '/')
+ traceName = DEFAULT_TRACE_PATH_PREFIX + traceName;
+ if (!traceName.endsWith(DEFAULT_TRACE_EXTENSION))
+ traceName = traceName + DEFAULT_TRACE_EXTENSION;
- VMDebug.startMethodTracing(pathName, bufferSize, flags);
+ return traceName;
}
/**
@@ -660,7 +688,7 @@ href="{@docRoot}guide/developing/tools/traceview.html">Traceview: A Graphical Lo
*/
public static void startMethodTracing(String traceName, FileDescriptor fd,
int bufferSize, int flags) {
- VMDebug.startMethodTracing(traceName, fd, bufferSize, flags);
+ VMDebug.startMethodTracing(traceName, fd, bufferSize, flags, false, 0);
}
/**
diff --git a/core/java/android/os/FactoryTest.java b/core/java/android/os/FactoryTest.java
index ec996973fdb0..7a252f933446 100644
--- a/core/java/android/os/FactoryTest.java
+++ b/core/java/android/os/FactoryTest.java
@@ -25,6 +25,20 @@ package android.os;
* {@hide}
*/
public final class FactoryTest {
+ public static final int FACTORY_TEST_OFF = 0;
+ public static final int FACTORY_TEST_LOW_LEVEL = 1;
+ public static final int FACTORY_TEST_HIGH_LEVEL = 2;
+
+ /**
+ * Gets the current factory test mode.
+ *
+ * @return One of: {@link #FACTORY_TEST_OFF}, {@link #FACTORY_TEST_LOW_LEVEL},
+ * or {@link #FACTORY_TEST_HIGH_LEVEL}.
+ */
+ public static int getMode() {
+ return SystemProperties.getInt("ro.factorytest", FACTORY_TEST_OFF);
+ }
+
/**
* When true, long-press on power should immediately cause the device to
* shut down, without prompting the user.
diff --git a/core/java/android/os/MemoryFile.java b/core/java/android/os/MemoryFile.java
index e8148f7ea1af..ee7a4c664ba6 100644
--- a/core/java/android/os/MemoryFile.java
+++ b/core/java/android/os/MemoryFile.java
@@ -43,19 +43,19 @@ public class MemoryFile
private static native FileDescriptor native_open(String name, int length) throws IOException;
// returns memory address for ashmem region
- private static native int native_mmap(FileDescriptor fd, int length, int mode)
+ private static native long native_mmap(FileDescriptor fd, int length, int mode)
throws IOException;
- private static native void native_munmap(int addr, int length) throws IOException;
+ private static native void native_munmap(long addr, int length) throws IOException;
private static native void native_close(FileDescriptor fd);
- private static native int native_read(FileDescriptor fd, int address, byte[] buffer,
+ private static native int native_read(FileDescriptor fd, long address, byte[] buffer,
int srcOffset, int destOffset, int count, boolean isUnpinned) throws IOException;
- private static native void native_write(FileDescriptor fd, int address, byte[] buffer,
+ private static native void native_write(FileDescriptor fd, long address, byte[] buffer,
int srcOffset, int destOffset, int count, boolean isUnpinned) throws IOException;
private static native void native_pin(FileDescriptor fd, boolean pin) throws IOException;
private static native int native_get_size(FileDescriptor fd) throws IOException;
private FileDescriptor mFD; // ashmem file descriptor
- private int mAddress; // address of ashmem memory
+ private long mAddress; // address of ashmem memory
private int mLength; // total length of our ashmem region
private boolean mAllowPurging = false; // true if our ashmem region is unpinned
diff --git a/core/java/android/os/MessageQueue.java b/core/java/android/os/MessageQueue.java
index 799de5c656b2..75f9813b7ae7 100644
--- a/core/java/android/os/MessageQueue.java
+++ b/core/java/android/os/MessageQueue.java
@@ -35,7 +35,7 @@ public final class MessageQueue {
private final boolean mQuitAllowed;
@SuppressWarnings("unused")
- private int mPtr; // used by native code
+ private long mPtr; // used by native code
Message mMessages;
private final ArrayList<IdleHandler> mIdleHandlers = new ArrayList<IdleHandler>();
@@ -49,11 +49,11 @@ public final class MessageQueue {
// Barriers are indicated by messages with a null target whose arg1 field carries the token.
private int mNextBarrierToken;
- private native static int nativeInit();
- private native static void nativeDestroy(int ptr);
- private native static void nativePollOnce(int ptr, int timeoutMillis);
- private native static void nativeWake(int ptr);
- private native static boolean nativeIsIdling(int ptr);
+ private native static long nativeInit();
+ private native static void nativeDestroy(long ptr);
+ private native static void nativePollOnce(long ptr, int timeoutMillis);
+ private native static void nativeWake(long ptr);
+ private native static boolean nativeIsIdling(long ptr);
/**
* Callback interface for discovering when a thread is going to block
diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java
index 94b961793e26..67160985b849 100644
--- a/core/java/android/os/Parcel.java
+++ b/core/java/android/os/Parcel.java
@@ -182,7 +182,7 @@ public final class Parcel {
private static final String TAG = "Parcel";
@SuppressWarnings({"UnusedDeclaration"})
- private int mNativePtr; // used by native code
+ private long mNativePtr; // used by native code
/**
* Flag indicating if {@link #mNativePtr} was allocated by this object,
@@ -232,47 +232,47 @@ public final class Parcel {
private static final int EX_NETWORK_MAIN_THREAD = -6;
private static final int EX_HAS_REPLY_HEADER = -128; // special; see below
- private static native int nativeDataSize(int nativePtr);
- private static native int nativeDataAvail(int nativePtr);
- private static native int nativeDataPosition(int nativePtr);
- private static native int nativeDataCapacity(int nativePtr);
- private static native void nativeSetDataSize(int nativePtr, int size);
- private static native void nativeSetDataPosition(int nativePtr, int pos);
- private static native void nativeSetDataCapacity(int nativePtr, int size);
-
- private static native boolean nativePushAllowFds(int nativePtr, boolean allowFds);
- private static native void nativeRestoreAllowFds(int nativePtr, boolean lastValue);
-
- private static native void nativeWriteByteArray(int nativePtr, byte[] b, int offset, int len);
- private static native void nativeWriteInt(int nativePtr, int val);
- private static native void nativeWriteLong(int nativePtr, long val);
- private static native void nativeWriteFloat(int nativePtr, float val);
- private static native void nativeWriteDouble(int nativePtr, double val);
- private static native void nativeWriteString(int nativePtr, String val);
- private static native void nativeWriteStrongBinder(int nativePtr, IBinder val);
- private static native void nativeWriteFileDescriptor(int nativePtr, FileDescriptor val);
-
- private static native byte[] nativeCreateByteArray(int nativePtr);
- private static native int nativeReadInt(int nativePtr);
- private static native long nativeReadLong(int nativePtr);
- private static native float nativeReadFloat(int nativePtr);
- private static native double nativeReadDouble(int nativePtr);
- private static native String nativeReadString(int nativePtr);
- private static native IBinder nativeReadStrongBinder(int nativePtr);
- private static native FileDescriptor nativeReadFileDescriptor(int nativePtr);
-
- private static native int nativeCreate();
- private static native void nativeFreeBuffer(int nativePtr);
- private static native void nativeDestroy(int nativePtr);
-
- private static native byte[] nativeMarshall(int nativePtr);
+ private static native int nativeDataSize(long nativePtr);
+ private static native int nativeDataAvail(long nativePtr);
+ private static native int nativeDataPosition(long nativePtr);
+ private static native int nativeDataCapacity(long nativePtr);
+ private static native void nativeSetDataSize(long nativePtr, int size);
+ private static native void nativeSetDataPosition(long nativePtr, int pos);
+ private static native void nativeSetDataCapacity(long nativePtr, int size);
+
+ private static native boolean nativePushAllowFds(long nativePtr, boolean allowFds);
+ private static native void nativeRestoreAllowFds(long nativePtr, boolean lastValue);
+
+ private static native void nativeWriteByteArray(long nativePtr, byte[] b, int offset, int len);
+ private static native void nativeWriteInt(long nativePtr, int val);
+ private static native void nativeWriteLong(long nativePtr, long val);
+ private static native void nativeWriteFloat(long nativePtr, float val);
+ private static native void nativeWriteDouble(long nativePtr, double val);
+ private static native void nativeWriteString(long nativePtr, String val);
+ private static native void nativeWriteStrongBinder(long nativePtr, IBinder val);
+ private static native void nativeWriteFileDescriptor(long nativePtr, FileDescriptor val);
+
+ private static native byte[] nativeCreateByteArray(long nativePtr);
+ private static native int nativeReadInt(long nativePtr);
+ private static native long nativeReadLong(long nativePtr);
+ private static native float nativeReadFloat(long nativePtr);
+ private static native double nativeReadDouble(long nativePtr);
+ private static native String nativeReadString(long nativePtr);
+ private static native IBinder nativeReadStrongBinder(long nativePtr);
+ private static native FileDescriptor nativeReadFileDescriptor(long nativePtr);
+
+ private static native long nativeCreate();
+ private static native void nativeFreeBuffer(long nativePtr);
+ private static native void nativeDestroy(long nativePtr);
+
+ private static native byte[] nativeMarshall(long nativePtr);
private static native void nativeUnmarshall(
- int nativePtr, byte[] data, int offest, int length);
+ long nativePtr, byte[] data, int offest, int length);
private static native void nativeAppendFrom(
- int thisNativePtr, int otherNativePtr, int offset, int length);
- private static native boolean nativeHasFileDescriptors(int nativePtr);
- private static native void nativeWriteInterfaceToken(int nativePtr, String interfaceName);
- private static native void nativeEnforceInterface(int nativePtr, String interfaceName);
+ long thisNativePtr, long otherNativePtr, int offset, int length);
+ private static native boolean nativeHasFileDescriptors(long nativePtr);
+ private static native void nativeWriteInterfaceToken(long nativePtr, String interfaceName);
+ private static native void nativeEnforceInterface(long nativePtr, String interfaceName);
public final static Parcelable.Creator<String> STRING_CREATOR
= new Parcelable.Creator<String>() {
@@ -2229,6 +2229,11 @@ public final class Parcel {
mCreators = new HashMap<ClassLoader,HashMap<String,Parcelable.Creator>>();
static protected final Parcel obtain(int obj) {
+ throw new UnsupportedOperationException();
+ }
+
+ /** @hide */
+ static protected final Parcel obtain(long obj) {
final Parcel[] pool = sHolderPool;
synchronized (pool) {
Parcel p;
@@ -2247,7 +2252,7 @@ public final class Parcel {
return new Parcel(obj);
}
- private Parcel(int nativePtr) {
+ private Parcel(long nativePtr) {
if (DEBUG_RECYCLE) {
mStack = new RuntimeException();
}
@@ -2255,7 +2260,7 @@ public final class Parcel {
init(nativePtr);
}
- private void init(int nativePtr) {
+ private void init(long nativePtr) {
if (nativePtr != 0) {
mNativePtr = nativePtr;
mOwnsNativeParcelObject = false;
diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java
index 5e0d48949c22..86ef4796d75e 100644
--- a/core/java/android/os/PowerManager.java
+++ b/core/java/android/os/PowerManager.java
@@ -191,6 +191,18 @@ public final class PowerManager {
public static final int PROXIMITY_SCREEN_OFF_WAKE_LOCK = 0x00000020;
/**
+ * Wake lock level: Put the screen in a low power state and allow the CPU to suspend
+ * if no other wake locks are held.
+ * <p>
+ * This is used by the dream manager to implement doze mode. It currently
+ * has no effect unless the power manager is in the dozing state.
+ * </p>
+ *
+ * {@hide}
+ */
+ public static final int DOZE_WAKE_LOCK = 0x00000040;
+
+ /**
* Mask for the wake lock level component of a combined wake lock level and flags integer.
*
* @hide
@@ -418,6 +430,7 @@ public final class PowerManager {
case SCREEN_BRIGHT_WAKE_LOCK:
case FULL_WAKE_LOCK:
case PROXIMITY_SCREEN_OFF_WAKE_LOCK:
+ case DOZE_WAKE_LOCK:
break;
default:
throw new IllegalArgumentException("Must specify a valid wake lock level.");
diff --git a/core/java/android/os/PowerManagerInternal.java b/core/java/android/os/PowerManagerInternal.java
new file mode 100644
index 000000000000..cb3d52819825
--- /dev/null
+++ b/core/java/android/os/PowerManagerInternal.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.os;
+
+import android.view.WindowManagerPolicy;
+
+/**
+ * Power manager local system service interface.
+ *
+ * @hide Only for use within the system server.
+ */
+public abstract class PowerManagerInternal {
+ /**
+ * Used by the window manager to override the screen brightness based on the
+ * current foreground activity.
+ *
+ * This method must only be called by the window manager.
+ *
+ * @param brightness The overridden brightness, or -1 to disable the override.
+ */
+ public abstract void setScreenBrightnessOverrideFromWindowManager(int brightness);
+
+ /**
+ * Used by the window manager to override the button brightness based on the
+ * current foreground activity.
+ *
+ * This method must only be called by the window manager.
+ *
+ * @param brightness The overridden brightness, or -1 to disable the override.
+ */
+ public abstract void setButtonBrightnessOverrideFromWindowManager(int brightness);
+
+ /**
+ * Used by the window manager to override the user activity timeout based on the
+ * current foreground activity. It can only be used to make the timeout shorter
+ * than usual, not longer.
+ *
+ * This method must only be called by the window manager.
+ *
+ * @param timeoutMillis The overridden timeout, or -1 to disable the override.
+ */
+ public abstract void setUserActivityTimeoutOverrideFromWindowManager(long timeoutMillis);
+
+ // TODO: Remove this and retrieve as a local service instead.
+ public abstract void setPolicy(WindowManagerPolicy policy);
+}
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java
index cf9ddb3b258b..057f516af17b 100644
--- a/core/java/android/os/Process.java
+++ b/core/java/android/os/Process.java
@@ -377,7 +377,7 @@ public class Process {
* @param gids Additional group-ids associated with the process.
* @param debugFlags Additional flags.
* @param targetSdkVersion The target SDK version for the app.
- * @param seInfo null-ok SE Android information for the new process.
+ * @param seInfo null-ok SELinux information for the new process.
* @param zygoteArgs Additional arguments to supply to the zygote process.
*
* @return An object that describes the result of the attempt to start the process.
@@ -557,7 +557,7 @@ public class Process {
* new process should setgroup() to.
* @param debugFlags Additional flags.
* @param targetSdkVersion The target SDK version for the app.
- * @param seInfo null-ok SE Android information for the new process.
+ * @param seInfo null-ok SELinux information for the new process.
* @param extraArgs Additional arguments to supply to the zygote process.
* @return An object that describes the result of the attempt to start the process.
* @throws ZygoteStartFailedEx if process start failed for any reason
@@ -892,19 +892,6 @@ public class Process {
}
/**
- * Set the out-of-memory badness adjustment for a process.
- *
- * @param pid The process identifier to set.
- * @param amt Adjustment value -- linux allows -16 to +15.
- *
- * @return Returns true if the underlying system supports this
- * feature, else false.
- *
- * {@hide}
- */
- public static final native boolean setOomAdj(int pid, int amt);
-
- /**
* Adjust the swappiness level for a process.
*
* @param pid The process identifier to set.
diff --git a/core/java/android/os/RecoverySystem.java b/core/java/android/os/RecoverySystem.java
index 5e20dec3fde0..f671ed955659 100644
--- a/core/java/android/os/RecoverySystem.java
+++ b/core/java/android/os/RecoverySystem.java
@@ -32,10 +32,8 @@ import java.security.GeneralSecurityException;
import java.security.PublicKey;
import java.security.Signature;
import java.security.SignatureException;
-import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
-import java.util.Collection;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Iterator;
@@ -48,7 +46,7 @@ import org.apache.harmony.security.asn1.BerInputStream;
import org.apache.harmony.security.pkcs7.ContentInfo;
import org.apache.harmony.security.pkcs7.SignedData;
import org.apache.harmony.security.pkcs7.SignerInfo;
-import org.apache.harmony.security.provider.cert.X509CertImpl;
+import org.apache.harmony.security.x509.Certificate;
/**
* RecoverySystem contains methods for interacting with the Android
@@ -93,9 +91,9 @@ public class RecoverySystem {
}
/** @return the set of certs that can be used to sign an OTA package. */
- private static HashSet<Certificate> getTrustedCerts(File keystore)
+ private static HashSet<X509Certificate> getTrustedCerts(File keystore)
throws IOException, GeneralSecurityException {
- HashSet<Certificate> trusted = new HashSet<Certificate>();
+ HashSet<X509Certificate> trusted = new HashSet<X509Certificate>();
if (keystore == null) {
keystore = DEFAULT_KEYSTORE;
}
@@ -107,7 +105,7 @@ public class RecoverySystem {
ZipEntry entry = entries.nextElement();
InputStream is = zip.getInputStream(entry);
try {
- trusted.add(cf.generateCertificate(is));
+ trusted.add((X509Certificate) cf.generateCertificate(is));
} finally {
is.close();
}
@@ -201,21 +199,23 @@ public class RecoverySystem {
if (signedData == null) {
throw new IOException("signedData is null");
}
- Collection encCerts = signedData.getCertificates();
+ List<Certificate> encCerts = signedData.getCertificates();
if (encCerts.isEmpty()) {
throw new IOException("encCerts is empty");
}
// Take the first certificate from the signature (packages
// should contain only one).
- Iterator it = encCerts.iterator();
+ Iterator<Certificate> it = encCerts.iterator();
X509Certificate cert = null;
if (it.hasNext()) {
- cert = new X509CertImpl((org.apache.harmony.security.x509.Certificate)it.next());
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ InputStream is = new ByteArrayInputStream(it.next().getEncoded());
+ cert = (X509Certificate) cf.generateCertificate(is);
} else {
throw new SignatureException("signature contains no certificates");
}
- List sigInfos = signedData.getSignerInfos();
+ List<SignerInfo> sigInfos = signedData.getSignerInfos();
SignerInfo sigInfo;
if (!sigInfos.isEmpty()) {
sigInfo = (SignerInfo)sigInfos.get(0);
@@ -226,12 +226,12 @@ public class RecoverySystem {
// Check that the public key of the certificate contained
// in the package equals one of our trusted public keys.
- HashSet<Certificate> trusted = getTrustedCerts(
+ HashSet<X509Certificate> trusted = getTrustedCerts(
deviceCertsZipFile == null ? DEFAULT_KEYSTORE : deviceCertsZipFile);
PublicKey signatureKey = cert.getPublicKey();
boolean verified = false;
- for (Certificate c : trusted) {
+ for (X509Certificate c : trusted) {
if (c.getPublicKey().equals(signatureKey)) {
verified = true;
break;
@@ -338,11 +338,11 @@ public class RecoverySystem {
}
/**
- * Reboots the device and wipes the user data partition. This is
- * sometimes called a "factory reset", which is something of a
- * misnomer because the system partition is not restored to its
- * factory state.
- * Requires the {@link android.Manifest.permission#REBOOT} permission.
+ * Reboots the device and wipes the user data and cache
+ * partitions. This is sometimes called a "factory reset", which
+ * is something of a misnomer because the system partition is not
+ * restored to its factory state. Requires the
+ * {@link android.Manifest.permission#REBOOT} permission.
*
* @param context the Context to use
*
@@ -350,6 +350,28 @@ public class RecoverySystem {
* fails, or if the reboot itself fails.
*/
public static void rebootWipeUserData(Context context) throws IOException {
+ rebootWipeUserData(context, false);
+ }
+
+ /**
+ * Reboots the device and wipes the user data and cache
+ * partitions. This is sometimes called a "factory reset", which
+ * is something of a misnomer because the system partition is not
+ * restored to its factory state. Requires the
+ * {@link android.Manifest.permission#REBOOT} permission.
+ *
+ * @param context the Context to use
+ * @param shutdown if true, the device will be powered down after
+ * the wipe completes, rather than being rebooted
+ * back to the regular system.
+ *
+ * @throws IOException if writing the recovery command file
+ * fails, or if the reboot itself fails.
+ *
+ * @hide
+ */
+ public static void rebootWipeUserData(Context context, boolean shutdown)
+ throws IOException {
final ConditionVariable condition = new ConditionVariable();
Intent intent = new Intent("android.intent.action.MASTER_CLEAR_NOTIFICATION");
@@ -365,7 +387,13 @@ public class RecoverySystem {
// Block until the ordered broadcast has completed.
condition.block();
- bootCommand(context, "--wipe_data\n--locale=" + Locale.getDefault().toString());
+ String shutdownArg = "";
+ if (shutdown) {
+ shutdownArg = "--shutdown_after\n";
+ }
+
+ bootCommand(context, shutdownArg + "--wipe_data\n--locale=" +
+ Locale.getDefault().toString());
}
/**
diff --git a/core/java/android/os/SELinux.java b/core/java/android/os/SELinux.java
index c05a9747ba6d..c9dd5d7ad647 100644
--- a/core/java/android/os/SELinux.java
+++ b/core/java/android/os/SELinux.java
@@ -45,7 +45,7 @@ public class SELinux {
/**
* Set whether SELinux is permissive or enforcing.
- * @param boolean representing whether to set SELinux to enforcing
+ * @param value representing whether to set SELinux to enforcing
* @return a boolean representing whether the desired mode was set
*/
public static final native boolean setSELinuxEnforce(boolean value);
@@ -60,7 +60,7 @@ public class SELinux {
/**
* Change the security context of an existing file object.
* @param path representing the path of file object to relabel.
- * @param con new security context given as a String.
+ * @param context new security context given as a String.
* @return a boolean indicating whether the operation succeeded.
*/
public static final native boolean setFileContext(String path, String context);
@@ -87,8 +87,6 @@ public class SELinux {
/**
* Gets the security context of a given process id.
- * Use of this function is discouraged for Binder transactions.
- * Use Binder.getCallingSecctx() instead.
* @param pid an int representing the process id to check.
* @return a String representing the security context of the given pid.
*/
@@ -102,15 +100,15 @@ public class SELinux {
/**
* Gets the value for the given SELinux boolean name.
- * @param String The name of the SELinux boolean.
+ * @param name The name of the SELinux boolean.
* @return a boolean indicating whether the SELinux boolean is set.
*/
public static final native boolean getBooleanValue(String name);
/**
* Sets the value for the given SELinux boolean name.
- * @param String The name of the SELinux boolean.
- * @param Boolean The new value of the SELinux boolean.
+ * @param name The name of the SELinux boolean.
+ * @param value The new value of the SELinux boolean.
* @return a boolean indicating whether or not the operation succeeded.
*/
public static final native boolean setBooleanValue(String name, boolean value);
diff --git a/core/java/android/os/storage/StorageVolume.java b/core/java/android/os/storage/StorageVolume.java
index 0285cb932114..06565f1d1e4a 100644
--- a/core/java/android/os/storage/StorageVolume.java
+++ b/core/java/android/os/storage/StorageVolume.java
@@ -216,7 +216,7 @@ public class StorageVolume implements Parcelable {
return -1;
}
try {
- return Integer.parseInt(mUuid.replace("-", ""), 16);
+ return (int)Long.parseLong(mUuid.replace("-", ""), 16);
} catch (NumberFormatException e) {
return -1;
}
diff --git a/core/java/android/service/dreams/DozeHardware.java b/core/java/android/service/dreams/DozeHardware.java
new file mode 100644
index 000000000000..b5e7f436cd25
--- /dev/null
+++ b/core/java/android/service/dreams/DozeHardware.java
@@ -0,0 +1,77 @@
+/**
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.service.dreams;
+
+import android.os.RemoteException;
+import android.util.Log;
+
+/**
+ * Provides access to low-level hardware features that a dream may use to provide
+ * a richer user experience while dozing.
+ * <p>
+ * This class contains functions that should be called by the dream to configure
+ * hardware before starting to doze and allowing the application processor to suspend.
+ * For example, the dream may provide the hardware with enough information to render
+ * some content on its own without any further assistance from the application processor.
+ * </p><p>
+ * This object is obtained by calling {@link DreamService#getDozeHardware()}.
+ * </p>
+ *
+ * @hide experimental
+ */
+public final class DozeHardware {
+ private static final String TAG = "DozeHardware";
+
+ public static final String MSG_ENABLE_MCU = "enable_mcu";
+
+ public static final byte[] VALUE_ON = "on".getBytes();
+ public static final byte[] VALUE_OFF = "off".getBytes();
+
+ private final IDozeHardware mHardware;
+
+ DozeHardware(IDozeHardware hardware) {
+ mHardware = hardware;
+ }
+
+ /**
+ * Sets whether to enable the microcontroller.
+ *
+ * @param enable If true, enables the MCU otherwise disables it.
+ */
+ public void setEnableMcu(boolean enable) {
+ sendMessage(MSG_ENABLE_MCU, enable ? VALUE_ON : VALUE_OFF);
+ }
+
+ /**
+ * Sends a message to the doze hardware module.
+ *
+ * @param msg The name of the message to send.
+ * @param arg An optional argument data blob, may be null.
+ * @return A result data blob, may be null.
+ */
+ public byte[] sendMessage(String msg, byte[] arg) {
+ if (msg == null) {
+ throw new IllegalArgumentException("msg must not be null");
+ }
+
+ try {
+ return mHardware.sendMessage(msg, arg);
+ } catch (RemoteException ex) {
+ Log.e(TAG, "Failed to send message to doze hardware module.", ex);
+ return null;
+ }
+ }
+}
diff --git a/core/java/android/service/dreams/DreamManagerInternal.java b/core/java/android/service/dreams/DreamManagerInternal.java
new file mode 100644
index 000000000000..9f7ddbac571b
--- /dev/null
+++ b/core/java/android/service/dreams/DreamManagerInternal.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.service.dreams;
+
+/**
+ * Dream manager local system service interface.
+ *
+ * @hide Only for use within the system server.
+ */
+public abstract class DreamManagerInternal {
+ /**
+ * Called by the power manager to start a dream.
+ */
+ public abstract void startDream(boolean doze);
+
+ /**
+ * Called by the power manager to stop a dream.
+ */
+ public abstract void stopDream();
+
+ /**
+ * Called by the power manager to determine whether a dream is running.
+ */
+ public abstract boolean isDreaming();
+}
diff --git a/core/java/android/service/dreams/DreamService.java b/core/java/android/service/dreams/DreamService.java
index f6b6c89cbd48..7647c2258270 100644
--- a/core/java/android/service/dreams/DreamService.java
+++ b/core/java/android/service/dreams/DreamService.java
@@ -20,12 +20,14 @@ import java.io.PrintWriter;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
+import android.app.AlarmManager;
import android.app.Service;
import android.content.Intent;
import android.graphics.PixelFormat;
import android.graphics.drawable.ColorDrawable;
import android.os.Handler;
import android.os.IBinder;
+import android.os.RemoteException;
import android.os.ServiceManager;
import android.util.Slog;
import android.view.ActionMode;
@@ -42,6 +44,8 @@ import android.view.WindowManager.LayoutParams;
import android.view.accessibility.AccessibilityEvent;
import com.android.internal.policy.PolicyManager;
+import com.android.internal.util.DumpUtils;
+import com.android.internal.util.DumpUtils.Dump;
/**
* Extend this class to implement a custom dream (available to the user as a "Daydream").
@@ -145,19 +149,26 @@ public class DreamService extends Service implements Window.Callback {
*/
public static final String DREAM_META_DATA = "android.service.dream";
+ private final IDreamManager mSandman;
private final Handler mHandler = new Handler();
private IBinder mWindowToken;
private Window mWindow;
private WindowManager mWindowManager;
- private IDreamManager mSandman;
private boolean mInteractive = false;
private boolean mLowProfile = true;
private boolean mFullscreen = false;
private boolean mScreenBright = true;
private boolean mFinished;
+ private boolean mCanDoze;
+ private boolean mDozing;
+ private DozeHardware mDozeHardware;
private boolean mDebug = false;
+ public DreamService() {
+ mSandman = IDreamManager.Stub.asInterface(ServiceManager.getService(DREAM_SERVICE));
+ }
+
/**
* @hide
*/
@@ -289,6 +300,10 @@ public class DreamService extends Service implements Window.Callback {
public void onDetachedFromWindow() {
}
+ @Override
+ public void onWindowDismissed() {
+ }
+
/** {@inheritDoc} */
@Override
public void onPanelClosed(int featureId, Menu menu) {
@@ -444,9 +459,11 @@ public class DreamService extends Service implements Window.Callback {
* correct interactions with it (seeing when it is cleared etc).
*/
public void setLowProfile(boolean lowProfile) {
- mLowProfile = lowProfile;
- int flag = View.SYSTEM_UI_FLAG_LOW_PROFILE;
- applySystemUiVisibilityFlags(mLowProfile ? flag : 0, flag);
+ if (mLowProfile != lowProfile) {
+ mLowProfile = lowProfile;
+ int flag = View.SYSTEM_UI_FLAG_LOW_PROFILE;
+ applySystemUiVisibilityFlags(mLowProfile ? flag : 0, flag);
+ }
}
/**
@@ -467,9 +484,11 @@ public class DreamService extends Service implements Window.Callback {
* will be cleared.
*/
public void setFullscreen(boolean fullscreen) {
- mFullscreen = fullscreen;
- int flag = WindowManager.LayoutParams.FLAG_FULLSCREEN;
- applyWindowFlags(mFullscreen ? flag : 0, flag);
+ if (mFullscreen != fullscreen) {
+ mFullscreen = fullscreen;
+ int flag = WindowManager.LayoutParams.FLAG_FULLSCREEN;
+ applyWindowFlags(mFullscreen ? flag : 0, flag);
+ }
}
/**
@@ -487,14 +506,16 @@ public class DreamService extends Service implements Window.Callback {
* @param screenBright True to keep the screen bright while dreaming.
*/
public void setScreenBright(boolean screenBright) {
- mScreenBright = screenBright;
- int flag = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
- applyWindowFlags(mScreenBright ? flag : 0, flag);
+ if (mScreenBright != screenBright) {
+ mScreenBright = screenBright;
+ int flag = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
+ applyWindowFlags(mScreenBright ? flag : 0, flag);
+ }
}
/**
- * Returns whether or not this dream keeps the screen bright while dreaming. Defaults to false,
- * allowing the screen to dim if necessary.
+ * Returns whether or not this dream keeps the screen bright while dreaming.
+ * Defaults to false, allowing the screen to dim if necessary.
*
* @see #setScreenBright(boolean)
*/
@@ -503,6 +524,119 @@ public class DreamService extends Service implements Window.Callback {
}
/**
+ * Returns true if this dream is allowed to doze.
+ * <p>
+ * The value returned by this method is only meaningful when the dream has started.
+ * </p>
+ *
+ * @return True if this dream can doze.
+ * @see #startDozing
+ * @hide experimental
+ */
+ public boolean canDoze() {
+ return mCanDoze;
+ }
+
+ /**
+ * Starts dozing, entering a deep dreamy sleep.
+ * <p>
+ * Dozing enables the system to conserve power while the user is not actively interacting
+ * with the device. While dozing, the display will remain on in a low-power state
+ * and will continue to show its previous contents but the application processor and
+ * other system components will be allowed to suspend when possible.
+ * </p><p>
+ * While the application processor is suspended, the dream may stop executing code
+ * for long periods of time. Prior to being suspended, the dream may schedule periodic
+ * wake-ups to render new content by scheduling an alarm with the {@link AlarmManager}.
+ * The dream may also keep the CPU awake by acquiring a
+ * {@link android.os.PowerManager#PARTIAL_WAKE_LOCK partial wake lock} when necessary.
+ * Note that since the purpose of doze mode is to conserve power (especially when
+ * running on battery), the dream should not wake the CPU very often or keep it
+ * awake for very long.
+ * </p><p>
+ * It is a good idea to call this method some time after the dream's entry animation
+ * has completed and the dream is ready to doze. It is important to completely
+ * finish all of the work needed before dozing since the application processor may
+ * be suspended at any moment once this method is called unless other wake locks
+ * are being held.
+ * </p><p>
+ * Call {@link #stopDozing} or {@link #finish} to stop dozing.
+ * </p>
+ *
+ * @see #stopDozing
+ * @hide experimental
+ */
+ public void startDozing() {
+ if (mCanDoze && !mDozing) {
+ mDozing = true;
+ try {
+ mSandman.startDozing(mWindowToken);
+ } catch (RemoteException ex) {
+ // system server died
+ }
+ }
+ }
+
+ /**
+ * Stops dozing, returns to active dreaming.
+ * <p>
+ * This method reverses the effect of {@link #startDozing}. From this moment onward,
+ * the application processor will be kept awake as long as the dream is running
+ * or until the dream starts dozing again.
+ * </p>
+ *
+ * @see #startDozing
+ * @hide experimental
+ */
+ public void stopDozing() {
+ if (mDozing) {
+ mDozing = false;
+ try {
+ mSandman.stopDozing(mWindowToken);
+ } catch (RemoteException ex) {
+ // system server died
+ }
+ }
+ }
+
+ /**
+ * Returns true if the dream will allow the system to enter a low-power state while
+ * it is running without actually turning off the screen. Defaults to false,
+ * keeping the application processor awake while the dream is running.
+ *
+ * @return True if the dream is dozing.
+ *
+ * @see #setDozing(boolean)
+ * @hide experimental
+ */
+ public boolean isDozing() {
+ return mDozing;
+ }
+
+ /**
+ * Gets an object that may be used to access low-level hardware features that a
+ * dream may use to provide a richer user experience while dozing.
+ *
+ * @return An instance of {@link DozeHardware} or null if this device does not offer
+ * hardware support for dozing.
+ *
+ * @hide experimental
+ */
+ public DozeHardware getDozeHardware() {
+ if (mCanDoze && mDozeHardware == null) {
+ try {
+ IDozeHardware hardware = mSandman.getDozeHardware(mWindowToken);
+ if (hardware != null) {
+ mDozeHardware = new DozeHardware(hardware);
+ }
+ } catch (RemoteException ex) {
+ // system server died
+ }
+ }
+ return mDozeHardware;
+ }
+
+ /**
* Called when this Dream is constructed.
*/
@Override
@@ -536,7 +670,11 @@ public class DreamService extends Service implements Window.Callback {
}
/**
- * Stops the dream, detaches from the window, and wakes up.
+ * Stops the dream and detaches from the window.
+ * <p>
+ * When the dream ends, the system will be allowed to go to sleep fully unless there
+ * is a reason for it to be awake such as recent user activity or wake locks being held.
+ * </p>
*/
public final void finish() {
if (mDebug) Slog.v(TAG, "finish()");
@@ -557,10 +695,6 @@ public class DreamService extends Service implements Window.Callback {
// end public api
- private void loadSandman() {
- mSandman = IDreamManager.Stub.asInterface(ServiceManager.getService(DREAM_SERVICE));
- }
-
/**
* Called by DreamController.stopDream() when the Dream is about to be unbound and destroyed.
*
@@ -572,23 +706,16 @@ public class DreamService extends Service implements Window.Callback {
return;
}
- try {
- onDreamingStopped();
- } catch (Throwable t) {
- Slog.w(TAG, "Crashed in onDreamingStopped()", t);
- // we were going to stop anyway
- }
+ if (mDebug) Slog.v(TAG, "detach(): Calling onDreamingStopped()");
+ onDreamingStopped();
if (mDebug) Slog.v(TAG, "detach(): Removing window from window manager");
- try {
- // force our window to be removed synchronously
- mWindowManager.removeViewImmediate(mWindow.getDecorView());
- // the following will print a log message if it finds any other leaked windows
- WindowManagerGlobal.getInstance().closeAll(mWindowToken,
- this.getClass().getName(), "Dream");
- } catch (Throwable t) {
- Slog.w(TAG, "Crashed removing window view", t);
- }
+
+ // force our window to be removed synchronously
+ mWindowManager.removeViewImmediate(mWindow.getDecorView());
+ // the following will print a log message if it finds any other leaked windows
+ WindowManagerGlobal.getInstance().closeAll(mWindowToken,
+ this.getClass().getName(), "Dream");
mWindow = null;
mWindowToken = null;
@@ -601,23 +728,30 @@ public class DreamService extends Service implements Window.Callback {
*
* @param windowToken A window token that will allow a window to be created in the correct layer.
*/
- private final void attach(IBinder windowToken) {
+ private final void attach(IBinder windowToken, boolean canDoze) {
if (mWindowToken != null) {
Slog.e(TAG, "attach() called when already attached with token=" + mWindowToken);
return;
}
+ if (mFinished) {
+ Slog.w(TAG, "attach() called after dream already finished");
+ try {
+ mSandman.finishSelf(windowToken);
+ } catch (RemoteException ex) {
+ // system server died
+ }
+ return;
+ }
if (mDebug) Slog.v(TAG, "Attached on thread " + Thread.currentThread().getId());
- if (mSandman == null) {
- loadSandman();
- }
mWindowToken = windowToken;
mWindow = PolicyManager.makeNewWindow(this);
mWindow.setCallback(this);
mWindow.requestFeature(Window.FEATURE_NO_TITLE);
mWindow.setBackgroundDrawable(new ColorDrawable(0xFF000000));
mWindow.setFormat(PixelFormat.OPAQUE);
+ mCanDoze = canDoze;
if (mDebug) Slog.v(TAG, String.format("Attaching window token: %s to window of type %s",
windowToken, WindowManager.LayoutParams.TYPE_DREAM));
@@ -642,40 +776,25 @@ public class DreamService extends Service implements Window.Callback {
mWindowManager = mWindow.getWindowManager();
if (mDebug) Slog.v(TAG, "Window added on thread " + Thread.currentThread().getId());
- try {
- applySystemUiVisibilityFlags(
- (mLowProfile ? View.SYSTEM_UI_FLAG_LOW_PROFILE : 0),
- View.SYSTEM_UI_FLAG_LOW_PROFILE);
- getWindowManager().addView(mWindow.getDecorView(), mWindow.getAttributes());
- } catch (Throwable t) {
- Slog.w(TAG, "Crashed adding window view", t);
- safelyFinish();
- return;
- }
+ applySystemUiVisibilityFlags(
+ (mLowProfile ? View.SYSTEM_UI_FLAG_LOW_PROFILE : 0),
+ View.SYSTEM_UI_FLAG_LOW_PROFILE);
+ getWindowManager().addView(mWindow.getDecorView(), mWindow.getAttributes());
// start it up
mHandler.post(new Runnable() {
@Override
public void run() {
- try {
- onDreamingStarted();
- } catch (Throwable t) {
- Slog.w(TAG, "Crashed in onDreamingStarted()", t);
- safelyFinish();
- }
+ if (mDebug) Slog.v(TAG, "Calling onDreamingStarted()");
+ onDreamingStarted();
}
});
}
private void safelyFinish() {
if (mDebug) Slog.v(TAG, "safelyFinish()");
- try {
- finish();
- } catch (Throwable t) {
- Slog.w(TAG, "Crashed in safelyFinish()", t);
- finishInternal();
- return;
- }
+
+ finish();
if (!mFinished) {
Slog.w(TAG, "Bad dream, did not call super.finish()");
@@ -685,19 +804,21 @@ public class DreamService extends Service implements Window.Callback {
private void finishInternal() {
if (mDebug) Slog.v(TAG, "finishInternal() mFinished = " + mFinished);
- if (mFinished) return;
- try {
+
+ if (!mFinished) {
mFinished = true;
- if (mSandman != null) {
- mSandman.finishSelf(mWindowToken);
+ if (mWindowToken == null) {
+ Slog.w(TAG, "Finish was called before the dream was attached.");
} else {
- Slog.w(TAG, "No dream manager found");
+ try {
+ mSandman.finishSelf(mWindowToken);
+ } catch (RemoteException ex) {
+ // system server died
+ }
}
- stopSelf(); // if launched via any other means
- } catch (Throwable t) {
- Slog.w(TAG, "Crashed in finishInternal()", t);
+ stopSelf(); // if launched via any other means
}
}
@@ -732,32 +853,39 @@ public class DreamService extends Service implements Window.Callback {
@Override
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- super.dump(fd, pw, args);
-
- pw.print(TAG + ": ");
- if (mWindowToken == null) {
- pw.println("stopped");
- } else {
- pw.println("running (token=" + mWindowToken + ")");
- }
- pw.println(" window: " + mWindow);
- pw.print(" flags:");
- if (isInteractive()) pw.print(" interactive");
- if (isLowProfile()) pw.print(" lowprofile");
- if (isFullscreen()) pw.print(" fullscreen");
- if (isScreenBright()) pw.print(" bright");
- pw.println();
+ DumpUtils.dumpAsync(mHandler, new Dump() {
+ @Override
+ public void dump(PrintWriter pw) {
+ pw.print(TAG + ": ");
+ if (mWindowToken == null) {
+ pw.println("stopped");
+ } else {
+ pw.println("running (token=" + mWindowToken + ")");
+ }
+ pw.println(" window: " + mWindow);
+ pw.print(" flags:");
+ if (isInteractive()) pw.print(" interactive");
+ if (isLowProfile()) pw.print(" lowprofile");
+ if (isFullscreen()) pw.print(" fullscreen");
+ if (isScreenBright()) pw.print(" bright");
+ if (isDozing()) pw.print(" dozing");
+ pw.println();
+ }
+ }, pw, 1000);
}
- private class DreamServiceWrapper extends IDreamService.Stub {
- public void attach(final IBinder windowToken) {
+ private final class DreamServiceWrapper extends IDreamService.Stub {
+ @Override
+ public void attach(final IBinder windowToken, final boolean canDoze) {
mHandler.post(new Runnable() {
@Override
public void run() {
- DreamService.this.attach(windowToken);
+ DreamService.this.attach(windowToken, canDoze);
}
});
}
+
+ @Override
public void detach() {
mHandler.post(new Runnable() {
@Override
diff --git a/services/java/com/android/server/display/DisplayTransactionListener.java b/core/java/android/service/dreams/IDozeHardware.aidl
index 34eb8f930e9d..f5a657b098c4 100644
--- a/services/java/com/android/server/display/DisplayTransactionListener.java
+++ b/core/java/android/service/dreams/IDozeHardware.aidl
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,13 +14,11 @@
* limitations under the License.
*/
-package com.android.server.display;
+package android.service.dreams;
/**
- * Called within a Surface transaction whenever the size or orientation of a
- * display may have changed. Provides an opportunity for the client to
- * update the position of its surfaces as part of the same transaction.
+ * @hide
*/
-public interface DisplayTransactionListener {
- void onDisplayTransaction();
+interface IDozeHardware {
+ byte[] sendMessage(String msg, in byte[] arg);
}
diff --git a/core/java/android/service/dreams/IDreamManager.aidl b/core/java/android/service/dreams/IDreamManager.aidl
index 1c1b39094776..2718e3166f18 100644
--- a/core/java/android/service/dreams/IDreamManager.aidl
+++ b/core/java/android/service/dreams/IDreamManager.aidl
@@ -16,10 +16,11 @@
package android.service.dreams;
+import android.content.ComponentName;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
-import android.content.ComponentName;
import android.os.IBinder;
+import android.service.dreams.IDozeHardware;
/** @hide */
interface IDreamManager {
@@ -31,4 +32,7 @@ interface IDreamManager {
void testDream(in ComponentName componentName);
boolean isDreaming();
void finishSelf(in IBinder token);
+ void startDozing(in IBinder token);
+ void stopDozing(in IBinder token);
+ IDozeHardware getDozeHardware(in IBinder token);
} \ No newline at end of file
diff --git a/core/java/android/service/dreams/IDreamService.aidl b/core/java/android/service/dreams/IDreamService.aidl
index 99dc0b77d208..bd58f1d905da 100644
--- a/core/java/android/service/dreams/IDreamService.aidl
+++ b/core/java/android/service/dreams/IDreamService.aidl
@@ -20,6 +20,6 @@ package android.service.dreams;
* @hide
*/
oneway interface IDreamService {
- void attach(IBinder windowToken);
+ void attach(IBinder windowToken, boolean canDoze);
void detach();
}
diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java
index 2e0e59bc91c9..cf862b872aa3 100644
--- a/core/java/android/service/notification/NotificationListenerService.java
+++ b/core/java/android/service/notification/NotificationListenerService.java
@@ -112,6 +112,7 @@ public abstract class NotificationListenerService extends Service {
* {@link android.app.NotificationManager#notify(String, int, android.app.Notification)}.
*/
public final void cancelNotification(String pkg, String tag, int id) {
+ if (!isBound()) return;
try {
getNotificationInterface().cancelNotificationFromListener(mWrapper, pkg, tag, id);
} catch (android.os.RemoteException ex) {
@@ -131,6 +132,7 @@ public abstract class NotificationListenerService extends Service {
* {@see #cancelNotification(String, String, int)}
*/
public final void cancelAllNotifications() {
+ if (!isBound()) return;
try {
getNotificationInterface().cancelAllNotificationsFromListener(mWrapper);
} catch (android.os.RemoteException ex) {
@@ -145,6 +147,7 @@ public abstract class NotificationListenerService extends Service {
* @return An array of active notifications.
*/
public StatusBarNotification[] getActiveNotifications() {
+ if (!isBound()) return null;
try {
return getNotificationInterface().getActiveNotificationsFromListener(mWrapper);
} catch (android.os.RemoteException ex) {
@@ -161,6 +164,14 @@ public abstract class NotificationListenerService extends Service {
return mWrapper;
}
+ private boolean isBound() {
+ if (mWrapper == null) {
+ Log.w(TAG, "Notification listener service not yet bound.");
+ return false;
+ }
+ return true;
+ }
+
private class INotificationListenerWrapper extends INotificationListener.Stub {
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
diff --git a/core/java/android/speech/SpeechRecognizer.java b/core/java/android/speech/SpeechRecognizer.java
index 94aedbdf1d6a..91c37992eed6 100644
--- a/core/java/android/speech/SpeechRecognizer.java
+++ b/core/java/android/speech/SpeechRecognizer.java
@@ -409,7 +409,7 @@ public class SpeechRecognizer {
* Internal wrapper of IRecognitionListener which will propagate the results to
* RecognitionListener
*/
- private class InternalListener extends IRecognitionListener.Stub {
+ private static class InternalListener extends IRecognitionListener.Stub {
private RecognitionListener mInternalListener;
private final static int MSG_BEGINNING_OF_SPEECH = 1;
diff --git a/core/java/android/speech/srec/MicrophoneInputStream.java b/core/java/android/speech/srec/MicrophoneInputStream.java
index fab77a9b8a0a..94db1767a86a 100644
--- a/core/java/android/speech/srec/MicrophoneInputStream.java
+++ b/core/java/android/speech/srec/MicrophoneInputStream.java
@@ -34,7 +34,7 @@ public final class MicrophoneInputStream extends InputStream {
}
private final static String TAG = "MicrophoneInputStream";
- private int mAudioRecord = 0;
+ private long mAudioRecord = 0;
private byte[] mOneByte = new byte[1];
/**
@@ -102,9 +102,9 @@ public final class MicrophoneInputStream extends InputStream {
//
// AudioRecord JNI interface
//
- private static native int AudioRecordNew(int sampleRate, int fifoDepth);
- private static native int AudioRecordStart(int audioRecord);
- private static native int AudioRecordRead(int audioRecord, byte[] b, int offset, int length) throws IOException;
- private static native void AudioRecordStop(int audioRecord) throws IOException;
- private static native void AudioRecordDelete(int audioRecord) throws IOException;
+ private static native long AudioRecordNew(int sampleRate, int fifoDepth);
+ private static native int AudioRecordStart(long audioRecord);
+ private static native int AudioRecordRead(long audioRecord, byte[] b, int offset, int length) throws IOException;
+ private static native void AudioRecordStop(long audioRecord) throws IOException;
+ private static native void AudioRecordDelete(long audioRecord) throws IOException;
}
diff --git a/core/java/android/speech/srec/Recognizer.java b/core/java/android/speech/srec/Recognizer.java
index db5d8fdaf8cc..1396204de062 100644
--- a/core/java/android/speech/srec/Recognizer.java
+++ b/core/java/android/speech/srec/Recognizer.java
@@ -125,10 +125,10 @@ public final class Recognizer {
public static final String KEY_MEANING = "meaning";
// handle to SR_Vocabulary object
- private int mVocabulary = 0;
+ private long mVocabulary = 0;
// handle to SR_Recognizer object
- private int mRecognizer = 0;
+ private long mRecognizer = 0;
// Grammar currently associated with Recognizer via SR_GrammarSetupRecognizer
private Grammar mActiveGrammar = null;
@@ -174,7 +174,7 @@ public final class Recognizer {
* Represents a grammar loaded into the Recognizer.
*/
public class Grammar {
- private int mGrammar = 0;
+ private long mGrammar = 0;
/**
* Create a <code>Grammar</code> instance.
@@ -603,116 +603,116 @@ public final class Recognizer {
//
// SR_Recognizer methods
//
- private static native void SR_RecognizerStart(int recognizer);
- private static native void SR_RecognizerStop(int recognizer);
- private static native int SR_RecognizerCreate();
- private static native void SR_RecognizerDestroy(int recognizer);
- private static native void SR_RecognizerSetup(int recognizer);
- private static native void SR_RecognizerUnsetup(int recognizer);
- private static native boolean SR_RecognizerIsSetup(int recognizer);
- private static native String SR_RecognizerGetParameter(int recognizer, String key);
- private static native int SR_RecognizerGetSize_tParameter(int recognizer, String key);
- private static native boolean SR_RecognizerGetBoolParameter(int recognizer, String key);
- private static native void SR_RecognizerSetParameter(int recognizer, String key, String value);
- private static native void SR_RecognizerSetSize_tParameter(int recognizer,
+ private static native void SR_RecognizerStart(long recognizer);
+ private static native void SR_RecognizerStop(long recognizer);
+ private static native long SR_RecognizerCreate();
+ private static native void SR_RecognizerDestroy(long recognizer);
+ private static native void SR_RecognizerSetup(long recognizer);
+ private static native void SR_RecognizerUnsetup(long recognizer);
+ private static native boolean SR_RecognizerIsSetup(long recognizer);
+ private static native String SR_RecognizerGetParameter(long recognizer, String key);
+ private static native int SR_RecognizerGetSize_tParameter(long recognizer, String key);
+ private static native boolean SR_RecognizerGetBoolParameter(long recognizer, String key);
+ private static native void SR_RecognizerSetParameter(long recognizer, String key, String value);
+ private static native void SR_RecognizerSetSize_tParameter(long recognizer,
String key, int value);
- private static native void SR_RecognizerSetBoolParameter(int recognizer, String key,
+ private static native void SR_RecognizerSetBoolParameter(long recognizer, String key,
boolean value);
- private static native void SR_RecognizerSetupRule(int recognizer, int grammar,
+ private static native void SR_RecognizerSetupRule(long recognizer, long grammar,
String ruleName);
- private static native boolean SR_RecognizerHasSetupRules(int recognizer);
- private static native void SR_RecognizerActivateRule(int recognizer, int grammar,
+ private static native boolean SR_RecognizerHasSetupRules(long recognizer);
+ private static native void SR_RecognizerActivateRule(long recognizer, long grammar,
String ruleName, int weight);
- private static native void SR_RecognizerDeactivateRule(int recognizer, int grammar,
+ private static native void SR_RecognizerDeactivateRule(long recognizer, long grammar,
String ruleName);
- private static native void SR_RecognizerDeactivateAllRules(int recognizer);
- private static native boolean SR_RecognizerIsActiveRule(int recognizer, int grammar,
+ private static native void SR_RecognizerDeactivateAllRules(long recognizer);
+ private static native boolean SR_RecognizerIsActiveRule(long recognizer, long grammar,
String ruleName);
- private static native boolean SR_RecognizerCheckGrammarConsistency(int recognizer,
- int grammar);
- private static native int SR_RecognizerPutAudio(int recognizer, byte[] buffer, int offset,
+ private static native boolean SR_RecognizerCheckGrammarConsistency(long recognizer,
+ long grammar);
+ private static native int SR_RecognizerPutAudio(long recognizer, byte[] buffer, int offset,
int length, boolean isLast);
- private static native int SR_RecognizerAdvance(int recognizer);
- // private static native void SR_RecognizerLoadUtterance(int recognizer,
+ private static native int SR_RecognizerAdvance(long recognizer);
+ // private static native void SR_RecognizerLoadUtterance(long recognizer,
// const LCHAR* filename);
- // private static native void SR_RecognizerLoadWaveFile(int recognizer,
+ // private static native void SR_RecognizerLoadWaveFile(long recognizer,
// const LCHAR* filename);
- // private static native void SR_RecognizerSetLockFunction(int recognizer,
+ // private static native void SR_RecognizerSetLockFunction(long recognizer,
// SR_RecognizerLockFunction function, void* data);
- private static native boolean SR_RecognizerIsSignalClipping(int recognizer);
- private static native boolean SR_RecognizerIsSignalDCOffset(int recognizer);
- private static native boolean SR_RecognizerIsSignalNoisy(int recognizer);
- private static native boolean SR_RecognizerIsSignalTooQuiet(int recognizer);
- private static native boolean SR_RecognizerIsSignalTooFewSamples(int recognizer);
- private static native boolean SR_RecognizerIsSignalTooManySamples(int recognizer);
+ private static native boolean SR_RecognizerIsSignalClipping(long recognizer);
+ private static native boolean SR_RecognizerIsSignalDCOffset(long recognizer);
+ private static native boolean SR_RecognizerIsSignalNoisy(long recognizer);
+ private static native boolean SR_RecognizerIsSignalTooQuiet(long recognizer);
+ private static native boolean SR_RecognizerIsSignalTooFewSamples(long recognizer);
+ private static native boolean SR_RecognizerIsSignalTooManySamples(long recognizer);
// private static native void SR_Recognizer_Change_Sample_Rate (size_t new_sample_rate);
//
// SR_AcousticState native methods
//
- private static native void SR_AcousticStateReset(int recognizer);
- private static native void SR_AcousticStateSet(int recognizer, String state);
- private static native String SR_AcousticStateGet(int recognizer);
+ private static native void SR_AcousticStateReset(long recognizer);
+ private static native void SR_AcousticStateSet(long recognizer, String state);
+ private static native String SR_AcousticStateGet(long recognizer);
//
// SR_Grammar native methods
//
- private static native void SR_GrammarCompile(int grammar);
- private static native void SR_GrammarAddWordToSlot(int grammar, String slot,
+ private static native void SR_GrammarCompile(long grammar);
+ private static native void SR_GrammarAddWordToSlot(long grammar, String slot,
String word, String pronunciation, int weight, String tag);
- private static native void SR_GrammarResetAllSlots(int grammar);
- // private static native void SR_GrammarAddNametagToSlot(int grammar, String slot,
+ private static native void SR_GrammarResetAllSlots(long grammar);
+ // private static native void SR_GrammarAddNametagToSlot(long grammar, String slot,
// const struct SR_Nametag_t* nametag, int weight, String tag);
- private static native void SR_GrammarSetupVocabulary(int grammar, int vocabulary);
- // private static native void SR_GrammarSetupModels(int grammar, SR_AcousticModels* models);
- private static native void SR_GrammarSetupRecognizer(int grammar, int recognizer);
- private static native void SR_GrammarUnsetupRecognizer(int grammar);
- // private static native void SR_GrammarGetModels(int grammar,SR_AcousticModels** models);
- private static native int SR_GrammarCreate();
- private static native void SR_GrammarDestroy(int grammar);
- private static native int SR_GrammarLoad(String filename);
- private static native void SR_GrammarSave(int grammar, String filename);
- // private static native void SR_GrammarSetDispatchFunction(int grammar,
+ private static native void SR_GrammarSetupVocabulary(long grammar, long vocabulary);
+ // private static native void SR_GrammarSetupModels(long grammar, SR_AcousticModels* models);
+ private static native void SR_GrammarSetupRecognizer(long grammar, long recognizer);
+ private static native void SR_GrammarUnsetupRecognizer(long grammar);
+ // private static native void SR_GrammarGetModels(long grammar,SR_AcousticModels** models);
+ private static native long SR_GrammarCreate();
+ private static native void SR_GrammarDestroy(long grammar);
+ private static native long SR_GrammarLoad(String filename);
+ private static native void SR_GrammarSave(long grammar, String filename);
+ // private static native void SR_GrammarSetDispatchFunction(long grammar,
// const LCHAR* name, void* userData, SR_GrammarDispatchFunction function);
- // private static native void SR_GrammarSetParameter(int grammar, const
+ // private static native void SR_GrammarSetParameter(long grammar, const
// LCHAR* key, void* value);
- // private static native void SR_GrammarSetSize_tParameter(int grammar,
+ // private static native void SR_GrammarSetSize_tParameter(long grammar,
// const LCHAR* key, size_t value);
- // private static native void SR_GrammarGetParameter(int grammar, const
+ // private static native void SR_GrammarGetParameter(long grammar, const
// LCHAR* key, void** value);
- // private static native void SR_GrammarGetSize_tParameter(int grammar,
+ // private static native void SR_GrammarGetSize_tParameter(long grammar,
// const LCHAR* key, size_t* value);
- // private static native void SR_GrammarCheckParse(int grammar, const LCHAR*
+ // private static native void SR_GrammarCheckParse(long grammar, const LCHAR*
// transcription, SR_SemanticResult** result, size_t* resultCount);
- private static native void SR_GrammarAllowOnly(int grammar, String transcription);
- private static native void SR_GrammarAllowAll(int grammar);
+ private static native void SR_GrammarAllowOnly(long grammar, String transcription);
+ private static native void SR_GrammarAllowAll(long grammar);
//
// SR_Vocabulary native methods
//
// private static native int SR_VocabularyCreate();
- private static native int SR_VocabularyLoad();
+ private static native long SR_VocabularyLoad();
// private static native void SR_VocabularySave(SR_Vocabulary* self,
// const LCHAR* filename);
// private static native void SR_VocabularyAddWord(SR_Vocabulary* self,
// const LCHAR* word);
// private static native void SR_VocabularyGetLanguage(SR_Vocabulary* self,
// ESR_Locale* locale);
- private static native void SR_VocabularyDestroy(int vocabulary);
- private static native String SR_VocabularyGetPronunciation(int vocabulary, String word);
+ private static native void SR_VocabularyDestroy(long vocabulary);
+ private static native String SR_VocabularyGetPronunciation(long vocabulary, String word);
//
// SR_RecognizerResult native methods
//
- private static native byte[] SR_RecognizerResultGetWaveform(int recognizer);
- private static native int SR_RecognizerResultGetSize(int recognizer);
- private static native int SR_RecognizerResultGetKeyCount(int recognizer, int nbest);
- private static native String[] SR_RecognizerResultGetKeyList(int recognizer, int nbest);
- private static native String SR_RecognizerResultGetValue(int recognizer,
+ private static native byte[] SR_RecognizerResultGetWaveform(long recognizer);
+ private static native int SR_RecognizerResultGetSize(long recognizer);
+ private static native int SR_RecognizerResultGetKeyCount(long recognizer, int nbest);
+ private static native String[] SR_RecognizerResultGetKeyList(long recognizer, int nbest);
+ private static native String SR_RecognizerResultGetValue(long recognizer,
int nbest, String key);
- // private static native void SR_RecognizerResultGetLocale(int recognizer, ESR_Locale* locale);
+ // private static native void SR_RecognizerResultGetLocale(long recognizer, ESR_Locale* locale);
}
diff --git a/core/java/android/text/MeasuredText.java b/core/java/android/text/MeasuredText.java
index bd9310c1b1b2..101d6a2362f8 100644
--- a/core/java/android/text/MeasuredText.java
+++ b/core/java/android/text/MeasuredText.java
@@ -46,7 +46,7 @@ class MeasuredText {
}
private static final Object[] sLock = new Object[0];
- private static MeasuredText[] sCached = new MeasuredText[3];
+ private static final MeasuredText[] sCached = new MeasuredText[3];
static MeasuredText obtain() {
MeasuredText mt;
diff --git a/core/java/android/util/CharsetUtils.java b/core/java/android/util/CharsetUtils.java
deleted file mode 100644
index a763a6925cb2..000000000000
--- a/core/java/android/util/CharsetUtils.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright (C) 2009 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.util;
-
-import android.os.Build;
-import android.text.TextUtils;
-
-import java.nio.charset.Charset;
-import java.nio.charset.IllegalCharsetNameException;
-import java.nio.charset.UnsupportedCharsetException;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * <p>
- * A class containing utility methods related to character sets. This
- * class is primarily useful for code that wishes to be vendor-aware
- * in its interpretation of Japanese charset names (used in DoCoMo,
- * KDDI, and SoftBank).
- * </p>
- *
- * <p>
- * <b>Note:</b> Developers will need to add an appropriate mapping for
- * each vendor-specific charset. You may need to modify the C libraries
- * like icu4c in order to let Android support an additional charset.
- * </p>
- *
- * @hide
- */
-public final class CharsetUtils {
- /**
- * name of the vendor "DoCoMo". <b>Note:</b> This isn't a public
- * constant, in order to keep this class from becoming a de facto
- * reference list of vendor names.
- */
- private static final String VENDOR_DOCOMO = "docomo";
- /**
- * Name of the vendor "KDDI".
- */
- private static final String VENDOR_KDDI = "kddi";
- /**
- * Name of the vendor "SoftBank".
- */
- private static final String VENDOR_SOFTBANK = "softbank";
-
- /**
- * Represents one-to-one mapping from a vendor name to a charset specific to the vendor.
- */
- private static final Map<String, String> sVendorShiftJisMap = new HashMap<String, String>();
-
- static {
- // These variants of Shift_JIS come from icu's mapping data (convrtrs.txt)
- sVendorShiftJisMap.put(VENDOR_DOCOMO, "docomo-shift_jis-2007");
- sVendorShiftJisMap.put(VENDOR_KDDI, "kddi-shift_jis-2007");
- sVendorShiftJisMap.put(VENDOR_SOFTBANK, "softbank-shift_jis-2007");
- }
-
- /**
- * This class is uninstantiable.
- */
- private CharsetUtils() {
- // This space intentionally left blank.
- }
-
- /**
- * Returns the name of the vendor-specific character set
- * corresponding to the given original character set name and
- * vendor. If there is no vendor-specific character set for the
- * given name/vendor pair, this returns the original character set name.
- *
- * @param charsetName the base character set name
- * @param vendor the vendor to specialize for. All characters should be lower-cased.
- * @return the specialized character set name, or {@code charsetName} if
- * there is no specialized name
- */
- public static String nameForVendor(String charsetName, String vendor) {
- if (!TextUtils.isEmpty(charsetName) && !TextUtils.isEmpty(vendor)) {
- // You can add your own mapping here.
- if (isShiftJis(charsetName)) {
- final String vendorShiftJis = sVendorShiftJisMap.get(vendor);
- if (vendorShiftJis != null) {
- return vendorShiftJis;
- }
- }
- }
-
- return charsetName;
- }
-
- /**
- * Returns the name of the vendor-specific character set
- * corresponding to the given original character set name and the
- * default vendor (that is, the targeted vendor of the device this
- * code is running on). This method merely calls through to
- * {@link #nameForVendor(String,String)}, passing the default vendor
- * as the second argument.
- *
- * @param charsetName the base character set name
- * @return the specialized character set name, or {@code charsetName} if
- * there is no specialized name
- */
- public static String nameForDefaultVendor(String charsetName) {
- return nameForVendor(charsetName, getDefaultVendor());
- }
-
- /**
- * Returns the vendor-specific character set corresponding to the
- * given original character set name and vendor. If there is no
- * vendor-specific character set for the given name/vendor pair,
- * this returns the character set corresponding to the original
- * name. The vendor name is matched case-insensitively. This
- * method merely calls {@code Charset.forName()} on a name
- * transformed by a call to {@link #nameForVendor(String,String)}.
- *
- * @param charsetName the base character set name
- * @param vendor the vendor to specialize for
- * @return the specialized character set, or the one corresponding
- * directly to {@code charsetName} if there is no specialized
- * variant
- * @throws UnsupportedCharsetException thrown if the named character
- * set is not supported by the system
- * @throws IllegalCharsetNameException thrown if {@code charsetName}
- * has invalid syntax
- */
- public static Charset charsetForVendor(String charsetName, String vendor)
- throws UnsupportedCharsetException, IllegalCharsetNameException {
- charsetName = nameForVendor(charsetName, vendor);
- return Charset.forName(charsetName);
- }
-
- /**
- * Returns the vendor-specific character set corresponding to the
- * given original character set name and default vendor (that is,
- * the targeted vendor of the device this code is running on).
- * This method merely calls through to {@link
- * #charsetForVendor(String,String)}, passing the default vendor
- * as the second argument.
- *
- * @param charsetName the base character set name
- * @return the specialized character set, or the one corresponding
- * directly to {@code charsetName} if there is no specialized
- * variant
- * @throws UnsupportedCharsetException thrown if the named character
- * set is not supported by the system
- * @throws IllegalCharsetNameException thrown if {@code charsetName}
- * has invalid syntax
- */
- public static Charset charsetForVendor(String charsetName)
- throws UnsupportedCharsetException, IllegalCharsetNameException {
- return charsetForVendor(charsetName, getDefaultVendor());
- }
-
- /**
- * Returns whether the given character set name indicates the Shift-JIS
- * encoding. Returns false if the name is null.
- *
- * @param charsetName the character set name
- * @return {@code true} if the name corresponds to Shift-JIS or
- * {@code false} if not
- */
- private static boolean isShiftJis(String charsetName) {
- // Bail quickly if the length doesn't match.
- if (charsetName == null) {
- return false;
- }
- int length = charsetName.length();
- if (length != 4 && length != 9) {
- return false;
- }
-
- return charsetName.equalsIgnoreCase("shift_jis")
- || charsetName.equalsIgnoreCase("shift-jis")
- || charsetName.equalsIgnoreCase("sjis");
- }
-
- /**
- * Gets the default vendor for this build.
- *
- * @return the default vendor name
- */
- private static String getDefaultVendor() {
- return Build.BRAND;
- }
-}
diff --git a/core/java/android/util/TypedValue.java b/core/java/android/util/TypedValue.java
index ed4529851d8f..931fb8114716 100644
--- a/core/java/android/util/TypedValue.java
+++ b/core/java/android/util/TypedValue.java
@@ -290,18 +290,14 @@ public class TypedValue {
return -1;
}
+ /**
+ * @hide Was accidentally exposed in API level 1 for debugging purposes.
+ * Kept for compatibility just in case although the debugging code has been removed.
+ */
+ @Deprecated
public static float complexToDimensionNoisy(int data, DisplayMetrics metrics)
{
- float res = complexToDimension(data, metrics);
- System.out.println(
- "Dimension (0x" + ((data>>TypedValue.COMPLEX_MANTISSA_SHIFT)
- & TypedValue.COMPLEX_MANTISSA_MASK)
- + "*" + (RADIX_MULTS[(data>>TypedValue.COMPLEX_RADIX_SHIFT)
- & TypedValue.COMPLEX_RADIX_MASK] / MANTISSA_MULT)
- + ")" + DIMENSION_UNIT_STRS[(data>>COMPLEX_UNIT_SHIFT)
- & COMPLEX_UNIT_MASK]
- + " = " + res);
- return res;
+ return complexToDimension(data, metrics);
}
/**
diff --git a/core/java/android/view/DisplayAdjustments.java b/core/java/android/view/DisplayAdjustments.java
index 041d9e0479e1..35fb50464024 100644
--- a/core/java/android/view/DisplayAdjustments.java
+++ b/core/java/android/view/DisplayAdjustments.java
@@ -19,7 +19,7 @@ package android.view;
import android.content.res.CompatibilityInfo;
import android.os.IBinder;
-import com.android.internal.util.Objects;
+import java.util.Objects;
/** @hide */
public class DisplayAdjustments {
@@ -91,7 +91,7 @@ public class DisplayAdjustments {
return false;
}
DisplayAdjustments daj = (DisplayAdjustments)o;
- return Objects.equal(daj.mCompatInfo, mCompatInfo) &&
- Objects.equal(daj.mActivityToken, mActivityToken);
+ return Objects.equals(daj.mCompatInfo, mCompatInfo) &&
+ Objects.equals(daj.mActivityToken, mActivityToken);
}
}
diff --git a/core/java/android/view/DisplayEventReceiver.java b/core/java/android/view/DisplayEventReceiver.java
index 4dade20c5d16..de46a4a8f642 100644
--- a/core/java/android/view/DisplayEventReceiver.java
+++ b/core/java/android/view/DisplayEventReceiver.java
@@ -36,16 +36,16 @@ public abstract class DisplayEventReceiver {
private final CloseGuard mCloseGuard = CloseGuard.get();
- private int mReceiverPtr;
+ private long mReceiverPtr;
// We keep a reference message queue object here so that it is not
// GC'd while the native peer of the receiver is using them.
private MessageQueue mMessageQueue;
- private static native int nativeInit(DisplayEventReceiver receiver,
+ private static native long nativeInit(DisplayEventReceiver receiver,
MessageQueue messageQueue);
- private static native void nativeDispose(int receiverPtr);
- private static native void nativeScheduleVsync(int receiverPtr);
+ private static native void nativeDispose(long receiverPtr);
+ private static native void nativeScheduleVsync(long receiverPtr);
/**
* Creates a display event receiver.
diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java
index beefc21faf84..6a15fa69e05a 100644
--- a/core/java/android/view/GLES20Canvas.java
+++ b/core/java/android/view/GLES20Canvas.java
@@ -49,7 +49,7 @@ class GLES20Canvas extends HardwareCanvas {
private static final int MODIFIER_COLOR_FILTER = 4;
private final boolean mOpaque;
- private int mRenderer;
+ private long mRenderer;
// The native renderer will be destroyed when this object dies.
// DO NOT overwrite this reference once it is set.
@@ -92,7 +92,7 @@ class GLES20Canvas extends HardwareCanvas {
/**
* Creates a canvas to render into an FBO.
*/
- GLES20Canvas(int layer, boolean translucent) {
+ GLES20Canvas(long layer, boolean translucent) {
mOpaque = !translucent;
mRenderer = nCreateLayerRenderer(layer);
setupFinalizer();
@@ -122,16 +122,16 @@ class GLES20Canvas extends HardwareCanvas {
nResetDisplayListRenderer(mRenderer);
}
- private static native int nCreateRenderer();
- private static native int nCreateLayerRenderer(int layer);
- private static native int nCreateDisplayListRenderer();
- private static native void nResetDisplayListRenderer(int renderer);
- private static native void nDestroyRenderer(int renderer);
+ private static native long nCreateRenderer();
+ private static native long nCreateLayerRenderer(long layer);
+ private static native long nCreateDisplayListRenderer();
+ private static native void nResetDisplayListRenderer(long renderer);
+ private static native void nDestroyRenderer(long renderer);
private static final class CanvasFinalizer {
- private final int mRenderer;
+ private final long mRenderer;
- public CanvasFinalizer(int renderer) {
+ public CanvasFinalizer(long renderer) {
mRenderer = renderer;
}
@@ -151,7 +151,7 @@ class GLES20Canvas extends HardwareCanvas {
nSetName(mRenderer, name);
}
- private static native void nSetName(int renderer, String name);
+ private static native void nSetName(long renderer, String name);
///////////////////////////////////////////////////////////////////////////
// Hardware layers
@@ -177,26 +177,26 @@ class GLES20Canvas extends HardwareCanvas {
nClearLayerUpdates(mRenderer);
}
- static native int nCreateTextureLayer(boolean opaque, int[] layerInfo);
- static native int nCreateLayer(int width, int height, boolean isOpaque, int[] layerInfo);
- static native boolean nResizeLayer(int layerId, int width, int height, int[] layerInfo);
- static native void nSetOpaqueLayer(int layerId, boolean isOpaque);
- static native void nSetLayerPaint(int layerId, int nativePaint);
- static native void nSetLayerColorFilter(int layerId, int nativeColorFilter);
- static native void nUpdateTextureLayer(int layerId, int width, int height, boolean opaque,
+ static native long nCreateTextureLayer(boolean opaque, int[] layerInfo);
+ static native long nCreateLayer(int width, int height, boolean isOpaque, int[] layerInfo);
+ static native boolean nResizeLayer(long layerId, int width, int height, int[] layerInfo);
+ static native void nSetOpaqueLayer(long layerId, boolean isOpaque);
+ static native void nSetLayerPaint(long layerId, long nativePaint);
+ static native void nSetLayerColorFilter(long layerId, long nativeColorFilter);
+ static native void nUpdateTextureLayer(long layerId, int width, int height, boolean opaque,
SurfaceTexture surface);
- static native void nClearLayerTexture(int layerId);
- static native void nSetTextureLayerTransform(int layerId, int matrix);
- static native void nDestroyLayer(int layerId);
- static native void nDestroyLayerDeferred(int layerId);
- static native void nUpdateRenderLayer(int layerId, int renderer, int displayList,
+ static native void nClearLayerTexture(long layerId);
+ static native void nSetTextureLayerTransform(long layerId, long matrix);
+ static native void nDestroyLayer(long layerId);
+ static native void nDestroyLayerDeferred(long layerId);
+ static native void nUpdateRenderLayer(long layerId, long renderer, long displayList,
int left, int top, int right, int bottom);
- static native boolean nCopyLayer(int layerId, int bitmap);
+ static native boolean nCopyLayer(long layerId, long bitmap);
- private static native void nClearLayerUpdates(int renderer);
- private static native void nFlushLayerUpdates(int renderer);
- private static native void nPushLayerUpdate(int renderer, int layer);
- private static native void nCancelLayerUpdate(int renderer, int layer);
+ private static native void nClearLayerUpdates(long renderer);
+ private static native void nFlushLayerUpdates(long renderer);
+ private static native void nPushLayerUpdate(long renderer, long layer);
+ private static native void nCancelLayerUpdate(long renderer, long layer);
///////////////////////////////////////////////////////////////////////////
// Canvas management
@@ -233,7 +233,7 @@ class GLES20Canvas extends HardwareCanvas {
/**
* Returns the native OpenGLRenderer object.
*/
- int getRenderer() {
+ long getRenderer() {
return mRenderer;
}
@@ -249,7 +249,7 @@ class GLES20Canvas extends HardwareCanvas {
nSetViewport(mRenderer, width, height);
}
- private static native void nSetViewport(int renderer, int width, int height);
+ private static native void nSetViewport(long renderer, int width, int height);
@Override
public int onPreDraw(Rect dirty) {
@@ -261,8 +261,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native int nPrepare(int renderer, boolean opaque);
- private static native int nPrepareDirty(int renderer, int left, int top, int right, int bottom,
+ private static native int nPrepare(long renderer, boolean opaque);
+ private static native int nPrepareDirty(long renderer, int left, int top, int right, int bottom,
boolean opaque);
@Override
@@ -270,7 +270,7 @@ class GLES20Canvas extends HardwareCanvas {
nFinish(mRenderer);
}
- private static native void nFinish(int renderer);
+ private static native void nFinish(long renderer);
/**
* Returns the size of the stencil buffer required by the underlying
@@ -290,45 +290,45 @@ class GLES20Canvas extends HardwareCanvas {
nSetCountOverdrawEnabled(mRenderer, enabled);
}
- static native void nSetCountOverdrawEnabled(int renderer, boolean enabled);
+ static native void nSetCountOverdrawEnabled(long renderer, boolean enabled);
float getOverdraw() {
return nGetOverdraw(mRenderer);
}
- static native float nGetOverdraw(int renderer);
+ static native float nGetOverdraw(long renderer);
///////////////////////////////////////////////////////////////////////////
// Functor
///////////////////////////////////////////////////////////////////////////
@Override
- public int callDrawGLFunction(int drawGLFunction) {
+ public int callDrawGLFunction(long drawGLFunction) {
return nCallDrawGLFunction(mRenderer, drawGLFunction);
}
- private static native int nCallDrawGLFunction(int renderer, int drawGLFunction);
+ private static native int nCallDrawGLFunction(long renderer, long drawGLFunction);
@Override
public int invokeFunctors(Rect dirty) {
return nInvokeFunctors(mRenderer, dirty);
}
- private static native int nInvokeFunctors(int renderer, Rect dirty);
+ private static native int nInvokeFunctors(long renderer, Rect dirty);
@Override
- public void detachFunctor(int functor) {
+ public void detachFunctor(long functor) {
nDetachFunctor(mRenderer, functor);
}
- private static native void nDetachFunctor(int renderer, int functor);
+ private static native void nDetachFunctor(long renderer, long functor);
@Override
- public void attachFunctor(int functor) {
+ public void attachFunctor(long functor) {
nAttachFunctor(mRenderer, functor);
}
- private static native void nAttachFunctor(int renderer, int functor);
+ private static native void nAttachFunctor(long renderer, long functor);
///////////////////////////////////////////////////////////////////////////
// Memory
@@ -402,18 +402,18 @@ class GLES20Canvas extends HardwareCanvas {
// Display list
///////////////////////////////////////////////////////////////////////////
- int getDisplayList(int displayList) {
+ long getDisplayList(long displayList) {
return nGetDisplayList(mRenderer, displayList);
}
- private static native int nGetDisplayList(int renderer, int displayList);
+ private static native long nGetDisplayList(long renderer, long displayList);
@Override
void outputDisplayList(DisplayList displayList) {
nOutputDisplayList(mRenderer, ((GLES20DisplayList) displayList).getNativeDisplayList());
}
- private static native void nOutputDisplayList(int renderer, int displayList);
+ private static native void nOutputDisplayList(long renderer, long displayList);
@Override
public int drawDisplayList(DisplayList displayList, Rect dirty, int flags) {
@@ -421,7 +421,7 @@ class GLES20Canvas extends HardwareCanvas {
dirty, flags);
}
- private static native int nDrawDisplayList(int renderer, int displayList,
+ private static native int nDrawDisplayList(long renderer, long displayList,
Rect dirty, int flags);
///////////////////////////////////////////////////////////////////////////
@@ -435,7 +435,7 @@ class GLES20Canvas extends HardwareCanvas {
nDrawLayer(mRenderer, glLayer.getLayer(), x, y);
}
- private static native void nDrawLayer(int renderer, int layer, float x, float y);
+ private static native void nDrawLayer(long renderer, long layer, float x, float y);
void interrupt() {
nInterrupt(mRenderer);
@@ -445,8 +445,8 @@ class GLES20Canvas extends HardwareCanvas {
nResume(mRenderer);
}
- private static native void nInterrupt(int renderer);
- private static native void nResume(int renderer);
+ private static native void nInterrupt(long renderer);
+ private static native void nResume(long renderer);
///////////////////////////////////////////////////////////////////////////
// Support
@@ -487,14 +487,14 @@ class GLES20Canvas extends HardwareCanvas {
return nClipPath(mRenderer, path.mNativePath, op.nativeInt);
}
- private static native boolean nClipPath(int renderer, int path, int op);
+ private static native boolean nClipPath(long renderer, long path, int op);
@Override
public boolean clipRect(float left, float top, float right, float bottom) {
return nClipRect(mRenderer, left, top, right, bottom, Region.Op.INTERSECT.nativeInt);
}
- private static native boolean nClipRect(int renderer, float left, float top,
+ private static native boolean nClipRect(long renderer, float left, float top,
float right, float bottom, int op);
@Override
@@ -507,7 +507,7 @@ class GLES20Canvas extends HardwareCanvas {
return nClipRect(mRenderer, left, top, right, bottom, Region.Op.INTERSECT.nativeInt);
}
- private static native boolean nClipRect(int renderer, int left, int top,
+ private static native boolean nClipRect(long renderer, int left, int top,
int right, int bottom, int op);
@Override
@@ -542,21 +542,21 @@ class GLES20Canvas extends HardwareCanvas {
return nClipRegion(mRenderer, region.mNativeRegion, op.nativeInt);
}
- private static native boolean nClipRegion(int renderer, int region, int op);
+ private static native boolean nClipRegion(long renderer, long region, int op);
@Override
public boolean getClipBounds(Rect bounds) {
return nGetClipBounds(mRenderer, bounds);
}
- private static native boolean nGetClipBounds(int renderer, Rect bounds);
+ private static native boolean nGetClipBounds(long renderer, Rect bounds);
@Override
public boolean quickReject(float left, float top, float right, float bottom, EdgeType type) {
return nQuickReject(mRenderer, left, top, right, bottom);
}
- private static native boolean nQuickReject(int renderer, float left, float top,
+ private static native boolean nQuickReject(long renderer, float left, float top,
float right, float bottom);
@Override
@@ -581,35 +581,35 @@ class GLES20Canvas extends HardwareCanvas {
if (dx != 0.0f || dy != 0.0f) nTranslate(mRenderer, dx, dy);
}
- private static native void nTranslate(int renderer, float dx, float dy);
+ private static native void nTranslate(long renderer, float dx, float dy);
@Override
public void skew(float sx, float sy) {
nSkew(mRenderer, sx, sy);
}
- private static native void nSkew(int renderer, float sx, float sy);
+ private static native void nSkew(long renderer, float sx, float sy);
@Override
public void rotate(float degrees) {
nRotate(mRenderer, degrees);
}
- private static native void nRotate(int renderer, float degrees);
+ private static native void nRotate(long renderer, float degrees);
@Override
public void scale(float sx, float sy) {
nScale(mRenderer, sx, sy);
}
- private static native void nScale(int renderer, float sx, float sy);
+ private static native void nScale(long renderer, float sx, float sy);
@Override
public void setMatrix(Matrix matrix) {
nSetMatrix(mRenderer, matrix == null ? 0 : matrix.native_instance);
}
- private static native void nSetMatrix(int renderer, int matrix);
+ private static native void nSetMatrix(long renderer, long matrix);
@SuppressWarnings("deprecation")
@Override
@@ -617,14 +617,14 @@ class GLES20Canvas extends HardwareCanvas {
nGetMatrix(mRenderer, matrix.native_instance);
}
- private static native void nGetMatrix(int renderer, int matrix);
+ private static native void nGetMatrix(long renderer, long matrix);
@Override
public void concat(Matrix matrix) {
if (matrix != null) nConcatMatrix(mRenderer, matrix.native_instance);
}
- private static native void nConcatMatrix(int renderer, int matrix);
+ private static native void nConcatMatrix(long renderer, long matrix);
///////////////////////////////////////////////////////////////////////////
// State management
@@ -640,7 +640,7 @@ class GLES20Canvas extends HardwareCanvas {
return nSave(mRenderer, saveFlags);
}
- private static native int nSave(int renderer, int flags);
+ private static native int nSave(long renderer, int flags);
@Override
public int saveLayer(RectF bounds, Paint paint, int saveFlags) {
@@ -651,7 +651,7 @@ class GLES20Canvas extends HardwareCanvas {
int count;
int modifier = paint != null ? setupColorFilter(paint) : MODIFIER_NONE;
try {
- final int nativePaint = paint == null ? 0 : paint.mNativePaint;
+ final long nativePaint = paint == null ? 0 : paint.mNativePaint;
count = nSaveLayer(mRenderer, nativePaint, saveFlags);
} finally {
if (modifier != MODIFIER_NONE) nResetModifiers(mRenderer, modifier);
@@ -659,7 +659,7 @@ class GLES20Canvas extends HardwareCanvas {
return count;
}
- private static native int nSaveLayer(int renderer, int paint, int saveFlags);
+ private static native int nSaveLayer(long renderer, long paint, int saveFlags);
@Override
public int saveLayer(float left, float top, float right, float bottom, Paint paint,
@@ -668,7 +668,7 @@ class GLES20Canvas extends HardwareCanvas {
int count;
int modifier = paint != null ? setupColorFilter(paint) : MODIFIER_NONE;
try {
- final int nativePaint = paint == null ? 0 : paint.mNativePaint;
+ final long nativePaint = paint == null ? 0 : paint.mNativePaint;
count = nSaveLayer(mRenderer, left, top, right, bottom, nativePaint, saveFlags);
} finally {
if (modifier != MODIFIER_NONE) nResetModifiers(mRenderer, modifier);
@@ -678,8 +678,8 @@ class GLES20Canvas extends HardwareCanvas {
return save(saveFlags);
}
- private static native int nSaveLayer(int renderer, float left, float top,
- float right, float bottom, int paint, int saveFlags);
+ private static native int nSaveLayer(long renderer, float left, float top,
+ float right, float bottom, long paint, int saveFlags);
@Override
public int saveLayerAlpha(RectF bounds, int alpha, int saveFlags) {
@@ -690,7 +690,7 @@ class GLES20Canvas extends HardwareCanvas {
return nSaveLayerAlpha(mRenderer, alpha, saveFlags);
}
- private static native int nSaveLayerAlpha(int renderer, int alpha, int saveFlags);
+ private static native int nSaveLayerAlpha(long renderer, int alpha, int saveFlags);
@Override
public int saveLayerAlpha(float left, float top, float right, float bottom, int alpha,
@@ -701,7 +701,7 @@ class GLES20Canvas extends HardwareCanvas {
return save(saveFlags);
}
- private static native int nSaveLayerAlpha(int renderer, float left, float top, float right,
+ private static native int nSaveLayerAlpha(long renderer, float left, float top, float right,
float bottom, int alpha, int saveFlags);
@Override
@@ -709,21 +709,21 @@ class GLES20Canvas extends HardwareCanvas {
nRestore(mRenderer);
}
- private static native void nRestore(int renderer);
+ private static native void nRestore(long renderer);
@Override
public void restoreToCount(int saveCount) {
nRestoreToCount(mRenderer, saveCount);
}
- private static native void nRestoreToCount(int renderer, int saveCount);
+ private static native void nRestoreToCount(long renderer, int saveCount);
@Override
public int getSaveCount() {
return nGetSaveCount(mRenderer);
}
- private static native int nGetSaveCount(int renderer);
+ private static native int nGetSaveCount(long renderer);
///////////////////////////////////////////////////////////////////////////
// Filtering
@@ -740,8 +740,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nResetPaintFilter(int renderer);
- private static native void nSetupPaintFilter(int renderer, int clearBits, int setBits);
+ private static native void nResetPaintFilter(long renderer);
+ private static native void nSetupPaintFilter(long renderer, int clearBits, int setBits);
@Override
public DrawFilter getDrawFilter() {
@@ -764,9 +764,9 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawArc(int renderer, float left, float top,
+ private static native void nDrawArc(long renderer, float left, float top,
float right, float bottom, float startAngle, float sweepAngle,
- boolean useCenter, int paint);
+ boolean useCenter, long paint);
@Override
public void drawARGB(int a, int r, int g, int b) {
@@ -780,7 +780,7 @@ class GLES20Canvas extends HardwareCanvas {
// Shaders are ignored when drawing patches
int modifier = paint != null ? setupColorFilter(paint) : MODIFIER_NONE;
try {
- final int nativePaint = paint == null ? 0 : paint.mNativePaint;
+ final long nativePaint = paint == null ? 0 : paint.mNativePaint;
nDrawPatch(mRenderer, bitmap.mNativeBitmap, bitmap.mBuffer, patch.mNativeChunk,
dst.left, dst.top, dst.right, dst.bottom, nativePaint);
} finally {
@@ -795,7 +795,7 @@ class GLES20Canvas extends HardwareCanvas {
// Shaders are ignored when drawing patches
int modifier = paint != null ? setupColorFilter(paint) : MODIFIER_NONE;
try {
- final int nativePaint = paint == null ? 0 : paint.mNativePaint;
+ final long nativePaint = paint == null ? 0 : paint.mNativePaint;
nDrawPatch(mRenderer, bitmap.mNativeBitmap, bitmap.mBuffer, patch.mNativeChunk,
dst.left, dst.top, dst.right, dst.bottom, nativePaint);
} finally {
@@ -803,8 +803,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawPatch(int renderer, int bitmap, byte[] buffer, int chunk,
- float left, float top, float right, float bottom, int paint);
+ private static native void nDrawPatch(long renderer, long bitmap, byte[] buffer, long chunk,
+ float left, float top, float right, float bottom, long paint);
@Override
public void drawBitmap(Bitmap bitmap, float left, float top, Paint paint) {
@@ -812,15 +812,15 @@ class GLES20Canvas extends HardwareCanvas {
// Shaders are ignored when drawing bitmaps
int modifiers = paint != null ? setupModifiers(bitmap, paint) : MODIFIER_NONE;
try {
- final int nativePaint = paint == null ? 0 : paint.mNativePaint;
+ final long nativePaint = paint == null ? 0 : paint.mNativePaint;
nDrawBitmap(mRenderer, bitmap.mNativeBitmap, bitmap.mBuffer, left, top, nativePaint);
} finally {
if (modifiers != MODIFIER_NONE) nResetModifiers(mRenderer, modifiers);
}
}
- private static native void nDrawBitmap(int renderer, int bitmap, byte[] buffer,
- float left, float top, int paint);
+ private static native void nDrawBitmap(long renderer, long bitmap, byte[] buffer,
+ float left, float top, long paint);
@Override
public void drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint) {
@@ -828,7 +828,7 @@ class GLES20Canvas extends HardwareCanvas {
// Shaders are ignored when drawing bitmaps
int modifiers = paint != null ? setupModifiers(bitmap, paint) : MODIFIER_NONE;
try {
- final int nativePaint = paint == null ? 0 : paint.mNativePaint;
+ final long nativePaint = paint == null ? 0 : paint.mNativePaint;
nDrawBitmap(mRenderer, bitmap.mNativeBitmap, bitmap.mBuffer,
matrix.native_instance, nativePaint);
} finally {
@@ -836,8 +836,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawBitmap(int renderer, int bitmap, byte[] buffer,
- int matrix, int paint);
+ private static native void nDrawBitmap(long renderer, long bitmap, byte[] buffer,
+ long matrix, long paint);
@Override
public void drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) {
@@ -845,7 +845,7 @@ class GLES20Canvas extends HardwareCanvas {
// Shaders are ignored when drawing bitmaps
int modifiers = paint != null ? setupModifiers(bitmap, paint) : MODIFIER_NONE;
try {
- final int nativePaint = paint == null ? 0 : paint.mNativePaint;
+ final long nativePaint = paint == null ? 0 : paint.mNativePaint;
int left, top, right, bottom;
if (src == null) {
@@ -872,7 +872,7 @@ class GLES20Canvas extends HardwareCanvas {
// Shaders are ignored when drawing bitmaps
int modifiers = paint != null ? setupModifiers(bitmap, paint) : MODIFIER_NONE;
try {
- final int nativePaint = paint == null ? 0 : paint.mNativePaint;
+ final long nativePaint = paint == null ? 0 : paint.mNativePaint;
float left, top, right, bottom;
if (src == null) {
@@ -893,9 +893,9 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawBitmap(int renderer, int bitmap, byte[] buffer,
+ private static native void nDrawBitmap(long renderer, long bitmap, byte[] buffer,
float srcLeft, float srcTop, float srcRight, float srcBottom,
- float left, float top, float right, float bottom, int paint);
+ float left, float top, float right, float bottom, long paint);
@Override
public void drawBitmap(int[] colors, int offset, int stride, float x, float y,
@@ -923,7 +923,7 @@ class GLES20Canvas extends HardwareCanvas {
// Shaders are ignored when drawing bitmaps
int modifier = paint != null ? setupColorFilter(paint) : MODIFIER_NONE;
try {
- final int nativePaint = paint == null ? 0 : paint.mNativePaint;
+ final long nativePaint = paint == null ? 0 : paint.mNativePaint;
nDrawBitmap(mRenderer, colors, offset, stride, x, y,
width, height, hasAlpha, nativePaint);
} finally {
@@ -931,8 +931,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawBitmap(int renderer, int[] colors, int offset, int stride,
- float x, float y, int width, int height, boolean hasAlpha, int nativePaint);
+ private static native void nDrawBitmap(long renderer, int[] colors, int offset, int stride,
+ float x, float y, int width, int height, boolean hasAlpha, long nativePaint);
@Override
public void drawBitmap(int[] colors, int offset, int stride, int x, int y,
@@ -962,7 +962,7 @@ class GLES20Canvas extends HardwareCanvas {
int modifiers = paint != null ? setupModifiers(bitmap, paint) : MODIFIER_NONE;
try {
- final int nativePaint = paint == null ? 0 : paint.mNativePaint;
+ final long nativePaint = paint == null ? 0 : paint.mNativePaint;
nDrawBitmapMesh(mRenderer, bitmap.mNativeBitmap, bitmap.mBuffer, meshWidth, meshHeight,
verts, vertOffset, colors, colorOffset, nativePaint);
} finally {
@@ -970,9 +970,9 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawBitmapMesh(int renderer, int bitmap, byte[] buffer,
+ private static native void nDrawBitmapMesh(long renderer, long bitmap, byte[] buffer,
int meshWidth, int meshHeight, float[] verts, int vertOffset,
- int[] colors, int colorOffset, int paint);
+ int[] colors, int colorOffset, long paint);
@Override
public void drawCircle(float cx, float cy, float radius, Paint paint) {
@@ -984,8 +984,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawCircle(int renderer, float cx, float cy,
- float radius, int paint);
+ private static native void nDrawCircle(long renderer, float cx, float cy,
+ float radius, long paint);
@Override
public void drawColor(int color) {
@@ -997,7 +997,7 @@ class GLES20Canvas extends HardwareCanvas {
nDrawColor(mRenderer, color, mode.nativeInt);
}
- private static native void nDrawColor(int renderer, int color, int mode);
+ private static native void nDrawColor(long renderer, int color, int mode);
@Override
public void drawLine(float startX, float startY, float stopX, float stopY, Paint paint) {
@@ -1024,8 +1024,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawLines(int renderer, float[] points,
- int offset, int count, int paint);
+ private static native void nDrawLines(long renderer, float[] points,
+ int offset, int count, long paint);
@Override
public void drawLines(float[] pts, Paint paint) {
@@ -1042,8 +1042,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawOval(int renderer, float left, float top,
- float right, float bottom, int paint);
+ private static native void nDrawOval(long renderer, float left, float top,
+ float right, float bottom, long paint);
@Override
public void drawPaint(Paint paint) {
@@ -1068,8 +1068,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawPath(int renderer, int path, int paint);
- private static native void nDrawRects(int renderer, int region, int paint);
+ private static native void nDrawPath(long renderer, long path, long paint);
+ private static native void nDrawRects(long renderer, long region, long paint);
void drawRects(float[] rects, int count, Paint paint) {
int modifiers = setupModifiers(paint, MODIFIER_COLOR_FILTER | MODIFIER_SHADER);
@@ -1080,7 +1080,7 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawRects(int renderer, float[] rects, int count, int paint);
+ private static native void nDrawRects(long renderer, float[] rects, int count, long paint);
@Override
public void drawPicture(Picture picture) {
@@ -1147,8 +1147,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawPoints(int renderer, float[] points,
- int offset, int count, int paint);
+ private static native void nDrawPoints(long renderer, float[] points,
+ int offset, int count, long paint);
@SuppressWarnings("deprecation")
@Override
@@ -1165,8 +1165,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawPosText(int renderer, char[] text, int index, int count,
- float[] pos, int paint);
+ private static native void nDrawPosText(long renderer, char[] text, int index, int count,
+ float[] pos, long paint);
@SuppressWarnings("deprecation")
@Override
@@ -1183,8 +1183,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawPosText(int renderer, String text, int start, int end,
- float[] pos, int paint);
+ private static native void nDrawPosText(long renderer, String text, int start, int end,
+ float[] pos, long paint);
@Override
public void drawRect(float left, float top, float right, float bottom, Paint paint) {
@@ -1197,8 +1197,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawRect(int renderer, float left, float top,
- float right, float bottom, int paint);
+ private static native void nDrawRect(long renderer, float left, float top,
+ float right, float bottom, long paint);
@Override
public void drawRect(Rect r, Paint paint) {
@@ -1226,8 +1226,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawRoundRect(int renderer, float left, float top,
- float right, float bottom, float rx, float y, int paint);
+ private static native void nDrawRoundRect(long renderer, float left, float top,
+ float right, float bottom, float rx, float y, long paint);
@Override
public void drawText(char[] text, int index, int count, float x, float y, Paint paint) {
@@ -1243,8 +1243,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawText(int renderer, char[] text, int index, int count,
- float x, float y, int bidiFlags, int paint);
+ private static native void nDrawText(long renderer, char[] text, int index, int count,
+ float x, float y, int bidiFlags, long paint);
@Override
public void drawText(CharSequence text, int start, int end, float x, float y, Paint paint) {
@@ -1283,8 +1283,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawText(int renderer, String text, int start, int end,
- float x, float y, int bidiFlags, int paint);
+ private static native void nDrawText(long renderer, String text, int start, int end,
+ float x, float y, int bidiFlags, long paint);
@Override
public void drawText(String text, float x, float y, Paint paint) {
@@ -1313,8 +1313,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawTextOnPath(int renderer, char[] text, int index, int count,
- int path, float hOffset, float vOffset, int bidiFlags, int nativePaint);
+ private static native void nDrawTextOnPath(long renderer, char[] text, int index, int count,
+ long path, float hOffset, float vOffset, int bidiFlags, long nativePaint);
@Override
public void drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint) {
@@ -1329,8 +1329,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawTextOnPath(int renderer, String text, int start, int end,
- int path, float hOffset, float vOffset, int bidiFlags, int nativePaint);
+ private static native void nDrawTextOnPath(long renderer, String text, int start, int end,
+ long path, float hOffset, float vOffset, int bidiFlags, long nativePaint);
@Override
public void drawTextRun(char[] text, int index, int count, int contextIndex, int contextCount,
@@ -1351,8 +1351,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawTextRun(int renderer, char[] text, int index, int count,
- int contextIndex, int contextCount, float x, float y, int dir, int nativePaint);
+ private static native void nDrawTextRun(long renderer, char[] text, int index, int count,
+ int contextIndex, int contextCount, float x, float y, int dir, long nativePaint);
@Override
public void drawTextRun(CharSequence text, int start, int end, int contextStart, int contextEnd,
@@ -1385,8 +1385,8 @@ class GLES20Canvas extends HardwareCanvas {
}
}
- private static native void nDrawTextRun(int renderer, String text, int start, int end,
- int contextStart, int contextEnd, float x, float y, int flags, int nativePaint);
+ private static native void nDrawTextRun(long renderer, String text, int start, int end,
+ int contextStart, int contextEnd, float x, float y, int flags, long nativePaint);
@Override
public void drawVertices(VertexMode mode, int vertexCount, float[] verts, int vertOffset,
@@ -1466,10 +1466,10 @@ class GLES20Canvas extends HardwareCanvas {
return MODIFIER_NONE;
}
- private static native void nSetupShader(int renderer, int shader);
- private static native void nSetupColorFilter(int renderer, int colorFilter);
- private static native void nSetupShadow(int renderer, float radius,
+ private static native void nSetupShader(long renderer, long shader);
+ private static native void nSetupColorFilter(long renderer, long colorFilter);
+ private static native void nSetupShadow(long renderer, float radius,
float dx, float dy, int color);
- private static native void nResetModifiers(int renderer, int modifiers);
+ private static native void nResetModifiers(long renderer, int modifiers);
}
diff --git a/core/java/android/view/GLES20DisplayList.java b/core/java/android/view/GLES20DisplayList.java
index c652bac1f772..7f8b3bd7d976 100644
--- a/core/java/android/view/GLES20DisplayList.java
+++ b/core/java/android/view/GLES20DisplayList.java
@@ -44,7 +44,7 @@ class GLES20DisplayList extends DisplayList {
return mValid && mFinalizer != null;
}
- int getNativeDisplayList() {
+ long getNativeDisplayList() {
if (!mValid || mFinalizer == null) {
throw new IllegalStateException("The display list is not valid.");
}
@@ -124,9 +124,9 @@ class GLES20DisplayList extends DisplayList {
return nGetDisplayListSize(mFinalizer.mNativeDisplayList);
}
- private static native void nDestroyDisplayList(int displayList);
- private static native int nGetDisplayListSize(int displayList);
- private static native void nSetDisplayListName(int displayList, String name);
+ private static native void nDestroyDisplayList(long displayList);
+ private static native int nGetDisplayListSize(long displayList);
+ private static native void nSetDisplayListName(long displayList, String name);
///////////////////////////////////////////////////////////////////////////
// Native View Properties
@@ -440,62 +440,62 @@ class GLES20DisplayList extends DisplayList {
}
}
- private static native void nReset(int displayList);
- private static native void nOffsetTopAndBottom(int displayList, float offset);
- private static native void nOffsetLeftAndRight(int displayList, float offset);
- private static native void nSetLeftTopRightBottom(int displayList, int left, int top,
+ private static native void nReset(long displayList);
+ private static native void nOffsetTopAndBottom(long displayList, float offset);
+ private static native void nOffsetLeftAndRight(long displayList, float offset);
+ private static native void nSetLeftTopRightBottom(long displayList, int left, int top,
int right, int bottom);
- private static native void nSetBottom(int displayList, int bottom);
- private static native void nSetRight(int displayList, int right);
- private static native void nSetTop(int displayList, int top);
- private static native void nSetLeft(int displayList, int left);
- private static native void nSetCameraDistance(int displayList, float distance);
- private static native void nSetPivotY(int displayList, float pivotY);
- private static native void nSetPivotX(int displayList, float pivotX);
- private static native void nSetCaching(int displayList, boolean caching);
- private static native void nSetClipToBounds(int displayList, boolean clipToBounds);
- private static native void nSetAlpha(int displayList, float alpha);
- private static native void nSetHasOverlappingRendering(int displayList,
+ private static native void nSetBottom(long displayList, int bottom);
+ private static native void nSetRight(long displayList, int right);
+ private static native void nSetTop(long displayList, int top);
+ private static native void nSetLeft(long displayList, int left);
+ private static native void nSetCameraDistance(long displayList, float distance);
+ private static native void nSetPivotY(long displayList, float pivotY);
+ private static native void nSetPivotX(long displayList, float pivotX);
+ private static native void nSetCaching(long displayList, boolean caching);
+ private static native void nSetClipToBounds(long displayList, boolean clipToBounds);
+ private static native void nSetAlpha(long displayList, float alpha);
+ private static native void nSetHasOverlappingRendering(long displayList,
boolean hasOverlappingRendering);
- private static native void nSetTranslationX(int displayList, float translationX);
- private static native void nSetTranslationY(int displayList, float translationY);
- private static native void nSetRotation(int displayList, float rotation);
- private static native void nSetRotationX(int displayList, float rotationX);
- private static native void nSetRotationY(int displayList, float rotationY);
- private static native void nSetScaleX(int displayList, float scaleX);
- private static native void nSetScaleY(int displayList, float scaleY);
- private static native void nSetTransformationInfo(int displayList, float alpha,
+ private static native void nSetTranslationX(long displayList, float translationX);
+ private static native void nSetTranslationY(long displayList, float translationY);
+ private static native void nSetRotation(long displayList, float rotation);
+ private static native void nSetRotationX(long displayList, float rotationX);
+ private static native void nSetRotationY(long displayList, float rotationY);
+ private static native void nSetScaleX(long displayList, float scaleX);
+ private static native void nSetScaleY(long displayList, float scaleY);
+ private static native void nSetTransformationInfo(long displayList, float alpha,
float translationX, float translationY, float rotation, float rotationX,
float rotationY, float scaleX, float scaleY);
- private static native void nSetStaticMatrix(int displayList, int nativeMatrix);
- private static native void nSetAnimationMatrix(int displayList, int animationMatrix);
-
- private static native boolean nHasOverlappingRendering(int displayList);
- private static native void nGetMatrix(int displayList, int matrix);
- private static native float nGetAlpha(int displayList);
- private static native float nGetLeft(int displayList);
- private static native float nGetTop(int displayList);
- private static native float nGetRight(int displayList);
- private static native float nGetBottom(int displayList);
- private static native float nGetCameraDistance(int displayList);
- private static native float nGetScaleX(int displayList);
- private static native float nGetScaleY(int displayList);
- private static native float nGetTranslationX(int displayList);
- private static native float nGetTranslationY(int displayList);
- private static native float nGetRotation(int displayList);
- private static native float nGetRotationX(int displayList);
- private static native float nGetRotationY(int displayList);
- private static native float nGetPivotX(int displayList);
- private static native float nGetPivotY(int displayList);
+ private static native void nSetStaticMatrix(long displayList, long nativeMatrix);
+ private static native void nSetAnimationMatrix(long displayList, long animationMatrix);
+
+ private static native boolean nHasOverlappingRendering(long displayList);
+ private static native void nGetMatrix(long displayList, long matrix);
+ private static native float nGetAlpha(long displayList);
+ private static native float nGetLeft(long displayList);
+ private static native float nGetTop(long displayList);
+ private static native float nGetRight(long displayList);
+ private static native float nGetBottom(long displayList);
+ private static native float nGetCameraDistance(long displayList);
+ private static native float nGetScaleX(long displayList);
+ private static native float nGetScaleY(long displayList);
+ private static native float nGetTranslationX(long displayList);
+ private static native float nGetTranslationY(long displayList);
+ private static native float nGetRotation(long displayList);
+ private static native float nGetRotationX(long displayList);
+ private static native float nGetRotationY(long displayList);
+ private static native float nGetPivotX(long displayList);
+ private static native float nGetPivotY(long displayList);
///////////////////////////////////////////////////////////////////////////
// Finalization
///////////////////////////////////////////////////////////////////////////
private static class DisplayListFinalizer {
- final int mNativeDisplayList;
+ final long mNativeDisplayList;
- public DisplayListFinalizer(int nativeDisplayList) {
+ public DisplayListFinalizer(long nativeDisplayList) {
mNativeDisplayList = nativeDisplayList;
}
diff --git a/core/java/android/view/GLES20Layer.java b/core/java/android/view/GLES20Layer.java
index 0e3311c1c860..37154ebbd95a 100644
--- a/core/java/android/view/GLES20Layer.java
+++ b/core/java/android/view/GLES20Layer.java
@@ -24,7 +24,7 @@ import android.graphics.Paint;
* An OpenGL ES 2.0 implementation of {@link HardwareLayer}.
*/
abstract class GLES20Layer extends HardwareLayer {
- int mLayer;
+ long mLayer;
Finalizer mFinalizer;
GLES20Layer() {
@@ -39,7 +39,7 @@ abstract class GLES20Layer extends HardwareLayer {
*
* @return A pointer to the native layer object, or 0 if the object is NULL
*/
- public int getLayer() {
+ public long getLayer() {
return mLayer;
}
@@ -75,9 +75,9 @@ abstract class GLES20Layer extends HardwareLayer {
}
static class Finalizer {
- private int mLayerId;
+ private long mLayerId;
- public Finalizer(int layerId) {
+ public Finalizer(long layerId) {
mLayerId = layerId;
}
diff --git a/core/java/android/view/GLES20RecordingCanvas.java b/core/java/android/view/GLES20RecordingCanvas.java
index b6fc38d892f5..e3e1c76dfc62 100644
--- a/core/java/android/view/GLES20RecordingCanvas.java
+++ b/core/java/android/view/GLES20RecordingCanvas.java
@@ -58,7 +58,7 @@ class GLES20RecordingCanvas extends GLES20Canvas {
mDisplayList.clearReferences();
}
- int end(int nativeDisplayList) {
+ long end(long nativeDisplayList) {
return getDisplayList(nativeDisplayList);
}
diff --git a/core/java/android/view/GraphicBuffer.java b/core/java/android/view/GraphicBuffer.java
index 30c077c2e879..5f2a9cd45eda 100644
--- a/core/java/android/view/GraphicBuffer.java
+++ b/core/java/android/view/GraphicBuffer.java
@@ -56,7 +56,7 @@ public class GraphicBuffer implements Parcelable {
private final int mFormat;
private final int mUsage;
// Note: do not rename, this field is used by native code
- private final int mNativeObject;
+ private final long mNativeObject;
// These two fields are only used by lock/unlockCanvas()
private Canvas mCanvas;
@@ -77,7 +77,7 @@ public class GraphicBuffer implements Parcelable {
* @return A <code>GraphicBuffer</code> instance or null
*/
public static GraphicBuffer create(int width, int height, int format, int usage) {
- int nativeObject = nCreateGraphicBuffer(width, height, format, usage);
+ long nativeObject = nCreateGraphicBuffer(width, height, format, usage);
if (nativeObject != 0) {
return new GraphicBuffer(width, height, format, usage, nativeObject);
}
@@ -87,7 +87,7 @@ public class GraphicBuffer implements Parcelable {
/**
* Private use only. See {@link #create(int, int, int, int)}.
*/
- private GraphicBuffer(int width, int height, int format, int usage, int nativeObject) {
+ private GraphicBuffer(int width, int height, int format, int usage, long nativeObject) {
mWidth = width;
mHeight = height;
mFormat = format;
@@ -271,7 +271,7 @@ public class GraphicBuffer implements Parcelable {
int height = in.readInt();
int format = in.readInt();
int usage = in.readInt();
- int nativeObject = nReadGraphicBufferFromParcel(in);
+ long nativeObject = nReadGraphicBufferFromParcel(in);
if (nativeObject != 0) {
return new GraphicBuffer(width, height, format, usage, nativeObject);
}
@@ -283,10 +283,10 @@ public class GraphicBuffer implements Parcelable {
}
};
- private static native int nCreateGraphicBuffer(int width, int height, int format, int usage);
- private static native void nDestroyGraphicBuffer(int nativeObject);
- private static native void nWriteGraphicBufferToParcel(int nativeObject, Parcel dest);
- private static native int nReadGraphicBufferFromParcel(Parcel in);
- private static native boolean nLockCanvas(int nativeObject, Canvas canvas, Rect dirty);
- private static native boolean nUnlockCanvasAndPost(int nativeObject, Canvas canvas);
+ private static native long nCreateGraphicBuffer(int width, int height, int format, int usage);
+ private static native void nDestroyGraphicBuffer(long nativeObject);
+ private static native void nWriteGraphicBufferToParcel(long nativeObject, Parcel dest);
+ private static native long nReadGraphicBufferFromParcel(Parcel in);
+ private static native boolean nLockCanvas(long nativeObject, Canvas canvas, Rect dirty);
+ private static native boolean nUnlockCanvasAndPost(long nativeObject, Canvas canvas);
}
diff --git a/core/java/android/view/HardwareCanvas.java b/core/java/android/view/HardwareCanvas.java
index 259e1cd02f44..10f700c7b03f 100644
--- a/core/java/android/view/HardwareCanvas.java
+++ b/core/java/android/view/HardwareCanvas.java
@@ -145,7 +145,7 @@ public abstract class HardwareCanvas extends Canvas {
*
* @hide
*/
- public int callDrawGLFunction(int drawGLFunction) {
+ public int callDrawGLFunction(long drawGLFunction) {
// Noop - this is done in the display list recorder subclass
return DisplayList.STATUS_DONE;
}
@@ -170,12 +170,12 @@ public abstract class HardwareCanvas extends Canvas {
* @param functor The native functor to remove from the execution queue.
*
* @see #invokeFunctors(android.graphics.Rect)
- * @see #callDrawGLFunction(int)
- * @see #detachFunctor(int)
+ * @see #callDrawGLFunction(long)
+ * @see #detachFunctor(long)
*
* @hide
*/
- abstract void detachFunctor(int functor);
+ abstract void detachFunctor(long functor);
/**
* Attaches the specified functor to the current functor execution queue.
@@ -183,12 +183,12 @@ public abstract class HardwareCanvas extends Canvas {
* @param functor The native functor to add to the execution queue.
*
* @see #invokeFunctors(android.graphics.Rect)
- * @see #callDrawGLFunction(int)
- * @see #detachFunctor(int)
+ * @see #callDrawGLFunction(long)
+ * @see #detachFunctor(long)
*
* @hide
*/
- abstract void attachFunctor(int functor);
+ abstract void attachFunctor(long functor);
/**
* Indicates that the specified layer must be updated as soon as possible.
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java
index f21518931390..3781bdb545ac 100644
--- a/core/java/android/view/HardwareRenderer.java
+++ b/core/java/android/view/HardwareRenderer.java
@@ -568,7 +568,7 @@ public abstract class HardwareRenderer {
* @see HardwareCanvas#callDrawGLFunction(int)
* @see #attachFunctor(android.view.View.AttachInfo, int)
*/
- abstract void detachFunctor(int functor);
+ abstract void detachFunctor(long functor);
/**
* Schedules the specified functor in the functors execution queue.
@@ -581,7 +581,7 @@ public abstract class HardwareRenderer {
*
* @return true if the functor was attached successfully
*/
- abstract boolean attachFunctor(View.AttachInfo attachInfo, int functor);
+ abstract boolean attachFunctor(View.AttachInfo attachInfo, long functor);
/**
* Initializes the hardware renderer for the specified surface and setup the
@@ -1712,14 +1712,14 @@ public abstract class HardwareRenderer {
}
@Override
- void detachFunctor(int functor) {
+ void detachFunctor(long functor) {
if (mCanvas != null) {
mCanvas.detachFunctor(functor);
}
}
@Override
- boolean attachFunctor(View.AttachInfo attachInfo, int functor) {
+ boolean attachFunctor(View.AttachInfo attachInfo, long functor) {
if (mCanvas != null) {
mCanvas.attachFunctor(functor);
mFunctorsRunnable.attachInfo = attachInfo;
diff --git a/core/java/android/view/InputChannel.java b/core/java/android/view/InputChannel.java
index 40ee1ad3196a..de195ae524c8 100644
--- a/core/java/android/view/InputChannel.java
+++ b/core/java/android/view/InputChannel.java
@@ -46,7 +46,7 @@ public final class InputChannel implements Parcelable {
};
@SuppressWarnings("unused")
- private int mPtr; // used by native code
+ private long mPtr; // used by native code
private static native InputChannel[] nativeOpenInputChannelPair(String name);
diff --git a/core/java/android/view/InputDevice.java b/core/java/android/view/InputDevice.java
index e8291160a7f8..0b12cbe9c221 100644
--- a/core/java/android/view/InputDevice.java
+++ b/core/java/android/view/InputDevice.java
@@ -17,6 +17,7 @@
package android.view;
import android.content.Context;
+import android.hardware.input.InputDeviceIdentifier;
import android.hardware.input.InputManager;
import android.os.Parcel;
import android.os.Parcelable;
@@ -49,6 +50,7 @@ public final class InputDevice implements Parcelable {
private final int mVendorId;
private final int mProductId;
private final String mDescriptor;
+ private final InputDeviceIdentifier mIdentifier;
private final boolean mIsExternal;
private final int mSources;
private final int mKeyboardType;
@@ -61,7 +63,7 @@ public final class InputDevice implements Parcelable {
/**
* A mask for input source classes.
- *
+ *
* Each distinct input source constant has one or more input source class bits set to
* specify the desired interpretation for its input events.
*/
@@ -77,46 +79,46 @@ public final class InputDevice implements Parcelable {
/**
* The input source has buttons or keys.
* Examples: {@link #SOURCE_KEYBOARD}, {@link #SOURCE_DPAD}.
- *
+ *
* A {@link KeyEvent} should be interpreted as a button or key press.
- *
+ *
* Use {@link #getKeyCharacterMap} to query the device's button and key mappings.
*/
public static final int SOURCE_CLASS_BUTTON = 0x00000001;
-
+
/**
* The input source is a pointing device associated with a display.
* Examples: {@link #SOURCE_TOUCHSCREEN}, {@link #SOURCE_MOUSE}.
- *
+ *
* A {@link MotionEvent} should be interpreted as absolute coordinates in
* display units according to the {@link View} hierarchy. Pointer down/up indicated when
* the finger touches the display or when the selection button is pressed/released.
- *
+ *
* Use {@link #getMotionRange} to query the range of the pointing device. Some devices permit
* touches outside the display area so the effective range may be somewhat smaller or larger
* than the actual display size.
*/
public static final int SOURCE_CLASS_POINTER = 0x00000002;
-
+
/**
* The input source is a trackball navigation device.
* Examples: {@link #SOURCE_TRACKBALL}.
- *
+ *
* A {@link MotionEvent} should be interpreted as relative movements in device-specific
* units used for navigation purposes. Pointer down/up indicates when the selection button
* is pressed/released.
- *
+ *
* Use {@link #getMotionRange} to query the range of motion.
*/
public static final int SOURCE_CLASS_TRACKBALL = 0x00000004;
-
+
/**
* The input source is an absolute positioning device not associated with a display
* (unlike {@link #SOURCE_CLASS_POINTER}).
- *
+ *
* A {@link MotionEvent} should be interpreted as absolute coordinates in
* device-specific surface units.
- *
+ *
* Use {@link #getMotionRange} to query the range of positions.
*/
public static final int SOURCE_CLASS_POSITION = 0x00000008;
@@ -134,7 +136,7 @@ public final class InputDevice implements Parcelable {
* The input source is unknown.
*/
public static final int SOURCE_UNKNOWN = 0x00000000;
-
+
/**
* The input source is a keyboard.
*
@@ -145,10 +147,10 @@ public final class InputDevice implements Parcelable {
* @see #SOURCE_CLASS_BUTTON
*/
public static final int SOURCE_KEYBOARD = 0x00000100 | SOURCE_CLASS_BUTTON;
-
+
/**
* The input source is a DPad.
- *
+ *
* @see #SOURCE_CLASS_BUTTON
*/
public static final int SOURCE_DPAD = 0x00000200 | SOURCE_CLASS_BUTTON;
@@ -163,16 +165,16 @@ public final class InputDevice implements Parcelable {
/**
* The input source is a touch screen pointing device.
- *
+ *
* @see #SOURCE_CLASS_POINTER
*/
public static final int SOURCE_TOUCHSCREEN = 0x00001000 | SOURCE_CLASS_POINTER;
-
+
/**
* The input source is a mouse pointing device.
* This code is also used for other mouse-like pointing devices such as trackpads
* and trackpoints.
- *
+ *
* @see #SOURCE_CLASS_POINTER
*/
public static final int SOURCE_MOUSE = 0x00002000 | SOURCE_CLASS_POINTER;
@@ -199,15 +201,15 @@ public final class InputDevice implements Parcelable {
/**
* The input source is a trackball.
- *
+ *
* @see #SOURCE_CLASS_TRACKBALL
*/
public static final int SOURCE_TRACKBALL = 0x00010000 | SOURCE_CLASS_TRACKBALL;
-
+
/**
* The input source is a touch pad or digitizer tablet that is not
* associated with a display (unlike {@link #SOURCE_TOUCHSCREEN}).
- *
+ *
* @see #SOURCE_CLASS_POSITION
*/
public static final int SOURCE_TOUCHPAD = 0x00100000 | SOURCE_CLASS_POSITION;
@@ -239,7 +241,7 @@ public final class InputDevice implements Parcelable {
/**
* Constant for retrieving the range of values for {@link MotionEvent#AXIS_X}.
- *
+ *
* @see #getMotionRange
* @deprecated Use {@link MotionEvent#AXIS_X} instead.
*/
@@ -248,7 +250,7 @@ public final class InputDevice implements Parcelable {
/**
* Constant for retrieving the range of values for {@link MotionEvent#AXIS_Y}.
- *
+ *
* @see #getMotionRange
* @deprecated Use {@link MotionEvent#AXIS_Y} instead.
*/
@@ -257,7 +259,7 @@ public final class InputDevice implements Parcelable {
/**
* Constant for retrieving the range of values for {@link MotionEvent#AXIS_PRESSURE}.
- *
+ *
* @see #getMotionRange
* @deprecated Use {@link MotionEvent#AXIS_PRESSURE} instead.
*/
@@ -266,7 +268,7 @@ public final class InputDevice implements Parcelable {
/**
* Constant for retrieving the range of values for {@link MotionEvent#AXIS_SIZE}.
- *
+ *
* @see #getMotionRange
* @deprecated Use {@link MotionEvent#AXIS_SIZE} instead.
*/
@@ -275,7 +277,7 @@ public final class InputDevice implements Parcelable {
/**
* Constant for retrieving the range of values for {@link MotionEvent#AXIS_TOUCH_MAJOR}.
- *
+ *
* @see #getMotionRange
* @deprecated Use {@link MotionEvent#AXIS_TOUCH_MAJOR} instead.
*/
@@ -284,7 +286,7 @@ public final class InputDevice implements Parcelable {
/**
* Constant for retrieving the range of values for {@link MotionEvent#AXIS_TOUCH_MINOR}.
- *
+ *
* @see #getMotionRange
* @deprecated Use {@link MotionEvent#AXIS_TOUCH_MINOR} instead.
*/
@@ -293,7 +295,7 @@ public final class InputDevice implements Parcelable {
/**
* Constant for retrieving the range of values for {@link MotionEvent#AXIS_TOOL_MAJOR}.
- *
+ *
* @see #getMotionRange
* @deprecated Use {@link MotionEvent#AXIS_TOOL_MAJOR} instead.
*/
@@ -302,7 +304,7 @@ public final class InputDevice implements Parcelable {
/**
* Constant for retrieving the range of values for {@link MotionEvent#AXIS_TOOL_MINOR}.
- *
+ *
* @see #getMotionRange
* @deprecated Use {@link MotionEvent#AXIS_TOOL_MINOR} instead.
*/
@@ -311,24 +313,24 @@ public final class InputDevice implements Parcelable {
/**
* Constant for retrieving the range of values for {@link MotionEvent#AXIS_ORIENTATION}.
- *
+ *
* @see #getMotionRange
* @deprecated Use {@link MotionEvent#AXIS_ORIENTATION} instead.
*/
@Deprecated
public static final int MOTION_RANGE_ORIENTATION = MotionEvent.AXIS_ORIENTATION;
-
+
/**
* There is no keyboard.
*/
public static final int KEYBOARD_TYPE_NONE = 0;
-
+
/**
* The keyboard is not fully alphabetic. It may be a numeric keypad or an assortment
* of buttons that are not mapped as alphabetic keys suitable for text input.
*/
public static final int KEYBOARD_TYPE_NON_ALPHABETIC = 1;
-
+
/**
* The keyboard supports a complement of alphabetic keys.
*/
@@ -361,6 +363,7 @@ public final class InputDevice implements Parcelable {
mKeyCharacterMap = keyCharacterMap;
mHasVibrator = hasVibrator;
mHasButtonUnderPad = hasButtonUnderPad;
+ mIdentifier = new InputDeviceIdentifier(descriptor, vendorId, productId);
}
private InputDevice(Parcel in) {
@@ -377,6 +380,7 @@ public final class InputDevice implements Parcelable {
mKeyCharacterMap = KeyCharacterMap.CREATOR.createFromParcel(in);
mHasVibrator = in.readInt() != 0;
mHasButtonUnderPad = in.readInt() != 0;
+ mIdentifier = new InputDeviceIdentifier(mDescriptor, mVendorId, mProductId);
for (;;) {
int axis = in.readInt();
@@ -396,7 +400,7 @@ public final class InputDevice implements Parcelable {
public static InputDevice getDevice(int id) {
return InputManager.getInstance().getInputDevice(id);
}
-
+
/**
* Gets the ids of all input devices in the system.
* @return The input device ids.
@@ -441,6 +445,18 @@ public final class InputDevice implements Parcelable {
}
/**
+ * The set of identifying information for type of input device. This
+ * information can be used by the system to configure appropriate settings
+ * for the device.
+ *
+ * @return The identifier object for this device
+ * @hide
+ */
+ public InputDeviceIdentifier getIdentifier() {
+ return mIdentifier;
+ }
+
+ /**
* Gets a generation number for this input device.
* The generation number is incremented whenever the device is reconfigured and its
* properties may have changed.
@@ -553,7 +569,7 @@ public final class InputDevice implements Parcelable {
public String getName() {
return mName;
}
-
+
/**
* Gets the input sources supported by this input device as a combined bitfield.
* @return The supported input sources.
@@ -561,7 +577,7 @@ public final class InputDevice implements Parcelable {
public int getSources() {
return mSources;
}
-
+
/**
* Gets the keyboard type.
* @return The keyboard type.
@@ -569,7 +585,7 @@ public final class InputDevice implements Parcelable {
public int getKeyboardType() {
return mKeyboardType;
}
-
+
/**
* Gets the key character map associated with this input device.
* @return The key character map.
diff --git a/core/java/android/view/InputEventReceiver.java b/core/java/android/view/InputEventReceiver.java
index 25972e7737a8..91ef50d76180 100644
--- a/core/java/android/view/InputEventReceiver.java
+++ b/core/java/android/view/InputEventReceiver.java
@@ -34,7 +34,7 @@ public abstract class InputEventReceiver {
private final CloseGuard mCloseGuard = CloseGuard.get();
- private int mReceiverPtr;
+ private long mReceiverPtr;
// We keep references to the input channel and message queue objects here so that
// they are not GC'd while the native peer of the receiver is using them.
@@ -44,11 +44,11 @@ public abstract class InputEventReceiver {
// Map from InputEvent sequence numbers to dispatcher sequence numbers.
private final SparseIntArray mSeqMap = new SparseIntArray();
- private static native int nativeInit(WeakReference<InputEventReceiver> receiver,
+ private static native long nativeInit(WeakReference<InputEventReceiver> receiver,
InputChannel inputChannel, MessageQueue messageQueue);
- private static native void nativeDispose(int receiverPtr);
- private static native void nativeFinishInputEvent(int receiverPtr, int seq, boolean handled);
- private static native boolean nativeConsumeBatchedInputEvents(int receiverPtr,
+ private static native void nativeDispose(long receiverPtr);
+ private static native void nativeFinishInputEvent(long receiverPtr, int seq, boolean handled);
+ private static native boolean nativeConsumeBatchedInputEvents(long receiverPtr,
long frameTimeNanos);
/**
diff --git a/core/java/android/view/InputEventSender.java b/core/java/android/view/InputEventSender.java
index be6a623ae165..304ea3f8bd2b 100644
--- a/core/java/android/view/InputEventSender.java
+++ b/core/java/android/view/InputEventSender.java
@@ -33,18 +33,18 @@ public abstract class InputEventSender {
private final CloseGuard mCloseGuard = CloseGuard.get();
- private int mSenderPtr;
+ private long mSenderPtr;
// We keep references to the input channel and message queue objects here so that
// they are not GC'd while the native peer of the receiver is using them.
private InputChannel mInputChannel;
private MessageQueue mMessageQueue;
- private static native int nativeInit(WeakReference<InputEventSender> sender,
+ private static native long nativeInit(WeakReference<InputEventSender> sender,
InputChannel inputChannel, MessageQueue messageQueue);
- private static native void nativeDispose(int senderPtr);
- private static native boolean nativeSendKeyEvent(int senderPtr, int seq, KeyEvent event);
- private static native boolean nativeSendMotionEvent(int senderPtr, int seq, MotionEvent event);
+ private static native void nativeDispose(long senderPtr);
+ private static native boolean nativeSendKeyEvent(long senderPtr, int seq, KeyEvent event);
+ private static native boolean nativeSendMotionEvent(long senderPtr, int seq, MotionEvent event);
/**
* Creates an input event sender bound to the specified input channel.
diff --git a/core/java/android/view/InputQueue.java b/core/java/android/view/InputQueue.java
index e3de89d1cc00..d5cec49839db 100644
--- a/core/java/android/view/InputQueue.java
+++ b/core/java/android/view/InputQueue.java
@@ -23,7 +23,7 @@ import android.os.Looper;
import android.os.MessageQueue;
import android.util.Pools.Pool;
import android.util.Pools.SimplePool;
-import android.util.SparseArray;
+import android.util.LongSparseArray;
import java.lang.ref.WeakReference;
@@ -32,20 +32,20 @@ import java.lang.ref.WeakReference;
* input events. Currently only usable from native code.
*/
public final class InputQueue {
- private final SparseArray<ActiveInputEvent> mActiveEventArray =
- new SparseArray<ActiveInputEvent>(20);
+ private final LongSparseArray<ActiveInputEvent> mActiveEventArray =
+ new LongSparseArray<ActiveInputEvent>(20);
private final Pool<ActiveInputEvent> mActiveInputEventPool =
new SimplePool<ActiveInputEvent>(20);
private final CloseGuard mCloseGuard = CloseGuard.get();
- private int mPtr;
+ private long mPtr;
- private static native int nativeInit(WeakReference<InputQueue> weakQueue,
+ private static native long nativeInit(WeakReference<InputQueue> weakQueue,
MessageQueue messageQueue);
- private static native int nativeSendKeyEvent(int ptr, KeyEvent e, boolean preDispatch);
- private static native int nativeSendMotionEvent(int ptr, MotionEvent e);
- private static native void nativeDispose(int ptr);
+ private static native long nativeSendKeyEvent(long ptr, KeyEvent e, boolean preDispatch);
+ private static native long nativeSendMotionEvent(long ptr, MotionEvent e);
+ private static native void nativeDispose(long ptr);
/** @hide */
public InputQueue() {
@@ -84,7 +84,7 @@ public final class InputQueue {
}
/** @hide */
- public int getNativePtr() {
+ public long getNativePtr() {
return mPtr;
}
@@ -92,7 +92,7 @@ public final class InputQueue {
public void sendInputEvent(InputEvent e, Object token, boolean predispatch,
FinishedInputEventCallback callback) {
ActiveInputEvent event = obtainActiveInputEvent(token, callback);
- int id;
+ long id;
if (e instanceof KeyEvent) {
id = nativeSendKeyEvent(mPtr, (KeyEvent) e, predispatch);
} else {
@@ -101,7 +101,7 @@ public final class InputQueue {
mActiveEventArray.put(id, event);
}
- private void finishInputEvent(int id, boolean handled) {
+ private void finishInputEvent(long id, boolean handled) {
int index = mActiveEventArray.indexOfKey(id);
if (index >= 0) {
ActiveInputEvent e = mActiveEventArray.valueAt(index);
diff --git a/core/java/android/view/KeyCharacterMap.java b/core/java/android/view/KeyCharacterMap.java
index 9e5f25a11a63..55dd6bb64fe6 100644
--- a/core/java/android/view/KeyCharacterMap.java
+++ b/core/java/android/view/KeyCharacterMap.java
@@ -282,20 +282,20 @@ public class KeyCharacterMap implements Parcelable {
}
};
- private int mPtr;
+ private long mPtr;
- private static native int nativeReadFromParcel(Parcel in);
- private static native void nativeWriteToParcel(int ptr, Parcel out);
- private static native void nativeDispose(int ptr);
+ private static native long nativeReadFromParcel(Parcel in);
+ private static native void nativeWriteToParcel(long ptr, Parcel out);
+ private static native void nativeDispose(long ptr);
- private static native char nativeGetCharacter(int ptr, int keyCode, int metaState);
- private static native boolean nativeGetFallbackAction(int ptr, int keyCode, int metaState,
+ private static native char nativeGetCharacter(long ptr, int keyCode, int metaState);
+ private static native boolean nativeGetFallbackAction(long ptr, int keyCode, int metaState,
FallbackAction outFallbackAction);
- private static native char nativeGetNumber(int ptr, int keyCode);
- private static native char nativeGetMatch(int ptr, int keyCode, char[] chars, int metaState);
- private static native char nativeGetDisplayLabel(int ptr, int keyCode);
- private static native int nativeGetKeyboardType(int ptr);
- private static native KeyEvent[] nativeGetEvents(int ptr, char[] chars);
+ private static native char nativeGetNumber(long ptr, int keyCode);
+ private static native char nativeGetMatch(long ptr, int keyCode, char[] chars, int metaState);
+ private static native char nativeGetDisplayLabel(long ptr, int keyCode);
+ private static native int nativeGetKeyboardType(long ptr);
+ private static native KeyEvent[] nativeGetEvents(long ptr, char[] chars);
private KeyCharacterMap(Parcel in) {
if (in == null) {
@@ -308,7 +308,7 @@ public class KeyCharacterMap implements Parcelable {
}
// Called from native
- private KeyCharacterMap(int ptr) {
+ private KeyCharacterMap(long ptr) {
mPtr = ptr;
}
diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java
index 5a5fc1021d2c..6a6c1271a823 100644
--- a/core/java/android/view/KeyEvent.java
+++ b/core/java/android/view/KeyEvent.java
@@ -629,11 +629,19 @@ public class KeyEvent extends InputEvent implements Parcelable {
/** Key code constant: Brightness Up key.
* Adjusts the screen brightness up. */
public static final int KEYCODE_BRIGHTNESS_UP = 221;
- /** Key code constant: Audio Track key
+ /** Key code constant: Audio Track key.
* Switches the audio tracks. */
public static final int KEYCODE_MEDIA_AUDIO_TRACK = 222;
+ /** Key code constant: Sleep key.
+ * Puts the device to sleep. Behaves somewhat like {@link #KEYCODE_POWER} but it
+ * has no effect if the device is already asleep. */
+ public static final int KEYCODE_SLEEP = 223;
+ /** Key code constant: Wakeup key.
+ * Wakes up the device. Behaves somewhat like {@link #KEYCODE_POWER} but it
+ * has no effect if the device is already awake. */
+ public static final int KEYCODE_WAKEUP = 224;
- private static final int LAST_KEYCODE = KEYCODE_MEDIA_AUDIO_TRACK;
+ private static final int LAST_KEYCODE = KEYCODE_WAKEUP;
// NOTE: If you add a new keycode here you must also add it to:
// isSystem()
@@ -878,6 +886,8 @@ public class KeyEvent extends InputEvent implements Parcelable {
names.append(KEYCODE_BRIGHTNESS_DOWN, "KEYCODE_BRIGHTNESS_DOWN");
names.append(KEYCODE_BRIGHTNESS_UP, "KEYCODE_BRIGHTNESS_UP");
names.append(KEYCODE_MEDIA_AUDIO_TRACK, "KEYCODE_MEDIA_AUDIO_TRACK");
+ names.append(KEYCODE_SLEEP, "KEYCODE_SLEEP");
+ names.append(KEYCODE_WAKEUP, "KEYCODE_WAKEUP");
};
// Symbolic names of all metakeys in bit order from least significant to most significant.
diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java
index db577f3627cf..ddce3ceef753 100644
--- a/core/java/android/view/MotionEvent.java
+++ b/core/java/android/view/MotionEvent.java
@@ -1311,63 +1311,63 @@ public final class MotionEvent extends InputEvent implements Parcelable {
}
// Pointer to the native MotionEvent object that contains the actual data.
- private int mNativePtr;
+ private long mNativePtr;
private MotionEvent mNext;
- private static native int nativeInitialize(int nativePtr,
+ private static native long nativeInitialize(long nativePtr,
int deviceId, int source, int action, int flags, int edgeFlags,
int metaState, int buttonState,
float xOffset, float yOffset, float xPrecision, float yPrecision,
long downTimeNanos, long eventTimeNanos,
int pointerCount, PointerProperties[] pointerIds, PointerCoords[] pointerCoords);
- private static native int nativeCopy(int destNativePtr, int sourceNativePtr,
+ private static native long nativeCopy(long destNativePtr, long sourceNativePtr,
boolean keepHistory);
- private static native void nativeDispose(int nativePtr);
- private static native void nativeAddBatch(int nativePtr, long eventTimeNanos,
+ private static native void nativeDispose(long nativePtr);
+ private static native void nativeAddBatch(long nativePtr, long eventTimeNanos,
PointerCoords[] pointerCoords, int metaState);
- private static native int nativeGetDeviceId(int nativePtr);
- private static native int nativeGetSource(int nativePtr);
- private static native int nativeSetSource(int nativePtr, int source);
- private static native int nativeGetAction(int nativePtr);
- private static native void nativeSetAction(int nativePtr, int action);
- private static native boolean nativeIsTouchEvent(int nativePtr);
- private static native int nativeGetFlags(int nativePtr);
- private static native void nativeSetFlags(int nativePtr, int flags);
- private static native int nativeGetEdgeFlags(int nativePtr);
- private static native void nativeSetEdgeFlags(int nativePtr, int action);
- private static native int nativeGetMetaState(int nativePtr);
- private static native int nativeGetButtonState(int nativePtr);
- private static native void nativeOffsetLocation(int nativePtr, float deltaX, float deltaY);
- private static native float nativeGetXOffset(int nativePtr);
- private static native float nativeGetYOffset(int nativePtr);
- private static native float nativeGetXPrecision(int nativePtr);
- private static native float nativeGetYPrecision(int nativePtr);
- private static native long nativeGetDownTimeNanos(int nativePtr);
- private static native void nativeSetDownTimeNanos(int nativePtr, long downTime);
-
- private static native int nativeGetPointerCount(int nativePtr);
- private static native int nativeGetPointerId(int nativePtr, int pointerIndex);
- private static native int nativeGetToolType(int nativePtr, int pointerIndex);
- private static native int nativeFindPointerIndex(int nativePtr, int pointerId);
-
- private static native int nativeGetHistorySize(int nativePtr);
- private static native long nativeGetEventTimeNanos(int nativePtr, int historyPos);
- private static native float nativeGetRawAxisValue(int nativePtr,
+ private static native int nativeGetDeviceId(long nativePtr);
+ private static native int nativeGetSource(long nativePtr);
+ private static native int nativeSetSource(long nativePtr, int source);
+ private static native int nativeGetAction(long nativePtr);
+ private static native void nativeSetAction(long nativePtr, int action);
+ private static native boolean nativeIsTouchEvent(long nativePtr);
+ private static native int nativeGetFlags(long nativePtr);
+ private static native void nativeSetFlags(long nativePtr, int flags);
+ private static native int nativeGetEdgeFlags(long nativePtr);
+ private static native void nativeSetEdgeFlags(long nativePtr, int action);
+ private static native int nativeGetMetaState(long nativePtr);
+ private static native int nativeGetButtonState(long nativePtr);
+ private static native void nativeOffsetLocation(long nativePtr, float deltaX, float deltaY);
+ private static native float nativeGetXOffset(long nativePtr);
+ private static native float nativeGetYOffset(long nativePtr);
+ private static native float nativeGetXPrecision(long nativePtr);
+ private static native float nativeGetYPrecision(long nativePtr);
+ private static native long nativeGetDownTimeNanos(long nativePtr);
+ private static native void nativeSetDownTimeNanos(long nativePtr, long downTime);
+
+ private static native int nativeGetPointerCount(long nativePtr);
+ private static native int nativeGetPointerId(long nativePtr, int pointerIndex);
+ private static native int nativeGetToolType(long nativePtr, int pointerIndex);
+ private static native int nativeFindPointerIndex(long nativePtr, int pointerId);
+
+ private static native int nativeGetHistorySize(long nativePtr);
+ private static native long nativeGetEventTimeNanos(long nativePtr, int historyPos);
+ private static native float nativeGetRawAxisValue(long nativePtr,
int axis, int pointerIndex, int historyPos);
- private static native float nativeGetAxisValue(int nativePtr,
+ private static native float nativeGetAxisValue(long nativePtr,
int axis, int pointerIndex, int historyPos);
- private static native void nativeGetPointerCoords(int nativePtr,
+ private static native void nativeGetPointerCoords(long nativePtr,
int pointerIndex, int historyPos, PointerCoords outPointerCoords);
- private static native void nativeGetPointerProperties(int nativePtr,
+ private static native void nativeGetPointerProperties(long nativePtr,
int pointerIndex, PointerProperties outPointerProperties);
- private static native void nativeScale(int nativePtr, float scale);
- private static native void nativeTransform(int nativePtr, Matrix matrix);
+ private static native void nativeScale(long nativePtr, float scale);
+ private static native void nativeTransform(long nativePtr, Matrix matrix);
- private static native int nativeReadFromParcel(int nativePtr, Parcel parcel);
- private static native void nativeWriteToParcel(int nativePtr, Parcel parcel);
+ private static native long nativeReadFromParcel(long nativePtr, Parcel parcel);
+ private static native void nativeWriteToParcel(long nativePtr, Parcel parcel);
private MotionEvent() {
}
diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java
index 1bfda2d9a45a..91645e73c071 100644
--- a/core/java/android/view/Surface.java
+++ b/core/java/android/view/Surface.java
@@ -32,19 +32,19 @@ import dalvik.system.CloseGuard;
public class Surface implements Parcelable {
private static final String TAG = "Surface";
- private static native int nativeCreateFromSurfaceTexture(SurfaceTexture surfaceTexture)
+ private static native long nativeCreateFromSurfaceTexture(SurfaceTexture surfaceTexture)
throws OutOfResourcesException;
- private static native int nativeCreateFromSurfaceControl(int surfaceControlNativeObject);
+ private static native long nativeCreateFromSurfaceControl(long surfaceControlNativeObject);
- private static native int nativeLockCanvas(int nativeObject, Canvas canvas, Rect dirty)
+ private static native long nativeLockCanvas(long nativeObject, Canvas canvas, Rect dirty)
throws OutOfResourcesException;
- private static native void nativeUnlockCanvasAndPost(int nativeObject, Canvas canvas);
+ private static native void nativeUnlockCanvasAndPost(long nativeObject, Canvas canvas);
- private static native void nativeRelease(int nativeObject);
- private static native boolean nativeIsValid(int nativeObject);
- private static native boolean nativeIsConsumerRunningBehind(int nativeObject);
- private static native int nativeReadFromParcel(int nativeObject, Parcel source);
- private static native void nativeWriteToParcel(int nativeObject, Parcel dest);
+ private static native void nativeRelease(long nativeObject);
+ private static native boolean nativeIsValid(long nativeObject);
+ private static native boolean nativeIsConsumerRunningBehind(long nativeObject);
+ private static native long nativeReadFromParcel(long nativeObject, Parcel source);
+ private static native void nativeWriteToParcel(long nativeObject, Parcel dest);
public static final Parcelable.Creator<Surface> CREATOR =
new Parcelable.Creator<Surface>() {
@@ -71,8 +71,8 @@ public class Surface implements Parcelable {
// Guarded state.
final Object mLock = new Object(); // protects the native state
private String mName;
- int mNativeObject; // package scope only for SurfaceControl access
- private int mLockedObject;
+ long mNativeObject; // package scope only for SurfaceControl access
+ private long mLockedObject;
private int mGenerationId; // incremented each time mNativeObject changes
private final Canvas mCanvas = new CompatibleCanvas();
@@ -130,7 +130,7 @@ public class Surface implements Parcelable {
}
/* called from android_view_Surface_createFromIGraphicBufferProducer() */
- private Surface(int nativeObject) {
+ private Surface(long nativeObject) {
synchronized (mLock) {
setNativeObjectLocked(nativeObject);
}
@@ -261,8 +261,8 @@ public class Surface implements Parcelable {
checkNotReleasedLocked();
if (mNativeObject != mLockedObject) {
Log.w(TAG, "WARNING: Surface's mNativeObject (0x" +
- Integer.toHexString(mNativeObject) + ") != mLockedObject (0x" +
- Integer.toHexString(mLockedObject) +")");
+ Long.toHexString(mNativeObject) + ") != mLockedObject (0x" +
+ Long.toHexString(mLockedObject) +")");
}
if (mLockedObject == 0) {
throw new IllegalStateException("Surface was not locked");
@@ -307,12 +307,12 @@ public class Surface implements Parcelable {
throw new IllegalArgumentException("other must not be null");
}
- int surfaceControlPtr = other.mNativeObject;
+ long surfaceControlPtr = other.mNativeObject;
if (surfaceControlPtr == 0) {
throw new NullPointerException(
"SurfaceControl native object is null. Are you using a released SurfaceControl?");
}
- int newNativeObject = nativeCreateFromSurfaceControl(surfaceControlPtr);
+ long newNativeObject = nativeCreateFromSurfaceControl(surfaceControlPtr);
synchronized (mLock) {
if (mNativeObject != 0) {
@@ -334,7 +334,7 @@ public class Surface implements Parcelable {
throw new IllegalArgumentException("other must not be null");
}
if (other != this) {
- final int newPtr;
+ final long newPtr;
synchronized (other.mLock) {
newPtr = other.mNativeObject;
other.setNativeObjectLocked(0);
@@ -391,7 +391,7 @@ public class Surface implements Parcelable {
}
}
- private void setNativeObjectLocked(int ptr) {
+ private void setNativeObjectLocked(long ptr) {
if (mNativeObject != ptr) {
if (mNativeObject == 0 && ptr != 0) {
mCloseGuard.open("release");
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index b22d5cf32af5..eea58843a7f6 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -33,11 +33,11 @@ import android.view.Surface.OutOfResourcesException;
public class SurfaceControl {
private static final String TAG = "SurfaceControl";
- private static native int nativeCreate(SurfaceSession session, String name,
+ private static native long nativeCreate(SurfaceSession session, String name,
int w, int h, int format, int flags)
throws OutOfResourcesException;
- private static native void nativeRelease(int nativeObject);
- private static native void nativeDestroy(int nativeObject);
+ private static native void nativeRelease(long nativeObject);
+ private static native void nativeDestroy(long nativeObject);
private static native Bitmap nativeScreenshot(IBinder displayToken,
int width, int height, int minLayer, int maxLayer, boolean allLayers);
@@ -48,21 +48,21 @@ public class SurfaceControl {
private static native void nativeCloseTransaction();
private static native void nativeSetAnimationTransaction();
- private static native void nativeSetLayer(int nativeObject, int zorder);
- private static native void nativeSetPosition(int nativeObject, float x, float y);
- private static native void nativeSetSize(int nativeObject, int w, int h);
- private static native void nativeSetTransparentRegionHint(int nativeObject, Region region);
- private static native void nativeSetAlpha(int nativeObject, float alpha);
- private static native void nativeSetMatrix(int nativeObject, float dsdx, float dtdx, float dsdy, float dtdy);
- private static native void nativeSetFlags(int nativeObject, int flags, int mask);
- private static native void nativeSetWindowCrop(int nativeObject, int l, int t, int r, int b);
- private static native void nativeSetLayerStack(int nativeObject, int layerStack);
+ private static native void nativeSetLayer(long nativeObject, int zorder);
+ private static native void nativeSetPosition(long nativeObject, float x, float y);
+ private static native void nativeSetSize(long nativeObject, int w, int h);
+ private static native void nativeSetTransparentRegionHint(long nativeObject, Region region);
+ private static native void nativeSetAlpha(long nativeObject, float alpha);
+ private static native void nativeSetMatrix(long nativeObject, float dsdx, float dtdx, float dsdy, float dtdy);
+ private static native void nativeSetFlags(long nativeObject, int flags, int mask);
+ private static native void nativeSetWindowCrop(long nativeObject, int l, int t, int r, int b);
+ private static native void nativeSetLayerStack(long nativeObject, int layerStack);
private static native IBinder nativeGetBuiltInDisplay(int physicalDisplayId);
private static native IBinder nativeCreateDisplay(String name, boolean secure);
private static native void nativeDestroyDisplay(IBinder displayToken);
private static native void nativeSetDisplaySurface(
- IBinder displayToken, int nativeSurfaceObject);
+ IBinder displayToken, long nativeSurfaceObject);
private static native void nativeSetDisplayLayerStack(
IBinder displayToken, int layerStack);
private static native void nativeSetDisplayProjection(
@@ -77,10 +77,7 @@ public class SurfaceControl {
private final CloseGuard mCloseGuard = CloseGuard.get();
private final String mName;
- int mNativeObject; // package visibility only for Surface.java access
-
- private static final boolean HEADLESS = "1".equals(
- SystemProperties.get("ro.config.headless", "0"));
+ long mNativeObject; // package visibility only for Surface.java access
/* flags used in constructor (keep in sync with ISurfaceComposerClient.h) */
@@ -106,18 +103,18 @@ public class SurfaceControl {
* surfaces are pre-multiplied, which means that each color component is
* already multiplied by its alpha value. In this case the blending
* equation used is:
- *
- * DEST = SRC + DEST * (1-SRC_ALPHA)
- *
+ * <p>
+ * <code>DEST = SRC + DEST * (1-SRC_ALPHA)</code>
+ * <p>
* By contrast, non pre-multiplied surfaces use the following equation:
- *
- * DEST = SRC * SRC_ALPHA * DEST * (1-SRC_ALPHA)
- *
+ * <p>
+ * <code>DEST = SRC * SRC_ALPHA * DEST * (1-SRC_ALPHA)</code>
+ * <p>
* pre-multiplied surfaces must always be used if transparent pixels are
* composited on top of each-other into the surface. A pre-multiplied
* surface can never lower the value of the alpha component of a given
* pixel.
- *
+ * <p>
* In some rare situations, a non pre-multiplied surface is preferable.
*
*/
@@ -128,7 +125,17 @@ public class SurfaceControl {
* even if its pixel format is set to translucent. This can be useful if an
* application needs full RGBA 8888 support for instance but will
* still draw every pixel opaque.
- *
+ * <p>
+ * This flag is ignored if setAlpha() is used to make the surface non-opaque.
+ * Combined effects are (assuming a buffer format with an alpha channel):
+ * <ul>
+ * <li>OPAQUE + alpha(1.0) == opaque composition
+ * <li>OPAQUE + alpha(0.x) == blended composition
+ * <li>!OPAQUE + alpha(1.0) == blended composition
+ * <li>!OPAQUE + alpha(0.x) == blended composition
+ * </ul>
+ * If the underlying buffer lacks an alpha channel, the OPAQUE flag is effectively
+ * set automatically.
*/
public static final int OPAQUE = 0x00000400;
@@ -169,9 +176,16 @@ public class SurfaceControl {
/**
* Surface flag: Hide the surface.
* Equivalent to calling hide().
+ * Updates the value set during Surface creation (see {@link #HIDDEN}).
*/
public static final int SURFACE_HIDDEN = 0x01;
+ /**
+ * Surface flag: composite without blending when possible.
+ * Updates the value set during Surface creation (see {@link #OPAQUE}).
+ */
+ public static final int SURFACE_OPAQUE = 0x02;
+
/* built-in physical display ids (keep in sync with ISurfaceComposer.h)
* these are different from the logical display ids used elsewhere in the framework */
@@ -192,14 +206,14 @@ public class SurfaceControl {
/**
* Create a surface with a name.
- *
+ * <p>
* The surface creation flags specify what kind of surface to create and
* certain options such as whether the surface can be assumed to be opaque
* and whether it should be initially hidden. Surfaces should always be
* created with the {@link #HIDDEN} flag set to ensure that they are not
* made visible prematurely before all of the surface's properties have been
* configured.
- *
+ * <p>
* Good practice is to first create the surface with the {@link #HIDDEN} flag
* specified, open a transaction, set the surface layer, layer stack, alpha,
* and position, call {@link #show} if appropriate, and close the transaction.
@@ -232,8 +246,6 @@ public class SurfaceControl {
new Throwable());
}
- checkHeadless();
-
mName = name;
mNativeObject = nativeCreate(session, name, w, h, format, flags);
if (mNativeObject == 0) {
@@ -344,6 +356,10 @@ public class SurfaceControl {
nativeSetTransparentRegionHint(mNativeObject, region);
}
+ /**
+ * Sets an alpha value for the entire Surface. This value is combined with the
+ * per-pixel alpha. It may be used with opaque Surfaces.
+ */
public void setAlpha(float alpha) {
checkNotReleased();
nativeSetAlpha(mNativeObject, alpha);
@@ -354,6 +370,13 @@ public class SurfaceControl {
nativeSetMatrix(mNativeObject, dsdx, dtdx, dsdy, dtdy);
}
+ /**
+ * Sets and clears flags, such as {@link #SURFACE_HIDDEN}. The new value will be:
+ * <p>
+ * <code>newFlags = (oldFlags & ~mask) | (flags & mask)</code>
+ * <p>
+ * Note this does not take the same set of flags as the constructor.
+ */
public void setFlags(int flags, int mask) {
checkNotReleased();
nativeSetFlags(mNativeObject, flags, mask);
@@ -374,6 +397,19 @@ public class SurfaceControl {
nativeSetLayerStack(mNativeObject, layerStack);
}
+ /**
+ * Sets the opacity of the surface. Setting the flag is equivalent to creating the
+ * Surface with the {@link #OPAQUE} flag.
+ */
+ public void setOpaque(boolean isOpaque) {
+ checkNotReleased();
+ if (isOpaque) {
+ nativeSetFlags(mNativeObject, SURFACE_OPAQUE, SURFACE_OPAQUE);
+ } else {
+ nativeSetFlags(mNativeObject, 0, SURFACE_OPAQUE);
+ }
+ }
+
/*
* set display parameters.
* needs to be inside open/closeTransaction block
@@ -619,10 +655,4 @@ public class SurfaceControl {
}
nativeScreenshot(display, consumer, width, height, minLayer, maxLayer, allLayers);
}
-
- private static void checkHeadless() {
- if (HEADLESS) {
- throw new UnsupportedOperationException("Device is headless");
- }
- }
}
diff --git a/core/java/android/view/TextureView.java b/core/java/android/view/TextureView.java
index 47f7628f8e88..b78af2e4c45b 100644
--- a/core/java/android/view/TextureView.java
+++ b/core/java/android/view/TextureView.java
@@ -127,7 +127,7 @@ public class TextureView extends View {
private final Object[] mNativeWindowLock = new Object[0];
// Used from native code, do not write!
@SuppressWarnings({"UnusedDeclaration"})
- private int mNativeWindow;
+ private long mNativeWindow;
/**
* Creates a new TextureView.
@@ -816,6 +816,6 @@ public class TextureView extends View {
private native void nCreateNativeWindow(SurfaceTexture surface);
private native void nDestroyNativeWindow();
- private static native boolean nLockCanvas(int nativeWindow, Canvas canvas, Rect dirty);
- private static native void nUnlockCanvasAndPost(int nativeWindow, Canvas canvas);
+ private static native boolean nLockCanvas(long nativeWindow, Canvas canvas, Rect dirty);
+ private static native void nUnlockCanvasAndPost(long nativeWindow, Canvas canvas);
}
diff --git a/core/java/android/view/VelocityTracker.java b/core/java/android/view/VelocityTracker.java
index eb81f72ea9c9..22b5ccacf43a 100644
--- a/core/java/android/view/VelocityTracker.java
+++ b/core/java/android/view/VelocityTracker.java
@@ -34,17 +34,17 @@ public final class VelocityTracker {
private static final int ACTIVE_POINTER_ID = -1;
- private int mPtr;
+ private long mPtr;
private final String mStrategy;
- private static native int nativeInitialize(String strategy);
- private static native void nativeDispose(int ptr);
- private static native void nativeClear(int ptr);
- private static native void nativeAddMovement(int ptr, MotionEvent event);
- private static native void nativeComputeCurrentVelocity(int ptr, int units, float maxVelocity);
- private static native float nativeGetXVelocity(int ptr, int id);
- private static native float nativeGetYVelocity(int ptr, int id);
- private static native boolean nativeGetEstimator(int ptr, int id, Estimator outEstimator);
+ private static native long nativeInitialize(String strategy);
+ private static native void nativeDispose(long ptr);
+ private static native void nativeClear(long ptr);
+ private static native void nativeAddMovement(long ptr, MotionEvent event);
+ private static native void nativeComputeCurrentVelocity(long ptr, int units, float maxVelocity);
+ private static native float nativeGetXVelocity(long ptr, int id);
+ private static native float nativeGetYVelocity(long ptr, int id);
+ private static native boolean nativeGetEstimator(long ptr, int id, Estimator outEstimator);
/**
* Retrieve a new VelocityTracker object to watch the velocity of a
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index b0bae463112d..9b47cbe24b81 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -16499,7 +16499,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
} else {
long value = mMeasureCache.valueAt(cacheIndex);
// Casting a long to int drops the high 32 bits, no mask needed
- setMeasuredDimension((int) (value >> 32), (int) value);
+ setMeasuredDimensionRaw((int) (value >> 32), (int) value);
mPrivateFlags3 |= PFLAG3_MEASURE_NEEDED_BEFORE_LAYOUT;
}
@@ -16594,6 +16594,22 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
measuredWidth += optical ? opticalWidth : -opticalWidth;
measuredHeight += optical ? opticalHeight : -opticalHeight;
}
+ setMeasuredDimensionRaw(measuredWidth, measuredHeight);
+ }
+
+ /**
+ * Sets the measured dimension without extra processing for things like optical bounds.
+ * Useful for reapplying consistent values that have already been cooked with adjustments
+ * for optical bounds, etc. such as those from the measurement cache.
+ *
+ * @param measuredWidth The measured width of this view. May be a complex
+ * bit mask as defined by {@link #MEASURED_SIZE_MASK} and
+ * {@link #MEASURED_STATE_TOO_SMALL}.
+ * @param measuredHeight The measured height of this view. May be a complex
+ * bit mask as defined by {@link #MEASURED_SIZE_MASK} and
+ * {@link #MEASURED_STATE_TOO_SMALL}.
+ */
+ private void setMeasuredDimensionRaw(int measuredWidth, int measuredHeight) {
mMeasuredWidth = measuredWidth;
mMeasuredHeight = measuredHeight;
@@ -18361,7 +18377,18 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
static int adjust(int measureSpec, int delta) {
- return makeMeasureSpec(getSize(measureSpec + delta), getMode(measureSpec));
+ final int mode = getMode(measureSpec);
+ if (mode == UNSPECIFIED) {
+ // No need to adjust size for UNSPECIFIED mode.
+ return makeMeasureSpec(0, UNSPECIFIED);
+ }
+ int size = getSize(measureSpec) + delta;
+ if (size < 0) {
+ Log.e(VIEW_LOG_TAG, "MeasureSpec.adjust: new size would be negative! (" + size +
+ ") spec: " + toString(measureSpec) + " delta: " + delta);
+ size = 0;
+ }
+ return makeMeasureSpec(size, mode);
}
/**
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 94142376b263..5763e72eb062 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -463,13 +463,13 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
public ViewGroup(Context context, AttributeSet attrs) {
super(context, attrs);
initViewGroup();
- initFromAttributes(context, attrs);
+ initFromAttributes(context, attrs, 0);
}
public ViewGroup(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initViewGroup();
- initFromAttributes(context, attrs);
+ initFromAttributes(context, attrs, defStyle);
}
private boolean debugDraw() {
@@ -499,9 +499,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
mPersistentDrawingCache = PERSISTENT_SCROLLING_CACHE;
}
- private void initFromAttributes(Context context, AttributeSet attrs) {
- TypedArray a = context.obtainStyledAttributes(attrs,
- R.styleable.ViewGroup);
+ private void initFromAttributes(Context context, AttributeSet attrs, int defStyle) {
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ViewGroup, defStyle, 0);
final int N = a.getIndexCount();
for (int i = 0; i < N; i++) {
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index b3a069935d99..c450f3c37e9a 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -91,10 +91,15 @@ public abstract class Window {
public static final int FEATURE_ACTION_MODE_OVERLAY = 10;
/**
+ * Flag for requesting a decoration-free window that is dismissed by swiping from the left.
+ */
+ public static final int FEATURE_SWIPE_TO_DISMISS = 11;
+
+ /**
* Max value used as a feature ID
* @hide
*/
- public static final int FEATURE_MAX = FEATURE_ACTION_MODE_OVERLAY;
+ public static final int FEATURE_MAX = FEATURE_SWIPE_TO_DISMISS;
/** Flag for setting the progress bar's visibility to VISIBLE */
public static final int PROGRESS_VISIBILITY_ON = -1;
@@ -385,6 +390,12 @@ public abstract class Window {
* @param mode The mode that was just finished.
*/
public void onActionModeFinished(ActionMode mode);
+
+ /**
+ * Called when a window is dismissed. This informs the callback that the
+ * window is gone, and it should finish itself.
+ */
+ public void onWindowDismissed();
}
public Window(Context context) {
diff --git a/core/java/android/view/WindowManagerInternal.java b/core/java/android/view/WindowManagerInternal.java
new file mode 100644
index 000000000000..a1bd4bd1f7ca
--- /dev/null
+++ b/core/java/android/view/WindowManagerInternal.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.view;
+
+import android.hardware.display.DisplayManagerInternal;
+
+/**
+ * Window manager local system service interface.
+ *
+ * @hide Only for use within the system server.
+ */
+public abstract class WindowManagerInternal {
+ /**
+ * Request that the window manager call
+ * {@link DisplayManagerInternal#performTraversalInTransactionFromWindowManager}
+ * within a surface transaction at a later time.
+ */
+ public abstract void requestTraversalFromDisplayManager();
+} \ No newline at end of file
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java
index c5a1b86c0635..74dda7767095 100644
--- a/core/java/android/view/WindowManagerPolicy.java
+++ b/core/java/android/view/WindowManagerPolicy.java
@@ -115,20 +115,6 @@ public interface WindowManagerPolicy {
public final static int ACTION_PASS_TO_USER = 0x00000001;
/**
- * This key event should wake the device.
- * To be returned from {@link #interceptKeyBeforeQueueing}.
- * Do not return this and {@link #ACTION_GO_TO_SLEEP} or {@link #ACTION_PASS_TO_USER}.
- */
- public final static int ACTION_WAKE_UP = 0x00000002;
-
- /**
- * This key event should put the device to sleep (and engage keyguard if necessary)
- * To be returned from {@link #interceptKeyBeforeQueueing}.
- * Do not return this and {@link #ACTION_WAKE_UP} or {@link #ACTION_PASS_TO_USER}.
- */
- public final static int ACTION_GO_TO_SLEEP = 0x00000004;
-
- /**
* Interface to the Window Manager state associated with a particular
* window. You can hold on to an instance of this interface from the call
* to prepareAddWindow() until removeWindow().
@@ -751,8 +737,7 @@ public interface WindowManagerPolicy {
* @param policyFlags The policy flags associated with the key.
* @param isScreenOn True if the screen is already on
*
- * @return The bitwise or of the {@link #ACTION_PASS_TO_USER},
- * {@link #ACTION_WAKE_UP} and {@link #ACTION_GO_TO_SLEEP} flags.
+ * @return Actions flags: may be {@link #ACTION_PASS_TO_USER}.
*/
public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags, boolean isScreenOn);
@@ -765,10 +750,9 @@ public interface WindowManagerPolicy {
* because it's the most fragile.
* @param policyFlags The policy flags associated with the motion.
*
- * @return The bitwise or of the {@link #ACTION_PASS_TO_USER},
- * {@link #ACTION_WAKE_UP} and {@link #ACTION_GO_TO_SLEEP} flags.
+ * @return Actions flags: may be {@link #ACTION_PASS_TO_USER}.
*/
- public int interceptMotionBeforeQueueingWhenScreenOff(int policyFlags);
+ public int interceptMotionBeforeQueueingWhenScreenOff(long whenNanos, int policyFlags);
/**
* Called from the input dispatcher thread before a key is dispatched to a window.
diff --git a/core/java/android/view/accessibility/AccessibilityManager.java b/core/java/android/view/accessibility/AccessibilityManager.java
index 00f4adb911bc..879e58f494c0 100644
--- a/core/java/android/view/accessibility/AccessibilityManager.java
+++ b/core/java/android/view/accessibility/AccessibilityManager.java
@@ -177,7 +177,8 @@ public final class AccessibilityManager {
userId = UserHandle.myUserId();
}
IBinder iBinder = ServiceManager.getService(Context.ACCESSIBILITY_SERVICE);
- IAccessibilityManager service = IAccessibilityManager.Stub.asInterface(iBinder);
+ IAccessibilityManager service = iBinder == null
+ ? null : IAccessibilityManager.Stub.asInterface(iBinder);
sInstance = new AccessibilityManager(context, service, userId);
}
}
@@ -197,10 +198,14 @@ public final class AccessibilityManager {
mHandler = new MyHandler(context.getMainLooper());
mService = service;
mUserId = userId;
-
+ if (mService == null) {
+ mIsEnabled = false;
+ }
try {
- final int stateFlags = mService.addClient(mClient, userId);
- setState(stateFlags);
+ if (mService != null) {
+ final int stateFlags = mService.addClient(mClient, userId);
+ setState(stateFlags);
+ }
} catch (RemoteException re) {
Log.e(LOG_TAG, "AccessibilityManagerService is dead", re);
}
@@ -322,14 +327,16 @@ public final class AccessibilityManager {
public List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList() {
List<AccessibilityServiceInfo> services = null;
try {
- services = mService.getInstalledAccessibilityServiceList(mUserId);
- if (DEBUG) {
- Log.i(LOG_TAG, "Installed AccessibilityServices " + services);
+ if (mService != null) {
+ services = mService.getInstalledAccessibilityServiceList(mUserId);
+ if (DEBUG) {
+ Log.i(LOG_TAG, "Installed AccessibilityServices " + services);
+ }
}
} catch (RemoteException re) {
Log.e(LOG_TAG, "Error while obtaining the installed AccessibilityServices. ", re);
}
- return Collections.unmodifiableList(services);
+ return services != null ? Collections.unmodifiableList(services) : Collections.EMPTY_LIST;
}
/**
@@ -349,14 +356,16 @@ public final class AccessibilityManager {
int feedbackTypeFlags) {
List<AccessibilityServiceInfo> services = null;
try {
- services = mService.getEnabledAccessibilityServiceList(feedbackTypeFlags, mUserId);
- if (DEBUG) {
- Log.i(LOG_TAG, "Installed AccessibilityServices " + services);
+ if (mService != null) {
+ services = mService.getEnabledAccessibilityServiceList(feedbackTypeFlags, mUserId);
+ if (DEBUG) {
+ Log.i(LOG_TAG, "Installed AccessibilityServices " + services);
+ }
}
} catch (RemoteException re) {
Log.e(LOG_TAG, "Error while obtaining the installed AccessibilityServices. ", re);
}
- return Collections.unmodifiableList(services);
+ return services != null ? Collections.unmodifiableList(services) : Collections.EMPTY_LIST;
}
/**
@@ -466,6 +475,9 @@ public final class AccessibilityManager {
*/
public int addAccessibilityInteractionConnection(IWindow windowToken,
IAccessibilityInteractionConnection connection) {
+ if (mService == null) {
+ return View.NO_ID;
+ }
try {
return mService.addAccessibilityInteractionConnection(windowToken, connection, mUserId);
} catch (RemoteException re) {
@@ -482,7 +494,9 @@ public final class AccessibilityManager {
*/
public void removeAccessibilityInteractionConnection(IWindow windowToken) {
try {
- mService.removeAccessibilityInteractionConnection(windowToken);
+ if (mService != null) {
+ mService.removeAccessibilityInteractionConnection(windowToken);
+ }
} catch (RemoteException re) {
Log.e(LOG_TAG, "Error while removing an accessibility interaction connection. ", re);
}
diff --git a/core/java/android/widget/CompoundButton.java b/core/java/android/widget/CompoundButton.java
index 082ff3d46906..abddc9019095 100644
--- a/core/java/android/widget/CompoundButton.java
+++ b/core/java/android/widget/CompoundButton.java
@@ -363,8 +363,6 @@ public abstract class CompoundButton extends Button implements Checkable {
@Override
public Parcelable onSaveInstanceState() {
- // Force our ancestor class to save its state
- setFreezesText(true);
Parcelable superState = super.onSaveInstanceState();
SavedState ss = new SavedState(superState);
diff --git a/core/java/android/widget/CursorTreeAdapter.java b/core/java/android/widget/CursorTreeAdapter.java
index 44d16564e5ce..405e45ac3f5f 100644..100755
--- a/core/java/android/widget/CursorTreeAdapter.java
+++ b/core/java/android/widget/CursorTreeAdapter.java
@@ -497,7 +497,7 @@ public abstract class CursorTreeAdapter extends BaseExpandableListAdapter implem
@Override
public void onChange(boolean selfChange) {
- if (mAutoRequery && mCursor != null) {
+ if (mAutoRequery && mCursor != null && !mCursor.isClosed()) {
if (false) Log.v("Cursor", "Auto requerying " + mCursor +
" due to update");
mDataValid = mCursor.requery();
diff --git a/core/java/android/widget/NumberPicker.java b/core/java/android/widget/NumberPicker.java
index c0fde2e51fb7..9c6a2e35490c 100644
--- a/core/java/android/widget/NumberPicker.java
+++ b/core/java/android/widget/NumberPicker.java
@@ -427,12 +427,12 @@ public class NumberPicker extends LinearLayout {
* Flag whether to ignore move events - we ignore such when we show in IME
* to prevent the content from scrolling.
*/
- private boolean mIngonreMoveEvents;
+ private boolean mIgnoreMoveEvents;
/**
- * Flag whether to show soft input on tap.
+ * Flag whether to perform a click on tap.
*/
- private boolean mShowSoftInputOnTap;
+ private boolean mPerformClickOnTap;
/**
* The top of the top selection divider.
@@ -808,8 +808,8 @@ public class NumberPicker extends LinearLayout {
mInputText.setVisibility(View.INVISIBLE);
mLastDownOrMoveEventY = mLastDownEventY = event.getY();
mLastDownEventTime = event.getEventTime();
- mIngonreMoveEvents = false;
- mShowSoftInputOnTap = false;
+ mIgnoreMoveEvents = false;
+ mPerformClickOnTap = false;
// Handle pressed state before any state change.
if (mLastDownEventY < mTopSelectionDividerTop) {
if (mScrollState == OnScrollListener.SCROLL_STATE_IDLE) {
@@ -840,7 +840,7 @@ public class NumberPicker extends LinearLayout {
postChangeCurrentByOneFromLongPress(
true, ViewConfiguration.getLongPressTimeout());
} else {
- mShowSoftInputOnTap = true;
+ mPerformClickOnTap = true;
postBeginSoftInputOnLongPressCommand();
}
return true;
@@ -861,7 +861,7 @@ public class NumberPicker extends LinearLayout {
int action = event.getActionMasked();
switch (action) {
case MotionEvent.ACTION_MOVE: {
- if (mIngonreMoveEvents) {
+ if (mIgnoreMoveEvents) {
break;
}
float currentMoveY = event.getY();
@@ -893,9 +893,9 @@ public class NumberPicker extends LinearLayout {
int deltaMoveY = (int) Math.abs(eventY - mLastDownEventY);
long deltaTime = event.getEventTime() - mLastDownEventTime;
if (deltaMoveY <= mTouchSlop && deltaTime < ViewConfiguration.getTapTimeout()) {
- if (mShowSoftInputOnTap) {
- mShowSoftInputOnTap = false;
- showSoftInput();
+ if (mPerformClickOnTap) {
+ mPerformClickOnTap = false;
+ performClick();
} else {
int selectorIndexOffset = (eventY / mSelectorElementHeight)
- SELECTOR_MIDDLE_ITEM_INDEX;
@@ -1188,6 +1188,27 @@ public class NumberPicker extends LinearLayout {
setValueInternal(value, false);
}
+ @Override
+ public boolean performClick() {
+ if (!mHasSelectorWheel) {
+ return super.performClick();
+ } else if (!super.performClick()) {
+ showSoftInput();
+ }
+ return true;
+ }
+
+ @Override
+ public boolean performLongClick() {
+ if (!mHasSelectorWheel) {
+ return super.performLongClick();
+ } else if (!super.performLongClick()) {
+ showSoftInput();
+ mIgnoreMoveEvents = true;
+ }
+ return true;
+ }
+
/**
* Shows the soft input for its input text.
*/
@@ -2166,8 +2187,7 @@ public class NumberPicker extends LinearLayout {
@Override
public void run() {
- showSoftInput();
- mIngonreMoveEvents = true;
+ performLongClick();
}
}
@@ -2295,7 +2315,14 @@ public class NumberPicker extends LinearLayout {
}
case AccessibilityNodeInfo.ACTION_CLICK: {
if (NumberPicker.this.isEnabled()) {
- showSoftInput();
+ performClick();
+ return true;
+ }
+ return false;
+ }
+ case AccessibilityNodeInfo.ACTION_LONG_CLICK: {
+ if (NumberPicker.this.isEnabled()) {
+ performLongClick();
return true;
}
return false;
diff --git a/core/java/android/widget/SpellChecker.java b/core/java/android/widget/SpellChecker.java
index 1cda631a498a..b204dfd0c032 100644
--- a/core/java/android/widget/SpellChecker.java
+++ b/core/java/android/widget/SpellChecker.java
@@ -731,14 +731,10 @@ public class SpellChecker implements SpellCheckerSessionListener {
}
}
- if (scheduleOtherSpellCheck && wordStart <= end) {
+ if (scheduleOtherSpellCheck) {
// Update range span: start new spell check from last wordStart
setRangeSpan(editable, wordStart, end);
} else {
- if (DBG && scheduleOtherSpellCheck) {
- Log.w(TAG, "Trying to schedule spellcheck for invalid region, from "
- + wordStart + " to " + end);
- }
removeRangeSpan(editable);
}
diff --git a/core/java/android/widget/Spinner.java b/core/java/android/widget/Spinner.java
index b75d36f0039c..5cbabefd1057 100644
--- a/core/java/android/widget/Spinner.java
+++ b/core/java/android/widget/Spinner.java
@@ -952,8 +952,10 @@ public class Spinner extends AbsSpinner implements OnClickListener {
private CharSequence mPrompt;
public void dismiss() {
- mPopup.dismiss();
- mPopup = null;
+ if (mPopup != null) {
+ mPopup.dismiss();
+ mPopup = null;
+ }
}
public boolean isShowing() {
diff --git a/core/java/com/android/internal/app/ProcessStats.java b/core/java/com/android/internal/app/ProcessStats.java
index 0aad0b541252..0cad33cff6b8 100644
--- a/core/java/com/android/internal/app/ProcessStats.java
+++ b/core/java/com/android/internal/app/ProcessStats.java
@@ -1004,7 +1004,7 @@ public final class ProcessStats implements Parcelable {
for (int iproc=pkgState.mProcesses.size()-1; iproc>=0; iproc--) {
ProcessState ps = pkgState.mProcesses.valueAt(iproc);
if (ps.isInUse() || ps.mCommonProcess.isInUse()) {
- ps.resetSafely(now);
+ pkgState.mProcesses.valueAt(iproc).resetSafely(now);
} else {
pkgState.mProcesses.valueAt(iproc).makeDead();
pkgState.mProcesses.removeAt(iproc);
@@ -1013,7 +1013,7 @@ public final class ProcessStats implements Parcelable {
for (int isvc=pkgState.mServices.size()-1; isvc>=0; isvc--) {
ServiceState ss = pkgState.mServices.valueAt(isvc);
if (ss.isInUse()) {
- ss.resetSafely(now);
+ pkgState.mServices.valueAt(isvc).resetSafely(now);
} else {
pkgState.mServices.removeAt(isvc);
}
@@ -3014,7 +3014,7 @@ public final class ProcessStats implements Parcelable {
}
public boolean isInUse() {
- return mOwner != null || mRestarting;
+ return mOwner != null;
}
void add(ServiceState other) {
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 0a702ff8ddec..872861024cdd 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -26,6 +26,7 @@ import android.os.BatteryManager;
import android.os.BatteryStats;
import android.os.FileUtils;
import android.os.Handler;
+import android.os.Looper;
import android.os.Message;
import android.os.Parcel;
import android.os.ParcelFormatException;
@@ -113,6 +114,10 @@ public final class BatteryStatsImpl extends BatteryStats {
}
final class MyHandler extends Handler {
+ public MyHandler(Looper looper) {
+ super(looper, null, true);
+ }
+
@Override
public void handleMessage(Message msg) {
BatteryCallback cb = mCallback;
@@ -4487,9 +4492,9 @@ public final class BatteryStatsImpl extends BatteryStats {
}
}
- public BatteryStatsImpl(String filename) {
+ public BatteryStatsImpl(String filename, Handler handler) {
mFile = new JournaledFile(new File(filename), new File(filename + ".tmp"));
- mHandler = new MyHandler();
+ mHandler = new MyHandler(handler.getLooper());
mStartCount++;
mScreenOnTimer = new StopwatchTimer(null, -1, null, mUnpluggables);
for (int i=0; i<NUM_SCREEN_BRIGHTNESS_BINS; i++) {
@@ -4839,7 +4844,7 @@ public final class BatteryStatsImpl extends BatteryStats {
mHistoryCur.batteryStatus = (byte)status;
mHistoryCur.batteryHealth = (byte)health;
mHistoryCur.batteryPlugType = (byte)plugType;
- mHistoryCur.batteryTemperature = (char)temp;
+ mHistoryCur.batteryTemperature = (short)temp;
mHistoryCur.batteryVoltage = (char)volt;
setOnBatteryLocked(onBattery, oldStatus, level);
} else {
@@ -4862,7 +4867,7 @@ public final class BatteryStatsImpl extends BatteryStats {
}
if (temp >= (mHistoryCur.batteryTemperature+10)
|| temp <= (mHistoryCur.batteryTemperature-10)) {
- mHistoryCur.batteryTemperature = (char)temp;
+ mHistoryCur.batteryTemperature = (short)temp;
changed = true;
}
if (volt > (mHistoryCur.batteryVoltage+20)
diff --git a/core/java/com/android/internal/os/BinderInternal.java b/core/java/com/android/internal/os/BinderInternal.java
index f54a3e9ce9c3..3b0f0f4777dd 100644
--- a/core/java/com/android/internal/os/BinderInternal.java
+++ b/core/java/com/android/internal/os/BinderInternal.java
@@ -16,18 +16,11 @@
package com.android.internal.os;
-import android.os.Binder;
import android.os.IBinder;
import android.os.SystemClock;
import android.util.EventLog;
-import android.util.Log;
-import java.io.FileDescriptor;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintWriter;
import java.lang.ref.WeakReference;
-import java.lang.reflect.Modifier;
/**
* Private and debugging Binder APIs.
diff --git a/core/java/com/android/internal/os/LoggingPrintStream.java b/core/java/com/android/internal/os/LoggingPrintStream.java
index 451340b463ef..f14394ad09ce 100644
--- a/core/java/com/android/internal/os/LoggingPrintStream.java
+++ b/core/java/com/android/internal/os/LoggingPrintStream.java
@@ -293,7 +293,7 @@ abstract class LoggingPrintStream extends PrintStream {
@Override
public synchronized void println(String s) {
- if (builder.length() == 0) {
+ if (builder.length() == 0 && s != null) {
// Optimization for a simple println.
int length = s.length();
diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java/com/android/internal/os/ZygoteConnection.java
index fd7e3b0eefe1..4f3b5b3370a6 100644
--- a/core/java/com/android/internal/os/ZygoteConnection.java
+++ b/core/java/com/android/internal/os/ZygoteConnection.java
@@ -197,10 +197,14 @@ class ZygoteConnection {
try {
parsedArgs = new Arguments(args);
+ if (parsedArgs.permittedCapabilities != 0 || parsedArgs.effectiveCapabilities != 0) {
+ throw new ZygoteSecurityException("Client may not specify capabilities: " +
+ "permitted=0x" + Long.toHexString(parsedArgs.permittedCapabilities) +
+ ", effective=0x" + Long.toHexString(parsedArgs.effectiveCapabilities));
+ }
applyUidSecurityPolicy(parsedArgs, peer, peerSecurityContext);
applyRlimitSecurityPolicy(parsedArgs, peer, peerSecurityContext);
- applyCapabilitiesSecurityPolicy(parsedArgs, peer, peerSecurityContext);
applyInvokeWithSecurityPolicy(parsedArgs, peer, peerSecurityContext);
applyseInfoSecurityPolicy(parsedArgs, peer, peerSecurityContext);
@@ -703,71 +707,6 @@ class ZygoteConnection {
}
/**
- * Applies zygote security policy per bug #1042973. A root peer may
- * spawn an instance with any capabilities. All other uids may spawn
- * instances with any of the capabilities in the peer's permitted set
- * but no more.
- *
- * @param args non-null; zygote spawner arguments
- * @param peer non-null; peer credentials
- * @throws ZygoteSecurityException
- */
- private static void applyCapabilitiesSecurityPolicy(
- Arguments args, Credentials peer, String peerSecurityContext)
- throws ZygoteSecurityException {
-
- if (args.permittedCapabilities == 0
- && args.effectiveCapabilities == 0) {
- // nothing to check
- return;
- }
-
- boolean allowed = SELinux.checkSELinuxAccess(peerSecurityContext,
- peerSecurityContext,
- "zygote",
- "specifycapabilities");
- if (!allowed) {
- throw new ZygoteSecurityException(
- "Peer may not specify capabilities");
- }
-
- if (peer.getUid() == 0) {
- // root may specify anything
- return;
- }
-
- long permittedCaps;
-
- try {
- permittedCaps = ZygoteInit.capgetPermitted(peer.getPid());
- } catch (IOException ex) {
- throw new ZygoteSecurityException(
- "Error retrieving peer's capabilities.");
- }
-
- /*
- * Ensure that the client did not specify an effective set larger
- * than the permitted set. The kernel will enforce this too, but we
- * do it here to make the following check easier.
- */
- if (((~args.permittedCapabilities) & args.effectiveCapabilities) != 0) {
- throw new ZygoteSecurityException(
- "Effective capabilities cannot be superset of "
- + " permitted capabilities" );
- }
-
- /*
- * Ensure that the new permitted (and thus the new effective) set is
- * a subset of the peer process's permitted set
- */
-
- if (((~permittedCaps) & args.permittedCapabilities) != 0) {
- throw new ZygoteSecurityException(
- "Peer specified unpermitted capabilities" );
- }
- }
-
- /**
* Applies zygote security policy.
* Based on the credentials of the process issuing a zygote command:
* <ol>
@@ -803,7 +742,7 @@ class ZygoteConnection {
}
/**
- * Applies zygote security policy for SEAndroid information.
+ * Applies zygote security policy for SELinux information.
*
* @param args non-null; zygote spawner arguments
* @param peer non-null; peer credentials
@@ -822,7 +761,7 @@ class ZygoteConnection {
if (!(peerUid == 0 || peerUid == Process.SYSTEM_UID)) {
// All peers with UID other than root or SYSTEM_UID
throw new ZygoteSecurityException(
- "This UID may not specify SEAndroid info.");
+ "This UID may not specify SELinux info.");
}
boolean allowed = SELinux.checkSELinuxAccess(peerSecurityContext,
@@ -831,7 +770,7 @@ class ZygoteConnection {
"specifyseinfo");
if (!allowed) {
throw new ZygoteSecurityException(
- "Peer may not specify SEAndroid info");
+ "Peer may not specify SELinux info");
}
return;
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java
index 1548f1b041a2..9dc91164c1d8 100644
--- a/core/java/com/android/internal/os/ZygoteInit.java
+++ b/core/java/com/android/internal/os/ZygoteInit.java
@@ -495,6 +495,7 @@ public class ZygoteInit {
private static boolean startSystemServer()
throws MethodAndArgsCaller, RuntimeException {
long capabilities = posixCapabilitiesAsBits(
+ OsConstants.CAP_BLOCK_SUSPEND,
OsConstants.CAP_KILL,
OsConstants.CAP_NET_ADMIN,
OsConstants.CAP_NET_BIND_SERVICE,
@@ -728,15 +729,6 @@ public class ZygoteInit {
throws IOException;
/**
- * Retrieves the permitted capability set from another process.
- *
- * @param pid &gt;=0 process ID or 0 for this process
- * @throws IOException on error
- */
- static native long capgetPermitted(int pid)
- throws IOException;
-
- /**
* Invokes select() on the provider array of file descriptors (selecting
* for readability only). Array elements of null are ignored.
*
diff --git a/core/java/com/android/internal/util/Objects.java b/core/java/com/android/internal/util/Objects.java
deleted file mode 100644
index 2664182c5ea8..000000000000
--- a/core/java/com/android/internal/util/Objects.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.internal.util;
-
-import java.util.Arrays;
-
-/**
- * Object utility methods.
- */
-public class Objects {
-
- /**
- * Determines whether two possibly-null objects are equal. Returns:
- *
- * <ul>
- * <li>{@code true} if {@code a} and {@code b} are both null.
- * <li>{@code true} if {@code a} and {@code b} are both non-null and they are
- * equal according to {@link Object#equals(Object)}.
- * <li>{@code false} in all other situations.
- * </ul>
- *
- * <p>This assumes that any non-null objects passed to this function conform
- * to the {@code equals()} contract.
- */
- public static boolean equal(Object a, Object b) {
- return a == b || (a != null && a.equals(b));
- }
-
- /**
- * Generates a hash code for multiple values. The hash code is generated by
- * calling {@link Arrays#hashCode(Object[])}.
- *
- * <p>This is useful for implementing {@link Object#hashCode()}. For example,
- * in an object that has three properties, {@code x}, {@code y}, and
- * {@code z}, one could write:
- * <pre>
- * public int hashCode() {
- * return Objects.hashCode(getX(), getY(), getZ());
- * }</pre>
- *
- * <b>Warning</b>: When a single object is supplied, the returned hash code
- * does not equal the hash code of that object.
- */
- public static int hashCode(Object... objects) {
- return Arrays.hashCode(objects);
- }
-
-}
diff --git a/core/java/com/android/internal/util/XmlUtils.java b/core/java/com/android/internal/util/XmlUtils.java
index 0b74cf323891..b35de93ba81a 100644
--- a/core/java/com/android/internal/util/XmlUtils.java
+++ b/core/java/com/android/internal/util/XmlUtils.java
@@ -482,12 +482,13 @@ public class XmlUtils {
* @see #readThisMapXml
* #see #writeMapXml
*/
- public static final HashMap readMapXml(InputStream in)
+ @SuppressWarnings("unchecked")
+ public static final HashMap<String, ?> readMapXml(InputStream in)
throws XmlPullParserException, java.io.IOException
{
XmlPullParser parser = Xml.newPullParser();
parser.setInput(in, null);
- return (HashMap)readValueXml(parser, new String[1]);
+ return (HashMap<String, ?>) readValueXml(parser, new String[1]);
}
/**
@@ -548,22 +549,16 @@ public class XmlUtils {
*
* @see #readMapXml
*/
- public static final HashMap readThisMapXml(XmlPullParser parser, String endTag, String[] name)
- throws XmlPullParserException, java.io.IOException
+ public static final HashMap<String, ?> readThisMapXml(XmlPullParser parser, String endTag,
+ String[] name) throws XmlPullParserException, java.io.IOException
{
- HashMap map = new HashMap();
+ HashMap<String, Object> map = new HashMap<String, Object>();
int eventType = parser.getEventType();
do {
if (eventType == parser.START_TAG) {
Object val = readThisValueXml(parser, name);
- if (name[0] != null) {
- //System.out.println("Adding to map: " + name + " -> " + val);
- map.put(name[0], val);
- } else {
- throw new XmlPullParserException(
- "Map value without name attribute: " + parser.getName());
- }
+ map.put(name[0], val);
} else if (eventType == parser.END_TAG) {
if (parser.getName().equals(endTag)) {
return map;
diff --git a/core/java/com/android/internal/view/RotationPolicy.java b/core/java/com/android/internal/view/RotationPolicy.java
index 70e2bfc6fd11..6295314d201c 100644
--- a/core/java/com/android/internal/view/RotationPolicy.java
+++ b/core/java/com/android/internal/view/RotationPolicy.java
@@ -21,7 +21,6 @@ import android.content.pm.PackageManager;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.AsyncTask;
-import android.os.Build;
import android.os.Handler;
import android.os.RemoteException;
import android.os.UserHandle;
@@ -52,7 +51,9 @@ public final class RotationPolicy {
PackageManager pm = context.getPackageManager();
return pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_ACCELEROMETER)
&& pm.hasSystemFeature(PackageManager.FEATURE_SCREEN_PORTRAIT)
- && pm.hasSystemFeature(PackageManager.FEATURE_SCREEN_LANDSCAPE);
+ && pm.hasSystemFeature(PackageManager.FEATURE_SCREEN_LANDSCAPE)
+ && context.getResources().getBoolean(
+ com.android.internal.R.bool.config_supportAutoRotation);
}
/**
@@ -176,6 +177,7 @@ public final class RotationPolicy {
*/
public static abstract class RotationPolicyListener {
final ContentObserver mObserver = new ContentObserver(new Handler()) {
+ @Override
public void onChange(boolean selfChange, Uri uri) {
RotationPolicyListener.this.onChange();
}
diff --git a/core/java/com/android/internal/widget/SwipeDismissLayout.java b/core/java/com/android/internal/widget/SwipeDismissLayout.java
new file mode 100644
index 000000000000..467d42e1d326
--- /dev/null
+++ b/core/java/com/android/internal/widget/SwipeDismissLayout.java
@@ -0,0 +1,308 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.widget;
+
+import android.animation.TimeInterpolator;
+import android.content.Context;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.VelocityTracker;
+import android.view.View;
+import android.view.ViewConfiguration;
+import android.view.ViewGroup;
+import android.view.animation.AccelerateInterpolator;
+import android.view.animation.DecelerateInterpolator;
+import android.widget.FrameLayout;
+
+/**
+ * Special layout that finishes its activity when swiped away.
+ */
+public class SwipeDismissLayout extends FrameLayout {
+ private static final String TAG = "SwipeDismissLayout";
+
+ private static final float TRANSLATION_MIN_ALPHA = 0.5f;
+
+ public interface OnDismissedListener {
+ void onDismissed(SwipeDismissLayout layout);
+ }
+
+ public interface OnSwipeProgressChangedListener {
+ /**
+ * Called when the layout has been swiped and the position of the window should change.
+ *
+ * @param progress A number in [-1, 1] representing how far to the left
+ * or right the window has been swiped. Negative values are swipes
+ * left, and positives are right.
+ * @param translate A number in [-w, w], where w is the width of the
+ * layout. This is equivalent to progress * layout.getWidth().
+ */
+ void onSwipeProgressChanged(SwipeDismissLayout layout, float progress, float translate);
+
+ void onSwipeCancelled(SwipeDismissLayout layout);
+ }
+
+ // Cached ViewConfiguration and system-wide constant values
+ private int mSlop;
+ private int mMinFlingVelocity;
+ private int mMaxFlingVelocity;
+ private long mAnimationTime;
+ private TimeInterpolator mCancelInterpolator;
+ private TimeInterpolator mDismissInterpolator;
+
+ // Transient properties
+ private int mActiveTouchId;
+ private float mDownX;
+ private float mDownY;
+ private boolean mSwiping;
+ private boolean mDismissed;
+ private boolean mDiscardIntercept;
+ private VelocityTracker mVelocityTracker;
+ private float mTranslationX;
+
+ private OnDismissedListener mDismissedListener;
+ private OnSwipeProgressChangedListener mProgressListener;
+
+ public SwipeDismissLayout(Context context) {
+ super(context);
+ init(context);
+ }
+
+ public SwipeDismissLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init(context);
+ }
+
+ public SwipeDismissLayout(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ init(context);
+ }
+
+ private void init(Context context) {
+ ViewConfiguration vc = ViewConfiguration.get(getContext());
+ mSlop = vc.getScaledTouchSlop();
+ mMinFlingVelocity = vc.getScaledMinimumFlingVelocity() * 16;
+ mMaxFlingVelocity = vc.getScaledMaximumFlingVelocity();
+ mAnimationTime = getContext().getResources().getInteger(
+ android.R.integer.config_shortAnimTime);
+ mCancelInterpolator = new DecelerateInterpolator(1.5f);
+ mDismissInterpolator = new AccelerateInterpolator(1.5f);
+ }
+
+ public void setOnDismissedListener(OnDismissedListener listener) {
+ mDismissedListener = listener;
+ }
+
+ public void setOnSwipeProgressChangedListener(OnSwipeProgressChangedListener listener) {
+ mProgressListener = listener;
+ }
+
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent ev) {
+ // offset because the view is translated during swipe
+ ev.offsetLocation(mTranslationX, 0);
+
+ switch (ev.getActionMasked()) {
+ case MotionEvent.ACTION_DOWN:
+ resetMembers();
+ mDownX = ev.getRawX();
+ mDownY = ev.getRawY();
+ mActiveTouchId = ev.getPointerId(0);
+ mVelocityTracker = VelocityTracker.obtain();
+ mVelocityTracker.addMovement(ev);
+ break;
+
+ case MotionEvent.ACTION_POINTER_DOWN:
+ int actionIndex = ev.getActionIndex();
+ mActiveTouchId = ev.getPointerId(actionIndex);
+ break;
+ case MotionEvent.ACTION_POINTER_UP:
+ actionIndex = ev.getActionIndex();
+ int pointerId = ev.getPointerId(actionIndex);
+ if (pointerId == mActiveTouchId) {
+ // This was our active pointer going up. Choose a new active pointer.
+ int newActionIndex = actionIndex == 0 ? 1 : 0;
+ mActiveTouchId = ev.getPointerId(newActionIndex);
+ }
+ break;
+
+ case MotionEvent.ACTION_CANCEL:
+ case MotionEvent.ACTION_UP:
+ resetMembers();
+ break;
+
+ case MotionEvent.ACTION_MOVE:
+ if (mVelocityTracker == null || mDiscardIntercept) {
+ break;
+ }
+
+ int pointerIndex = ev.findPointerIndex(mActiveTouchId);
+ if (pointerIndex == -1) {
+ Log.e(TAG, "Invalid pointer index: ignoring.");
+ mDiscardIntercept = true;
+ break;
+ }
+ float dx = ev.getRawX() - mDownX;
+ float x = ev.getX(pointerIndex);
+ float y = ev.getY(pointerIndex);
+ if (dx != 0 && canScroll(this, false, dx, x, y)) {
+ mDiscardIntercept = true;
+ break;
+ }
+ updateSwiping(ev);
+ break;
+ }
+
+ return !mDiscardIntercept && mSwiping;
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent ev) {
+ if (mVelocityTracker == null) {
+ return super.onTouchEvent(ev);
+ }
+ switch (ev.getActionMasked()) {
+ case MotionEvent.ACTION_UP:
+ updateDismiss(ev);
+ if (mDismissed) {
+ dismiss();
+ } else if (mSwiping) {
+ cancel();
+ }
+ resetMembers();
+ break;
+
+ case MotionEvent.ACTION_CANCEL:
+ cancel();
+ resetMembers();
+ break;
+
+ case MotionEvent.ACTION_MOVE:
+ mVelocityTracker.addMovement(ev);
+ updateSwiping(ev);
+ updateDismiss(ev);
+ if (mSwiping) {
+ setProgress(ev.getRawX() - mDownX);
+ break;
+ }
+ }
+ return true;
+ }
+
+ private void setProgress(float deltaX) {
+ mTranslationX = deltaX;
+ if (mProgressListener != null) {
+ mProgressListener.onSwipeProgressChanged(this, deltaX / getWidth(), deltaX);
+ }
+ }
+
+ private void dismiss() {
+ if (mDismissedListener != null) {
+ mDismissedListener.onDismissed(this);
+ }
+ }
+
+ protected void cancel() {
+ if (mProgressListener != null) {
+ mProgressListener.onSwipeCancelled(this);
+ }
+ }
+
+ /**
+ * Resets internal members when canceling.
+ */
+ private void resetMembers() {
+ if (mVelocityTracker != null) {
+ mVelocityTracker.recycle();
+ }
+ mVelocityTracker = null;
+ mTranslationX = 0;
+ mDownX = 0;
+ mDownY = 0;
+ mSwiping = false;
+ mDismissed = false;
+ mDiscardIntercept = false;
+ }
+
+ private void updateSwiping(MotionEvent ev) {
+ if (!mSwiping) {
+ float deltaX = ev.getRawX() - mDownX;
+ float deltaY = ev.getRawY() - mDownY;
+ mSwiping = deltaX > mSlop * 2 && Math.abs(deltaY) < mSlop * 2;
+ }
+ }
+
+ private void updateDismiss(MotionEvent ev) {
+ float deltaX = ev.getRawX() - mDownX;
+ if (!mDismissed) {
+ mVelocityTracker.addMovement(ev);
+ mVelocityTracker.computeCurrentVelocity(1000);
+
+ float velocityX = mVelocityTracker.getXVelocity();
+ float absVelocityX = Math.abs(velocityX);
+ float absVelocityY = Math.abs(mVelocityTracker.getYVelocity());
+
+ if (deltaX > getWidth() / 2) {
+ mDismissed = true;
+ } else if (absVelocityX >= mMinFlingVelocity
+ && absVelocityX <= mMaxFlingVelocity
+ && absVelocityY < absVelocityX / 2
+ && velocityX > 0
+ && deltaX > 0) {
+ mDismissed = true;
+ }
+ }
+ // Check if the user tried to undo this.
+ if (mDismissed && mSwiping) {
+ // Check if the user's finger is actually back
+ if (deltaX < getWidth() / 2) {
+ mDismissed = false;
+ }
+ }
+ }
+
+ /**
+ * Tests scrollability within child views of v in the direction of dx.
+ *
+ * @param v View to test for horizontal scrollability
+ * @param checkV Whether the view v passed should itself be checked for scrollability (true),
+ * or just its children (false).
+ * @param dx Delta scrolled in pixels. Only the sign of this is used.
+ * @param x X coordinate of the active touch point
+ * @param y Y coordinate of the active touch point
+ * @return true if child views of v can be scrolled by delta of dx.
+ */
+ protected boolean canScroll(View v, boolean checkV, float dx, float x, float y) {
+ if (v instanceof ViewGroup) {
+ final ViewGroup group = (ViewGroup) v;
+ final int scrollX = v.getScrollX();
+ final int scrollY = v.getScrollY();
+ final int count = group.getChildCount();
+ for (int i = count - 1; i >= 0; i--) {
+ final View child = group.getChildAt(i);
+ if (x + scrollX >= child.getLeft() && x + scrollX < child.getRight() &&
+ y + scrollY >= child.getTop() && y + scrollY < child.getBottom() &&
+ canScroll(child, true, dx, x + scrollX - child.getLeft(),
+ y + scrollY - child.getTop())) {
+ return true;
+ }
+ }
+ }
+
+ return checkV && v.canScrollHorizontally((int) -dx);
+ }
+}
diff --git a/core/java/com/android/server/LocalServices.java b/core/java/com/android/server/LocalServices.java
new file mode 100644
index 000000000000..25dcb308b55a
--- /dev/null
+++ b/core/java/com/android/server/LocalServices.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server;
+
+import android.util.ArrayMap;
+
+/**
+ * This class is used in a similar way as ServiceManager, except the services registered here
+ * are not Binder objects and are only available in the same process.
+ *
+ * Once all services are converted to the SystemService interface, this class can be absorbed
+ * into SystemServiceManager.
+ *
+ * {@hide}
+ */
+public final class LocalServices {
+ private LocalServices() {}
+
+ private static final ArrayMap<Class<?>, Object> sLocalServiceObjects =
+ new ArrayMap<Class<?>, Object>();
+
+ /**
+ * Returns a local service instance that implements the specified interface.
+ *
+ * @param type The type of service.
+ * @return The service object.
+ */
+ @SuppressWarnings("unchecked")
+ public static <T> T getService(Class<T> type) {
+ synchronized (sLocalServiceObjects) {
+ return (T) sLocalServiceObjects.get(type);
+ }
+ }
+
+ /**
+ * Adds a service instance of the specified interface to the global registry of local services.
+ */
+ public static <T> void addService(Class<T> type, T service) {
+ synchronized (sLocalServiceObjects) {
+ if (sLocalServiceObjects.containsKey(type)) {
+ throw new IllegalStateException("Overriding service registration");
+ }
+ sLocalServiceObjects.put(type, service);
+ }
+ }
+}
diff --git a/core/java/com/android/server/SystemService.java b/core/java/com/android/server/SystemService.java
new file mode 100644
index 000000000000..e37456364530
--- /dev/null
+++ b/core/java/com/android/server/SystemService.java
@@ -0,0 +1,218 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server;
+
+import android.content.Context;
+import android.os.IBinder;
+import android.os.ServiceManager;
+
+/**
+ * The base class for services running in the system process. Override and implement
+ * the lifecycle event callback methods as needed.
+ * <p>
+ * The lifecycle of a SystemService:
+ * </p><ul>
+ * <li>The constructor is called and provided with the system {@link Context}
+ * to initialize the system service.
+ * <li>{@link #onStart()} is called to get the service running. The service should
+ * publish its binder interface at this point using
+ * {@link #publishBinderService(String, IBinder)}. It may also publish additional
+ * local interfaces that other services within the system server may use to access
+ * privileged internal functions.
+ * <li>Then {@link #onBootPhase(int)} is called as many times as there are boot phases
+ * until {@link #PHASE_BOOT_COMPLETE} is sent, which is the last boot phase. Each phase
+ * is an opportunity to do special work, like acquiring optional service dependencies,
+ * waiting to see if SafeMode is enabled, or registering with a service that gets
+ * started after this one.
+ * </ul><p>
+ * NOTE: All lifecycle methods are called from the system server's main looper thread.
+ * </p>
+ *
+ * {@hide}
+ */
+public abstract class SystemService {
+ /*
+ * Boot Phases
+ */
+ public static final int PHASE_WAIT_FOR_DEFAULT_DISPLAY = 100; // maybe should be a dependency?
+
+ /**
+ * After receiving this boot phase, services can obtain lock settings data.
+ */
+ public static final int PHASE_LOCK_SETTINGS_READY = 480;
+
+ /**
+ * After receiving this boot phase, services can safely call into core system services
+ * such as the PowerManager or PackageManager.
+ */
+ public static final int PHASE_SYSTEM_SERVICES_READY = 500;
+
+ /**
+ * After receiving this boot phase, services can broadcast Intents.
+ */
+ public static final int PHASE_ACTIVITY_MANAGER_READY = 550;
+
+ /**
+ * After receiving this boot phase, services can start/bind to third party apps.
+ * Apps will be able to make Binder calls into services at this point.
+ */
+ public static final int PHASE_THIRD_PARTY_APPS_CAN_START = 600;
+
+ /**
+ * After receiving this boot phase, services must have finished all boot-related work.
+ */
+ public static final int PHASE_BOOT_COMPLETE = 1000;
+
+ private final Context mContext;
+
+ /**
+ * Initializes the system service.
+ * <p>
+ * Subclasses must define a single argument constructor that accepts the context
+ * and passes it to super.
+ * </p>
+ *
+ * @param context The system server context.
+ */
+ public SystemService(Context context) {
+ mContext = context;
+ }
+
+ /**
+ * Gets the system context.
+ */
+ public final Context getContext() {
+ return mContext;
+ }
+
+ /**
+ * Returns true if the system is running in safe mode.
+ * TODO: we should define in which phase this becomes valid
+ */
+ public final boolean isSafeMode() {
+ return getManager().isSafeMode();
+ }
+
+ /**
+ * Called when the dependencies listed in the @Service class-annotation are available
+ * and after the chosen start phase.
+ * When this method returns, the service should be published.
+ */
+ public abstract void onStart();
+
+ /**
+ * Called on each phase of the boot process. Phases before the service's start phase
+ * (as defined in the @Service annotation) are never received.
+ *
+ * @param phase The current boot phase.
+ */
+ public void onBootPhase(int phase) {}
+
+ /**
+ * Publish the service so it is accessible to other services and apps.
+ */
+ protected final void publishBinderService(String name, IBinder service) {
+ publishBinderService(name, service, false);
+ }
+
+ /**
+ * Publish the service so it is accessible to other services and apps.
+ */
+ protected final void publishBinderService(String name, IBinder service,
+ boolean allowIsolated) {
+ ServiceManager.addService(name, service, allowIsolated);
+ }
+
+ /**
+ * Get a binder service by its name.
+ */
+ protected final IBinder getBinderService(String name) {
+ return ServiceManager.getService(name);
+ }
+
+ /**
+ * Publish the service so it is only accessible to the system process.
+ */
+ protected final <T> void publishLocalService(Class<T> type, T service) {
+ LocalServices.addService(type, service);
+ }
+
+ /**
+ * Get a local service by interface.
+ */
+ protected final <T> T getLocalService(Class<T> type) {
+ return LocalServices.getService(type);
+ }
+
+ private SystemServiceManager getManager() {
+ return LocalServices.getService(SystemServiceManager.class);
+ }
+
+// /**
+// * Called when a new user has been created. If your service deals with multiple users, this
+// * method should be overridden.
+// *
+// * @param userHandle The user that was created.
+// */
+// public void onUserCreated(int userHandle) {
+// }
+//
+// /**
+// * Called when an existing user has started a new session. If your service deals with multiple
+// * users, this method should be overridden.
+// *
+// * @param userHandle The user who started a new session.
+// */
+// public void onUserStarted(int userHandle) {
+// }
+//
+// /**
+// * Called when a background user session has entered the foreground. If your service deals with
+// * multiple users, this method should be overridden.
+// *
+// * @param userHandle The user who's session entered the foreground.
+// */
+// public void onUserForeground(int userHandle) {
+// }
+//
+// /**
+// * Called when a foreground user session has entered the background. If your service deals with
+// * multiple users, this method should be overridden;
+// *
+// * @param userHandle The user who's session entered the background.
+// */
+// public void onUserBackground(int userHandle) {
+// }
+//
+// /**
+// * Called when a user's active session has stopped. If your service deals with multiple users,
+// * this method should be overridden.
+// *
+// * @param userHandle The user who's session has stopped.
+// */
+// public void onUserStopped(int userHandle) {
+// }
+//
+// /**
+// * Called when a user has been removed from the system. If your service deals with multiple
+// * users, this method should be overridden.
+// *
+// * @param userHandle The user who has been removed.
+// */
+// public void onUserRemoved(int userHandle) {
+// }
+}
diff --git a/core/java/com/android/server/SystemServiceManager.java b/core/java/com/android/server/SystemServiceManager.java
new file mode 100644
index 000000000000..eb8df0e3ad17
--- /dev/null
+++ b/core/java/com/android/server/SystemServiceManager.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server;
+
+import android.content.Context;
+import android.util.Slog;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+
+/**
+ * Manages creating, starting, and other lifecycle events of
+ * {@link com.android.server.SystemService system services}.
+ *
+ * {@hide}
+ */
+public class SystemServiceManager {
+ private static final String TAG = "SystemServiceManager";
+
+ private final Context mContext;
+ private boolean mSafeMode;
+
+ // Services that should receive lifecycle events.
+ private final ArrayList<SystemService> mServices = new ArrayList<SystemService>();
+
+ private int mCurrentPhase = -1;
+
+ public SystemServiceManager(Context context) {
+ mContext = context;
+ }
+
+ /**
+ * Starts a service by class name.
+ *
+ * @return The service instance.
+ */
+ @SuppressWarnings("unchecked")
+ public SystemService startService(String className) throws ClassNotFoundException {
+ return startService((Class<SystemService>) Class.forName(className));
+ }
+
+ /**
+ * Creates and starts a system service. The class must be a subclass of
+ * {@link com.android.server.SystemService}.
+ *
+ * @param serviceClass A Java class that implements the SystemService interface.
+ * @return The service instance, never null.
+ * @throws RuntimeException if the service fails to start.
+ */
+ @SuppressWarnings("unchecked")
+ public <T extends SystemService> T startService(Class<T> serviceClass) {
+ final String name = serviceClass.getName();
+ Slog.i(TAG, "Starting " + name);
+
+ // Create the service.
+ if (!SystemService.class.isAssignableFrom(serviceClass)) {
+ throw new RuntimeException("Failed to create " + name
+ + ": service must extend " + SystemService.class.getName());
+ }
+ final T service;
+ try {
+ Constructor<T> constructor = serviceClass.getConstructor(Context.class);
+ service = constructor.newInstance(mContext);
+ } catch (InstantiationException ex) {
+ throw new RuntimeException("Failed to create service " + name
+ + ": service could not be instantiated", ex);
+ } catch (IllegalAccessException ex) {
+ throw new RuntimeException("Failed to create service " + name
+ + ": service must have a public constructor with a Context argument", ex);
+ } catch (NoSuchMethodException ex) {
+ throw new RuntimeException("Failed to create service " + name
+ + ": service must have a public constructor with a Context argument", ex);
+ } catch (InvocationTargetException ex) {
+ throw new RuntimeException("Failed to create service " + name
+ + ": service constructor threw an exception", ex);
+ }
+
+ // Register it.
+ mServices.add(service);
+
+ // Start it.
+ try {
+ service.onStart();
+ } catch (RuntimeException ex) {
+ throw new RuntimeException("Failed to start service " + name
+ + ": onStart threw an exception", ex);
+ }
+ return service;
+ }
+
+ /**
+ * Starts the specified boot phase for all system services that have been started up to
+ * this point.
+ *
+ * @param phase The boot phase to start.
+ */
+ public void startBootPhase(final int phase) {
+ if (phase <= mCurrentPhase) {
+ throw new IllegalArgumentException("Next phase must be larger than previous");
+ }
+ mCurrentPhase = phase;
+
+ Slog.i(TAG, "Starting phase " + mCurrentPhase);
+
+ final int serviceLen = mServices.size();
+ for (int i = 0; i < serviceLen; i++) {
+ final SystemService service = mServices.get(i);
+ try {
+ service.onBootPhase(mCurrentPhase);
+ } catch (Exception ex) {
+ throw new RuntimeException("Failed to boot service "
+ + service.getClass().getName()
+ + ": onBootPhase threw an exception during phase "
+ + mCurrentPhase, ex);
+ }
+ }
+ }
+
+ /** Sets the safe mode flag for services to query. */
+ public void setSafeMode(boolean safeMode) {
+ mSafeMode = safeMode;
+ }
+
+ /**
+ * Returns whether we are booting into safe mode.
+ * @return safe mode flag
+ */
+ public boolean isSafeMode() {
+ return mSafeMode;
+ }
+
+ /**
+ * Outputs the state of this manager to the System log.
+ */
+ public void dump() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("Current phase: ").append(mCurrentPhase).append("\n");
+ builder.append("Services:\n");
+ final int startedLen = mServices.size();
+ for (int i = 0; i < startedLen; i++) {
+ final SystemService service = mServices.get(i);
+ builder.append("\t")
+ .append(service.getClass().getSimpleName())
+ .append("\n");
+ }
+
+ Slog.e(TAG, builder.toString());
+ }
+}
diff --git a/core/java/com/android/server/net/BaseNetworkObserver.java b/core/java/com/android/server/net/BaseNetworkObserver.java
index fa54c5f3eeaf..5502a178649f 100644
--- a/core/java/com/android/server/net/BaseNetworkObserver.java
+++ b/core/java/com/android/server/net/BaseNetworkObserver.java
@@ -17,6 +17,7 @@
package com.android.server.net;
import android.net.INetworkManagementEventObserver;
+import android.net.LinkAddress;
/**
* Base {@link INetworkManagementEventObserver} that provides no-op
@@ -36,12 +37,12 @@ public class BaseNetworkObserver extends INetworkManagementEventObserver.Stub {
}
@Override
- public void addressUpdated(String address, String iface, int flags, int scope) {
+ public void addressUpdated(String iface, LinkAddress address) {
// default no-op
}
@Override
- public void addressRemoved(String address, String iface, int flags, int scope) {
+ public void addressRemoved(String iface, LinkAddress address) {
// default no-op
}
@@ -64,4 +65,9 @@ public class BaseNetworkObserver extends INetworkManagementEventObserver.Stub {
public void limitReached(String limitName, String iface) {
// default no-op
}
+
+ @Override
+ public void interfaceDnsServerInfo(String iface, long lifetime, String[] servers) {
+ // default no-op
+ }
}
diff --git a/core/jni/Android.mk b/core/jni/Android.mk
index 598312068914..2e0acb131a79 100644
--- a/core/jni/Android.mk
+++ b/core/jni/Android.mk
@@ -4,6 +4,9 @@ include $(CLEAR_VARS)
LOCAL_CFLAGS += -DHAVE_CONFIG_H -DKHTML_NO_EXCEPTIONS -DGKWQ_NO_JAVA
LOCAL_CFLAGS += -DNO_SUPPORT_JS_BINDING -DQT_NO_WHEELEVENT -DKHTML_NO_XBL
LOCAL_CFLAGS += -U__APPLE__
+LOCAL_CFLAGS += -Wno-unused-parameter -Wno-int-to-pointer-cast
+LOCAL_CFLAGS += -Wno-maybe-uninitialized -Wno-parentheses
+LOCAL_CPPFLAGS += -Wno-conversion-null
ifeq ($(TARGET_ARCH), arm)
LOCAL_CFLAGS += -DPACKED="__attribute__ ((packed))"
@@ -206,7 +209,6 @@ LOCAL_SHARED_LIBRARIES := \
libicuuc \
libicui18n \
libmedia \
- libwpa_client \
libjpeg \
libusbhost \
libharfbuzz_ng \
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp
index 09577da9121c..97ea5e625fde 100644
--- a/core/jni/AndroidRuntime.cpp
+++ b/core/jni/AndroidRuntime.cpp
@@ -447,6 +447,7 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
char heapgrowthlimitOptsBuf[sizeof("-XX:HeapGrowthLimit=")-1 + PROPERTY_VALUE_MAX];
char heapminfreeOptsBuf[sizeof("-XX:HeapMinFree=")-1 + PROPERTY_VALUE_MAX];
char heapmaxfreeOptsBuf[sizeof("-XX:HeapMaxFree=")-1 + PROPERTY_VALUE_MAX];
+ char gctypeOptsBuf[sizeof("-Xgc:")-1 + PROPERTY_VALUE_MAX];
char heaptargetutilizationOptsBuf[sizeof("-XX:HeapTargetUtilization=")-1 + PROPERTY_VALUE_MAX];
char jitcodecachesizeOptsBuf[sizeof("-Xjitcodecachesize:")-1 + PROPERTY_VALUE_MAX];
char extraOptsBuf[PROPERTY_VALUE_MAX];
@@ -582,6 +583,13 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
mOptions.add(opt);
}
+ strcpy(gctypeOptsBuf, "-Xgc:");
+ property_get("dalvik.vm.gctype", gctypeOptsBuf+5, "");
+ if (gctypeOptsBuf[5] != '\0') {
+ opt.optionString = gctypeOptsBuf;
+ mOptions.add(opt);
+ }
+
/*
* Enable or disable dexopt features, such as bytecode verification and
* calculation of register maps for precise GC.
diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp
index 212576328764..d97a945bbef8 100644
--- a/core/jni/android/graphics/Bitmap.cpp
+++ b/core/jni/android/graphics/Bitmap.cpp
@@ -289,8 +289,9 @@ static int getPremulBitmapCreateFlags(bool isMutable) {
}
static jobject Bitmap_creator(JNIEnv* env, jobject, jintArray jColors,
- int offset, int stride, int width, int height,
- SkBitmap::Config config, jboolean isMutable) {
+ jint offset, jint stride, jint width, jint height,
+ jint configHandle, jboolean isMutable) {
+ SkBitmap::Config config = static_cast<SkBitmap::Config>(configHandle);
if (NULL != jColors) {
size_t n = env->GetArrayLength(jColors);
if (n < SkAbs32(stride) * (size_t)height) {
@@ -321,8 +322,10 @@ static jobject Bitmap_creator(JNIEnv* env, jobject, jintArray jColors,
getPremulBitmapCreateFlags(isMutable), NULL, NULL);
}
-static jobject Bitmap_copy(JNIEnv* env, jobject, const SkBitmap* src,
- SkBitmap::Config dstConfig, jboolean isMutable) {
+static jobject Bitmap_copy(JNIEnv* env, jobject, jlong srcHandle,
+ jint dstConfigHandle, jboolean isMutable) {
+ const SkBitmap* src = reinterpret_cast<SkBitmap*>(srcHandle);
+ SkBitmap::Config dstConfig = static_cast<SkBitmap::Config>(dstConfigHandle);
SkBitmap result;
JavaPixelAllocator allocator(env);
@@ -333,7 +336,8 @@ static jobject Bitmap_copy(JNIEnv* env, jobject, const SkBitmap* src,
getPremulBitmapCreateFlags(isMutable), NULL, NULL);
}
-static void Bitmap_destructor(JNIEnv* env, jobject, SkBitmap* bitmap) {
+static void Bitmap_destructor(JNIEnv* env, jobject, jlong bitmapHandle) {
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
#ifdef USE_OPENGL_RENDERER
if (android::uirenderer::Caches::hasInstance()) {
android::uirenderer::Caches::getInstance().resourceCache.destructor(bitmap);
@@ -343,24 +347,28 @@ static void Bitmap_destructor(JNIEnv* env, jobject, SkBitmap* bitmap) {
delete bitmap;
}
-static jboolean Bitmap_recycle(JNIEnv* env, jobject, SkBitmap* bitmap) {
+static jboolean Bitmap_recycle(JNIEnv* env, jobject, jlong bitmapHandle) {
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
#ifdef USE_OPENGL_RENDERER
if (android::uirenderer::Caches::hasInstance()) {
- return android::uirenderer::Caches::getInstance().resourceCache.recycle(bitmap);
+ bool result;
+ result = android::uirenderer::Caches::getInstance().resourceCache.recycle(bitmap);
+ return result ? JNI_TRUE : JNI_FALSE;
}
#endif // USE_OPENGL_RENDERER
bitmap->setPixels(NULL, NULL);
- return true;
+ return JNI_TRUE;
}
-static void Bitmap_reconfigure(JNIEnv* env, jobject clazz, jint bitmapInt,
- int width, int height, SkBitmap::Config config, int allocSize) {
+static void Bitmap_reconfigure(JNIEnv* env, jobject clazz, jlong bitmapHandle,
+ jint width, jint height, jint configHandle, jint allocSize) {
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ SkBitmap::Config config = static_cast<SkBitmap::Config>(configHandle);
if (width * height * SkBitmap::ComputeBytesPerPixel(config) > allocSize) {
// done in native as there's no way to get BytesPerPixel in Java
doThrowIAE(env, "Bitmap not large enough to support new configuration");
return;
}
- SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapInt);
SkPixelRef* ref = bitmap->pixelRef();
SkSafeRef(ref);
bitmap->setConfig(config, width, height);
@@ -380,9 +388,10 @@ enum JavaEncodeFormat {
kWEBP_JavaEncodeFormat = 2
};
-static bool Bitmap_compress(JNIEnv* env, jobject clazz, SkBitmap* bitmap,
- int format, int quality,
- jobject jstream, jbyteArray jstorage) {
+static jboolean Bitmap_compress(JNIEnv* env, jobject clazz, jlong bitmapHandle,
+ jint format, jint quality,
+ jobject jstream, jbyteArray jstorage) {
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
SkImageEncoder::Type fm;
switch (format) {
@@ -396,7 +405,7 @@ static bool Bitmap_compress(JNIEnv* env, jobject clazz, SkBitmap* bitmap,
fm = SkImageEncoder::kWEBP_Type;
break;
default:
- return false;
+ return JNI_FALSE;
}
bool success = false;
@@ -404,12 +413,12 @@ static bool Bitmap_compress(JNIEnv* env, jobject clazz, SkBitmap* bitmap,
SkAutoLockPixels alp(*bitmap);
if (NULL == bitmap->getPixels()) {
- return false;
+ return JNI_FALSE;
}
SkWStream* strm = CreateJavaOutputStreamAdaptor(env, jstream, jstorage);
if (NULL == strm) {
- return false;
+ return JNI_FALSE;
}
SkImageEncoder* encoder = SkImageEncoder::Create(fm);
@@ -419,31 +428,37 @@ static bool Bitmap_compress(JNIEnv* env, jobject clazz, SkBitmap* bitmap,
}
delete strm;
}
- return success;
+ return success ? JNI_TRUE : JNI_FALSE;
}
-static void Bitmap_erase(JNIEnv* env, jobject, SkBitmap* bitmap, jint color) {
+static void Bitmap_erase(JNIEnv* env, jobject, jlong bitmapHandle, jint color) {
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
bitmap->eraseColor(color);
}
-static int Bitmap_rowBytes(JNIEnv* env, jobject, SkBitmap* bitmap) {
- return bitmap->rowBytes();
+static jint Bitmap_rowBytes(JNIEnv* env, jobject, jlong bitmapHandle) {
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ return static_cast<jint>(bitmap->rowBytes());
}
-static int Bitmap_config(JNIEnv* env, jobject, SkBitmap* bitmap) {
- return bitmap->config();
+static jint Bitmap_config(JNIEnv* env, jobject, jlong bitmapHandle) {
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ return static_cast<jint>(bitmap->config());
}
-static int Bitmap_getGenerationId(JNIEnv* env, jobject, SkBitmap* bitmap) {
- return bitmap->getGenerationID();
+static jint Bitmap_getGenerationId(JNIEnv* env, jobject, jlong bitmapHandle) {
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ return static_cast<jint>(bitmap->getGenerationID());
}
-static jboolean Bitmap_hasAlpha(JNIEnv* env, jobject, SkBitmap* bitmap) {
- return !bitmap->isOpaque();
+static jboolean Bitmap_hasAlpha(JNIEnv* env, jobject, jlong bitmapHandle) {
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ return !bitmap->isOpaque() ? JNI_TRUE : JNI_FALSE;
}
-static void Bitmap_setAlphaAndPremultiplied(JNIEnv* env, jobject, SkBitmap* bitmap,
+static void Bitmap_setAlphaAndPremultiplied(JNIEnv* env, jobject, jlong bitmapHandle,
jboolean hasAlpha, jboolean isPremul) {
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
if (!hasAlpha) {
bitmap->setAlphaType(kOpaque_SkAlphaType);
} else if (isPremul) {
@@ -453,12 +468,14 @@ static void Bitmap_setAlphaAndPremultiplied(JNIEnv* env, jobject, SkBitmap* bitm
}
}
-static jboolean Bitmap_hasMipMap(JNIEnv* env, jobject, SkBitmap* bitmap) {
- return bitmap->hasHardwareMipMap();
+static jboolean Bitmap_hasMipMap(JNIEnv* env, jobject, jlong bitmapHandle) {
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ return bitmap->hasHardwareMipMap() ? JNI_TRUE : JNI_FALSE;
}
-static void Bitmap_setHasMipMap(JNIEnv* env, jobject, SkBitmap* bitmap,
+static void Bitmap_setHasMipMap(JNIEnv* env, jobject, jlong bitmapHandle,
jboolean hasMipMap) {
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
bitmap->setHasHardwareMipMap(hasMipMap);
}
@@ -532,12 +549,13 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) {
}
static jboolean Bitmap_writeToParcel(JNIEnv* env, jobject,
- const SkBitmap* bitmap,
+ jlong bitmapHandle,
jboolean isMutable, jint density,
jobject parcel) {
+ const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
if (parcel == NULL) {
SkDebugf("------- writeToParcel null parcel\n");
- return false;
+ return JNI_FALSE;
}
android::Parcel* p = android::parcelForJavaObject(env, parcel);
@@ -568,7 +586,7 @@ static jboolean Bitmap_writeToParcel(JNIEnv* env, jobject,
android::status_t status = p->writeBlob(size, &blob);
if (status) {
doThrowRE(env, "Could not write bitmap to parcel blob.");
- return false;
+ return JNI_FALSE;
}
bitmap->lockPixels();
@@ -581,12 +599,14 @@ static jboolean Bitmap_writeToParcel(JNIEnv* env, jobject,
bitmap->unlockPixels();
blob.release();
- return true;
+ return JNI_TRUE;
}
static jobject Bitmap_extractAlpha(JNIEnv* env, jobject clazz,
- const SkBitmap* src, const SkPaint* paint,
+ jlong srcHandle, jlong paintHandle,
jintArray offsetXY) {
+ const SkBitmap* src = reinterpret_cast<SkBitmap*>(srcHandle);
+ const SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
SkIPoint offset;
SkBitmap* dst = new SkBitmap;
JavaPixelAllocator allocator(env);
@@ -612,8 +632,9 @@ static jobject Bitmap_extractAlpha(JNIEnv* env, jobject clazz,
///////////////////////////////////////////////////////////////////////////////
-static int Bitmap_getPixel(JNIEnv* env, jobject, const SkBitmap* bitmap,
- int x, int y, bool isPremultiplied) {
+static jint Bitmap_getPixel(JNIEnv* env, jobject, jlong bitmapHandle,
+ jint x, jint y, jboolean isPremultiplied) {
+ const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
SkAutoLockPixels alp(*bitmap);
ToColorProc proc = ChooseToColorProc(*bitmap, isPremultiplied);
@@ -627,12 +648,13 @@ static int Bitmap_getPixel(JNIEnv* env, jobject, const SkBitmap* bitmap,
SkColor dst[1];
proc(dst, src, 1, bitmap->getColorTable());
- return dst[0];
+ return static_cast<jint>(dst[0]);
}
-static void Bitmap_getPixels(JNIEnv* env, jobject, const SkBitmap* bitmap,
- jintArray pixelArray, int offset, int stride,
- int x, int y, int width, int height, bool isPremultiplied) {
+static void Bitmap_getPixels(JNIEnv* env, jobject, jlong bitmapHandle,
+ jintArray pixelArray, jint offset, jint stride,
+ jint x, jint y, jint width, jint height, jboolean isPremultiplied) {
+ const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
SkAutoLockPixels alp(*bitmap);
ToColorProc proc = ChooseToColorProc(*bitmap, isPremultiplied);
@@ -657,8 +679,10 @@ static void Bitmap_getPixels(JNIEnv* env, jobject, const SkBitmap* bitmap,
///////////////////////////////////////////////////////////////////////////////
-static void Bitmap_setPixel(JNIEnv* env, jobject, const SkBitmap* bitmap,
- int x, int y, SkColor color, bool isPremultiplied) {
+static void Bitmap_setPixel(JNIEnv* env, jobject, jlong bitmapHandle,
+ jint x, jint y, jint colorHandle, jboolean isPremultiplied) {
+ const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ SkColor color = static_cast<SkColor>(colorHandle);
SkAutoLockPixels alp(*bitmap);
if (NULL == bitmap->getPixels()) {
return;
@@ -673,15 +697,17 @@ static void Bitmap_setPixel(JNIEnv* env, jobject, const SkBitmap* bitmap,
bitmap->notifyPixelsChanged();
}
-static void Bitmap_setPixels(JNIEnv* env, jobject, const SkBitmap* bitmap,
- jintArray pixelArray, int offset, int stride,
- int x, int y, int width, int height, bool isPremultiplied) {
+static void Bitmap_setPixels(JNIEnv* env, jobject, jlong bitmapHandle,
+ jintArray pixelArray, jint offset, jint stride,
+ jint x, jint y, jint width, jint height, jboolean isPremultiplied) {
+ const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
GraphicsJNI::SetPixels(env, pixelArray, offset, stride,
x, y, width, height, *bitmap, isPremultiplied);
}
static void Bitmap_copyPixelsToBuffer(JNIEnv* env, jobject,
- const SkBitmap* bitmap, jobject jbuffer) {
+ jlong bitmapHandle, jobject jbuffer) {
+ const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
SkAutoLockPixels alp(*bitmap);
const void* src = bitmap->getPixels();
@@ -694,7 +720,8 @@ static void Bitmap_copyPixelsToBuffer(JNIEnv* env, jobject,
}
static void Bitmap_copyPixelsFromBuffer(JNIEnv* env, jobject,
- const SkBitmap* bitmap, jobject jbuffer) {
+ jlong bitmapHandle, jobject jbuffer) {
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
SkAutoLockPixels alp(*bitmap);
void* dst = bitmap->getPixels();
@@ -706,12 +733,14 @@ static void Bitmap_copyPixelsFromBuffer(JNIEnv* env, jobject,
}
}
-static bool Bitmap_sameAs(JNIEnv* env, jobject, const SkBitmap* bm0,
- const SkBitmap* bm1) {
+static jboolean Bitmap_sameAs(JNIEnv* env, jobject, jlong bm0Handle,
+ jlong bm1Handle) {
+ const SkBitmap* bm0 = reinterpret_cast<SkBitmap*>(bm0Handle);
+ const SkBitmap* bm1 = reinterpret_cast<SkBitmap*>(bm1Handle);
if (bm0->width() != bm1->width() ||
bm0->height() != bm1->height() ||
bm0->config() != bm1->config()) {
- return false;
+ return JNI_FALSE;
}
SkAutoLockPixels alp0(*bm0);
@@ -719,24 +748,24 @@ static bool Bitmap_sameAs(JNIEnv* env, jobject, const SkBitmap* bm0,
// if we can't load the pixels, return false
if (NULL == bm0->getPixels() || NULL == bm1->getPixels()) {
- return false;
+ return JNI_FALSE;
}
if (bm0->config() == SkBitmap::kIndex8_Config) {
SkColorTable* ct0 = bm0->getColorTable();
SkColorTable* ct1 = bm1->getColorTable();
if (NULL == ct0 || NULL == ct1) {
- return false;
+ return JNI_FALSE;
}
if (ct0->count() != ct1->count()) {
- return false;
+ return JNI_FALSE;
}
SkAutoLockColors alc0(ct0);
SkAutoLockColors alc1(ct1);
const size_t size = ct0->count() * sizeof(SkPMColor);
if (memcmp(alc0.colors(), alc1.colors(), size) != 0) {
- return false;
+ return JNI_FALSE;
}
}
@@ -747,13 +776,14 @@ static bool Bitmap_sameAs(JNIEnv* env, jobject, const SkBitmap* bm0,
const size_t size = bm0->width() * bm0->bytesPerPixel();
for (int y = 0; y < h; y++) {
if (memcmp(bm0->getAddr(0, y), bm1->getAddr(0, y), size) != 0) {
- return false;
+ return JNI_FALSE;
}
}
- return true;
+ return JNI_TRUE;
}
-static void Bitmap_prepareToDraw(JNIEnv* env, jobject, SkBitmap* bitmap) {
+static void Bitmap_prepareToDraw(JNIEnv* env, jobject, jlong bitmapHandle) {
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
bitmap->lockPixels();
bitmap->unlockPixels();
}
@@ -765,38 +795,38 @@ static void Bitmap_prepareToDraw(JNIEnv* env, jobject, SkBitmap* bitmap) {
static JNINativeMethod gBitmapMethods[] = {
{ "nativeCreate", "([IIIIIIZ)Landroid/graphics/Bitmap;",
(void*)Bitmap_creator },
- { "nativeCopy", "(IIZ)Landroid/graphics/Bitmap;",
+ { "nativeCopy", "(JIZ)Landroid/graphics/Bitmap;",
(void*)Bitmap_copy },
- { "nativeDestructor", "(I)V", (void*)Bitmap_destructor },
- { "nativeRecycle", "(I)Z", (void*)Bitmap_recycle },
- { "nativeReconfigure", "(IIIII)V", (void*)Bitmap_reconfigure },
- { "nativeCompress", "(IIILjava/io/OutputStream;[B)Z",
+ { "nativeDestructor", "(J)V", (void*)Bitmap_destructor },
+ { "nativeRecycle", "(J)Z", (void*)Bitmap_recycle },
+ { "nativeReconfigure", "(JIIII)V", (void*)Bitmap_reconfigure },
+ { "nativeCompress", "(JIILjava/io/OutputStream;[B)Z",
(void*)Bitmap_compress },
- { "nativeErase", "(II)V", (void*)Bitmap_erase },
- { "nativeRowBytes", "(I)I", (void*)Bitmap_rowBytes },
- { "nativeConfig", "(I)I", (void*)Bitmap_config },
- { "nativeHasAlpha", "(I)Z", (void*)Bitmap_hasAlpha },
- { "nativeSetAlphaAndPremultiplied", "(IZZ)V", (void*)Bitmap_setAlphaAndPremultiplied},
- { "nativeHasMipMap", "(I)Z", (void*)Bitmap_hasMipMap },
- { "nativeSetHasMipMap", "(IZ)V", (void*)Bitmap_setHasMipMap },
+ { "nativeErase", "(JI)V", (void*)Bitmap_erase },
+ { "nativeRowBytes", "(J)I", (void*)Bitmap_rowBytes },
+ { "nativeConfig", "(J)I", (void*)Bitmap_config },
+ { "nativeHasAlpha", "(J)Z", (void*)Bitmap_hasAlpha },
+ { "nativeSetAlphaAndPremultiplied", "(JZZ)V", (void*)Bitmap_setAlphaAndPremultiplied},
+ { "nativeHasMipMap", "(J)Z", (void*)Bitmap_hasMipMap },
+ { "nativeSetHasMipMap", "(JZ)V", (void*)Bitmap_setHasMipMap },
{ "nativeCreateFromParcel",
"(Landroid/os/Parcel;)Landroid/graphics/Bitmap;",
(void*)Bitmap_createFromParcel },
- { "nativeWriteToParcel", "(IZILandroid/os/Parcel;)Z",
+ { "nativeWriteToParcel", "(JZILandroid/os/Parcel;)Z",
(void*)Bitmap_writeToParcel },
- { "nativeExtractAlpha", "(II[I)Landroid/graphics/Bitmap;",
+ { "nativeExtractAlpha", "(JJ[I)Landroid/graphics/Bitmap;",
(void*)Bitmap_extractAlpha },
- { "nativeGenerationId", "(I)I", (void*)Bitmap_getGenerationId },
- { "nativeGetPixel", "(IIIZ)I", (void*)Bitmap_getPixel },
- { "nativeGetPixels", "(I[IIIIIIIZ)V", (void*)Bitmap_getPixels },
- { "nativeSetPixel", "(IIIIZ)V", (void*)Bitmap_setPixel },
- { "nativeSetPixels", "(I[IIIIIIIZ)V", (void*)Bitmap_setPixels },
- { "nativeCopyPixelsToBuffer", "(ILjava/nio/Buffer;)V",
+ { "nativeGenerationId", "(J)I", (void*)Bitmap_getGenerationId },
+ { "nativeGetPixel", "(JIIZ)I", (void*)Bitmap_getPixel },
+ { "nativeGetPixels", "(J[IIIIIIIZ)V", (void*)Bitmap_getPixels },
+ { "nativeSetPixel", "(JIIIZ)V", (void*)Bitmap_setPixel },
+ { "nativeSetPixels", "(J[IIIIIIIZ)V", (void*)Bitmap_setPixels },
+ { "nativeCopyPixelsToBuffer", "(JLjava/nio/Buffer;)V",
(void*)Bitmap_copyPixelsToBuffer },
- { "nativeCopyPixelsFromBuffer", "(ILjava/nio/Buffer;)V",
+ { "nativeCopyPixelsFromBuffer", "(JLjava/nio/Buffer;)V",
(void*)Bitmap_copyPixelsFromBuffer },
- { "nativeSameAs", "(II)Z", (void*)Bitmap_sameAs },
- { "nativePrepareToDraw", "(I)V", (void*)Bitmap_prepareToDraw },
+ { "nativeSameAs", "(JJ)Z", (void*)Bitmap_sameAs },
+ { "nativePrepareToDraw", "(J)V", (void*)Bitmap_prepareToDraw },
};
#define kClassPathName "android/graphics/Bitmap"
diff --git a/core/jni/android/graphics/BitmapFactory.cpp b/core/jni/android/graphics/BitmapFactory.cpp
index 709de5c7c070..e8feacb952a0 100644
--- a/core/jni/android/graphics/BitmapFactory.cpp
+++ b/core/jni/android/graphics/BitmapFactory.cpp
@@ -286,7 +286,7 @@ static jobject doDecode(JNIEnv* env, SkStreamRewindable* stream, jobject padding
SkBitmap* outputBitmap = NULL;
unsigned int existingBufferSize = 0;
if (javaBitmap != NULL) {
- outputBitmap = (SkBitmap*) env->GetIntField(javaBitmap, gBitmap_nativeBitmapFieldID);
+ outputBitmap = (SkBitmap*) env->GetLongField(javaBitmap, gBitmap_nativeBitmapFieldID);
if (outputBitmap->isImmutable()) {
ALOGW("Unable to reuse an immutable bitmap as an image decoder target.");
javaBitmap = NULL;
@@ -566,7 +566,7 @@ static jobject nativeDecodeFileDescriptor(JNIEnv* env, jobject clazz, jobject fi
return doDecode(env, stream, padding, bitmapFactoryOptions, isPurgeable);
}
-static jobject nativeDecodeAsset(JNIEnv* env, jobject clazz, jint native_asset,
+static jobject nativeDecodeAsset(JNIEnv* env, jobject clazz, jlong native_asset,
jobject padding, jobject options) {
SkStreamRewindable* stream;
@@ -591,7 +591,7 @@ static jobject nativeDecodeAsset(JNIEnv* env, jobject clazz, jint native_asset,
}
static jobject nativeDecodeByteArray(JNIEnv* env, jobject, jbyteArray byteArray,
- int offset, int length, jobject options) {
+ jint offset, jint length, jobject options) {
/* If optionsShareable() we could decide to just wrap the java array and
share it, but that means adding a globalref to the java array object
@@ -628,7 +628,7 @@ static JNINativeMethod gMethods[] = {
},
{ "nativeDecodeAsset",
- "(ILandroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;",
+ "(JLandroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;",
(void*)nativeDecodeAsset
},
@@ -681,7 +681,7 @@ int register_android_graphics_BitmapFactory(JNIEnv* env) {
jclass bitmap_class = env->FindClass("android/graphics/Bitmap");
SkASSERT(bitmap_class);
- gBitmap_nativeBitmapFieldID = getFieldIDCheck(env, bitmap_class, "mNativeBitmap", "I");
+ gBitmap_nativeBitmapFieldID = getFieldIDCheck(env, bitmap_class, "mNativeBitmap", "J");
gBitmap_layoutBoundsFieldID = getFieldIDCheck(env, bitmap_class, "mLayoutBounds", "[I");
int ret = AndroidRuntime::registerNativeMethods(env,
"android/graphics/BitmapFactory$Options",
diff --git a/core/jni/android/graphics/BitmapRegionDecoder.cpp b/core/jni/android/graphics/BitmapRegionDecoder.cpp
index 1412a0e900b3..0d67b071a5ab 100644
--- a/core/jni/android/graphics/BitmapRegionDecoder.cpp
+++ b/core/jni/android/graphics/BitmapRegionDecoder.cpp
@@ -101,7 +101,7 @@ static jobject createBitmapRegionDecoder(JNIEnv* env, SkStreamRewindable* stream
}
static jobject nativeNewInstanceFromByteArray(JNIEnv* env, jobject, jbyteArray byteArray,
- int offset, int length, jboolean isShareable) {
+ jint offset, jint length, jboolean isShareable) {
/* If isShareable we could decide to just wrap the java array and
share it, but that means adding a globalref to the java array object
For now we just always copy the array's data if isShareable.
@@ -150,7 +150,7 @@ static jobject nativeNewInstanceFromStream(JNIEnv* env, jobject clazz,
}
static jobject nativeNewInstanceFromAsset(JNIEnv* env, jobject clazz,
- jint native_asset, // Asset
+ jlong native_asset, // Asset
jboolean isShareable) {
Asset* asset = reinterpret_cast<Asset*>(native_asset);
SkAutoTUnref<SkMemoryStream> stream(CopyAssetToStream(asset));
@@ -169,8 +169,9 @@ static jobject nativeNewInstanceFromAsset(JNIEnv* env, jobject clazz,
* purgeable not supported
* reportSizeToVM not supported
*/
-static jobject nativeDecodeRegion(JNIEnv* env, jobject, SkBitmapRegionDecoder *brd,
- int start_x, int start_y, int width, int height, jobject options) {
+static jobject nativeDecodeRegion(JNIEnv* env, jobject, jlong brdHandle,
+ jint start_x, jint start_y, jint width, jint height, jobject options) {
+ SkBitmapRegionDecoder *brd = reinterpret_cast<SkBitmapRegionDecoder*>(brdHandle);
jobject tileBitmap = NULL;
SkImageDecoder *decoder = brd->getDecoder();
int sampleSize = 1;
@@ -255,15 +256,18 @@ static jobject nativeDecodeRegion(JNIEnv* env, jobject, SkBitmapRegionDecoder *b
return GraphicsJNI::createBitmap(env, bitmap, buff, bitmapCreateFlags, NULL, NULL, -1);
}
-static int nativeGetHeight(JNIEnv* env, jobject, SkBitmapRegionDecoder *brd) {
- return brd->getHeight();
+static jint nativeGetHeight(JNIEnv* env, jobject, jlong brdHandle) {
+ SkBitmapRegionDecoder *brd = reinterpret_cast<SkBitmapRegionDecoder*>(brdHandle);
+ return static_cast<jint>(brd->getHeight());
}
-static int nativeGetWidth(JNIEnv* env, jobject, SkBitmapRegionDecoder *brd) {
- return brd->getWidth();
+static jint nativeGetWidth(JNIEnv* env, jobject, jlong brdHandle) {
+ SkBitmapRegionDecoder *brd = reinterpret_cast<SkBitmapRegionDecoder*>(brdHandle);
+ return static_cast<jint>(brd->getWidth());
}
-static void nativeClean(JNIEnv* env, jobject, SkBitmapRegionDecoder *brd) {
+static void nativeClean(JNIEnv* env, jobject, jlong brdHandle) {
+ SkBitmapRegionDecoder *brd = reinterpret_cast<SkBitmapRegionDecoder*>(brdHandle);
delete brd;
}
@@ -273,14 +277,14 @@ static void nativeClean(JNIEnv* env, jobject, SkBitmapRegionDecoder *brd) {
static JNINativeMethod gBitmapRegionDecoderMethods[] = {
{ "nativeDecodeRegion",
- "(IIIIILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;",
+ "(JIIIILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;",
(void*)nativeDecodeRegion},
- { "nativeGetHeight", "(I)I", (void*)nativeGetHeight},
+ { "nativeGetHeight", "(J)I", (void*)nativeGetHeight},
- { "nativeGetWidth", "(I)I", (void*)nativeGetWidth},
+ { "nativeGetWidth", "(J)I", (void*)nativeGetWidth},
- { "nativeClean", "(I)V", (void*)nativeClean},
+ { "nativeClean", "(J)V", (void*)nativeClean},
{ "nativeNewInstance",
"([BIIZ)Landroid/graphics/BitmapRegionDecoder;",
@@ -298,7 +302,7 @@ static JNINativeMethod gBitmapRegionDecoderMethods[] = {
},
{ "nativeNewInstance",
- "(IZ)Landroid/graphics/BitmapRegionDecoder;",
+ "(JZ)Landroid/graphics/BitmapRegionDecoder;",
(void*)nativeNewInstanceFromAsset
},
};
diff --git a/core/jni/android/graphics/Camera.cpp b/core/jni/android/graphics/Camera.cpp
index 5176d9a94231..54d448eb8ee8 100644
--- a/core/jni/android/graphics/Camera.cpp
+++ b/core/jni/android/graphics/Camera.cpp
@@ -7,84 +7,102 @@ static jfieldID gNativeInstanceFieldID;
static void Camera_constructor(JNIEnv* env, jobject obj) {
Sk3DView* view = new Sk3DView;
- env->SetIntField(obj, gNativeInstanceFieldID, (int)view);
+ env->SetLongField(obj, gNativeInstanceFieldID, reinterpret_cast<jlong>(view));
}
static void Camera_destructor(JNIEnv* env, jobject obj) {
- delete (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
+ jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
+ Sk3DView* view = reinterpret_cast<Sk3DView*>(viewHandle);
+ delete view;
}
static void Camera_save(JNIEnv* env, jobject obj) {
- Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
+ jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
+ Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
v->save();
}
static void Camera_restore(JNIEnv* env, jobject obj) {
- Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
+ jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
+ Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
v->restore();
}
static void Camera_translate(JNIEnv* env, jobject obj,
- float dx, float dy, float dz) {
- Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
+ jfloat dx, jfloat dy, jfloat dz) {
+ jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
+ Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
v->translate(SkFloatToScalar(dx), SkFloatToScalar(dy), SkFloatToScalar(dz));
}
-static void Camera_rotateX(JNIEnv* env, jobject obj, float degrees) {
- Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
+static void Camera_rotateX(JNIEnv* env, jobject obj, jfloat degrees) {
+ jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
+ Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
v->rotateX(SkFloatToScalar(degrees));
}
-static void Camera_rotateY(JNIEnv* env, jobject obj, float degrees) {
- Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
+static void Camera_rotateY(JNIEnv* env, jobject obj, jfloat degrees) {
+ jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
+ Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
v->rotateY(SkFloatToScalar(degrees));
}
-static void Camera_rotateZ(JNIEnv* env, jobject obj, float degrees) {
- Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
+static void Camera_rotateZ(JNIEnv* env, jobject obj, jfloat degrees) {
+ jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
+ Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
v->rotateZ(SkFloatToScalar(degrees));
}
static void Camera_rotate(JNIEnv* env, jobject obj, jfloat x, jfloat y, jfloat z) {
- Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
+ jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
+ Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
v->rotateX(SkFloatToScalar(x));
v->rotateY(SkFloatToScalar(y));
v->rotateZ(SkFloatToScalar(z));
}
static void Camera_setLocation(JNIEnv* env, jobject obj, jfloat x, jfloat y, jfloat z) {
- Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
+ jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
+ Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
v->setCameraLocation(SkFloatToScalar(x), SkFloatToScalar(y), SkFloatToScalar(z));
}
static jfloat Camera_getLocationX(JNIEnv* env, jobject obj) {
- Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
+ jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
+ Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
return SkScalarToFloat(v->getCameraLocationX());
}
static jfloat Camera_getLocationY(JNIEnv* env, jobject obj) {
- Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
+ jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
+ Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
return SkScalarToFloat(v->getCameraLocationY());
}
static jfloat Camera_getLocationZ(JNIEnv* env, jobject obj) {
- Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
+ jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
+ Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
return SkScalarToFloat(v->getCameraLocationZ());
}
-static void Camera_getMatrix(JNIEnv* env, jobject obj, int native_matrix) {
- Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
- v->getMatrix((SkMatrix*)native_matrix);
+static void Camera_getMatrix(JNIEnv* env, jobject obj, jlong matrixHandle) {
+ SkMatrix* native_matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
+ jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
+ Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
+ v->getMatrix(native_matrix);
}
-static void Camera_applyToCanvas(JNIEnv* env, jobject obj, int native_canvas) {
- Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
+static void Camera_applyToCanvas(JNIEnv* env, jobject obj, jlong canvasHandle) {
+ SkCanvas* native_canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
+ Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
v->applyToCanvas((SkCanvas*)native_canvas);
}
-static float Camera_dotWithNormal(JNIEnv* env, jobject obj,
- float x, float y, float z) {
- Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID);
+static jfloat Camera_dotWithNormal(JNIEnv* env, jobject obj,
+ jfloat x, jfloat y, jfloat z) {
+ jlong viewHandle = env->GetLongField(obj, gNativeInstanceFieldID);
+ Sk3DView* v = reinterpret_cast<Sk3DView*>(viewHandle);
SkScalar dot = v->dotWithNormal(SkFloatToScalar(x), SkFloatToScalar(y),
SkFloatToScalar(z));
return SkScalarToFloat(dot);
@@ -111,8 +129,8 @@ static JNINativeMethod gCameraMethods[] = {
{ "getLocationX", "()F", (void*)Camera_getLocationX },
{ "getLocationY", "()F", (void*)Camera_getLocationY },
{ "getLocationZ", "()F", (void*)Camera_getLocationZ },
- { "nativeGetMatrix", "(I)V", (void*)Camera_getMatrix },
- { "nativeApplyToCanvas", "(I)V", (void*)Camera_applyToCanvas },
+ { "nativeGetMatrix", "(J)V", (void*)Camera_getMatrix },
+ { "nativeApplyToCanvas", "(J)V", (void*)Camera_applyToCanvas },
{ "dotWithNormal", "(FFF)F", (void*)Camera_dotWithNormal }
};
@@ -121,7 +139,7 @@ int register_android_graphics_Camera(JNIEnv* env) {
if (clazz == 0) {
return -1;
}
- gNativeInstanceFieldID = env->GetFieldID(clazz, "native_instance", "I");
+ gNativeInstanceFieldID = env->GetFieldID(clazz, "native_instance", "J");
if (gNativeInstanceFieldID == 0) {
return -1;
}
diff --git a/core/jni/android/graphics/Canvas.cpp b/core/jni/android/graphics/Canvas.cpp
index edf3b4a052a4..7ee5936ec5d1 100644
--- a/core/jni/android/graphics/Canvas.cpp
+++ b/core/jni/android/graphics/Canvas.cpp
@@ -38,13 +38,13 @@
static uint32_t get_thread_msec() {
#if defined(HAVE_POSIX_CLOCKS)
struct timespec tm;
-
+
clock_gettime(CLOCK_THREAD_CPUTIME_ID, &tm);
-
+
return tm.tv_sec * 1000LL + tm.tv_nsec / 1000000;
#else
struct timeval tv;
-
+
gettimeofday(&tv, NULL);
return tv.tv_sec * 1000LL + tv.tv_usec / 1000;
#endif
@@ -70,23 +70,27 @@ private:
class SkCanvasGlue {
public:
- static void finalizer(JNIEnv* env, jobject clazz, SkCanvas* canvas) {
+ static void finalizer(JNIEnv* env, jobject clazz, jlong canvasHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
canvas->unref();
}
- static SkCanvas* initRaster(JNIEnv* env, jobject, SkBitmap* bitmap) {
+ static jlong initRaster(JNIEnv* env, jobject, jlong bitmapHandle) {
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
if (bitmap) {
- return new SkCanvas(*bitmap);
+ return reinterpret_cast<jlong>(new SkCanvas(*bitmap));
} else {
// Create an empty bitmap device to prevent callers from crashing
// if they attempt to draw into this canvas.
SkBitmap emptyBitmap;
- return new SkCanvas(emptyBitmap);
+ return reinterpret_cast<jlong>(new SkCanvas(emptyBitmap));
}
}
-
+
static void copyCanvasState(JNIEnv* env, jobject clazz,
- SkCanvas* srcCanvas, SkCanvas* dstCanvas) {
+ jlong srcCanvasHandle, jlong dstCanvasHandle) {
+ SkCanvas* srcCanvas = reinterpret_cast<SkCanvas*>(srcCanvasHandle);
+ SkCanvas* dstCanvas = reinterpret_cast<SkCanvas*>(dstCanvasHandle);
if (srcCanvas && dstCanvas) {
dstCanvas->setMatrix(srcCanvas->getTotalMatrix());
if (NULL != srcCanvas->getDevice() && NULL != dstCanvas->getDevice()) {
@@ -110,73 +114,89 @@ public:
static jboolean isOpaque(JNIEnv* env, jobject jcanvas) {
NPE_CHECK_RETURN_ZERO(env, jcanvas);
SkCanvas* canvas = GraphicsJNI::getNativeCanvas(env, jcanvas);
- return canvas->getDevice()->accessBitmap(false).isOpaque();
+ bool result = canvas->getDevice()->accessBitmap(false).isOpaque();
+ return result ? JNI_TRUE : JNI_FALSE;
}
-
- static int getWidth(JNIEnv* env, jobject jcanvas) {
+
+ static jint getWidth(JNIEnv* env, jobject jcanvas) {
NPE_CHECK_RETURN_ZERO(env, jcanvas);
SkCanvas* canvas = GraphicsJNI::getNativeCanvas(env, jcanvas);
- return canvas->getDevice()->accessBitmap(false).width();
+ int width = canvas->getDevice()->accessBitmap(false).width();
+ return static_cast<jint>(width);
}
-
- static int getHeight(JNIEnv* env, jobject jcanvas) {
+
+ static jint getHeight(JNIEnv* env, jobject jcanvas) {
NPE_CHECK_RETURN_ZERO(env, jcanvas);
SkCanvas* canvas = GraphicsJNI::getNativeCanvas(env, jcanvas);
- return canvas->getDevice()->accessBitmap(false).height();
+ int height = canvas->getDevice()->accessBitmap(false).height();
+ return static_cast<jint>(height);
}
- static int saveAll(JNIEnv* env, jobject jcanvas) {
+ static jint saveAll(JNIEnv* env, jobject jcanvas) {
NPE_CHECK_RETURN_ZERO(env, jcanvas);
- return GraphicsJNI::getNativeCanvas(env, jcanvas)->save();
+ int result = GraphicsJNI::getNativeCanvas(env, jcanvas)->save();
+ return static_cast<jint>(result);
}
-
- static int save(JNIEnv* env, jobject jcanvas, SkCanvas::SaveFlags flags) {
+
+ static jint save(JNIEnv* env, jobject jcanvas, jint flagsHandle) {
+ SkCanvas::SaveFlags flags = static_cast<SkCanvas::SaveFlags>(flagsHandle);
NPE_CHECK_RETURN_ZERO(env, jcanvas);
- return GraphicsJNI::getNativeCanvas(env, jcanvas)->save(flags);
+ int result = GraphicsJNI::getNativeCanvas(env, jcanvas)->save(flags);
+ return static_cast<jint>(result);
}
-
- static int saveLayer(JNIEnv* env, jobject, SkCanvas* canvas, jobject bounds,
- SkPaint* paint, int flags) {
+
+ static jint saveLayer(JNIEnv* env, jobject, jlong canvasHandle, jobject bounds,
+ jlong paintHandle, jint flags) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
SkRect* bounds_ = NULL;
SkRect storage;
if (bounds != NULL) {
GraphicsJNI::jrectf_to_rect(env, bounds, &storage);
bounds_ = &storage;
}
- return canvas->saveLayer(bounds_, paint, (SkCanvas::SaveFlags)flags);
+ return canvas->saveLayer(bounds_, paint, static_cast<SkCanvas::SaveFlags>(flags));
}
-
- static int saveLayer4F(JNIEnv* env, jobject, SkCanvas* canvas,
+
+ static jint saveLayer4F(JNIEnv* env, jobject, jlong canvasHandle,
jfloat l, jfloat t, jfloat r, jfloat b,
- SkPaint* paint, int flags) {
+ jlong paintHandle, jint flags) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
SkRect bounds;
bounds.set(SkFloatToScalar(l), SkFloatToScalar(t), SkFloatToScalar(r),
SkFloatToScalar(b));
- return canvas->saveLayer(&bounds, paint, (SkCanvas::SaveFlags)flags);
+ int result = canvas->saveLayer(&bounds, paint,
+ static_cast<SkCanvas::SaveFlags>(flags));
+ return static_cast<jint>(result);
}
-
- static int saveLayerAlpha(JNIEnv* env, jobject, SkCanvas* canvas,
- jobject bounds, int alpha, int flags) {
+
+ static jint saveLayerAlpha(JNIEnv* env, jobject, jlong canvasHandle,
+ jobject bounds, jint alpha, jint flags) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
SkRect* bounds_ = NULL;
SkRect storage;
if (bounds != NULL) {
GraphicsJNI::jrectf_to_rect(env, bounds, &storage);
bounds_ = &storage;
}
- return canvas->saveLayerAlpha(bounds_, alpha,
- (SkCanvas::SaveFlags)flags);
+ int result = canvas->saveLayerAlpha(bounds_, alpha,
+ static_cast<SkCanvas::SaveFlags>(flags));
+ return static_cast<jint>(result);
}
-
- static int saveLayerAlpha4F(JNIEnv* env, jobject, SkCanvas* canvas,
+
+ static jint saveLayerAlpha4F(JNIEnv* env, jobject, jlong canvasHandle,
jfloat l, jfloat t, jfloat r, jfloat b,
- int alpha, int flags) {
+ jint alpha, jint flags) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
SkRect bounds;
bounds.set(SkFloatToScalar(l), SkFloatToScalar(t), SkFloatToScalar(r),
SkFloatToScalar(b));
- return canvas->saveLayerAlpha(&bounds, alpha,
- (SkCanvas::SaveFlags)flags);
+ int result = canvas->saveLayerAlpha(&bounds, alpha,
+ static_cast<SkCanvas::SaveFlags>(flags));
+ return static_cast<jint>(result);
}
-
+
static void restore(JNIEnv* env, jobject jcanvas) {
NPE_CHECK_RETURN_VOID(env, jcanvas);
SkCanvas* canvas = GraphicsJNI::getNativeCanvas(env, jcanvas);
@@ -186,13 +206,14 @@ public:
}
canvas->restore();
}
-
- static int getSaveCount(JNIEnv* env, jobject jcanvas) {
+
+ static jint getSaveCount(JNIEnv* env, jobject jcanvas) {
NPE_CHECK_RETURN_ZERO(env, jcanvas);
- return GraphicsJNI::getNativeCanvas(env, jcanvas)->getSaveCount();
+ int result = GraphicsJNI::getNativeCanvas(env, jcanvas)->getSaveCount();
+ return static_cast<jint>(result);
}
-
- static void restoreToCount(JNIEnv* env, jobject jcanvas, int restoreCount) {
+
+ static void restoreToCount(JNIEnv* env, jobject jcanvas, jint restoreCount) {
NPE_CHECK_RETURN_VOID(env, jcanvas);
SkCanvas* canvas = GraphicsJNI::getNativeCanvas(env, jcanvas);
if (restoreCount < 1) {
@@ -201,48 +222,52 @@ public:
}
canvas->restoreToCount(restoreCount);
}
-
+
static void translate(JNIEnv* env, jobject jcanvas, jfloat dx, jfloat dy) {
NPE_CHECK_RETURN_VOID(env, jcanvas);
SkScalar dx_ = SkFloatToScalar(dx);
SkScalar dy_ = SkFloatToScalar(dy);
(void)GraphicsJNI::getNativeCanvas(env, jcanvas)->translate(dx_, dy_);
}
-
+
static void scale__FF(JNIEnv* env, jobject jcanvas, jfloat sx, jfloat sy) {
NPE_CHECK_RETURN_VOID(env, jcanvas);
SkScalar sx_ = SkFloatToScalar(sx);
SkScalar sy_ = SkFloatToScalar(sy);
(void)GraphicsJNI::getNativeCanvas(env, jcanvas)->scale(sx_, sy_);
}
-
+
static void rotate__F(JNIEnv* env, jobject jcanvas, jfloat degrees) {
NPE_CHECK_RETURN_VOID(env, jcanvas);
SkScalar degrees_ = SkFloatToScalar(degrees);
(void)GraphicsJNI::getNativeCanvas(env, jcanvas)->rotate(degrees_);
}
-
+
static void skew__FF(JNIEnv* env, jobject jcanvas, jfloat sx, jfloat sy) {
NPE_CHECK_RETURN_VOID(env, jcanvas);
SkScalar sx_ = SkFloatToScalar(sx);
SkScalar sy_ = SkFloatToScalar(sy);
(void)GraphicsJNI::getNativeCanvas(env, jcanvas)->skew(sx_, sy_);
}
-
- static void concat(JNIEnv* env, jobject, SkCanvas* canvas,
- const SkMatrix* matrix) {
+
+ static void concat(JNIEnv* env, jobject, jlong canvasHandle,
+ jlong matrixHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ const SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
canvas->concat(*matrix);
}
-
- static void setMatrix(JNIEnv* env, jobject, SkCanvas* canvas,
- const SkMatrix* matrix) {
+
+ static void setMatrix(JNIEnv* env, jobject, jlong canvasHandle,
+ jlong matrixHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ const SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
if (NULL == matrix) {
canvas->resetMatrix();
} else {
canvas->setMatrix(*matrix);
}
}
-
+
static jboolean clipRect_FFFF(JNIEnv* env, jobject jcanvas, jfloat left,
jfloat top, jfloat right, jfloat bottom) {
NPE_CHECK_RETURN_ZERO(env, jcanvas);
@@ -250,122 +275,149 @@ public:
r.set(SkFloatToScalar(left), SkFloatToScalar(top),
SkFloatToScalar(right), SkFloatToScalar(bottom));
SkCanvas* c = GraphicsJNI::getNativeCanvas(env, jcanvas);
- return c->clipRect(r);
+ bool result = c->clipRect(r);
+ return result ? JNI_TRUE : JNI_FALSE;
}
-
+
static jboolean clipRect_IIII(JNIEnv* env, jobject jcanvas, jint left,
jint top, jint right, jint bottom) {
NPE_CHECK_RETURN_ZERO(env, jcanvas);
SkRect r;
r.set(SkIntToScalar(left), SkIntToScalar(top),
SkIntToScalar(right), SkIntToScalar(bottom));
- return GraphicsJNI::getNativeCanvas(env, jcanvas)->clipRect(r);
+ bool result = GraphicsJNI::getNativeCanvas(env, jcanvas)->clipRect(r);
+ return result ? JNI_TRUE : JNI_FALSE;
}
-
+
static jboolean clipRect_RectF(JNIEnv* env, jobject jcanvas, jobject rectf) {
NPE_CHECK_RETURN_ZERO(env, jcanvas);
NPE_CHECK_RETURN_ZERO(env, rectf);
SkCanvas* c = GraphicsJNI::getNativeCanvas(env, jcanvas);
SkRect tmp;
- return c->clipRect(*GraphicsJNI::jrectf_to_rect(env, rectf, &tmp));
+ bool result = c->clipRect(*GraphicsJNI::jrectf_to_rect(env, rectf, &tmp));
+ return result ? JNI_TRUE : JNI_FALSE;
}
-
+
static jboolean clipRect_Rect(JNIEnv* env, jobject jcanvas, jobject rect) {
NPE_CHECK_RETURN_ZERO(env, jcanvas);
NPE_CHECK_RETURN_ZERO(env, rect);
SkCanvas* c = GraphicsJNI::getNativeCanvas(env, jcanvas);
SkRect tmp;
- return c->clipRect(*GraphicsJNI::jrect_to_rect(env, rect, &tmp));
+ bool result = c->clipRect(*GraphicsJNI::jrect_to_rect(env, rect, &tmp));
+ return result ? JNI_TRUE : JNI_FALSE;
+
}
-
- static jboolean clipRect(JNIEnv* env, jobject, SkCanvas* canvas,
- float left, float top, float right, float bottom,
- int op) {
+
+ static jboolean clipRect(JNIEnv* env, jobject, jlong canvasHandle,
+ jfloat left, jfloat top, jfloat right, jfloat bottom,
+ jint op) {
SkRect rect;
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
rect.set(SkFloatToScalar(left), SkFloatToScalar(top),
SkFloatToScalar(right), SkFloatToScalar(bottom));
- return canvas->clipRect(rect, (SkRegion::Op)op);
+ bool result = canvas->clipRect(rect, static_cast<SkRegion::Op>(op));
+ return result ? JNI_TRUE : JNI_FALSE;
+
}
-
- static jboolean clipPath(JNIEnv* env, jobject, SkCanvas* canvas,
- SkPath* path, int op) {
- return canvas->clipPath(*path, (SkRegion::Op)op);
+
+ static jboolean clipPath(JNIEnv* env, jobject, jlong canvasHandle,
+ SkPath* path, jint op) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ bool result = canvas->clipPath(*path, static_cast<SkRegion::Op>(op));
+ return result ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean clipRegion(JNIEnv* env, jobject, SkCanvas* canvas,
- SkRegion* deviceRgn, int op) {
- return canvas->clipRegion(*deviceRgn, (SkRegion::Op)op);
+
+ static jboolean clipRegion(JNIEnv* env, jobject, jlong canvasHandle,
+ jlong deviceRgnHandle, jint op) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkRegion* deviceRgn = reinterpret_cast<SkRegion*>(deviceRgnHandle);
+ bool result = canvas->clipRegion(*deviceRgn, static_cast<SkRegion::Op>(op));
+ return result ? JNI_TRUE : JNI_FALSE;
}
-
- static void setDrawFilter(JNIEnv* env, jobject, SkCanvas* canvas,
+
+ static void setDrawFilter(JNIEnv* env, jobject, jlong canvasHandle,
SkDrawFilter* filter) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
canvas->setDrawFilter(filter);
}
-
- static jboolean quickReject__RectF(JNIEnv* env, jobject, SkCanvas* canvas,
+
+ static jboolean quickReject__RectF(JNIEnv* env, jobject, jlong canvasHandle,
jobject rect) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
SkRect rect_;
GraphicsJNI::jrectf_to_rect(env, rect, &rect_);
return canvas->quickReject(rect_);
}
- static jboolean quickReject__Path(JNIEnv* env, jobject, SkCanvas* canvas,
+ static jboolean quickReject__Path(JNIEnv* env, jobject, jlong canvasHandle,
SkPath* path) {
- return canvas->quickReject(*path);
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ bool result = canvas->quickReject(*path);
+ return result ? JNI_TRUE : JNI_FALSE;
}
- static jboolean quickReject__FFFF(JNIEnv* env, jobject, SkCanvas* canvas,
+ static jboolean quickReject__FFFF(JNIEnv* env, jobject, jlong canvasHandle,
jfloat left, jfloat top, jfloat right,
jfloat bottom) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
SkRect r;
r.set(SkFloatToScalar(left), SkFloatToScalar(top),
SkFloatToScalar(right), SkFloatToScalar(bottom));
- return canvas->quickReject(r);
+ bool result = canvas->quickReject(r);
+ return result ? JNI_TRUE : JNI_FALSE;
}
-
- static void drawRGB(JNIEnv* env, jobject, SkCanvas* canvas,
+
+ static void drawRGB(JNIEnv* env, jobject, jlong canvasHandle,
jint r, jint g, jint b) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
canvas->drawARGB(0xFF, r, g, b);
}
-
- static void drawARGB(JNIEnv* env, jobject, SkCanvas* canvas,
+
+ static void drawARGB(JNIEnv* env, jobject, jlong canvasHandle,
jint a, jint r, jint g, jint b) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
canvas->drawARGB(a, r, g, b);
}
-
- static void drawColor__I(JNIEnv* env, jobject, SkCanvas* canvas,
+
+ static void drawColor__I(JNIEnv* env, jobject, jlong canvasHandle,
jint color) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
canvas->drawColor(color);
}
-
- static void drawColor__II(JNIEnv* env, jobject, SkCanvas* canvas,
- jint color, SkPorterDuff::Mode mode) {
+
+ static void drawColor__II(JNIEnv* env, jobject, jlong canvasHandle,
+ jint color, jint modeHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPorterDuff::Mode mode = static_cast<SkPorterDuff::Mode>(modeHandle);
canvas->drawColor(color, SkPorterDuff::ToXfermodeMode(mode));
}
-
- static void drawPaint(JNIEnv* env, jobject, SkCanvas* canvas,
- SkPaint* paint) {
+
+ static void drawPaint(JNIEnv* env, jobject, jlong canvasHandle,
+ jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
canvas->drawPaint(*paint);
}
-
+
static void doPoints(JNIEnv* env, jobject jcanvas, jfloatArray jptsArray,
jint offset, jint count, jobject jpaint,
- SkCanvas::PointMode mode) {
+ jint modeHandle) {
NPE_CHECK_RETURN_VOID(env, jcanvas);
NPE_CHECK_RETURN_VOID(env, jptsArray);
NPE_CHECK_RETURN_VOID(env, jpaint);
+ SkCanvas::PointMode mode = static_cast<SkCanvas::PointMode>(modeHandle);
SkCanvas* canvas = GraphicsJNI::getNativeCanvas(env, jcanvas);
const SkPaint& paint = *GraphicsJNI::getNativePaint(env, jpaint);
-
+
AutoJavaFloatArray autoPts(env, jptsArray);
float* floats = autoPts.ptr();
const int length = autoPts.length();
-
+
if ((offset | count) < 0 || offset + count > length) {
doThrowAIOOBE(env);
return;
}
-
+
// now convert the floats into SkPoints
count >>= 1; // now it is the number of points
SkAutoSTMalloc<32, SkPoint> storage(count);
@@ -374,98 +426,118 @@ public:
for (int i = 0; i < count; i++) {
pts[i].set(SkFloatToScalar(src[0]), SkFloatToScalar(src[1]));
src += 2;
- }
+ }
canvas->drawPoints(mode, count, pts, paint);
}
-
+
static void drawPoints(JNIEnv* env, jobject jcanvas, jfloatArray jptsArray,
jint offset, jint count, jobject jpaint) {
doPoints(env, jcanvas, jptsArray, offset, count, jpaint,
SkCanvas::kPoints_PointMode);
}
-
+
static void drawLines(JNIEnv* env, jobject jcanvas, jfloatArray jptsArray,
jint offset, jint count, jobject jpaint) {
doPoints(env, jcanvas, jptsArray, offset, count, jpaint,
SkCanvas::kLines_PointMode);
}
-
- static void drawPoint(JNIEnv* env, jobject jcanvas, float x, float y,
+
+ static void drawPoint(JNIEnv* env, jobject jcanvas, jfloat x, jfloat y,
jobject jpaint) {
NPE_CHECK_RETURN_VOID(env, jcanvas);
NPE_CHECK_RETURN_VOID(env, jpaint);
SkCanvas* canvas = GraphicsJNI::getNativeCanvas(env, jcanvas);
const SkPaint& paint = *GraphicsJNI::getNativePaint(env, jpaint);
-
+
canvas->drawPoint(SkFloatToScalar(x), SkFloatToScalar(y), paint);
}
-
- static void drawLine__FFFFPaint(JNIEnv* env, jobject, SkCanvas* canvas,
+
+ static void drawLine__FFFFPaint(JNIEnv* env, jobject, jlong canvasHandle,
jfloat startX, jfloat startY, jfloat stopX,
- jfloat stopY, SkPaint* paint) {
+ jfloat stopY, jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
canvas->drawLine(SkFloatToScalar(startX), SkFloatToScalar(startY),
SkFloatToScalar(stopX), SkFloatToScalar(stopY),
*paint);
}
-
- static void drawRect__RectFPaint(JNIEnv* env, jobject, SkCanvas* canvas,
- jobject rect, SkPaint* paint) {
+
+ static void drawRect__RectFPaint(JNIEnv* env, jobject, jlong canvasHandle,
+ jobject rect, jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
SkRect rect_;
GraphicsJNI::jrectf_to_rect(env, rect, &rect_);
canvas->drawRect(rect_, *paint);
}
-
- static void drawRect__FFFFPaint(JNIEnv* env, jobject, SkCanvas* canvas,
+
+ static void drawRect__FFFFPaint(JNIEnv* env, jobject, jlong canvasHandle,
jfloat left, jfloat top, jfloat right,
- jfloat bottom, SkPaint* paint) {
+ jfloat bottom, jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
SkScalar left_ = SkFloatToScalar(left);
SkScalar top_ = SkFloatToScalar(top);
SkScalar right_ = SkFloatToScalar(right);
SkScalar bottom_ = SkFloatToScalar(bottom);
canvas->drawRectCoords(left_, top_, right_, bottom_, *paint);
}
-
- static void drawOval(JNIEnv* env, jobject, SkCanvas* canvas, jobject joval,
- SkPaint* paint) {
+
+ static void drawOval(JNIEnv* env, jobject, jlong canvasHandle, jobject joval,
+ jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
SkRect oval;
GraphicsJNI::jrectf_to_rect(env, joval, &oval);
canvas->drawOval(oval, *paint);
}
-
- static void drawCircle(JNIEnv* env, jobject, SkCanvas* canvas, jfloat cx,
- jfloat cy, jfloat radius, SkPaint* paint) {
+
+ static void drawCircle(JNIEnv* env, jobject, jlong canvasHandle, jfloat cx,
+ jfloat cy, jfloat radius, jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
canvas->drawCircle(SkFloatToScalar(cx), SkFloatToScalar(cy),
SkFloatToScalar(radius), *paint);
}
-
- static void drawArc(JNIEnv* env, jobject, SkCanvas* canvas, jobject joval,
+
+ static void drawArc(JNIEnv* env, jobject, jlong canvasHandle, jobject joval,
jfloat startAngle, jfloat sweepAngle,
- jboolean useCenter, SkPaint* paint) {
+ jboolean useCenter, jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
SkRect oval;
GraphicsJNI::jrectf_to_rect(env, joval, &oval);
canvas->drawArc(oval, SkFloatToScalar(startAngle),
SkFloatToScalar(sweepAngle), useCenter, *paint);
}
-
- static void drawRoundRect(JNIEnv* env, jobject, SkCanvas* canvas,
+
+ static void drawRoundRect(JNIEnv* env, jobject, jlong canvasHandle,
jobject jrect, jfloat rx, jfloat ry,
- SkPaint* paint) {
+ jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
SkRect rect;
GraphicsJNI::jrectf_to_rect(env, jrect, &rect);
canvas->drawRoundRect(rect, SkFloatToScalar(rx), SkFloatToScalar(ry),
*paint);
}
-
- static void drawPath(JNIEnv* env, jobject, SkCanvas* canvas, SkPath* path,
- SkPaint* paint) {
+
+ static void drawPath(JNIEnv* env, jobject, jlong canvasHandle, jlong pathHandle,
+ jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
canvas->drawPath(*path, *paint);
}
-
+
static void drawBitmap__BitmapFFPaint(JNIEnv* env, jobject jcanvas,
- SkCanvas* canvas, SkBitmap* bitmap,
+ jlong canvasHandle, jlong bitmapHandle,
jfloat left, jfloat top,
- SkPaint* paint, jint canvasDensity,
+ jlong paintHandle, jint canvasDensity,
jint screenDensity, jint bitmapDensity) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
SkScalar left_ = SkFloatToScalar(left);
SkScalar top_ = SkFloatToScalar(top);
@@ -508,7 +580,7 @@ public:
GraphicsJNI::jrect_to_irect(env, srcIRect, &src);
srcPtr = &src;
}
-
+
if (screenDensity != 0 && screenDensity != bitmapDensity) {
SkPaint filteredPaint;
if (paint) {
@@ -521,31 +593,39 @@ public:
}
}
- static void drawBitmapRF(JNIEnv* env, jobject, SkCanvas* canvas,
- SkBitmap* bitmap, jobject srcIRect,
- jobject dstRectF, SkPaint* paint,
+ static void drawBitmapRF(JNIEnv* env, jobject, jlong canvasHandle,
+ jlong bitmapHandle, jobject srcIRect,
+ jobject dstRectF, jlong paintHandle,
jint screenDensity, jint bitmapDensity) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
SkRect dst;
GraphicsJNI::jrectf_to_rect(env, dstRectF, &dst);
doDrawBitmap(env, canvas, bitmap, srcIRect, dst, paint,
screenDensity, bitmapDensity);
}
-
- static void drawBitmapRR(JNIEnv* env, jobject, SkCanvas* canvas,
- SkBitmap* bitmap, jobject srcIRect,
- jobject dstRect, SkPaint* paint,
+
+ static void drawBitmapRR(JNIEnv* env, jobject, jlong canvasHandle,
+ jlong bitmapHandle, jobject srcIRect,
+ jobject dstRect, jlong paintHandle,
jint screenDensity, jint bitmapDensity) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
SkRect dst;
GraphicsJNI::jrect_to_rect(env, dstRect, &dst);
doDrawBitmap(env, canvas, bitmap, srcIRect, dst, paint,
screenDensity, bitmapDensity);
}
-
- static void drawBitmapArray(JNIEnv* env, jobject, SkCanvas* canvas,
- jintArray jcolors, int offset, int stride,
- jfloat x, jfloat y, int width, int height,
- jboolean hasAlpha, SkPaint* paint)
+
+ static void drawBitmapArray(JNIEnv* env, jobject, jlong canvasHandle,
+ jintArray jcolors, jint offset, jint stride,
+ jfloat x, jfloat y, jint width, jint height,
+ jboolean hasAlpha, jlong paintHandle)
{
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
SkBitmap bitmap;
bitmap.setConfig(hasAlpha ? SkBitmap::kARGB_8888_Config :
SkBitmap::kRGB_565_Config, width, height);
@@ -561,24 +641,31 @@ public:
canvas->drawBitmap(bitmap, SkFloatToScalar(x), SkFloatToScalar(y),
paint);
}
-
- static void drawBitmapMatrix(JNIEnv* env, jobject, SkCanvas* canvas,
- const SkBitmap* bitmap, const SkMatrix* matrix,
- const SkPaint* paint) {
+
+ static void drawBitmapMatrix(JNIEnv* env, jobject, jlong canvasHandle,
+ jlong bitmapHandle, jlong matrixHandle,
+ jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ const SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
+ const SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
canvas->drawBitmapMatrix(*bitmap, *matrix, paint);
}
-
- static void drawBitmapMesh(JNIEnv* env, jobject, SkCanvas* canvas,
- const SkBitmap* bitmap, int meshWidth, int meshHeight,
- jfloatArray jverts, int vertIndex, jintArray jcolors,
- int colorIndex, const SkPaint* paint) {
+
+ static void drawBitmapMesh(JNIEnv* env, jobject, jlong canvasHandle,
+ jlong bitmapHandle, jint meshWidth, jint meshHeight,
+ jfloatArray jverts, jint vertIndex, jintArray jcolors,
+ jint colorIndex, jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ const SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
const int ptCount = (meshWidth + 1) * (meshHeight + 1);
const int indexCount = meshWidth * meshHeight * 6;
AutoJavaFloatArray vertA(env, jverts, vertIndex + (ptCount << 1));
AutoJavaIntArray colorA(env, jcolors, colorIndex + ptCount);
-
+
/* Our temp storage holds 2 or 3 arrays.
texture points [ptCount * sizeof(SkPoint)]
optionally vertex points [ptCount * sizeof(SkPoint)] if we need a
@@ -617,7 +704,7 @@ public:
const SkScalar h = SkIntToScalar(bitmap->height());
const SkScalar dx = w / meshWidth;
const SkScalar dy = h / meshHeight;
-
+
SkPoint* texsPtr = texs;
SkScalar y = 0;
for (int i = 0; i <= meshHeight; i++) {
@@ -636,7 +723,7 @@ public:
}
SkASSERT(texsPtr - texs == ptCount);
}
-
+
// cons up indices
{
uint16_t* indexPtr = indices;
@@ -684,13 +771,16 @@ public:
indexCount, tmpPaint);
}
- static void drawVertices(JNIEnv* env, jobject, SkCanvas* canvas,
- SkCanvas::VertexMode mode, int vertexCount,
- jfloatArray jverts, int vertIndex,
- jfloatArray jtexs, int texIndex,
- jintArray jcolors, int colorIndex,
- jshortArray jindices, int indexIndex,
- int indexCount, const SkPaint* paint) {
+ static void drawVertices(JNIEnv* env, jobject, jlong canvasHandle,
+ jint modeHandle, jint vertexCount,
+ jfloatArray jverts, jint vertIndex,
+ jfloatArray jtexs, jint texIndex,
+ jintArray jcolors, jint colorIndex,
+ jshortArray jindices, jint indexIndex,
+ jint indexCount, jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkCanvas::VertexMode mode = static_cast<SkCanvas::VertexMode>(modeHandle);
+ const SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
AutoJavaFloatArray vertA(env, jverts, vertIndex + vertexCount);
AutoJavaFloatArray texA(env, jtexs, texIndex + vertexCount);
@@ -712,7 +802,7 @@ public:
count += ptCount; // += for texs
}
SkAutoMalloc storage(count * sizeof(SkPoint));
- verts = (SkPoint*)storage.get();
+ verts = (SkPoint*)storage.get();
const float* src = vertA.ptr() + vertIndex;
for (int i = 0; i < ptCount; i++) {
verts[i].set(SkFloatToFixed(src[0]), SkFloatToFixed(src[1]));
@@ -742,18 +832,22 @@ public:
}
- static void drawText___CIIFFIPaint(JNIEnv* env, jobject, SkCanvas* canvas,
- jcharArray text, int index, int count,
- jfloat x, jfloat y, int flags, SkPaint* paint) {
+ static void drawText___CIIFFIPaint(JNIEnv* env, jobject, jlong canvasHandle,
+ jcharArray text, jint index, jint count,
+ jfloat x, jfloat y, jint flags, jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
jchar* textArray = env->GetCharArrayElements(text, NULL);
drawTextWithGlyphs(canvas, textArray + index, 0, count, x, y, flags, paint);
env->ReleaseCharArrayElements(text, textArray, JNI_ABORT);
}
static void drawText__StringIIFFIPaint(JNIEnv* env, jobject,
- SkCanvas* canvas, jstring text,
- int start, int end,
- jfloat x, jfloat y, int flags, SkPaint* paint) {
+ jlong canvasHandle, jstring text,
+ jint start, jint end,
+ jfloat x, jfloat y, jint flags, jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
const jchar* textArray = env->GetStringChars(text, NULL);
drawTextWithGlyphs(canvas, textArray, start, end, x, y, flags, paint);
env->ReleaseStringChars(text, textArray);
@@ -843,9 +937,11 @@ static void doDrawTextDecorations(SkCanvas* canvas, jfloat x, jfloat y, jfloat l
}
static void drawTextRun___CIIIIFFIPaint(
- JNIEnv* env, jobject, SkCanvas* canvas, jcharArray text, int index,
- int count, int contextIndex, int contextCount,
- jfloat x, jfloat y, int dirFlags, SkPaint* paint) {
+ JNIEnv* env, jobject, jlong canvasHandle, jcharArray text, jint index,
+ jint count, jint contextIndex, jint contextCount,
+ jfloat x, jfloat y, jint dirFlags, jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
jchar* chars = env->GetCharArrayElements(text, NULL);
drawTextWithGlyphs(canvas, chars + contextIndex, index - contextIndex,
@@ -854,9 +950,11 @@ static void doDrawTextDecorations(SkCanvas* canvas, jfloat x, jfloat y, jfloat l
}
static void drawTextRun__StringIIIIFFIPaint(
- JNIEnv* env, jobject obj, SkCanvas* canvas, jstring text, jint start,
+ JNIEnv* env, jobject obj, jlong canvasHandle, jstring text, jint start,
jint end, jint contextStart, jint contextEnd,
- jfloat x, jfloat y, jint dirFlags, SkPaint* paint) {
+ jfloat x, jfloat y, jint dirFlags, jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
jint count = end - start;
jint contextCount = contextEnd - contextStart;
@@ -866,9 +964,11 @@ static void doDrawTextDecorations(SkCanvas* canvas, jfloat x, jfloat y, jfloat l
env->ReleaseStringChars(text, chars);
}
- static void drawPosText___CII_FPaint(JNIEnv* env, jobject, SkCanvas* canvas,
- jcharArray text, int index, int count,
- jfloatArray pos, SkPaint* paint) {
+ static void drawPosText___CII_FPaint(JNIEnv* env, jobject, jlong canvasHandle,
+ jcharArray text, jint index, jint count,
+ jfloatArray pos, jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
jchar* textArray = text ? env->GetCharArrayElements(text, NULL) : NULL;
jsize textCount = text ? env->GetArrayLength(text) : NULL;
float* posArray = pos ? env->GetFloatArrayElements(pos, NULL) : NULL;
@@ -879,12 +979,12 @@ static void doDrawTextDecorations(SkCanvas* canvas, jfloat x, jfloat y, jfloat l
posPtr[indx].fX = SkFloatToScalar(posArray[indx << 1]);
posPtr[indx].fY = SkFloatToScalar(posArray[(indx << 1) + 1]);
}
-
+
SkPaint::TextEncoding encoding = paint->getTextEncoding();
paint->setTextEncoding(SkPaint::kUTF16_TextEncoding);
canvas->drawPosText(textArray + index, count << 1, posPtr, *paint);
paint->setTextEncoding(encoding);
-
+
if (text) {
env->ReleaseCharArrayElements(text, textArray, 0);
}
@@ -895,9 +995,11 @@ static void doDrawTextDecorations(SkCanvas* canvas, jfloat x, jfloat y, jfloat l
}
static void drawPosText__String_FPaint(JNIEnv* env, jobject,
- SkCanvas* canvas, jstring text,
+ jlong canvasHandle, jstring text,
jfloatArray pos,
- SkPaint* paint) {
+ jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
const void* text_ = text ? env->GetStringChars(text, NULL) : NULL;
int byteLength = text ? env->GetStringLength(text) : 0;
float* posArray = pos ? env->GetFloatArrayElements(pos, NULL) : NULL;
@@ -924,8 +1026,11 @@ static void doDrawTextDecorations(SkCanvas* canvas, jfloat x, jfloat y, jfloat l
}
static void drawTextOnPath___CIIPathFFPaint(JNIEnv* env, jobject,
- SkCanvas* canvas, jcharArray text, int index, int count,
- SkPath* path, jfloat hOffset, jfloat vOffset, jint bidiFlags, SkPaint* paint) {
+ jlong canvasHandle, jcharArray text, jint index, jint count,
+ jlong pathHandle, jfloat hOffset, jfloat vOffset, jint bidiFlags, jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
jchar* textArray = env->GetCharArrayElements(text, NULL);
TextLayout::drawTextOnPath(paint, textArray + index, count, bidiFlags, hOffset, vOffset,
@@ -934,8 +1039,11 @@ static void doDrawTextDecorations(SkCanvas* canvas, jfloat x, jfloat y, jfloat l
}
static void drawTextOnPath__StringPathFFPaint(JNIEnv* env, jobject,
- SkCanvas* canvas, jstring text, SkPath* path,
- jfloat hOffset, jfloat vOffset, jint bidiFlags, SkPaint* paint) {
+ jlong canvasHandle, jstring text, jlong pathHandle,
+ jfloat hOffset, jfloat vOffset, jint bidiFlags, jlong paintHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
const jchar* text_ = env->GetStringChars(text, NULL);
int count = env->GetStringLength(text);
TextLayout::drawTextOnPath(paint, text_, count, bidiFlags, hOffset, vOffset,
@@ -970,8 +1078,9 @@ static void doDrawTextDecorations(SkCanvas* canvas, jfloat x, jfloat y, jfloat l
return true;
}
- static bool getClipBounds(JNIEnv* env, jobject, SkCanvas* canvas,
- jobject bounds) {
+ static jboolean getClipBounds(JNIEnv* env, jobject, jlong canvasHandle,
+ jobject bounds) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
SkRect r;
SkIRect ir;
bool result = getHardClipBounds(canvas, &r);
@@ -982,30 +1091,32 @@ static void doDrawTextDecorations(SkCanvas* canvas, jfloat x, jfloat y, jfloat l
r.round(&ir);
(void)GraphicsJNI::irect_to_jrect(ir, env, bounds);
- return result;
+ return result ? JNI_TRUE : JNI_FALSE;
}
- static void getCTM(JNIEnv* env, jobject, SkCanvas* canvas,
- SkMatrix* matrix) {
+ static void getCTM(JNIEnv* env, jobject, jlong canvasHandle,
+ jlong matrixHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
*matrix = canvas->getTotalMatrix();
}
};
static JNINativeMethod gCanvasMethods[] = {
- {"finalizer", "(I)V", (void*) SkCanvasGlue::finalizer},
- {"initRaster","(I)I", (void*) SkCanvasGlue::initRaster},
- {"copyNativeCanvasState","(II)V", (void*) SkCanvasGlue::copyCanvasState},
+ {"finalizer", "(J)V", (void*) SkCanvasGlue::finalizer},
+ {"initRaster","(J)J", (void*) SkCanvasGlue::initRaster},
+ {"copyNativeCanvasState","(JJ)V", (void*) SkCanvasGlue::copyCanvasState},
{"isOpaque","()Z", (void*) SkCanvasGlue::isOpaque},
{"getWidth","()I", (void*) SkCanvasGlue::getWidth},
{"getHeight","()I", (void*) SkCanvasGlue::getHeight},
{"save","()I", (void*) SkCanvasGlue::saveAll},
{"save","(I)I", (void*) SkCanvasGlue::save},
- {"native_saveLayer","(ILandroid/graphics/RectF;II)I",
+ {"native_saveLayer","(JLandroid/graphics/RectF;JI)I",
(void*) SkCanvasGlue::saveLayer},
- {"native_saveLayer","(IFFFFII)I", (void*) SkCanvasGlue::saveLayer4F},
- {"native_saveLayerAlpha","(ILandroid/graphics/RectF;II)I",
+ {"native_saveLayer","(JFFFFJI)I", (void*) SkCanvasGlue::saveLayer4F},
+ {"native_saveLayerAlpha","(JLandroid/graphics/RectF;II)I",
(void*) SkCanvasGlue::saveLayerAlpha},
- {"native_saveLayerAlpha","(IFFFFII)I",
+ {"native_saveLayerAlpha","(JFFFFII)I",
(void*) SkCanvasGlue::saveLayerAlpha4F},
{"restore","()V", (void*) SkCanvasGlue::restore},
{"getSaveCount","()I", (void*) SkCanvasGlue::getSaveCount},
@@ -1014,77 +1125,77 @@ static JNINativeMethod gCanvasMethods[] = {
{"scale","(FF)V", (void*) SkCanvasGlue::scale__FF},
{"rotate","(F)V", (void*) SkCanvasGlue::rotate__F},
{"skew","(FF)V", (void*) SkCanvasGlue::skew__FF},
- {"native_concat","(II)V", (void*) SkCanvasGlue::concat},
- {"native_setMatrix","(II)V", (void*) SkCanvasGlue::setMatrix},
+ {"native_concat","(JJ)V", (void*) SkCanvasGlue::concat},
+ {"native_setMatrix","(JJ)V", (void*) SkCanvasGlue::setMatrix},
{"clipRect","(FFFF)Z", (void*) SkCanvasGlue::clipRect_FFFF},
{"clipRect","(IIII)Z", (void*) SkCanvasGlue::clipRect_IIII},
{"clipRect","(Landroid/graphics/RectF;)Z",
(void*) SkCanvasGlue::clipRect_RectF},
{"clipRect","(Landroid/graphics/Rect;)Z",
(void*) SkCanvasGlue::clipRect_Rect},
- {"native_clipRect","(IFFFFI)Z", (void*) SkCanvasGlue::clipRect},
- {"native_clipPath","(III)Z", (void*) SkCanvasGlue::clipPath},
- {"native_clipRegion","(III)Z", (void*) SkCanvasGlue::clipRegion},
- {"nativeSetDrawFilter", "(II)V", (void*) SkCanvasGlue::setDrawFilter},
- {"native_getClipBounds","(ILandroid/graphics/Rect;)Z",
+ {"native_clipRect","(JFFFFI)Z", (void*) SkCanvasGlue::clipRect},
+ {"native_clipPath","(JJI)Z", (void*) SkCanvasGlue::clipPath},
+ {"native_clipRegion","(JJI)Z", (void*) SkCanvasGlue::clipRegion},
+ {"nativeSetDrawFilter", "(JJ)V", (void*) SkCanvasGlue::setDrawFilter},
+ {"native_getClipBounds","(JLandroid/graphics/Rect;)Z",
(void*) SkCanvasGlue::getClipBounds},
- {"native_getCTM", "(II)V", (void*)SkCanvasGlue::getCTM},
- {"native_quickReject","(ILandroid/graphics/RectF;)Z",
+ {"native_getCTM", "(JJ)V", (void*)SkCanvasGlue::getCTM},
+ {"native_quickReject","(JLandroid/graphics/RectF;)Z",
(void*) SkCanvasGlue::quickReject__RectF},
- {"native_quickReject","(II)Z", (void*) SkCanvasGlue::quickReject__Path},
- {"native_quickReject","(IFFFF)Z", (void*)SkCanvasGlue::quickReject__FFFF},
- {"native_drawRGB","(IIII)V", (void*) SkCanvasGlue::drawRGB},
- {"native_drawARGB","(IIIII)V", (void*) SkCanvasGlue::drawARGB},
- {"native_drawColor","(II)V", (void*) SkCanvasGlue::drawColor__I},
- {"native_drawColor","(III)V", (void*) SkCanvasGlue::drawColor__II},
- {"native_drawPaint","(II)V", (void*) SkCanvasGlue::drawPaint},
+ {"native_quickReject","(JJ)Z", (void*) SkCanvasGlue::quickReject__Path},
+ {"native_quickReject","(JFFFF)Z", (void*)SkCanvasGlue::quickReject__FFFF},
+ {"native_drawRGB","(JIII)V", (void*) SkCanvasGlue::drawRGB},
+ {"native_drawARGB","(JIIII)V", (void*) SkCanvasGlue::drawARGB},
+ {"native_drawColor","(JI)V", (void*) SkCanvasGlue::drawColor__I},
+ {"native_drawColor","(JII)V", (void*) SkCanvasGlue::drawColor__II},
+ {"native_drawPaint","(JJ)V", (void*) SkCanvasGlue::drawPaint},
{"drawPoint", "(FFLandroid/graphics/Paint;)V",
(void*) SkCanvasGlue::drawPoint},
{"drawPoints", "([FIILandroid/graphics/Paint;)V",
(void*) SkCanvasGlue::drawPoints},
{"drawLines", "([FIILandroid/graphics/Paint;)V",
(void*) SkCanvasGlue::drawLines},
- {"native_drawLine","(IFFFFI)V", (void*) SkCanvasGlue::drawLine__FFFFPaint},
- {"native_drawRect","(ILandroid/graphics/RectF;I)V",
+ {"native_drawLine","(JFFFFJ)V", (void*) SkCanvasGlue::drawLine__FFFFPaint},
+ {"native_drawRect","(JLandroid/graphics/RectF;J)V",
(void*) SkCanvasGlue::drawRect__RectFPaint},
- {"native_drawRect","(IFFFFI)V", (void*) SkCanvasGlue::drawRect__FFFFPaint},
- {"native_drawOval","(ILandroid/graphics/RectF;I)V",
+ {"native_drawRect","(JFFFFJ)V", (void*) SkCanvasGlue::drawRect__FFFFPaint},
+ {"native_drawOval","(JLandroid/graphics/RectF;J)V",
(void*) SkCanvasGlue::drawOval},
- {"native_drawCircle","(IFFFI)V", (void*) SkCanvasGlue::drawCircle},
- {"native_drawArc","(ILandroid/graphics/RectF;FFZI)V",
+ {"native_drawCircle","(JFFFJ)V", (void*) SkCanvasGlue::drawCircle},
+ {"native_drawArc","(JLandroid/graphics/RectF;FFZJ)V",
(void*) SkCanvasGlue::drawArc},
- {"native_drawRoundRect","(ILandroid/graphics/RectF;FFI)V",
+ {"native_drawRoundRect","(JLandroid/graphics/RectF;FFJ)V",
(void*) SkCanvasGlue::drawRoundRect},
- {"native_drawPath","(III)V", (void*) SkCanvasGlue::drawPath},
- {"native_drawBitmap","(IIFFIIII)V",
+ {"native_drawPath","(JJJ)V", (void*) SkCanvasGlue::drawPath},
+ {"native_drawBitmap","(JJFFJIII)V",
(void*) SkCanvasGlue::drawBitmap__BitmapFFPaint},
- {"native_drawBitmap","(IILandroid/graphics/Rect;Landroid/graphics/RectF;III)V",
+ {"native_drawBitmap","(JJLandroid/graphics/Rect;Landroid/graphics/RectF;JII)V",
(void*) SkCanvasGlue::drawBitmapRF},
- {"native_drawBitmap","(IILandroid/graphics/Rect;Landroid/graphics/Rect;III)V",
+ {"native_drawBitmap","(JJLandroid/graphics/Rect;Landroid/graphics/Rect;JII)V",
(void*) SkCanvasGlue::drawBitmapRR},
- {"native_drawBitmap", "(I[IIIFFIIZI)V",
+ {"native_drawBitmap", "(J[IIIFFIIZJ)V",
(void*)SkCanvasGlue::drawBitmapArray},
- {"nativeDrawBitmapMatrix", "(IIII)V",
+ {"nativeDrawBitmapMatrix", "(JJJJ)V",
(void*)SkCanvasGlue::drawBitmapMatrix},
- {"nativeDrawBitmapMesh", "(IIII[FI[III)V",
+ {"nativeDrawBitmapMesh", "(JJII[FI[IIJ)V",
(void*)SkCanvasGlue::drawBitmapMesh},
- {"nativeDrawVertices", "(III[FI[FI[II[SIII)V",
+ {"nativeDrawVertices", "(JII[FI[FI[II[SIIJ)V",
(void*)SkCanvasGlue::drawVertices},
- {"native_drawText","(I[CIIFFII)V",
+ {"native_drawText","(J[CIIFFIJ)V",
(void*) SkCanvasGlue::drawText___CIIFFIPaint},
- {"native_drawText","(ILjava/lang/String;IIFFII)V",
+ {"native_drawText","(JLjava/lang/String;IIFFIJ)V",
(void*) SkCanvasGlue::drawText__StringIIFFIPaint},
- {"native_drawTextRun","(I[CIIIIFFII)V",
+ {"native_drawTextRun","(J[CIIIIFFIJ)V",
(void*) SkCanvasGlue::drawTextRun___CIIIIFFIPaint},
- {"native_drawTextRun","(ILjava/lang/String;IIIIFFII)V",
+ {"native_drawTextRun","(JLjava/lang/String;IIIIFFIJ)V",
(void*) SkCanvasGlue::drawTextRun__StringIIIIFFIPaint},
- {"native_drawPosText","(I[CII[FI)V",
+ {"native_drawPosText","(J[CII[FJ)V",
(void*) SkCanvasGlue::drawPosText___CII_FPaint},
- {"native_drawPosText","(ILjava/lang/String;[FI)V",
+ {"native_drawPosText","(JLjava/lang/String;[FJ)V",
(void*) SkCanvasGlue::drawPosText__String_FPaint},
- {"native_drawTextOnPath","(I[CIIIFFII)V",
+ {"native_drawTextOnPath","(J[CIIJFFIJ)V",
(void*) SkCanvasGlue::drawTextOnPath___CIIPathFFPaint},
- {"native_drawTextOnPath","(ILjava/lang/String;IFFII)V",
+ {"native_drawTextOnPath","(JLjava/lang/String;JFFIJ)V",
(void*) SkCanvasGlue::drawTextOnPath__StringPathFFPaint},
{"freeCaches", "()V", (void*) SkCanvasGlue::freeCaches},
@@ -1105,7 +1216,7 @@ int register_android_graphics_Canvas(JNIEnv* env) {
int result;
REG(env, "android/graphics/Canvas", gCanvasMethods);
-
+
return result;
}
diff --git a/core/jni/android/graphics/ColorFilter.cpp b/core/jni/android/graphics/ColorFilter.cpp
index dd1177b90750..f9cefd6fe6d8 100644
--- a/core/jni/android/graphics/ColorFilter.cpp
+++ b/core/jni/android/graphics/ColorFilter.cpp
@@ -32,7 +32,9 @@ using namespace uirenderer;
class SkColorFilterGlue {
public:
- static void finalizer(JNIEnv* env, jobject clazz, SkColorFilter* obj, SkiaColorFilter* f) {
+ static void finalizer(JNIEnv* env, jobject clazz, jlong objHandle, jlong fHandle) {
+ SkColorFilter* obj = reinterpret_cast<SkColorFilter *>(objHandle);
+ SkiaColorFilter* f = reinterpret_cast<SkiaColorFilter *>(fHandle);
SkSafeUnref(obj);
// f == NULL when not !USE_OPENGL_RENDERER, so no need to delete outside the ifdef
#ifdef USE_OPENGL_RENDERER
@@ -44,26 +46,30 @@ public:
#endif
}
- static SkiaColorFilter* glCreatePorterDuffFilter(JNIEnv* env, jobject, SkColorFilter *skFilter,
- jint srcColor, SkPorterDuff::Mode mode) {
+ static jlong glCreatePorterDuffFilter(JNIEnv* env, jobject, jlong skFilterHandle,
+ jint srcColor, jint modeHandle) {
+ SkColorFilter *skFilter = reinterpret_cast<SkColorFilter *>(skFilterHandle);
+ SkPorterDuff::Mode mode = static_cast<SkPorterDuff::Mode>(modeHandle);
#ifdef USE_OPENGL_RENDERER
- return new SkiaBlendFilter(skFilter, srcColor, SkPorterDuff::ToXfermodeMode(mode));
+ return reinterpret_cast<jlong>(new SkiaBlendFilter(skFilter, srcColor, SkPorterDuff::ToXfermodeMode(mode)));
#else
return NULL;
#endif
}
- static SkiaColorFilter* glCreateLightingFilter(JNIEnv* env, jobject, SkColorFilter *skFilter,
+ static jlong glCreateLightingFilter(JNIEnv* env, jobject, jlong skFilterHandle,
jint mul, jint add) {
+ SkColorFilter *skFilter = reinterpret_cast<SkColorFilter *>(skFilterHandle);
#ifdef USE_OPENGL_RENDERER
- return new SkiaLightingFilter(skFilter, mul, add);
+ return reinterpret_cast<jlong>(new SkiaLightingFilter(skFilter, mul, add));
#else
return NULL;
#endif
}
- static SkiaColorFilter* glCreateColorMatrixFilter(JNIEnv* env, jobject, SkColorFilter *skFilter,
+ static jlong glCreateColorMatrixFilter(JNIEnv* env, jobject, jlong skFilterHandle,
jfloatArray jarray) {
+ SkColorFilter *skFilter = reinterpret_cast<SkColorFilter *>(skFilterHandle);
#ifdef USE_OPENGL_RENDERER
AutoJavaFloatArray autoArray(env, jarray, 20);
const float* src = autoArray.ptr();
@@ -80,22 +86,23 @@ public:
colorVector[2] = src[14];
colorVector[3] = src[19];
- return new SkiaColorMatrixFilter(skFilter, colorMatrix, colorVector);
+ return reinterpret_cast<jlong>(new SkiaColorMatrixFilter(skFilter, colorMatrix, colorVector));
#else
return NULL;
#endif
}
- static SkColorFilter* CreatePorterDuffFilter(JNIEnv* env, jobject, jint srcColor,
- SkPorterDuff::Mode mode) {
- return SkColorFilter::CreateModeFilter(srcColor, SkPorterDuff::ToXfermodeMode(mode));
+ static jlong CreatePorterDuffFilter(JNIEnv* env, jobject, jint srcColor,
+ jint modeHandle) {
+ SkPorterDuff::Mode mode = (SkPorterDuff::Mode) modeHandle;
+ return reinterpret_cast<jlong>(SkColorFilter::CreateModeFilter(srcColor, SkPorterDuff::ToXfermodeMode(mode)));
}
- static SkColorFilter* CreateLightingFilter(JNIEnv* env, jobject, jint mul, jint add) {
- return SkColorFilter::CreateLightingFilter(mul, add);
+ static jlong CreateLightingFilter(JNIEnv* env, jobject, jint mul, jint add) {
+ return reinterpret_cast<jlong>(SkColorFilter::CreateLightingFilter(mul, add));
}
- static SkColorFilter* CreateColorMatrixFilter(JNIEnv* env, jobject, jfloatArray jarray) {
+ static jlong CreateColorMatrixFilter(JNIEnv* env, jobject, jfloatArray jarray) {
AutoJavaFloatArray autoArray(env, jarray, 20);
const float* src = autoArray.ptr();
@@ -104,30 +111,30 @@ public:
for (int i = 0; i < 20; i++) {
array[i] = SkFloatToScalar(src[i]);
}
- return new SkColorMatrixFilter(array);
+ return reinterpret_cast<jlong>(new SkColorMatrixFilter(array));
#else
- return new SkColorMatrixFilter(src);
+ return reinterpret_cast<jlong>(new SkColorMatrixFilter(src));
#endif
}
};
static JNINativeMethod colorfilter_methods[] = {
- {"finalizer", "(II)V", (void*) SkColorFilterGlue::finalizer}
+ {"finalizer", "(JJ)V", (void*) SkColorFilterGlue::finalizer}
};
static JNINativeMethod porterduff_methods[] = {
- { "native_CreatePorterDuffFilter", "(II)I", (void*) SkColorFilterGlue::CreatePorterDuffFilter },
- { "nCreatePorterDuffFilter", "(III)I", (void*) SkColorFilterGlue::glCreatePorterDuffFilter }
+ { "native_CreatePorterDuffFilter", "(II)J", (void*) SkColorFilterGlue::CreatePorterDuffFilter },
+ { "nCreatePorterDuffFilter", "(JII)J", (void*) SkColorFilterGlue::glCreatePorterDuffFilter }
};
static JNINativeMethod lighting_methods[] = {
- { "native_CreateLightingFilter", "(II)I", (void*) SkColorFilterGlue::CreateLightingFilter },
- { "nCreateLightingFilter", "(III)I", (void*) SkColorFilterGlue::glCreateLightingFilter },
+ { "native_CreateLightingFilter", "(II)J", (void*) SkColorFilterGlue::CreateLightingFilter },
+ { "nCreateLightingFilter", "(JII)J", (void*) SkColorFilterGlue::glCreateLightingFilter },
};
static JNINativeMethod colormatrix_methods[] = {
- { "nativeColorMatrixFilter", "([F)I", (void*) SkColorFilterGlue::CreateColorMatrixFilter },
- { "nColorMatrixFilter", "(I[F)I", (void*) SkColorFilterGlue::glCreateColorMatrixFilter }
+ { "nativeColorMatrixFilter", "([F)J", (void*) SkColorFilterGlue::CreateColorMatrixFilter },
+ { "nColorMatrixFilter", "(J[F)J", (void*) SkColorFilterGlue::glCreateColorMatrixFilter }
};
#define REG(env, name, array) \
diff --git a/core/jni/android/graphics/DrawFilter.cpp b/core/jni/android/graphics/DrawFilter.cpp
index 2f9fe7ed3ff6..fbfa2ec0972b 100644
--- a/core/jni/android/graphics/DrawFilter.cpp
+++ b/core/jni/android/graphics/DrawFilter.cpp
@@ -33,18 +33,20 @@ namespace android {
class SkDrawFilterGlue {
public:
- static void finalizer(JNIEnv* env, jobject clazz, SkDrawFilter* obj) {
+ static void finalizer(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkDrawFilter* obj = reinterpret_cast<SkDrawFilter*>(objHandle);
SkSafeUnref(obj);
}
- static SkDrawFilter* CreatePaintFlagsDF(JNIEnv* env, jobject clazz,
- int clearFlags, int setFlags) {
+ static jlong CreatePaintFlagsDF(JNIEnv* env, jobject clazz,
+ jint clearFlags, jint setFlags) {
// trim off any out-of-range bits
clearFlags &= SkPaint::kAllFlags;
setFlags &= SkPaint::kAllFlags;
if (clearFlags | setFlags) {
- return new SkPaintFlagsDrawFilter(clearFlags, setFlags);
+ SkDrawFilter* filter = new SkPaintFlagsDrawFilter(clearFlags, setFlags);
+ return reinterpret_cast<jlong>(filter);
} else {
return NULL;
}
@@ -52,11 +54,11 @@ public:
};
static JNINativeMethod drawfilter_methods[] = {
- {"nativeDestructor", "(I)V", (void*) SkDrawFilterGlue::finalizer}
+ {"nativeDestructor", "(J)V", (void*) SkDrawFilterGlue::finalizer}
};
static JNINativeMethod paintflags_methods[] = {
- {"nativeConstructor","(II)I", (void*) SkDrawFilterGlue::CreatePaintFlagsDF}
+ {"nativeConstructor","(II)J", (void*) SkDrawFilterGlue::CreatePaintFlagsDF}
};
#define REG(env, name, array) \
diff --git a/core/jni/android/graphics/Graphics.cpp b/core/jni/android/graphics/Graphics.cpp
index 3090ad2ff711..5d951ca17c38 100644
--- a/core/jni/android/graphics/Graphics.cpp
+++ b/core/jni/android/graphics/Graphics.cpp
@@ -174,6 +174,12 @@ static jclass gRegion_class;
static jfieldID gRegion_nativeInstanceID;
static jmethodID gRegion_constructorMethodID;
+static jclass gByte_class;
+static jobject gVMRuntime;
+static jclass gVMRuntime_class;
+static jmethodID gVMRuntime_newNonMovableArray;
+static jmethodID gVMRuntime_addressOf;
+
///////////////////////////////////////////////////////////////////////////////
void GraphicsJNI::get_jrect(JNIEnv* env, jobject obj, int* L, int* T, int* R, int* B)
@@ -287,7 +293,8 @@ SkBitmap* GraphicsJNI::getNativeBitmap(JNIEnv* env, jobject bitmap) {
SkASSERT(env);
SkASSERT(bitmap);
SkASSERT(env->IsInstanceOf(bitmap, gBitmap_class));
- SkBitmap* b = (SkBitmap*)env->GetIntField(bitmap, gBitmap_nativeInstanceID);
+ jlong bitmapHandle = env->GetLongField(bitmap, gBitmap_nativeInstanceID);
+ SkBitmap* b = reinterpret_cast<SkBitmap*>(bitmapHandle);
SkASSERT(b);
return b;
}
@@ -310,7 +317,8 @@ SkCanvas* GraphicsJNI::getNativeCanvas(JNIEnv* env, jobject canvas) {
SkASSERT(env);
SkASSERT(canvas);
SkASSERT(env->IsInstanceOf(canvas, gCanvas_class));
- SkCanvas* c = (SkCanvas*)env->GetIntField(canvas, gCanvas_nativeInstanceID);
+ jlong canvasHandle = env->GetLongField(canvas, gCanvas_nativeInstanceID);
+ SkCanvas* c = reinterpret_cast<SkCanvas*>(canvasHandle);
SkASSERT(c);
return c;
}
@@ -319,7 +327,8 @@ SkPaint* GraphicsJNI::getNativePaint(JNIEnv* env, jobject paint) {
SkASSERT(env);
SkASSERT(paint);
SkASSERT(env->IsInstanceOf(paint, gPaint_class));
- SkPaint* p = (SkPaint*)env->GetIntField(paint, gPaint_nativeInstanceID);
+ jlong paintHandle = env->GetLongField(paint, gPaint_nativeInstanceID);
+ SkPaint* p = reinterpret_cast<SkPaint*>(paintHandle);
SkASSERT(p);
return p;
}
@@ -329,7 +338,8 @@ SkPicture* GraphicsJNI::getNativePicture(JNIEnv* env, jobject picture)
SkASSERT(env);
SkASSERT(picture);
SkASSERT(env->IsInstanceOf(picture, gPicture_class));
- SkPicture* p = (SkPicture*)env->GetIntField(picture, gPicture_nativeInstanceID);
+ jlong pictureHandle = env->GetLongField(picture, gPicture_nativeInstanceID);
+ SkPicture* p = reinterpret_cast<SkPicture*>(pictureHandle);
SkASSERT(p);
return p;
}
@@ -339,7 +349,8 @@ SkRegion* GraphicsJNI::getNativeRegion(JNIEnv* env, jobject region)
SkASSERT(env);
SkASSERT(region);
SkASSERT(env->IsInstanceOf(region, gRegion_class));
- SkRegion* r = (SkRegion*)env->GetIntField(region, gRegion_nativeInstanceID);
+ jlong regionHandle = env->GetLongField(region, gRegion_nativeInstanceID);
+ SkRegion* r = reinterpret_cast<SkRegion*>(regionHandle);
SkASSERT(r);
return r;
}
@@ -371,7 +382,7 @@ jobject GraphicsJNI::createBitmap(JNIEnv* env, SkBitmap* bitmap, jbyteArray buff
assert_premultiplied(*bitmap, isPremultiplied);
jobject obj = env->NewObject(gBitmap_class, gBitmap_constructorMethodID,
- static_cast<jint>(reinterpret_cast<uintptr_t>(bitmap)), buffer,
+ reinterpret_cast<jlong>(bitmap), buffer,
bitmap->width(), bitmap->height(), density, isMutable, isPremultiplied,
ninepatch, layoutbounds);
hasException(env); // For the side effect of logging.
@@ -406,7 +417,7 @@ jobject GraphicsJNI::createBitmapRegionDecoder(JNIEnv* env, SkBitmapRegionDecode
jobject obj = env->NewObject(gBitmapRegionDecoder_class,
gBitmapRegionDecoder_constructorMethodID,
- static_cast<jint>(reinterpret_cast<uintptr_t>(bitmap)));
+ reinterpret_cast<jlong>(bitmap));
hasException(env); // For the side effect of logging.
return obj;
}
@@ -415,7 +426,7 @@ jobject GraphicsJNI::createRegion(JNIEnv* env, SkRegion* region)
{
SkASSERT(region != NULL);
jobject obj = env->NewObject(gRegion_class, gRegion_constructorMethodID,
- static_cast<jint>(reinterpret_cast<uintptr_t>(region)), 0);
+ reinterpret_cast<jlong>(region), 0);
hasException(env); // For the side effect of logging.
return obj;
}
@@ -550,8 +561,6 @@ void AndroidPixelRef::globalUnref() {
///////////////////////////////////////////////////////////////////////////////
-extern "C" jbyte* jniGetNonMovableArrayElements(C_JNIEnv* env, jarray arrayObj);
-
jbyteArray GraphicsJNI::allocateJavaPixelRef(JNIEnv* env, SkBitmap* bitmap,
SkColorTable* ctable) {
Sk64 size64 = bitmap->getSize64();
@@ -569,19 +578,24 @@ jbyteArray GraphicsJNI::allocateJavaPixelRef(JNIEnv* env, SkBitmap* bitmap,
}
size_t size = size64.get32();
- jbyteArray arrayObj = env->NewByteArray(size);
- if (arrayObj) {
- // TODO: make this work without jniGetNonMovableArrayElements
- jbyte* addr = jniGetNonMovableArrayElements(&env->functions, arrayObj);
- if (addr) {
- SkPixelRef* pr = new AndroidPixelRef(env, bitmapInfo, (void*) addr,
- bitmap->rowBytes(), arrayObj, ctable);
- bitmap->setPixelRef(pr)->unref();
- // since we're already allocated, we lockPixels right away
- // HeapAllocator behaves this way too
- bitmap->lockPixels();
- }
+ jbyteArray arrayObj = (jbyteArray) env->CallObjectMethod(gVMRuntime,
+ gVMRuntime_newNonMovableArray,
+ gByte_class, size);
+ if (env->ExceptionCheck() != 0) {
+ return NULL;
+ }
+ SkASSERT(arrayObj);
+ jbyte* addr = (jbyte*) env->CallLongMethod(gVMRuntime, gVMRuntime_addressOf, arrayObj);
+ if (env->ExceptionCheck() != 0) {
+ return NULL;
}
+ SkASSERT(addr);
+ SkPixelRef* pr = new AndroidPixelRef(env, bitmapInfo, (void*) addr,
+ bitmap->rowBytes(), arrayObj, ctable);
+ bitmap->setPixelRef(pr)->unref();
+ // since we're already allocated, we lockPixels right away
+ // HeapAllocator behaves this way too
+ bitmap->lockPixels();
return arrayObj;
}
@@ -630,7 +644,7 @@ static jclass make_globalref(JNIEnv* env, const char classname[])
{
jclass c = env->FindClass(classname);
SkASSERT(c);
- return (jclass)env->NewGlobalRef(c);
+ return (jclass) env->NewGlobalRef(c);
}
static jfieldID getFieldIDCheck(JNIEnv* env, jclass clazz,
@@ -667,30 +681,41 @@ int register_android_graphics_Graphics(JNIEnv* env)
gPointF_yFieldID = getFieldIDCheck(env, gPointF_class, "y", "F");
gBitmap_class = make_globalref(env, "android/graphics/Bitmap");
- gBitmap_nativeInstanceID = getFieldIDCheck(env, gBitmap_class, "mNativeBitmap", "I");
- gBitmap_constructorMethodID = env->GetMethodID(gBitmap_class, "<init>", "(I[BIIIZZ[B[I)V");
+ gBitmap_nativeInstanceID = getFieldIDCheck(env, gBitmap_class, "mNativeBitmap", "J");
+ gBitmap_constructorMethodID = env->GetMethodID(gBitmap_class, "<init>", "(J[BIIIZZ[B[I)V");
gBitmap_reinitMethodID = env->GetMethodID(gBitmap_class, "reinit", "(IIZ)V");
gBitmap_getAllocationByteCountMethodID = env->GetMethodID(gBitmap_class, "getAllocationByteCount", "()I");
gBitmapRegionDecoder_class = make_globalref(env, "android/graphics/BitmapRegionDecoder");
- gBitmapRegionDecoder_constructorMethodID = env->GetMethodID(gBitmapRegionDecoder_class, "<init>", "(I)V");
+ gBitmapRegionDecoder_constructorMethodID = env->GetMethodID(gBitmapRegionDecoder_class, "<init>", "(J)V");
gBitmapConfig_class = make_globalref(env, "android/graphics/Bitmap$Config");
gBitmapConfig_nativeInstanceID = getFieldIDCheck(env, gBitmapConfig_class,
"nativeInt", "I");
gCanvas_class = make_globalref(env, "android/graphics/Canvas");
- gCanvas_nativeInstanceID = getFieldIDCheck(env, gCanvas_class, "mNativeCanvas", "I");
+ gCanvas_nativeInstanceID = getFieldIDCheck(env, gCanvas_class, "mNativeCanvas", "J");
gPaint_class = make_globalref(env, "android/graphics/Paint");
- gPaint_nativeInstanceID = getFieldIDCheck(env, gPaint_class, "mNativePaint", "I");
+ gPaint_nativeInstanceID = getFieldIDCheck(env, gPaint_class, "mNativePaint", "J");
gPicture_class = make_globalref(env, "android/graphics/Picture");
- gPicture_nativeInstanceID = getFieldIDCheck(env, gPicture_class, "mNativePicture", "I");
+ gPicture_nativeInstanceID = getFieldIDCheck(env, gPicture_class, "mNativePicture", "J");
gRegion_class = make_globalref(env, "android/graphics/Region");
- gRegion_nativeInstanceID = getFieldIDCheck(env, gRegion_class, "mNativeRegion", "I");
+ gRegion_nativeInstanceID = getFieldIDCheck(env, gRegion_class, "mNativeRegion", "J");
gRegion_constructorMethodID = env->GetMethodID(gRegion_class, "<init>",
- "(II)V");
+ "(JI)V");
+
+ c = env->FindClass("java/lang/Byte");
+ gByte_class = (jclass) env->NewGlobalRef(
+ env->GetStaticObjectField(c, env->GetStaticFieldID(c, "TYPE", "Ljava/lang/Class;")));
+
+ gVMRuntime_class = make_globalref(env, "dalvik/system/VMRuntime");
+ m = env->GetStaticMethodID(gVMRuntime_class, "getRuntime", "()Ldalvik/system/VMRuntime;");
+ gVMRuntime = env->NewGlobalRef(env->CallStaticObjectMethod(gVMRuntime_class, m));
+ gVMRuntime_newNonMovableArray = env->GetMethodID(gVMRuntime_class, "newNonMovableArray",
+ "(Ljava/lang/Class;I)Ljava/lang/Object;");
+ gVMRuntime_addressOf = env->GetMethodID(gVMRuntime_class, "addressOf", "(Ljava/lang/Object;)J");
return 0;
}
diff --git a/core/jni/android/graphics/Interpolator.cpp b/core/jni/android/graphics/Interpolator.cpp
index aa33c3dcbc11..ca04dfec52e1 100644
--- a/core/jni/android/graphics/Interpolator.cpp
+++ b/core/jni/android/graphics/Interpolator.cpp
@@ -5,23 +5,26 @@
#include "SkInterpolator.h"
#include "SkTemplates.h"
-static SkInterpolator* Interpolator_constructor(JNIEnv* env, jobject clazz, int valueCount, int frameCount)
+static jlong Interpolator_constructor(JNIEnv* env, jobject clazz, jint valueCount, jint frameCount)
{
- return new SkInterpolator(valueCount, frameCount);
+ return reinterpret_cast<jlong>(new SkInterpolator(valueCount, frameCount));
}
-static void Interpolator_destructor(JNIEnv* env, jobject clazz, SkInterpolator* interp)
+static void Interpolator_destructor(JNIEnv* env, jobject clazz, jlong interpHandle)
{
+ SkInterpolator* interp = reinterpret_cast<SkInterpolator*>(interpHandle);
delete interp;
}
-static void Interpolator_reset(JNIEnv* env, jobject clazz, SkInterpolator* interp, int valueCount, int frameCount)
+static void Interpolator_reset(JNIEnv* env, jobject clazz, jlong interpHandle, jint valueCount, jint frameCount)
{
+ SkInterpolator* interp = reinterpret_cast<SkInterpolator*>(interpHandle);
interp->reset(valueCount, frameCount);
}
-static void Interpolator_setKeyFrame(JNIEnv* env, jobject clazz, SkInterpolator* interp, int index, int msec, jfloatArray valueArray, jfloatArray blendArray)
+static void Interpolator_setKeyFrame(JNIEnv* env, jobject clazz, jlong interpHandle, jint index, jint msec, jfloatArray valueArray, jfloatArray blendArray)
{
+ SkInterpolator* interp = reinterpret_cast<SkInterpolator*>(interpHandle);
SkScalar blendStorage[4];
SkScalar* blend = NULL;
@@ -46,8 +49,9 @@ static void Interpolator_setKeyFrame(JNIEnv* env, jobject clazz, SkInterpolator*
interp->setKeyFrame(index, msec, scalars, blend);
}
-static void Interpolator_setRepeatMirror(JNIEnv* env, jobject clazz, SkInterpolator* interp, float repeatCount, jboolean mirror)
+static void Interpolator_setRepeatMirror(JNIEnv* env, jobject clazz, jlong interpHandle, jfloat repeatCount, jboolean mirror)
{
+ SkInterpolator* interp = reinterpret_cast<SkInterpolator*>(interpHandle);
if (repeatCount > 32000)
repeatCount = 32000;
@@ -55,8 +59,9 @@ static void Interpolator_setRepeatMirror(JNIEnv* env, jobject clazz, SkInterpola
interp->setMirror(mirror != 0);
}
-static int Interpolator_timeToValues(JNIEnv* env, jobject clazz, SkInterpolator* interp, int msec, jfloatArray valueArray)
+static jint Interpolator_timeToValues(JNIEnv* env, jobject clazz, jlong interpHandle, jint msec, jfloatArray valueArray)
{
+ SkInterpolator* interp = reinterpret_cast<SkInterpolator*>(interpHandle);
SkInterpolatorBase::Result result;
float* values = valueArray ? env->GetFloatArrayElements(valueArray, NULL) : NULL;
@@ -70,7 +75,7 @@ static int Interpolator_timeToValues(JNIEnv* env, jobject clazz, SkInterpolator*
env->ReleaseFloatArrayElements(valueArray, values, 0);
}
- return result;
+ return static_cast<jint>(result);
}
// ----------------------------------------------------------------------------
@@ -79,12 +84,12 @@ static int Interpolator_timeToValues(JNIEnv* env, jobject clazz, SkInterpolator*
* JNI registration.
*/
static JNINativeMethod gInterpolatorMethods[] = {
- { "nativeConstructor", "(II)I", (void*)Interpolator_constructor },
- { "nativeDestructor", "(I)V", (void*)Interpolator_destructor },
- { "nativeReset", "(III)V", (void*)Interpolator_reset },
- { "nativeSetKeyFrame", "(III[F[F)V", (void*)Interpolator_setKeyFrame },
- { "nativeSetRepeatMirror", "(IFZ)V", (void*)Interpolator_setRepeatMirror },
- { "nativeTimeToValues", "(II[F)I", (void*)Interpolator_timeToValues }
+ { "nativeConstructor", "(II)J", (void*)Interpolator_constructor },
+ { "nativeDestructor", "(J)V", (void*)Interpolator_destructor },
+ { "nativeReset", "(JII)V", (void*)Interpolator_reset },
+ { "nativeSetKeyFrame", "(JII[F[F)V", (void*)Interpolator_setKeyFrame },
+ { "nativeSetRepeatMirror", "(JFZ)V", (void*)Interpolator_setRepeatMirror },
+ { "nativeTimeToValues", "(JI[F)I", (void*)Interpolator_timeToValues }
};
int register_android_graphics_Interpolator(JNIEnv* env)
diff --git a/core/jni/android/graphics/LayerRasterizer.cpp b/core/jni/android/graphics/LayerRasterizer.cpp
index e5bc6f8aee0b..29e7db17bfb7 100644
--- a/core/jni/android/graphics/LayerRasterizer.cpp
+++ b/core/jni/android/graphics/LayerRasterizer.cpp
@@ -3,11 +3,13 @@
class SkLayerRasterizerGlue {
public:
- static SkRasterizer* create(JNIEnv* env, jobject) {
- return new SkLayerRasterizer();
+ static jlong create(JNIEnv* env, jobject) {
+ return reinterpret_cast<jlong>(new SkLayerRasterizer());
}
- static void addLayer(JNIEnv* env, jobject, SkLayerRasterizer* layer, const SkPaint* paint, float dx, float dy) {
+ static void addLayer(JNIEnv* env, jobject, jlong layerHandle, jlong paintHandle, jfloat dx, jfloat dy) {
+ SkLayerRasterizer* layer = reinterpret_cast<SkLayerRasterizer *>(layerHandle);
+ const SkPaint* paint = reinterpret_cast<SkPaint *>(paintHandle);
SkASSERT(layer);
SkASSERT(paint);
layer->addLayer(*paint, SkFloatToScalar(dx), SkFloatToScalar(dy));
@@ -19,8 +21,8 @@ public:
#include <android_runtime/AndroidRuntime.h>
static JNINativeMethod gLayerRasterizerMethods[] = {
- { "nativeConstructor", "()I", (void*)SkLayerRasterizerGlue::create },
- { "nativeAddLayer", "(IIFF)V", (void*)SkLayerRasterizerGlue::addLayer }
+ { "nativeConstructor", "()J", (void*)SkLayerRasterizerGlue::create },
+ { "nativeAddLayer", "(JJFF)V", (void*)SkLayerRasterizerGlue::addLayer }
};
int register_android_graphics_LayerRasterizer(JNIEnv* env)
diff --git a/core/jni/android/graphics/MaskFilter.cpp b/core/jni/android/graphics/MaskFilter.cpp
index d954ddfea198..f331af70dac6 100644
--- a/core/jni/android/graphics/MaskFilter.cpp
+++ b/core/jni/android/graphics/MaskFilter.cpp
@@ -13,18 +13,19 @@ static void ThrowIAE_IfNull(JNIEnv* env, void* ptr) {
class SkMaskFilterGlue {
public:
- static void destructor(JNIEnv* env, jobject, SkMaskFilter* filter) {
+ static void destructor(JNIEnv* env, jobject, jlong filterHandle) {
+ SkMaskFilter* filter = reinterpret_cast<SkMaskFilter *>(filterHandle);
SkSafeUnref(filter);
}
- static SkMaskFilter* createBlur(JNIEnv* env, jobject, float radius, int blurStyle) {
+ static jlong createBlur(JNIEnv* env, jobject, jfloat radius, jint blurStyle) {
SkMaskFilter* filter = SkBlurMaskFilter::Create(SkFloatToScalar(radius),
(SkBlurMaskFilter::BlurStyle)blurStyle);
ThrowIAE_IfNull(env, filter);
- return filter;
+ return reinterpret_cast<jlong>(filter);
}
- static SkMaskFilter* createEmboss(JNIEnv* env, jobject, jfloatArray dirArray, float ambient, float specular, float radius) {
+ static jlong createEmboss(JNIEnv* env, jobject, jfloatArray dirArray, jfloat ambient, jfloat specular, jfloat radius) {
SkScalar direction[3];
AutoJavaFloatArray autoDir(env, dirArray, 3);
@@ -38,39 +39,42 @@ public:
SkFloatToScalar(specular),
SkFloatToScalar(radius));
ThrowIAE_IfNull(env, filter);
- return filter;
+ return reinterpret_cast<jlong>(filter);
}
- static SkMaskFilter* createTable(JNIEnv* env, jobject, jbyteArray jtable) {
+ static jlong createTable(JNIEnv* env, jobject, jbyteArray jtable) {
AutoJavaByteArray autoTable(env, jtable, 256);
- return new SkTableMaskFilter((const uint8_t*)autoTable.ptr());
+ SkMaskFilter* filter = new SkTableMaskFilter((const uint8_t*)autoTable.ptr());
+ return reinterpret_cast<jlong>(filter);
}
- static SkMaskFilter* createClipTable(JNIEnv* env, jobject, int min, int max) {
- return SkTableMaskFilter::CreateClip(min, max);
+ static jlong createClipTable(JNIEnv* env, jobject, jint min, jint max) {
+ SkMaskFilter* filter = SkTableMaskFilter::CreateClip(min, max);
+ return reinterpret_cast<jlong>(filter);
}
- static SkMaskFilter* createGammaTable(JNIEnv* env, jobject, float gamma) {
- return SkTableMaskFilter::CreateGamma(gamma);
+ static jlong createGammaTable(JNIEnv* env, jobject, jfloat gamma) {
+ SkMaskFilter* filter = SkTableMaskFilter::CreateGamma(gamma);
+ return reinterpret_cast<jlong>(filter);
}
};
static JNINativeMethod gMaskFilterMethods[] = {
- { "nativeDestructor", "(I)V", (void*)SkMaskFilterGlue::destructor }
+ { "nativeDestructor", "(J)V", (void*)SkMaskFilterGlue::destructor }
};
static JNINativeMethod gBlurMaskFilterMethods[] = {
- { "nativeConstructor", "(FI)I", (void*)SkMaskFilterGlue::createBlur }
+ { "nativeConstructor", "(FI)J", (void*)SkMaskFilterGlue::createBlur }
};
static JNINativeMethod gEmbossMaskFilterMethods[] = {
- { "nativeConstructor", "([FFFF)I", (void*)SkMaskFilterGlue::createEmboss }
+ { "nativeConstructor", "([FFFF)J", (void*)SkMaskFilterGlue::createEmboss }
};
static JNINativeMethod gTableMaskFilterMethods[] = {
- { "nativeNewTable", "([B)I", (void*)SkMaskFilterGlue::createTable },
- { "nativeNewClip", "(II)I", (void*)SkMaskFilterGlue::createClipTable },
- { "nativeNewGamma", "(F)I", (void*)SkMaskFilterGlue::createGammaTable }
+ { "nativeNewTable", "([B)J", (void*)SkMaskFilterGlue::createTable },
+ { "nativeNewClip", "(II)J", (void*)SkMaskFilterGlue::createClipTable },
+ { "nativeNewGamma", "(F)J", (void*)SkMaskFilterGlue::createGammaTable }
};
#include <android_runtime/AndroidRuntime.h>
diff --git a/core/jni/android/graphics/Matrix.cpp b/core/jni/android/graphics/Matrix.cpp
index d0871ac5082f..a667499887c2 100644
--- a/core/jni/android/graphics/Matrix.cpp
+++ b/core/jni/android/graphics/Matrix.cpp
@@ -31,218 +31,246 @@ namespace android {
class SkMatrixGlue {
public:
- static void finalizer(JNIEnv* env, jobject clazz, SkMatrix* obj) {
+ static void finalizer(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
delete obj;
}
- static SkMatrix* create(JNIEnv* env, jobject clazz, const SkMatrix* src) {
+ static jlong create(JNIEnv* env, jobject clazz, jlong srcHandle) {
+ const SkMatrix* src = reinterpret_cast<SkMatrix*>(srcHandle);
SkMatrix* obj = new SkMatrix();
if (src)
*obj = *src;
else
obj->reset();
- return obj;
+ return reinterpret_cast<jlong>(obj);
}
-
- static jboolean isIdentity(JNIEnv* env, jobject clazz, SkMatrix* obj) {
- return obj->isIdentity();
+
+ static jboolean isIdentity(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
+ return obj->isIdentity() ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean rectStaysRect(JNIEnv* env, jobject clazz, SkMatrix* obj) {
- return obj->rectStaysRect();
+ static jboolean rectStaysRect(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
+ return obj->rectStaysRect() ? JNI_TRUE : JNI_FALSE;
}
-
- static void reset(JNIEnv* env, jobject clazz, SkMatrix* obj) {
+ static void reset(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
obj->reset();
}
-
- static void set(JNIEnv* env, jobject clazz, SkMatrix* obj, SkMatrix* other) {
+ static void set(JNIEnv* env, jobject clazz, jlong objHandle, jlong otherHandle) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
+ SkMatrix* other = reinterpret_cast<SkMatrix*>(otherHandle);
*obj = *other;
}
-
- static void setTranslate(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat dx, jfloat dy) {
+ static void setTranslate(JNIEnv* env, jobject clazz, jlong objHandle, jfloat dx, jfloat dy) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar dx_ = SkFloatToScalar(dx);
SkScalar dy_ = SkFloatToScalar(dy);
obj->setTranslate(dx_, dy_);
}
-
- static void setScale__FFFF(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat sx, jfloat sy, jfloat px, jfloat py) {
+ static void setScale__FFFF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat sx, jfloat sy, jfloat px, jfloat py) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar sx_ = SkFloatToScalar(sx);
SkScalar sy_ = SkFloatToScalar(sy);
SkScalar px_ = SkFloatToScalar(px);
SkScalar py_ = SkFloatToScalar(py);
obj->setScale(sx_, sy_, px_, py_);
}
-
- static void setScale__FF(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat sx, jfloat sy) {
+ static void setScale__FF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat sx, jfloat sy) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar sx_ = SkFloatToScalar(sx);
SkScalar sy_ = SkFloatToScalar(sy);
obj->setScale(sx_, sy_);
}
-
- static void setRotate__FFF(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat degrees, jfloat px, jfloat py) {
+ static void setRotate__FFF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat degrees, jfloat px, jfloat py) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar degrees_ = SkFloatToScalar(degrees);
SkScalar px_ = SkFloatToScalar(px);
SkScalar py_ = SkFloatToScalar(py);
obj->setRotate(degrees_, px_, py_);
}
-
- static void setRotate__F(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat degrees) {
+ static void setRotate__F(JNIEnv* env, jobject clazz, jlong objHandle, jfloat degrees) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar degrees_ = SkFloatToScalar(degrees);
obj->setRotate(degrees_);
}
-
- static void setSinCos__FFFF(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat sinValue, jfloat cosValue, jfloat px, jfloat py) {
+ static void setSinCos__FFFF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat sinValue, jfloat cosValue, jfloat px, jfloat py) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar sinValue_ = SkFloatToScalar(sinValue);
SkScalar cosValue_ = SkFloatToScalar(cosValue);
SkScalar px_ = SkFloatToScalar(px);
SkScalar py_ = SkFloatToScalar(py);
obj->setSinCos(sinValue_, cosValue_, px_, py_);
}
-
- static void setSinCos__FF(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat sinValue, jfloat cosValue) {
+ static void setSinCos__FF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat sinValue, jfloat cosValue) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar sinValue_ = SkFloatToScalar(sinValue);
SkScalar cosValue_ = SkFloatToScalar(cosValue);
obj->setSinCos(sinValue_, cosValue_);
}
-
- static void setSkew__FFFF(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat kx, jfloat ky, jfloat px, jfloat py) {
+ static void setSkew__FFFF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat kx, jfloat ky, jfloat px, jfloat py) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar kx_ = SkFloatToScalar(kx);
SkScalar ky_ = SkFloatToScalar(ky);
SkScalar px_ = SkFloatToScalar(px);
SkScalar py_ = SkFloatToScalar(py);
obj->setSkew(kx_, ky_, px_, py_);
}
-
- static void setSkew__FF(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat kx, jfloat ky) {
+ static void setSkew__FF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat kx, jfloat ky) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar kx_ = SkFloatToScalar(kx);
SkScalar ky_ = SkFloatToScalar(ky);
obj->setSkew(kx_, ky_);
}
-
- static jboolean setConcat(JNIEnv* env, jobject clazz, SkMatrix* obj, SkMatrix* a, SkMatrix* b) {
- return obj->setConcat(*a, *b);
+ static jboolean setConcat(JNIEnv* env, jobject clazz, jlong objHandle, jlong aHandle, jlong bHandle) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
+ SkMatrix* a = reinterpret_cast<SkMatrix*>(aHandle);
+ SkMatrix* b = reinterpret_cast<SkMatrix*>(bHandle);
+ return obj->setConcat(*a, *b) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean preTranslate(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat dx, jfloat dy) {
+
+ static jboolean preTranslate(JNIEnv* env, jobject clazz, jlong objHandle, jfloat dx, jfloat dy) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar dx_ = SkFloatToScalar(dx);
SkScalar dy_ = SkFloatToScalar(dy);
- return obj->preTranslate(dx_, dy_);
+ return obj->preTranslate(dx_, dy_) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean preScale__FFFF(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat sx, jfloat sy, jfloat px, jfloat py) {
+
+ static jboolean preScale__FFFF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat sx, jfloat sy, jfloat px, jfloat py) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar sx_ = SkFloatToScalar(sx);
SkScalar sy_ = SkFloatToScalar(sy);
SkScalar px_ = SkFloatToScalar(px);
SkScalar py_ = SkFloatToScalar(py);
- return obj->preScale(sx_, sy_, px_, py_);
+ return obj->preScale(sx_, sy_, px_, py_) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean preScale__FF(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat sx, jfloat sy) {
+
+ static jboolean preScale__FF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat sx, jfloat sy) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar sx_ = SkFloatToScalar(sx);
SkScalar sy_ = SkFloatToScalar(sy);
- return obj->preScale(sx_, sy_);
+ return obj->preScale(sx_, sy_) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean preRotate__FFF(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat degrees, jfloat px, jfloat py) {
+
+ static jboolean preRotate__FFF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat degrees, jfloat px, jfloat py) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar degrees_ = SkFloatToScalar(degrees);
SkScalar px_ = SkFloatToScalar(px);
SkScalar py_ = SkFloatToScalar(py);
- return obj->preRotate(degrees_, px_, py_);
+ return obj->preRotate(degrees_, px_, py_) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean preRotate__F(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat degrees) {
+
+ static jboolean preRotate__F(JNIEnv* env, jobject clazz, jlong objHandle, jfloat degrees) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar degrees_ = SkFloatToScalar(degrees);
- return obj->preRotate(degrees_);
+ return obj->preRotate(degrees_) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean preSkew__FFFF(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat kx, jfloat ky, jfloat px, jfloat py) {
+
+ static jboolean preSkew__FFFF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat kx, jfloat ky, jfloat px, jfloat py) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar kx_ = SkFloatToScalar(kx);
SkScalar ky_ = SkFloatToScalar(ky);
SkScalar px_ = SkFloatToScalar(px);
SkScalar py_ = SkFloatToScalar(py);
- return obj->preSkew(kx_, ky_, px_, py_);
+ return obj->preSkew(kx_, ky_, px_, py_) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean preSkew__FF(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat kx, jfloat ky) {
+
+ static jboolean preSkew__FF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat kx, jfloat ky) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar kx_ = SkFloatToScalar(kx);
SkScalar ky_ = SkFloatToScalar(ky);
- return obj->preSkew(kx_, ky_);
+ return obj->preSkew(kx_, ky_) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean preConcat(JNIEnv* env, jobject clazz, SkMatrix* obj, SkMatrix* other) {
- return obj->preConcat(*other);
+
+ static jboolean preConcat(JNIEnv* env, jobject clazz, jlong objHandle, jlong otherHandle) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
+ SkMatrix* other = reinterpret_cast<SkMatrix*>(otherHandle);
+ return obj->preConcat(*other) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean postTranslate(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat dx, jfloat dy) {
+
+ static jboolean postTranslate(JNIEnv* env, jobject clazz, jlong objHandle, jfloat dx, jfloat dy) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar dx_ = SkFloatToScalar(dx);
SkScalar dy_ = SkFloatToScalar(dy);
- return obj->postTranslate(dx_, dy_);
+ return obj->postTranslate(dx_, dy_) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean postScale__FFFF(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat sx, jfloat sy, jfloat px, jfloat py) {
+
+ static jboolean postScale__FFFF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat sx, jfloat sy, jfloat px, jfloat py) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar sx_ = SkFloatToScalar(sx);
SkScalar sy_ = SkFloatToScalar(sy);
SkScalar px_ = SkFloatToScalar(px);
SkScalar py_ = SkFloatToScalar(py);
- return obj->postScale(sx_, sy_, px_, py_);
+ return obj->postScale(sx_, sy_, px_, py_) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean postScale__FF(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat sx, jfloat sy) {
+
+ static jboolean postScale__FF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat sx, jfloat sy) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar sx_ = SkFloatToScalar(sx);
SkScalar sy_ = SkFloatToScalar(sy);
- return obj->postScale(sx_, sy_);
+ return obj->postScale(sx_, sy_) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean postRotate__FFF(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat degrees, jfloat px, jfloat py) {
+
+ static jboolean postRotate__FFF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat degrees, jfloat px, jfloat py) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar degrees_ = SkFloatToScalar(degrees);
SkScalar px_ = SkFloatToScalar(px);
SkScalar py_ = SkFloatToScalar(py);
- return obj->postRotate(degrees_, px_, py_);
+ return obj->postRotate(degrees_, px_, py_) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean postRotate__F(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat degrees) {
+
+ static jboolean postRotate__F(JNIEnv* env, jobject clazz, jlong objHandle, jfloat degrees) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar degrees_ = SkFloatToScalar(degrees);
- return obj->postRotate(degrees_);
+ return obj->postRotate(degrees_) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean postSkew__FFFF(JNIEnv* env, jobject clazz, SkMatrix* obj, jfloat kx, jfloat ky, jfloat px, jfloat py) {
+
+ static jboolean postSkew__FFFF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat kx, jfloat ky, jfloat px, jfloat py) {
+ SkMatrix* obj = reinterpret_cast<SkMatrix*>(objHandle);
SkScalar kx_ = SkFloatToScalar(kx);
SkScalar ky_ = SkFloatToScalar(ky);
SkScalar px_ = SkFloatToScalar(px);
SkScalar py_ = SkFloatToScalar(py);
- return obj->postSkew(kx_, ky_, px_, py_);
+ return obj->postSkew(kx_, ky_, px_, py_) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean postSkew__FF(JNIEnv* env, jobject clazz, SkMatrix* matrix, jfloat kx, jfloat ky) {
+
+ static jboolean postSkew__FF(JNIEnv* env, jobject clazz, jlong matrixHandle, jfloat kx, jfloat ky) {
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
SkScalar kx_ = SkFloatToScalar(kx);
SkScalar ky_ = SkFloatToScalar(ky);
- return matrix->postSkew(kx_, ky_);
+ return matrix->postSkew(kx_, ky_) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean postConcat(JNIEnv* env, jobject clazz, SkMatrix* matrix, SkMatrix* other) {
- return matrix->postConcat(*other);
+
+ static jboolean postConcat(JNIEnv* env, jobject clazz, jlong matrixHandle, jlong otherHandle) {
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
+ SkMatrix* other = reinterpret_cast<SkMatrix*>(otherHandle);
+ return matrix->postConcat(*other) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean setRectToRect(JNIEnv* env, jobject clazz, SkMatrix* matrix, jobject src, jobject dst, SkMatrix::ScaleToFit stf) {
+
+ static jboolean setRectToRect(JNIEnv* env, jobject clazz, jlong matrixHandle, jobject src, jobject dst, jint stfHandle) {
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
+ SkMatrix::ScaleToFit stf = static_cast<SkMatrix::ScaleToFit>(stfHandle);
SkRect src_;
GraphicsJNI::jrectf_to_rect(env, src, &src_);
SkRect dst_;
GraphicsJNI::jrectf_to_rect(env, dst, &dst_);
- return matrix->setRectToRect(src_, dst_, stf);
+ return matrix->setRectToRect(src_, dst_, stf) ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean setPolyToPoly(JNIEnv* env, jobject clazz, SkMatrix* matrix,
- jfloatArray jsrc, int srcIndex,
- jfloatArray jdst, int dstIndex, int ptCount) {
+
+ static jboolean setPolyToPoly(JNIEnv* env, jobject clazz, jlong matrixHandle,
+ jfloatArray jsrc, jint srcIndex,
+ jfloatArray jdst, jint dstIndex, jint ptCount) {
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
SkASSERT(srcIndex >= 0);
SkASSERT(dstIndex >= 0);
SkASSERT((unsigned)ptCount <= 4);
- AutoJavaFloatArray autoSrc(env, jsrc, srcIndex + (ptCount << 1));
- AutoJavaFloatArray autoDst(env, jdst, dstIndex + (ptCount << 1));
+ AutoJavaFloatArray autoSrc(env, jsrc, srcIndex + (ptCount << 1), kRO_JNIAccess);
+ AutoJavaFloatArray autoDst(env, jdst, dstIndex + (ptCount << 1), kRW_JNIAccess);
float* src = autoSrc.ptr() + srcIndex;
float* dst = autoDst.ptr() + dstIndex;
+ bool result;
#ifdef SK_SCALAR_IS_FIXED
SkPoint srcPt[4], dstPt[4];
@@ -252,24 +280,28 @@ public:
srcPt[i].set(SkFloatToScalar(src[x]), SkFloatToScalar(src[y]));
dstPt[i].set(SkFloatToScalar(dst[x]), SkFloatToScalar(dst[y]));
}
- return matrix->setPolyToPoly(srcPt, dstPt, ptCount);
+ result = matrix->setPolyToPoly(srcPt, dstPt, ptCount);
#else
- return matrix->setPolyToPoly((const SkPoint*)src, (const SkPoint*)dst,
+ result = matrix->setPolyToPoly((const SkPoint*)src, (const SkPoint*)dst,
ptCount);
#endif
+ return result ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean invert(JNIEnv* env, jobject clazz, SkMatrix* matrix, SkMatrix* inverse) {
+
+ static jboolean invert(JNIEnv* env, jobject clazz, jlong matrixHandle, jlong inverseHandle) {
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
+ SkMatrix* inverse = reinterpret_cast<SkMatrix*>(inverseHandle);
return matrix->invert(inverse);
}
-
- static void mapPoints(JNIEnv* env, jobject clazz, SkMatrix* matrix,
- jfloatArray dst, int dstIndex,
- jfloatArray src, int srcIndex,
- int ptCount, bool isPts) {
+
+ static void mapPoints(JNIEnv* env, jobject clazz, jlong matrixHandle,
+ jfloatArray dst, jint dstIndex,
+ jfloatArray src, jint srcIndex,
+ jint ptCount, jboolean isPts) {
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
SkASSERT(ptCount >= 0);
- AutoJavaFloatArray autoSrc(env, src, srcIndex + (ptCount << 1));
- AutoJavaFloatArray autoDst(env, dst, dstIndex + (ptCount << 1));
+ AutoJavaFloatArray autoSrc(env, src, srcIndex + (ptCount << 1), kRO_JNIAccess);
+ AutoJavaFloatArray autoDst(env, dst, dstIndex + (ptCount << 1), kRW_JNIAccess);
float* srcArray = autoSrc.ptr() + srcIndex;
float* dstArray = autoDst.ptr() + dstIndex;
@@ -304,21 +336,26 @@ public:
ptCount);
#endif
}
-
- static jboolean mapRect__RectFRectF(JNIEnv* env, jobject clazz, SkMatrix* matrix, jobjectArray dst, jobject src) {
+
+ static jboolean mapRect__RectFRectF(JNIEnv* env, jobject clazz, jlong matrixHandle, jobjectArray dst, jobject src) {
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
SkRect dst_, src_;
GraphicsJNI::jrectf_to_rect(env, src, &src_);
jboolean rectStaysRect = matrix->mapRect(&dst_, src_);
GraphicsJNI::rect_to_jrectf(dst_, env, dst);
- return rectStaysRect;
+ return rectStaysRect ? JNI_TRUE : JNI_FALSE;
}
-
- static jfloat mapRadius(JNIEnv* env, jobject clazz, SkMatrix* matrix, jfloat radius) {
- return SkScalarToFloat(matrix->mapRadius(SkFloatToScalar(radius)));
+
+ static jfloat mapRadius(JNIEnv* env, jobject clazz, jlong matrixHandle, jfloat radius) {
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
+ float result;
+ result = SkScalarToFloat(matrix->mapRadius(SkFloatToScalar(radius)));
+ return static_cast<jfloat>(result);
}
-
- static void getValues(JNIEnv* env, jobject clazz, SkMatrix* matrix, jfloatArray values) {
- AutoJavaFloatArray autoValues(env, values, 9);
+
+ static void getValues(JNIEnv* env, jobject clazz, jlong matrixHandle, jfloatArray values) {
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
+ AutoJavaFloatArray autoValues(env, values, 9, kRW_JNIAccess);
float* dst = autoValues.ptr();
#ifdef SK_SCALAR_IS_FIXED
@@ -334,9 +371,10 @@ public:
}
#endif
}
-
- static void setValues(JNIEnv* env, jobject clazz, SkMatrix* matrix, jfloatArray values) {
- AutoJavaFloatArray autoValues(env, values, 9);
+
+ static void setValues(JNIEnv* env, jobject clazz, jlong matrixHandle, jfloatArray values) {
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
+ AutoJavaFloatArray autoValues(env, values, 9, kRO_JNIAccess);
const float* src = autoValues.ptr();
#ifdef SK_SCALAR_IS_FIXED
@@ -353,53 +391,55 @@ public:
#endif
}
- static jboolean equals(JNIEnv* env, jobject clazz, const SkMatrix* a, const SkMatrix* b) {
+ static jboolean equals(JNIEnv* env, jobject clazz, jlong aHandle, jlong bHandle) {
+ const SkMatrix* a = reinterpret_cast<SkMatrix*>(aHandle);
+ const SkMatrix* b = reinterpret_cast<SkMatrix*>(bHandle);
return *a == *b;
}
};
static JNINativeMethod methods[] = {
- {"finalizer", "(I)V", (void*) SkMatrixGlue::finalizer},
- {"native_create","(I)I", (void*) SkMatrixGlue::create},
- {"native_isIdentity","(I)Z", (void*) SkMatrixGlue::isIdentity},
- {"native_rectStaysRect","(I)Z", (void*) SkMatrixGlue::rectStaysRect},
- {"native_reset","(I)V", (void*) SkMatrixGlue::reset},
- {"native_set","(II)V", (void*) SkMatrixGlue::set},
- {"native_setTranslate","(IFF)V", (void*) SkMatrixGlue::setTranslate},
- {"native_setScale","(IFFFF)V", (void*) SkMatrixGlue::setScale__FFFF},
- {"native_setScale","(IFF)V", (void*) SkMatrixGlue::setScale__FF},
- {"native_setRotate","(IFFF)V", (void*) SkMatrixGlue::setRotate__FFF},
- {"native_setRotate","(IF)V", (void*) SkMatrixGlue::setRotate__F},
- {"native_setSinCos","(IFFFF)V", (void*) SkMatrixGlue::setSinCos__FFFF},
- {"native_setSinCos","(IFF)V", (void*) SkMatrixGlue::setSinCos__FF},
- {"native_setSkew","(IFFFF)V", (void*) SkMatrixGlue::setSkew__FFFF},
- {"native_setSkew","(IFF)V", (void*) SkMatrixGlue::setSkew__FF},
- {"native_setConcat","(III)Z", (void*) SkMatrixGlue::setConcat},
- {"native_preTranslate","(IFF)Z", (void*) SkMatrixGlue::preTranslate},
- {"native_preScale","(IFFFF)Z", (void*) SkMatrixGlue::preScale__FFFF},
- {"native_preScale","(IFF)Z", (void*) SkMatrixGlue::preScale__FF},
- {"native_preRotate","(IFFF)Z", (void*) SkMatrixGlue::preRotate__FFF},
- {"native_preRotate","(IF)Z", (void*) SkMatrixGlue::preRotate__F},
- {"native_preSkew","(IFFFF)Z", (void*) SkMatrixGlue::preSkew__FFFF},
- {"native_preSkew","(IFF)Z", (void*) SkMatrixGlue::preSkew__FF},
- {"native_preConcat","(II)Z", (void*) SkMatrixGlue::preConcat},
- {"native_postTranslate","(IFF)Z", (void*) SkMatrixGlue::postTranslate},
- {"native_postScale","(IFFFF)Z", (void*) SkMatrixGlue::postScale__FFFF},
- {"native_postScale","(IFF)Z", (void*) SkMatrixGlue::postScale__FF},
- {"native_postRotate","(IFFF)Z", (void*) SkMatrixGlue::postRotate__FFF},
- {"native_postRotate","(IF)Z", (void*) SkMatrixGlue::postRotate__F},
- {"native_postSkew","(IFFFF)Z", (void*) SkMatrixGlue::postSkew__FFFF},
- {"native_postSkew","(IFF)Z", (void*) SkMatrixGlue::postSkew__FF},
- {"native_postConcat","(II)Z", (void*) SkMatrixGlue::postConcat},
- {"native_setRectToRect","(ILandroid/graphics/RectF;Landroid/graphics/RectF;I)Z", (void*) SkMatrixGlue::setRectToRect},
- {"native_setPolyToPoly","(I[FI[FII)Z", (void*) SkMatrixGlue::setPolyToPoly},
- {"native_invert","(II)Z", (void*) SkMatrixGlue::invert},
- {"native_mapPoints","(I[FI[FIIZ)V", (void*) SkMatrixGlue::mapPoints},
- {"native_mapRect","(ILandroid/graphics/RectF;Landroid/graphics/RectF;)Z", (void*) SkMatrixGlue::mapRect__RectFRectF},
- {"native_mapRadius","(IF)F", (void*) SkMatrixGlue::mapRadius},
- {"native_getValues","(I[F)V", (void*) SkMatrixGlue::getValues},
- {"native_setValues","(I[F)V", (void*) SkMatrixGlue::setValues},
- {"native_equals", "(II)Z", (void*) SkMatrixGlue::equals}
+ {"finalizer", "(J)V", (void*) SkMatrixGlue::finalizer},
+ {"native_create","(J)J", (void*) SkMatrixGlue::create},
+ {"native_isIdentity","(J)Z", (void*) SkMatrixGlue::isIdentity},
+ {"native_rectStaysRect","(J)Z", (void*) SkMatrixGlue::rectStaysRect},
+ {"native_reset","(J)V", (void*) SkMatrixGlue::reset},
+ {"native_set","(JJ)V", (void*) SkMatrixGlue::set},
+ {"native_setTranslate","(JFF)V", (void*) SkMatrixGlue::setTranslate},
+ {"native_setScale","(JFFFF)V", (void*) SkMatrixGlue::setScale__FFFF},
+ {"native_setScale","(JFF)V", (void*) SkMatrixGlue::setScale__FF},
+ {"native_setRotate","(JFFF)V", (void*) SkMatrixGlue::setRotate__FFF},
+ {"native_setRotate","(JF)V", (void*) SkMatrixGlue::setRotate__F},
+ {"native_setSinCos","(JFFFF)V", (void*) SkMatrixGlue::setSinCos__FFFF},
+ {"native_setSinCos","(JFF)V", (void*) SkMatrixGlue::setSinCos__FF},
+ {"native_setSkew","(JFFFF)V", (void*) SkMatrixGlue::setSkew__FFFF},
+ {"native_setSkew","(JFF)V", (void*) SkMatrixGlue::setSkew__FF},
+ {"native_setConcat","(JJJ)Z", (void*) SkMatrixGlue::setConcat},
+ {"native_preTranslate","(JFF)Z", (void*) SkMatrixGlue::preTranslate},
+ {"native_preScale","(JFFFF)Z", (void*) SkMatrixGlue::preScale__FFFF},
+ {"native_preScale","(JFF)Z", (void*) SkMatrixGlue::preScale__FF},
+ {"native_preRotate","(JFFF)Z", (void*) SkMatrixGlue::preRotate__FFF},
+ {"native_preRotate","(JF)Z", (void*) SkMatrixGlue::preRotate__F},
+ {"native_preSkew","(JFFFF)Z", (void*) SkMatrixGlue::preSkew__FFFF},
+ {"native_preSkew","(JFF)Z", (void*) SkMatrixGlue::preSkew__FF},
+ {"native_preConcat","(JJ)Z", (void*) SkMatrixGlue::preConcat},
+ {"native_postTranslate","(JFF)Z", (void*) SkMatrixGlue::postTranslate},
+ {"native_postScale","(JFFFF)Z", (void*) SkMatrixGlue::postScale__FFFF},
+ {"native_postScale","(JFF)Z", (void*) SkMatrixGlue::postScale__FF},
+ {"native_postRotate","(JFFF)Z", (void*) SkMatrixGlue::postRotate__FFF},
+ {"native_postRotate","(JF)Z", (void*) SkMatrixGlue::postRotate__F},
+ {"native_postSkew","(JFFFF)Z", (void*) SkMatrixGlue::postSkew__FFFF},
+ {"native_postSkew","(JFF)Z", (void*) SkMatrixGlue::postSkew__FF},
+ {"native_postConcat","(JJ)Z", (void*) SkMatrixGlue::postConcat},
+ {"native_setRectToRect","(JLandroid/graphics/RectF;Landroid/graphics/RectF;I)Z", (void*) SkMatrixGlue::setRectToRect},
+ {"native_setPolyToPoly","(J[FI[FII)Z", (void*) SkMatrixGlue::setPolyToPoly},
+ {"native_invert","(JJ)Z", (void*) SkMatrixGlue::invert},
+ {"native_mapPoints","(J[FI[FIIZ)V", (void*) SkMatrixGlue::mapPoints},
+ {"native_mapRect","(JLandroid/graphics/RectF;Landroid/graphics/RectF;)Z", (void*) SkMatrixGlue::mapRect__RectFRectF},
+ {"native_mapRadius","(JF)F", (void*) SkMatrixGlue::mapRadius},
+ {"native_getValues","(J[F)V", (void*) SkMatrixGlue::getValues},
+ {"native_setValues","(J[F)V", (void*) SkMatrixGlue::setValues},
+ {"native_equals", "(JJ)Z", (void*) SkMatrixGlue::equals}
};
static jfieldID sNativeInstanceField;
@@ -409,13 +449,13 @@ int register_android_graphics_Matrix(JNIEnv* env) {
sizeof(methods) / sizeof(methods[0]));
jclass clazz = env->FindClass("android/graphics/Matrix");
- sNativeInstanceField = env->GetFieldID(clazz, "native_instance", "I");
+ sNativeInstanceField = env->GetFieldID(clazz, "native_instance", "J");
return result;
}
SkMatrix* android_graphics_Matrix_getSkMatrix(JNIEnv* env, jobject matrixObj) {
- return reinterpret_cast<SkMatrix*>(env->GetIntField(matrixObj, sNativeInstanceField));
+ return reinterpret_cast<SkMatrix*>(env->GetLongField(matrixObj, sNativeInstanceField));
}
}
diff --git a/core/jni/android/graphics/Movie.cpp b/core/jni/android/graphics/Movie.cpp
index 55be7c194f12..461f7232b3b1 100644
--- a/core/jni/android/graphics/Movie.cpp
+++ b/core/jni/android/graphics/Movie.cpp
@@ -27,43 +27,43 @@ jobject create_jmovie(JNIEnv* env, SkMovie* moov) {
return NULL;
}
return env->NewObject(gMovie_class, gMovie_constructorMethodID,
- static_cast<jint>(reinterpret_cast<uintptr_t>(moov)));
+ static_cast<jlong>(reinterpret_cast<uintptr_t>(moov)));
}
static SkMovie* J2Movie(JNIEnv* env, jobject movie) {
SkASSERT(env);
SkASSERT(movie);
SkASSERT(env->IsInstanceOf(movie, gMovie_class));
- SkMovie* m = (SkMovie*)env->GetIntField(movie, gMovie_nativeInstanceID);
+ SkMovie* m = (SkMovie*)env->GetLongField(movie, gMovie_nativeInstanceID);
SkASSERT(m);
return m;
}
///////////////////////////////////////////////////////////////////////////////
-static int movie_width(JNIEnv* env, jobject movie) {
+static jint movie_width(JNIEnv* env, jobject movie) {
NPE_CHECK_RETURN_ZERO(env, movie);
- return J2Movie(env, movie)->width();
+ return static_cast<jint>(J2Movie(env, movie)->width());
}
-static int movie_height(JNIEnv* env, jobject movie) {
+static jint movie_height(JNIEnv* env, jobject movie) {
NPE_CHECK_RETURN_ZERO(env, movie);
- return J2Movie(env, movie)->height();
+ return static_cast<jint>(J2Movie(env, movie)->height());
}
static jboolean movie_isOpaque(JNIEnv* env, jobject movie) {
NPE_CHECK_RETURN_ZERO(env, movie);
- return J2Movie(env, movie)->isOpaque();
+ return J2Movie(env, movie)->isOpaque() ? JNI_TRUE : JNI_FALSE;
}
-static int movie_duration(JNIEnv* env, jobject movie) {
+static jint movie_duration(JNIEnv* env, jobject movie) {
NPE_CHECK_RETURN_ZERO(env, movie);
- return J2Movie(env, movie)->duration();
+ return static_cast<jint>(J2Movie(env, movie)->duration());
}
-static jboolean movie_setTime(JNIEnv* env, jobject movie, int ms) {
+static jboolean movie_setTime(JNIEnv* env, jobject movie, jint ms) {
NPE_CHECK_RETURN_ZERO(env, movie);
- return J2Movie(env, movie)->setTime(ms);
+ return J2Movie(env, movie)->setTime(ms) ? JNI_TRUE : JNI_FALSE;
}
static void movie_draw(JNIEnv* env, jobject movie, jobject canvas,
@@ -82,7 +82,7 @@ static void movie_draw(JNIEnv* env, jobject movie, jobject canvas,
c->drawBitmap(b, sx, sy, p);
}
-static jobject movie_decodeAsset(JNIEnv* env, jobject clazz, jint native_asset) {
+static jobject movie_decodeAsset(JNIEnv* env, jobject clazz, jlong native_asset) {
android::Asset* asset = reinterpret_cast<android::Asset*>(native_asset);
if (asset == NULL) return NULL;
SkAutoTUnref<SkStreamRewindable> stream (new android::AssetStreamAdaptor(asset,
@@ -117,7 +117,7 @@ static jobject movie_decodeStream(JNIEnv* env, jobject clazz, jobject istream) {
static jobject movie_decodeByteArray(JNIEnv* env, jobject clazz,
jbyteArray byteArray,
- int offset, int length) {
+ jint offset, jint length) {
NPE_CHECK_RETURN_ZERO(env, byteArray);
@@ -132,7 +132,8 @@ static jobject movie_decodeByteArray(JNIEnv* env, jobject clazz,
return create_jmovie(env, moov);
}
-static void movie_destructor(JNIEnv* env, jobject, SkMovie* movie) {
+static void movie_destructor(JNIEnv* env, jobject, jlong movieHandle) {
+ SkMovie* movie = (SkMovie*) movieHandle;
delete movie;
}
@@ -148,11 +149,11 @@ static JNINativeMethod gMethods[] = {
{ "setTime", "(I)Z", (void*)movie_setTime },
{ "draw", "(Landroid/graphics/Canvas;FFLandroid/graphics/Paint;)V",
(void*)movie_draw },
- { "nativeDecodeAsset", "(I)Landroid/graphics/Movie;",
+ { "nativeDecodeAsset", "(J)Landroid/graphics/Movie;",
(void*)movie_decodeAsset },
{ "nativeDecodeStream", "(Ljava/io/InputStream;)Landroid/graphics/Movie;",
(void*)movie_decodeStream },
- { "nativeDestructor","(I)V", (void*)movie_destructor },
+ { "nativeDestructor","(J)V", (void*)movie_destructor },
{ "decodeByteArray", "([BII)Landroid/graphics/Movie;",
(void*)movie_decodeByteArray },
};
@@ -167,10 +168,10 @@ int register_android_graphics_Movie(JNIEnv* env)
RETURN_ERR_IF_NULL(gMovie_class);
gMovie_class = (jclass)env->NewGlobalRef(gMovie_class);
- gMovie_constructorMethodID = env->GetMethodID(gMovie_class, "<init>", "(I)V");
+ gMovie_constructorMethodID = env->GetMethodID(gMovie_class, "<init>", "(J)V");
RETURN_ERR_IF_NULL(gMovie_constructorMethodID);
- gMovie_nativeInstanceID = env->GetFieldID(gMovie_class, "mNativeMovie", "I");
+ gMovie_nativeInstanceID = env->GetFieldID(gMovie_class, "mNativeMovie", "J");
RETURN_ERR_IF_NULL(gMovie_nativeInstanceID);
return android::AndroidRuntime::registerNativeMethods(env, kClassPathName,
diff --git a/core/jni/android/graphics/NinePatch.cpp b/core/jni/android/graphics/NinePatch.cpp
index 7e6aeae0ac7c..871e24de24c2 100644
--- a/core/jni/android/graphics/NinePatch.cpp
+++ b/core/jni/android/graphics/NinePatch.cpp
@@ -46,22 +46,22 @@ class SkNinePatchGlue {
public:
static jboolean isNinePatchChunk(JNIEnv* env, jobject, jbyteArray obj) {
if (NULL == obj) {
- return false;
+ return JNI_FALSE;
}
if (env->GetArrayLength(obj) < (int)sizeof(Res_png_9patch)) {
- return false;
+ return JNI_FALSE;
}
const jbyte* array = env->GetByteArrayElements(obj, 0);
if (array != NULL) {
const Res_png_9patch* chunk = reinterpret_cast<const Res_png_9patch*>(array);
int8_t wasDeserialized = chunk->wasDeserialized;
env->ReleaseByteArrayElements(obj, const_cast<jbyte*>(array), JNI_ABORT);
- return wasDeserialized != -1;
+ return (wasDeserialized != -1) ? JNI_TRUE : JNI_FALSE;
}
- return false;
+ return JNI_FALSE;
}
- static int8_t* validateNinePatchChunk(JNIEnv* env, jobject, jint, jbyteArray obj) {
+ static jlong validateNinePatchChunk(JNIEnv* env, jobject, jlong, jbyteArray obj) {
size_t chunkSize = env->GetArrayLength(obj);
if (chunkSize < (int) (sizeof(Res_png_9patch))) {
jniThrowRuntimeException(env, "Array too small for chunk.");
@@ -72,10 +72,11 @@ public:
// This call copies the content of the jbyteArray
env->GetByteArrayRegion(obj, 0, chunkSize, reinterpret_cast<jbyte*>(storage));
// Deserialize in place, return the array we just allocated
- return (int8_t*) Res_png_9patch::deserialize(storage);
+ return reinterpret_cast<jlong>(Res_png_9patch::deserialize(storage));
}
- static void finalize(JNIEnv* env, jobject, int8_t* patch) {
+ static void finalize(JNIEnv* env, jobject, jlong patchHandle) {
+ int8_t* patch = reinterpret_cast<int8_t*>(patchHandle);
#ifdef USE_OPENGL_RENDERER
if (android::uirenderer::Caches::hasInstance()) {
Res_png_9patch* p = (Res_png_9patch*) patch;
@@ -115,9 +116,13 @@ public:
}
}
- static void drawF(JNIEnv* env, jobject, SkCanvas* canvas, jobject boundsRectF,
- const SkBitmap* bitmap, Res_png_9patch* chunk, const SkPaint* paint,
+ static void drawF(JNIEnv* env, jobject, jlong canvasHandle, jobject boundsRectF,
+ jlong bitmapHandle, jlong chunkHandle, jlong paintHandle,
jint destDensity, jint srcDensity) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ Res_png_9patch* chunk = reinterpret_cast<Res_png_9patch*>(chunkHandle);
+ const SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
SkASSERT(canvas);
SkASSERT(boundsRectF);
SkASSERT(bitmap);
@@ -130,9 +135,13 @@ public:
draw(env, canvas, bounds, bitmap, chunk, paint, destDensity, srcDensity);
}
- static void drawI(JNIEnv* env, jobject, SkCanvas* canvas, jobject boundsRect,
- const SkBitmap* bitmap, Res_png_9patch* chunk, const SkPaint* paint,
+ static void drawI(JNIEnv* env, jobject, jlong canvasHandle, jobject boundsRect,
+ jlong bitmapHandle, jlong chunkHandle, jlong paintHandle,
jint destDensity, jint srcDensity) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ Res_png_9patch* chunk = reinterpret_cast<Res_png_9patch*>(chunkHandle);
+ const SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
SkASSERT(canvas);
SkASSERT(boundsRect);
SkASSERT(bitmap);
@@ -144,8 +153,10 @@ public:
draw(env, canvas, bounds, bitmap, chunk, paint, destDensity, srcDensity);
}
- static jint getTransparentRegion(JNIEnv* env, jobject, const SkBitmap* bitmap,
- Res_png_9patch* chunk, jobject boundsRect) {
+ static jlong getTransparentRegion(JNIEnv* env, jobject, jlong bitmapHandle,
+ jlong chunkHandle, jobject boundsRect) {
+ const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ Res_png_9patch* chunk = reinterpret_cast<Res_png_9patch*>(chunkHandle);
SkASSERT(bitmap);
SkASSERT(chunk);
SkASSERT(boundsRect);
@@ -156,7 +167,7 @@ public:
SkRegion* region = NULL;
NinePatch_Draw(NULL, bounds, *bitmap, *chunk, NULL, &region);
- return (jint) region;
+ return reinterpret_cast<jlong>(region);
}
};
@@ -167,11 +178,11 @@ public:
static JNINativeMethod gNinePatchMethods[] = {
{ "isNinePatchChunk", "([B)Z", (void*) SkNinePatchGlue::isNinePatchChunk },
- { "validateNinePatchChunk", "(I[B)I", (void*) SkNinePatchGlue::validateNinePatchChunk },
- { "nativeFinalize", "(I)V", (void*) SkNinePatchGlue::finalize },
- { "nativeDraw", "(ILandroid/graphics/RectF;IIIII)V", (void*) SkNinePatchGlue::drawF },
- { "nativeDraw", "(ILandroid/graphics/Rect;IIIII)V", (void*) SkNinePatchGlue::drawI },
- { "nativeGetTransparentRegion", "(IILandroid/graphics/Rect;)I",
+ { "validateNinePatchChunk", "(J[B)J", (void*) SkNinePatchGlue::validateNinePatchChunk },
+ { "nativeFinalize", "(J)V", (void*) SkNinePatchGlue::finalize },
+ { "nativeDraw", "(JLandroid/graphics/RectF;JJJII)V", (void*) SkNinePatchGlue::drawF },
+ { "nativeDraw", "(JLandroid/graphics/Rect;JJJII)V", (void*) SkNinePatchGlue::drawI },
+ { "nativeGetTransparentRegion", "(JJLandroid/graphics/Rect;)J",
(void*) SkNinePatchGlue::getTransparentRegion }
};
diff --git a/core/jni/android/graphics/Paint.cpp b/core/jni/android/graphics/Paint.cpp
index 4f6cc37aaa0e..ec7741944688 100644
--- a/core/jni/android/graphics/Paint.cpp
+++ b/core/jni/android/graphics/Paint.cpp
@@ -70,33 +70,40 @@ public:
AFTER, AT_OR_AFTER, BEFORE, AT_OR_BEFORE, AT
};
- static void finalizer(JNIEnv* env, jobject clazz, SkPaint* obj) {
+ static void finalizer(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
delete obj;
}
- static SkPaint* init(JNIEnv* env, jobject clazz) {
+ static jlong init(JNIEnv* env, jobject clazz) {
SkPaint* obj = new SkPaint();
defaultSettingsForAndroid(obj);
- return obj;
+ return reinterpret_cast<jlong>(obj);
}
- static SkPaint* intiWithPaint(JNIEnv* env, jobject clazz, SkPaint* paint) {
+ static jlong initWithPaint(JNIEnv* env, jobject clazz, jlong paintHandle) {
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
SkPaint* obj = new SkPaint(*paint);
- return obj;
+ return reinterpret_cast<jlong>(obj);
}
- static void reset(JNIEnv* env, jobject clazz, SkPaint* obj) {
+ static void reset(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
obj->reset();
defaultSettingsForAndroid(obj);
}
- static void assign(JNIEnv* env, jobject clazz, SkPaint* dst, const SkPaint* src) {
+ static void assign(JNIEnv* env, jobject clazz, jlong dstPaintHandle, jlong srcPaintHandle) {
+ SkPaint* dst = reinterpret_cast<SkPaint*>(dstPaintHandle);
+ const SkPaint* src = reinterpret_cast<SkPaint*>(srcPaintHandle);
*dst = *src;
}
static jint getFlags(JNIEnv* env, jobject paint) {
NPE_CHECK_RETURN_ZERO(env, paint);
- return GraphicsJNI::getNativePaint(env, paint)->getFlags();
+ int result;
+ result = GraphicsJNI::getNativePaint(env, paint)->getFlags();
+ return static_cast<jint>(result);
}
static void setFlags(JNIEnv* env, jobject paint, jint flags) {
@@ -157,22 +164,29 @@ public:
GraphicsJNI::getNativePaint(env, paint)->setDither(dither);
}
- static jint getStyle(JNIEnv* env, jobject clazz, SkPaint* obj) {
- return obj->getStyle();
+ static jint getStyle(JNIEnv* env, jobject clazz,jlong objHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+ return static_cast<jint>(obj->getStyle());
}
- static void setStyle(JNIEnv* env, jobject clazz, SkPaint* obj, SkPaint::Style style) {
+ static void setStyle(JNIEnv* env, jobject clazz, jlong objHandle, jint styleHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+ SkPaint::Style style = static_cast<SkPaint::Style>(styleHandle);
obj->setStyle(style);
}
static jint getColor(JNIEnv* env, jobject paint) {
NPE_CHECK_RETURN_ZERO(env, paint);
- return GraphicsJNI::getNativePaint(env, paint)->getColor();
+ int color;
+ color = GraphicsJNI::getNativePaint(env, paint)->getColor();
+ return static_cast<jint>(color);
}
static jint getAlpha(JNIEnv* env, jobject paint) {
NPE_CHECK_RETURN_ZERO(env, paint);
- return GraphicsJNI::getNativePaint(env, paint)->getAlpha();
+ int alpha;
+ alpha = GraphicsJNI::getNativePaint(env, paint)->getAlpha();
+ return static_cast<jint>(alpha);
}
static void setColor(JNIEnv* env, jobject paint, jint color) {
@@ -205,59 +219,85 @@ public:
GraphicsJNI::getNativePaint(env, paint)->setStrokeMiter(SkFloatToScalar(miter));
}
- static jint getStrokeCap(JNIEnv* env, jobject clazz, SkPaint* obj) {
- return obj->getStrokeCap();
+ static jint getStrokeCap(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+ return static_cast<jint>(obj->getStrokeCap());
}
- static void setStrokeCap(JNIEnv* env, jobject clazz, SkPaint* obj, SkPaint::Cap cap) {
+ static void setStrokeCap(JNIEnv* env, jobject clazz, jlong objHandle, jint capHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+ SkPaint::Cap cap = static_cast<SkPaint::Cap>(capHandle);
obj->setStrokeCap(cap);
}
- static jint getStrokeJoin(JNIEnv* env, jobject clazz, SkPaint* obj) {
- return obj->getStrokeJoin();
+ static jint getStrokeJoin(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+ return static_cast<jint>(obj->getStrokeJoin());
}
- static void setStrokeJoin(JNIEnv* env, jobject clazz, SkPaint* obj, SkPaint::Join join) {
+ static void setStrokeJoin(JNIEnv* env, jobject clazz, jlong objHandle, jint joinHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+ SkPaint::Join join = (SkPaint::Join) joinHandle;
obj->setStrokeJoin(join);
}
- static jboolean getFillPath(JNIEnv* env, jobject clazz, SkPaint* obj, SkPath* src, SkPath* dst) {
- return obj->getFillPath(*src, dst);
+ static jboolean getFillPath(JNIEnv* env, jobject clazz, jlong objHandle, jlong srcHandle, jlong dstHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+ SkPath* src = reinterpret_cast<SkPath*>(srcHandle);
+ SkPath* dst = reinterpret_cast<SkPath*>(dstHandle);
+ return obj->getFillPath(*src, dst) ? JNI_TRUE : JNI_FALSE;
}
- static SkShader* setShader(JNIEnv* env, jobject clazz, SkPaint* obj, SkShader* shader) {
- return obj->setShader(shader);
+ static jlong setShader(JNIEnv* env, jobject clazz, jlong objHandle, jlong shaderHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+ SkShader* shader = reinterpret_cast<SkShader*>(shaderHandle);
+ return reinterpret_cast<jlong>(obj->setShader(shader));
}
- static SkColorFilter* setColorFilter(JNIEnv* env, jobject clazz, SkPaint* obj, SkColorFilter* filter) {
- return obj->setColorFilter(filter);
+ static jlong setColorFilter(JNIEnv* env, jobject clazz, jlong objHandle, jlong filterHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint *>(objHandle);
+ SkColorFilter* filter = reinterpret_cast<SkColorFilter *>(filterHandle);
+ return reinterpret_cast<jlong>(obj->setColorFilter(filter));
}
- static SkXfermode* setXfermode(JNIEnv* env, jobject clazz, SkPaint* obj, SkXfermode* xfermode) {
- return obj->setXfermode(xfermode);
+ static jlong setXfermode(JNIEnv* env, jobject clazz, jlong objHandle, jlong xfermodeHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+ SkXfermode* xfermode = reinterpret_cast<SkXfermode*>(xfermodeHandle);
+ return reinterpret_cast<jlong>(obj->setXfermode(xfermode));
}
- static SkPathEffect* setPathEffect(JNIEnv* env, jobject clazz, SkPaint* obj, SkPathEffect* effect) {
- return obj->setPathEffect(effect);
+ static jlong setPathEffect(JNIEnv* env, jobject clazz, jlong objHandle, jlong effectHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+ SkPathEffect* effect = reinterpret_cast<SkPathEffect*>(effectHandle);
+ return reinterpret_cast<jlong>(obj->setPathEffect(effect));
}
- static SkMaskFilter* setMaskFilter(JNIEnv* env, jobject clazz, SkPaint* obj, SkMaskFilter* maskfilter) {
- return obj->setMaskFilter(maskfilter);
+ static jlong setMaskFilter(JNIEnv* env, jobject clazz, jlong objHandle, jlong maskfilterHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+ SkMaskFilter* maskfilter = reinterpret_cast<SkMaskFilter*>(maskfilterHandle);
+ return reinterpret_cast<jlong>(obj->setMaskFilter(maskfilter));
}
- static SkTypeface* setTypeface(JNIEnv* env, jobject clazz, SkPaint* obj, SkTypeface* typeface) {
- return obj->setTypeface(typeface);
+ static jlong setTypeface(JNIEnv* env, jobject clazz, jlong objHandle, jlong typefaceHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+ SkTypeface* typeface = reinterpret_cast<SkTypeface*>(typefaceHandle);
+ return reinterpret_cast<jlong>(obj->setTypeface(typeface));
}
- static SkRasterizer* setRasterizer(JNIEnv* env, jobject clazz, SkPaint* obj, SkRasterizer* rasterizer) {
- return obj->setRasterizer(rasterizer);
+ static jlong setRasterizer(JNIEnv* env, jobject clazz, jlong objHandle, jlong rasterizerHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+ SkRasterizer* rasterizer = reinterpret_cast<SkRasterizer*>(rasterizerHandle);
+ return reinterpret_cast<jlong>(obj->setRasterizer(rasterizer));
}
- static jint getTextAlign(JNIEnv* env, jobject clazz, SkPaint* obj) {
- return obj->getTextAlign();
+ static jint getTextAlign(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+ return static_cast<jint>(obj->getTextAlign());
}
- static void setTextAlign(JNIEnv* env, jobject clazz, SkPaint* obj, SkPaint::Align align) {
+ static void setTextAlign(JNIEnv* env, jobject clazz, jlong objHandle, jint alignHandle) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+ SkPaint::Align align = static_cast<SkPaint::Align>(alignHandle);
obj->setTextAlign(align);
}
@@ -301,7 +341,8 @@ public:
output[0] = '\0';
}
- static void setTextLocale(JNIEnv* env, jobject clazz, SkPaint* obj, jstring locale) {
+ static void setTextLocale(JNIEnv* env, jobject clazz, jlong objHandle, jstring locale) {
+ SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
ScopedUtfChars localeChars(env, locale);
char langTag[ULOC_FULLNAME_CAPACITY];
toLanguageTag(langTag, ULOC_FULLNAME_CAPACITY, localeChars.c_str());
@@ -391,7 +432,7 @@ public:
return descent - ascent + leading;
}
- static jfloat measureText_CIII(JNIEnv* env, jobject jpaint, jcharArray text, int index, int count,
+ static jfloat measureText_CIII(JNIEnv* env, jobject jpaint, jcharArray text, jint index, jint count,
jint bidiFlags) {
NPE_CHECK_RETURN_ZERO(env, jpaint);
NPE_CHECK_RETURN_ZERO(env, text);
@@ -416,7 +457,7 @@ public:
return result;
}
- static jfloat measureText_StringIII(JNIEnv* env, jobject jpaint, jstring text, int start, int end,
+ static jfloat measureText_StringIII(JNIEnv* env, jobject jpaint, jstring text, jint start, jint end,
jint bidiFlags) {
NPE_CHECK_RETURN_ZERO(env, jpaint);
NPE_CHECK_RETURN_ZERO(env, text);
@@ -489,8 +530,9 @@ public:
return count;
}
- static int getTextWidths___CIII_F(JNIEnv* env, jobject clazz, SkPaint* paint, jcharArray text,
- int index, int count, jint bidiFlags, jfloatArray widths) {
+ static jint getTextWidths___CIII_F(JNIEnv* env, jobject clazz, jlong paintHandle, jcharArray text,
+ jint index, jint count, jint bidiFlags, jfloatArray widths) {
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
const jchar* textArray = env->GetCharArrayElements(text, NULL);
count = dotextwidths(env, paint, textArray + index, count, widths, bidiFlags);
env->ReleaseCharArrayElements(text, const_cast<jchar*>(textArray),
@@ -498,8 +540,9 @@ public:
return count;
}
- static int getTextWidths__StringIII_F(JNIEnv* env, jobject clazz, SkPaint* paint, jstring text,
- int start, int end, jint bidiFlags, jfloatArray widths) {
+ static jint getTextWidths__StringIII_F(JNIEnv* env, jobject clazz, jlong paintHandle, jstring text,
+ jint start, jint end, jint bidiFlags, jfloatArray widths) {
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
const jchar* textArray = env->GetStringChars(text, NULL);
int count = dotextwidths(env, paint, textArray + start, end - start, widths, bidiFlags);
env->ReleaseStringChars(text, textArray);
@@ -536,9 +579,10 @@ public:
return glyphsCount;
}
- static int getTextGlyphs__StringIIIII_C(JNIEnv* env, jobject clazz, SkPaint* paint,
+ static jint getTextGlyphs__StringIIIII_C(JNIEnv* env, jobject clazz, jlong paintHandle,
jstring text, jint start, jint end, jint contextStart, jint contextEnd, jint flags,
jcharArray glyphs) {
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
const jchar* textArray = env->GetStringChars(text, NULL);
int count = doTextGlyphs(env, paint, textArray + contextStart, start - contextStart,
end - start, contextEnd - contextStart, flags, glyphs);
@@ -578,9 +622,10 @@ public:
return totalAdvance;
}
- static float getTextRunAdvances___CIIIII_FI(JNIEnv* env, jobject clazz, SkPaint* paint,
+ static jfloat getTextRunAdvances___CIIIII_FI(JNIEnv* env, jobject clazz, jlong paintHandle,
jcharArray text, jint index, jint count, jint contextIndex, jint contextCount,
jint flags, jfloatArray advances, jint advancesIndex) {
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
jchar* textArray = env->GetCharArrayElements(text, NULL);
jfloat result = doTextRunAdvances(env, paint, textArray + contextIndex,
index - contextIndex, count, contextCount, flags, advances, advancesIndex);
@@ -588,9 +633,10 @@ public:
return result;
}
- static float getTextRunAdvances__StringIIIII_FI(JNIEnv* env, jobject clazz, SkPaint* paint,
+ static jfloat getTextRunAdvances__StringIIIII_FI(JNIEnv* env, jobject clazz, jlong paintHandle,
jstring text, jint start, jint end, jint contextStart, jint contextEnd, jint flags,
jfloatArray advances, jint advancesIndex) {
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
const jchar* textArray = env->GetStringChars(text, NULL);
jfloat result = doTextRunAdvances(env, paint, textArray + contextStart,
start - contextStart, end - start, contextEnd - contextStart, flags,
@@ -643,8 +689,9 @@ public:
return pos;
}
- static jint getTextRunCursor___C(JNIEnv* env, jobject clazz, SkPaint* paint, jcharArray text,
+ static jint getTextRunCursor___C(JNIEnv* env, jobject clazz, jlong paintHandle, jcharArray text,
jint contextStart, jint contextCount, jint flags, jint offset, jint cursorOpt) {
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
jchar* textArray = env->GetCharArrayElements(text, NULL);
jint result = doTextRunCursor(env, paint, textArray, contextStart, contextCount, flags,
offset, cursorOpt);
@@ -652,8 +699,9 @@ public:
return result;
}
- static jint getTextRunCursor__String(JNIEnv* env, jobject clazz, SkPaint* paint, jstring text,
+ static jint getTextRunCursor__String(JNIEnv* env, jobject clazz, jlong paintHandle, jstring text,
jint contextStart, jint contextEnd, jint flags, jint offset, jint cursorOpt) {
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
const jchar* textArray = env->GetStringChars(text, NULL);
jint result = doTextRunCursor(env, paint, textArray, contextStart,
contextEnd - contextStart, flags, offset, cursorOpt);
@@ -666,22 +714,26 @@ public:
TextLayout::getTextPath(paint, text, count, bidiFlags, x, y, path);
}
- static void getTextPath___C(JNIEnv* env, jobject clazz, SkPaint* paint, jint bidiFlags,
- jcharArray text, int index, int count, jfloat x, jfloat y, SkPath* path) {
+ static void getTextPath___C(JNIEnv* env, jobject clazz, jlong paintHandle, jint bidiFlags,
+ jcharArray text, jint index, jint count, jfloat x, jfloat y, jlong pathHandle) {
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+ SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
const jchar* textArray = env->GetCharArrayElements(text, NULL);
getTextPath(env, paint, textArray + index, count, bidiFlags, x, y, path);
env->ReleaseCharArrayElements(text, const_cast<jchar*>(textArray), JNI_ABORT);
}
- static void getTextPath__String(JNIEnv* env, jobject clazz, SkPaint* paint, jint bidiFlags,
- jstring text, int start, int end, jfloat x, jfloat y, SkPath* path) {
+ static void getTextPath__String(JNIEnv* env, jobject clazz, jlong paintHandle, jint bidiFlags,
+ jstring text, jint start, jint end, jfloat x, jfloat y, jlong pathHandle) {
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+ SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
const jchar* textArray = env->GetStringChars(text, NULL);
getTextPath(env, paint, textArray + start, end - start, bidiFlags, x, y, path);
env->ReleaseStringChars(text, textArray);
}
static void setShadowLayer(JNIEnv* env, jobject jpaint, jfloat radius,
- jfloat dx, jfloat dy, int color) {
+ jfloat dx, jfloat dy, jint color) {
NPE_CHECK_RETURN_VOID(env, jpaint);
SkPaint* paint = GraphicsJNI::getNativePaint(env, jpaint);
@@ -717,8 +769,8 @@ public:
return bytes >> 1;
}
- static int breakTextC(JNIEnv* env, jobject jpaint, jcharArray jtext,
- int index, int count, float maxWidth, jint bidiFlags, jfloatArray jmeasuredWidth) {
+ static jint breakTextC(JNIEnv* env, jobject jpaint, jcharArray jtext,
+ jint index, jint count, jfloat maxWidth, jint bidiFlags, jfloatArray jmeasuredWidth) {
NPE_CHECK_RETURN_ZERO(env, jpaint);
NPE_CHECK_RETURN_ZERO(env, jtext);
@@ -745,8 +797,8 @@ public:
return count;
}
- static int breakTextS(JNIEnv* env, jobject jpaint, jstring jtext,
- bool forwards, float maxWidth, jint bidiFlags, jfloatArray jmeasuredWidth) {
+ static jint breakTextS(JNIEnv* env, jobject jpaint, jstring jtext,
+ jboolean forwards, jfloat maxWidth, jint bidiFlags, jfloatArray jmeasuredWidth) {
NPE_CHECK_RETURN_ZERO(env, jpaint);
NPE_CHECK_RETURN_ZERO(env, jtext);
@@ -777,15 +829,17 @@ public:
GraphicsJNI::irect_to_jrect(ir, env, bounds);
}
- static void getStringBounds(JNIEnv* env, jobject, const SkPaint* paint,
- jstring text, int start, int end, jint bidiFlags, jobject bounds) {
+ static void getStringBounds(JNIEnv* env, jobject, jlong paintHandle,
+ jstring text, jint start, jint end, jint bidiFlags, jobject bounds) {
+ const SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);;
const jchar* textArray = env->GetStringChars(text, NULL);
doTextBounds(env, textArray + start, end - start, bounds, *paint, bidiFlags);
env->ReleaseStringChars(text, textArray);
}
- static void getCharArrayBounds(JNIEnv* env, jobject, const SkPaint* paint,
- jcharArray text, int index, int count, jint bidiFlags, jobject bounds) {
+ static void getCharArrayBounds(JNIEnv* env, jobject, jlong paintHandle,
+ jcharArray text, jint index, jint count, jint bidiFlags, jobject bounds) {
+ const SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
const jchar* textArray = env->GetCharArrayElements(text, NULL);
doTextBounds(env, textArray + index, count, bounds, *paint, bidiFlags);
env->ReleaseCharArrayElements(text, const_cast<jchar*>(textArray),
@@ -795,11 +849,11 @@ public:
};
static JNINativeMethod methods[] = {
- {"finalizer", "(I)V", (void*) SkPaintGlue::finalizer},
- {"native_init","()I", (void*) SkPaintGlue::init},
- {"native_initWithPaint","(I)I", (void*) SkPaintGlue::intiWithPaint},
- {"native_reset","(I)V", (void*) SkPaintGlue::reset},
- {"native_set","(II)V", (void*) SkPaintGlue::assign},
+ {"finalizer", "(J)V", (void*) SkPaintGlue::finalizer},
+ {"native_init","()J", (void*) SkPaintGlue::init},
+ {"native_initWithPaint","(J)J", (void*) SkPaintGlue::initWithPaint},
+ {"native_reset","(J)V", (void*) SkPaintGlue::reset},
+ {"native_set","(JJ)V", (void*) SkPaintGlue::assign},
{"getFlags","()I", (void*) SkPaintGlue::getFlags},
{"setFlags","(I)V", (void*) SkPaintGlue::setFlags},
{"getHinting","()I", (void*) SkPaintGlue::getHinting},
@@ -812,8 +866,8 @@ static JNINativeMethod methods[] = {
{"setFakeBoldText","(Z)V", (void*) SkPaintGlue::setFakeBoldText},
{"setFilterBitmap","(Z)V", (void*) SkPaintGlue::setFilterBitmap},
{"setDither","(Z)V", (void*) SkPaintGlue::setDither},
- {"native_getStyle","(I)I", (void*) SkPaintGlue::getStyle},
- {"native_setStyle","(II)V", (void*) SkPaintGlue::setStyle},
+ {"native_getStyle","(J)I", (void*) SkPaintGlue::getStyle},
+ {"native_setStyle","(JI)V", (void*) SkPaintGlue::setStyle},
{"getColor","()I", (void*) SkPaintGlue::getColor},
{"setColor","(I)V", (void*) SkPaintGlue::setColor},
{"getAlpha","()I", (void*) SkPaintGlue::getAlpha},
@@ -822,21 +876,21 @@ static JNINativeMethod methods[] = {
{"setStrokeWidth","(F)V", (void*) SkPaintGlue::setStrokeWidth},
{"getStrokeMiter","()F", (void*) SkPaintGlue::getStrokeMiter},
{"setStrokeMiter","(F)V", (void*) SkPaintGlue::setStrokeMiter},
- {"native_getStrokeCap","(I)I", (void*) SkPaintGlue::getStrokeCap},
- {"native_setStrokeCap","(II)V", (void*) SkPaintGlue::setStrokeCap},
- {"native_getStrokeJoin","(I)I", (void*) SkPaintGlue::getStrokeJoin},
- {"native_setStrokeJoin","(II)V", (void*) SkPaintGlue::setStrokeJoin},
- {"native_getFillPath","(III)Z", (void*) SkPaintGlue::getFillPath},
- {"native_setShader","(II)I", (void*) SkPaintGlue::setShader},
- {"native_setColorFilter","(II)I", (void*) SkPaintGlue::setColorFilter},
- {"native_setXfermode","(II)I", (void*) SkPaintGlue::setXfermode},
- {"native_setPathEffect","(II)I", (void*) SkPaintGlue::setPathEffect},
- {"native_setMaskFilter","(II)I", (void*) SkPaintGlue::setMaskFilter},
- {"native_setTypeface","(II)I", (void*) SkPaintGlue::setTypeface},
- {"native_setRasterizer","(II)I", (void*) SkPaintGlue::setRasterizer},
- {"native_getTextAlign","(I)I", (void*) SkPaintGlue::getTextAlign},
- {"native_setTextAlign","(II)V", (void*) SkPaintGlue::setTextAlign},
- {"native_setTextLocale","(ILjava/lang/String;)V", (void*) SkPaintGlue::setTextLocale},
+ {"native_getStrokeCap","(J)I", (void*) SkPaintGlue::getStrokeCap},
+ {"native_setStrokeCap","(JI)V", (void*) SkPaintGlue::setStrokeCap},
+ {"native_getStrokeJoin","(J)I", (void*) SkPaintGlue::getStrokeJoin},
+ {"native_setStrokeJoin","(JI)V", (void*) SkPaintGlue::setStrokeJoin},
+ {"native_getFillPath","(JJJ)Z", (void*) SkPaintGlue::getFillPath},
+ {"native_setShader","(JJ)J", (void*) SkPaintGlue::setShader},
+ {"native_setColorFilter","(JJ)J", (void*) SkPaintGlue::setColorFilter},
+ {"native_setXfermode","(JJ)J", (void*) SkPaintGlue::setXfermode},
+ {"native_setPathEffect","(JJ)J", (void*) SkPaintGlue::setPathEffect},
+ {"native_setMaskFilter","(JJ)J", (void*) SkPaintGlue::setMaskFilter},
+ {"native_setTypeface","(JJ)J", (void*) SkPaintGlue::setTypeface},
+ {"native_setRasterizer","(JJ)J", (void*) SkPaintGlue::setRasterizer},
+ {"native_getTextAlign","(J)I", (void*) SkPaintGlue::getTextAlign},
+ {"native_setTextAlign","(JI)V", (void*) SkPaintGlue::setTextAlign},
+ {"native_setTextLocale","(JLjava/lang/String;)V", (void*) SkPaintGlue::setTextLocale},
{"getTextSize","()F", (void*) SkPaintGlue::getTextSize},
{"setTextSize","(F)V", (void*) SkPaintGlue::setTextSize},
{"getTextScaleX","()F", (void*) SkPaintGlue::getTextScaleX},
@@ -852,24 +906,24 @@ static JNINativeMethod methods[] = {
{"native_measureText","(Ljava/lang/String;III)F", (void*) SkPaintGlue::measureText_StringIII},
{"native_breakText","([CIIFI[F)I", (void*) SkPaintGlue::breakTextC},
{"native_breakText","(Ljava/lang/String;ZFI[F)I", (void*) SkPaintGlue::breakTextS},
- {"native_getTextWidths","(I[CIII[F)I", (void*) SkPaintGlue::getTextWidths___CIII_F},
- {"native_getTextWidths","(ILjava/lang/String;III[F)I", (void*) SkPaintGlue::getTextWidths__StringIII_F},
- {"native_getTextRunAdvances","(I[CIIIII[FI)F",
+ {"native_getTextWidths","(J[CIII[F)I", (void*) SkPaintGlue::getTextWidths___CIII_F},
+ {"native_getTextWidths","(JLjava/lang/String;III[F)I", (void*) SkPaintGlue::getTextWidths__StringIII_F},
+ {"native_getTextRunAdvances","(J[CIIIII[FI)F",
(void*) SkPaintGlue::getTextRunAdvances___CIIIII_FI},
- {"native_getTextRunAdvances","(ILjava/lang/String;IIIII[FI)F",
+ {"native_getTextRunAdvances","(JLjava/lang/String;IIIII[FI)F",
(void*) SkPaintGlue::getTextRunAdvances__StringIIIII_FI},
- {"native_getTextGlyphs","(ILjava/lang/String;IIIII[C)I",
+ {"native_getTextGlyphs","(JLjava/lang/String;IIIII[C)I",
(void*) SkPaintGlue::getTextGlyphs__StringIIIII_C},
- {"native_getTextRunCursor", "(I[CIIIII)I", (void*) SkPaintGlue::getTextRunCursor___C},
- {"native_getTextRunCursor", "(ILjava/lang/String;IIIII)I",
+ {"native_getTextRunCursor", "(J[CIIIII)I", (void*) SkPaintGlue::getTextRunCursor___C},
+ {"native_getTextRunCursor", "(JLjava/lang/String;IIIII)I",
(void*) SkPaintGlue::getTextRunCursor__String},
- {"native_getTextPath","(II[CIIFFI)V", (void*) SkPaintGlue::getTextPath___C},
- {"native_getTextPath","(IILjava/lang/String;IIFFI)V", (void*) SkPaintGlue::getTextPath__String},
- {"nativeGetStringBounds", "(ILjava/lang/String;IIILandroid/graphics/Rect;)V",
+ {"native_getTextPath","(JI[CIIFFJ)V", (void*) SkPaintGlue::getTextPath___C},
+ {"native_getTextPath","(JILjava/lang/String;IIFFJ)V", (void*) SkPaintGlue::getTextPath__String},
+ {"nativeGetStringBounds", "(JLjava/lang/String;IIILandroid/graphics/Rect;)V",
(void*) SkPaintGlue::getStringBounds },
- {"nativeGetCharArrayBounds", "(I[CIIILandroid/graphics/Rect;)V",
+ {"nativeGetCharArrayBounds", "(J[CIIILandroid/graphics/Rect;)V",
(void*) SkPaintGlue::getCharArrayBounds },
{"nSetShadowLayer", "(FFFI)V", (void*)SkPaintGlue::setShadowLayer}
};
diff --git a/core/jni/android/graphics/Path.cpp b/core/jni/android/graphics/Path.cpp
index ab7f1dc2469c..54b699615991 100644
--- a/core/jni/android/graphics/Path.cpp
+++ b/core/jni/android/graphics/Path.cpp
@@ -34,7 +34,8 @@ namespace android {
class SkPathGlue {
public:
- static void finalizer(JNIEnv* env, jobject clazz, SkPath* obj) {
+ static void finalizer(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
#ifdef USE_OPENGL_RENDERER
if (android::uirenderer::Caches::hasInstance()) {
android::uirenderer::Caches::getInstance().resourceCache.destructor(obj);
@@ -44,79 +45,96 @@ public:
delete obj;
}
- static SkPath* init1(JNIEnv* env, jobject clazz) {
- return new SkPath();
+ static jlong init1(JNIEnv* env, jobject clazz) {
+ return reinterpret_cast<jlong>(new SkPath());
}
-
- static SkPath* init2(JNIEnv* env, jobject clazz, SkPath* val) {
- return new SkPath(*val);
+
+ static jlong init2(JNIEnv* env, jobject clazz, jlong valHandle) {
+ SkPath* val = reinterpret_cast<SkPath*>(valHandle);
+ return reinterpret_cast<jlong>(new SkPath(*val));
}
-
- static void reset(JNIEnv* env, jobject clazz, SkPath* obj) {
+
+ static void reset(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
obj->reset();
}
- static void rewind(JNIEnv* env, jobject clazz, SkPath* obj) {
+ static void rewind(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
obj->rewind();
}
- static void assign(JNIEnv* env, jobject clazz, SkPath* dst, const SkPath* src) {
+ static void assign(JNIEnv* env, jobject clazz, jlong dstHandle, jlong srcHandle) {
+ SkPath* dst = reinterpret_cast<SkPath*>(dstHandle);
+ const SkPath* src = reinterpret_cast<SkPath*>(srcHandle);
*dst = *src;
}
-
- static jint getFillType(JNIEnv* env, jobject clazz, SkPath* obj) {
+
+ static jint getFillType(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
return obj->getFillType();
}
- static void setFillType(JNIEnv* env, jobject clazz, SkPath* path, SkPath::FillType ft) {
+ static void setFillType(JNIEnv* env, jobject clazz, jlong pathHandle, jint ftHandle) {
+ SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
+ SkPath::FillType ft = static_cast<SkPath::FillType>(ftHandle);
path->setFillType(ft);
}
-
- static jboolean isEmpty(JNIEnv* env, jobject clazz, SkPath* obj) {
+
+ static jboolean isEmpty(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
return obj->isEmpty();
}
- static jboolean isRect(JNIEnv* env, jobject clazz, SkPath* obj, jobject rect) {
+ static jboolean isRect(JNIEnv* env, jobject clazz, jlong objHandle, jobject rect) {
SkRect rect_;
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
jboolean result = obj->isRect(&rect_);
GraphicsJNI::rect_to_jrectf(rect_, env, rect);
return result;
}
- static void computeBounds(JNIEnv* env, jobject clazz, SkPath* obj, jobject bounds) {
+ static void computeBounds(JNIEnv* env, jobject clazz, jlong objHandle, jobject bounds) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
const SkRect& bounds_ = obj->getBounds();
GraphicsJNI::rect_to_jrectf(bounds_, env, bounds);
}
- static void incReserve(JNIEnv* env, jobject clazz, SkPath* obj, jint extraPtCount) {
+ static void incReserve(JNIEnv* env, jobject clazz, jlong objHandle, jint extraPtCount) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
obj->incReserve(extraPtCount);
}
- static void moveTo__FF(JNIEnv* env, jobject clazz, SkPath* obj, jfloat x, jfloat y) {
+ static void moveTo__FF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat x, jfloat y) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
SkScalar x_ = SkFloatToScalar(x);
SkScalar y_ = SkFloatToScalar(y);
obj->moveTo(x_, y_);
}
- static void rMoveTo(JNIEnv* env, jobject clazz, SkPath* obj, jfloat dx, jfloat dy) {
+ static void rMoveTo(JNIEnv* env, jobject clazz, jlong objHandle, jfloat dx, jfloat dy) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
SkScalar dx_ = SkFloatToScalar(dx);
SkScalar dy_ = SkFloatToScalar(dy);
obj->rMoveTo(dx_, dy_);
}
- static void lineTo__FF(JNIEnv* env, jobject clazz, SkPath* obj, jfloat x, jfloat y) {
+ static void lineTo__FF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat x, jfloat y) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
SkScalar x_ = SkFloatToScalar(x);
SkScalar y_ = SkFloatToScalar(y);
obj->lineTo(x_, y_);
}
- static void rLineTo(JNIEnv* env, jobject clazz, SkPath* obj, jfloat dx, jfloat dy) {
+ static void rLineTo(JNIEnv* env, jobject clazz, jlong objHandle, jfloat dx, jfloat dy) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
SkScalar dx_ = SkFloatToScalar(dx);
SkScalar dy_ = SkFloatToScalar(dy);
obj->rLineTo(dx_, dy_);
}
- static void quadTo__FFFF(JNIEnv* env, jobject clazz, SkPath* obj, jfloat x1, jfloat y1, jfloat x2, jfloat y2) {
+ static void quadTo__FFFF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat x1, jfloat y1, jfloat x2, jfloat y2) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
SkScalar x1_ = SkFloatToScalar(x1);
SkScalar y1_ = SkFloatToScalar(y1);
SkScalar x2_ = SkFloatToScalar(x2);
@@ -124,7 +142,8 @@ public:
obj->quadTo(x1_, y1_, x2_, y2_);
}
- static void rQuadTo(JNIEnv* env, jobject clazz, SkPath* obj, jfloat dx1, jfloat dy1, jfloat dx2, jfloat dy2) {
+ static void rQuadTo(JNIEnv* env, jobject clazz, jlong objHandle, jfloat dx1, jfloat dy1, jfloat dx2, jfloat dy2) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
SkScalar dx1_ = SkFloatToScalar(dx1);
SkScalar dy1_ = SkFloatToScalar(dy1);
SkScalar dx2_ = SkFloatToScalar(dx2);
@@ -132,7 +151,8 @@ public:
obj->rQuadTo(dx1_, dy1_, dx2_, dy2_);
}
- static void cubicTo__FFFFFF(JNIEnv* env, jobject clazz, SkPath* obj, jfloat x1, jfloat y1, jfloat x2, jfloat y2, jfloat x3, jfloat y3) {
+ static void cubicTo__FFFFFF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat x1, jfloat y1, jfloat x2, jfloat y2, jfloat x3, jfloat y3) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
SkScalar x1_ = SkFloatToScalar(x1);
SkScalar y1_ = SkFloatToScalar(y1);
SkScalar x2_ = SkFloatToScalar(x2);
@@ -142,7 +162,8 @@ public:
obj->cubicTo(x1_, y1_, x2_, y2_, x3_, y3_);
}
- static void rCubicTo(JNIEnv* env, jobject clazz, SkPath* obj, jfloat x1, jfloat y1, jfloat x2, jfloat y2, jfloat x3, jfloat y3) {
+ static void rCubicTo(JNIEnv* env, jobject clazz, jlong objHandle, jfloat x1, jfloat y1, jfloat x2, jfloat y2, jfloat x3, jfloat y3) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
SkScalar x1_ = SkFloatToScalar(x1);
SkScalar y1_ = SkFloatToScalar(y1);
SkScalar x2_ = SkFloatToScalar(x2);
@@ -152,7 +173,8 @@ public:
obj->rCubicTo(x1_, y1_, x2_, y2_, x3_, y3_);
}
- static void arcTo(JNIEnv* env, jobject clazz, SkPath* obj, jobject oval, jfloat startAngle, jfloat sweepAngle, jboolean forceMoveTo) {
+ static void arcTo(JNIEnv* env, jobject clazz, jlong objHandle, jobject oval, jfloat startAngle, jfloat sweepAngle, jboolean forceMoveTo) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
SkRect oval_;
GraphicsJNI::jrectf_to_rect(env, oval, &oval_);
SkScalar startAngle_ = SkFloatToScalar(startAngle);
@@ -160,17 +182,22 @@ public:
obj->arcTo(oval_, startAngle_, sweepAngle_, forceMoveTo);
}
- static void close(JNIEnv* env, jobject clazz, SkPath* obj) {
+ static void close(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
obj->close();
}
- static void addRect__RectFI(JNIEnv* env, jobject clazz, SkPath* obj, jobject rect, SkPath::Direction dir) {
+ static void addRect__RectFI(JNIEnv* env, jobject clazz, jlong objHandle, jobject rect, jint dirHandle) {
SkRect rect_;
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
+ SkPath::Direction dir = static_cast<SkPath::Direction>(dirHandle);
GraphicsJNI::jrectf_to_rect(env, rect, &rect_);
obj->addRect(rect_, dir);
}
- static void addRect__FFFFI(JNIEnv* env, jobject clazz, SkPath* obj, jfloat left, jfloat top, jfloat right, jfloat bottom, SkPath::Direction dir) {
+ static void addRect__FFFFI(JNIEnv* env, jobject clazz, jlong objHandle, jfloat left, jfloat top, jfloat right, jfloat bottom, jint dirHandle) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
+ SkPath::Direction dir = static_cast<SkPath::Direction>(dirHandle);
SkScalar left_ = SkFloatToScalar(left);
SkScalar top_ = SkFloatToScalar(top);
SkScalar right_ = SkFloatToScalar(right);
@@ -178,39 +205,48 @@ public:
obj->addRect(left_, top_, right_, bottom_, dir);
}
- static void addOval(JNIEnv* env, jobject clazz, SkPath* obj, jobject oval, SkPath::Direction dir) {
+ static void addOval(JNIEnv* env, jobject clazz, jlong objHandle, jobject oval, jint dirHandle) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
+ SkPath::Direction dir = static_cast<SkPath::Direction>(dirHandle);
SkRect oval_;
GraphicsJNI::jrectf_to_rect(env, oval, &oval_);
obj->addOval(oval_, dir);
}
- static void addCircle(JNIEnv* env, jobject clazz, SkPath* obj, jfloat x, jfloat y, jfloat radius, SkPath::Direction dir) {
+ static void addCircle(JNIEnv* env, jobject clazz, jlong objHandle, jfloat x, jfloat y, jfloat radius, jint dirHandle) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
+ SkPath::Direction dir = static_cast<SkPath::Direction>(dirHandle);
SkScalar x_ = SkFloatToScalar(x);
SkScalar y_ = SkFloatToScalar(y);
SkScalar radius_ = SkFloatToScalar(radius);
obj->addCircle(x_, y_, radius_, dir);
}
- static void addArc(JNIEnv* env, jobject clazz, SkPath* obj, jobject oval, jfloat startAngle, jfloat sweepAngle) {
+ static void addArc(JNIEnv* env, jobject clazz, jlong objHandle, jobject oval, jfloat startAngle, jfloat sweepAngle) {
SkRect oval_;
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
GraphicsJNI::jrectf_to_rect(env, oval, &oval_);
SkScalar startAngle_ = SkFloatToScalar(startAngle);
SkScalar sweepAngle_ = SkFloatToScalar(sweepAngle);
obj->addArc(oval_, startAngle_, sweepAngle_);
}
- static void addRoundRectXY(JNIEnv* env, jobject clazz, SkPath* obj, jobject rect,
- jfloat rx, jfloat ry, SkPath::Direction dir) {
+ static void addRoundRectXY(JNIEnv* env, jobject clazz, jlong objHandle, jobject rect,
+ jfloat rx, jfloat ry, jint dirHandle) {
SkRect rect_;
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
+ SkPath::Direction dir = static_cast<SkPath::Direction>(dirHandle);
GraphicsJNI::jrectf_to_rect(env, rect, &rect_);
SkScalar rx_ = SkFloatToScalar(rx);
SkScalar ry_ = SkFloatToScalar(ry);
obj->addRoundRect(rect_, rx_, ry_, dir);
}
- static void addRoundRect8(JNIEnv* env, jobject, SkPath* obj, jobject rect,
- jfloatArray array, SkPath::Direction dir) {
+ static void addRoundRect8(JNIEnv* env, jobject, jlong objHandle, jobject rect,
+ jfloatArray array, jint dirHandle) {
SkRect rect_;
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
+ SkPath::Direction dir = static_cast<SkPath::Direction>(dirHandle);
GraphicsJNI::jrectf_to_rect(env, rect, &rect_);
AutoJavaFloatArray afa(env, array, 8);
const float* src = afa.ptr();
@@ -222,90 +258,110 @@ public:
obj->addRoundRect(rect_, dst, dir);
}
- static void addPath__PathFF(JNIEnv* env, jobject clazz, SkPath* obj, SkPath* src, jfloat dx, jfloat dy) {
+ static void addPath__PathFF(JNIEnv* env, jobject clazz, jlong objHandle, jlong srcHandle, jfloat dx, jfloat dy) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
+ SkPath* src = reinterpret_cast<SkPath*>(srcHandle);
SkScalar dx_ = SkFloatToScalar(dx);
SkScalar dy_ = SkFloatToScalar(dy);
obj->addPath(*src, dx_, dy_);
}
- static void addPath__Path(JNIEnv* env, jobject clazz, SkPath* obj, SkPath* src) {
+ static void addPath__Path(JNIEnv* env, jobject clazz, jlong objHandle, jlong srcHandle) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
+ SkPath* src = reinterpret_cast<SkPath*>(srcHandle);
obj->addPath(*src);
}
- static void addPath__PathMatrix(JNIEnv* env, jobject clazz, SkPath* obj, SkPath* src, SkMatrix* matrix) {
+ static void addPath__PathMatrix(JNIEnv* env, jobject clazz, jlong objHandle, jlong srcHandle, jlong matrixHandle) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
+ SkPath* src = reinterpret_cast<SkPath*>(srcHandle);
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
obj->addPath(*src, *matrix);
}
- static void offset__FFPath(JNIEnv* env, jobject clazz, SkPath* obj, jfloat dx, jfloat dy, SkPath* dst) {
+ static void offset__FFPath(JNIEnv* env, jobject clazz, jlong objHandle, jfloat dx, jfloat dy, jlong dstHandle) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
+ SkPath* dst = reinterpret_cast<SkPath*>(dstHandle);
SkScalar dx_ = SkFloatToScalar(dx);
SkScalar dy_ = SkFloatToScalar(dy);
obj->offset(dx_, dy_, dst);
}
- static void offset__FF(JNIEnv* env, jobject clazz, SkPath* obj, jfloat dx, jfloat dy) {
+ static void offset__FF(JNIEnv* env, jobject clazz, jlong objHandle, jfloat dx, jfloat dy) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
SkScalar dx_ = SkFloatToScalar(dx);
SkScalar dy_ = SkFloatToScalar(dy);
obj->offset(dx_, dy_);
}
- static void setLastPoint(JNIEnv* env, jobject clazz, SkPath* obj, jfloat dx, jfloat dy) {
+ static void setLastPoint(JNIEnv* env, jobject clazz, jlong objHandle, jfloat dx, jfloat dy) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
SkScalar dx_ = SkFloatToScalar(dx);
SkScalar dy_ = SkFloatToScalar(dy);
obj->setLastPt(dx_, dy_);
}
- static void transform__MatrixPath(JNIEnv* env, jobject clazz, SkPath* obj, SkMatrix* matrix, SkPath* dst) {
+ static void transform__MatrixPath(JNIEnv* env, jobject clazz, jlong objHandle, jlong matrixHandle, jlong dstHandle) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
+ SkPath* dst = reinterpret_cast<SkPath*>(dstHandle);
obj->transform(*matrix, dst);
}
- static void transform__Matrix(JNIEnv* env, jobject clazz, SkPath* obj, SkMatrix* matrix) {
+ static void transform__Matrix(JNIEnv* env, jobject clazz, jlong objHandle, jlong matrixHandle) {
+ SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
obj->transform(*matrix);
}
- static jboolean op(JNIEnv* env, jobject clazz, SkPath* p1, SkPath* p2, SkPathOp op, SkPath* r) {
- return Op(*p1, *p2, op, r);
+ static jboolean op(JNIEnv* env, jobject clazz, jlong p1Handle, jlong p2Handle, jint opHandle, jlong rHandle) {
+ SkPath* p1 = reinterpret_cast<SkPath*>(p1Handle);
+ SkPath* p2 = reinterpret_cast<SkPath*>(p2Handle);
+ SkPathOp op = static_cast<SkPathOp>(opHandle);
+ SkPath* r = reinterpret_cast<SkPath*>(rHandle);
+ return Op(*p1, *p2, op, r);
}
};
static JNINativeMethod methods[] = {
- {"finalizer", "(I)V", (void*) SkPathGlue::finalizer},
- {"init1","()I", (void*) SkPathGlue::init1},
- {"init2","(I)I", (void*) SkPathGlue::init2},
- {"native_reset","(I)V", (void*) SkPathGlue::reset},
- {"native_rewind","(I)V", (void*) SkPathGlue::rewind},
- {"native_set","(II)V", (void*) SkPathGlue::assign},
- {"native_getFillType","(I)I", (void*) SkPathGlue::getFillType},
- {"native_setFillType","(II)V", (void*) SkPathGlue::setFillType},
- {"native_isEmpty","(I)Z", (void*) SkPathGlue::isEmpty},
- {"native_isRect","(ILandroid/graphics/RectF;)Z", (void*) SkPathGlue::isRect},
- {"native_computeBounds","(ILandroid/graphics/RectF;)V", (void*) SkPathGlue::computeBounds},
- {"native_incReserve","(II)V", (void*) SkPathGlue::incReserve},
- {"native_moveTo","(IFF)V", (void*) SkPathGlue::moveTo__FF},
- {"native_rMoveTo","(IFF)V", (void*) SkPathGlue::rMoveTo},
- {"native_lineTo","(IFF)V", (void*) SkPathGlue::lineTo__FF},
- {"native_rLineTo","(IFF)V", (void*) SkPathGlue::rLineTo},
- {"native_quadTo","(IFFFF)V", (void*) SkPathGlue::quadTo__FFFF},
- {"native_rQuadTo","(IFFFF)V", (void*) SkPathGlue::rQuadTo},
- {"native_cubicTo","(IFFFFFF)V", (void*) SkPathGlue::cubicTo__FFFFFF},
- {"native_rCubicTo","(IFFFFFF)V", (void*) SkPathGlue::rCubicTo},
- {"native_arcTo","(ILandroid/graphics/RectF;FFZ)V", (void*) SkPathGlue::arcTo},
- {"native_close","(I)V", (void*) SkPathGlue::close},
- {"native_addRect","(ILandroid/graphics/RectF;I)V", (void*) SkPathGlue::addRect__RectFI},
- {"native_addRect","(IFFFFI)V", (void*) SkPathGlue::addRect__FFFFI},
- {"native_addOval","(ILandroid/graphics/RectF;I)V", (void*) SkPathGlue::addOval},
- {"native_addCircle","(IFFFI)V", (void*) SkPathGlue::addCircle},
- {"native_addArc","(ILandroid/graphics/RectF;FF)V", (void*) SkPathGlue::addArc},
- {"native_addRoundRect","(ILandroid/graphics/RectF;FFI)V", (void*) SkPathGlue::addRoundRectXY},
- {"native_addRoundRect","(ILandroid/graphics/RectF;[FI)V", (void*) SkPathGlue::addRoundRect8},
- {"native_addPath","(IIFF)V", (void*) SkPathGlue::addPath__PathFF},
- {"native_addPath","(II)V", (void*) SkPathGlue::addPath__Path},
- {"native_addPath","(III)V", (void*) SkPathGlue::addPath__PathMatrix},
- {"native_offset","(IFFI)V", (void*) SkPathGlue::offset__FFPath},
- {"native_offset","(IFF)V", (void*) SkPathGlue::offset__FF},
- {"native_setLastPoint","(IFF)V", (void*) SkPathGlue::setLastPoint},
- {"native_transform","(III)V", (void*) SkPathGlue::transform__MatrixPath},
- {"native_transform","(II)V", (void*) SkPathGlue::transform__Matrix},
- {"native_op","(IIII)Z", (void*) SkPathGlue::op}
+ {"finalizer", "(J)V", (void*) SkPathGlue::finalizer},
+ {"init1","()J", (void*) SkPathGlue::init1},
+ {"init2","(J)J", (void*) SkPathGlue::init2},
+ {"native_reset","(J)V", (void*) SkPathGlue::reset},
+ {"native_rewind","(J)V", (void*) SkPathGlue::rewind},
+ {"native_set","(JJ)V", (void*) SkPathGlue::assign},
+ {"native_getFillType","(J)I", (void*) SkPathGlue::getFillType},
+ {"native_setFillType","(JI)V", (void*) SkPathGlue::setFillType},
+ {"native_isEmpty","(J)Z", (void*) SkPathGlue::isEmpty},
+ {"native_isRect","(JLandroid/graphics/RectF;)Z", (void*) SkPathGlue::isRect},
+ {"native_computeBounds","(JLandroid/graphics/RectF;)V", (void*) SkPathGlue::computeBounds},
+ {"native_incReserve","(JI)V", (void*) SkPathGlue::incReserve},
+ {"native_moveTo","(JFF)V", (void*) SkPathGlue::moveTo__FF},
+ {"native_rMoveTo","(JFF)V", (void*) SkPathGlue::rMoveTo},
+ {"native_lineTo","(JFF)V", (void*) SkPathGlue::lineTo__FF},
+ {"native_rLineTo","(JFF)V", (void*) SkPathGlue::rLineTo},
+ {"native_quadTo","(JFFFF)V", (void*) SkPathGlue::quadTo__FFFF},
+ {"native_rQuadTo","(JFFFF)V", (void*) SkPathGlue::rQuadTo},
+ {"native_cubicTo","(JFFFFFF)V", (void*) SkPathGlue::cubicTo__FFFFFF},
+ {"native_rCubicTo","(JFFFFFF)V", (void*) SkPathGlue::rCubicTo},
+ {"native_arcTo","(JLandroid/graphics/RectF;FFZ)V", (void*) SkPathGlue::arcTo},
+ {"native_close","(J)V", (void*) SkPathGlue::close},
+ {"native_addRect","(JLandroid/graphics/RectF;I)V", (void*) SkPathGlue::addRect__RectFI},
+ {"native_addRect","(JFFFFI)V", (void*) SkPathGlue::addRect__FFFFI},
+ {"native_addOval","(JLandroid/graphics/RectF;I)V", (void*) SkPathGlue::addOval},
+ {"native_addCircle","(JFFFI)V", (void*) SkPathGlue::addCircle},
+ {"native_addArc","(JLandroid/graphics/RectF;FF)V", (void*) SkPathGlue::addArc},
+ {"native_addRoundRect","(JLandroid/graphics/RectF;FFI)V", (void*) SkPathGlue::addRoundRectXY},
+ {"native_addRoundRect","(JLandroid/graphics/RectF;[FI)V", (void*) SkPathGlue::addRoundRect8},
+ {"native_addPath","(JJFF)V", (void*) SkPathGlue::addPath__PathFF},
+ {"native_addPath","(JJ)V", (void*) SkPathGlue::addPath__Path},
+ {"native_addPath","(JJJ)V", (void*) SkPathGlue::addPath__PathMatrix},
+ {"native_offset","(JFFJ)V", (void*) SkPathGlue::offset__FFPath},
+ {"native_offset","(JFF)V", (void*) SkPathGlue::offset__FF},
+ {"native_setLastPoint","(JFF)V", (void*) SkPathGlue::setLastPoint},
+ {"native_transform","(JJJ)V", (void*) SkPathGlue::transform__MatrixPath},
+ {"native_transform","(JJ)V", (void*) SkPathGlue::transform__Matrix},
+ {"native_op","(JJIJ)Z", (void*) SkPathGlue::op}
};
int register_android_graphics_Path(JNIEnv* env) {
diff --git a/core/jni/android/graphics/PathEffect.cpp b/core/jni/android/graphics/PathEffect.cpp
index 0503614c008c..280375898a10 100644
--- a/core/jni/android/graphics/PathEffect.cpp
+++ b/core/jni/android/graphics/PathEffect.cpp
@@ -11,22 +11,29 @@
class SkPathEffectGlue {
public:
- static void destructor(JNIEnv* env, jobject, SkPathEffect* effect) {
+ static void destructor(JNIEnv* env, jobject, jlong effectHandle) {
+ SkPathEffect* effect = reinterpret_cast<SkPathEffect*>(effectHandle);
SkSafeUnref(effect);
}
- static SkPathEffect* Compose_constructor(JNIEnv* env, jobject,
- SkPathEffect* outer, SkPathEffect* inner) {
- return new SkComposePathEffect(outer, inner);
+ static jlong Compose_constructor(JNIEnv* env, jobject,
+ jlong outerHandle, jlong innerHandle) {
+ SkPathEffect* outer = reinterpret_cast<SkPathEffect*>(outerHandle);
+ SkPathEffect* inner = reinterpret_cast<SkPathEffect*>(innerHandle);
+ SkPathEffect* effect = new SkComposePathEffect(outer, inner);
+ return reinterpret_cast<jlong>(effect);
}
- static SkPathEffect* Sum_constructor(JNIEnv* env, jobject,
- SkPathEffect* first, SkPathEffect* second) {
- return new SkSumPathEffect(first, second);
+ static jlong Sum_constructor(JNIEnv* env, jobject,
+ jlong firstHandle, jlong secondHandle) {
+ SkPathEffect* first = reinterpret_cast<SkPathEffect*>(firstHandle);
+ SkPathEffect* second = reinterpret_cast<SkPathEffect*>(secondHandle);
+ SkPathEffect* effect = new SkSumPathEffect(first, second);
+ return reinterpret_cast<jlong>(effect);
}
- static SkPathEffect* Dash_constructor(JNIEnv* env, jobject,
- jfloatArray intervalArray, float phase) {
+ static jlong Dash_constructor(JNIEnv* env, jobject,
+ jfloatArray intervalArray, jfloat phase) {
AutoJavaFloatArray autoInterval(env, intervalArray);
int count = autoInterval.length() & ~1; // even number
float* values = autoInterval.ptr();
@@ -36,24 +43,29 @@ public:
for (int i = 0; i < count; i++) {
intervals[i] = SkFloatToScalar(values[i]);
}
- return new SkDashPathEffect(intervals, count, SkFloatToScalar(phase));
+ SkPathEffect* effect = new SkDashPathEffect(intervals, count, SkFloatToScalar(phase));
+ return reinterpret_cast<jlong>(effect);
}
- static SkPathEffect* OneD_constructor(JNIEnv* env, jobject,
- const SkPath* shape, float advance, float phase, int style) {
+ static jlong OneD_constructor(JNIEnv* env, jobject,
+ jlong shapeHandle, jfloat advance, jfloat phase, jint style) {
+ const SkPath* shape = reinterpret_cast<SkPath*>(shapeHandle);
SkASSERT(shape != NULL);
- return new SkPath1DPathEffect(*shape, SkFloatToScalar(advance),
+ SkPathEffect* effect = new SkPath1DPathEffect(*shape, SkFloatToScalar(advance),
SkFloatToScalar(phase), (SkPath1DPathEffect::Style)style);
+ return reinterpret_cast<jlong>(effect);
}
- static SkPathEffect* Corner_constructor(JNIEnv* env, jobject, float radius){
- return new SkCornerPathEffect(SkFloatToScalar(radius));
+ static jlong Corner_constructor(JNIEnv* env, jobject, jfloat radius){
+ SkPathEffect* effect = new SkCornerPathEffect(SkFloatToScalar(radius));
+ return reinterpret_cast<jlong>(effect);
}
- static SkPathEffect* Discrete_constructor(JNIEnv* env, jobject,
- float length, float deviation) {
- return new SkDiscretePathEffect(SkFloatToScalar(length),
+ static jlong Discrete_constructor(JNIEnv* env, jobject,
+ jfloat length, jfloat deviation) {
+ SkPathEffect* effect = new SkDiscretePathEffect(SkFloatToScalar(length),
SkFloatToScalar(deviation));
+ return reinterpret_cast<jlong>(effect);
}
};
@@ -61,31 +73,31 @@ public:
////////////////////////////////////////////////////////////////////////////////////////////////////////
static JNINativeMethod gPathEffectMethods[] = {
- { "nativeDestructor", "(I)V", (void*)SkPathEffectGlue::destructor }
+ { "nativeDestructor", "(J)V", (void*)SkPathEffectGlue::destructor }
};
static JNINativeMethod gComposePathEffectMethods[] = {
- { "nativeCreate", "(II)I", (void*)SkPathEffectGlue::Compose_constructor }
+ { "nativeCreate", "(JJ)J", (void*)SkPathEffectGlue::Compose_constructor }
};
static JNINativeMethod gSumPathEffectMethods[] = {
- { "nativeCreate", "(II)I", (void*)SkPathEffectGlue::Sum_constructor }
+ { "nativeCreate", "(JJ)J", (void*)SkPathEffectGlue::Sum_constructor }
};
static JNINativeMethod gDashPathEffectMethods[] = {
- { "nativeCreate", "([FF)I", (void*)SkPathEffectGlue::Dash_constructor }
+ { "nativeCreate", "([FF)J", (void*)SkPathEffectGlue::Dash_constructor }
};
static JNINativeMethod gPathDashPathEffectMethods[] = {
- { "nativeCreate", "(IFFI)I", (void*)SkPathEffectGlue::OneD_constructor }
+ { "nativeCreate", "(JFFI)J", (void*)SkPathEffectGlue::OneD_constructor }
};
static JNINativeMethod gCornerPathEffectMethods[] = {
- { "nativeCreate", "(F)I", (void*)SkPathEffectGlue::Corner_constructor }
+ { "nativeCreate", "(F)J", (void*)SkPathEffectGlue::Corner_constructor }
};
static JNINativeMethod gDiscretePathEffectMethods[] = {
- { "nativeCreate", "(FF)I", (void*)SkPathEffectGlue::Discrete_constructor }
+ { "nativeCreate", "(FF)J", (void*)SkPathEffectGlue::Discrete_constructor }
};
#include <android_runtime/AndroidRuntime.h>
diff --git a/core/jni/android/graphics/PathMeasure.cpp b/core/jni/android/graphics/PathMeasure.cpp
index 51a3f3aa84bc..8478a02f23ff 100644
--- a/core/jni/android/graphics/PathMeasure.cpp
+++ b/core/jni/android/graphics/PathMeasure.cpp
@@ -52,11 +52,24 @@ namespace android {
class SkPathMeasureGlue {
public:
- static PathMeasurePair* create(JNIEnv* env, jobject clazz, const SkPath* path, jboolean forceClosed) {
- return path ? new PathMeasurePair(*path, forceClosed) : new PathMeasurePair;
+ static jlong create(JNIEnv* env, jobject clazz, jlong pathHandle,
+ jboolean forceClosedHandle) {
+ const SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
+ bool forceClosed = (forceClosedHandle == JNI_TRUE);
+ PathMeasurePair* pair;
+ if(path)
+ pair = new PathMeasurePair(*path, forceClosed);
+ else
+ pair = new PathMeasurePair;
+ return reinterpret_cast<jlong>(pair);
}
-
- static void setPath(JNIEnv* env, jobject clazz, PathMeasurePair* pair, const SkPath* path, jboolean forceClosed) {
+
+ static void setPath(JNIEnv* env, jobject clazz, jlong pairHandle,
+ jlong pathHandle, jboolean forceClosedHandle) {
+ PathMeasurePair* pair = reinterpret_cast<PathMeasurePair*>(pairHandle);
+ const SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
+ bool forceClosed = (forceClosedHandle == JNI_TRUE);
+
if (NULL == path) {
pair->fPath.reset();
} else {
@@ -64,11 +77,12 @@ public:
}
pair->fMeasure.setPath(&pair->fPath, forceClosed);
}
-
- static jfloat getLength(JNIEnv* env, jobject clazz, PathMeasurePair* pair) {
- return SkScalarToFloat(pair->fMeasure.getLength());
+
+ static jfloat getLength(JNIEnv* env, jobject clazz, jlong pairHandle) {
+ PathMeasurePair* pair = reinterpret_cast<PathMeasurePair*>(pairHandle);
+ return static_cast<jfloat>(SkScalarToFloat(pair->fMeasure.getLength()));
}
-
+
static void convertTwoElemFloatArray(JNIEnv* env, jfloatArray array, const SkScalar src[2]) {
AutoJavaFloatArray autoArray(env, array, 2);
jfloat* ptr = autoArray.ptr();
@@ -76,13 +90,14 @@ public:
ptr[1] = SkScalarToFloat(src[1]);
}
- static jboolean getPosTan(JNIEnv* env, jobject clazz, PathMeasurePair* pair, jfloat dist, jfloatArray pos, jfloatArray tan) {
+ static jboolean getPosTan(JNIEnv* env, jobject clazz, jlong pairHandle, jfloat dist, jfloatArray pos, jfloatArray tan) {
+ PathMeasurePair* pair = reinterpret_cast<PathMeasurePair*>(pairHandle);
SkScalar tmpPos[2], tmpTan[2];
SkScalar* posPtr = pos ? tmpPos : NULL;
SkScalar* tanPtr = tan ? tmpTan : NULL;
if (!pair->fMeasure.getPosTan(SkFloatToScalar(dist), (SkPoint*)posPtr, (SkVector*)tanPtr)) {
- return false;
+ return JNI_FALSE;
}
if (pos) {
@@ -91,42 +106,53 @@ public:
if (tan) {
convertTwoElemFloatArray(env, tan, tmpTan);
}
- return true;
+ return JNI_TRUE;
}
-
- static jboolean getMatrix(JNIEnv* env, jobject clazz, PathMeasurePair* pair, jfloat dist,
- SkMatrix* matrix, int flags) {
- return pair->fMeasure.getMatrix(SkFloatToScalar(dist), matrix, (SkPathMeasure::MatrixFlags)flags);
+
+ static jboolean getMatrix(JNIEnv* env, jobject clazz, jlong pairHandle, jfloat dist,
+ jlong matrixHandle, jint flags) {
+ PathMeasurePair* pair = reinterpret_cast<PathMeasurePair*>(pairHandle);
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
+ bool result = pair->fMeasure.getMatrix(SkFloatToScalar(dist), matrix, (SkPathMeasure::MatrixFlags)flags);
+ return result ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean getSegment(JNIEnv* env, jobject clazz, PathMeasurePair* pair, jfloat startF,
- jfloat stopF, SkPath* dst, jboolean startWithMoveTo) {
- return pair->fMeasure.getSegment(SkFloatToScalar(startF), SkFloatToScalar(stopF), dst, startWithMoveTo);
+
+ static jboolean getSegment(JNIEnv* env, jobject clazz, jlong pairHandle, jfloat startF,
+ jfloat stopF, jlong dstHandle, jboolean startWithMoveTo) {
+ PathMeasurePair* pair = reinterpret_cast<PathMeasurePair*>(pairHandle);
+ SkPath* dst = reinterpret_cast<SkPath*>(dstHandle);
+ bool result = pair->fMeasure.getSegment(SkFloatToScalar(startF), SkFloatToScalar(stopF), dst, startWithMoveTo);
+ return result ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean isClosed(JNIEnv* env, jobject clazz, PathMeasurePair* pair) {
- return pair->fMeasure.isClosed();
+
+ static jboolean isClosed(JNIEnv* env, jobject clazz, jlong pairHandle) {
+ PathMeasurePair* pair = reinterpret_cast<PathMeasurePair*>(pairHandle);
+ bool result = pair->fMeasure.isClosed();
+ return result ? JNI_TRUE : JNI_FALSE;
}
-
- static jboolean nextContour(JNIEnv* env, jobject clazz, PathMeasurePair* pair) {
- return pair->fMeasure.nextContour();
+
+ static jboolean nextContour(JNIEnv* env, jobject clazz, jlong pairHandle) {
+ PathMeasurePair* pair = reinterpret_cast<PathMeasurePair*>(pairHandle);
+ bool result = pair->fMeasure.nextContour();
+ return result ? JNI_TRUE : JNI_FALSE;
}
-
- static void destroy(JNIEnv* env, jobject clazz, PathMeasurePair* pair) {
+
+ static void destroy(JNIEnv* env, jobject clazz, jlong pairHandle) {
+ PathMeasurePair* pair = reinterpret_cast<PathMeasurePair*>(pairHandle);
delete pair;
}
};
static JNINativeMethod methods[] = {
- {"native_create", "(IZ)I", (void*) SkPathMeasureGlue::create },
- {"native_setPath", "(IIZ)V", (void*) SkPathMeasureGlue::setPath },
- {"native_getLength", "(I)F", (void*) SkPathMeasureGlue::getLength },
- {"native_getPosTan", "(IF[F[F)Z", (void*) SkPathMeasureGlue::getPosTan },
- {"native_getMatrix", "(IFII)Z", (void*) SkPathMeasureGlue::getMatrix },
- {"native_getSegment", "(IFFIZ)Z", (void*) SkPathMeasureGlue::getSegment },
- {"native_isClosed", "(I)Z", (void*) SkPathMeasureGlue::isClosed },
- {"native_nextContour", "(I)Z", (void*) SkPathMeasureGlue::nextContour },
- {"native_destroy", "(I)V", (void*) SkPathMeasureGlue::destroy }
+ {"native_create", "(JZ)J", (void*) SkPathMeasureGlue::create },
+ {"native_setPath", "(JJZ)V", (void*) SkPathMeasureGlue::setPath },
+ {"native_getLength", "(J)F", (void*) SkPathMeasureGlue::getLength },
+ {"native_getPosTan", "(JF[F[F)Z", (void*) SkPathMeasureGlue::getPosTan },
+ {"native_getMatrix", "(JFJI)Z", (void*) SkPathMeasureGlue::getMatrix },
+ {"native_getSegment", "(JFFJZ)Z", (void*) SkPathMeasureGlue::getSegment },
+ {"native_isClosed", "(J)Z", (void*) SkPathMeasureGlue::isClosed },
+ {"native_nextContour", "(J)Z", (void*) SkPathMeasureGlue::nextContour },
+ {"native_destroy", "(J)V", (void*) SkPathMeasureGlue::destroy }
};
int register_android_graphics_PathMeasure(JNIEnv* env) {
diff --git a/core/jni/android/graphics/Picture.cpp b/core/jni/android/graphics/Picture.cpp
index fcf22b83c406..bac8ef79c994 100644
--- a/core/jni/android/graphics/Picture.cpp
+++ b/core/jni/android/graphics/Picture.cpp
@@ -28,71 +28,80 @@ namespace android {
class SkPictureGlue {
public:
- static SkPicture* newPicture(JNIEnv* env, jobject, const SkPicture* src) {
+ static jlong newPicture(JNIEnv* env, jobject, jlong srcHandle) {
+ const SkPicture* src = reinterpret_cast<SkPicture*>(srcHandle);
if (src) {
- return new SkPicture(*src);
+ return reinterpret_cast<jlong>(new SkPicture(*src));
} else {
- return new SkPicture;
+ return reinterpret_cast<jlong>(new SkPicture);
}
}
-
- static SkPicture* deserialize(JNIEnv* env, jobject, jobject jstream,
- jbyteArray jstorage) {
+
+ static jlong deserialize(JNIEnv* env, jobject, jobject jstream,
+ jbyteArray jstorage) {
SkPicture* picture = NULL;
SkStream* strm = CreateJavaInputStreamAdaptor(env, jstream, jstorage);
if (strm) {
picture = SkPicture::CreateFromStream(strm);
delete strm;
}
- return picture;
+ return reinterpret_cast<jlong>(picture);
}
-
- static void killPicture(JNIEnv* env, jobject, SkPicture* picture) {
+
+ static void killPicture(JNIEnv* env, jobject, jlong pictureHandle) {
+ SkPicture* picture = reinterpret_cast<SkPicture*>(pictureHandle);
SkASSERT(picture);
picture->unref();
}
-
- static void draw(JNIEnv* env, jobject, SkCanvas* canvas,
- SkPicture* picture) {
+
+ static void draw(JNIEnv* env, jobject, jlong canvasHandle,
+ jlong pictureHandle) {
+ SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
+ SkPicture* picture = reinterpret_cast<SkPicture*>(pictureHandle);
SkASSERT(canvas);
SkASSERT(picture);
picture->draw(canvas);
}
-
- static bool serialize(JNIEnv* env, jobject, SkPicture* picture,
+
+ static jboolean serialize(JNIEnv* env, jobject, jlong pictureHandle,
jobject jstream, jbyteArray jstorage) {
+ SkPicture* picture = reinterpret_cast<SkPicture*>(pictureHandle);
SkWStream* strm = CreateJavaOutputStreamAdaptor(env, jstream, jstorage);
if (NULL != strm) {
picture->serialize(strm);
delete strm;
- return true;
+ return JNI_TRUE;
}
- return false;
+ return JNI_FALSE;
}
-
- static int getWidth(JNIEnv* env, jobject jpic) {
+
+ static jint getWidth(JNIEnv* env, jobject jpic) {
NPE_CHECK_RETURN_ZERO(env, jpic);
- return GraphicsJNI::getNativePicture(env, jpic)->width();
+ int width = GraphicsJNI::getNativePicture(env, jpic)->width();
+ return static_cast<jint>(width);
}
-
- static int getHeight(JNIEnv* env, jobject jpic) {
+
+ static jint getHeight(JNIEnv* env, jobject jpic) {
NPE_CHECK_RETURN_ZERO(env, jpic);
- return GraphicsJNI::getNativePicture(env, jpic)->height();
+ int height = GraphicsJNI::getNativePicture(env, jpic)->height();
+ return static_cast<jint>(height);
}
-
- static SkCanvas* beginRecording(JNIEnv* env, jobject, SkPicture* pict,
- int w, int h) {
+
+ static jlong beginRecording(JNIEnv* env, jobject, jlong pictHandle,
+ jint w, jint h) {
+ SkPicture* pict = reinterpret_cast<SkPicture*>(pictHandle);
// beginRecording does not ref its return value, it just returns it.
SkCanvas* canvas = pict->beginRecording(w, h);
// the java side will wrap this guy in a Canvas.java, which will call
// unref in its finalizer, so we have to ref it here, so that both that
// Canvas.java and our picture can both be owners
canvas->ref();
- return canvas;
+ return reinterpret_cast<jlong>(canvas);
}
-
- static void endRecording(JNIEnv* env, jobject, SkPicture* pict) {
+
+ static void endRecording(JNIEnv* env, jobject, jlong pictHandle) {
+ SkPicture* pict = reinterpret_cast<SkPicture*>(pictHandle);
pict->endRecording();
}
};
@@ -100,30 +109,30 @@ public:
static JNINativeMethod gPictureMethods[] = {
{"getWidth", "()I", (void*) SkPictureGlue::getWidth},
{"getHeight", "()I", (void*) SkPictureGlue::getHeight},
- {"nativeConstructor", "(I)I", (void*) SkPictureGlue::newPicture},
- {"nativeCreateFromStream", "(Ljava/io/InputStream;[B)I", (void*)SkPictureGlue::deserialize},
- {"nativeBeginRecording", "(III)I", (void*) SkPictureGlue::beginRecording},
- {"nativeEndRecording", "(I)V", (void*) SkPictureGlue::endRecording},
- {"nativeDraw", "(II)V", (void*) SkPictureGlue::draw},
- {"nativeWriteToStream", "(ILjava/io/OutputStream;[B)Z", (void*)SkPictureGlue::serialize},
- {"nativeDestructor","(I)V", (void*) SkPictureGlue::killPicture}
+ {"nativeConstructor", "(J)J", (void*) SkPictureGlue::newPicture},
+ {"nativeCreateFromStream", "(Ljava/io/InputStream;[B)J", (void*)SkPictureGlue::deserialize},
+ {"nativeBeginRecording", "(JII)J", (void*) SkPictureGlue::beginRecording},
+ {"nativeEndRecording", "(J)V", (void*) SkPictureGlue::endRecording},
+ {"nativeDraw", "(JJ)V", (void*) SkPictureGlue::draw},
+ {"nativeWriteToStream", "(JLjava/io/OutputStream;[B)Z", (void*)SkPictureGlue::serialize},
+ {"nativeDestructor","(J)V", (void*) SkPictureGlue::killPicture}
};
#include <android_runtime/AndroidRuntime.h>
-
+
#define REG(env, name, array) \
result = android::AndroidRuntime::registerNativeMethods(env, name, array, \
SK_ARRAY_COUNT(array)); \
if (result < 0) return result
-
+
int register_android_graphics_Picture(JNIEnv* env) {
int result;
-
+
REG(env, "android/graphics/Picture", gPictureMethods);
-
+
return result;
}
-
+
}
diff --git a/core/jni/android/graphics/PorterDuff.cpp b/core/jni/android/graphics/PorterDuff.cpp
index 47de6013f18e..8a49eb5da460 100644
--- a/core/jni/android/graphics/PorterDuff.cpp
+++ b/core/jni/android/graphics/PorterDuff.cpp
@@ -31,15 +31,15 @@ namespace android {
class SkPorterDuffGlue {
public:
- static SkXfermode* CreateXfermode(JNIEnv* env, jobject,
- SkPorterDuff::Mode mode) {
- return SkPorterDuff::CreateXfermode(mode);
+ static jlong CreateXfermode(JNIEnv* env, jobject, jint modeHandle) {
+ SkPorterDuff::Mode mode = static_cast<SkPorterDuff::Mode>(modeHandle);
+ return reinterpret_cast<jlong>(SkPorterDuff::CreateXfermode(mode));
}
};
static JNINativeMethod methods[] = {
- {"nativeCreateXfermode","(I)I", (void*) SkPorterDuffGlue::CreateXfermode},
+ {"nativeCreateXfermode","(I)J", (void*) SkPorterDuffGlue::CreateXfermode},
};
int register_android_graphics_PorterDuff(JNIEnv* env) {
diff --git a/core/jni/android/graphics/Rasterizer.cpp b/core/jni/android/graphics/Rasterizer.cpp
index 4e1b36aee01c..b6450d03ba1e 100644
--- a/core/jni/android/graphics/Rasterizer.cpp
+++ b/core/jni/android/graphics/Rasterizer.cpp
@@ -31,14 +31,15 @@ namespace android {
class SkRasterizerGlue {
public:
- static void finalizer(JNIEnv* env, jobject clazz, SkRasterizer* obj) {
+ static void finalizer(JNIEnv* env, jobject clazz, jlong objHandle) {
+ SkRasterizer* obj = reinterpret_cast<SkRasterizer *>(objHandle);
SkSafeUnref(obj);
}
};
static JNINativeMethod methods[] = {
- {"finalizer", "(I)V", (void*) SkRasterizerGlue::finalizer}
+ {"finalizer", "(J)V", (void*) SkRasterizerGlue::finalizer}
};
int register_android_graphics_Rasterizer(JNIEnv* env) {
diff --git a/core/jni/android/graphics/Region.cpp b/core/jni/android/graphics/Region.cpp
index f0a7baf8cb04..912968a9da3f 100644
--- a/core/jni/android/graphics/Region.cpp
+++ b/core/jni/android/graphics/Region.cpp
@@ -29,95 +29,131 @@ namespace android {
static jfieldID gRegion_nativeInstanceFieldID;
+static inline jboolean boolTojboolean(bool value) {
+ return value ? JNI_TRUE : JNI_FALSE;
+}
+
static inline SkRegion* GetSkRegion(JNIEnv* env, jobject regionObject) {
- SkRegion* rgn = (SkRegion*)env->GetIntField(regionObject, gRegion_nativeInstanceFieldID);
- SkASSERT(rgn != NULL);
- return rgn;
+ jlong regionHandle = env->GetLongField(regionObject, gRegion_nativeInstanceFieldID);
+ SkRegion* region = reinterpret_cast<SkRegion*>(regionHandle);
+ SkASSERT(region != NULL);
+ return region;
}
-static SkRegion* Region_constructor(JNIEnv* env, jobject) {
- return new SkRegion;
+static jlong Region_constructor(JNIEnv* env, jobject) {
+ return reinterpret_cast<jlong>(new SkRegion);
}
-static void Region_destructor(JNIEnv* env, jobject, SkRegion* region) {
+static void Region_destructor(JNIEnv* env, jobject, jlong regionHandle) {
+ SkRegion* region = reinterpret_cast<SkRegion*>(regionHandle);
SkASSERT(region);
delete region;
}
-static void Region_setRegion(JNIEnv* env, jobject, SkRegion* dst, const SkRegion* src) {
+static void Region_setRegion(JNIEnv* env, jobject, jlong dstHandle, jlong srcHandle) {
+ SkRegion* dst = reinterpret_cast<SkRegion*>(dstHandle);
+ const SkRegion* src = reinterpret_cast<SkRegion*>(srcHandle);
SkASSERT(dst && src);
*dst = *src;
}
-static jboolean Region_setRect(JNIEnv* env, jobject, SkRegion* dst, int left, int top, int right, int bottom) {
- return dst->setRect(left, top, right, bottom);
+static jboolean Region_setRect(JNIEnv* env, jobject, jlong dstHandle, jint left, jint top, jint right, jint bottom) {
+ SkRegion* dst = reinterpret_cast<SkRegion*>(dstHandle);
+ bool result = dst->setRect(left, top, right, bottom);
+ return boolTojboolean(result);
}
-static jboolean Region_setPath(JNIEnv* env, jobject, SkRegion* dst,
- const SkPath* path, const SkRegion* clip) {
+static jboolean Region_setPath(JNIEnv* env, jobject, jlong dstHandle,
+ jlong pathHandle, jlong clipHandle) {
+ SkRegion* dst = reinterpret_cast<SkRegion*>(dstHandle);
+ const SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
+ const SkRegion* clip = reinterpret_cast<SkRegion*>(clipHandle);
SkASSERT(dst && path && clip);
- return dst->setPath(*path, *clip);
+ bool result = dst->setPath(*path, *clip);
+ return boolTojboolean(result);
+
}
-static jboolean Region_getBounds(JNIEnv* env, jobject, SkRegion* region, jobject rectBounds) {
+static jboolean Region_getBounds(JNIEnv* env, jobject, jlong regionHandle, jobject rectBounds) {
+ SkRegion* region = reinterpret_cast<SkRegion*>(regionHandle);
GraphicsJNI::irect_to_jrect(region->getBounds(), env, rectBounds);
- return !region->isEmpty();
+ bool result = !region->isEmpty();
+ return boolTojboolean(result);
}
-static jboolean Region_getBoundaryPath(JNIEnv* env, jobject, const SkRegion* region, SkPath* path) {
- return region->getBoundaryPath(path);
+static jboolean Region_getBoundaryPath(JNIEnv* env, jobject, jlong regionHandle, jlong pathHandle) {
+ const SkRegion* region = reinterpret_cast<SkRegion*>(regionHandle);
+ SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
+ bool result = region->getBoundaryPath(path);
+ return boolTojboolean(result);
}
-static jboolean Region_op0(JNIEnv* env, jobject, SkRegion* dst, int left, int top, int right, int bottom, int op) {
+static jboolean Region_op0(JNIEnv* env, jobject, jlong dstHandle, jint left, jint top, jint right, jint bottom, jint op) {
+ SkRegion* dst = reinterpret_cast<SkRegion*>(dstHandle);
SkIRect ir;
ir.set(left, top, right, bottom);
- return dst->op(ir, (SkRegion::Op)op);
+ bool result = dst->op(ir, (SkRegion::Op)op);
+ return boolTojboolean(result);
}
-static jboolean Region_op1(JNIEnv* env, jobject, SkRegion* dst, jobject rectObject, const SkRegion* region, int op) {
+static jboolean Region_op1(JNIEnv* env, jobject, jlong dstHandle, jobject rectObject, jlong regionHandle, jint op) {
+ SkRegion* dst = reinterpret_cast<SkRegion*>(dstHandle);
+ const SkRegion* region = reinterpret_cast<SkRegion*>(regionHandle);
SkIRect ir;
GraphicsJNI::jrect_to_irect(env, rectObject, &ir);
- return dst->op(ir, *region, (SkRegion::Op)op);
+ bool result = dst->op(ir, *region, (SkRegion::Op)op);
+ return boolTojboolean(result);
}
-static jboolean Region_op2(JNIEnv* env, jobject, SkRegion* dst, const SkRegion* region1, const SkRegion* region2, int op) {
- return dst->op(*region1, *region2, (SkRegion::Op)op);
+static jboolean Region_op2(JNIEnv* env, jobject, jlong dstHandle, jlong region1Handle, jlong region2Handle, jint op) {
+ SkRegion* dst = reinterpret_cast<SkRegion*>(dstHandle);
+ const SkRegion* region1 = reinterpret_cast<SkRegion*>(region1Handle);
+ const SkRegion* region2 = reinterpret_cast<SkRegion*>(region2Handle);
+ bool result = dst->op(*region1, *region2, (SkRegion::Op)op);
+ return boolTojboolean(result);
}
//////////////////////////////////// These are methods, not static
static jboolean Region_isEmpty(JNIEnv* env, jobject region) {
- return GetSkRegion(env, region)->isEmpty();
+ bool result = GetSkRegion(env, region)->isEmpty();
+ return boolTojboolean(result);
}
static jboolean Region_isRect(JNIEnv* env, jobject region) {
- return GetSkRegion(env, region)->isRect();
+ bool result = GetSkRegion(env, region)->isRect();
+ return boolTojboolean(result);
}
static jboolean Region_isComplex(JNIEnv* env, jobject region) {
- return GetSkRegion(env, region)->isComplex();
+ bool result = GetSkRegion(env, region)->isComplex();
+ return boolTojboolean(result);
}
-static jboolean Region_contains(JNIEnv* env, jobject region, int x, int y) {
- return GetSkRegion(env, region)->contains(x, y);
+static jboolean Region_contains(JNIEnv* env, jobject region, jint x, jint y) {
+ bool result = GetSkRegion(env, region)->contains(x, y);
+ return boolTojboolean(result);
}
-static jboolean Region_quickContains(JNIEnv* env, jobject region, int left, int top, int right, int bottom) {
- return GetSkRegion(env, region)->quickContains(left, top, right, bottom);
+static jboolean Region_quickContains(JNIEnv* env, jobject region, jint left, jint top, jint right, jint bottom) {
+ bool result = GetSkRegion(env, region)->quickContains(left, top, right, bottom);
+ return boolTojboolean(result);
}
-static jboolean Region_quickRejectIIII(JNIEnv* env, jobject region, int left, int top, int right, int bottom) {
+static jboolean Region_quickRejectIIII(JNIEnv* env, jobject region, jint left, jint top, jint right, jint bottom) {
SkIRect ir;
ir.set(left, top, right, bottom);
- return GetSkRegion(env, region)->quickReject(ir);
+ bool result = GetSkRegion(env, region)->quickReject(ir);
+ return boolTojboolean(result);
}
static jboolean Region_quickRejectRgn(JNIEnv* env, jobject region, jobject other) {
- return GetSkRegion(env, region)->quickReject(*GetSkRegion(env, other));
+ bool result = GetSkRegion(env, region)->quickReject(*GetSkRegion(env, other));
+ return boolTojboolean(result);
}
-static void Region_translate(JNIEnv* env, jobject region, int x, int y, jobject dst) {
+static void Region_translate(JNIEnv* env, jobject region, jint x, jint y, jobject dst) {
SkRegion* rgn = GetSkRegion(env, region);
if (dst)
rgn->translate(x, y, GetSkRegion(env, dst));
@@ -155,7 +191,8 @@ static void Region_scale(JNIEnv* env, jobject region, jfloat scale, jobject dst)
scale_rgn(rgn, *rgn, scale);
}
-static jstring Region_toString(JNIEnv* env, jobject clazz, SkRegion* region) {
+static jstring Region_toString(JNIEnv* env, jobject clazz, jlong regionHandle) {
+ SkRegion* region = reinterpret_cast<SkRegion*>(regionHandle);
char* str = region->toString();
if (str == NULL) {
return NULL;
@@ -167,7 +204,7 @@ static jstring Region_toString(JNIEnv* env, jobject clazz, SkRegion* region) {
////////////////////////////////////////////////////////////////////////////////////////////////////////////
-static SkRegion* Region_createFromParcel(JNIEnv* env, jobject clazz, jobject parcel)
+static jlong Region_createFromParcel(JNIEnv* env, jobject clazz, jobject parcel)
{
if (parcel == NULL) {
return NULL;
@@ -179,13 +216,14 @@ static SkRegion* Region_createFromParcel(JNIEnv* env, jobject clazz, jobject par
size_t size = p->readInt32();
region->readFromMemory(p->readInplace(size), size);
- return region;
+ return reinterpret_cast<jlong>(region);
}
-static jboolean Region_writeToParcel(JNIEnv* env, jobject clazz, const SkRegion* region, jobject parcel)
+static jboolean Region_writeToParcel(JNIEnv* env, jobject clazz, jlong regionHandle, jobject parcel)
{
+ const SkRegion* region = reinterpret_cast<SkRegion*>(regionHandle);
if (parcel == NULL) {
- return false;
+ return JNI_FALSE;
}
android::Parcel* p = android::parcelForJavaObject(env, parcel);
@@ -194,14 +232,16 @@ static jboolean Region_writeToParcel(JNIEnv* env, jobject clazz, const SkRegion*
p->writeInt32(size);
region->writeToMemory(p->writeInplace(size));
- return true;
+ return JNI_TRUE;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
-static jboolean Region_equals(JNIEnv* env, jobject clazz, const SkRegion *r1, const SkRegion* r2)
+static jboolean Region_equals(JNIEnv* env, jobject clazz, jlong r1Handle, jlong r2Handle)
{
- return (jboolean) (*r1 == *r2);
+ const SkRegion *r1 = reinterpret_cast<SkRegion*>(r1Handle);
+ const SkRegion *r2 = reinterpret_cast<SkRegion*>(r2Handle);
+ return boolTojboolean(*r1 == *r2);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -217,20 +257,23 @@ struct RgnIterPair {
}
};
-static RgnIterPair* RegionIter_constructor(JNIEnv* env, jobject, const SkRegion* region)
+static jlong RegionIter_constructor(JNIEnv* env, jobject, jlong regionHandle)
{
+ const SkRegion* region = reinterpret_cast<SkRegion*>(regionHandle);
SkASSERT(region);
- return new RgnIterPair(*region);
+ return reinterpret_cast<jlong>(new RgnIterPair(*region));
}
-static void RegionIter_destructor(JNIEnv* env, jobject, RgnIterPair* pair)
+static void RegionIter_destructor(JNIEnv* env, jobject, jlong pairHandle)
{
+ RgnIterPair* pair = reinterpret_cast<RgnIterPair*>(pairHandle);
SkASSERT(pair);
delete pair;
}
-static jboolean RegionIter_next(JNIEnv* env, jobject, RgnIterPair* pair, jobject rectObject)
+static jboolean RegionIter_next(JNIEnv* env, jobject, jlong pairHandle, jobject rectObject)
{
+ RgnIterPair* pair = reinterpret_cast<RgnIterPair*>(pairHandle);
// the caller has checked that rectObject is not nul
SkASSERT(pair);
SkASSERT(rectObject);
@@ -238,31 +281,31 @@ static jboolean RegionIter_next(JNIEnv* env, jobject, RgnIterPair* pair, jobject
if (!pair->fIter.done()) {
GraphicsJNI::irect_to_jrect(pair->fIter.rect(), env, rectObject);
pair->fIter.next();
- return true;
+ return JNI_TRUE;
}
- return false;
+ return JNI_FALSE;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
static JNINativeMethod gRegionIterMethods[] = {
- { "nativeConstructor", "(I)I", (void*)RegionIter_constructor },
- { "nativeDestructor", "(I)V", (void*)RegionIter_destructor },
- { "nativeNext", "(ILandroid/graphics/Rect;)Z", (void*)RegionIter_next }
+ { "nativeConstructor", "(J)J", (void*)RegionIter_constructor },
+ { "nativeDestructor", "(J)V", (void*)RegionIter_destructor },
+ { "nativeNext", "(JLandroid/graphics/Rect;)Z", (void*)RegionIter_next }
};
static JNINativeMethod gRegionMethods[] = {
// these are static methods
- { "nativeConstructor", "()I", (void*)Region_constructor },
- { "nativeDestructor", "(I)V", (void*)Region_destructor },
- { "nativeSetRegion", "(II)V", (void*)Region_setRegion },
- { "nativeSetRect", "(IIIII)Z", (void*)Region_setRect },
- { "nativeSetPath", "(III)Z", (void*)Region_setPath },
- { "nativeGetBounds", "(ILandroid/graphics/Rect;)Z", (void*)Region_getBounds },
- { "nativeGetBoundaryPath", "(II)Z", (void*)Region_getBoundaryPath },
- { "nativeOp", "(IIIIII)Z", (void*)Region_op0 },
- { "nativeOp", "(ILandroid/graphics/Rect;II)Z", (void*)Region_op1 },
- { "nativeOp", "(IIII)Z", (void*)Region_op2 },
+ { "nativeConstructor", "()J", (void*)Region_constructor },
+ { "nativeDestructor", "(J)V", (void*)Region_destructor },
+ { "nativeSetRegion", "(JJ)V", (void*)Region_setRegion },
+ { "nativeSetRect", "(JIIII)Z", (void*)Region_setRect },
+ { "nativeSetPath", "(JJJ)Z", (void*)Region_setPath },
+ { "nativeGetBounds", "(JLandroid/graphics/Rect;)Z", (void*)Region_getBounds },
+ { "nativeGetBoundaryPath", "(JJ)Z", (void*)Region_getBoundaryPath },
+ { "nativeOp", "(JIIIII)Z", (void*)Region_op0 },
+ { "nativeOp", "(JLandroid/graphics/Rect;JI)Z", (void*)Region_op1 },
+ { "nativeOp", "(JJJI)Z", (void*)Region_op2 },
// these are methods that take the java region object
{ "isEmpty", "()Z", (void*)Region_isEmpty },
{ "isRect", "()Z", (void*)Region_isRect },
@@ -273,11 +316,11 @@ static JNINativeMethod gRegionMethods[] = {
{ "quickReject", "(Landroid/graphics/Region;)Z", (void*)Region_quickRejectRgn },
{ "scale", "(FLandroid/graphics/Region;)V", (void*)Region_scale },
{ "translate", "(IILandroid/graphics/Region;)V", (void*)Region_translate },
- { "nativeToString", "(I)Ljava/lang/String;", (void*)Region_toString },
+ { "nativeToString", "(J)Ljava/lang/String;", (void*)Region_toString },
// parceling methods
- { "nativeCreateFromParcel", "(Landroid/os/Parcel;)I", (void*)Region_createFromParcel },
- { "nativeWriteToParcel", "(ILandroid/os/Parcel;)Z", (void*)Region_writeToParcel },
- { "nativeEquals", "(II)Z", (void*)Region_equals },
+ { "nativeCreateFromParcel", "(Landroid/os/Parcel;)J", (void*)Region_createFromParcel },
+ { "nativeWriteToParcel", "(JLandroid/os/Parcel;)Z", (void*)Region_writeToParcel },
+ { "nativeEquals", "(JJ)Z", (void*)Region_equals },
};
int register_android_graphics_Region(JNIEnv* env)
@@ -285,7 +328,7 @@ int register_android_graphics_Region(JNIEnv* env)
jclass clazz = env->FindClass("android/graphics/Region");
SkASSERT(clazz);
- gRegion_nativeInstanceFieldID = env->GetFieldID(clazz, "mNativeRegion", "I");
+ gRegion_nativeInstanceFieldID = env->GetFieldID(clazz, "mNativeRegion", "J");
SkASSERT(gRegion_nativeInstanceFieldID);
int result = android::AndroidRuntime::registerNativeMethods(env, "android/graphics/Region",
diff --git a/core/jni/android/graphics/Shader.cpp b/core/jni/android/graphics/Shader.cpp
index 6323ab348623..3047440e22e2 100644
--- a/core/jni/android/graphics/Shader.cpp
+++ b/core/jni/android/graphics/Shader.cpp
@@ -24,7 +24,7 @@ static void ThrowIAE_IfNull(JNIEnv* env, void* ptr) {
}
}
-static void Color_RGBToHSV(JNIEnv* env, jobject, int red, int green, int blue, jfloatArray hsvArray)
+static void Color_RGBToHSV(JNIEnv* env, jobject, jint red, jint green, jint blue, jfloatArray hsvArray)
{
SkScalar hsv[3];
SkRGBToHSV(red, green, blue, hsv);
@@ -36,7 +36,7 @@ static void Color_RGBToHSV(JNIEnv* env, jobject, int red, int green, int blue, j
}
}
-static int Color_HSVToColor(JNIEnv* env, jobject, int alpha, jfloatArray hsvArray)
+static jint Color_HSVToColor(JNIEnv* env, jobject, jint alpha, jfloatArray hsvArray)
{
AutoJavaFloatArray autoHSV(env, hsvArray, 3);
float* values = autoHSV.ptr();;
@@ -46,13 +46,15 @@ static int Color_HSVToColor(JNIEnv* env, jobject, int alpha, jfloatArray hsvArra
hsv[i] = SkFloatToScalar(values[i]);
}
- return SkHSVToColor(alpha, hsv);
+ return static_cast<jint>(SkHSVToColor(alpha, hsv));
}
///////////////////////////////////////////////////////////////////////////////////////////////
-static void Shader_destructor(JNIEnv* env, jobject o, SkShader* shader, SkiaShader* skiaShader)
+static void Shader_destructor(JNIEnv* env, jobject o, jlong shaderHandle, jlong skiaShaderHandle)
{
+ SkShader* shader = reinterpret_cast<SkShader*>(shaderHandle);
+ SkiaShader* skiaShader = reinterpret_cast<SkiaShader*>(skiaShaderHandle);
SkSafeUnref(shader);
// skiaShader == NULL when not !USE_OPENGL_RENDERER, so no need to delete it outside the ifdef
#ifdef USE_OPENGL_RENDERER
@@ -64,9 +66,12 @@ static void Shader_destructor(JNIEnv* env, jobject o, SkShader* shader, SkiaShad
#endif
}
-static void Shader_setLocalMatrix(JNIEnv* env, jobject o, SkShader* shader, SkiaShader* skiaShader,
- const SkMatrix* matrix)
+static void Shader_setLocalMatrix(JNIEnv* env, jobject o, jlong shaderHandle,
+ jlong skiaShaderHandle, jlong matrixHandle)
{
+ SkShader* shader = reinterpret_cast<SkShader*>(shaderHandle);
+ SkiaShader* skiaShader = reinterpret_cast<SkiaShader*>(skiaShaderHandle);
+ const SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
if (shader) {
if (NULL == matrix) {
shader->resetLocalMatrix();
@@ -82,24 +87,27 @@ static void Shader_setLocalMatrix(JNIEnv* env, jobject o, SkShader* shader, Skia
///////////////////////////////////////////////////////////////////////////////////////////////
-static SkShader* BitmapShader_constructor(JNIEnv* env, jobject o, const SkBitmap* bitmap,
- int tileModeX, int tileModeY)
+static jlong BitmapShader_constructor(JNIEnv* env, jobject o, jlong bitmapHandle,
+ jint tileModeX, jint tileModeY)
{
+ const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
SkShader* s = SkShader::CreateBitmapShader(*bitmap,
(SkShader::TileMode)tileModeX,
(SkShader::TileMode)tileModeY);
ThrowIAE_IfNull(env, s);
- return s;
+ return reinterpret_cast<jlong>(s);
}
-static SkiaShader* BitmapShader_postConstructor(JNIEnv* env, jobject o, SkShader* shader,
- SkBitmap* bitmap, int tileModeX, int tileModeY) {
+static jlong BitmapShader_postConstructor(JNIEnv* env, jobject o, jlong shaderHandle,
+ jlong bitmapHandle, jint tileModeX, jint tileModeY) {
+ SkShader* shader = reinterpret_cast<SkShader*>(shaderHandle);
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
#ifdef USE_OPENGL_RENDERER
SkiaShader* skiaShader = new SkiaBitmapShader(bitmap, shader,
static_cast<SkShader::TileMode>(tileModeX), static_cast<SkShader::TileMode>(tileModeY),
NULL, (shader->getFlags() & SkShader::kOpaqueAlpha_Flag) == 0);
- return skiaShader;
+ return reinterpret_cast<jlong>(skiaShader);
#else
return NULL;
#endif
@@ -107,9 +115,9 @@ static SkiaShader* BitmapShader_postConstructor(JNIEnv* env, jobject o, SkShader
///////////////////////////////////////////////////////////////////////////////////////////////
-static SkShader* LinearGradient_create1(JNIEnv* env, jobject o,
- float x0, float y0, float x1, float y1,
- jintArray colorArray, jfloatArray posArray, int tileMode)
+static jlong LinearGradient_create1(JNIEnv* env, jobject o,
+ jfloat x0, jfloat y0, jfloat x1, jfloat y1,
+ jintArray colorArray, jfloatArray posArray, jint tileMode)
{
SkPoint pts[2];
pts[0].set(SkFloatToScalar(x0), SkFloatToScalar(y0));
@@ -137,13 +145,14 @@ static SkShader* LinearGradient_create1(JNIEnv* env, jobject o,
env->ReleaseIntArrayElements(colorArray, const_cast<jint*>(colorValues), JNI_ABORT);
ThrowIAE_IfNull(env, shader);
- return shader;
+ return reinterpret_cast<jlong>(shader);
}
-static SkiaShader* LinearGradient_postCreate1(JNIEnv* env, jobject o, SkShader* shader,
- float x0, float y0, float x1, float y1, jintArray colorArray,
- jfloatArray posArray, int tileMode) {
+static jlong LinearGradient_postCreate1(JNIEnv* env, jobject o, jlong shaderHandle,
+ jfloat x0, jfloat y0, jfloat x1, jfloat y1, jintArray colorArray,
+ jfloatArray posArray, jint tileMode) {
#ifdef USE_OPENGL_RENDERER
+ SkShader* shader = reinterpret_cast<SkShader*>(shaderHandle);
size_t count = env->GetArrayLength(colorArray);
const jint* colorValues = env->GetIntArrayElements(colorArray, NULL);
@@ -206,15 +215,16 @@ static SkiaShader* LinearGradient_postCreate1(JNIEnv* env, jobject o, SkShader*
(shader->getFlags() & SkShader::kOpaqueAlpha_Flag) == 0);
env->ReleaseIntArrayElements(colorArray, const_cast<jint*>(colorValues), JNI_ABORT);
- return skiaShader;
+ return reinterpret_cast<jlong>(skiaShader);
#else
return NULL;
#endif
}
-static SkiaShader* LinearGradient_postCreate2(JNIEnv* env, jobject o, SkShader* shader,
- float x0, float y0, float x1, float y1, int color0, int color1, int tileMode) {
+static jlong LinearGradient_postCreate2(JNIEnv* env, jobject o, jlong shaderHandle,
+ jfloat x0, jfloat y0, jfloat x1, jfloat y1, jint color0, jint color1, jint tileMode) {
#ifdef USE_OPENGL_RENDERER
+ SkShader* shader = reinterpret_cast<SkShader*>(shaderHandle);
float* storedBounds = new float[4];
storedBounds[0] = x0; storedBounds[1] = y0;
storedBounds[2] = x1; storedBounds[3] = y1;
@@ -231,15 +241,15 @@ static SkiaShader* LinearGradient_postCreate2(JNIEnv* env, jobject o, SkShader*
storedPositions, 2, shader, static_cast<SkShader::TileMode>(tileMode), NULL,
(shader->getFlags() & SkShader::kOpaqueAlpha_Flag) == 0);
- return skiaShader;
+ return reinterpret_cast<jlong>(skiaShader);
#else
return NULL;
#endif
}
-static SkShader* LinearGradient_create2(JNIEnv* env, jobject o,
- float x0, float y0, float x1, float y1,
- int color0, int color1, int tileMode)
+static jlong LinearGradient_create2(JNIEnv* env, jobject o,
+ jfloat x0, jfloat y0, jfloat x1, jfloat y1,
+ jint color0, jint color1, jint tileMode)
{
SkPoint pts[2];
pts[0].set(SkFloatToScalar(x0), SkFloatToScalar(y0));
@@ -252,13 +262,13 @@ static SkShader* LinearGradient_create2(JNIEnv* env, jobject o,
SkShader* s = SkGradientShader::CreateLinear(pts, colors, NULL, 2, (SkShader::TileMode)tileMode);
ThrowIAE_IfNull(env, s);
- return s;
+ return reinterpret_cast<jlong>(s);
}
///////////////////////////////////////////////////////////////////////////////////////////////
-static SkShader* RadialGradient_create1(JNIEnv* env, jobject, float x, float y, float radius,
- jintArray colorArray, jfloatArray posArray, int tileMode) {
+static jlong RadialGradient_create1(JNIEnv* env, jobject, jfloat x, jfloat y, jfloat radius,
+ jintArray colorArray, jfloatArray posArray, jint tileMode) {
SkPoint center;
center.set(SkFloatToScalar(x), SkFloatToScalar(y));
@@ -285,11 +295,11 @@ static SkShader* RadialGradient_create1(JNIEnv* env, jobject, float x, float y,
JNI_ABORT);
ThrowIAE_IfNull(env, shader);
- return shader;
+ return reinterpret_cast<jlong>(shader);
}
-static SkShader* RadialGradient_create2(JNIEnv* env, jobject, float x, float y, float radius,
- int color0, int color1, int tileMode) {
+static jlong RadialGradient_create2(JNIEnv* env, jobject, jfloat x, jfloat y, jfloat radius,
+ jint color0, jint color1, jint tileMode) {
SkPoint center;
center.set(SkFloatToScalar(x), SkFloatToScalar(y));
@@ -300,12 +310,13 @@ static SkShader* RadialGradient_create2(JNIEnv* env, jobject, float x, float y,
SkShader* s = SkGradientShader::CreateRadial(center, SkFloatToScalar(radius), colors, NULL,
2, (SkShader::TileMode)tileMode);
ThrowIAE_IfNull(env, s);
- return s;
+ return reinterpret_cast<jlong>(s);
}
-static SkiaShader* RadialGradient_postCreate1(JNIEnv* env, jobject o, SkShader* shader,
- float x, float y, float radius, jintArray colorArray, jfloatArray posArray, int tileMode) {
+static jlong RadialGradient_postCreate1(JNIEnv* env, jobject o, jlong shaderHandle,
+ jfloat x, jfloat y, jfloat radius, jintArray colorArray, jfloatArray posArray, jint tileMode) {
#ifdef USE_OPENGL_RENDERER
+ SkShader* shader = reinterpret_cast<SkShader*>(shaderHandle);
size_t count = env->GetArrayLength(colorArray);
const jint* colorValues = env->GetIntArrayElements(colorArray, NULL);
@@ -335,15 +346,16 @@ static SkiaShader* RadialGradient_postCreate1(JNIEnv* env, jobject o, SkShader*
(shader->getFlags() & SkShader::kOpaqueAlpha_Flag) == 0);
env->ReleaseIntArrayElements(colorArray, const_cast<jint*>(colorValues), JNI_ABORT);
- return skiaShader;
+ return reinterpret_cast<jlong>(skiaShader);
#else
return NULL;
#endif
}
-static SkiaShader* RadialGradient_postCreate2(JNIEnv* env, jobject o, SkShader* shader,
- float x, float y, float radius, int color0, int color1, int tileMode) {
+static jlong RadialGradient_postCreate2(JNIEnv* env, jobject o, jlong shaderHandle,
+ jfloat x, jfloat y, jfloat radius, jint color0, jint color1, jint tileMode) {
#ifdef USE_OPENGL_RENDERER
+ SkShader* shader = reinterpret_cast<SkShader*>(shaderHandle);
float* storedPositions = new float[2];
storedPositions[0] = 0.0f;
storedPositions[1] = 1.0f;
@@ -356,7 +368,7 @@ static SkiaShader* RadialGradient_postCreate2(JNIEnv* env, jobject o, SkShader*
storedPositions, 2, shader, (SkShader::TileMode) tileMode, NULL,
(shader->getFlags() & SkShader::kOpaqueAlpha_Flag) == 0);
- return skiaShader;
+ return reinterpret_cast<jlong>(skiaShader);
#else
return NULL;
#endif
@@ -364,7 +376,7 @@ static SkiaShader* RadialGradient_postCreate2(JNIEnv* env, jobject o, SkShader*
///////////////////////////////////////////////////////////////////////////////
-static SkShader* SweepGradient_create1(JNIEnv* env, jobject, float x, float y,
+static jlong SweepGradient_create1(JNIEnv* env, jobject, jfloat x, jfloat y,
jintArray jcolors, jfloatArray jpositions) {
size_t count = env->GetArrayLength(jcolors);
const jint* colors = env->GetIntArrayElements(jcolors, NULL);
@@ -388,10 +400,10 @@ static SkShader* SweepGradient_create1(JNIEnv* env, jobject, float x, float y,
env->ReleaseIntArrayElements(jcolors, const_cast<jint*>(colors),
JNI_ABORT);
ThrowIAE_IfNull(env, shader);
- return shader;
+ return reinterpret_cast<jlong>(shader);
}
-static SkShader* SweepGradient_create2(JNIEnv* env, jobject, float x, float y,
+static jlong SweepGradient_create2(JNIEnv* env, jobject, jfloat x, jfloat y,
int color0, int color1) {
SkColor colors[2];
colors[0] = color0;
@@ -399,12 +411,13 @@ static SkShader* SweepGradient_create2(JNIEnv* env, jobject, float x, float y,
SkShader* s = SkGradientShader::CreateSweep(SkFloatToScalar(x), SkFloatToScalar(y),
colors, NULL, 2);
ThrowIAE_IfNull(env, s);
- return s;
+ return reinterpret_cast<jlong>(s);
}
-static SkiaShader* SweepGradient_postCreate1(JNIEnv* env, jobject o, SkShader* shader,
- float x, float y, jintArray colorArray, jfloatArray posArray) {
+static jlong SweepGradient_postCreate1(JNIEnv* env, jobject o, jlong shaderHandle,
+ jfloat x, jfloat y, jintArray colorArray, jfloatArray posArray) {
#ifdef USE_OPENGL_RENDERER
+ SkShader* shader = reinterpret_cast<SkShader*>(shaderHandle);
size_t count = env->GetArrayLength(colorArray);
const jint* colorValues = env->GetIntArrayElements(colorArray, NULL);
@@ -433,15 +446,16 @@ static SkiaShader* SweepGradient_postCreate1(JNIEnv* env, jobject o, SkShader* s
shader, NULL, (shader->getFlags() & SkShader::kOpaqueAlpha_Flag) == 0);
env->ReleaseIntArrayElements(colorArray, const_cast<jint*>(colorValues), JNI_ABORT);
- return skiaShader;
+ return reinterpret_cast<jlong>(skiaShader);
#else
return NULL;
#endif
}
-static SkiaShader* SweepGradient_postCreate2(JNIEnv* env, jobject o, SkShader* shader,
- float x, float y, int color0, int color1) {
+static jlong SweepGradient_postCreate2(JNIEnv* env, jobject o, jlong shaderHandle,
+ jfloat x, jfloat y, jint color0, jint color1) {
#ifdef USE_OPENGL_RENDERER
+ SkShader* shader = reinterpret_cast<SkShader*>(shaderHandle);
float* storedPositions = new float[2];
storedPositions[0] = 0.0f;
storedPositions[1] = 1.0f;
@@ -453,7 +467,7 @@ static SkiaShader* SweepGradient_postCreate2(JNIEnv* env, jobject o, SkShader* s
SkiaShader* skiaShader = new SkiaSweepGradientShader(x, y, storedColors, storedPositions, 2,
shader, NULL, (shader->getFlags() & SkShader::kOpaqueAlpha_Flag) == 0);
- return skiaShader;
+ return reinterpret_cast<jlong>(skiaShader);
#else
return NULL;
#endif
@@ -461,39 +475,57 @@ static SkiaShader* SweepGradient_postCreate2(JNIEnv* env, jobject o, SkShader* s
///////////////////////////////////////////////////////////////////////////////////////////////
-static SkShader* ComposeShader_create1(JNIEnv* env, jobject o,
- SkShader* shaderA, SkShader* shaderB, SkXfermode* mode)
+static jlong ComposeShader_create1(JNIEnv* env, jobject o,
+ jlong shaderAHandle, jlong shaderBHandle, jlong modeHandle)
{
- return new SkComposeShader(shaderA, shaderB, mode);
+ SkShader* shaderA = reinterpret_cast<SkShader *>(shaderAHandle);
+ SkShader* shaderB = reinterpret_cast<SkShader *>(shaderBHandle);
+ SkXfermode* mode = reinterpret_cast<SkXfermode *>(modeHandle);
+ SkShader* shader = new SkComposeShader(shaderA, shaderB, mode);
+ return reinterpret_cast<jlong>(shader);
}
-static SkShader* ComposeShader_create2(JNIEnv* env, jobject o,
- SkShader* shaderA, SkShader* shaderB, SkPorterDuff::Mode porterDuffMode)
+static jlong ComposeShader_create2(JNIEnv* env, jobject o,
+ jlong shaderAHandle, jlong shaderBHandle, jint porterDuffModeHandle)
{
+ SkShader* shaderA = reinterpret_cast<SkShader *>(shaderAHandle);
+ SkShader* shaderB = reinterpret_cast<SkShader *>(shaderBHandle);
+ SkPorterDuff::Mode porterDuffMode = static_cast<SkPorterDuff::Mode>(porterDuffModeHandle);
SkAutoUnref au(SkPorterDuff::CreateXfermode(porterDuffMode));
SkXfermode* mode = (SkXfermode*) au.get();
- return new SkComposeShader(shaderA, shaderB, mode);
+ SkShader* shader = new SkComposeShader(shaderA, shaderB, mode);
+ return reinterpret_cast<jlong>(shader);
}
-static SkiaShader* ComposeShader_postCreate2(JNIEnv* env, jobject o, SkShader* shader,
- SkiaShader* shaderA, SkiaShader* shaderB, SkPorterDuff::Mode porterDuffMode) {
+static jlong ComposeShader_postCreate2(JNIEnv* env, jobject o, jlong shaderHandle,
+ jlong shaderAHandle, jlong shaderBHandle, jint porterDuffModeHandle) {
#ifdef USE_OPENGL_RENDERER
+ SkShader* shader = reinterpret_cast<SkShader *>(shaderHandle);
+ SkiaShader* shaderA = reinterpret_cast<SkiaShader *>(shaderAHandle);
+ SkiaShader* shaderB = reinterpret_cast<SkiaShader *>(shaderBHandle);
+ SkPorterDuff::Mode porterDuffMode = static_cast<SkPorterDuff::Mode>(porterDuffModeHandle);
SkXfermode::Mode mode = SkPorterDuff::ToXfermodeMode(porterDuffMode);
- return new SkiaComposeShader(shaderA, shaderB, mode, shader);
+ SkiaShader* skiaShader = new SkiaComposeShader(shaderA, shaderB, mode, shader);
+ return reinterpret_cast<jlong>(skiaShader);
#else
return NULL;
#endif
}
-static SkiaShader* ComposeShader_postCreate1(JNIEnv* env, jobject o, SkShader* shader,
- SkiaShader* shaderA, SkiaShader* shaderB, SkXfermode* mode) {
+static jlong ComposeShader_postCreate1(JNIEnv* env, jobject o, jlong shaderHandle,
+ jlong shaderAHandle, jlong shaderBHandle, jlong modeHandle) {
#ifdef USE_OPENGL_RENDERER
+ SkShader* shader = reinterpret_cast<SkShader *>(shaderHandle);
+ SkiaShader* shaderA = reinterpret_cast<SkiaShader *>(shaderAHandle);
+ SkiaShader* shaderB = reinterpret_cast<SkiaShader *>(shaderBHandle);
+ SkXfermode* mode = reinterpret_cast<SkXfermode *>(modeHandle);
SkXfermode::Mode skiaMode;
if (!SkXfermode::IsMode(mode, &skiaMode)) {
// TODO: Support other modes
skiaMode = SkXfermode::kSrcOver_Mode;
}
- return new SkiaComposeShader(shaderA, shaderB, skiaMode, shader);
+ SkiaShader* skiaShader = new SkiaComposeShader(shaderA, shaderB, skiaMode, shader);
+ return reinterpret_cast<jlong>(skiaShader);
#else
return NULL;
#endif
@@ -507,41 +539,41 @@ static JNINativeMethod gColorMethods[] = {
};
static JNINativeMethod gShaderMethods[] = {
- { "nativeDestructor", "(II)V", (void*)Shader_destructor },
- { "nativeSetLocalMatrix", "(III)V", (void*)Shader_setLocalMatrix }
+ { "nativeDestructor", "(JJ)V", (void*)Shader_destructor },
+ { "nativeSetLocalMatrix", "(JJJ)V", (void*)Shader_setLocalMatrix }
};
static JNINativeMethod gBitmapShaderMethods[] = {
- { "nativeCreate", "(III)I", (void*)BitmapShader_constructor },
- { "nativePostCreate", "(IIII)I", (void*)BitmapShader_postConstructor }
+ { "nativeCreate", "(JII)J", (void*)BitmapShader_constructor },
+ { "nativePostCreate", "(JJII)J", (void*)BitmapShader_postConstructor }
};
static JNINativeMethod gLinearGradientMethods[] = {
- { "nativeCreate1", "(FFFF[I[FI)I", (void*)LinearGradient_create1 },
- { "nativeCreate2", "(FFFFIII)I", (void*)LinearGradient_create2 },
- { "nativePostCreate1", "(IFFFF[I[FI)I", (void*)LinearGradient_postCreate1 },
- { "nativePostCreate2", "(IFFFFIII)I", (void*)LinearGradient_postCreate2 }
+ { "nativeCreate1", "(FFFF[I[FI)J", (void*)LinearGradient_create1 },
+ { "nativeCreate2", "(FFFFIII)J", (void*)LinearGradient_create2 },
+ { "nativePostCreate1", "(JFFFF[I[FI)J", (void*)LinearGradient_postCreate1 },
+ { "nativePostCreate2", "(JFFFFIII)J", (void*)LinearGradient_postCreate2 }
};
static JNINativeMethod gRadialGradientMethods[] = {
- { "nativeCreate1", "(FFF[I[FI)I", (void*)RadialGradient_create1 },
- { "nativeCreate2", "(FFFIII)I", (void*)RadialGradient_create2 },
- { "nativePostCreate1", "(IFFF[I[FI)I", (void*)RadialGradient_postCreate1 },
- { "nativePostCreate2", "(IFFFIII)I", (void*)RadialGradient_postCreate2 }
+ { "nativeCreate1", "(FFF[I[FI)J", (void*)RadialGradient_create1 },
+ { "nativeCreate2", "(FFFIII)J", (void*)RadialGradient_create2 },
+ { "nativePostCreate1", "(JFFF[I[FI)J", (void*)RadialGradient_postCreate1 },
+ { "nativePostCreate2", "(JFFFIII)J", (void*)RadialGradient_postCreate2 }
};
static JNINativeMethod gSweepGradientMethods[] = {
- { "nativeCreate1", "(FF[I[F)I", (void*)SweepGradient_create1 },
- { "nativeCreate2", "(FFII)I", (void*)SweepGradient_create2 },
- { "nativePostCreate1", "(IFF[I[F)I", (void*)SweepGradient_postCreate1 },
- { "nativePostCreate2", "(IFFII)I", (void*)SweepGradient_postCreate2 }
+ { "nativeCreate1", "(FF[I[F)J", (void*)SweepGradient_create1 },
+ { "nativeCreate2", "(FFII)J", (void*)SweepGradient_create2 },
+ { "nativePostCreate1", "(JFF[I[F)J", (void*)SweepGradient_postCreate1 },
+ { "nativePostCreate2", "(JFFII)J", (void*)SweepGradient_postCreate2 }
};
static JNINativeMethod gComposeShaderMethods[] = {
- { "nativeCreate1", "(III)I", (void*)ComposeShader_create1 },
- { "nativeCreate2", "(III)I", (void*)ComposeShader_create2 },
- { "nativePostCreate1", "(IIII)I", (void*)ComposeShader_postCreate1 },
- { "nativePostCreate2", "(IIII)I", (void*)ComposeShader_postCreate2 }
+ { "nativeCreate1", "(JJJ)J", (void*)ComposeShader_create1 },
+ { "nativeCreate2", "(JJI)J", (void*)ComposeShader_create2 },
+ { "nativePostCreate1", "(JJJJ)J", (void*)ComposeShader_postCreate1 },
+ { "nativePostCreate2", "(JJJI)J", (void*)ComposeShader_postCreate2 }
};
#include <android_runtime/AndroidRuntime.h>
diff --git a/core/jni/android/graphics/SurfaceTexture.cpp b/core/jni/android/graphics/SurfaceTexture.cpp
index 0c9b3bcac270..311695584764 100644
--- a/core/jni/android/graphics/SurfaceTexture.cpp
+++ b/core/jni/android/graphics/SurfaceTexture.cpp
@@ -55,28 +55,28 @@ static void SurfaceTexture_setSurfaceTexture(JNIEnv* env, jobject thiz,
const sp<GLConsumer>& surfaceTexture)
{
GLConsumer* const p =
- (GLConsumer*)env->GetIntField(thiz, fields.surfaceTexture);
+ (GLConsumer*)env->GetLongField(thiz, fields.surfaceTexture);
if (surfaceTexture.get()) {
surfaceTexture->incStrong((void*)SurfaceTexture_setSurfaceTexture);
}
if (p) {
p->decStrong((void*)SurfaceTexture_setSurfaceTexture);
}
- env->SetIntField(thiz, fields.surfaceTexture, (int)surfaceTexture.get());
+ env->SetLongField(thiz, fields.surfaceTexture, (jlong)surfaceTexture.get());
}
static void SurfaceTexture_setBufferQueue(JNIEnv* env, jobject thiz,
const sp<BufferQueue>& bq)
{
BufferQueue* const p =
- (BufferQueue*)env->GetIntField(thiz, fields.bufferQueue);
+ (BufferQueue*)env->GetLongField(thiz, fields.bufferQueue);
if (bq.get()) {
bq->incStrong((void*)SurfaceTexture_setBufferQueue);
}
if (p) {
p->decStrong((void*)SurfaceTexture_setBufferQueue);
}
- env->SetIntField(thiz, fields.bufferQueue, (int)bq.get());
+ env->SetLongField(thiz, fields.bufferQueue, (jlong)bq.get());
}
static void SurfaceTexture_setFrameAvailableListener(JNIEnv* env,
@@ -84,22 +84,22 @@ static void SurfaceTexture_setFrameAvailableListener(JNIEnv* env,
{
GLConsumer::FrameAvailableListener* const p =
(GLConsumer::FrameAvailableListener*)
- env->GetIntField(thiz, fields.frameAvailableListener);
+ env->GetLongField(thiz, fields.frameAvailableListener);
if (listener.get()) {
listener->incStrong((void*)SurfaceTexture_setSurfaceTexture);
}
if (p) {
p->decStrong((void*)SurfaceTexture_setSurfaceTexture);
}
- env->SetIntField(thiz, fields.frameAvailableListener, (int)listener.get());
+ env->SetLongField(thiz, fields.frameAvailableListener, (jlong)listener.get());
}
sp<GLConsumer> SurfaceTexture_getSurfaceTexture(JNIEnv* env, jobject thiz) {
- return (GLConsumer*)env->GetIntField(thiz, fields.surfaceTexture);
+ return (GLConsumer*)env->GetLongField(thiz, fields.surfaceTexture);
}
sp<IGraphicBufferProducer> SurfaceTexture_getProducer(JNIEnv* env, jobject thiz) {
- return (BufferQueue*)env->GetIntField(thiz, fields.bufferQueue);
+ return (BufferQueue*)env->GetLongField(thiz, fields.bufferQueue);
}
sp<ANativeWindow> android_SurfaceTexture_getNativeWindow(JNIEnv* env, jobject thiz) {
@@ -201,19 +201,19 @@ void JNISurfaceTextureContext::onFrameAvailable()
static void SurfaceTexture_classInit(JNIEnv* env, jclass clazz)
{
fields.surfaceTexture = env->GetFieldID(clazz,
- ANDROID_GRAPHICS_SURFACETEXTURE_JNI_ID, "I");
+ ANDROID_GRAPHICS_SURFACETEXTURE_JNI_ID, "J");
if (fields.surfaceTexture == NULL) {
ALOGE("can't find android/graphics/SurfaceTexture.%s",
ANDROID_GRAPHICS_SURFACETEXTURE_JNI_ID);
}
fields.bufferQueue = env->GetFieldID(clazz,
- ANDROID_GRAPHICS_BUFFERQUEUE_JNI_ID, "I");
+ ANDROID_GRAPHICS_BUFFERQUEUE_JNI_ID, "J");
if (fields.bufferQueue == NULL) {
ALOGE("can't find android/graphics/SurfaceTexture.%s",
ANDROID_GRAPHICS_BUFFERQUEUE_JNI_ID);
}
fields.frameAvailableListener = env->GetFieldID(clazz,
- ANDROID_GRAPHICS_FRAMEAVAILABLELISTENER_JNI_ID, "I");
+ ANDROID_GRAPHICS_FRAMEAVAILABLELISTENER_JNI_ID, "J");
if (fields.frameAvailableListener == NULL) {
ALOGE("can't find android/graphics/SurfaceTexture.%s",
ANDROID_GRAPHICS_FRAMEAVAILABLELISTENER_JNI_ID);
diff --git a/core/jni/android/graphics/Typeface.cpp b/core/jni/android/graphics/Typeface.cpp
index d10a960049f1..81646250f4eb 100644
--- a/core/jni/android/graphics/Typeface.cpp
+++ b/core/jni/android/graphics/Typeface.cpp
@@ -28,8 +28,9 @@ private:
const char* fCStr;
};
-static SkTypeface* Typeface_create(JNIEnv* env, jobject, jstring name,
- SkTypeface::Style style) {
+static jlong Typeface_create(JNIEnv* env, jobject, jstring name,
+ jint styleHandle) {
+ SkTypeface::Style style = static_cast<SkTypeface::Style>(styleHandle);
SkTypeface* face = NULL;
if (NULL != name) {
@@ -48,10 +49,11 @@ static SkTypeface* Typeface_create(JNIEnv* env, jobject, jstring name,
if (NULL == face) {
face = SkTypeface::CreateFromName(NULL, style);
}
- return face;
+ return reinterpret_cast<jlong>(face);
}
-static SkTypeface* Typeface_createFromTypeface(JNIEnv* env, jobject, SkTypeface* family, int style) {
+static jlong Typeface_createFromTypeface(JNIEnv* env, jobject, jlong familyHandle, jint style) {
+ SkTypeface* family = reinterpret_cast<SkTypeface*>(familyHandle);
SkTypeface* face = SkTypeface::CreateFromTypeface(family, (SkTypeface::Style)style);
// Try to find the closest matching font, using the standard heuristic
if (NULL == face) {
@@ -63,20 +65,22 @@ static SkTypeface* Typeface_createFromTypeface(JNIEnv* env, jobject, SkTypeface*
if (NULL == face) {
face = SkTypeface::CreateFromName(NULL, (SkTypeface::Style)style);
}
- return face;
+ return reinterpret_cast<jlong>(face);
}
-static void Typeface_unref(JNIEnv* env, jobject obj, SkTypeface* face) {
+static void Typeface_unref(JNIEnv* env, jobject obj, jlong faceHandle) {
+ SkTypeface* face = reinterpret_cast<SkTypeface*>(faceHandle);
SkSafeUnref(face);
}
-static int Typeface_getStyle(JNIEnv* env, jobject obj, SkTypeface* face) {
- return face->style();
+static jint Typeface_getStyle(JNIEnv* env, jobject obj, jlong faceHandle) {
+ SkTypeface* face = reinterpret_cast<SkTypeface*>(faceHandle);
+ return static_cast<jint>(face->style());
}
-static SkTypeface* Typeface_createFromAsset(JNIEnv* env, jobject,
- jobject jassetMgr,
- jstring jpath) {
+static jlong Typeface_createFromAsset(JNIEnv* env, jobject,
+ jobject jassetMgr,
+ jstring jpath) {
NPE_CHECK_RETURN_ZERO(env, jassetMgr);
NPE_CHECK_RETURN_ZERO(env, jpath);
@@ -100,27 +104,27 @@ static SkTypeface* Typeface_createFromAsset(JNIEnv* env, jobject,
// need to unref it here or it won't be freed later on
stream->unref();
- return face;
+ return reinterpret_cast<jlong>(face);
}
-static SkTypeface* Typeface_createFromFile(JNIEnv* env, jobject, jstring jpath) {
+static jlong Typeface_createFromFile(JNIEnv* env, jobject, jstring jpath) {
NPE_CHECK_RETURN_ZERO(env, jpath);
AutoJavaStringToUTF8 str(env, jpath);
- return SkTypeface::CreateFromFile(str.c_str());
+ return reinterpret_cast<jlong>(SkTypeface::CreateFromFile(str.c_str()));
}
///////////////////////////////////////////////////////////////////////////////
static JNINativeMethod gTypefaceMethods[] = {
- { "nativeCreate", "(Ljava/lang/String;I)I", (void*)Typeface_create },
- { "nativeCreateFromTypeface", "(II)I", (void*)Typeface_createFromTypeface },
- { "nativeUnref", "(I)V", (void*)Typeface_unref },
- { "nativeGetStyle", "(I)I", (void*)Typeface_getStyle },
- { "nativeCreateFromAsset", "(Landroid/content/res/AssetManager;Ljava/lang/String;)I",
+ { "nativeCreate", "(Ljava/lang/String;I)J", (void*)Typeface_create },
+ { "nativeCreateFromTypeface", "(JI)J", (void*)Typeface_createFromTypeface },
+ { "nativeUnref", "(J)V", (void*)Typeface_unref },
+ { "nativeGetStyle", "(J)I", (void*)Typeface_getStyle },
+ { "nativeCreateFromAsset", "(Landroid/content/res/AssetManager;Ljava/lang/String;)J",
(void*)Typeface_createFromAsset },
- { "nativeCreateFromFile", "(Ljava/lang/String;)I",
+ { "nativeCreateFromFile", "(Ljava/lang/String;)J",
(void*)Typeface_createFromFile },
};
diff --git a/core/jni/android/graphics/Xfermode.cpp b/core/jni/android/graphics/Xfermode.cpp
index 976a91fe9b0c..eedceb7e8360 100644
--- a/core/jni/android/graphics/Xfermode.cpp
+++ b/core/jni/android/graphics/Xfermode.cpp
@@ -26,35 +26,37 @@ namespace android {
class SkXfermodeGlue {
public:
- static void finalizer(JNIEnv* env, jobject, SkXfermode* obj)
+ static void finalizer(JNIEnv* env, jobject, jlong objHandle)
{
+ SkXfermode* obj = reinterpret_cast<SkXfermode *>(objHandle);
SkSafeUnref(obj);
}
- static SkXfermode* avoid_create(JNIEnv* env, jobject, SkColor opColor,
- U8CPU tolerance, SkAvoidXfermode::Mode mode)
+ static jlong avoid_create(JNIEnv* env, jobject, jint opColor,
+ jint tolerance, jint modeHandle)
{
- return new SkAvoidXfermode(opColor, tolerance, mode);
+ SkAvoidXfermode::Mode mode = static_cast<SkAvoidXfermode::Mode>(modeHandle);
+ return reinterpret_cast<jlong>(new SkAvoidXfermode(opColor, tolerance, mode));
}
-
- static SkXfermode* pixelxor_create(JNIEnv* env, jobject, SkColor opColor)
+
+ static jlong pixelxor_create(JNIEnv* env, jobject, jint opColor)
{
- return new SkPixelXorXfermode(opColor);
+ return reinterpret_cast<jlong>(new SkPixelXorXfermode(opColor));
}
};
///////////////////////////////////////////////////////////////////////////////
static JNINativeMethod gXfermodeMethods[] = {
- {"finalizer", "(I)V", (void*) SkXfermodeGlue::finalizer}
+ {"finalizer", "(J)V", (void*) SkXfermodeGlue::finalizer}
};
static JNINativeMethod gAvoidMethods[] = {
- {"nativeCreate", "(III)I", (void*) SkXfermodeGlue::avoid_create}
+ {"nativeCreate", "(III)J", (void*) SkXfermodeGlue::avoid_create}
};
static JNINativeMethod gPixelXorMethods[] = {
- {"nativeCreate", "(I)I", (void*) SkXfermodeGlue::pixelxor_create}
+ {"nativeCreate", "(I)J", (void*) SkXfermodeGlue::pixelxor_create}
};
#include <android_runtime/AndroidRuntime.h>
diff --git a/core/jni/android/graphics/YuvToJpegEncoder.cpp b/core/jni/android/graphics/YuvToJpegEncoder.cpp
index f3869058230b..799782d53ce2 100644
--- a/core/jni/android/graphics/YuvToJpegEncoder.cpp
+++ b/core/jni/android/graphics/YuvToJpegEncoder.cpp
@@ -217,8 +217,8 @@ void Yuv422IToJpegEncoder::configSamplingFactors(jpeg_compress_struct* cinfo) {
///////////////////////////////////////////////////////////////////////////////
static jboolean YuvImage_compressToJpeg(JNIEnv* env, jobject, jbyteArray inYuv,
- int format, int width, int height, jintArray offsets,
- jintArray strides, int jpegQuality, jobject jstream,
+ jint format, jint width, jint height, jintArray offsets,
+ jintArray strides, jint jpegQuality, jobject jstream,
jbyteArray jstorage) {
jbyte* yuv = env->GetByteArrayElements(inYuv, NULL);
SkWStream* strm = CreateJavaOutputStreamAdaptor(env, jstream, jstorage);
@@ -227,7 +227,7 @@ static jboolean YuvImage_compressToJpeg(JNIEnv* env, jobject, jbyteArray inYuv,
jint* imgStrides = env->GetIntArrayElements(strides, NULL);
YuvToJpegEncoder* encoder = YuvToJpegEncoder::create(format, imgStrides);
if (encoder == NULL) {
- return false;
+ return JNI_FALSE;
}
encoder->encode(strm, yuv, width, height, imgOffsets, jpegQuality);
@@ -235,7 +235,7 @@ static jboolean YuvImage_compressToJpeg(JNIEnv* env, jobject, jbyteArray inYuv,
env->ReleaseByteArrayElements(inYuv, yuv, 0);
env->ReleaseIntArrayElements(offsets, imgOffsets, 0);
env->ReleaseIntArrayElements(strides, imgStrides, 0);
- return true;
+ return JNI_TRUE;
}
///////////////////////////////////////////////////////////////////////////////
diff --git a/core/jni/android/opengl/util.cpp b/core/jni/android/opengl/util.cpp
index 4bb091d1ab6e..a17f328439e0 100644
--- a/core/jni/android/opengl/util.cpp
+++ b/core/jni/android/opengl/util.cpp
@@ -389,7 +389,7 @@ static void computeFrustum(const float* m, float* f) {
}
static
-int util_frustumCullSpheres(JNIEnv *env, jclass clazz,
+jint util_frustumCullSpheres(JNIEnv *env, jclass clazz,
jfloatArray mvp_ref, jint mvpOffset,
jfloatArray spheres_ref, jint spheresOffset, jint spheresCount,
jintArray results_ref, jint resultsOffset, jint resultsCapacity) {
@@ -436,7 +436,7 @@ int util_frustumCullSpheres(JNIEnv *env, jclass clazz,
*/
static
-int util_visibilityTest(JNIEnv *env, jclass clazz,
+jint util_visibilityTest(JNIEnv *env, jclass clazz,
jfloatArray ws_ref, jint wsOffset,
jfloatArray positions_ref, jint positionsOffset,
jcharArray indices_ref, jint indicesOffset, jint indexCount) {
@@ -553,7 +553,7 @@ static jfieldID nativeBitmapID = 0;
void nativeUtilsClassInit(JNIEnv *env, jclass clazz)
{
jclass bitmapClass = env->FindClass("android/graphics/Bitmap");
- nativeBitmapID = env->GetFieldID(bitmapClass, "mNativeBitmap", "I");
+ nativeBitmapID = env->GetFieldID(bitmapClass, "mNativeBitmap", "J");
}
extern void setGLDebugLevel(int level);
@@ -630,7 +630,7 @@ static jint util_getInternalFormat(JNIEnv *env, jclass clazz,
jobject jbitmap)
{
SkBitmap const * nativeBitmap =
- (SkBitmap const *)env->GetIntField(jbitmap, nativeBitmapID);
+ (SkBitmap const *)env->GetLongField(jbitmap, nativeBitmapID);
const SkBitmap& bitmap(*nativeBitmap);
SkBitmap::Config config = bitmap.config();
return getInternalFormat(config);
@@ -640,7 +640,7 @@ static jint util_getType(JNIEnv *env, jclass clazz,
jobject jbitmap)
{
SkBitmap const * nativeBitmap =
- (SkBitmap const *)env->GetIntField(jbitmap, nativeBitmapID);
+ (SkBitmap const *)env->GetLongField(jbitmap, nativeBitmapID);
const SkBitmap& bitmap(*nativeBitmap);
SkBitmap::Config config = bitmap.config();
return getType(config);
@@ -651,7 +651,7 @@ static jint util_texImage2D(JNIEnv *env, jclass clazz,
jobject jbitmap, jint type, jint border)
{
SkBitmap const * nativeBitmap =
- (SkBitmap const *)env->GetIntField(jbitmap, nativeBitmapID);
+ (SkBitmap const *)env->GetLongField(jbitmap, nativeBitmapID);
const SkBitmap& bitmap(*nativeBitmap);
SkBitmap::Config config = bitmap.config();
if (internalformat < 0) {
@@ -700,7 +700,7 @@ static jint util_texSubImage2D(JNIEnv *env, jclass clazz,
jobject jbitmap, jint format, jint type)
{
SkBitmap const * nativeBitmap =
- (SkBitmap const *)env->GetIntField(jbitmap, nativeBitmapID);
+ (SkBitmap const *)env->GetLongField(jbitmap, nativeBitmapID);
const SkBitmap& bitmap(*nativeBitmap);
SkBitmap::Config config = bitmap.config();
if (format < 0) {
@@ -773,7 +773,7 @@ getPointer(JNIEnv *_env, jobject buffer, jint *remaining)
pointer = _env->CallStaticLongMethod(nioAccessClass,
getBasePointerID, buffer);
if (pointer != 0L) {
- return (void *) (jint) pointer;
+ return reinterpret_cast<void *>(pointer);
}
return NULL;
}
@@ -974,7 +974,7 @@ static jboolean etc1_isValid(JNIEnv *env, jclass clazz,
result = etc1_pkm_is_valid((etc1_byte*) headerB.getData());
}
}
- return result;
+ return result ? JNI_TRUE : JNI_FALSE;
}
/**
@@ -997,7 +997,7 @@ static jint etc1_getWidth(JNIEnv *env, jclass clazz,
/**
* Read the image height from a PKM header
*/
-static int etc1_getHeight(JNIEnv *env, jclass clazz,
+static jint etc1_getHeight(JNIEnv *env, jclass clazz,
jobject header) {
jint result = 0;
BufferHelper headerB(env, header);
diff --git a/core/jni/android_app_NativeActivity.cpp b/core/jni/android_app_NativeActivity.cpp
index 54180065796f..9c44093904fb 100644
--- a/core/jni/android_app_NativeActivity.cpp
+++ b/core/jni/android_app_NativeActivity.cpp
@@ -241,10 +241,10 @@ static int mainWorkCallback(int fd, int events, void* data) {
// ------------------------------------------------------------------------
-static jint
+static jlong
loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName,
jobject messageQueue, jstring internalDataDir, jstring obbDir,
- jstring externalDataDir, int sdkVersion,
+ jstring externalDataDir, jint sdkVersion,
jobject jAssetMgr, jbyteArray savedState)
{
LOG_TRACE("loadNativeCode_native");
@@ -338,11 +338,11 @@ loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName
}
}
- return (jint)code;
+ return (jlong)code;
}
static void
-unloadNativeCode_native(JNIEnv* env, jobject clazz, jint handle)
+unloadNativeCode_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("unloadNativeCode_native");
if (handle != 0) {
@@ -352,7 +352,7 @@ unloadNativeCode_native(JNIEnv* env, jobject clazz, jint handle)
}
static void
-onStart_native(JNIEnv* env, jobject clazz, jint handle)
+onStart_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("onStart_native");
if (handle != 0) {
@@ -364,7 +364,7 @@ onStart_native(JNIEnv* env, jobject clazz, jint handle)
}
static void
-onResume_native(JNIEnv* env, jobject clazz, jint handle)
+onResume_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("onResume_native");
if (handle != 0) {
@@ -376,7 +376,7 @@ onResume_native(JNIEnv* env, jobject clazz, jint handle)
}
static jbyteArray
-onSaveInstanceState_native(JNIEnv* env, jobject clazz, jint handle)
+onSaveInstanceState_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("onSaveInstanceState_native");
@@ -403,7 +403,7 @@ onSaveInstanceState_native(JNIEnv* env, jobject clazz, jint handle)
}
static void
-onPause_native(JNIEnv* env, jobject clazz, jint handle)
+onPause_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("onPause_native");
if (handle != 0) {
@@ -415,7 +415,7 @@ onPause_native(JNIEnv* env, jobject clazz, jint handle)
}
static void
-onStop_native(JNIEnv* env, jobject clazz, jint handle)
+onStop_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("onStop_native");
if (handle != 0) {
@@ -427,7 +427,7 @@ onStop_native(JNIEnv* env, jobject clazz, jint handle)
}
static void
-onConfigurationChanged_native(JNIEnv* env, jobject clazz, jint handle)
+onConfigurationChanged_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("onConfigurationChanged_native");
if (handle != 0) {
@@ -439,7 +439,7 @@ onConfigurationChanged_native(JNIEnv* env, jobject clazz, jint handle)
}
static void
-onLowMemory_native(JNIEnv* env, jobject clazz, jint handle)
+onLowMemory_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("onLowMemory_native");
if (handle != 0) {
@@ -451,7 +451,7 @@ onLowMemory_native(JNIEnv* env, jobject clazz, jint handle)
}
static void
-onWindowFocusChanged_native(JNIEnv* env, jobject clazz, jint handle, jboolean focused)
+onWindowFocusChanged_native(JNIEnv* env, jobject clazz, jlong handle, jboolean focused)
{
LOG_TRACE("onWindowFocusChanged_native");
if (handle != 0) {
@@ -463,7 +463,7 @@ onWindowFocusChanged_native(JNIEnv* env, jobject clazz, jint handle, jboolean fo
}
static void
-onSurfaceCreated_native(JNIEnv* env, jobject clazz, jint handle, jobject surface)
+onSurfaceCreated_native(JNIEnv* env, jobject clazz, jlong handle, jobject surface)
{
LOG_TRACE("onSurfaceCreated_native");
if (handle != 0) {
@@ -483,7 +483,7 @@ static int32_t getWindowProp(ANativeWindow* window, int what) {
}
static void
-onSurfaceChanged_native(JNIEnv* env, jobject clazz, jint handle, jobject surface,
+onSurfaceChanged_native(JNIEnv* env, jobject clazz, jlong handle, jobject surface,
jint format, jint width, jint height)
{
LOG_TRACE("onSurfaceChanged_native");
@@ -524,7 +524,7 @@ onSurfaceChanged_native(JNIEnv* env, jobject clazz, jint handle, jobject surface
}
static void
-onSurfaceRedrawNeeded_native(JNIEnv* env, jobject clazz, jint handle)
+onSurfaceRedrawNeeded_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("onSurfaceRedrawNeeded_native");
if (handle != 0) {
@@ -536,7 +536,7 @@ onSurfaceRedrawNeeded_native(JNIEnv* env, jobject clazz, jint handle)
}
static void
-onSurfaceDestroyed_native(JNIEnv* env, jobject clazz, jint handle, jobject surface)
+onSurfaceDestroyed_native(JNIEnv* env, jobject clazz, jlong handle, jobject surface)
{
LOG_TRACE("onSurfaceDestroyed_native");
if (handle != 0) {
@@ -550,7 +550,7 @@ onSurfaceDestroyed_native(JNIEnv* env, jobject clazz, jint handle, jobject surfa
}
static void
-onInputQueueCreated_native(JNIEnv* env, jobject clazz, jint handle, jint queuePtr)
+onInputQueueCreated_native(JNIEnv* env, jobject clazz, jlong handle, jlong queuePtr)
{
LOG_TRACE("onInputChannelCreated_native");
if (handle != 0) {
@@ -563,7 +563,7 @@ onInputQueueCreated_native(JNIEnv* env, jobject clazz, jint handle, jint queuePt
}
static void
-onInputQueueDestroyed_native(JNIEnv* env, jobject clazz, jint handle, jint queuePtr)
+onInputQueueDestroyed_native(JNIEnv* env, jobject clazz, jlong handle, jlong queuePtr)
{
LOG_TRACE("onInputChannelDestroyed_native");
if (handle != 0) {
@@ -576,7 +576,7 @@ onInputQueueDestroyed_native(JNIEnv* env, jobject clazz, jint handle, jint queue
}
static void
-onContentRectChanged_native(JNIEnv* env, jobject clazz, jint handle,
+onContentRectChanged_native(JNIEnv* env, jobject clazz, jlong handle,
jint x, jint y, jint w, jint h)
{
LOG_TRACE("onContentRectChanged_native");
@@ -594,26 +594,26 @@ onContentRectChanged_native(JNIEnv* env, jobject clazz, jint handle,
}
static const JNINativeMethod g_methods[] = {
- { "loadNativeCode", "(Ljava/lang/String;Ljava/lang/String;Landroid/os/MessageQueue;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/content/res/AssetManager;[B)I",
+ { "loadNativeCode", "(Ljava/lang/String;Ljava/lang/String;Landroid/os/MessageQueue;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/content/res/AssetManager;[B)J",
(void*)loadNativeCode_native },
- { "unloadNativeCode", "(I)V", (void*)unloadNativeCode_native },
- { "onStartNative", "(I)V", (void*)onStart_native },
- { "onResumeNative", "(I)V", (void*)onResume_native },
- { "onSaveInstanceStateNative", "(I)[B", (void*)onSaveInstanceState_native },
- { "onPauseNative", "(I)V", (void*)onPause_native },
- { "onStopNative", "(I)V", (void*)onStop_native },
- { "onConfigurationChangedNative", "(I)V", (void*)onConfigurationChanged_native },
- { "onLowMemoryNative", "(I)V", (void*)onLowMemory_native },
- { "onWindowFocusChangedNative", "(IZ)V", (void*)onWindowFocusChanged_native },
- { "onSurfaceCreatedNative", "(ILandroid/view/Surface;)V", (void*)onSurfaceCreated_native },
- { "onSurfaceChangedNative", "(ILandroid/view/Surface;III)V", (void*)onSurfaceChanged_native },
- { "onSurfaceRedrawNeededNative", "(ILandroid/view/Surface;)V", (void*)onSurfaceRedrawNeeded_native },
- { "onSurfaceDestroyedNative", "(I)V", (void*)onSurfaceDestroyed_native },
- { "onInputQueueCreatedNative", "(II)V",
+ { "unloadNativeCode", "(J)V", (void*)unloadNativeCode_native },
+ { "onStartNative", "(J)V", (void*)onStart_native },
+ { "onResumeNative", "(J)V", (void*)onResume_native },
+ { "onSaveInstanceStateNative", "(J)[B", (void*)onSaveInstanceState_native },
+ { "onPauseNative", "(J)V", (void*)onPause_native },
+ { "onStopNative", "(J)V", (void*)onStop_native },
+ { "onConfigurationChangedNative", "(J)V", (void*)onConfigurationChanged_native },
+ { "onLowMemoryNative", "(J)V", (void*)onLowMemory_native },
+ { "onWindowFocusChangedNative", "(JZ)V", (void*)onWindowFocusChanged_native },
+ { "onSurfaceCreatedNative", "(JLandroid/view/Surface;)V", (void*)onSurfaceCreated_native },
+ { "onSurfaceChangedNative", "(JLandroid/view/Surface;III)V", (void*)onSurfaceChanged_native },
+ { "onSurfaceRedrawNeededNative", "(JLandroid/view/Surface;)V", (void*)onSurfaceRedrawNeeded_native },
+ { "onSurfaceDestroyedNative", "(J)V", (void*)onSurfaceDestroyed_native },
+ { "onInputQueueCreatedNative", "(JJ)V",
(void*)onInputQueueCreated_native },
- { "onInputQueueDestroyedNative", "(II)V",
+ { "onInputQueueDestroyedNative", "(JJ)V",
(void*)onInputQueueDestroyed_native },
- { "onContentRectChangedNative", "(IIIII)V", (void*)onContentRectChanged_native },
+ { "onContentRectChangedNative", "(JIIII)V", (void*)onContentRectChanged_native },
};
static const char* const kNativeActivityPathName = "android/app/NativeActivity";
diff --git a/core/jni/android_app_backup_FullBackup.cpp b/core/jni/android_app_backup_FullBackup.cpp
index 2ca645a6ee03..3cfaa82a55e4 100644
--- a/core/jni/android_app_backup_FullBackup.cpp
+++ b/core/jni/android_app_backup_FullBackup.cpp
@@ -70,7 +70,7 @@ static struct {
* path: absolute path to the file to be saved
* dataOutput: the BackupDataOutput object that we're saving into
*/
-static int backupToTar(JNIEnv* env, jobject clazz, jstring packageNameObj,
+static jint backupToTar(JNIEnv* env, jobject clazz, jstring packageNameObj,
jstring domainObj, jstring linkdomain,
jstring rootpathObj, jstring pathObj, jobject dataOutputObj) {
int ret;
@@ -92,22 +92,22 @@ static int backupToTar(JNIEnv* env, jobject clazz, jstring packageNameObj,
if (packagenamechars) env->ReleaseStringUTFChars(packageNameObj, packagenamechars);
// Extract the data output fd
- BackupDataWriter* writer = (BackupDataWriter*) env->GetIntField(dataOutputObj,
+ BackupDataWriter* writer = (BackupDataWriter*) env->GetLongField(dataOutputObj,
sBackupDataOutput.mBackupWriter);
// Validate
if (!writer) {
ALOGE("No output stream provided [%s]", path.string());
- return -1;
+ return (jint) -1;
}
if (path.length() < rootpath.length()) {
ALOGE("file path [%s] shorter than root path [%s]",
path.string(), rootpath.string());
- return -1;
+ return (jint) -1;
}
- return write_tarfile(packageName, domain, rootpath, path, writer);
+ return (jint) write_tarfile(packageName, domain, rootpath, path, writer);
}
static const JNINativeMethod g_methods[] = {
@@ -121,7 +121,7 @@ int register_android_app_backup_FullBackup(JNIEnv* env)
jclass clazz = env->FindClass("android/app/backup/BackupDataOutput");
LOG_FATAL_IF(clazz == NULL, "Unable to find class android.app.backup.BackupDataOutput");
- sBackupDataOutput.mBackupWriter = env->GetFieldID(clazz, "mBackupWriter", "I");
+ sBackupDataOutput.mBackupWriter = env->GetFieldID(clazz, "mBackupWriter", "J");
LOG_FATAL_IF(sBackupDataOutput.mBackupwriter == NULL,
"Unable to find mBackupWriter field in android.app.backup.BackupDataOutput");
diff --git a/core/jni/android_backup_BackupDataInput.cpp b/core/jni/android_backup_BackupDataInput.cpp
index 25b0007fa15f..90763b0c4561 100644
--- a/core/jni/android_backup_BackupDataInput.cpp
+++ b/core/jni/android_backup_BackupDataInput.cpp
@@ -29,25 +29,25 @@ namespace android
static jfieldID s_keyField = 0;
static jfieldID s_dataSizeField = 0;
-static int
+static jlong
ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor)
{
int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
if (fd == -1) {
- return NULL;
+ return (jlong)NULL;
}
- return (int)new BackupDataReader(fd);
+ return (jlong)new BackupDataReader(fd);
}
static void
-dtor_native(JNIEnv* env, jobject clazz, int r)
+dtor_native(JNIEnv* env, jobject clazz, jlong r)
{
delete (BackupDataReader*)r;
}
static jint
-readNextHeader_native(JNIEnv* env, jobject clazz, int r, jobject entity)
+readNextHeader_native(JNIEnv* env, jobject clazz, jlong r, jobject entity)
{
int err;
bool done;
@@ -89,7 +89,7 @@ readNextHeader_native(JNIEnv* env, jobject clazz, int r, jobject entity)
}
static jint
-readEntityData_native(JNIEnv* env, jobject clazz, int r, jbyteArray data, int offset, int size)
+readEntityData_native(JNIEnv* env, jobject clazz, jlong r, jbyteArray data, jint offset, jint size)
{
int err;
BackupDataReader* reader = (BackupDataReader*)r;
@@ -112,7 +112,7 @@ readEntityData_native(JNIEnv* env, jobject clazz, int r, jbyteArray data, int of
}
static jint
-skipEntityData_native(JNIEnv* env, jobject clazz, int r)
+skipEntityData_native(JNIEnv* env, jobject clazz, jlong r)
{
int err;
BackupDataReader* reader = (BackupDataReader*)r;
@@ -123,12 +123,12 @@ skipEntityData_native(JNIEnv* env, jobject clazz, int r)
}
static const JNINativeMethod g_methods[] = {
- { "ctor", "(Ljava/io/FileDescriptor;)I", (void*)ctor_native },
- { "dtor", "(I)V", (void*)dtor_native },
- { "readNextHeader_native", "(ILandroid/app/backup/BackupDataInput$EntityHeader;)I",
+ { "ctor", "(Ljava/io/FileDescriptor;)J", (void*)ctor_native },
+ { "dtor", "(J)V", (void*)dtor_native },
+ { "readNextHeader_native", "(JLandroid/app/backup/BackupDataInput$EntityHeader;)I",
(void*)readNextHeader_native },
- { "readEntityData_native", "(I[BII)I", (void*)readEntityData_native },
- { "skipEntityData_native", "(I)I", (void*)skipEntityData_native },
+ { "readEntityData_native", "(J[BII)I", (void*)readEntityData_native },
+ { "skipEntityData_native", "(J)I", (void*)skipEntityData_native },
};
int register_android_backup_BackupDataInput(JNIEnv* env)
diff --git a/core/jni/android_backup_BackupDataOutput.cpp b/core/jni/android_backup_BackupDataOutput.cpp
index e8f0fb85e29b..8244e1bfdbf1 100644
--- a/core/jni/android_backup_BackupDataOutput.cpp
+++ b/core/jni/android_backup_BackupDataOutput.cpp
@@ -25,25 +25,25 @@
namespace android
{
-static int
+static jlong
ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor)
{
int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
if (fd == -1) {
- return NULL;
+ return (jlong)NULL;
}
- return (int)new BackupDataWriter(fd);
+ return (jlong)new BackupDataWriter(fd);
}
static void
-dtor_native(JNIEnv* env, jobject clazz, int w)
+dtor_native(JNIEnv* env, jobject clazz, jlong w)
{
delete (BackupDataWriter*)w;
}
static jint
-writeEntityHeader_native(JNIEnv* env, jobject clazz, int w, jstring key, int dataSize)
+writeEntityHeader_native(JNIEnv* env, jobject clazz, jlong w, jstring key, jint dataSize)
{
int err;
BackupDataWriter* writer = (BackupDataWriter*)w;
@@ -56,11 +56,11 @@ writeEntityHeader_native(JNIEnv* env, jobject clazz, int w, jstring key, int dat
env->ReleaseStringUTFChars(key, keyUTF);
- return err;
+ return (jint)err;
}
static jint
-writeEntityData_native(JNIEnv* env, jobject clazz, int w, jbyteArray data, int size)
+writeEntityData_native(JNIEnv* env, jobject clazz, jlong w, jbyteArray data, jint size)
{
int err;
BackupDataWriter* writer = (BackupDataWriter*)w;
@@ -79,11 +79,11 @@ writeEntityData_native(JNIEnv* env, jobject clazz, int w, jbyteArray data, int s
env->ReleaseByteArrayElements(data, dataBytes, JNI_ABORT);
- return err;
+ return (jint)err;
}
static void
-setKeyPrefix_native(JNIEnv* env, jobject clazz, int w, jstring keyPrefixObj)
+setKeyPrefix_native(JNIEnv* env, jobject clazz, jlong w, jstring keyPrefixObj)
{
int err;
BackupDataWriter* writer = (BackupDataWriter*)w;
@@ -97,11 +97,11 @@ setKeyPrefix_native(JNIEnv* env, jobject clazz, int w, jstring keyPrefixObj)
}
static const JNINativeMethod g_methods[] = {
- { "ctor", "(Ljava/io/FileDescriptor;)I", (void*)ctor_native },
- { "dtor", "(I)V", (void*)dtor_native },
- { "writeEntityHeader_native", "(ILjava/lang/String;I)I", (void*)writeEntityHeader_native },
- { "writeEntityData_native", "(I[BI)I", (void*)writeEntityData_native },
- { "setKeyPrefix_native", "(ILjava/lang/String;)V", (void*)setKeyPrefix_native },
+ { "ctor", "(Ljava/io/FileDescriptor;)J", (void*)ctor_native },
+ { "dtor", "(J)V", (void*)dtor_native },
+ { "writeEntityHeader_native", "(JLjava/lang/String;I)I", (void*)writeEntityHeader_native },
+ { "writeEntityData_native", "(J[BI)I", (void*)writeEntityData_native },
+ { "setKeyPrefix_native", "(JLjava/lang/String;)V", (void*)setKeyPrefix_native },
};
int register_android_backup_BackupDataOutput(JNIEnv* env)
diff --git a/core/jni/android_backup_BackupHelperDispatcher.cpp b/core/jni/android_backup_BackupHelperDispatcher.cpp
index 3e366778a721..a8b7d440dcd2 100644
--- a/core/jni/android_backup_BackupHelperDispatcher.cpp
+++ b/core/jni/android_backup_BackupHelperDispatcher.cpp
@@ -40,7 +40,7 @@ struct chunk_header_v1 {
static jfieldID s_chunkSizeField = 0;
static jfieldID s_keyPrefixField = 0;
-static int
+static jint
readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
{
chunk_header_v1 flattenedHeader;
@@ -52,7 +52,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
amt = read(fd, &flattenedHeader.headerSize, sizeof(flattenedHeader.headerSize));
if (amt != sizeof(flattenedHeader.headerSize)) {
- return -1;
+ return (jint) -1;
}
int remainingHeader = flattenedHeader.headerSize - sizeof(flattenedHeader.headerSize);
@@ -62,7 +62,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
if (remainingHeader > 0) {
lseek(fd, remainingHeader, SEEK_CUR);
// >0 means skip this chunk
- return 1;
+ return (jint) 1;
}
}
@@ -70,7 +70,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
sizeof(chunk_header_v1)-sizeof(flattenedHeader.headerSize));
if (amt <= 0) {
ALOGW("Failed reading chunk header");
- return -1;
+ return (jint) -1;
}
remainingHeader -= sizeof(chunk_header_v1)-sizeof(flattenedHeader.headerSize);
@@ -80,7 +80,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
if (remainingHeader > 0) {
lseek(fd, remainingHeader, SEEK_CUR);
// >0 means skip this chunk
- return 1;
+ return (jint) 1;
}
}
@@ -96,13 +96,13 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
remainingHeader < flattenedHeader.nameLength) {
ALOGW("Malformed V1 header remainingHeader=%d dataSize=%d nameLength=%d", remainingHeader,
flattenedHeader.dataSize, flattenedHeader.nameLength);
- return -1;
+ return (jint) -1;
}
buf = keyPrefix.lockBuffer(flattenedHeader.nameLength);
if (buf == NULL) {
ALOGW("unable to allocate %d bytes", flattenedHeader.nameLength);
- return -1;
+ return (jint) -1;
}
amt = read(fd, buf, flattenedHeader.nameLength);
@@ -119,17 +119,17 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
env->SetIntField(headerObj, s_chunkSizeField, flattenedHeader.dataSize);
env->SetObjectField(headerObj, s_keyPrefixField, env->NewStringUTF(keyPrefix.string()));
- return 0;
+ return (jint) 0;
}
-static int
+static jint
skipChunk_native(JNIEnv* env, jobject clazz, jobject fdObj, jint bytesToSkip)
{
int fd = jniGetFDFromFileDescriptor(env, fdObj);
lseek(fd, bytesToSkip, SEEK_CUR);
- return 0;
+ return (jint) 0;
}
static int
@@ -139,7 +139,7 @@ padding_len(int len)
return len == 0 ? len : 4 - len;
}
-static int
+static jint
allocateHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
{
int pos;
@@ -161,10 +161,10 @@ allocateHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdO
lseek(fd, headerSize, SEEK_CUR);
- return pos;
+ return (jint) pos;
}
-static int
+static jint
writeHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj, jint pos)
{
int err;
@@ -188,26 +188,26 @@ writeHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj,
lseek(fd, pos, SEEK_SET);
err = write(fd, &header, sizeof(chunk_header_v1));
if (err != sizeof(chunk_header_v1)) {
- return errno;
+ return (jint) errno;
}
buf = env->GetStringUTFChars(nameObj, NULL);
err = write(fd, buf, header.nameLength);
env->ReleaseStringUTFChars(nameObj, buf);
if (err != header.nameLength) {
- return errno;
+ return (jint) errno;
}
if (namePadding != 0) {
int zero = 0;
err = write(fd, &zero, namePadding);
if (err != namePadding) {
- return errno;
+ return (jint) errno;
}
}
lseek(fd, prevPos, SEEK_SET);
- return 0;
+ return (jint) 0;
}
static const JNINativeMethod g_methods[] = {
diff --git a/core/jni/android_backup_FileBackupHelperBase.cpp b/core/jni/android_backup_FileBackupHelperBase.cpp
index bb3a751ae8e6..66e3e9db3483 100644
--- a/core/jni/android_backup_FileBackupHelperBase.cpp
+++ b/core/jni/android_backup_FileBackupHelperBase.cpp
@@ -25,20 +25,20 @@
namespace android
{
-static int
+static jlong
ctor(JNIEnv* env, jobject clazz)
{
- return (int)new RestoreHelperBase();
+ return (jlong)new RestoreHelperBase();
}
static void
-dtor(JNIEnv* env, jobject clazz, jint ptr)
+dtor(JNIEnv* env, jobject clazz, jlong ptr)
{
delete (RestoreHelperBase*)ptr;
}
-static int
-performBackup_native(JNIEnv* env, jobject clazz, jobject oldState, int data,
+static jint
+performBackup_native(JNIEnv* env, jobject clazz, jobject oldState, jlong data,
jobject newState, jobjectArray files, jobjectArray keys)
{
int err;
@@ -72,12 +72,12 @@ performBackup_native(JNIEnv* env, jobject clazz, jobject oldState, int data,
}
free(keysUTF);
- return err;
+ return (jint) err;
}
-static int
-writeFile_native(JNIEnv* env, jobject clazz, jint ptr, jstring filenameObj, int backupReaderPtr)
+static jint
+writeFile_native(JNIEnv* env, jobject clazz, jlong ptr, jstring filenameObj, jlong backupReaderPtr)
{
int err;
RestoreHelperBase* restore = (RestoreHelperBase*)ptr;
@@ -90,11 +90,11 @@ writeFile_native(JNIEnv* env, jobject clazz, jint ptr, jstring filenameObj, int
env->ReleaseStringUTFChars(filenameObj, filename);
- return err;
+ return (jint) err;
}
-static int
-writeSnapshot_native(JNIEnv* env, jobject clazz, jint ptr, jobject fileDescriptor)
+static jint
+writeSnapshot_native(JNIEnv* env, jobject clazz, jlong ptr, jobject fileDescriptor)
{
int err;
@@ -103,17 +103,17 @@ writeSnapshot_native(JNIEnv* env, jobject clazz, jint ptr, jobject fileDescripto
err = restore->WriteSnapshot(fd);
- return err;
+ return (jint) err;
}
static const JNINativeMethod g_methods[] = {
- { "ctor", "()I", (void*)ctor },
- { "dtor", "(I)V", (void*)dtor },
+ { "ctor", "()J", (void*)ctor },
+ { "dtor", "(J)V", (void*)dtor },
{ "performBackup_native",
- "(Ljava/io/FileDescriptor;ILjava/io/FileDescriptor;[Ljava/lang/String;[Ljava/lang/String;)I",
+ "(Ljava/io/FileDescriptor;JLjava/io/FileDescriptor;[Ljava/lang/String;[Ljava/lang/String;)I",
(void*)performBackup_native },
- { "writeFile_native", "(ILjava/lang/String;I)I", (void*)writeFile_native },
- { "writeSnapshot_native", "(ILjava/io/FileDescriptor;)I", (void*)writeSnapshot_native },
+ { "writeFile_native", "(JLjava/lang/String;J)I", (void*)writeFile_native },
+ { "writeSnapshot_native", "(JLjava/io/FileDescriptor;)I", (void*)writeSnapshot_native },
};
int register_android_backup_FileBackupHelperBase(JNIEnv* env)
diff --git a/core/jni/android_database_CursorWindow.cpp b/core/jni/android_database_CursorWindow.cpp
index ea02f537c0e7..67f387920f57 100644
--- a/core/jni/android_database_CursorWindow.cpp
+++ b/core/jni/android_database_CursorWindow.cpp
@@ -58,7 +58,7 @@ static void throwUnknownTypeException(JNIEnv * env, jint type) {
jniThrowException(env, "java/lang/IllegalStateException", msg.string());
}
-static jint nativeCreate(JNIEnv* env, jclass clazz, jstring nameObj, jint cursorWindowSize) {
+static jlong nativeCreate(JNIEnv* env, jclass clazz, jstring nameObj, jint cursorWindowSize) {
String8 name;
const char* nameStr = env->GetStringUTFChars(nameObj, NULL);
name.setTo(nameStr);
@@ -73,10 +73,10 @@ static jint nativeCreate(JNIEnv* env, jclass clazz, jstring nameObj, jint cursor
}
LOG_WINDOW("nativeInitializeEmpty: window = %p", window);
- return reinterpret_cast<jint>(window);
+ return reinterpret_cast<jlong>(window);
}
-static jint nativeCreateFromParcel(JNIEnv* env, jclass clazz, jobject parcelObj) {
+static jlong nativeCreateFromParcel(JNIEnv* env, jclass clazz, jobject parcelObj) {
Parcel* parcel = parcelForJavaObject(env, parcelObj);
CursorWindow* window;
@@ -88,10 +88,10 @@ static jint nativeCreateFromParcel(JNIEnv* env, jclass clazz, jobject parcelObj)
LOG_WINDOW("nativeInitializeFromBinder: numRows = %d, numColumns = %d, window = %p",
window->getNumRows(), window->getNumColumns(), window);
- return reinterpret_cast<jint>(window);
+ return reinterpret_cast<jlong>(window);
}
-static void nativeDispose(JNIEnv* env, jclass clazz, jint windowPtr) {
+static void nativeDispose(JNIEnv* env, jclass clazz, jlong windowPtr) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
if (window) {
LOG_WINDOW("Closing window %p", window);
@@ -99,12 +99,12 @@ static void nativeDispose(JNIEnv* env, jclass clazz, jint windowPtr) {
}
}
-static jstring nativeGetName(JNIEnv* env, jclass clazz, jint windowPtr) {
+static jstring nativeGetName(JNIEnv* env, jclass clazz, jlong windowPtr) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
return env->NewStringUTF(window->name().string());
}
-static void nativeWriteToParcel(JNIEnv * env, jclass clazz, jint windowPtr,
+static void nativeWriteToParcel(JNIEnv * env, jclass clazz, jlong windowPtr,
jobject parcelObj) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
Parcel* parcel = parcelForJavaObject(env, parcelObj);
@@ -117,7 +117,7 @@ static void nativeWriteToParcel(JNIEnv * env, jclass clazz, jint windowPtr,
}
}
-static void nativeClear(JNIEnv * env, jclass clazz, jint windowPtr) {
+static void nativeClear(JNIEnv * env, jclass clazz, jlong windowPtr) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
LOG_WINDOW("Clearing window %p", window);
status_t status = window->clear();
@@ -126,30 +126,30 @@ static void nativeClear(JNIEnv * env, jclass clazz, jint windowPtr) {
}
}
-static jint nativeGetNumRows(JNIEnv* env, jclass clazz, jint windowPtr) {
+static jint nativeGetNumRows(JNIEnv* env, jclass clazz, jlong windowPtr) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
return window->getNumRows();
}
-static jboolean nativeSetNumColumns(JNIEnv* env, jclass clazz, jint windowPtr,
+static jboolean nativeSetNumColumns(JNIEnv* env, jclass clazz, jlong windowPtr,
jint columnNum) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
status_t status = window->setNumColumns(columnNum);
return status == OK;
}
-static jboolean nativeAllocRow(JNIEnv* env, jclass clazz, jint windowPtr) {
+static jboolean nativeAllocRow(JNIEnv* env, jclass clazz, jlong windowPtr) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
status_t status = window->allocRow();
return status == OK;
}
-static void nativeFreeLastRow(JNIEnv* env, jclass clazz, jint windowPtr) {
+static void nativeFreeLastRow(JNIEnv* env, jclass clazz, jlong windowPtr) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
window->freeLastRow();
}
-static jint nativeGetType(JNIEnv* env, jclass clazz, jint windowPtr,
+static jint nativeGetType(JNIEnv* env, jclass clazz, jlong windowPtr,
jint row, jint column) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
LOG_WINDOW("returning column type affinity for %d,%d from %p", row, column, window);
@@ -164,7 +164,7 @@ static jint nativeGetType(JNIEnv* env, jclass clazz, jint windowPtr,
return window->getFieldSlotType(fieldSlot);
}
-static jbyteArray nativeGetBlob(JNIEnv* env, jclass clazz, jint windowPtr,
+static jbyteArray nativeGetBlob(JNIEnv* env, jclass clazz, jlong windowPtr,
jint row, jint column) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
LOG_WINDOW("Getting blob for %d,%d from %p", row, column, window);
@@ -199,7 +199,7 @@ static jbyteArray nativeGetBlob(JNIEnv* env, jclass clazz, jint windowPtr,
return NULL;
}
-static jstring nativeGetString(JNIEnv* env, jclass clazz, jint windowPtr,
+static jstring nativeGetString(JNIEnv* env, jclass clazz, jlong windowPtr,
jint row, jint column) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
LOG_WINDOW("Getting string for %d,%d from %p", row, column, window);
@@ -291,7 +291,7 @@ static void clearCharArrayBuffer(JNIEnv* env, jobject bufferObj) {
}
}
-static void nativeCopyStringToBuffer(JNIEnv* env, jclass clazz, jint windowPtr,
+static void nativeCopyStringToBuffer(JNIEnv* env, jclass clazz, jlong windowPtr,
jint row, jint column, jobject bufferObj) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
LOG_WINDOW("Copying string for %d,%d from %p", row, column, window);
@@ -330,7 +330,7 @@ static void nativeCopyStringToBuffer(JNIEnv* env, jclass clazz, jint windowPtr,
}
}
-static jlong nativeGetLong(JNIEnv* env, jclass clazz, jint windowPtr,
+static jlong nativeGetLong(JNIEnv* env, jclass clazz, jlong windowPtr,
jint row, jint column) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
LOG_WINDOW("Getting long for %d,%d from %p", row, column, window);
@@ -361,7 +361,7 @@ static jlong nativeGetLong(JNIEnv* env, jclass clazz, jint windowPtr,
}
}
-static jdouble nativeGetDouble(JNIEnv* env, jclass clazz, jint windowPtr,
+static jdouble nativeGetDouble(JNIEnv* env, jclass clazz, jlong windowPtr,
jint row, jint column) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
LOG_WINDOW("Getting double for %d,%d from %p", row, column, window);
@@ -392,7 +392,7 @@ static jdouble nativeGetDouble(JNIEnv* env, jclass clazz, jint windowPtr,
}
}
-static jboolean nativePutBlob(JNIEnv* env, jclass clazz, jint windowPtr,
+static jboolean nativePutBlob(JNIEnv* env, jclass clazz, jlong windowPtr,
jbyteArray valueObj, jint row, jint column) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
jsize len = env->GetArrayLength(valueObj);
@@ -410,7 +410,7 @@ static jboolean nativePutBlob(JNIEnv* env, jclass clazz, jint windowPtr,
return true;
}
-static jboolean nativePutString(JNIEnv* env, jclass clazz, jint windowPtr,
+static jboolean nativePutString(JNIEnv* env, jclass clazz, jlong windowPtr,
jstring valueObj, jint row, jint column) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
@@ -432,7 +432,7 @@ static jboolean nativePutString(JNIEnv* env, jclass clazz, jint windowPtr,
return true;
}
-static jboolean nativePutLong(JNIEnv* env, jclass clazz, jint windowPtr,
+static jboolean nativePutLong(JNIEnv* env, jclass clazz, jlong windowPtr,
jlong value, jint row, jint column) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
status_t status = window->putLong(row, column, value);
@@ -446,7 +446,7 @@ static jboolean nativePutLong(JNIEnv* env, jclass clazz, jint windowPtr,
return true;
}
-static jboolean nativePutDouble(JNIEnv* env, jclass clazz, jint windowPtr,
+static jboolean nativePutDouble(JNIEnv* env, jclass clazz, jlong windowPtr,
jdouble value, jint row, jint column) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
status_t status = window->putDouble(row, column, value);
@@ -460,7 +460,7 @@ static jboolean nativePutDouble(JNIEnv* env, jclass clazz, jint windowPtr,
return true;
}
-static jboolean nativePutNull(JNIEnv* env, jclass clazz, jint windowPtr,
+static jboolean nativePutNull(JNIEnv* env, jclass clazz, jlong windowPtr,
jint row, jint column) {
CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
status_t status = window->putNull(row, column);
@@ -477,47 +477,47 @@ static jboolean nativePutNull(JNIEnv* env, jclass clazz, jint windowPtr,
static JNINativeMethod sMethods[] =
{
/* name, signature, funcPtr */
- { "nativeCreate", "(Ljava/lang/String;I)I",
+ { "nativeCreate", "(Ljava/lang/String;I)J",
(void*)nativeCreate },
- { "nativeCreateFromParcel", "(Landroid/os/Parcel;)I",
+ { "nativeCreateFromParcel", "(Landroid/os/Parcel;)J",
(void*)nativeCreateFromParcel },
- { "nativeDispose", "(I)V",
+ { "nativeDispose", "(J)V",
(void*)nativeDispose },
- { "nativeWriteToParcel", "(ILandroid/os/Parcel;)V",
+ { "nativeWriteToParcel", "(JLandroid/os/Parcel;)V",
(void*)nativeWriteToParcel },
- { "nativeGetName", "(I)Ljava/lang/String;",
+ { "nativeGetName", "(J)Ljava/lang/String;",
(void*)nativeGetName },
- { "nativeClear", "(I)V",
+ { "nativeClear", "(J)V",
(void*)nativeClear },
- { "nativeGetNumRows", "(I)I",
+ { "nativeGetNumRows", "(J)I",
(void*)nativeGetNumRows },
- { "nativeSetNumColumns", "(II)Z",
+ { "nativeSetNumColumns", "(JI)Z",
(void*)nativeSetNumColumns },
- { "nativeAllocRow", "(I)Z",
+ { "nativeAllocRow", "(J)Z",
(void*)nativeAllocRow },
- { "nativeFreeLastRow", "(I)V",
+ { "nativeFreeLastRow", "(J)V",
(void*)nativeFreeLastRow },
- { "nativeGetType", "(III)I",
+ { "nativeGetType", "(JII)I",
(void*)nativeGetType },
- { "nativeGetBlob", "(III)[B",
+ { "nativeGetBlob", "(JII)[B",
(void*)nativeGetBlob },
- { "nativeGetString", "(III)Ljava/lang/String;",
+ { "nativeGetString", "(JII)Ljava/lang/String;",
(void*)nativeGetString },
- { "nativeGetLong", "(III)J",
+ { "nativeGetLong", "(JII)J",
(void*)nativeGetLong },
- { "nativeGetDouble", "(III)D",
+ { "nativeGetDouble", "(JII)D",
(void*)nativeGetDouble },
- { "nativeCopyStringToBuffer", "(IIILandroid/database/CharArrayBuffer;)V",
+ { "nativeCopyStringToBuffer", "(JIILandroid/database/CharArrayBuffer;)V",
(void*)nativeCopyStringToBuffer },
- { "nativePutBlob", "(I[BII)Z",
+ { "nativePutBlob", "(J[BII)Z",
(void*)nativePutBlob },
- { "nativePutString", "(ILjava/lang/String;II)Z",
+ { "nativePutString", "(JLjava/lang/String;II)Z",
(void*)nativePutString },
- { "nativePutLong", "(IJII)Z",
+ { "nativePutLong", "(JJII)Z",
(void*)nativePutLong },
- { "nativePutDouble", "(IDII)Z",
+ { "nativePutDouble", "(JDII)Z",
(void*)nativePutDouble },
- { "nativePutNull", "(III)Z",
+ { "nativePutNull", "(JII)Z",
(void*)nativePutNull },
};
diff --git a/core/jni/android_database_SQLiteConnection.cpp b/core/jni/android_database_SQLiteConnection.cpp
index 6e496fd2281c..ae5643207d8c 100644
--- a/core/jni/android_database_SQLiteConnection.cpp
+++ b/core/jni/android_database_SQLiteConnection.cpp
@@ -109,7 +109,7 @@ static int sqliteProgressHandlerCallback(void* data) {
}
-static jint nativeOpen(JNIEnv* env, jclass clazz, jstring pathStr, jint openFlags,
+static jlong nativeOpen(JNIEnv* env, jclass clazz, jstring pathStr, jint openFlags,
jstring labelStr, jboolean enableTrace, jboolean enableProfile) {
int sqliteFlags;
if (openFlags & SQLiteConnection::CREATE_IF_NECESSARY) {
@@ -170,10 +170,10 @@ static jint nativeOpen(JNIEnv* env, jclass clazz, jstring pathStr, jint openFlag
}
ALOGV("Opened connection %p with label '%s'", db, label.string());
- return reinterpret_cast<jint>(connection);
+ return reinterpret_cast<jlong>(connection);
}
-static void nativeClose(JNIEnv* env, jclass clazz, jint connectionPtr) {
+static void nativeClose(JNIEnv* env, jclass clazz, jlong connectionPtr) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
if (connection) {
@@ -243,7 +243,7 @@ static void sqliteCustomFunctionDestructor(void* data) {
env->DeleteGlobalRef(functionObjGlobal);
}
-static void nativeRegisterCustomFunction(JNIEnv* env, jclass clazz, jint connectionPtr,
+static void nativeRegisterCustomFunction(JNIEnv* env, jclass clazz, jlong connectionPtr,
jobject functionObj) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
@@ -267,7 +267,7 @@ static void nativeRegisterCustomFunction(JNIEnv* env, jclass clazz, jint connect
}
}
-static void nativeRegisterLocalizedCollators(JNIEnv* env, jclass clazz, jint connectionPtr,
+static void nativeRegisterLocalizedCollators(JNIEnv* env, jclass clazz, jlong connectionPtr,
jstring localeStr) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
@@ -280,7 +280,7 @@ static void nativeRegisterLocalizedCollators(JNIEnv* env, jclass clazz, jint con
}
}
-static jint nativePrepareStatement(JNIEnv* env, jclass clazz, jint connectionPtr,
+static jlong nativePrepareStatement(JNIEnv* env, jclass clazz, jlong connectionPtr,
jstring sqlString) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
@@ -308,11 +308,11 @@ static jint nativePrepareStatement(JNIEnv* env, jclass clazz, jint connectionPtr
}
ALOGV("Prepared statement %p on connection %p", statement, connection->db);
- return reinterpret_cast<jint>(statement);
+ return reinterpret_cast<jlong>(statement);
}
-static void nativeFinalizeStatement(JNIEnv* env, jclass clazz, jint connectionPtr,
- jint statementPtr) {
+static void nativeFinalizeStatement(JNIEnv* env, jclass clazz, jlong connectionPtr,
+ jlong statementPtr) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
@@ -323,32 +323,32 @@ static void nativeFinalizeStatement(JNIEnv* env, jclass clazz, jint connectionPt
sqlite3_finalize(statement);
}
-static jint nativeGetParameterCount(JNIEnv* env, jclass clazz, jint connectionPtr,
- jint statementPtr) {
+static jint nativeGetParameterCount(JNIEnv* env, jclass clazz, jlong connectionPtr,
+ jlong statementPtr) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
return sqlite3_bind_parameter_count(statement);
}
-static jboolean nativeIsReadOnly(JNIEnv* env, jclass clazz, jint connectionPtr,
- jint statementPtr) {
+static jboolean nativeIsReadOnly(JNIEnv* env, jclass clazz, jlong connectionPtr,
+ jlong statementPtr) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
return sqlite3_stmt_readonly(statement) != 0;
}
-static jint nativeGetColumnCount(JNIEnv* env, jclass clazz, jint connectionPtr,
- jint statementPtr) {
+static jint nativeGetColumnCount(JNIEnv* env, jclass clazz, jlong connectionPtr,
+ jlong statementPtr) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
return sqlite3_column_count(statement);
}
-static jstring nativeGetColumnName(JNIEnv* env, jclass clazz, jint connectionPtr,
- jint statementPtr, jint index) {
+static jstring nativeGetColumnName(JNIEnv* env, jclass clazz, jlong connectionPtr,
+ jlong statementPtr, jint index) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
@@ -363,8 +363,8 @@ static jstring nativeGetColumnName(JNIEnv* env, jclass clazz, jint connectionPtr
return NULL;
}
-static void nativeBindNull(JNIEnv* env, jclass clazz, jint connectionPtr,
- jint statementPtr, jint index) {
+static void nativeBindNull(JNIEnv* env, jclass clazz, jlong connectionPtr,
+ jlong statementPtr, jint index) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
@@ -374,8 +374,8 @@ static void nativeBindNull(JNIEnv* env, jclass clazz, jint connectionPtr,
}
}
-static void nativeBindLong(JNIEnv* env, jclass clazz, jint connectionPtr,
- jint statementPtr, jint index, jlong value) {
+static void nativeBindLong(JNIEnv* env, jclass clazz, jlong connectionPtr,
+ jlong statementPtr, jint index, jlong value) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
@@ -385,8 +385,8 @@ static void nativeBindLong(JNIEnv* env, jclass clazz, jint connectionPtr,
}
}
-static void nativeBindDouble(JNIEnv* env, jclass clazz, jint connectionPtr,
- jint statementPtr, jint index, jdouble value) {
+static void nativeBindDouble(JNIEnv* env, jclass clazz, jlong connectionPtr,
+ jlong statementPtr, jint index, jdouble value) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
@@ -396,8 +396,8 @@ static void nativeBindDouble(JNIEnv* env, jclass clazz, jint connectionPtr,
}
}
-static void nativeBindString(JNIEnv* env, jclass clazz, jint connectionPtr,
- jint statementPtr, jint index, jstring valueString) {
+static void nativeBindString(JNIEnv* env, jclass clazz, jlong connectionPtr,
+ jlong statementPtr, jint index, jstring valueString) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
@@ -411,8 +411,8 @@ static void nativeBindString(JNIEnv* env, jclass clazz, jint connectionPtr,
}
}
-static void nativeBindBlob(JNIEnv* env, jclass clazz, jint connectionPtr,
- jint statementPtr, jint index, jbyteArray valueArray) {
+static void nativeBindBlob(JNIEnv* env, jclass clazz, jlong connectionPtr,
+ jlong statementPtr, jint index, jbyteArray valueArray) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
@@ -425,8 +425,8 @@ static void nativeBindBlob(JNIEnv* env, jclass clazz, jint connectionPtr,
}
}
-static void nativeResetStatementAndClearBindings(JNIEnv* env, jclass clazz, jint connectionPtr,
- jint statementPtr) {
+static void nativeResetStatementAndClearBindings(JNIEnv* env, jclass clazz, jlong connectionPtr,
+ jlong statementPtr) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
@@ -450,8 +450,8 @@ static int executeNonQuery(JNIEnv* env, SQLiteConnection* connection, sqlite3_st
return err;
}
-static void nativeExecute(JNIEnv* env, jclass clazz, jint connectionPtr,
- jint statementPtr) {
+static void nativeExecute(JNIEnv* env, jclass clazz, jlong connectionPtr,
+ jlong statementPtr) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
@@ -459,7 +459,7 @@ static void nativeExecute(JNIEnv* env, jclass clazz, jint connectionPtr,
}
static jint nativeExecuteForChangedRowCount(JNIEnv* env, jclass clazz,
- jint connectionPtr, jint statementPtr) {
+ jlong connectionPtr, jlong statementPtr) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
@@ -468,7 +468,7 @@ static jint nativeExecuteForChangedRowCount(JNIEnv* env, jclass clazz,
}
static jlong nativeExecuteForLastInsertedRowId(JNIEnv* env, jclass clazz,
- jint connectionPtr, jint statementPtr) {
+ jlong connectionPtr, jlong statementPtr) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
@@ -486,7 +486,7 @@ static int executeOneRowQuery(JNIEnv* env, SQLiteConnection* connection, sqlite3
}
static jlong nativeExecuteForLong(JNIEnv* env, jclass clazz,
- jint connectionPtr, jint statementPtr) {
+ jlong connectionPtr, jlong statementPtr) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
@@ -498,7 +498,7 @@ static jlong nativeExecuteForLong(JNIEnv* env, jclass clazz,
}
static jstring nativeExecuteForString(JNIEnv* env, jclass clazz,
- jint connectionPtr, jint statementPtr) {
+ jlong connectionPtr, jlong statementPtr) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
@@ -548,7 +548,7 @@ static int createAshmemRegionWithData(JNIEnv* env, const void* data, size_t leng
}
static jint nativeExecuteForBlobFileDescriptor(JNIEnv* env, jclass clazz,
- jint connectionPtr, jint statementPtr) {
+ jlong connectionPtr, jlong statementPtr) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
@@ -665,7 +665,7 @@ static CopyRowResult copyRow(JNIEnv* env, CursorWindow* window,
}
static jlong nativeExecuteForCursorWindow(JNIEnv* env, jclass clazz,
- jint connectionPtr, jint statementPtr, jint windowPtr,
+ jlong connectionPtr, jlong statementPtr, jlong windowPtr,
jint startPos, jint requiredPos, jboolean countAllRows) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
sqlite3_stmt* statement = reinterpret_cast<sqlite3_stmt*>(statementPtr);
@@ -760,7 +760,7 @@ static jlong nativeExecuteForCursorWindow(JNIEnv* env, jclass clazz,
return result;
}
-static jint nativeGetDbLookaside(JNIEnv* env, jobject clazz, jint connectionPtr) {
+static jint nativeGetDbLookaside(JNIEnv* env, jobject clazz, jlong connectionPtr) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
int cur = -1;
@@ -769,12 +769,12 @@ static jint nativeGetDbLookaside(JNIEnv* env, jobject clazz, jint connectionPtr)
return cur;
}
-static void nativeCancel(JNIEnv* env, jobject clazz, jint connectionPtr) {
+static void nativeCancel(JNIEnv* env, jobject clazz, jlong connectionPtr) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
connection->canceled = true;
}
-static void nativeResetCancel(JNIEnv* env, jobject clazz, jint connectionPtr,
+static void nativeResetCancel(JNIEnv* env, jobject clazz, jlong connectionPtr,
jboolean cancelable) {
SQLiteConnection* connection = reinterpret_cast<SQLiteConnection*>(connectionPtr);
connection->canceled = false;
@@ -791,57 +791,57 @@ static void nativeResetCancel(JNIEnv* env, jobject clazz, jint connectionPtr,
static JNINativeMethod sMethods[] =
{
/* name, signature, funcPtr */
- { "nativeOpen", "(Ljava/lang/String;ILjava/lang/String;ZZ)I",
+ { "nativeOpen", "(Ljava/lang/String;ILjava/lang/String;ZZ)J",
(void*)nativeOpen },
- { "nativeClose", "(I)V",
+ { "nativeClose", "(J)V",
(void*)nativeClose },
- { "nativeRegisterCustomFunction", "(ILandroid/database/sqlite/SQLiteCustomFunction;)V",
+ { "nativeRegisterCustomFunction", "(JLandroid/database/sqlite/SQLiteCustomFunction;)V",
(void*)nativeRegisterCustomFunction },
- { "nativeRegisterLocalizedCollators", "(ILjava/lang/String;)V",
+ { "nativeRegisterLocalizedCollators", "(JLjava/lang/String;)V",
(void*)nativeRegisterLocalizedCollators },
- { "nativePrepareStatement", "(ILjava/lang/String;)I",
+ { "nativePrepareStatement", "(JLjava/lang/String;)J",
(void*)nativePrepareStatement },
- { "nativeFinalizeStatement", "(II)V",
+ { "nativeFinalizeStatement", "(JJ)V",
(void*)nativeFinalizeStatement },
- { "nativeGetParameterCount", "(II)I",
+ { "nativeGetParameterCount", "(JJ)I",
(void*)nativeGetParameterCount },
- { "nativeIsReadOnly", "(II)Z",
+ { "nativeIsReadOnly", "(JJ)Z",
(void*)nativeIsReadOnly },
- { "nativeGetColumnCount", "(II)I",
+ { "nativeGetColumnCount", "(JJ)I",
(void*)nativeGetColumnCount },
- { "nativeGetColumnName", "(III)Ljava/lang/String;",
+ { "nativeGetColumnName", "(JJI)Ljava/lang/String;",
(void*)nativeGetColumnName },
- { "nativeBindNull", "(III)V",
+ { "nativeBindNull", "(JJI)V",
(void*)nativeBindNull },
- { "nativeBindLong", "(IIIJ)V",
+ { "nativeBindLong", "(JJIJ)V",
(void*)nativeBindLong },
- { "nativeBindDouble", "(IIID)V",
+ { "nativeBindDouble", "(JJID)V",
(void*)nativeBindDouble },
- { "nativeBindString", "(IIILjava/lang/String;)V",
+ { "nativeBindString", "(JJILjava/lang/String;)V",
(void*)nativeBindString },
- { "nativeBindBlob", "(III[B)V",
+ { "nativeBindBlob", "(JJI[B)V",
(void*)nativeBindBlob },
- { "nativeResetStatementAndClearBindings", "(II)V",
+ { "nativeResetStatementAndClearBindings", "(JJ)V",
(void*)nativeResetStatementAndClearBindings },
- { "nativeExecute", "(II)V",
+ { "nativeExecute", "(JJ)V",
(void*)nativeExecute },
- { "nativeExecuteForLong", "(II)J",
+ { "nativeExecuteForLong", "(JJ)J",
(void*)nativeExecuteForLong },
- { "nativeExecuteForString", "(II)Ljava/lang/String;",
+ { "nativeExecuteForString", "(JJ)Ljava/lang/String;",
(void*)nativeExecuteForString },
- { "nativeExecuteForBlobFileDescriptor", "(II)I",
+ { "nativeExecuteForBlobFileDescriptor", "(JJ)I",
(void*)nativeExecuteForBlobFileDescriptor },
- { "nativeExecuteForChangedRowCount", "(II)I",
+ { "nativeExecuteForChangedRowCount", "(JJ)I",
(void*)nativeExecuteForChangedRowCount },
- { "nativeExecuteForLastInsertedRowId", "(II)J",
+ { "nativeExecuteForLastInsertedRowId", "(JJ)J",
(void*)nativeExecuteForLastInsertedRowId },
- { "nativeExecuteForCursorWindow", "(IIIIIZ)J",
+ { "nativeExecuteForCursorWindow", "(JJJIIZ)J",
(void*)nativeExecuteForCursorWindow },
- { "nativeGetDbLookaside", "(I)I",
+ { "nativeGetDbLookaside", "(J)I",
(void*)nativeGetDbLookaside },
- { "nativeCancel", "(I)V",
+ { "nativeCancel", "(J)V",
(void*)nativeCancel },
- { "nativeResetCancel", "(IZ)V",
+ { "nativeResetCancel", "(JZ)V",
(void*)nativeResetCancel },
};
diff --git a/core/jni/android_hardware_Camera.cpp b/core/jni/android_hardware_Camera.cpp
index 09d8d0f3de2b..58b61baa4318 100644
--- a/core/jni/android_hardware_Camera.cpp
+++ b/core/jni/android_hardware_Camera.cpp
@@ -113,7 +113,7 @@ sp<Camera> get_native_camera(JNIEnv *env, jobject thiz, JNICameraContext** pCont
{
sp<Camera> camera;
Mutex::Autolock _l(sLock);
- JNICameraContext* context = reinterpret_cast<JNICameraContext*>(env->GetIntField(thiz, fields.context));
+ JNICameraContext* context = reinterpret_cast<JNICameraContext*>(env->GetLongField(thiz, fields.context));
if (context != NULL) {
camera = context->getCamera();
}
@@ -500,7 +500,7 @@ static void android_hardware_Camera_native_setup(JNIEnv *env, jobject thiz,
camera->setListener(context);
// save context in opaque field
- env->SetIntField(thiz, fields.context, (int)context.get());
+ env->SetLongField(thiz, fields.context, (jlong)context.get());
}
// disconnect from camera service
@@ -515,10 +515,10 @@ static void android_hardware_Camera_release(JNIEnv *env, jobject thiz)
sp<Camera> camera;
{
Mutex::Autolock _l(sLock);
- context = reinterpret_cast<JNICameraContext*>(env->GetIntField(thiz, fields.context));
+ context = reinterpret_cast<JNICameraContext*>(env->GetLongField(thiz, fields.context));
// Make sure we do not attempt to callback on a deleted Java object.
- env->SetIntField(thiz, fields.context, 0);
+ env->SetLongField(thiz, fields.context, 0);
}
// clean up if release has not been called before
@@ -627,13 +627,13 @@ static void android_hardware_Camera_stopPreview(JNIEnv *env, jobject thiz)
c->stopPreview();
}
-static bool android_hardware_Camera_previewEnabled(JNIEnv *env, jobject thiz)
+static jboolean android_hardware_Camera_previewEnabled(JNIEnv *env, jobject thiz)
{
ALOGV("previewEnabled");
sp<Camera> c = get_native_camera(env, thiz, NULL);
- if (c == 0) return false;
+ if (c == 0) return JNI_FALSE;
- return c->previewEnabled();
+ return c->previewEnabled() ? JNI_TRUE : JNI_FALSE;
}
static void android_hardware_Camera_setHasPreviewCallback(JNIEnv *env, jobject thiz, jboolean installed, jboolean manualBuffer)
@@ -651,10 +651,10 @@ static void android_hardware_Camera_setHasPreviewCallback(JNIEnv *env, jobject t
context->setCallbackMode(env, installed, manualBuffer);
}
-static void android_hardware_Camera_addCallbackBuffer(JNIEnv *env, jobject thiz, jbyteArray bytes, int msgType) {
+static void android_hardware_Camera_addCallbackBuffer(JNIEnv *env, jobject thiz, jbyteArray bytes, jint msgType) {
ALOGV("addCallbackBuffer: 0x%x", msgType);
- JNICameraContext* context = reinterpret_cast<JNICameraContext*>(env->GetIntField(thiz, fields.context));
+ JNICameraContext* context = reinterpret_cast<JNICameraContext*>(env->GetLongField(thiz, fields.context));
if (context != NULL) {
context->addCallbackBuffer(env, bytes, msgType);
@@ -685,7 +685,7 @@ static void android_hardware_Camera_cancelAutoFocus(JNIEnv *env, jobject thiz)
}
}
-static void android_hardware_Camera_takePicture(JNIEnv *env, jobject thiz, int msgType)
+static void android_hardware_Camera_takePicture(JNIEnv *env, jobject thiz, jint msgType)
{
ALOGV("takePicture");
JNICameraContext* context;
@@ -999,7 +999,7 @@ static int find_fields(JNIEnv *env, field *fields, int count)
int register_android_hardware_Camera(JNIEnv *env)
{
field fields_to_find[] = {
- { "android/hardware/Camera", "mNativeContext", "I", &fields.context },
+ { "android/hardware/Camera", "mNativeContext", "J", &fields.context },
{ "android/hardware/Camera$CameraInfo", "facing", "I", &fields.facing },
{ "android/hardware/Camera$CameraInfo", "orientation", "I", &fields.orientation },
{ "android/hardware/Camera$CameraInfo", "canDisableShutterSound", "Z",
diff --git a/core/jni/android_hardware_SensorManager.cpp b/core/jni/android_hardware_SensorManager.cpp
index 793d1bf93a99..24e0b0a5b9a4 100644
--- a/core/jni/android_hardware_SensorManager.cpp
+++ b/core/jni/android_hardware_SensorManager.cpp
@@ -187,7 +187,7 @@ private:
}
};
-static jint nativeInitSensorEventQueue(JNIEnv *env, jclass clazz, jobject eventQ, jobject msgQ, jfloatArray scratch) {
+static jlong nativeInitSensorEventQueue(JNIEnv *env, jclass clazz, jobject eventQ, jobject msgQ, jfloatArray scratch) {
SensorManager& mgr(SensorManager::getInstance());
sp<SensorEventQueue> queue(mgr.createEventQueue());
@@ -199,28 +199,28 @@ static jint nativeInitSensorEventQueue(JNIEnv *env, jclass clazz, jobject eventQ
sp<Receiver> receiver = new Receiver(queue, messageQueue, eventQ, scratch);
receiver->incStrong((void*)nativeInitSensorEventQueue);
- return jint(receiver.get());
+ return jlong(receiver.get());
}
-static jint nativeEnableSensor(JNIEnv *env, jclass clazz, jint eventQ, jint handle, jint rate_us,
+static jint nativeEnableSensor(JNIEnv *env, jclass clazz, jlong eventQ, jint handle, jint rate_us,
jint maxBatchReportLatency, jint reservedFlags) {
sp<Receiver> receiver(reinterpret_cast<Receiver *>(eventQ));
return receiver->getSensorEventQueue()->enableSensor(handle, rate_us, maxBatchReportLatency,
reservedFlags);
}
-static jint nativeDisableSensor(JNIEnv *env, jclass clazz, jint eventQ, jint handle) {
+static jint nativeDisableSensor(JNIEnv *env, jclass clazz, jlong eventQ, jint handle) {
sp<Receiver> receiver(reinterpret_cast<Receiver *>(eventQ));
return receiver->getSensorEventQueue()->disableSensor(handle);
}
-static void nativeDestroySensorEventQueue(JNIEnv *env, jclass clazz, jint eventQ, jint handle) {
+static void nativeDestroySensorEventQueue(JNIEnv *env, jclass clazz, jlong eventQ, jint handle) {
sp<Receiver> receiver(reinterpret_cast<Receiver *>(eventQ));
receiver->destroy();
receiver->decStrong((void*)nativeInitSensorEventQueue);
}
-static jint nativeFlushSensor(JNIEnv *env, jclass clazz, jint eventQ) {
+static jint nativeFlushSensor(JNIEnv *env, jclass clazz, jlong eventQ) {
sp<Receiver> receiver(reinterpret_cast<Receiver *>(eventQ));
return receiver->getSensorEventQueue()->flush();
}
@@ -239,23 +239,23 @@ static JNINativeMethod gSystemSensorManagerMethods[] = {
static JNINativeMethod gBaseEventQueueMethods[] = {
{"nativeInitBaseEventQueue",
- "(Landroid/hardware/SystemSensorManager$BaseEventQueue;Landroid/os/MessageQueue;[F)I",
+ "(Landroid/hardware/SystemSensorManager$BaseEventQueue;Landroid/os/MessageQueue;[F)J",
(void*)nativeInitSensorEventQueue },
{"nativeEnableSensor",
- "(IIIII)I",
+ "(JIIII)I",
(void*)nativeEnableSensor },
{"nativeDisableSensor",
- "(II)I",
+ "(JI)I",
(void*)nativeDisableSensor },
{"nativeDestroySensorEventQueue",
- "(I)V",
+ "(J)V",
(void*)nativeDestroySensorEventQueue },
{"nativeFlushSensor",
- "(I)I",
+ "(J)I",
(void*)nativeFlushSensor },
};
diff --git a/core/jni/android_hardware_UsbDeviceConnection.cpp b/core/jni/android_hardware_UsbDeviceConnection.cpp
index cea5bbf92656..c10b963f578f 100644
--- a/core/jni/android_hardware_UsbDeviceConnection.cpp
+++ b/core/jni/android_hardware_UsbDeviceConnection.cpp
@@ -35,7 +35,7 @@ static jfieldID field_context;
struct usb_device* get_device_from_object(JNIEnv* env, jobject connection)
{
- return (struct usb_device*)env->GetIntField(connection, field_context);
+ return (struct usb_device*)env->GetLongField(connection, field_context);
}
static jboolean
@@ -46,19 +46,19 @@ android_hardware_UsbDeviceConnection_open(JNIEnv *env, jobject thiz, jstring dev
// duplicate the file descriptor, since ParcelFileDescriptor will eventually close its copy
fd = dup(fd);
if (fd < 0)
- return false;
+ return JNI_FALSE;
const char *deviceNameStr = env->GetStringUTFChars(deviceName, NULL);
struct usb_device* device = usb_device_new(deviceNameStr, fd);
if (device) {
- env->SetIntField(thiz, field_context, (int)device);
+ env->SetLongField(thiz, field_context, (jlong)device);
} else {
ALOGE("usb_device_open failed for %s", deviceNameStr);
close(fd);
}
env->ReleaseStringUTFChars(deviceName, deviceNameStr);
- return (device != NULL);
+ return (device != NULL) ? JNI_TRUE : JNI_FALSE;
}
static void
@@ -68,7 +68,7 @@ android_hardware_UsbDeviceConnection_close(JNIEnv *env, jobject thiz)
struct usb_device* device = get_device_from_object(env, thiz);
if (device) {
usb_device_close(device);
- env->SetIntField(thiz, field_context, 0);
+ env->SetLongField(thiz, field_context, 0);
}
}
@@ -106,12 +106,12 @@ android_hardware_UsbDeviceConnection_get_desc(JNIEnv *env, jobject thiz)
static jboolean
android_hardware_UsbDeviceConnection_claim_interface(JNIEnv *env, jobject thiz,
- int interfaceID, jboolean force)
+ jint interfaceID, jboolean force)
{
struct usb_device* device = get_device_from_object(env, thiz);
if (!device) {
ALOGE("device is closed in native_claim_interface");
- return -1;
+ return JNI_FALSE;
}
int ret = usb_device_claim_interface(device, interfaceID);
@@ -120,11 +120,11 @@ android_hardware_UsbDeviceConnection_claim_interface(JNIEnv *env, jobject thiz,
usb_device_connect_kernel_driver(device, interfaceID, false);
ret = usb_device_claim_interface(device, interfaceID);
}
- return ret == 0;
+ return (ret == 0) ? JNI_TRUE : JNI_FALSE;
}
static jint
-android_hardware_UsbDeviceConnection_release_interface(JNIEnv *env, jobject thiz, int interfaceID)
+android_hardware_UsbDeviceConnection_release_interface(JNIEnv *env, jobject thiz, jint interfaceID)
{
struct usb_device* device = get_device_from_object(env, thiz);
if (!device) {
@@ -246,7 +246,7 @@ int register_android_hardware_UsbDeviceConnection(JNIEnv *env)
ALOGE("Can't find android/hardware/usb/UsbDeviceConnection");
return -1;
}
- field_context = env->GetFieldID(clazz, "mNativeContext", "I");
+ field_context = env->GetFieldID(clazz, "mNativeContext", "J");
if (field_context == NULL) {
ALOGE("Can't find UsbDeviceConnection.mNativeContext");
return -1;
diff --git a/core/jni/android_hardware_UsbRequest.cpp b/core/jni/android_hardware_UsbRequest.cpp
index 32d5135055ae..01eaec48e663 100644
--- a/core/jni/android_hardware_UsbRequest.cpp
+++ b/core/jni/android_hardware_UsbRequest.cpp
@@ -32,7 +32,7 @@ static jfieldID field_context;
struct usb_request* get_request_from_object(JNIEnv* env, jobject java_request)
{
- return (struct usb_request*)env->GetIntField(java_request, field_context);
+ return (struct usb_request*)env->GetLongField(java_request, field_context);
}
// in android_hardware_UsbDeviceConnection.cpp
@@ -61,7 +61,7 @@ android_hardware_UsbRequest_init(JNIEnv *env, jobject thiz, jobject java_device,
struct usb_request* request = usb_request_new(device, &desc);
if (request)
- env->SetIntField(thiz, field_context, (int)request);
+ env->SetLongField(thiz, field_context, (jlong)request);
return (request != NULL);
}
@@ -72,7 +72,7 @@ android_hardware_UsbRequest_close(JNIEnv *env, jobject thiz)
struct usb_request* request = get_request_from_object(env, thiz);
if (request) {
usb_request_free(request);
- env->SetIntField(thiz, field_context, 0);
+ env->SetLongField(thiz, field_context, 0);
}
}
@@ -114,14 +114,14 @@ android_hardware_UsbRequest_queue_array(JNIEnv *env, jobject thiz,
}
}
-static int
+static jint
android_hardware_UsbRequest_dequeue_array(JNIEnv *env, jobject thiz,
jbyteArray buffer, jint length, jboolean out)
{
struct usb_request* request = get_request_from_object(env, thiz);
if (!request) {
ALOGE("request is closed in native_dequeue");
- return -1;
+ return (jint) -1;
}
if (buffer && length && request->buffer && !out) {
@@ -130,7 +130,7 @@ android_hardware_UsbRequest_dequeue_array(JNIEnv *env, jobject thiz,
}
free(request->buffer);
env->DeleteGlobalRef((jobject)request->client_data);
- return request->actual_length;
+ return (jint) request->actual_length;
}
static jboolean
@@ -164,17 +164,17 @@ android_hardware_UsbRequest_queue_direct(JNIEnv *env, jobject thiz,
}
}
-static int
+static jint
android_hardware_UsbRequest_dequeue_direct(JNIEnv *env, jobject thiz)
{
struct usb_request* request = get_request_from_object(env, thiz);
if (!request) {
ALOGE("request is closed in native_dequeue");
- return -1;
+ return (jint) -1;
}
// all we need to do is delete our global ref
env->DeleteGlobalRef((jobject)request->client_data);
- return request->actual_length;
+ return (jint) request->actual_length;
}
static jboolean
@@ -207,7 +207,7 @@ int register_android_hardware_UsbRequest(JNIEnv *env)
ALOGE("Can't find android/hardware/usb/UsbRequest");
return -1;
}
- field_context = env->GetFieldID(clazz, "mNativeContext", "I");
+ field_context = env->GetFieldID(clazz, "mNativeContext", "J");
if (field_context == NULL) {
ALOGE("Can't find UsbRequest.mNativeContext");
return -1;
diff --git a/core/jni/android_media_AudioRecord.cpp b/core/jni/android_media_AudioRecord.cpp
index 1c43cc5090e4..b22668b83d5f 100644
--- a/core/jni/android_media_AudioRecord.cpp
+++ b/core/jni/android_media_AudioRecord.cpp
@@ -136,7 +136,7 @@ static sp<AudioRecord> getAudioRecord(JNIEnv* env, jobject thiz)
{
Mutex::Autolock l(sLock);
AudioRecord* const ar =
- (AudioRecord*)env->GetIntField(thiz, javaAudioRecordFields.nativeRecorderInJavaObj);
+ (AudioRecord*)env->GetLongField(thiz, javaAudioRecordFields.nativeRecorderInJavaObj);
return sp<AudioRecord>(ar);
}
@@ -144,19 +144,19 @@ static sp<AudioRecord> setAudioRecord(JNIEnv* env, jobject thiz, const sp<AudioR
{
Mutex::Autolock l(sLock);
sp<AudioRecord> old =
- (AudioRecord*)env->GetIntField(thiz, javaAudioRecordFields.nativeRecorderInJavaObj);
+ (AudioRecord*)env->GetLongField(thiz, javaAudioRecordFields.nativeRecorderInJavaObj);
if (ar.get()) {
ar->incStrong((void*)setAudioRecord);
}
if (old != 0) {
old->decStrong((void*)setAudioRecord);
}
- env->SetIntField(thiz, javaAudioRecordFields.nativeRecorderInJavaObj, (int)ar.get());
+ env->SetLongField(thiz, javaAudioRecordFields.nativeRecorderInJavaObj, (jlong)ar.get());
return old;
}
// ----------------------------------------------------------------------------
-static int
+static jint
android_media_AudioRecord_setup(JNIEnv *env, jobject thiz, jobject weak_this,
jint source, jint sampleRateInHertz, jint channelMask,
// Java channel masks map directly to the native definition
@@ -168,7 +168,7 @@ android_media_AudioRecord_setup(JNIEnv *env, jobject thiz, jobject weak_this,
if (!audio_is_input_channel(channelMask)) {
ALOGE("Error creating AudioRecord: channel mask %#x is not valid.", channelMask);
- return AUDIORECORD_ERROR_SETUP_INVALIDCHANNELMASK;
+ return (jint) AUDIORECORD_ERROR_SETUP_INVALIDCHANNELMASK;
}
uint32_t nbChannels = popcount(channelMask);
@@ -176,7 +176,7 @@ android_media_AudioRecord_setup(JNIEnv *env, jobject thiz, jobject weak_this,
if ((audioFormat != ENCODING_PCM_16BIT)
&& (audioFormat != ENCODING_PCM_8BIT)) {
ALOGE("Error creating AudioRecord: unsupported audio format.");
- return AUDIORECORD_ERROR_SETUP_INVALIDFORMAT;
+ return (jint) AUDIORECORD_ERROR_SETUP_INVALIDFORMAT;
}
int bytesPerSample = audioFormat == ENCODING_PCM_16BIT ? 2 : 1;
@@ -185,31 +185,31 @@ android_media_AudioRecord_setup(JNIEnv *env, jobject thiz, jobject weak_this,
if (buffSizeInBytes == 0) {
ALOGE("Error creating AudioRecord: frameCount is 0.");
- return AUDIORECORD_ERROR_SETUP_ZEROFRAMECOUNT;
+ return (jint) AUDIORECORD_ERROR_SETUP_ZEROFRAMECOUNT;
}
int frameSize = nbChannels * bytesPerSample;
size_t frameCount = buffSizeInBytes / frameSize;
if ((uint32_t(source) >= AUDIO_SOURCE_CNT) && (uint32_t(source) != AUDIO_SOURCE_HOTWORD)) {
ALOGE("Error creating AudioRecord: unknown source.");
- return AUDIORECORD_ERROR_SETUP_INVALIDSOURCE;
+ return (jint) AUDIORECORD_ERROR_SETUP_INVALIDSOURCE;
}
jclass clazz = env->GetObjectClass(thiz);
if (clazz == NULL) {
ALOGE("Can't find %s when setting up callback.", kClassPathName);
- return AUDIORECORD_ERROR_SETUP_NATIVEINITFAILED;
+ return (jint) AUDIORECORD_ERROR_SETUP_NATIVEINITFAILED;
}
if (jSession == NULL) {
ALOGE("Error creating AudioRecord: invalid session ID pointer");
- return AUDIORECORD_ERROR;
+ return (jint) AUDIORECORD_ERROR;
}
jint* nSession = (jint *) env->GetPrimitiveArrayCritical(jSession, NULL);
if (nSession == NULL) {
ALOGE("Error creating AudioRecord: Error retrieving session id pointer");
- return AUDIORECORD_ERROR;
+ return (jint) AUDIORECORD_ERROR;
}
int sessionId = nSession[0];
env->ReleasePrimitiveArrayCritical(jSession, nSession, 0);
@@ -262,33 +262,33 @@ android_media_AudioRecord_setup(JNIEnv *env, jobject thiz, jobject weak_this,
// save our newly created callback information in the "nativeCallbackCookie" field
// of the Java object (in mNativeCallbackCookie) so we can free the memory in finalize()
- env->SetIntField(thiz, javaAudioRecordFields.nativeCallbackCookie, (int)lpCallbackData);
+ env->SetLongField(thiz, javaAudioRecordFields.nativeCallbackCookie, (jlong)lpCallbackData);
- return AUDIORECORD_SUCCESS;
+ return (jint) AUDIORECORD_SUCCESS;
// failure:
native_init_failure:
env->DeleteGlobalRef(lpCallbackData->audioRecord_class);
env->DeleteGlobalRef(lpCallbackData->audioRecord_ref);
delete lpCallbackData;
- env->SetIntField(thiz, javaAudioRecordFields.nativeCallbackCookie, 0);
+ env->SetLongField(thiz, javaAudioRecordFields.nativeCallbackCookie, 0);
- return AUDIORECORD_ERROR_SETUP_NATIVEINITFAILED;
+ return (jint) AUDIORECORD_ERROR_SETUP_NATIVEINITFAILED;
}
// ----------------------------------------------------------------------------
-static int
+static jint
android_media_AudioRecord_start(JNIEnv *env, jobject thiz, jint event, jint triggerSession)
{
sp<AudioRecord> lpRecorder = getAudioRecord(env, thiz);
if (lpRecorder == NULL ) {
jniThrowException(env, "java/lang/IllegalStateException", NULL);
- return AUDIORECORD_ERROR;
+ return (jint) AUDIORECORD_ERROR;
}
- return android_media_translateRecorderErrorCode(
+ return (jint) android_media_translateRecorderErrorCode(
lpRecorder->start((AudioSystem::sync_event_t)event, triggerSession));
}
@@ -319,12 +319,12 @@ static void android_media_AudioRecord_release(JNIEnv *env, jobject thiz) {
ALOGV("About to delete lpRecorder: %x\n", (int)lpRecorder.get());
lpRecorder->stop();
- audiorecord_callback_cookie *lpCookie = (audiorecord_callback_cookie *)env->GetIntField(
+ audiorecord_callback_cookie *lpCookie = (audiorecord_callback_cookie *)env->GetLongField(
thiz, javaAudioRecordFields.nativeCallbackCookie);
// reset the native resources in the Java object so any attempt to access
// them after a call to release fails.
- env->SetIntField(thiz, javaAudioRecordFields.nativeCallbackCookie, 0);
+ env->SetLongField(thiz, javaAudioRecordFields.nativeCallbackCookie, 0);
// delete the callback information
if (lpCookie) {
@@ -585,7 +585,7 @@ int register_android_media_AudioRecord(JNIEnv *env)
// mNativeRecorderInJavaObj
javaAudioRecordFields.nativeRecorderInJavaObj =
env->GetFieldID(audioRecordClass,
- JAVA_NATIVERECORDERINJAVAOBJ_FIELD_NAME, "I");
+ JAVA_NATIVERECORDERINJAVAOBJ_FIELD_NAME, "J");
if (javaAudioRecordFields.nativeRecorderInJavaObj == NULL) {
ALOGE("Can't find AudioRecord.%s", JAVA_NATIVERECORDERINJAVAOBJ_FIELD_NAME);
return -1;
@@ -593,7 +593,7 @@ int register_android_media_AudioRecord(JNIEnv *env)
// mNativeCallbackCookie
javaAudioRecordFields.nativeCallbackCookie = env->GetFieldID(
audioRecordClass,
- JAVA_NATIVECALLBACKINFO_FIELD_NAME, "I");
+ JAVA_NATIVECALLBACKINFO_FIELD_NAME, "J");
if (javaAudioRecordFields.nativeCallbackCookie == NULL) {
ALOGE("Can't find AudioRecord.%s", JAVA_NATIVECALLBACKINFO_FIELD_NAME);
return -1;
diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp
index 7d99464d0bbb..a19d1119d93f 100644
--- a/core/jni/android_media_AudioSystem.cpp
+++ b/core/jni/android_media_AudioSystem.cpp
@@ -52,10 +52,10 @@ static int check_AudioSystem_Command(status_t status)
return kAudioStatusError;
}
-static int
+static jint
android_media_AudioSystem_muteMicrophone(JNIEnv *env, jobject thiz, jboolean on)
{
- return check_AudioSystem_Command(AudioSystem::muteMicrophone(on));
+ return (jint) check_AudioSystem_Command(AudioSystem::muteMicrophone(on));
}
static jboolean
@@ -91,7 +91,7 @@ android_media_AudioSystem_isSourceActive(JNIEnv *env, jobject thiz, jint source)
return state;
}
-static int
+static jint
android_media_AudioSystem_setParameters(JNIEnv *env, jobject thiz, jstring keyValuePairs)
{
const jchar* c_keyValuePairs = env->GetStringCritical(keyValuePairs, 0);
@@ -101,7 +101,7 @@ android_media_AudioSystem_setParameters(JNIEnv *env, jobject thiz, jstring keyVa
env->ReleaseStringCritical(keyValuePairs, c_keyValuePairs);
}
int status = check_AudioSystem_Command(AudioSystem::setParameters(0, c_keyValuePairs8));
- return status;
+ return (jint) status;
}
static jstring
@@ -131,7 +131,7 @@ android_media_AudioSystem_error_callback(status_t err)
check_AudioSystem_Command(err));
}
-static int
+static jint
android_media_AudioSystem_setDeviceConnectionState(JNIEnv *env, jobject thiz, jint device, jint state, jstring device_address)
{
const char *c_address = env->GetStringUTFChars(device_address, NULL);
@@ -139,60 +139,60 @@ android_media_AudioSystem_setDeviceConnectionState(JNIEnv *env, jobject thiz, ji
static_cast <audio_policy_dev_state_t>(state),
c_address));
env->ReleaseStringUTFChars(device_address, c_address);
- return status;
+ return (jint) status;
}
-static int
+static jint
android_media_AudioSystem_getDeviceConnectionState(JNIEnv *env, jobject thiz, jint device, jstring device_address)
{
const char *c_address = env->GetStringUTFChars(device_address, NULL);
int state = static_cast <int>(AudioSystem::getDeviceConnectionState(static_cast <audio_devices_t>(device),
c_address));
env->ReleaseStringUTFChars(device_address, c_address);
- return state;
+ return (jint) state;
}
-static int
+static jint
android_media_AudioSystem_setPhoneState(JNIEnv *env, jobject thiz, jint state)
{
- return check_AudioSystem_Command(AudioSystem::setPhoneState((audio_mode_t) state));
+ return (jint) check_AudioSystem_Command(AudioSystem::setPhoneState((audio_mode_t) state));
}
-static int
+static jint
android_media_AudioSystem_setForceUse(JNIEnv *env, jobject thiz, jint usage, jint config)
{
- return check_AudioSystem_Command(AudioSystem::setForceUse(static_cast <audio_policy_force_use_t>(usage),
+ return (jint) check_AudioSystem_Command(AudioSystem::setForceUse(static_cast <audio_policy_force_use_t>(usage),
static_cast <audio_policy_forced_cfg_t>(config)));
}
-static int
+static jint
android_media_AudioSystem_getForceUse(JNIEnv *env, jobject thiz, jint usage)
{
- return static_cast <int>(AudioSystem::getForceUse(static_cast <audio_policy_force_use_t>(usage)));
+ return static_cast <jint>(AudioSystem::getForceUse(static_cast <audio_policy_force_use_t>(usage)));
}
-static int
+static jint
android_media_AudioSystem_initStreamVolume(JNIEnv *env, jobject thiz, jint stream, jint indexMin, jint indexMax)
{
- return check_AudioSystem_Command(AudioSystem::initStreamVolume(static_cast <audio_stream_type_t>(stream),
+ return (jint) check_AudioSystem_Command(AudioSystem::initStreamVolume(static_cast <audio_stream_type_t>(stream),
indexMin,
indexMax));
}
-static int
+static jint
android_media_AudioSystem_setStreamVolumeIndex(JNIEnv *env,
jobject thiz,
jint stream,
jint index,
jint device)
{
- return check_AudioSystem_Command(
+ return (jint) check_AudioSystem_Command(
AudioSystem::setStreamVolumeIndex(static_cast <audio_stream_type_t>(stream),
index,
(audio_devices_t)device));
}
-static int
+static jint
android_media_AudioSystem_getStreamVolumeIndex(JNIEnv *env,
jobject thiz,
jint stream,
@@ -205,13 +205,13 @@ android_media_AudioSystem_getStreamVolumeIndex(JNIEnv *env,
!= NO_ERROR) {
index = -1;
}
- return index;
+ return (jint) index;
}
-static int
+static jint
android_media_AudioSystem_setMasterVolume(JNIEnv *env, jobject thiz, jfloat value)
{
- return check_AudioSystem_Command(AudioSystem::setMasterVolume(value));
+ return (jint) check_AudioSystem_Command(AudioSystem::setMasterVolume(value));
}
static jfloat
@@ -224,10 +224,10 @@ android_media_AudioSystem_getMasterVolume(JNIEnv *env, jobject thiz)
return value;
}
-static int
+static jint
android_media_AudioSystem_setMasterMute(JNIEnv *env, jobject thiz, jboolean mute)
{
- return check_AudioSystem_Command(AudioSystem::setMasterMute(mute));
+ return (jint) check_AudioSystem_Command(AudioSystem::setMasterMute(mute));
}
static jfloat
@@ -275,10 +275,10 @@ android_media_AudioSystem_setLowRamDevice(JNIEnv *env, jobject clazz, jboolean i
return (jint) AudioSystem::setLowRamDevice((bool) isLowRamDevice);
}
-static int
+static jint
android_media_AudioSystem_checkAudioFlinger(JNIEnv *env, jobject clazz)
{
- return check_AudioSystem_Command(AudioSystem::checkAudioFlinger());
+ return (jint) check_AudioSystem_Command(AudioSystem::checkAudioFlinger());
}
// ----------------------------------------------------------------------------
diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp
index 225bf06654a2..dc8d9d8f4ae1 100644
--- a/core/jni/android_media_AudioTrack.cpp
+++ b/core/jni/android_media_AudioTrack.cpp
@@ -174,7 +174,7 @@ static sp<AudioTrack> getAudioTrack(JNIEnv* env, jobject thiz)
{
Mutex::Autolock l(sLock);
AudioTrack* const at =
- (AudioTrack*)env->GetIntField(thiz, javaAudioTrackFields.nativeTrackInJavaObj);
+ (AudioTrack*)env->GetLongField(thiz, javaAudioTrackFields.nativeTrackInJavaObj);
return sp<AudioTrack>(at);
}
@@ -182,19 +182,19 @@ static sp<AudioTrack> setAudioTrack(JNIEnv* env, jobject thiz, const sp<AudioTra
{
Mutex::Autolock l(sLock);
sp<AudioTrack> old =
- (AudioTrack*)env->GetIntField(thiz, javaAudioTrackFields.nativeTrackInJavaObj);
+ (AudioTrack*)env->GetLongField(thiz, javaAudioTrackFields.nativeTrackInJavaObj);
if (at.get()) {
at->incStrong((void*)setAudioTrack);
}
if (old != 0) {
old->decStrong((void*)setAudioTrack);
}
- env->SetIntField(thiz, javaAudioTrackFields.nativeTrackInJavaObj, (int)at.get());
+ env->SetLongField(thiz, javaAudioTrackFields.nativeTrackInJavaObj, (jlong)at.get());
return old;
}
// ----------------------------------------------------------------------------
-static int
+static jint
android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_this,
jint streamType, jint sampleRateInHertz, jint javaChannelMask,
jint audioFormat, jint buffSizeInBytes, jint memoryMode, jintArray jSession)
@@ -206,11 +206,11 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
if (AudioSystem::getOutputFrameCount(&afFrameCount, (audio_stream_type_t) streamType) != NO_ERROR) {
ALOGE("Error creating AudioTrack: Could not get AudioSystem frame count.");
- return AUDIOTRACK_ERROR_SETUP_AUDIOSYSTEM;
+ return (jint) AUDIOTRACK_ERROR_SETUP_AUDIOSYSTEM;
}
if (AudioSystem::getOutputSamplingRate(&afSampleRate, (audio_stream_type_t) streamType) != NO_ERROR) {
ALOGE("Error creating AudioTrack: Could not get AudioSystem sampling rate.");
- return AUDIOTRACK_ERROR_SETUP_AUDIOSYSTEM;
+ return (jint) AUDIOTRACK_ERROR_SETUP_AUDIOSYSTEM;
}
// Java channel masks don't map directly to the native definition, but it's a simple shift
@@ -219,7 +219,7 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
if (!audio_is_output_channel(nativeChannelMask)) {
ALOGE("Error creating AudioTrack: invalid channel mask %#x.", javaChannelMask);
- return AUDIOTRACK_ERROR_SETUP_INVALIDCHANNELMASK;
+ return (jint) AUDIOTRACK_ERROR_SETUP_INVALIDCHANNELMASK;
}
int nbChannels = popcount(nativeChannelMask);
@@ -239,7 +239,7 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
break;
default:
ALOGE("Error creating AudioTrack: unknown stream type.");
- return AUDIOTRACK_ERROR_SETUP_INVALIDSTREAMTYPE;
+ return (jint) AUDIOTRACK_ERROR_SETUP_INVALIDSTREAMTYPE;
}
// check the format.
@@ -247,7 +247,7 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
if ((audioFormat != ENCODING_PCM_16BIT) && (audioFormat != ENCODING_PCM_8BIT)) {
ALOGE("Error creating AudioTrack: unsupported audio format.");
- return AUDIOTRACK_ERROR_SETUP_INVALIDFORMAT;
+ return (jint) AUDIOTRACK_ERROR_SETUP_INVALIDFORMAT;
}
// for the moment 8bitPCM in MODE_STATIC is not supported natively in the AudioTrack C++ class
@@ -272,18 +272,18 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
jclass clazz = env->GetObjectClass(thiz);
if (clazz == NULL) {
ALOGE("Can't find %s when setting up callback.", kClassPathName);
- return AUDIOTRACK_ERROR_SETUP_NATIVEINITFAILED;
+ return (jint) AUDIOTRACK_ERROR_SETUP_NATIVEINITFAILED;
}
if (jSession == NULL) {
ALOGE("Error creating AudioTrack: invalid session ID pointer");
- return AUDIOTRACK_ERROR;
+ return (jint) AUDIOTRACK_ERROR;
}
jint* nSession = (jint *) env->GetPrimitiveArrayCritical(jSession, NULL);
if (nSession == NULL) {
ALOGE("Error creating AudioTrack: Error retrieving session id pointer");
- return AUDIOTRACK_ERROR;
+ return (jint) AUDIOTRACK_ERROR;
}
int sessionId = nSession[0];
env->ReleasePrimitiveArrayCritical(jSession, nSession, 0);
@@ -370,10 +370,10 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
setAudioTrack(env, thiz, lpTrack);
// save the JNI resources so we can free them later
- //ALOGV("storing lpJniStorage: %x\n", (int)lpJniStorage);
- env->SetIntField(thiz, javaAudioTrackFields.jniData, (int)lpJniStorage);
+ //ALOGV("storing lpJniStorage: %x\n", (long)lpJniStorage);
+ env->SetLongField(thiz, javaAudioTrackFields.jniData, (jlong)lpJniStorage);
- return AUDIOTRACK_SUCCESS;
+ return (jint) AUDIOTRACK_SUCCESS;
// failures:
native_init_failure:
@@ -383,9 +383,9 @@ native_init_failure:
env->DeleteGlobalRef(lpJniStorage->mCallbackData.audioTrack_class);
env->DeleteGlobalRef(lpJniStorage->mCallbackData.audioTrack_ref);
delete lpJniStorage;
- env->SetIntField(thiz, javaAudioTrackFields.jniData, 0);
+ env->SetLongField(thiz, javaAudioTrackFields.jniData, 0);
- return AUDIOTRACK_ERROR_SETUP_NATIVEINITFAILED;
+ return (jint) AUDIOTRACK_ERROR_SETUP_NATIVEINITFAILED;
}
@@ -474,11 +474,11 @@ static void android_media_AudioTrack_native_release(JNIEnv *env, jobject thiz)
lpTrack->stop();
// delete the JNI data
- AudioTrackJniStorage* pJniStorage = (AudioTrackJniStorage *)env->GetIntField(
+ AudioTrackJniStorage* pJniStorage = (AudioTrackJniStorage *)env->GetLongField(
thiz, javaAudioTrackFields.jniData);
// reset the native resources in the Java object so any attempt to access
// them after a call to release fails.
- env->SetIntField(thiz, javaAudioTrackFields.jniData, 0);
+ env->SetLongField(thiz, javaAudioTrackFields.jniData, 0);
if (pJniStorage) {
Mutex::Autolock l(sLock);
@@ -955,7 +955,7 @@ int register_android_media_AudioTrack(JNIEnv *env)
// nativeTrackInJavaObj
javaAudioTrackFields.nativeTrackInJavaObj = env->GetFieldID(
audioTrackClass,
- JAVA_NATIVETRACKINJAVAOBJ_FIELD_NAME, "I");
+ JAVA_NATIVETRACKINJAVAOBJ_FIELD_NAME, "J");
if (javaAudioTrackFields.nativeTrackInJavaObj == NULL) {
ALOGE("Can't find AudioTrack.%s", JAVA_NATIVETRACKINJAVAOBJ_FIELD_NAME);
return -1;
@@ -963,7 +963,7 @@ int register_android_media_AudioTrack(JNIEnv *env)
// jniData;
javaAudioTrackFields.jniData = env->GetFieldID(
audioTrackClass,
- JAVA_JNIDATA_FIELD_NAME, "I");
+ JAVA_JNIDATA_FIELD_NAME, "J");
if (javaAudioTrackFields.jniData == NULL) {
ALOGE("Can't find AudioTrack.%s", JAVA_JNIDATA_FIELD_NAME);
return -1;
diff --git a/core/jni/android_media_JetPlayer.cpp b/core/jni/android_media_JetPlayer.cpp
index 5795aba1cb67..69f57118aa2c 100644
--- a/core/jni/android_media_JetPlayer.cpp
+++ b/core/jni/android_media_JetPlayer.cpp
@@ -87,12 +87,12 @@ android_media_JetPlayer_setup(JNIEnv *env, jobject thiz, jobject weak_this,
if (result==EAS_SUCCESS) {
// save our newly created C++ JetPlayer in the "nativePlayerInJavaObj" field
// of the Java object (in mNativePlayerInJavaObj)
- env->SetIntField(thiz, javaJetPlayerFields.nativePlayerInJavaObj, (int)lpJet);
+ env->SetLongField(thiz, javaJetPlayerFields.nativePlayerInJavaObj, (jlong)lpJet);
return JNI_TRUE;
} else {
ALOGE("android_media_JetPlayer_setup(): initialization failed with EAS error code %d", (int)result);
delete lpJet;
- env->SetIntField(weak_this, javaJetPlayerFields.nativePlayerInJavaObj, 0);
+ env->SetLongField(weak_this, javaJetPlayerFields.nativePlayerInJavaObj, 0);
return JNI_FALSE;
}
}
@@ -103,7 +103,7 @@ static void
android_media_JetPlayer_finalize(JNIEnv *env, jobject thiz)
{
ALOGV("android_media_JetPlayer_finalize(): entering.");
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
+ JetPlayer *lpJet = (JetPlayer *)env->GetLongField(
thiz, javaJetPlayerFields.nativePlayerInJavaObj);
if (lpJet != NULL) {
lpJet->release();
@@ -119,7 +119,7 @@ static void
android_media_JetPlayer_release(JNIEnv *env, jobject thiz)
{
android_media_JetPlayer_finalize(env, thiz);
- env->SetIntField(thiz, javaJetPlayerFields.nativePlayerInJavaObj, 0);
+ env->SetLongField(thiz, javaJetPlayerFields.nativePlayerInJavaObj, 0);
ALOGV("android_media_JetPlayer_release() done");
}
@@ -128,7 +128,7 @@ android_media_JetPlayer_release(JNIEnv *env, jobject thiz)
static jboolean
android_media_JetPlayer_loadFromFile(JNIEnv *env, jobject thiz, jstring path)
{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
+ JetPlayer *lpJet = (JetPlayer *)env->GetLongField(
thiz, javaJetPlayerFields.nativePlayerInJavaObj);
if (lpJet == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
@@ -165,7 +165,7 @@ static jboolean
android_media_JetPlayer_loadFromFileD(JNIEnv *env, jobject thiz,
jobject fileDescriptor, jlong offset, jlong length)
{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
+ JetPlayer *lpJet = (JetPlayer *)env->GetLongField(
thiz, javaJetPlayerFields.nativePlayerInJavaObj);
if (lpJet == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
@@ -195,7 +195,7 @@ android_media_JetPlayer_loadFromFileD(JNIEnv *env, jobject thiz,
static jboolean
android_media_JetPlayer_closeFile(JNIEnv *env, jobject thiz)
{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
+ JetPlayer *lpJet = (JetPlayer *)env->GetLongField(
thiz, javaJetPlayerFields.nativePlayerInJavaObj);
if (lpJet == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
@@ -217,7 +217,7 @@ android_media_JetPlayer_closeFile(JNIEnv *env, jobject thiz)
static jboolean
android_media_JetPlayer_play(JNIEnv *env, jobject thiz)
{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
+ JetPlayer *lpJet = (JetPlayer *)env->GetLongField(
thiz, javaJetPlayerFields.nativePlayerInJavaObj);
if (lpJet == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
@@ -241,7 +241,7 @@ android_media_JetPlayer_play(JNIEnv *env, jobject thiz)
static jboolean
android_media_JetPlayer_pause(JNIEnv *env, jobject thiz)
{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
+ JetPlayer *lpJet = (JetPlayer *)env->GetLongField(
thiz, javaJetPlayerFields.nativePlayerInJavaObj);
if (lpJet == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
@@ -271,7 +271,7 @@ android_media_JetPlayer_queueSegment(JNIEnv *env, jobject thiz,
jint segmentNum, jint libNum, jint repeatCount, jint transpose, jint muteFlags,
jbyte userID)
{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
+ JetPlayer *lpJet = (JetPlayer *)env->GetLongField(
thiz, javaJetPlayerFields.nativePlayerInJavaObj);
if (lpJet == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
@@ -298,7 +298,7 @@ android_media_JetPlayer_queueSegmentMuteArray(JNIEnv *env, jobject thiz,
jint segmentNum, jint libNum, jint repeatCount, jint transpose, jbooleanArray muteArray,
jbyte userID)
{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
+ JetPlayer *lpJet = (JetPlayer *)env->GetLongField(
thiz, javaJetPlayerFields.nativePlayerInJavaObj);
if (lpJet == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
@@ -344,7 +344,7 @@ static jboolean
android_media_JetPlayer_setMuteFlags(JNIEnv *env, jobject thiz,
jint muteFlags /*unsigned?*/, jboolean bSync)
{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
+ JetPlayer *lpJet = (JetPlayer *)env->GetLongField(
thiz, javaJetPlayerFields.nativePlayerInJavaObj);
if (lpJet == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
@@ -369,7 +369,7 @@ static jboolean
android_media_JetPlayer_setMuteArray(JNIEnv *env, jobject thiz,
jbooleanArray muteArray, jboolean bSync)
{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
+ JetPlayer *lpJet = (JetPlayer *)env->GetLongField(
thiz, javaJetPlayerFields.nativePlayerInJavaObj);
if (lpJet == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
@@ -415,7 +415,7 @@ static jboolean
android_media_JetPlayer_setMuteFlag(JNIEnv *env, jobject thiz,
jint trackId, jboolean muteFlag, jboolean bSync)
{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
+ JetPlayer *lpJet = (JetPlayer *)env->GetLongField(
thiz, javaJetPlayerFields.nativePlayerInJavaObj);
if (lpJet == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
@@ -441,7 +441,7 @@ android_media_JetPlayer_setMuteFlag(JNIEnv *env, jobject thiz,
static jboolean
android_media_JetPlayer_triggerClip(JNIEnv *env, jobject thiz, jint clipId)
{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
+ JetPlayer *lpJet = (JetPlayer *)env->GetLongField(
thiz, javaJetPlayerFields.nativePlayerInJavaObj);
if (lpJet == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
@@ -466,7 +466,7 @@ android_media_JetPlayer_triggerClip(JNIEnv *env, jobject thiz, jint clipId)
static jboolean
android_media_JetPlayer_clearQueue(JNIEnv *env, jobject thiz)
{
- JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
+ JetPlayer *lpJet = (JetPlayer *)env->GetLongField(
thiz, javaJetPlayerFields.nativePlayerInJavaObj);
if (lpJet == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
@@ -533,7 +533,7 @@ int register_android_media_JetPlayer(JNIEnv *env)
// Get the mNativePlayerInJavaObj variable field
javaJetPlayerFields.nativePlayerInJavaObj = env->GetFieldID(
jetPlayerClass,
- JAVA_NATIVEJETPLAYERINJAVAOBJ_FIELD_NAME, "I");
+ JAVA_NATIVEJETPLAYERINJAVAOBJ_FIELD_NAME, "J");
if (javaJetPlayerFields.nativePlayerInJavaObj == NULL) {
ALOGE("Can't find JetPlayer.%s", JAVA_NATIVEJETPLAYERINJAVAOBJ_FIELD_NAME);
return -1;
diff --git a/core/jni/android_media_RemoteDisplay.cpp b/core/jni/android_media_RemoteDisplay.cpp
index 463be5e74f25..1cd3fbbadcb2 100644
--- a/core/jni/android_media_RemoteDisplay.cpp
+++ b/core/jni/android_media_RemoteDisplay.cpp
@@ -134,7 +134,7 @@ private:
// ----------------------------------------------------------------------------
-static jint nativeListen(JNIEnv* env, jobject remoteDisplayObj, jstring ifaceStr) {
+static jlong nativeListen(JNIEnv* env, jobject remoteDisplayObj, jstring ifaceStr) {
ScopedUtfChars iface(env, ifaceStr);
sp<IServiceManager> sm = defaultServiceManager();
@@ -155,20 +155,20 @@ static jint nativeListen(JNIEnv* env, jobject remoteDisplayObj, jstring ifaceStr
}
NativeRemoteDisplay* wrapper = new NativeRemoteDisplay(display, client);
- return reinterpret_cast<jint>(wrapper);
+ return reinterpret_cast<jlong>(wrapper);
}
-static void nativePause(JNIEnv* env, jobject remoteDisplayObj, jint ptr) {
+static void nativePause(JNIEnv* env, jobject remoteDisplayObj, jlong ptr) {
NativeRemoteDisplay* wrapper = reinterpret_cast<NativeRemoteDisplay*>(ptr);
wrapper->pause();
}
-static void nativeResume(JNIEnv* env, jobject remoteDisplayObj, jint ptr) {
+static void nativeResume(JNIEnv* env, jobject remoteDisplayObj, jlong ptr) {
NativeRemoteDisplay* wrapper = reinterpret_cast<NativeRemoteDisplay*>(ptr);
wrapper->resume();
}
-static void nativeDispose(JNIEnv* env, jobject remoteDisplayObj, jint ptr) {
+static void nativeDispose(JNIEnv* env, jobject remoteDisplayObj, jlong ptr) {
NativeRemoteDisplay* wrapper = reinterpret_cast<NativeRemoteDisplay*>(ptr);
delete wrapper;
}
@@ -176,13 +176,13 @@ static void nativeDispose(JNIEnv* env, jobject remoteDisplayObj, jint ptr) {
// ----------------------------------------------------------------------------
static JNINativeMethod gMethods[] = {
- {"nativeListen", "(Ljava/lang/String;)I",
+ {"nativeListen", "(Ljava/lang/String;)J",
(void*)nativeListen },
- {"nativeDispose", "(I)V",
+ {"nativeDispose", "(J)V",
(void*)nativeDispose },
- {"nativePause", "(I)V",
+ {"nativePause", "(J)V",
(void*)nativePause },
- {"nativeResume", "(I)V",
+ {"nativeResume", "(J)V",
(void*)nativeResume },
};
diff --git a/core/jni/android_media_ToneGenerator.cpp b/core/jni/android_media_ToneGenerator.cpp
index 76e42bcaea26..ca00709e179c 100644
--- a/core/jni/android_media_ToneGenerator.cpp
+++ b/core/jni/android_media_ToneGenerator.cpp
@@ -39,9 +39,9 @@ struct fields_t {
static fields_t fields;
static jboolean android_media_ToneGenerator_startTone(JNIEnv *env, jobject thiz, jint toneType, jint durationMs) {
- ALOGV("android_media_ToneGenerator_startTone: %x", (int)thiz);
+ ALOGV("android_media_ToneGenerator_startTone: %p", thiz);
- ToneGenerator *lpToneGen = (ToneGenerator *)env->GetIntField(thiz,
+ ToneGenerator *lpToneGen = (ToneGenerator *)env->GetLongField(thiz,
fields.context);
if (lpToneGen == NULL) {
jniThrowRuntimeException(env, "Method called after release()");
@@ -52,12 +52,12 @@ static jboolean android_media_ToneGenerator_startTone(JNIEnv *env, jobject thiz,
}
static void android_media_ToneGenerator_stopTone(JNIEnv *env, jobject thiz) {
- ALOGV("android_media_ToneGenerator_stopTone: %x", (int)thiz);
+ ALOGV("android_media_ToneGenerator_stopTone: %p", thiz);
- ToneGenerator *lpToneGen = (ToneGenerator *)env->GetIntField(thiz,
+ ToneGenerator *lpToneGen = (ToneGenerator *)env->GetLongField(thiz,
fields.context);
- ALOGV("ToneGenerator lpToneGen: %x", (unsigned int)lpToneGen);
+ ALOGV("ToneGenerator lpToneGen: %p", lpToneGen);
if (lpToneGen == NULL) {
jniThrowRuntimeException(env, "Method called after release()");
return;
@@ -66,7 +66,7 @@ static void android_media_ToneGenerator_stopTone(JNIEnv *env, jobject thiz) {
}
static jint android_media_ToneGenerator_getAudioSessionId(JNIEnv *env, jobject thiz) {
- ToneGenerator *lpToneGen = (ToneGenerator *)env->GetIntField(thiz,
+ ToneGenerator *lpToneGen = (ToneGenerator *)env->GetLongField(thiz,
fields.context);
if (lpToneGen == NULL) {
jniThrowRuntimeException(env, "Method called after release()");
@@ -76,11 +76,11 @@ static jint android_media_ToneGenerator_getAudioSessionId(JNIEnv *env, jobject t
}
static void android_media_ToneGenerator_release(JNIEnv *env, jobject thiz) {
- ToneGenerator *lpToneGen = (ToneGenerator *)env->GetIntField(thiz,
+ ToneGenerator *lpToneGen = (ToneGenerator *)env->GetLongField(thiz,
fields.context);
- ALOGV("android_media_ToneGenerator_release lpToneGen: %x", (int)lpToneGen);
+ ALOGV("android_media_ToneGenerator_release lpToneGen: %p", lpToneGen);
- env->SetIntField(thiz, fields.context, 0);
+ env->SetLongField(thiz, fields.context, 0);
delete lpToneGen;
}
@@ -89,11 +89,11 @@ static void android_media_ToneGenerator_native_setup(JNIEnv *env, jobject thiz,
jint streamType, jint volume) {
ToneGenerator *lpToneGen = new ToneGenerator((audio_stream_type_t) streamType, AudioSystem::linearToLog(volume), true);
- env->SetIntField(thiz, fields.context, 0);
+ env->SetLongField(thiz, fields.context, 0);
- ALOGV("android_media_ToneGenerator_native_setup jobject: %x", (int)thiz);
+ ALOGV("android_media_ToneGenerator_native_setup jobject: %p", thiz);
- ALOGV("ToneGenerator lpToneGen: %x", (unsigned int)lpToneGen);
+ ALOGV("ToneGenerator lpToneGen: %p", lpToneGen);
if (!lpToneGen->isInited()) {
ALOGE("ToneGenerator init failed");
@@ -103,16 +103,16 @@ static void android_media_ToneGenerator_native_setup(JNIEnv *env, jobject thiz,
}
// Stow our new C++ ToneGenerator in an opaque field in the Java object.
- env->SetIntField(thiz, fields.context, (int)lpToneGen);
+ env->SetLongField(thiz, fields.context, (jlong)lpToneGen);
- ALOGV("ToneGenerator fields.context: %x", env->GetIntField(thiz, fields.context));
+ ALOGV("ToneGenerator fields.context: %p", (void*) env->GetLongField(thiz, fields.context));
}
static void android_media_ToneGenerator_native_finalize(JNIEnv *env,
jobject thiz) {
- ALOGV("android_media_ToneGenerator_native_finalize jobject: %x", (int)thiz);
+ ALOGV("android_media_ToneGenerator_native_finalize jobject: %p", thiz);
- ToneGenerator *lpToneGen = (ToneGenerator *)env->GetIntField(thiz,
+ ToneGenerator *lpToneGen = (ToneGenerator *)env->GetLongField(thiz,
fields.context);
if (lpToneGen != NULL) {
@@ -142,12 +142,12 @@ int register_android_media_ToneGenerator(JNIEnv *env) {
return -1;
}
- fields.context = env->GetFieldID(clazz, "mNativeContext", "I");
+ fields.context = env->GetFieldID(clazz, "mNativeContext", "J");
if (fields.context == NULL) {
ALOGE("Can't find ToneGenerator.mNativeContext");
return -1;
}
- ALOGV("register_android_media_ToneGenerator ToneGenerator fields.context: %x", (unsigned int)fields.context);
+ ALOGV("register_android_media_ToneGenerator ToneGenerator fields.context: %p", fields.context);
return AndroidRuntime::registerNativeMethods(env,
"android/media/ToneGenerator", gMethods, NELEM(gMethods));
diff --git a/core/jni/android_net_LocalSocketImpl.cpp b/core/jni/android_net_LocalSocketImpl.cpp
index b9ed28ea665d..9f79f74e5d29 100644
--- a/core/jni/android_net_LocalSocketImpl.cpp
+++ b/core/jni/android_net_LocalSocketImpl.cpp
@@ -35,6 +35,7 @@
#include <cutils/sockets.h>
#include <netinet/tcp.h>
+#include <ScopedUtfChars.h>
namespace android {
@@ -52,25 +53,22 @@ socket_connect_local(JNIEnv *env, jobject object,
jobject fileDescriptor, jstring name, jint namespaceId)
{
int ret;
- const char *nameUtf8;
int fd;
- nameUtf8 = env->GetStringUTFChars(name, NULL);
-
fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
if (env->ExceptionOccurred() != NULL) {
return;
}
+ ScopedUtfChars nameUtf8(env, name);
+
ret = socket_local_client_connect(
fd,
- nameUtf8,
+ nameUtf8.c_str(),
namespaceId,
SOCK_STREAM);
- env->ReleaseStringUTFChars(name, nameUtf8);
-
if (ret < 0) {
jniThrowIOException(env, errno);
return;
@@ -89,11 +87,10 @@ socket_bind_local (JNIEnv *env, jobject object, jobject fileDescriptor,
{
int ret;
int fd;
- const char *nameUtf8;
-
if (name == NULL) {
jniThrowNullPointerException(env, NULL);
+ return;
}
fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
@@ -102,11 +99,9 @@ socket_bind_local (JNIEnv *env, jobject object, jobject fileDescriptor,
return;
}
- nameUtf8 = env->GetStringUTFChars(name, NULL);
-
- ret = socket_local_server_bind(fd, nameUtf8, namespaceId);
+ ScopedUtfChars nameUtf8(env, name);
- env->ReleaseStringUTFChars(name, nameUtf8);
+ ret = socket_local_server_bind(fd, nameUtf8.c_str(), namespaceId);
if (ret < 0) {
jniThrowIOException(env, errno);
@@ -451,6 +446,7 @@ static int socket_process_cmsg(JNIEnv *env, jobject thisJ, struct msghdr * pMsg)
if (count < 0) {
jniThrowException(env, "java/io/IOException",
"invalid cmsg length");
+ return -1;
}
fdArray = env->NewObjectArray(count, class_FileDescriptor, NULL);
diff --git a/core/jni/android_opengl_GLES20.cpp b/core/jni/android_opengl_GLES20.cpp
index 9bc69aebb8b3..db03b708414a 100644
--- a/core/jni/android_opengl_GLES20.cpp
+++ b/core/jni/android_opengl_GLES20.cpp
@@ -353,6 +353,7 @@ android_glBindAttribLocation__IILjava_lang_String_2
const char* _nativename = 0;
if (!name) {
+ _exception = 1;
_exceptionType = "java/lang/IllegalArgumentException";
_exceptionMessage = "name == null";
goto exit;
@@ -2454,6 +2455,7 @@ android_glGetAttribLocation__ILjava_lang_String_2
const char* _nativename = 0;
if (!name) {
+ _exception = 1;
_exceptionType = "java/lang/IllegalArgumentException";
_exceptionMessage = "name == null";
goto exit;
@@ -3602,6 +3604,7 @@ android_glGetUniformLocation__ILjava_lang_String_2
const char* _nativename = 0;
if (!name) {
+ _exception = 1;
_exceptionType = "java/lang/IllegalArgumentException";
_exceptionMessage = "name == null";
goto exit;
diff --git a/core/jni/android_opengl_GLES30.cpp b/core/jni/android_opengl_GLES30.cpp
index 832d6433cba6..4c62a753f4f8 100644
--- a/core/jni/android_opengl_GLES30.cpp
+++ b/core/jni/android_opengl_GLES30.cpp
@@ -2511,6 +2511,7 @@ android_glGetFragDataLocation__ILjava_lang_String_2
const char* _nativename = 0;
if (!name) {
+ _exception = 1;
_exceptionType = "java/lang/IllegalArgumentException";
_exceptionMessage = "name == null";
goto exit;
@@ -3361,6 +3362,7 @@ android_glGetUniformBlockIndex__ILjava_lang_String_2
const char* _nativeuniformBlockName = 0;
if (!uniformBlockName) {
+ _exception = 1;
_exceptionType = "java/lang/IllegalArgumentException";
_exceptionMessage = "uniformBlockName == null";
goto exit;
diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp
index 054ee4f694f9..a041693f5c6f 100644
--- a/core/jni/android_os_Debug.cpp
+++ b/core/jni/android_os_Debug.cpp
@@ -675,6 +675,7 @@ static jint read_binder_stat(const char* stat)
// loop until we have the block that represents this process
do {
if (fgets(line, 1024, fp) == 0) {
+ fclose(fp);
return -1;
}
} while (strncmp(compare, line, len));
@@ -684,13 +685,16 @@ static jint read_binder_stat(const char* stat)
do {
if (fgets(line, 1024, fp) == 0) {
+ fclose(fp);
return -1;
}
} while (strncmp(compare, line, len));
// we have the line, now increment the line ptr to the value
char* ptr = line + len;
- return atoi(ptr);
+ jint result = atoi(ptr);
+ fclose(fp);
+ return result;
}
static jint android_os_Debug_getBinderSentTransactions(JNIEnv *env, jobject clazz)
diff --git a/core/jni/android_os_MemoryFile.cpp b/core/jni/android_os_MemoryFile.cpp
index 71341916ce68..27b29bc11930 100644
--- a/core/jni/android_os_MemoryFile.cpp
+++ b/core/jni/android_os_MemoryFile.cpp
@@ -43,19 +43,20 @@ static jobject android_os_MemoryFile_open(JNIEnv* env, jobject clazz, jstring na
return jniCreateFileDescriptor(env, result);
}
-static jint android_os_MemoryFile_mmap(JNIEnv* env, jobject clazz, jobject fileDescriptor,
+static jlong android_os_MemoryFile_mmap(JNIEnv* env, jobject clazz, jobject fileDescriptor,
jint length, jint prot)
{
int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
- jint result = (jint)mmap(NULL, length, prot, MAP_SHARED, fd, 0);
- if (!result)
+ void* result = mmap(NULL, length, prot, MAP_SHARED, fd, 0);
+ if (result == MAP_FAILED) {
jniThrowException(env, "java/io/IOException", "mmap failed");
- return result;
+ }
+ return reinterpret_cast<jlong>(result);
}
-static void android_os_MemoryFile_munmap(JNIEnv* env, jobject clazz, jint addr, jint length)
+static void android_os_MemoryFile_munmap(JNIEnv* env, jobject clazz, jlong addr, jint length)
{
- int result = munmap((void *)addr, length);
+ int result = munmap(reinterpret_cast<void *>(addr), length);
if (result < 0)
jniThrowException(env, "java/io/IOException", "munmap failed");
}
@@ -70,7 +71,7 @@ static void android_os_MemoryFile_close(JNIEnv* env, jobject clazz, jobject file
}
static jint android_os_MemoryFile_read(JNIEnv* env, jobject clazz,
- jobject fileDescriptor, jint address, jbyteArray buffer, jint srcOffset, jint destOffset,
+ jobject fileDescriptor, jlong address, jbyteArray buffer, jint srcOffset, jint destOffset,
jint count, jboolean unpinned)
{
int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
@@ -89,7 +90,7 @@ static jint android_os_MemoryFile_read(JNIEnv* env, jobject clazz,
}
static jint android_os_MemoryFile_write(JNIEnv* env, jobject clazz,
- jobject fileDescriptor, jint address, jbyteArray buffer, jint srcOffset, jint destOffset,
+ jobject fileDescriptor, jlong address, jbyteArray buffer, jint srcOffset, jint destOffset,
jint count, jboolean unpinned)
{
int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
@@ -138,11 +139,11 @@ static jint android_os_MemoryFile_get_size(JNIEnv* env, jobject clazz,
static const JNINativeMethod methods[] = {
{"native_open", "(Ljava/lang/String;I)Ljava/io/FileDescriptor;", (void*)android_os_MemoryFile_open},
- {"native_mmap", "(Ljava/io/FileDescriptor;II)I", (void*)android_os_MemoryFile_mmap},
- {"native_munmap", "(II)V", (void*)android_os_MemoryFile_munmap},
+ {"native_mmap", "(Ljava/io/FileDescriptor;II)J", (void*)android_os_MemoryFile_mmap},
+ {"native_munmap", "(JI)V", (void*)android_os_MemoryFile_munmap},
{"native_close", "(Ljava/io/FileDescriptor;)V", (void*)android_os_MemoryFile_close},
- {"native_read", "(Ljava/io/FileDescriptor;I[BIIIZ)I", (void*)android_os_MemoryFile_read},
- {"native_write", "(Ljava/io/FileDescriptor;I[BIIIZ)V", (void*)android_os_MemoryFile_write},
+ {"native_read", "(Ljava/io/FileDescriptor;J[BIIIZ)I", (void*)android_os_MemoryFile_read},
+ {"native_write", "(Ljava/io/FileDescriptor;J[BIIIZ)V", (void*)android_os_MemoryFile_write},
{"native_pin", "(Ljava/io/FileDescriptor;Z)V", (void*)android_os_MemoryFile_pin},
{"native_get_size", "(Ljava/io/FileDescriptor;)I",
(void*)android_os_MemoryFile_get_size}
diff --git a/core/jni/android_os_MessageQueue.cpp b/core/jni/android_os_MessageQueue.cpp
index c9c372089288..a8ed89554261 100644
--- a/core/jni/android_os_MessageQueue.cpp
+++ b/core/jni/android_os_MessageQueue.cpp
@@ -110,11 +110,11 @@ void NativeMessageQueue::wake() {
// ----------------------------------------------------------------------------
sp<MessageQueue> android_os_MessageQueue_getMessageQueue(JNIEnv* env, jobject messageQueueObj) {
- jint intPtr = env->GetIntField(messageQueueObj, gMessageQueueClassInfo.mPtr);
- return reinterpret_cast<NativeMessageQueue*>(intPtr);
+ jlong ptr = env->GetLongField(messageQueueObj, gMessageQueueClassInfo.mPtr);
+ return reinterpret_cast<NativeMessageQueue*>(ptr);
}
-static jint android_os_MessageQueue_nativeInit(JNIEnv* env, jclass clazz) {
+static jlong android_os_MessageQueue_nativeInit(JNIEnv* env, jclass clazz) {
NativeMessageQueue* nativeMessageQueue = new NativeMessageQueue();
if (!nativeMessageQueue) {
jniThrowRuntimeException(env, "Unable to allocate native queue");
@@ -122,26 +122,26 @@ static jint android_os_MessageQueue_nativeInit(JNIEnv* env, jclass clazz) {
}
nativeMessageQueue->incStrong(env);
- return reinterpret_cast<jint>(nativeMessageQueue);
+ return reinterpret_cast<jlong>(nativeMessageQueue);
}
-static void android_os_MessageQueue_nativeDestroy(JNIEnv* env, jclass clazz, jint ptr) {
+static void android_os_MessageQueue_nativeDestroy(JNIEnv* env, jclass clazz, jlong ptr) {
NativeMessageQueue* nativeMessageQueue = reinterpret_cast<NativeMessageQueue*>(ptr);
nativeMessageQueue->decStrong(env);
}
static void android_os_MessageQueue_nativePollOnce(JNIEnv* env, jclass clazz,
- jint ptr, jint timeoutMillis) {
+ jlong ptr, jint timeoutMillis) {
NativeMessageQueue* nativeMessageQueue = reinterpret_cast<NativeMessageQueue*>(ptr);
nativeMessageQueue->pollOnce(env, timeoutMillis);
}
-static void android_os_MessageQueue_nativeWake(JNIEnv* env, jclass clazz, jint ptr) {
+static void android_os_MessageQueue_nativeWake(JNIEnv* env, jclass clazz, jlong ptr) {
NativeMessageQueue* nativeMessageQueue = reinterpret_cast<NativeMessageQueue*>(ptr);
return nativeMessageQueue->wake();
}
-static jboolean android_os_MessageQueue_nativeIsIdling(JNIEnv* env, jclass clazz, jint ptr) {
+static jboolean android_os_MessageQueue_nativeIsIdling(JNIEnv* env, jclass clazz, jlong ptr) {
NativeMessageQueue* nativeMessageQueue = reinterpret_cast<NativeMessageQueue*>(ptr);
return nativeMessageQueue->getLooper()->isIdling();
}
@@ -150,11 +150,11 @@ static jboolean android_os_MessageQueue_nativeIsIdling(JNIEnv* env, jclass clazz
static JNINativeMethod gMessageQueueMethods[] = {
/* name, signature, funcPtr */
- { "nativeInit", "()I", (void*)android_os_MessageQueue_nativeInit },
- { "nativeDestroy", "(I)V", (void*)android_os_MessageQueue_nativeDestroy },
- { "nativePollOnce", "(II)V", (void*)android_os_MessageQueue_nativePollOnce },
- { "nativeWake", "(I)V", (void*)android_os_MessageQueue_nativeWake },
- { "nativeIsIdling", "(I)Z", (void*)android_os_MessageQueue_nativeIsIdling }
+ { "nativeInit", "()J", (void*)android_os_MessageQueue_nativeInit },
+ { "nativeDestroy", "(J)V", (void*)android_os_MessageQueue_nativeDestroy },
+ { "nativePollOnce", "(JI)V", (void*)android_os_MessageQueue_nativePollOnce },
+ { "nativeWake", "(J)V", (void*)android_os_MessageQueue_nativeWake },
+ { "nativeIsIdling", "(J)Z", (void*)android_os_MessageQueue_nativeIsIdling }
};
#define FIND_CLASS(var, className) \
@@ -174,7 +174,7 @@ int register_android_os_MessageQueue(JNIEnv* env) {
FIND_CLASS(clazz, "android/os/MessageQueue");
GET_FIELD_ID(gMessageQueueClassInfo.mPtr, clazz,
- "mPtr", "I");
+ "mPtr", "J");
return 0;
}
diff --git a/core/jni/android_os_Parcel.cpp b/core/jni/android_os_Parcel.cpp
index aa451e3a12a8..50f6c73fa0da 100644
--- a/core/jni/android_os_Parcel.cpp
+++ b/core/jni/android_os_Parcel.cpp
@@ -69,7 +69,7 @@ static struct parcel_offsets_t
Parcel* parcelForJavaObject(JNIEnv* env, jobject obj)
{
if (obj) {
- Parcel* p = (Parcel*)env->GetIntField(obj, gParcelOffsets.mNativePtr);
+ Parcel* p = (Parcel*)env->GetLongField(obj, gParcelOffsets.mNativePtr);
if (p != NULL) {
return p;
}
@@ -88,31 +88,31 @@ void recycleJavaParcelObject(JNIEnv* env, jobject parcelObj)
env->CallVoidMethod(parcelObj, gParcelOffsets.recycle);
}
-static jint android_os_Parcel_dataSize(JNIEnv* env, jclass clazz, jint nativePtr)
+static jint android_os_Parcel_dataSize(JNIEnv* env, jclass clazz, jlong nativePtr)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
return parcel ? parcel->dataSize() : 0;
}
-static jint android_os_Parcel_dataAvail(JNIEnv* env, jclass clazz, jint nativePtr)
+static jint android_os_Parcel_dataAvail(JNIEnv* env, jclass clazz, jlong nativePtr)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
return parcel ? parcel->dataAvail() : 0;
}
-static jint android_os_Parcel_dataPosition(JNIEnv* env, jclass clazz, jint nativePtr)
+static jint android_os_Parcel_dataPosition(JNIEnv* env, jclass clazz, jlong nativePtr)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
return parcel ? parcel->dataPosition() : 0;
}
-static jint android_os_Parcel_dataCapacity(JNIEnv* env, jclass clazz, jint nativePtr)
+static jint android_os_Parcel_dataCapacity(JNIEnv* env, jclass clazz, jlong nativePtr)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
return parcel ? parcel->dataCapacity() : 0;
}
-static void android_os_Parcel_setDataSize(JNIEnv* env, jclass clazz, jint nativePtr, jint size)
+static void android_os_Parcel_setDataSize(JNIEnv* env, jclass clazz, jlong nativePtr, jint size)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -123,7 +123,7 @@ static void android_os_Parcel_setDataSize(JNIEnv* env, jclass clazz, jint native
}
}
-static void android_os_Parcel_setDataPosition(JNIEnv* env, jclass clazz, jint nativePtr, jint pos)
+static void android_os_Parcel_setDataPosition(JNIEnv* env, jclass clazz, jlong nativePtr, jint pos)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -131,7 +131,7 @@ static void android_os_Parcel_setDataPosition(JNIEnv* env, jclass clazz, jint na
}
}
-static void android_os_Parcel_setDataCapacity(JNIEnv* env, jclass clazz, jint nativePtr, jint size)
+static void android_os_Parcel_setDataCapacity(JNIEnv* env, jclass clazz, jlong nativePtr, jint size)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -142,7 +142,7 @@ static void android_os_Parcel_setDataCapacity(JNIEnv* env, jclass clazz, jint na
}
}
-static jboolean android_os_Parcel_pushAllowFds(JNIEnv* env, jclass clazz, jint nativePtr, jboolean allowFds)
+static jboolean android_os_Parcel_pushAllowFds(JNIEnv* env, jclass clazz, jlong nativePtr, jboolean allowFds)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
jboolean ret = JNI_TRUE;
@@ -152,7 +152,7 @@ static jboolean android_os_Parcel_pushAllowFds(JNIEnv* env, jclass clazz, jint n
return ret;
}
-static void android_os_Parcel_restoreAllowFds(JNIEnv* env, jclass clazz, jint nativePtr, jboolean lastValue)
+static void android_os_Parcel_restoreAllowFds(JNIEnv* env, jclass clazz, jlong nativePtr, jboolean lastValue)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -160,7 +160,7 @@ static void android_os_Parcel_restoreAllowFds(JNIEnv* env, jclass clazz, jint na
}
}
-static void android_os_Parcel_writeNative(JNIEnv* env, jclass clazz, jint nativePtr, jobject data,
+static void android_os_Parcel_writeNative(JNIEnv* env, jclass clazz, jlong nativePtr, jobject data,
jint offset, jint length)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
@@ -187,7 +187,7 @@ static void android_os_Parcel_writeNative(JNIEnv* env, jclass clazz, jint native
}
}
-static void android_os_Parcel_writeInt(JNIEnv* env, jclass clazz, jint nativePtr, jint val) {
+static void android_os_Parcel_writeInt(JNIEnv* env, jclass clazz, jlong nativePtr, jint val) {
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
const status_t err = parcel->writeInt32(val);
if (err != NO_ERROR) {
@@ -195,7 +195,7 @@ static void android_os_Parcel_writeInt(JNIEnv* env, jclass clazz, jint nativePtr
}
}
-static void android_os_Parcel_writeLong(JNIEnv* env, jclass clazz, jint nativePtr, jlong val)
+static void android_os_Parcel_writeLong(JNIEnv* env, jclass clazz, jlong nativePtr, jlong val)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -206,7 +206,7 @@ static void android_os_Parcel_writeLong(JNIEnv* env, jclass clazz, jint nativePt
}
}
-static void android_os_Parcel_writeFloat(JNIEnv* env, jclass clazz, jint nativePtr, jfloat val)
+static void android_os_Parcel_writeFloat(JNIEnv* env, jclass clazz, jlong nativePtr, jfloat val)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -217,7 +217,7 @@ static void android_os_Parcel_writeFloat(JNIEnv* env, jclass clazz, jint nativeP
}
}
-static void android_os_Parcel_writeDouble(JNIEnv* env, jclass clazz, jint nativePtr, jdouble val)
+static void android_os_Parcel_writeDouble(JNIEnv* env, jclass clazz, jlong nativePtr, jdouble val)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -228,7 +228,7 @@ static void android_os_Parcel_writeDouble(JNIEnv* env, jclass clazz, jint native
}
}
-static void android_os_Parcel_writeString(JNIEnv* env, jclass clazz, jint nativePtr, jstring val)
+static void android_os_Parcel_writeString(JNIEnv* env, jclass clazz, jlong nativePtr, jstring val)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -248,7 +248,7 @@ static void android_os_Parcel_writeString(JNIEnv* env, jclass clazz, jint native
}
}
-static void android_os_Parcel_writeStrongBinder(JNIEnv* env, jclass clazz, jint nativePtr, jobject object)
+static void android_os_Parcel_writeStrongBinder(JNIEnv* env, jclass clazz, jlong nativePtr, jobject object)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -259,7 +259,7 @@ static void android_os_Parcel_writeStrongBinder(JNIEnv* env, jclass clazz, jint
}
}
-static void android_os_Parcel_writeFileDescriptor(JNIEnv* env, jclass clazz, jint nativePtr, jobject object)
+static void android_os_Parcel_writeFileDescriptor(JNIEnv* env, jclass clazz, jlong nativePtr, jobject object)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -271,7 +271,7 @@ static void android_os_Parcel_writeFileDescriptor(JNIEnv* env, jclass clazz, jin
}
}
-static jbyteArray android_os_Parcel_createByteArray(JNIEnv* env, jclass clazz, jint nativePtr)
+static jbyteArray android_os_Parcel_createByteArray(JNIEnv* env, jclass clazz, jlong nativePtr)
{
jbyteArray ret = NULL;
@@ -297,7 +297,7 @@ static jbyteArray android_os_Parcel_createByteArray(JNIEnv* env, jclass clazz, j
return ret;
}
-static jint android_os_Parcel_readInt(JNIEnv* env, jclass clazz, jint nativePtr)
+static jint android_os_Parcel_readInt(JNIEnv* env, jclass clazz, jlong nativePtr)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -306,7 +306,7 @@ static jint android_os_Parcel_readInt(JNIEnv* env, jclass clazz, jint nativePtr)
return 0;
}
-static jlong android_os_Parcel_readLong(JNIEnv* env, jclass clazz, jint nativePtr)
+static jlong android_os_Parcel_readLong(JNIEnv* env, jclass clazz, jlong nativePtr)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -315,7 +315,7 @@ static jlong android_os_Parcel_readLong(JNIEnv* env, jclass clazz, jint nativePt
return 0;
}
-static jfloat android_os_Parcel_readFloat(JNIEnv* env, jclass clazz, jint nativePtr)
+static jfloat android_os_Parcel_readFloat(JNIEnv* env, jclass clazz, jlong nativePtr)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -324,7 +324,7 @@ static jfloat android_os_Parcel_readFloat(JNIEnv* env, jclass clazz, jint native
return 0;
}
-static jdouble android_os_Parcel_readDouble(JNIEnv* env, jclass clazz, jint nativePtr)
+static jdouble android_os_Parcel_readDouble(JNIEnv* env, jclass clazz, jlong nativePtr)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -333,7 +333,7 @@ static jdouble android_os_Parcel_readDouble(JNIEnv* env, jclass clazz, jint nati
return 0;
}
-static jstring android_os_Parcel_readString(JNIEnv* env, jclass clazz, jint nativePtr)
+static jstring android_os_Parcel_readString(JNIEnv* env, jclass clazz, jlong nativePtr)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -347,7 +347,7 @@ static jstring android_os_Parcel_readString(JNIEnv* env, jclass clazz, jint nati
return NULL;
}
-static jobject android_os_Parcel_readStrongBinder(JNIEnv* env, jclass clazz, jint nativePtr)
+static jobject android_os_Parcel_readStrongBinder(JNIEnv* env, jclass clazz, jlong nativePtr)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -356,7 +356,7 @@ static jobject android_os_Parcel_readStrongBinder(JNIEnv* env, jclass clazz, jin
return NULL;
}
-static jobject android_os_Parcel_readFileDescriptor(JNIEnv* env, jclass clazz, jint nativePtr)
+static jobject android_os_Parcel_readFileDescriptor(JNIEnv* env, jclass clazz, jlong nativePtr)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -468,13 +468,13 @@ static void android_os_Parcel_clearFileDescriptor(JNIEnv* env, jclass clazz, job
}
}
-static jint android_os_Parcel_create(JNIEnv* env, jclass clazz)
+static jlong android_os_Parcel_create(JNIEnv* env, jclass clazz)
{
Parcel* parcel = new Parcel();
- return reinterpret_cast<jint>(parcel);
+ return reinterpret_cast<jlong>(parcel);
}
-static void android_os_Parcel_freeBuffer(JNIEnv* env, jclass clazz, jint nativePtr)
+static void android_os_Parcel_freeBuffer(JNIEnv* env, jclass clazz, jlong nativePtr)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel != NULL) {
@@ -482,13 +482,13 @@ static void android_os_Parcel_freeBuffer(JNIEnv* env, jclass clazz, jint nativeP
}
}
-static void android_os_Parcel_destroy(JNIEnv* env, jclass clazz, jint nativePtr)
+static void android_os_Parcel_destroy(JNIEnv* env, jclass clazz, jlong nativePtr)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
delete parcel;
}
-static jbyteArray android_os_Parcel_marshall(JNIEnv* env, jclass clazz, jint nativePtr)
+static jbyteArray android_os_Parcel_marshall(JNIEnv* env, jclass clazz, jlong nativePtr)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel == NULL) {
@@ -517,7 +517,7 @@ static jbyteArray android_os_Parcel_marshall(JNIEnv* env, jclass clazz, jint nat
return ret;
}
-static void android_os_Parcel_unmarshall(JNIEnv* env, jclass clazz, jint nativePtr,
+static void android_os_Parcel_unmarshall(JNIEnv* env, jclass clazz, jlong nativePtr,
jbyteArray data, jint offset, jint length)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
@@ -538,8 +538,8 @@ static void android_os_Parcel_unmarshall(JNIEnv* env, jclass clazz, jint nativeP
}
}
-static void android_os_Parcel_appendFrom(JNIEnv* env, jclass clazz, jint thisNativePtr,
- jint otherNativePtr, jint offset, jint length)
+static void android_os_Parcel_appendFrom(JNIEnv* env, jclass clazz, jlong thisNativePtr,
+ jlong otherNativePtr, jint offset, jint length)
{
Parcel* thisParcel = reinterpret_cast<Parcel*>(thisNativePtr);
if (thisParcel == NULL) {
@@ -556,7 +556,7 @@ static void android_os_Parcel_appendFrom(JNIEnv* env, jclass clazz, jint thisNat
}
}
-static jboolean android_os_Parcel_hasFileDescriptors(JNIEnv* env, jclass clazz, jint nativePtr)
+static jboolean android_os_Parcel_hasFileDescriptors(JNIEnv* env, jclass clazz, jlong nativePtr)
{
jboolean ret = JNI_FALSE;
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
@@ -568,7 +568,7 @@ static jboolean android_os_Parcel_hasFileDescriptors(JNIEnv* env, jclass clazz,
return ret;
}
-static void android_os_Parcel_writeInterfaceToken(JNIEnv* env, jclass clazz, jint nativePtr,
+static void android_os_Parcel_writeInterfaceToken(JNIEnv* env, jclass clazz, jlong nativePtr,
jstring name)
{
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
@@ -583,7 +583,7 @@ static void android_os_Parcel_writeInterfaceToken(JNIEnv* env, jclass clazz, jin
}
}
-static void android_os_Parcel_enforceInterface(JNIEnv* env, jclass clazz, jint nativePtr, jstring name)
+static void android_os_Parcel_enforceInterface(JNIEnv* env, jclass clazz, jlong nativePtr, jstring name)
{
jboolean ret = JNI_FALSE;
@@ -622,50 +622,50 @@ static void android_os_Parcel_enforceInterface(JNIEnv* env, jclass clazz, jint n
// ----------------------------------------------------------------------------
static const JNINativeMethod gParcelMethods[] = {
- {"nativeDataSize", "(I)I", (void*)android_os_Parcel_dataSize},
- {"nativeDataAvail", "(I)I", (void*)android_os_Parcel_dataAvail},
- {"nativeDataPosition", "(I)I", (void*)android_os_Parcel_dataPosition},
- {"nativeDataCapacity", "(I)I", (void*)android_os_Parcel_dataCapacity},
- {"nativeSetDataSize", "(II)V", (void*)android_os_Parcel_setDataSize},
- {"nativeSetDataPosition", "(II)V", (void*)android_os_Parcel_setDataPosition},
- {"nativeSetDataCapacity", "(II)V", (void*)android_os_Parcel_setDataCapacity},
-
- {"nativePushAllowFds", "(IZ)Z", (void*)android_os_Parcel_pushAllowFds},
- {"nativeRestoreAllowFds", "(IZ)V", (void*)android_os_Parcel_restoreAllowFds},
-
- {"nativeWriteByteArray", "(I[BII)V", (void*)android_os_Parcel_writeNative},
- {"nativeWriteInt", "(II)V", (void*)android_os_Parcel_writeInt},
- {"nativeWriteLong", "(IJ)V", (void*)android_os_Parcel_writeLong},
- {"nativeWriteFloat", "(IF)V", (void*)android_os_Parcel_writeFloat},
- {"nativeWriteDouble", "(ID)V", (void*)android_os_Parcel_writeDouble},
- {"nativeWriteString", "(ILjava/lang/String;)V", (void*)android_os_Parcel_writeString},
- {"nativeWriteStrongBinder", "(ILandroid/os/IBinder;)V", (void*)android_os_Parcel_writeStrongBinder},
- {"nativeWriteFileDescriptor", "(ILjava/io/FileDescriptor;)V", (void*)android_os_Parcel_writeFileDescriptor},
-
- {"nativeCreateByteArray", "(I)[B", (void*)android_os_Parcel_createByteArray},
- {"nativeReadInt", "(I)I", (void*)android_os_Parcel_readInt},
- {"nativeReadLong", "(I)J", (void*)android_os_Parcel_readLong},
- {"nativeReadFloat", "(I)F", (void*)android_os_Parcel_readFloat},
- {"nativeReadDouble", "(I)D", (void*)android_os_Parcel_readDouble},
- {"nativeReadString", "(I)Ljava/lang/String;", (void*)android_os_Parcel_readString},
- {"nativeReadStrongBinder", "(I)Landroid/os/IBinder;", (void*)android_os_Parcel_readStrongBinder},
- {"nativeReadFileDescriptor", "(I)Ljava/io/FileDescriptor;", (void*)android_os_Parcel_readFileDescriptor},
+ {"nativeDataSize", "(J)I", (void*)android_os_Parcel_dataSize},
+ {"nativeDataAvail", "(J)I", (void*)android_os_Parcel_dataAvail},
+ {"nativeDataPosition", "(J)I", (void*)android_os_Parcel_dataPosition},
+ {"nativeDataCapacity", "(J)I", (void*)android_os_Parcel_dataCapacity},
+ {"nativeSetDataSize", "(JI)V", (void*)android_os_Parcel_setDataSize},
+ {"nativeSetDataPosition", "(JI)V", (void*)android_os_Parcel_setDataPosition},
+ {"nativeSetDataCapacity", "(JI)V", (void*)android_os_Parcel_setDataCapacity},
+
+ {"nativePushAllowFds", "(JZ)Z", (void*)android_os_Parcel_pushAllowFds},
+ {"nativeRestoreAllowFds", "(JZ)V", (void*)android_os_Parcel_restoreAllowFds},
+
+ {"nativeWriteByteArray", "(J[BII)V", (void*)android_os_Parcel_writeNative},
+ {"nativeWriteInt", "(JI)V", (void*)android_os_Parcel_writeInt},
+ {"nativeWriteLong", "(JJ)V", (void*)android_os_Parcel_writeLong},
+ {"nativeWriteFloat", "(JF)V", (void*)android_os_Parcel_writeFloat},
+ {"nativeWriteDouble", "(JD)V", (void*)android_os_Parcel_writeDouble},
+ {"nativeWriteString", "(JLjava/lang/String;)V", (void*)android_os_Parcel_writeString},
+ {"nativeWriteStrongBinder", "(JLandroid/os/IBinder;)V", (void*)android_os_Parcel_writeStrongBinder},
+ {"nativeWriteFileDescriptor", "(JLjava/io/FileDescriptor;)V", (void*)android_os_Parcel_writeFileDescriptor},
+
+ {"nativeCreateByteArray", "(J)[B", (void*)android_os_Parcel_createByteArray},
+ {"nativeReadInt", "(J)I", (void*)android_os_Parcel_readInt},
+ {"nativeReadLong", "(J)J", (void*)android_os_Parcel_readLong},
+ {"nativeReadFloat", "(J)F", (void*)android_os_Parcel_readFloat},
+ {"nativeReadDouble", "(J)D", (void*)android_os_Parcel_readDouble},
+ {"nativeReadString", "(J)Ljava/lang/String;", (void*)android_os_Parcel_readString},
+ {"nativeReadStrongBinder", "(J)Landroid/os/IBinder;", (void*)android_os_Parcel_readStrongBinder},
+ {"nativeReadFileDescriptor", "(J)Ljava/io/FileDescriptor;", (void*)android_os_Parcel_readFileDescriptor},
{"openFileDescriptor", "(Ljava/lang/String;I)Ljava/io/FileDescriptor;", (void*)android_os_Parcel_openFileDescriptor},
{"dupFileDescriptor", "(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor;", (void*)android_os_Parcel_dupFileDescriptor},
{"closeFileDescriptor", "(Ljava/io/FileDescriptor;)V", (void*)android_os_Parcel_closeFileDescriptor},
{"clearFileDescriptor", "(Ljava/io/FileDescriptor;)V", (void*)android_os_Parcel_clearFileDescriptor},
- {"nativeCreate", "()I", (void*)android_os_Parcel_create},
- {"nativeFreeBuffer", "(I)V", (void*)android_os_Parcel_freeBuffer},
- {"nativeDestroy", "(I)V", (void*)android_os_Parcel_destroy},
+ {"nativeCreate", "()J", (void*)android_os_Parcel_create},
+ {"nativeFreeBuffer", "(J)V", (void*)android_os_Parcel_freeBuffer},
+ {"nativeDestroy", "(J)V", (void*)android_os_Parcel_destroy},
- {"nativeMarshall", "(I)[B", (void*)android_os_Parcel_marshall},
- {"nativeUnmarshall", "(I[BII)V", (void*)android_os_Parcel_unmarshall},
- {"nativeAppendFrom", "(IIII)V", (void*)android_os_Parcel_appendFrom},
- {"nativeHasFileDescriptors", "(I)Z", (void*)android_os_Parcel_hasFileDescriptors},
- {"nativeWriteInterfaceToken", "(ILjava/lang/String;)V", (void*)android_os_Parcel_writeInterfaceToken},
- {"nativeEnforceInterface", "(ILjava/lang/String;)V", (void*)android_os_Parcel_enforceInterface},
+ {"nativeMarshall", "(J)[B", (void*)android_os_Parcel_marshall},
+ {"nativeUnmarshall", "(J[BII)V", (void*)android_os_Parcel_unmarshall},
+ {"nativeAppendFrom", "(JJII)V", (void*)android_os_Parcel_appendFrom},
+ {"nativeHasFileDescriptors", "(J)Z", (void*)android_os_Parcel_hasFileDescriptors},
+ {"nativeWriteInterfaceToken", "(JLjava/lang/String;)V", (void*)android_os_Parcel_writeInterfaceToken},
+ {"nativeEnforceInterface", "(JLjava/lang/String;)V", (void*)android_os_Parcel_enforceInterface},
};
const char* const kParcelPathName = "android/os/Parcel";
@@ -678,7 +678,7 @@ int register_android_os_Parcel(JNIEnv* env)
LOG_FATAL_IF(clazz == NULL, "Unable to find class android.os.Parcel");
gParcelOffsets.clazz = (jclass) env->NewGlobalRef(clazz);
- gParcelOffsets.mNativePtr = env->GetFieldID(clazz, "mNativePtr", "I");
+ gParcelOffsets.mNativePtr = env->GetFieldID(clazz, "mNativePtr", "J");
gParcelOffsets.obtain = env->GetStaticMethodID(clazz, "obtain",
"()Landroid/os/Parcel;");
gParcelOffsets.recycle = env->GetMethodID(clazz, "recycle", "()V");
diff --git a/core/jni/android_os_SystemClock.cpp b/core/jni/android_os_SystemClock.cpp
index d20b8005071c..5f4d57080c40 100644
--- a/core/jni/android_os_SystemClock.cpp
+++ b/core/jni/android_os_SystemClock.cpp
@@ -43,16 +43,77 @@
namespace android {
+static int setCurrentTimeMillisAlarmDriver(struct timeval *tv)
+{
+ struct timespec ts;
+ int fd;
+ int res;
+
+ fd = open("/dev/alarm", O_RDWR);
+ if(fd < 0) {
+ ALOGV("Unable to open alarm driver: %s\n", strerror(errno));
+ return -1;
+ }
+ ts.tv_sec = tv->tv_sec;
+ ts.tv_nsec = tv->tv_usec * 1000;
+ res = ioctl(fd, ANDROID_ALARM_SET_RTC, &ts);
+ if (res < 0)
+ ALOGV("ANDROID_ALARM_SET_RTC ioctl failed: %s\n", strerror(errno));
+ close(fd);
+ return res;
+}
+
+static int setCurrentTimeMillisRtc(struct timeval *tv)
+{
+ struct rtc_time rtc;
+ struct tm tm, *gmtime_res;
+ int fd;
+ int res;
+
+ fd = open("/dev/rtc0", O_RDWR);
+ if (fd < 0) {
+ ALOGV("Unable to open RTC driver: %s\n", strerror(errno));
+ return -1;
+ }
+
+ res = settimeofday(tv, NULL);
+ if (res < 0) {
+ ALOGV("settimeofday() failed: %s\n", strerror(errno));
+ goto done;
+ }
+
+ gmtime_res = gmtime_r(&tv->tv_sec, &tm);
+ if (!gmtime_res) {
+ ALOGV("gmtime_r() failed: %s\n", strerror(errno));
+ res = -1;
+ goto done;
+ }
+
+ memset(&rtc, 0, sizeof(rtc));
+ rtc.tm_sec = tm.tm_sec;
+ rtc.tm_min = tm.tm_min;
+ rtc.tm_hour = tm.tm_hour;
+ rtc.tm_mday = tm.tm_mday;
+ rtc.tm_mon = tm.tm_mon;
+ rtc.tm_year = tm.tm_year;
+ rtc.tm_wday = tm.tm_wday;
+ rtc.tm_yday = tm.tm_yday;
+ rtc.tm_isdst = tm.tm_isdst;
+ res = ioctl(fd, RTC_SET_TIME, &rtc);
+ if (res < 0)
+ ALOGV("RTC_SET_TIME ioctl failed: %s\n", strerror(errno));
+done:
+ close(fd);
+ return res;
+}
+
/*
* Set the current time. This only works when running as root.
*/
static int setCurrentTimeMillis(int64_t millis)
{
struct timeval tv;
- struct timespec ts;
- int fd;
- int res;
- int ret = 0;
+ int ret;
if (millis <= 0 || millis / 1000LL >= INT_MAX) {
return -1;
@@ -63,19 +124,14 @@ static int setCurrentTimeMillis(int64_t millis)
ALOGD("Setting time of day to sec=%d\n", (int) tv.tv_sec);
- fd = open("/dev/alarm", O_RDWR);
- if(fd < 0) {
- ALOGW("Unable to open alarm driver: %s\n", strerror(errno));
- return -1;
- }
- ts.tv_sec = tv.tv_sec;
- ts.tv_nsec = tv.tv_usec * 1000;
- res = ioctl(fd, ANDROID_ALARM_SET_RTC, &ts);
- if(res < 0) {
+ ret = setCurrentTimeMillisAlarmDriver(&tv);
+ if (ret < 0)
+ ret = setCurrentTimeMillisRtc(&tv);
+
+ if(ret < 0) {
ALOGW("Unable to set rtc to %ld: %s\n", tv.tv_sec, strerror(errno));
ret = -1;
}
- close(fd);
return ret;
}
diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp
index 2c23f9db9468..883691856bbe 100644
--- a/core/jni/android_util_AssetManager.cpp
+++ b/core/jni/android_util_AssetManager.cpp
@@ -229,7 +229,8 @@ static jint android_content_AssetManager_openNonAssetNative(JNIEnv* env, jobject
}
Asset* a = cookie
- ? am->openNonAsset((void*)cookie, fileName8.c_str(), (Asset::AccessMode)mode)
+ ? am->openNonAsset(static_cast<int32_t>(cookie), fileName8.c_str(),
+ (Asset::AccessMode)mode)
: am->openNonAsset(fileName8.c_str(), (Asset::AccessMode)mode);
if (a == NULL) {
@@ -260,7 +261,7 @@ static jobject android_content_AssetManager_openNonAssetFdNative(JNIEnv* env, jo
}
Asset* a = cookie
- ? am->openNonAsset((void*)cookie, fileName8.c_str(), Asset::ACCESS_RANDOM)
+ ? am->openNonAsset(static_cast<int32_t>(cookie), fileName8.c_str(), Asset::ACCESS_RANDOM)
: am->openNonAsset(fileName8.c_str(), Asset::ACCESS_RANDOM);
if (a == NULL) {
@@ -435,10 +436,10 @@ static jint android_content_AssetManager_addAssetPath(JNIEnv* env, jobject clazz
return 0;
}
- void* cookie;
+ int32_t cookie;
bool res = am->addAssetPath(String8(path8.c_str()), &cookie);
- return (res) ? (jint)cookie : 0;
+ return (res) ? static_cast<jint>(cookie) : 0;
}
static jboolean android_content_AssetManager_isUpToDate(JNIEnv* env, jobject clazz)
@@ -800,7 +801,7 @@ static jstring android_content_AssetManager_getCookieName(JNIEnv* env, jobject c
if (am == NULL) {
return NULL;
}
- String8 name(am->getAssetPath((void*)cookie));
+ String8 name(am->getAssetPath(static_cast<int32_t>(cookie)));
if (name.length() == 0) {
jniThrowException(env, "java/lang/IndexOutOfBoundsException", "Empty cookie name");
return NULL;
@@ -1386,7 +1387,7 @@ static jint android_content_AssetManager_openXmlAssetNative(JNIEnv* env, jobject
}
Asset* a = cookie
- ? am->openNonAsset((void*)cookie, fileName8.c_str(), Asset::ACCESS_BUFFER)
+ ? am->openNonAsset(static_cast<int32_t>(cookie), fileName8.c_str(), Asset::ACCESS_BUFFER)
: am->openNonAsset(fileName8.c_str(), Asset::ACCESS_BUFFER);
if (a == NULL) {
diff --git a/core/jni/android_util_Binder.cpp b/core/jni/android_util_Binder.cpp
index 3ac2225ebbdb..475e926eafc4 100644
--- a/core/jni/android_util_Binder.cpp
+++ b/core/jni/android_util_Binder.cpp
@@ -267,7 +267,7 @@ protected:
//data.print();
//printf("\n");
jboolean res = env->CallBooleanMethod(mObject, gBinderOffsets.mExecTransact,
- code, (int32_t)&data, (int32_t)reply, flags);
+ code, reinterpret_cast<jlong>(&data), reinterpret_cast<jlong>(reply), flags);
jthrowable excep = env->ExceptionOccurred();
if (excep) {
@@ -577,7 +577,7 @@ jobject javaObjectForIBinder(JNIEnv* env, const sp<IBinder>& val)
if (object != NULL) {
LOGDEATH("objectForBinder %p: created new proxy %p !\n", val.get(), object);
// The proxy holds a reference to the native object.
- env->SetIntField(object, gBinderProxyOffsets.mObject, (int)val.get());
+ env->SetLongField(object, gBinderProxyOffsets.mObject, (jlong)val.get());
val->incStrong((void*)javaObjectForIBinder);
// The native object needs to hold a weak reference back to the
@@ -590,7 +590,7 @@ jobject javaObjectForIBinder(JNIEnv* env, const sp<IBinder>& val)
// Also remember the death recipients registered on this proxy
sp<DeathRecipientList> drl = new DeathRecipientList;
drl->incStrong((void*)javaObjectForIBinder);
- env->SetIntField(object, gBinderProxyOffsets.mOrgue, reinterpret_cast<jint>(drl.get()));
+ env->SetLongField(object, gBinderProxyOffsets.mOrgue, reinterpret_cast<jlong>(drl.get()));
// Note that a new object reference has been created.
android_atomic_inc(&gNumProxyRefs);
@@ -606,13 +606,13 @@ sp<IBinder> ibinderForJavaObject(JNIEnv* env, jobject obj)
if (env->IsInstanceOf(obj, gBinderOffsets.mClass)) {
JavaBBinderHolder* jbh = (JavaBBinderHolder*)
- env->GetIntField(obj, gBinderOffsets.mObject);
+ env->GetLongField(obj, gBinderOffsets.mObject);
return jbh != NULL ? jbh->get(env, obj) : NULL;
}
if (env->IsInstanceOf(obj, gBinderProxyOffsets.mClass)) {
return (IBinder*)
- env->GetIntField(obj, gBinderProxyOffsets.mObject);
+ env->GetLongField(obj, gBinderProxyOffsets.mObject);
}
ALOGW("ibinderForJavaObject: %p is not a Binder object", obj);
@@ -764,15 +764,15 @@ static void android_os_Binder_init(JNIEnv* env, jobject obj)
}
ALOGV("Java Binder %p: acquiring first ref on holder %p", obj, jbh);
jbh->incStrong((void*)android_os_Binder_init);
- env->SetIntField(obj, gBinderOffsets.mObject, (int)jbh);
+ env->SetLongField(obj, gBinderOffsets.mObject, (jlong)jbh);
}
static void android_os_Binder_destroy(JNIEnv* env, jobject obj)
{
JavaBBinderHolder* jbh = (JavaBBinderHolder*)
- env->GetIntField(obj, gBinderOffsets.mObject);
+ env->GetLongField(obj, gBinderOffsets.mObject);
if (jbh != NULL) {
- env->SetIntField(obj, gBinderOffsets.mObject, 0);
+ env->SetLongField(obj, gBinderOffsets.mObject, 0);
ALOGV("Java Binder %p: removing ref on holder %p", obj, jbh);
jbh->decStrong((void*)android_os_Binder_init);
} else {
@@ -812,11 +812,11 @@ static int int_register_android_os_Binder(JNIEnv* env)
gBinderOffsets.mClass = (jclass) env->NewGlobalRef(clazz);
gBinderOffsets.mExecTransact
- = env->GetMethodID(clazz, "execTransact", "(IIII)Z");
+ = env->GetMethodID(clazz, "execTransact", "(IJJI)Z");
assert(gBinderOffsets.mExecTransact);
gBinderOffsets.mObject
- = env->GetFieldID(clazz, "mObject", "I");
+ = env->GetFieldID(clazz, "mObject", "J");
assert(gBinderOffsets.mObject);
return AndroidRuntime::registerNativeMethods(
@@ -911,7 +911,7 @@ static int int_register_android_os_BinderInternal(JNIEnv* env)
static jboolean android_os_BinderProxy_pingBinder(JNIEnv* env, jobject obj)
{
IBinder* target = (IBinder*)
- env->GetIntField(obj, gBinderProxyOffsets.mObject);
+ env->GetLongField(obj, gBinderProxyOffsets.mObject);
if (target == NULL) {
return JNI_FALSE;
}
@@ -921,7 +921,7 @@ static jboolean android_os_BinderProxy_pingBinder(JNIEnv* env, jobject obj)
static jstring android_os_BinderProxy_getInterfaceDescriptor(JNIEnv* env, jobject obj)
{
- IBinder* target = (IBinder*) env->GetIntField(obj, gBinderProxyOffsets.mObject);
+ IBinder* target = (IBinder*) env->GetLongField(obj, gBinderProxyOffsets.mObject);
if (target != NULL) {
const String16& desc = target->getInterfaceDescriptor();
return env->NewString(desc.string(), desc.size());
@@ -934,7 +934,7 @@ static jstring android_os_BinderProxy_getInterfaceDescriptor(JNIEnv* env, jobjec
static jboolean android_os_BinderProxy_isBinderAlive(JNIEnv* env, jobject obj)
{
IBinder* target = (IBinder*)
- env->GetIntField(obj, gBinderProxyOffsets.mObject);
+ env->GetLongField(obj, gBinderProxyOffsets.mObject);
if (target == NULL) {
return JNI_FALSE;
}
@@ -943,13 +943,20 @@ static jboolean android_os_BinderProxy_isBinderAlive(JNIEnv* env, jobject obj)
}
static int getprocname(pid_t pid, char *buf, size_t len) {
- char filename[20];
+ char filename[32];
FILE *f;
- sprintf(filename, "/proc/%d/cmdline", pid);
+ snprintf(filename, sizeof(filename), "/proc/%d/cmdline", pid);
f = fopen(filename, "r");
- if (!f) { *buf = '\0'; return 1; }
- if (!fgets(buf, len, f)) { *buf = '\0'; return 2; }
+ if (!f) {
+ *buf = '\0';
+ return 1;
+ }
+ if (!fgets(buf, len, f)) {
+ *buf = '\0';
+ fclose(f);
+ return 2;
+ }
fclose(f);
return 0;
}
@@ -1055,7 +1062,7 @@ static jboolean android_os_BinderProxy_transact(JNIEnv* env, jobject obj,
}
IBinder* target = (IBinder*)
- env->GetIntField(obj, gBinderProxyOffsets.mObject);
+ env->GetLongField(obj, gBinderProxyOffsets.mObject);
if (target == NULL) {
jniThrowException(env, "java/lang/IllegalStateException", "Binder has been finalized!");
return JNI_FALSE;
@@ -1102,7 +1109,7 @@ static void android_os_BinderProxy_linkToDeath(JNIEnv* env, jobject obj,
}
IBinder* target = (IBinder*)
- env->GetIntField(obj, gBinderProxyOffsets.mObject);
+ env->GetLongField(obj, gBinderProxyOffsets.mObject);
if (target == NULL) {
ALOGW("Binder has been finalized when calling linkToDeath() with recip=%p)\n", recipient);
assert(false);
@@ -1112,7 +1119,7 @@ static void android_os_BinderProxy_linkToDeath(JNIEnv* env, jobject obj,
if (!target->localBinder()) {
DeathRecipientList* list = (DeathRecipientList*)
- env->GetIntField(obj, gBinderProxyOffsets.mOrgue);
+ env->GetLongField(obj, gBinderProxyOffsets.mOrgue);
sp<JavaDeathRecipient> jdr = new JavaDeathRecipient(env, recipient, list);
status_t err = target->linkToDeath(jdr, NULL, flags);
if (err != NO_ERROR) {
@@ -1134,7 +1141,7 @@ static jboolean android_os_BinderProxy_unlinkToDeath(JNIEnv* env, jobject obj,
}
IBinder* target = (IBinder*)
- env->GetIntField(obj, gBinderProxyOffsets.mObject);
+ env->GetLongField(obj, gBinderProxyOffsets.mObject);
if (target == NULL) {
ALOGW("Binder has been finalized when calling linkToDeath() with recip=%p)\n", recipient);
return JNI_FALSE;
@@ -1147,7 +1154,7 @@ static jboolean android_os_BinderProxy_unlinkToDeath(JNIEnv* env, jobject obj,
// If we find the matching recipient, proceed to unlink using that
DeathRecipientList* list = (DeathRecipientList*)
- env->GetIntField(obj, gBinderProxyOffsets.mOrgue);
+ env->GetLongField(obj, gBinderProxyOffsets.mOrgue);
sp<JavaDeathRecipient> origJDR = list->find(recipient);
LOGDEATH(" unlink found list %p and JDR %p", list, origJDR.get());
if (origJDR != NULL) {
@@ -1176,13 +1183,13 @@ static jboolean android_os_BinderProxy_unlinkToDeath(JNIEnv* env, jobject obj,
static void android_os_BinderProxy_destroy(JNIEnv* env, jobject obj)
{
IBinder* b = (IBinder*)
- env->GetIntField(obj, gBinderProxyOffsets.mObject);
+ env->GetLongField(obj, gBinderProxyOffsets.mObject);
DeathRecipientList* drl = (DeathRecipientList*)
- env->GetIntField(obj, gBinderProxyOffsets.mOrgue);
+ env->GetLongField(obj, gBinderProxyOffsets.mOrgue);
LOGDEATH("Destroying BinderProxy %p: binder=%p drl=%p\n", obj, b, drl);
- env->SetIntField(obj, gBinderProxyOffsets.mObject, 0);
- env->SetIntField(obj, gBinderProxyOffsets.mOrgue, 0);
+ env->SetLongField(obj, gBinderProxyOffsets.mObject, 0);
+ env->SetLongField(obj, gBinderProxyOffsets.mOrgue, 0);
drl->decStrong((void*)javaObjectForIBinder);
b->decStrong((void*)javaObjectForIBinder);
@@ -1224,13 +1231,13 @@ static int int_register_android_os_BinderProxy(JNIEnv* env)
assert(gBinderProxyOffsets.mSendDeathNotice);
gBinderProxyOffsets.mObject
- = env->GetFieldID(clazz, "mObject", "I");
+ = env->GetFieldID(clazz, "mObject", "J");
assert(gBinderProxyOffsets.mObject);
gBinderProxyOffsets.mSelf
= env->GetFieldID(clazz, "mSelf", "Ljava/lang/ref/WeakReference;");
assert(gBinderProxyOffsets.mSelf);
gBinderProxyOffsets.mOrgue
- = env->GetFieldID(clazz, "mOrgue", "I");
+ = env->GetFieldID(clazz, "mOrgue", "J");
assert(gBinderProxyOffsets.mOrgue);
clazz = env->FindClass("java/lang/Class");
diff --git a/core/jni/android_util_EventLog.cpp b/core/jni/android_util_EventLog.cpp
index 83d8aa237922..25934200e0c9 100644
--- a/core/jni/android_util_EventLog.cpp
+++ b/core/jni/android_util_EventLog.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007 The Android Open Source Project
+ * Copyright (C) 2007-2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,6 +21,8 @@
#include "jni.h"
#include "log/logger.h"
+#define UNUSED __attribute__((__unused__))
+
// The size of the tag number comes out of the payload size.
#define MAX_EVENT_PAYLOAD (LOGGER_ENTRY_MAX_PAYLOAD - sizeof(int32_t))
@@ -44,7 +46,8 @@ static jclass gStringClass;
* In class android.util.EventLog:
* static native int writeEvent(int tag, int value)
*/
-static jint android_util_EventLog_writeEvent_Integer(JNIEnv* env, jobject clazz,
+static jint android_util_EventLog_writeEvent_Integer(JNIEnv* env UNUSED,
+ jobject clazz UNUSED,
jint tag, jint value)
{
return android_btWriteLog(tag, EVENT_TYPE_INT, &value, sizeof(value));
@@ -54,7 +57,8 @@ static jint android_util_EventLog_writeEvent_Integer(JNIEnv* env, jobject clazz,
* In class android.util.EventLog:
* static native int writeEvent(long tag, long value)
*/
-static jint android_util_EventLog_writeEvent_Long(JNIEnv* env, jobject clazz,
+static jint android_util_EventLog_writeEvent_Long(JNIEnv* env UNUSED,
+ jobject clazz UNUSED,
jint tag, jlong value)
{
return android_btWriteLog(tag, EVENT_TYPE_LONG, &value, sizeof(value));
@@ -64,7 +68,8 @@ static jint android_util_EventLog_writeEvent_Long(JNIEnv* env, jobject clazz,
* In class android.util.EventLog:
* static native int writeEvent(int tag, String value)
*/
-static jint android_util_EventLog_writeEvent_String(JNIEnv* env, jobject clazz,
+static jint android_util_EventLog_writeEvent_String(JNIEnv* env,
+ jobject clazz UNUSED,
jint tag, jstring value) {
uint8_t buf[MAX_EVENT_PAYLOAD];
@@ -142,18 +147,21 @@ static jint android_util_EventLog_writeEvent_Array(JNIEnv* env, jobject clazz,
* In class android.util.EventLog:
* static native void readEvents(int[] tags, Collection<Event> output)
*
- * Reads events from the event log, typically /dev/log/events
+ * Reads events from the event log
*/
-static void android_util_EventLog_readEvents(JNIEnv* env, jobject clazz,
+static void android_util_EventLog_readEvents(JNIEnv* env, jobject clazz UNUSED,
jintArray tags,
jobject out) {
+
if (tags == NULL || out == NULL) {
jniThrowNullPointerException(env, NULL);
return;
}
- int fd = open("/dev/" LOGGER_LOG_EVENTS, O_RDONLY | O_NONBLOCK);
- if (fd < 0) {
+ struct logger_list *logger_list = android_logger_list_open(
+ LOG_ID_EVENTS, O_RDONLY | O_NONBLOCK, 0, 0);
+
+ if (!logger_list) {
jniThrowIOException(env, errno);
return;
}
@@ -161,41 +169,26 @@ static void android_util_EventLog_readEvents(JNIEnv* env, jobject clazz,
jsize tagLength = env->GetArrayLength(tags);
jint *tagValues = env->GetIntArrayElements(tags, NULL);
- uint8_t buf[LOGGER_ENTRY_MAX_LEN];
- struct timeval timeout = {0, 0};
- fd_set readset;
- FD_ZERO(&readset);
-
- for (;;) {
- // Use a short select() to try to avoid problems hanging on read().
- // This means we block for 5ms at the end of the log -- oh well.
- timeout.tv_usec = 5000;
- FD_SET(fd, &readset);
- int r = select(fd + 1, &readset, NULL, NULL, &timeout);
- if (r == 0) {
- break; // no more events
- } else if (r < 0 && errno == EINTR) {
- continue; // interrupted by signal, try again
- } else if (r < 0) {
- jniThrowIOException(env, errno); // Will throw on return
- break;
- }
+ while (1) {
+ log_msg log_msg;
+ int ret = android_logger_list_read(logger_list, &log_msg);
- int len = read(fd, buf, sizeof(buf));
- if (len == 0 || (len < 0 && errno == EAGAIN)) {
- break; // no more events
- } else if (len < 0 && errno == EINTR) {
- continue; // interrupted by signal, try again
- } else if (len < 0) {
- jniThrowIOException(env, errno); // Will throw on return
+ if (ret == 0) {
break;
- } else if ((size_t) len < sizeof(logger_entry) + sizeof(int32_t)) {
- jniThrowException(env, "java/io/IOException", "Event too short");
+ }
+ if (ret < 0) {
+ if (errno == EINTR) {
+ continue;
+ }
+ if (errno == EINVAL) {
+ jniThrowException(env, "java/io/IOException", "Event too short");
+ } else if (errno != EAGAIN) {
+ jniThrowIOException(env, errno); // Will throw on return
+ }
break;
}
- logger_entry* entry = (logger_entry*) buf;
- int32_t tag = * (int32_t*) (buf + sizeof(*entry));
+ int32_t tag = * (int32_t *) log_msg.msg();
int found = 0;
for (int i = 0; !found && i < tagLength; ++i) {
@@ -203,16 +196,20 @@ static void android_util_EventLog_readEvents(JNIEnv* env, jobject clazz,
}
if (found) {
- jsize len = sizeof(*entry) + entry->len;
+ jsize len = ret;
jbyteArray array = env->NewByteArray(len);
- if (array == NULL) break;
+ if (array == NULL) {
+ break;
+ }
jbyte *bytes = env->GetByteArrayElements(array, NULL);
- memcpy(bytes, buf, len);
+ memcpy(bytes, log_msg.buf, len);
env->ReleaseByteArrayElements(array, bytes, 0);
jobject event = env->NewObject(gEventClass, gEventInitID, array);
- if (event == NULL) break;
+ if (event == NULL) {
+ break;
+ }
env->CallBooleanMethod(out, gCollectionAddID, event);
env->DeleteLocalRef(event);
@@ -220,7 +217,8 @@ static void android_util_EventLog_readEvents(JNIEnv* env, jobject clazz,
}
}
- close(fd);
+ android_logger_list_close(logger_list);
+
env->ReleaseIntArrayElements(tags, tagValues, 0);
}
diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp
index 8325217cc9fd..cbed99f9acad 100644
--- a/core/jni/android_util_Process.cpp
+++ b/core/jni/android_util_Process.cpp
@@ -344,23 +344,6 @@ jint android_os_Process_getThreadPriority(JNIEnv* env, jobject clazz,
return pri;
}
-jboolean android_os_Process_setOomAdj(JNIEnv* env, jobject clazz,
- jint pid, jint adj)
-{
-#ifdef HAVE_OOM_ADJ
- char text[64];
- sprintf(text, "/proc/%d/oom_adj", pid);
- int fd = open(text, O_WRONLY);
- if (fd >= 0) {
- sprintf(text, "%d", adj);
- write(fd, text, strlen(text));
- close(fd);
- }
- return true;
-#endif
- return false;
-}
-
jboolean android_os_Process_setSwappiness(JNIEnv *env, jobject clazz,
jint pid, jboolean is_increased)
{
@@ -422,7 +405,7 @@ static int pid_compare(const void* v1, const void* v2)
return *((const jint*)v1) - *((const jint*)v2);
}
-static jlong getFreeMemoryImpl(const char* const sums[], const int sumsLen[], int num)
+static jlong getFreeMemoryImpl(const char* const sums[], const size_t sumsLen[], size_t num)
{
int fd = open("/proc/meminfo", O_RDONLY);
@@ -441,7 +424,7 @@ static jlong getFreeMemoryImpl(const char* const sums[], const int sumsLen[], in
}
buffer[len] = 0;
- int numFound = 0;
+ size_t numFound = 0;
jlong mem = 0;
char* p = buffer;
@@ -473,14 +456,14 @@ static jlong getFreeMemoryImpl(const char* const sums[], const int sumsLen[], in
static jlong android_os_Process_getFreeMemory(JNIEnv* env, jobject clazz)
{
static const char* const sums[] = { "MemFree:", "Cached:", NULL };
- static const int sumsLen[] = { strlen("MemFree:"), strlen("Cached:"), 0 };
+ static const size_t sumsLen[] = { strlen("MemFree:"), strlen("Cached:"), 0 };
return getFreeMemoryImpl(sums, sumsLen, 2);
}
static jlong android_os_Process_getTotalMemory(JNIEnv* env, jobject clazz)
{
static const char* const sums[] = { "MemTotal:", NULL };
- static const int sumsLen[] = { strlen("MemTotal:"), 0 };
+ static const size_t sumsLen[] = { strlen("MemTotal:"), 0 };
return getFreeMemoryImpl(sums, sumsLen, 1);
}
@@ -745,7 +728,7 @@ jboolean android_os_Process_parseProcLineArray(JNIEnv* env, jobject clazz,
jsize end = -1;
if ((mode&PROC_PARENS) != 0) {
- while (buffer[i] != ')' && i < endIndex) {
+ while (i < endIndex && buffer[i] != ')') {
i++;
}
end = i;
@@ -757,7 +740,7 @@ jboolean android_os_Process_parseProcLineArray(JNIEnv* env, jobject clazz,
end = i;
i++;
}
- while (buffer[i] != term && i < endIndex) {
+ while (i < endIndex && buffer[i] != term) {
i++;
}
if (end < 0) {
@@ -767,7 +750,7 @@ jboolean android_os_Process_parseProcLineArray(JNIEnv* env, jobject clazz,
if (i < endIndex) {
i++;
if ((mode&PROC_COMBINE) != 0) {
- while (buffer[i] == term && i < endIndex) {
+ while (i < endIndex && buffer[i] == term) {
i++;
}
}
@@ -1023,7 +1006,6 @@ static const JNINativeMethod methods[] = {
{"setThreadGroup", "(II)V", (void*)android_os_Process_setThreadGroup},
{"setProcessGroup", "(II)V", (void*)android_os_Process_setProcessGroup},
{"getProcessGroup", "(I)I", (void*)android_os_Process_getProcessGroup},
- {"setOomAdj", "(II)Z", (void*)android_os_Process_setOomAdj},
{"setSwappiness", "(IZ)Z", (void*)android_os_Process_setSwappiness},
{"setArgV0", "(Ljava/lang/String;)V", (void*)android_os_Process_setArgV0},
{"setUid", "(I)I", (void*)android_os_Process_setUid},
diff --git a/core/jni/android_view_DisplayEventReceiver.cpp b/core/jni/android_view_DisplayEventReceiver.cpp
index 64fb27b3e18a..d4cc159b871c 100644
--- a/core/jni/android_view_DisplayEventReceiver.cpp
+++ b/core/jni/android_view_DisplayEventReceiver.cpp
@@ -87,7 +87,7 @@ status_t NativeDisplayEventReceiver::initialize() {
return result;
}
- int rc = mMessageQueue->getLooper()->addFd(mReceiver.getFd(), 0, ALOOPER_EVENT_INPUT,
+ int rc = mMessageQueue->getLooper()->addFd(mReceiver.getFd(), 0, Looper::EVENT_INPUT,
this, NULL);
if (rc < 0) {
return UNKNOWN_ERROR;
@@ -125,13 +125,13 @@ status_t NativeDisplayEventReceiver::scheduleVsync() {
}
int NativeDisplayEventReceiver::handleEvent(int receiveFd, int events, void* data) {
- if (events & (ALOOPER_EVENT_ERROR | ALOOPER_EVENT_HANGUP)) {
+ if (events & (Looper::EVENT_ERROR | Looper::EVENT_HANGUP)) {
ALOGE("Display event receiver pipe was closed or an error occurred. "
"events=0x%x", events);
return 0; // remove the callback
}
- if (!(events & ALOOPER_EVENT_INPUT)) {
+ if (!(events & Looper::EVENT_INPUT)) {
ALOGW("Received spurious callback for unhandled poll event. "
"events=0x%x", events);
return 1; // keep the callback
@@ -207,7 +207,7 @@ void NativeDisplayEventReceiver::dispatchHotplug(nsecs_t timestamp, int32_t id,
}
-static jint nativeInit(JNIEnv* env, jclass clazz, jobject receiverObj,
+static jlong nativeInit(JNIEnv* env, jclass clazz, jobject receiverObj,
jobject messageQueueObj) {
sp<MessageQueue> messageQueue = android_os_MessageQueue_getMessageQueue(env, messageQueueObj);
if (messageQueue == NULL) {
@@ -226,17 +226,17 @@ static jint nativeInit(JNIEnv* env, jclass clazz, jobject receiverObj,
}
receiver->incStrong(gDisplayEventReceiverClassInfo.clazz); // retain a reference for the object
- return reinterpret_cast<jint>(receiver.get());
+ return reinterpret_cast<jlong>(receiver.get());
}
-static void nativeDispose(JNIEnv* env, jclass clazz, jint receiverPtr) {
+static void nativeDispose(JNIEnv* env, jclass clazz, jlong receiverPtr) {
sp<NativeDisplayEventReceiver> receiver =
reinterpret_cast<NativeDisplayEventReceiver*>(receiverPtr);
receiver->dispose();
receiver->decStrong(gDisplayEventReceiverClassInfo.clazz); // drop reference held by the object
}
-static void nativeScheduleVsync(JNIEnv* env, jclass clazz, jint receiverPtr) {
+static void nativeScheduleVsync(JNIEnv* env, jclass clazz, jlong receiverPtr) {
sp<NativeDisplayEventReceiver> receiver =
reinterpret_cast<NativeDisplayEventReceiver*>(receiverPtr);
status_t status = receiver->scheduleVsync();
@@ -251,12 +251,12 @@ static void nativeScheduleVsync(JNIEnv* env, jclass clazz, jint receiverPtr) {
static JNINativeMethod gMethods[] = {
/* name, signature, funcPtr */
{ "nativeInit",
- "(Landroid/view/DisplayEventReceiver;Landroid/os/MessageQueue;)I",
+ "(Landroid/view/DisplayEventReceiver;Landroid/os/MessageQueue;)J",
(void*)nativeInit },
{ "nativeDispose",
- "(I)V",
+ "(J)V",
(void*)nativeDispose },
- { "nativeScheduleVsync", "(I)V",
+ { "nativeScheduleVsync", "(J)V",
(void*)nativeScheduleVsync }
};
diff --git a/core/jni/android_view_GLES20Canvas.cpp b/core/jni/android_view_GLES20Canvas.cpp
index b720e73785bd..118af1b07509 100644
--- a/core/jni/android_view_GLES20Canvas.cpp
+++ b/core/jni/android_view_GLES20Canvas.cpp
@@ -94,17 +94,17 @@ static struct {
// ----------------------------------------------------------------------------
static void android_view_GLES20Canvas_flushCaches(JNIEnv* env, jobject clazz,
- Caches::FlushMode mode) {
+ jint mode) {
if (Caches::hasInstance()) {
- Caches::getInstance().flush(mode);
+ Caches::getInstance().flush(static_cast<Caches::FlushMode>(mode));
}
}
-static bool android_view_GLES20Canvas_initCaches(JNIEnv* env, jobject clazz) {
+static jboolean android_view_GLES20Canvas_initCaches(JNIEnv* env, jobject clazz) {
if (Caches::hasInstance()) {
- return Caches::getInstance().init();
+ return Caches::getInstance().init() ? JNI_TRUE : JNI_FALSE;
}
- return false;
+ return JNI_FALSE;
}
static void android_view_GLES20Canvas_terminateCaches(JNIEnv* env, jobject clazz) {
@@ -132,15 +132,16 @@ static void android_view_GLES20Canvas_initAtlas(JNIEnv* env, jobject clazz,
// Constructors
// ----------------------------------------------------------------------------
-static OpenGLRenderer* android_view_GLES20Canvas_createRenderer(JNIEnv* env, jobject clazz) {
+static jlong android_view_GLES20Canvas_createRenderer(JNIEnv* env, jobject clazz) {
RENDERER_LOGD("Create OpenGLRenderer");
OpenGLRenderer* renderer = new OpenGLRenderer();
renderer->initProperties();
- return renderer;
+ return reinterpret_cast<jlong>(renderer);
}
static void android_view_GLES20Canvas_destroyRenderer(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer) {
+ jlong rendererHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
RENDERER_LOGD("Destroy OpenGLRenderer");
delete renderer;
}
@@ -150,23 +151,27 @@ static void android_view_GLES20Canvas_destroyRenderer(JNIEnv* env, jobject clazz
// ----------------------------------------------------------------------------
static void android_view_GLES20Canvas_setViewport(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jint width, jint height) {
+ jlong rendererHandle, jint width, jint height) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->setViewport(width, height);
}
-static int android_view_GLES20Canvas_prepare(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jboolean opaque) {
+static jint android_view_GLES20Canvas_prepare(JNIEnv* env, jobject clazz,
+ jlong rendererHandle, jboolean opaque) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
return renderer->prepare(opaque);
}
-static int android_view_GLES20Canvas_prepareDirty(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jint left, jint top, jint right, jint bottom,
+static jint android_view_GLES20Canvas_prepareDirty(JNIEnv* env, jobject clazz,
+ jlong rendererHandle, jint left, jint top, jint right, jint bottom,
jboolean opaque) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
return renderer->prepareDirty(left, top, right, bottom, opaque);
}
static void android_view_GLES20Canvas_finish(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer) {
+ jlong rendererHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->finish();
}
@@ -175,7 +180,8 @@ static jint android_view_GLES20Canvas_getStencilSize(JNIEnv* env, jobject clazz)
}
static void android_view_GLES20Canvas_setName(JNIEnv* env,
- jobject clazz, OpenGLRenderer* renderer, jstring name) {
+ jobject clazz, jlong rendererHandle, jstring name) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
if (name != NULL) {
const char* textArray = env->GetStringUTFChars(name, NULL);
renderer->setName(textArray);
@@ -186,12 +192,14 @@ static void android_view_GLES20Canvas_setName(JNIEnv* env,
}
static void android_view_GLES20Canvas_setCountOverdrawEnabled(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jboolean enabled) {
+ jlong rendererHandle, jboolean enabled) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->setCountOverdrawEnabled(enabled);
}
static jfloat android_view_GLES20Canvas_getOverdraw(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer) {
+ jlong rendererHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
return renderer->getOverdraw();
}
@@ -200,23 +208,30 @@ static jfloat android_view_GLES20Canvas_getOverdraw(JNIEnv* env, jobject clazz,
// ----------------------------------------------------------------------------
static jint android_view_GLES20Canvas_callDrawGLFunction(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, Functor* functor) {
+ jlong rendererHandle, jlong functorHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ Functor* functor = reinterpret_cast<Functor*>(functorHandle);
android::uirenderer::Rect dirty;
return renderer->callDrawGLFunction(functor, dirty);
}
static void android_view_GLES20Canvas_detachFunctor(JNIEnv* env,
- jobject clazz, OpenGLRenderer* renderer, Functor* functor) {
+ jobject clazz, jlong rendererHandle, jlong functorHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ Functor* functor = reinterpret_cast<Functor*>(functorHandle);
renderer->detachFunctor(functor);
}
static void android_view_GLES20Canvas_attachFunctor(JNIEnv* env,
- jobject clazz, OpenGLRenderer* renderer, Functor* functor) {
+ jobject clazz, jlong rendererHandle, jlong functorHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ Functor* functor = reinterpret_cast<Functor*>(functorHandle);
renderer->attachFunctor(functor);
}
static jint android_view_GLES20Canvas_invokeFunctors(JNIEnv* env,
- jobject clazz, OpenGLRenderer* renderer, jobject dirty) {
+ jobject clazz, jlong rendererHandle, jobject dirty) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
android::uirenderer::Rect bounds;
status_t status = renderer->invokeFunctors(bounds);
if (status != DrawGlInfo::kStatusDone && dirty != NULL) {
@@ -242,23 +257,27 @@ static jint android_view_GLES20Canvas_getMaxTextureHeight(JNIEnv* env, jobject c
// State
// ----------------------------------------------------------------------------
-static jint android_view_GLES20Canvas_save(JNIEnv* env, jobject clazz, OpenGLRenderer* renderer,
+static jint android_view_GLES20Canvas_save(JNIEnv* env, jobject clazz, jlong rendererHandle,
jint flags) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
return renderer->save(flags);
}
static jint android_view_GLES20Canvas_getSaveCount(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer) {
+ jlong rendererHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
return renderer->getSaveCount();
}
static void android_view_GLES20Canvas_restore(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer) {
+ jlong rendererHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->restore();
}
static void android_view_GLES20Canvas_restoreToCount(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jint saveCount) {
+ jlong rendererHandle, jint saveCount) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->restoreToCount(saveCount);
}
@@ -267,26 +286,32 @@ static void android_view_GLES20Canvas_restoreToCount(JNIEnv* env, jobject clazz,
// ----------------------------------------------------------------------------
static jint android_view_GLES20Canvas_saveLayer(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloat left, jfloat top, jfloat right, jfloat bottom,
- SkPaint* paint, jint saveFlags) {
+ jlong rendererHandle, jfloat left, jfloat top, jfloat right, jfloat bottom,
+ jlong paintHandle, jint saveFlags) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
return renderer->saveLayer(left, top, right, bottom, paint, saveFlags);
}
static jint android_view_GLES20Canvas_saveLayerClip(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, SkPaint* paint, jint saveFlags) {
+ jlong rendererHandle, jlong paintHandle, jint saveFlags) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
const android::uirenderer::Rect& bounds(renderer->getClipBounds());
return renderer->saveLayer(bounds.left, bounds.top, bounds.right, bounds.bottom,
paint, saveFlags);
}
static jint android_view_GLES20Canvas_saveLayerAlpha(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloat left, jfloat top, jfloat right, jfloat bottom,
+ jlong rendererHandle, jfloat left, jfloat top, jfloat right, jfloat bottom,
jint alpha, jint saveFlags) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
return renderer->saveLayerAlpha(left, top, right, bottom, alpha, saveFlags);
}
static jint android_view_GLES20Canvas_saveLayerAlphaClip(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jint alpha, jint saveFlags) {
+ jlong rendererHandle, jint alpha, jint saveFlags) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
const android::uirenderer::Rect& bounds(renderer->getClipBounds());
return renderer->saveLayerAlpha(bounds.left, bounds.top, bounds.right, bounds.bottom,
alpha, saveFlags);
@@ -296,41 +321,57 @@ static jint android_view_GLES20Canvas_saveLayerAlphaClip(JNIEnv* env, jobject cl
// Clipping
// ----------------------------------------------------------------------------
-static bool android_view_GLES20Canvas_quickReject(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloat left, jfloat top, jfloat right, jfloat bottom) {
- return renderer->quickRejectNoScissor(left, top, right, bottom);
+static jboolean android_view_GLES20Canvas_quickReject(JNIEnv* env, jobject clazz,
+ jlong rendererHandle, jfloat left, jfloat top, jfloat right, jfloat bottom) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ bool result = renderer->quickRejectNoScissor(left, top, right, bottom);
+ return result ? JNI_TRUE : JNI_FALSE;
}
-static bool android_view_GLES20Canvas_clipRectF(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloat left, jfloat top, jfloat right, jfloat bottom,
- SkRegion::Op op) {
- return renderer->clipRect(left, top, right, bottom, op);
+static jboolean android_view_GLES20Canvas_clipRectF(JNIEnv* env, jobject clazz,
+ jlong rendererHandle, jfloat left, jfloat top, jfloat right, jfloat bottom,
+ jint opHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkRegion::Op op = static_cast<SkRegion::Op>(opHandle);
+ bool result;
+ result = renderer->clipRect(left, top, right, bottom, op);
+ return result ? JNI_TRUE : JNI_FALSE;
}
-static bool android_view_GLES20Canvas_clipRect(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jint left, jint top, jint right, jint bottom,
- SkRegion::Op op) {
- return renderer->clipRect(float(left), float(top), float(right), float(bottom), op);
+static jboolean android_view_GLES20Canvas_clipRect(JNIEnv* env, jobject clazz,
+ jlong rendererHandle, jint left, jint top, jint right, jint bottom,
+ jint opHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkRegion::Op op = static_cast<SkRegion::Op>(opHandle);
+ bool result = renderer->clipRect(float(left), float(top), float(right), float(bottom), op);
+ return result ? JNI_TRUE : JNI_FALSE;
}
-static bool android_view_GLES20Canvas_clipPath(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, SkPath* path, SkRegion::Op op) {
- return renderer->clipPath(path, op);
+static jboolean android_view_GLES20Canvas_clipPath(JNIEnv* env, jobject clazz,
+ jlong rendererHandle, jlong pathHandle, jint opHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
+ SkRegion::Op op = static_cast<SkRegion::Op>(opHandle);
+ return renderer->clipPath(path, op) ? JNI_TRUE : JNI_FALSE;
}
-static bool android_view_GLES20Canvas_clipRegion(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, SkRegion* region, SkRegion::Op op) {
- return renderer->clipRegion(region, op);
+static jboolean android_view_GLES20Canvas_clipRegion(JNIEnv* env, jobject clazz,
+ jlong rendererHandle, jlong regionHandle, jint opHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkRegion* region = reinterpret_cast<SkRegion*>(regionHandle);
+ SkRegion::Op op = static_cast<SkRegion::Op>(opHandle);
+ return renderer->clipRegion(region, op) ? JNI_TRUE : JNI_FALSE;
}
-static bool android_view_GLES20Canvas_getClipBounds(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jobject rect) {
+static jboolean android_view_GLES20Canvas_getClipBounds(JNIEnv* env, jobject clazz,
+ jlong rendererHandle, jobject rect) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
const android::uirenderer::Rect& bounds(renderer->getClipBounds());
env->CallVoidMethod(rect, gRectClassInfo.set,
int(bounds.left), int(bounds.top), int(bounds.right), int(bounds.bottom));
- return !bounds.isEmpty();
+ return !bounds.isEmpty() ? JNI_TRUE : JNI_FALSE;
}
// ----------------------------------------------------------------------------
@@ -338,37 +379,47 @@ static bool android_view_GLES20Canvas_getClipBounds(JNIEnv* env, jobject clazz,
// ----------------------------------------------------------------------------
static void android_view_GLES20Canvas_translate(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloat dx, jfloat dy) {
+ jlong rendererHandle, jfloat dx, jfloat dy) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->translate(dx, dy);
}
static void android_view_GLES20Canvas_rotate(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloat degrees) {
+ jlong rendererHandle, jfloat degrees) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->rotate(degrees);
}
static void android_view_GLES20Canvas_scale(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloat sx, jfloat sy) {
+ jlong rendererHandle, jfloat sx, jfloat sy) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->scale(sx, sy);
}
static void android_view_GLES20Canvas_skew(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloat sx, jfloat sy) {
+ jlong rendererHandle, jfloat sx, jfloat sy) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->skew(sx, sy);
}
static void android_view_GLES20Canvas_setMatrix(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, SkMatrix* matrix) {
+ jlong rendererHandle, jlong matrixHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
renderer->setMatrix(matrix);
}
static void android_view_GLES20Canvas_getMatrix(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, SkMatrix* matrix) {
+ jlong rendererHandle, jlong matrixHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
renderer->getMatrix(matrix);
}
static void android_view_GLES20Canvas_concatMatrix(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, SkMatrix* matrix) {
+ jlong rendererHandle, jlong matrixHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
renderer->concatMatrix(matrix);
}
@@ -377,8 +428,11 @@ static void android_view_GLES20Canvas_concatMatrix(JNIEnv* env, jobject clazz,
// ----------------------------------------------------------------------------
static void android_view_GLES20Canvas_drawBitmap(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, SkBitmap* bitmap, jbyteArray buffer,
- jfloat left, jfloat top, SkPaint* paint) {
+ jlong rendererHandle, jlong bitmapHandle, jbyteArray buffer,
+ jfloat left, jfloat top, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
// This object allows the renderer to allocate a global JNI ref to the buffer object.
JavaHeapBitmapRef bitmapRef(env, bitmap, buffer);
@@ -386,9 +440,12 @@ static void android_view_GLES20Canvas_drawBitmap(JNIEnv* env, jobject clazz,
}
static void android_view_GLES20Canvas_drawBitmapRect(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, SkBitmap* bitmap, jbyteArray buffer,
- float srcLeft, float srcTop, float srcRight, float srcBottom,
- float dstLeft, float dstTop, float dstRight, float dstBottom, SkPaint* paint) {
+ jlong rendererHandle, jlong bitmapHandle, jbyteArray buffer,
+ jfloat srcLeft, jfloat srcTop, jfloat srcRight, jfloat srcBottom,
+ jfloat dstLeft, jfloat dstTop, jfloat dstRight, jfloat dstBottom, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
// This object allows the renderer to allocate a global JNI ref to the buffer object.
JavaHeapBitmapRef bitmapRef(env, bitmap, buffer);
@@ -397,8 +454,12 @@ static void android_view_GLES20Canvas_drawBitmapRect(JNIEnv* env, jobject clazz,
}
static void android_view_GLES20Canvas_drawBitmapMatrix(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, SkBitmap* bitmap, jbyteArray buffer,
- SkMatrix* matrix, SkPaint* paint) {
+ jlong rendererHandle, jlong bitmapHandle, jbyteArray buffer,
+ jlong matrixHandle, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
// This object allows the renderer to allocate a global JNI ref to the buffer object.
JavaHeapBitmapRef bitmapRef(env, bitmap, buffer);
@@ -406,8 +467,10 @@ static void android_view_GLES20Canvas_drawBitmapMatrix(JNIEnv* env, jobject claz
}
static void android_view_GLES20Canvas_drawBitmapData(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jintArray colors, jint offset, jint stride,
- jfloat left, jfloat top, jint width, jint height, jboolean hasAlpha, SkPaint* paint) {
+ jlong rendererHandle, jintArray colors, jint offset, jint stride,
+ jfloat left, jfloat top, jint width, jint height, jboolean hasAlpha, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
SkBitmap* bitmap = new SkBitmap;
bitmap->setConfig(hasAlpha ? SkBitmap::kARGB_8888_Config : SkBitmap::kRGB_565_Config,
width, height);
@@ -431,9 +494,12 @@ static void android_view_GLES20Canvas_drawBitmapData(JNIEnv* env, jobject clazz,
}
static void android_view_GLES20Canvas_drawBitmapMesh(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, SkBitmap* bitmap, jbyteArray buffer,
+ jlong rendererHandle, jlong bitmapHandle, jbyteArray buffer,
jint meshWidth, jint meshHeight, jfloatArray vertices, jint offset, jintArray colors,
- jint colorOffset, SkPaint* paint) {
+ jint colorOffset, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
// This object allows the renderer to allocate a global JNI ref to the buffer object.
JavaHeapBitmapRef bitmapRef(env, bitmap, buffer);
@@ -447,8 +513,13 @@ static void android_view_GLES20Canvas_drawBitmapMesh(JNIEnv* env, jobject clazz,
}
static void android_view_GLES20Canvas_drawPatch(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, SkBitmap* bitmap, jbyteArray buffer, Res_png_9patch* patch,
- float left, float top, float right, float bottom, SkPaint* paint) {
+ jlong rendererHandle, jlong bitmapHandle, jbyteArray buffer, jlong patchHandle,
+ jfloat left, jfloat top, jfloat right, jfloat bottom, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+ Res_png_9patch* patch = reinterpret_cast<Res_png_9patch*>(patchHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+
// This object allows the renderer to allocate a global JNI ref to the buffer object.
JavaHeapBitmapRef bitmapRef(env, bitmap, buffer);
@@ -456,41 +527,56 @@ static void android_view_GLES20Canvas_drawPatch(JNIEnv* env, jobject clazz,
}
static void android_view_GLES20Canvas_drawColor(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jint color, SkXfermode::Mode mode) {
+ jlong rendererHandle, jint color, SkXfermode::Mode mode) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->drawColor(color, mode);
}
static void android_view_GLES20Canvas_drawRect(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloat left, jfloat top, jfloat right, jfloat bottom,
- SkPaint* paint) {
+ jlong rendererHandle, jfloat left, jfloat top, jfloat right, jfloat bottom,
+ jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
renderer->drawRect(left, top, right, bottom, paint);
}
static void android_view_GLES20Canvas_drawRoundRect(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloat left, jfloat top, jfloat right, jfloat bottom,
- jfloat rx, jfloat ry, SkPaint* paint) {
+ jlong rendererHandle, jfloat left, jfloat top, jfloat right, jfloat bottom,
+ jfloat rx, jfloat ry, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
renderer->drawRoundRect(left, top, right, bottom, rx, ry, paint);
}
static void android_view_GLES20Canvas_drawCircle(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloat x, jfloat y, jfloat radius, SkPaint* paint) {
+ jlong rendererHandle, jfloat x, jfloat y, jfloat radius, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
renderer->drawCircle(x, y, radius, paint);
}
static void android_view_GLES20Canvas_drawOval(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloat left, jfloat top, jfloat right, jfloat bottom,
- SkPaint* paint) {
+ jlong rendererHandle, jfloat left, jfloat top, jfloat right, jfloat bottom,
+ jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
renderer->drawOval(left, top, right, bottom, paint);
}
static void android_view_GLES20Canvas_drawArc(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloat left, jfloat top, jfloat right, jfloat bottom,
- jfloat startAngle, jfloat sweepAngle, jboolean useCenter, SkPaint* paint) {
+ jlong rendererHandle, jfloat left, jfloat top, jfloat right, jfloat bottom,
+ jfloat startAngle, jfloat sweepAngle, jboolean useCenter, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
renderer->drawArc(left, top, right, bottom, startAngle, sweepAngle, useCenter, paint);
}
static void android_view_GLES20Canvas_drawRegionAsRects(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, SkRegion* region, SkPaint* paint) {
+ jlong rendererHandle, jlong regionHandle, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkRegion* region = reinterpret_cast<SkRegion*>(regionHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+
if (paint->getStyle() != SkPaint::kFill_Style ||
(paint->isAntiAlias() && !renderer->isCurrentTransformSimple())) {
SkRegion::Iterator it(*region);
@@ -517,26 +603,35 @@ static void android_view_GLES20Canvas_drawRegionAsRects(JNIEnv* env, jobject cla
}
static void android_view_GLES20Canvas_drawRects(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloatArray rects, jint count, SkPaint* paint) {
+ jlong rendererHandle, jfloatArray rects, jint count, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
jfloat* storage = env->GetFloatArrayElements(rects, NULL);
renderer->drawRects(storage, count, paint);
env->ReleaseFloatArrayElements(rects, storage, 0);
}
static void android_view_GLES20Canvas_drawPoints(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloatArray points, jint offset, jint count, SkPaint* paint) {
+ jlong rendererHandle, jfloatArray points, jint offset, jint count, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
jfloat* storage = env->GetFloatArrayElements(points, NULL);
renderer->drawPoints(storage + offset, count, paint);
env->ReleaseFloatArrayElements(points, storage, 0);
}
static void android_view_GLES20Canvas_drawPath(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, SkPath* path, SkPaint* paint) {
+ jlong rendererHandle, jlong pathHandle, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
renderer->drawPath(path, paint);
}
static void android_view_GLES20Canvas_drawLines(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloatArray points, jint offset, jint count, SkPaint* paint) {
+ jlong rendererHandle, jfloatArray points, jint offset, jint count, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
jfloat* storage = env->GetFloatArrayElements(points, NULL);
renderer->drawLines(storage + offset, count, paint);
env->ReleaseFloatArrayElements(points, storage, 0);
@@ -547,24 +642,30 @@ static void android_view_GLES20Canvas_drawLines(JNIEnv* env, jobject clazz,
// ----------------------------------------------------------------------------
static void android_view_GLES20Canvas_resetModifiers(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jint modifiers) {
+ jlong rendererHandle, jint modifiers) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
if (modifiers & MODIFIER_SHADOW) renderer->resetShadow();
if (modifiers & MODIFIER_SHADER) renderer->resetShader();
if (modifiers & MODIFIER_COLOR_FILTER) renderer->resetColorFilter();
}
static void android_view_GLES20Canvas_setupShader(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, SkiaShader* shader) {
+ jlong rendererHandle, jlong shaderHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkiaShader* shader = reinterpret_cast<SkiaShader*>(shaderHandle);
renderer->setupShader(shader);
}
static void android_view_GLES20Canvas_setupColorFilter(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, SkiaColorFilter* filter) {
+ jlong rendererHandle, jlong filterHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkiaColorFilter* filter = reinterpret_cast<SkiaColorFilter*>(filterHandle);
renderer->setupColorFilter(filter);
}
static void android_view_GLES20Canvas_setupShadow(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jfloat radius, jfloat dx, jfloat dy, jint color) {
+ jlong rendererHandle, jfloat radius, jfloat dx, jfloat dy, jint color) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->setupShadow(radius, dx, dy, color);
}
@@ -573,12 +674,14 @@ static void android_view_GLES20Canvas_setupShadow(JNIEnv* env, jobject clazz,
// ----------------------------------------------------------------------------
static void android_view_GLES20Canvas_setupPaintFilter(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jint clearBits, jint setBits) {
+ jlong rendererHandle, jint clearBits, jint setBits) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->setupPaintFilter(clearBits, setBits);
}
static void android_view_GLES20Canvas_resetPaintFilter(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer) {
+ jlong rendererHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->resetPaintFilter();
}
@@ -658,24 +761,31 @@ static void renderTextRun(OpenGLRenderer* renderer, const jchar* text,
}
static void android_view_GLES20Canvas_drawTextArray(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jcharArray text, jint index, jint count,
- jfloat x, jfloat y, jint flags, SkPaint* paint) {
+ jlong rendererHandle, jcharArray text, jint index, jint count,
+ jfloat x, jfloat y, jint flags, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
jchar* textArray = env->GetCharArrayElements(text, NULL);
renderText(renderer, textArray + index, count, x, y, flags, paint);
env->ReleaseCharArrayElements(text, textArray, JNI_ABORT);
}
static void android_view_GLES20Canvas_drawText(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jstring text, jint start, jint end,
- jfloat x, jfloat y, jint flags, SkPaint* paint) {
+ jlong rendererHandle, jstring text, jint start, jint end,
+ jfloat x, jfloat y, jint flags, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
const jchar* textArray = env->GetStringChars(text, NULL);
renderText(renderer, textArray + start, end - start, x, y, flags, paint);
env->ReleaseStringChars(text, textArray);
}
static void android_view_GLES20Canvas_drawTextArrayOnPath(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jcharArray text, jint index, jint count,
- SkPath* path, jfloat hOffset, jfloat vOffset, jint flags, SkPaint* paint) {
+ jlong rendererHandle, jcharArray text, jint index, jint count,
+ jlong pathHandle, jfloat hOffset, jfloat vOffset, jint flags, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
jchar* textArray = env->GetCharArrayElements(text, NULL);
renderTextOnPath(renderer, textArray + index, count, path,
hOffset, vOffset, flags, paint);
@@ -683,8 +793,11 @@ static void android_view_GLES20Canvas_drawTextArrayOnPath(JNIEnv* env, jobject c
}
static void android_view_GLES20Canvas_drawTextOnPath(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jstring text, jint start, jint end,
- SkPath* path, jfloat hOffset, jfloat vOffset, jint flags, SkPaint* paint) {
+ jlong rendererHandle, jstring text, jint start, jint end,
+ jlong pathHandle, jfloat hOffset, jfloat vOffset, jint flags, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
const jchar* textArray = env->GetStringChars(text, NULL);
renderTextOnPath(renderer, textArray + start, end - start, path,
hOffset, vOffset, flags, paint);
@@ -692,9 +805,11 @@ static void android_view_GLES20Canvas_drawTextOnPath(JNIEnv* env, jobject clazz,
}
static void android_view_GLES20Canvas_drawTextRunArray(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jcharArray text, jint index, jint count,
+ jlong rendererHandle, jcharArray text, jint index, jint count,
jint contextIndex, jint contextCount, jfloat x, jfloat y, jint dirFlags,
- SkPaint* paint) {
+ jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
jchar* textArray = env->GetCharArrayElements(text, NULL);
renderTextRun(renderer, textArray + contextIndex, index - contextIndex,
count, contextCount, x, y, dirFlags, paint);
@@ -702,9 +817,11 @@ static void android_view_GLES20Canvas_drawTextRunArray(JNIEnv* env, jobject claz
}
static void android_view_GLES20Canvas_drawTextRun(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jstring text, jint start, jint end,
- jint contextStart, int contextEnd, jfloat x, jfloat y, jint dirFlags,
- SkPaint* paint) {
+ jlong rendererHandle, jstring text, jint start, jint end,
+ jint contextStart, jint contextEnd, jfloat x, jfloat y, jint dirFlags,
+ jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
const jchar* textArray = env->GetStringChars(text, NULL);
jint count = end - start;
jint contextCount = contextEnd - contextStart;
@@ -729,8 +846,10 @@ static void renderPosText(OpenGLRenderer* renderer, const jchar* text, int count
}
static void android_view_GLES20Canvas_drawPosTextArray(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jcharArray text, jint index, jint count,
- jfloatArray pos, SkPaint* paint) {
+ jlong rendererHandle, jcharArray text, jint index, jint count,
+ jfloatArray pos, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
jchar* textArray = env->GetCharArrayElements(text, NULL);
jfloat* positions = env->GetFloatArrayElements(pos, NULL);
@@ -741,8 +860,10 @@ static void android_view_GLES20Canvas_drawPosTextArray(JNIEnv* env, jobject claz
}
static void android_view_GLES20Canvas_drawPosText(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, jstring text, jint start, jint end,
- jfloatArray pos, SkPaint* paint) {
+ jlong rendererHandle, jstring text, jint start, jint end,
+ jfloatArray pos, jlong paintHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
const jchar* textArray = env->GetStringChars(text, NULL);
jfloat* positions = env->GetFloatArrayElements(pos, NULL);
@@ -756,24 +877,31 @@ static void android_view_GLES20Canvas_drawPosText(JNIEnv* env, jobject clazz,
// Display lists
// ----------------------------------------------------------------------------
-static DisplayList* android_view_GLES20Canvas_getDisplayList(JNIEnv* env,
- jobject clazz, DisplayListRenderer* renderer, DisplayList* displayList) {
- return renderer->getDisplayList(displayList);
+static jlong android_view_GLES20Canvas_getDisplayList(JNIEnv* env,
+ jobject clazz, jlong rendererHandle, jlong displayListHandle) {
+ DisplayListRenderer* renderer = reinterpret_cast<DisplayListRenderer*>(rendererHandle);
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
+ DisplayList* list = renderer->getDisplayList(displayList);
+ return reinterpret_cast<jlong>(list);
}
-static OpenGLRenderer* android_view_GLES20Canvas_createDisplayListRenderer(JNIEnv* env,
+static jlong android_view_GLES20Canvas_createDisplayListRenderer(JNIEnv* env,
jobject clazz) {
- return new DisplayListRenderer;
+ OpenGLRenderer* renderer = new DisplayListRenderer;
+ return reinterpret_cast<jlong>(renderer);
}
static void android_view_GLES20Canvas_resetDisplayListRenderer(JNIEnv* env,
- jobject clazz, DisplayListRenderer* renderer) {
+ jobject clazz, jlong rendererHandle) {
+ DisplayListRenderer* renderer = reinterpret_cast<DisplayListRenderer*>(rendererHandle);
renderer->reset();
}
static jint android_view_GLES20Canvas_drawDisplayList(JNIEnv* env,
- jobject clazz, OpenGLRenderer* renderer, DisplayList* displayList,
+ jobject clazz, jlong rendererHandle, jlong displayListHandle,
jobject dirty, jint flags) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
android::uirenderer::Rect bounds;
status_t status = renderer->drawDisplayList(displayList, bounds, flags);
if (status != DrawGlInfo::kStatusDone && dirty != NULL) {
@@ -784,7 +912,9 @@ static jint android_view_GLES20Canvas_drawDisplayList(JNIEnv* env,
}
static void android_view_GLES20Canvas_outputDisplayList(JNIEnv* env,
- jobject clazz, OpenGLRenderer* renderer, DisplayList* displayList) {
+ jobject clazz, jlong rendererHandle, jlong displayListHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
renderer->outputDisplayList(displayList);
}
@@ -793,26 +923,29 @@ static void android_view_GLES20Canvas_outputDisplayList(JNIEnv* env,
// ----------------------------------------------------------------------------
static void android_view_GLES20Canvas_interrupt(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer) {
+ jlong rendererHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->interrupt();
}
static void android_view_GLES20Canvas_resume(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer) {
+ jlong rendererHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->resume();
}
-static OpenGLRenderer* android_view_GLES20Canvas_createLayerRenderer(JNIEnv* env,
- jobject clazz, Layer* layer) {
+static jlong android_view_GLES20Canvas_createLayerRenderer(JNIEnv* env,
+ jobject clazz, jlong layerHandle) {
+ Layer* layer = reinterpret_cast<Layer*>(layerHandle);
if (layer) {
OpenGLRenderer* renderer = new LayerRenderer(layer);
renderer->initProperties();
- return renderer;
+ return reinterpret_cast<jlong>(renderer);
}
return NULL;
}
-static Layer* android_view_GLES20Canvas_createTextureLayer(JNIEnv* env, jobject clazz,
+static jlong android_view_GLES20Canvas_createTextureLayer(JNIEnv* env, jobject clazz,
jboolean isOpaque, jintArray layerInfo) {
Layer* layer = LayerRenderer::createTextureLayer(isOpaque);
@@ -822,10 +955,10 @@ static Layer* android_view_GLES20Canvas_createTextureLayer(JNIEnv* env, jobject
env->ReleaseIntArrayElements(layerInfo, storage, 0);
}
- return layer;
+ return reinterpret_cast<jlong>(layer);
}
-static Layer* android_view_GLES20Canvas_createLayer(JNIEnv* env, jobject clazz,
+static jlong android_view_GLES20Canvas_createLayer(JNIEnv* env, jobject clazz,
jint width, jint height, jboolean isOpaque, jintArray layerInfo) {
Layer* layer = LayerRenderer::createLayer(width, height, isOpaque);
@@ -836,44 +969,51 @@ static Layer* android_view_GLES20Canvas_createLayer(JNIEnv* env, jobject clazz,
env->ReleaseIntArrayElements(layerInfo, storage, 0);
}
- return layer;
+ return reinterpret_cast<jlong>(layer);
}
-static bool android_view_GLES20Canvas_resizeLayer(JNIEnv* env, jobject clazz,
- Layer* layer, jint width, jint height, jintArray layerInfo) {
+static jboolean android_view_GLES20Canvas_resizeLayer(JNIEnv* env, jobject clazz,
+ jlong layerHandle, jint width, jint height, jintArray layerInfo) {
+ Layer* layer = reinterpret_cast<Layer*>(layerHandle);
if (LayerRenderer::resizeLayer(layer, width, height)) {
jint* storage = env->GetIntArrayElements(layerInfo, NULL);
storage[0] = layer->getWidth();
storage[1] = layer->getHeight();
env->ReleaseIntArrayElements(layerInfo, storage, 0);
- return true;
+ return JNI_TRUE;
}
- return false;
+ return JNI_FALSE;
}
static void android_view_GLES20Canvas_setLayerPaint(JNIEnv* env, jobject clazz,
- Layer* layer, SkPaint* paint) {
+ jlong layerHandle, jlong paintHandle) {
+ Layer* layer = reinterpret_cast<Layer*>(layerHandle);
+ SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
if (layer) {
layer->setPaint(paint);
}
}
static void android_view_GLES20Canvas_setLayerColorFilter(JNIEnv* env, jobject clazz,
- Layer* layer, SkiaColorFilter* colorFilter) {
+ jlong layerHandle, jlong colorFilterHandle) {
+ Layer* layer = reinterpret_cast<Layer*>(layerHandle);
+ SkiaColorFilter* colorFilter = reinterpret_cast<SkiaColorFilter*>(colorFilterHandle);
if (layer) {
layer->setColorFilter(colorFilter);
}
}
static void android_view_GLES20Canvas_setOpaqueLayer(JNIEnv* env, jobject clazz,
- Layer* layer, jboolean isOpaque) {
+ jlong layerHandle, jboolean isOpaque) {
+ Layer* layer = reinterpret_cast<Layer*>(layerHandle);
if (layer) {
layer->setBlend(!isOpaque);
}
}
static void android_view_GLES20Canvas_updateTextureLayer(JNIEnv* env, jobject clazz,
- Layer* layer, jint width, jint height, jboolean isOpaque, jobject surface) {
+ jlong layerHandle, jint width, jint height, jboolean isOpaque, jobject surface) {
+ Layer* layer = reinterpret_cast<Layer*>(layerHandle);
float transform[16];
sp<GLConsumer> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, surface));
@@ -903,57 +1043,75 @@ static void android_view_GLES20Canvas_updateTextureLayer(JNIEnv* env, jobject cl
}
static void android_view_GLES20Canvas_updateRenderLayer(JNIEnv* env, jobject clazz,
- Layer* layer, OpenGLRenderer* renderer, DisplayList* displayList,
+ jlong layerHandle, jlong rendererHandle, jlong displayListHandle,
jint left, jint top, jint right, jint bottom) {
+ Layer* layer = reinterpret_cast<Layer*>(layerHandle);
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
layer->updateDeferred(renderer, displayList, left, top, right, bottom);
}
static void android_view_GLES20Canvas_clearLayerTexture(JNIEnv* env, jobject clazz,
- Layer* layer) {
+ jlong layerHandle) {
+ Layer* layer = reinterpret_cast<Layer*>(layerHandle);
layer->clearTexture();
}
static void android_view_GLES20Canvas_setTextureLayerTransform(JNIEnv* env, jobject clazz,
- Layer* layer, SkMatrix* matrix) {
+ jlong layerHandle, jlong matrixHandle) {
+ Layer* layer = reinterpret_cast<Layer*>(layerHandle);
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
layer->getTransform().load(*matrix);
}
-static void android_view_GLES20Canvas_destroyLayer(JNIEnv* env, jobject clazz, Layer* layer) {
+static void android_view_GLES20Canvas_destroyLayer(JNIEnv* env, jobject clazz, jlong layerHandle) {
+ Layer* layer = reinterpret_cast<Layer*>(layerHandle);
LayerRenderer::destroyLayer(layer);
}
static void android_view_GLES20Canvas_destroyLayerDeferred(JNIEnv* env,
- jobject clazz, Layer* layer) {
+ jobject clazz, jlong layerHandle) {
+ Layer* layer = reinterpret_cast<Layer*>(layerHandle);
LayerRenderer::destroyLayerDeferred(layer);
}
static void android_view_GLES20Canvas_drawLayer(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, Layer* layer, jfloat x, jfloat y) {
+ jlong rendererHandle, jlong layerHandle, jfloat x, jfloat y) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ Layer* layer = reinterpret_cast<Layer*>(layerHandle);
renderer->drawLayer(layer, x, y);
}
static jboolean android_view_GLES20Canvas_copyLayer(JNIEnv* env, jobject clazz,
- Layer* layer, SkBitmap* bitmap) {
+ jlong layerHandle, jlong bitmapHandle) {
+ Layer* layer = reinterpret_cast<Layer*>(layerHandle);
+ SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
return LayerRenderer::copyLayer(layer, bitmap);
}
static void android_view_GLES20Canvas_pushLayerUpdate(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, Layer* layer) {
+ jlong rendererHandle, jlong layerHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ Layer* layer = reinterpret_cast<Layer*>(layerHandle);
renderer->pushLayerUpdate(layer);
}
static void android_view_GLES20Canvas_cancelLayerUpdate(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer, Layer* layer) {
+ jlong rendererHandle, jlong layerHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
+ Layer* layer = reinterpret_cast<Layer*>(layerHandle);
renderer->cancelLayerUpdate(layer);
}
static void android_view_GLES20Canvas_clearLayerUpdates(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer) {
+ jlong rendererHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->clearLayerUpdates();
}
static void android_view_GLES20Canvas_flushLayerUpdates(JNIEnv* env, jobject clazz,
- OpenGLRenderer* renderer) {
+ jlong rendererHandle) {
+ OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererHandle);
renderer->flushLayerUpdates();
}
@@ -1008,132 +1166,132 @@ static JNINativeMethod gMethods[] = {
{ "nInitAtlas", "(Landroid/view/GraphicBuffer;[II)V",
(void*) android_view_GLES20Canvas_initAtlas },
- { "nCreateRenderer", "()I", (void*) android_view_GLES20Canvas_createRenderer },
- { "nDestroyRenderer", "(I)V", (void*) android_view_GLES20Canvas_destroyRenderer },
- { "nSetViewport", "(III)V", (void*) android_view_GLES20Canvas_setViewport },
- { "nPrepare", "(IZ)I", (void*) android_view_GLES20Canvas_prepare },
- { "nPrepareDirty", "(IIIIIZ)I", (void*) android_view_GLES20Canvas_prepareDirty },
- { "nFinish", "(I)V", (void*) android_view_GLES20Canvas_finish },
- { "nSetName", "(ILjava/lang/String;)V",
+ { "nCreateRenderer", "()J", (void*) android_view_GLES20Canvas_createRenderer },
+ { "nDestroyRenderer", "(J)V", (void*) android_view_GLES20Canvas_destroyRenderer },
+ { "nSetViewport", "(JII)V", (void*) android_view_GLES20Canvas_setViewport },
+ { "nPrepare", "(JZ)I", (void*) android_view_GLES20Canvas_prepare },
+ { "nPrepareDirty", "(JIIIIZ)I", (void*) android_view_GLES20Canvas_prepareDirty },
+ { "nFinish", "(J)V", (void*) android_view_GLES20Canvas_finish },
+ { "nSetName", "(JLjava/lang/String;)V",
(void*) android_view_GLES20Canvas_setName },
- { "nSetCountOverdrawEnabled", "(IZ)V", (void*) android_view_GLES20Canvas_setCountOverdrawEnabled },
- { "nGetOverdraw", "(I)F", (void*) android_view_GLES20Canvas_getOverdraw },
+ { "nSetCountOverdrawEnabled", "(JZ)V", (void*) android_view_GLES20Canvas_setCountOverdrawEnabled },
+ { "nGetOverdraw", "(J)F", (void*) android_view_GLES20Canvas_getOverdraw },
{ "nGetStencilSize", "()I", (void*) android_view_GLES20Canvas_getStencilSize },
- { "nCallDrawGLFunction", "(II)I", (void*) android_view_GLES20Canvas_callDrawGLFunction },
- { "nDetachFunctor", "(II)V", (void*) android_view_GLES20Canvas_detachFunctor },
- { "nAttachFunctor", "(II)V", (void*) android_view_GLES20Canvas_attachFunctor },
- { "nInvokeFunctors", "(ILandroid/graphics/Rect;)I",
+ { "nCallDrawGLFunction", "(JJ)I", (void*) android_view_GLES20Canvas_callDrawGLFunction },
+ { "nDetachFunctor", "(JJ)V", (void*) android_view_GLES20Canvas_detachFunctor },
+ { "nAttachFunctor", "(JJ)V", (void*) android_view_GLES20Canvas_attachFunctor },
+ { "nInvokeFunctors", "(JLandroid/graphics/Rect;)I",
(void*) android_view_GLES20Canvas_invokeFunctors },
- { "nSave", "(II)I", (void*) android_view_GLES20Canvas_save },
- { "nRestore", "(I)V", (void*) android_view_GLES20Canvas_restore },
- { "nRestoreToCount", "(II)V", (void*) android_view_GLES20Canvas_restoreToCount },
- { "nGetSaveCount", "(I)I", (void*) android_view_GLES20Canvas_getSaveCount },
-
- { "nSaveLayer", "(IFFFFII)I", (void*) android_view_GLES20Canvas_saveLayer },
- { "nSaveLayer", "(III)I", (void*) android_view_GLES20Canvas_saveLayerClip },
- { "nSaveLayerAlpha", "(IFFFFII)I", (void*) android_view_GLES20Canvas_saveLayerAlpha },
- { "nSaveLayerAlpha", "(III)I", (void*) android_view_GLES20Canvas_saveLayerAlphaClip },
-
- { "nQuickReject", "(IFFFF)Z", (void*) android_view_GLES20Canvas_quickReject },
- { "nClipRect", "(IFFFFI)Z", (void*) android_view_GLES20Canvas_clipRectF },
- { "nClipRect", "(IIIIII)Z", (void*) android_view_GLES20Canvas_clipRect },
- { "nClipPath", "(III)Z", (void*) android_view_GLES20Canvas_clipPath },
- { "nClipRegion", "(III)Z", (void*) android_view_GLES20Canvas_clipRegion },
-
- { "nTranslate", "(IFF)V", (void*) android_view_GLES20Canvas_translate },
- { "nRotate", "(IF)V", (void*) android_view_GLES20Canvas_rotate },
- { "nScale", "(IFF)V", (void*) android_view_GLES20Canvas_scale },
- { "nSkew", "(IFF)V", (void*) android_view_GLES20Canvas_skew },
-
- { "nSetMatrix", "(II)V", (void*) android_view_GLES20Canvas_setMatrix },
- { "nGetMatrix", "(II)V", (void*) android_view_GLES20Canvas_getMatrix },
- { "nConcatMatrix", "(II)V", (void*) android_view_GLES20Canvas_concatMatrix },
-
- { "nDrawBitmap", "(II[BFFI)V", (void*) android_view_GLES20Canvas_drawBitmap },
- { "nDrawBitmap", "(II[BFFFFFFFFI)V",(void*) android_view_GLES20Canvas_drawBitmapRect },
- { "nDrawBitmap", "(II[BII)V", (void*) android_view_GLES20Canvas_drawBitmapMatrix },
- { "nDrawBitmap", "(I[IIIFFIIZI)V", (void*) android_view_GLES20Canvas_drawBitmapData },
-
- { "nDrawBitmapMesh", "(II[BII[FI[III)V",(void*) android_view_GLES20Canvas_drawBitmapMesh },
-
- { "nDrawPatch", "(II[BIFFFFI)V", (void*) android_view_GLES20Canvas_drawPatch },
-
- { "nDrawColor", "(III)V", (void*) android_view_GLES20Canvas_drawColor },
- { "nDrawRect", "(IFFFFI)V", (void*) android_view_GLES20Canvas_drawRect },
- { "nDrawRects", "(III)V", (void*) android_view_GLES20Canvas_drawRegionAsRects },
- { "nDrawRects", "(I[FII)V", (void*) android_view_GLES20Canvas_drawRects },
- { "nDrawRoundRect", "(IFFFFFFI)V", (void*) android_view_GLES20Canvas_drawRoundRect },
- { "nDrawCircle", "(IFFFI)V", (void*) android_view_GLES20Canvas_drawCircle },
- { "nDrawOval", "(IFFFFI)V", (void*) android_view_GLES20Canvas_drawOval },
- { "nDrawArc", "(IFFFFFFZI)V", (void*) android_view_GLES20Canvas_drawArc },
- { "nDrawPoints", "(I[FIII)V", (void*) android_view_GLES20Canvas_drawPoints },
-
- { "nDrawPath", "(III)V", (void*) android_view_GLES20Canvas_drawPath },
- { "nDrawLines", "(I[FIII)V", (void*) android_view_GLES20Canvas_drawLines },
-
- { "nResetModifiers", "(II)V", (void*) android_view_GLES20Canvas_resetModifiers },
- { "nSetupShader", "(II)V", (void*) android_view_GLES20Canvas_setupShader },
- { "nSetupColorFilter", "(II)V", (void*) android_view_GLES20Canvas_setupColorFilter },
- { "nSetupShadow", "(IFFFI)V", (void*) android_view_GLES20Canvas_setupShadow },
-
- { "nSetupPaintFilter", "(III)V", (void*) android_view_GLES20Canvas_setupPaintFilter },
- { "nResetPaintFilter", "(I)V", (void*) android_view_GLES20Canvas_resetPaintFilter },
-
- { "nDrawText", "(I[CIIFFII)V", (void*) android_view_GLES20Canvas_drawTextArray },
- { "nDrawText", "(ILjava/lang/String;IIFFII)V",
+ { "nSave", "(JI)I", (void*) android_view_GLES20Canvas_save },
+ { "nRestore", "(J)V", (void*) android_view_GLES20Canvas_restore },
+ { "nRestoreToCount", "(JI)V", (void*) android_view_GLES20Canvas_restoreToCount },
+ { "nGetSaveCount", "(J)I", (void*) android_view_GLES20Canvas_getSaveCount },
+
+ { "nSaveLayer", "(JFFFFJI)I", (void*) android_view_GLES20Canvas_saveLayer },
+ { "nSaveLayer", "(JJI)I", (void*) android_view_GLES20Canvas_saveLayerClip },
+ { "nSaveLayerAlpha", "(JFFFFII)I", (void*) android_view_GLES20Canvas_saveLayerAlpha },
+ { "nSaveLayerAlpha", "(JII)I", (void*) android_view_GLES20Canvas_saveLayerAlphaClip },
+
+ { "nQuickReject", "(JFFFF)Z", (void*) android_view_GLES20Canvas_quickReject },
+ { "nClipRect", "(JFFFFI)Z", (void*) android_view_GLES20Canvas_clipRectF },
+ { "nClipRect", "(JIIIII)Z", (void*) android_view_GLES20Canvas_clipRect },
+ { "nClipPath", "(JJI)Z", (void*) android_view_GLES20Canvas_clipPath },
+ { "nClipRegion", "(JJI)Z", (void*) android_view_GLES20Canvas_clipRegion },
+
+ { "nTranslate", "(JFF)V", (void*) android_view_GLES20Canvas_translate },
+ { "nRotate", "(JF)V", (void*) android_view_GLES20Canvas_rotate },
+ { "nScale", "(JFF)V", (void*) android_view_GLES20Canvas_scale },
+ { "nSkew", "(JFF)V", (void*) android_view_GLES20Canvas_skew },
+
+ { "nSetMatrix", "(JJ)V", (void*) android_view_GLES20Canvas_setMatrix },
+ { "nGetMatrix", "(JJ)V", (void*) android_view_GLES20Canvas_getMatrix },
+ { "nConcatMatrix", "(JJ)V", (void*) android_view_GLES20Canvas_concatMatrix },
+
+ { "nDrawBitmap", "(JJ[BFFJ)V", (void*) android_view_GLES20Canvas_drawBitmap },
+ { "nDrawBitmap", "(JJ[BFFFFFFFFJ)V",(void*) android_view_GLES20Canvas_drawBitmapRect },
+ { "nDrawBitmap", "(JJ[BJJ)V", (void*) android_view_GLES20Canvas_drawBitmapMatrix },
+ { "nDrawBitmap", "(J[IIIFFIIZJ)V", (void*) android_view_GLES20Canvas_drawBitmapData },
+
+ { "nDrawBitmapMesh", "(JJ[BII[FI[IIJ)V",(void*) android_view_GLES20Canvas_drawBitmapMesh },
+
+ { "nDrawPatch", "(JJ[BJFFFFJ)V", (void*) android_view_GLES20Canvas_drawPatch },
+
+ { "nDrawColor", "(JII)V", (void*) android_view_GLES20Canvas_drawColor },
+ { "nDrawRect", "(JFFFFJ)V", (void*) android_view_GLES20Canvas_drawRect },
+ { "nDrawRects", "(JJJ)V", (void*) android_view_GLES20Canvas_drawRegionAsRects },
+ { "nDrawRects", "(J[FIJ)V", (void*) android_view_GLES20Canvas_drawRects },
+ { "nDrawRoundRect", "(JFFFFFFJ)V", (void*) android_view_GLES20Canvas_drawRoundRect },
+ { "nDrawCircle", "(JFFFJ)V", (void*) android_view_GLES20Canvas_drawCircle },
+ { "nDrawOval", "(JFFFFJ)V", (void*) android_view_GLES20Canvas_drawOval },
+ { "nDrawArc", "(JFFFFFFZJ)V", (void*) android_view_GLES20Canvas_drawArc },
+ { "nDrawPoints", "(J[FIIJ)V", (void*) android_view_GLES20Canvas_drawPoints },
+
+ { "nDrawPath", "(JJJ)V", (void*) android_view_GLES20Canvas_drawPath },
+ { "nDrawLines", "(J[FIIJ)V", (void*) android_view_GLES20Canvas_drawLines },
+
+ { "nResetModifiers", "(JI)V", (void*) android_view_GLES20Canvas_resetModifiers },
+ { "nSetupShader", "(JJ)V", (void*) android_view_GLES20Canvas_setupShader },
+ { "nSetupColorFilter", "(JJ)V", (void*) android_view_GLES20Canvas_setupColorFilter },
+ { "nSetupShadow", "(JFFFI)V", (void*) android_view_GLES20Canvas_setupShadow },
+
+ { "nSetupPaintFilter", "(JII)V", (void*) android_view_GLES20Canvas_setupPaintFilter },
+ { "nResetPaintFilter", "(J)V", (void*) android_view_GLES20Canvas_resetPaintFilter },
+
+ { "nDrawText", "(J[CIIFFIJ)V", (void*) android_view_GLES20Canvas_drawTextArray },
+ { "nDrawText", "(JLjava/lang/String;IIFFIJ)V",
(void*) android_view_GLES20Canvas_drawText },
- { "nDrawTextOnPath", "(I[CIIIFFII)V", (void*) android_view_GLES20Canvas_drawTextArrayOnPath },
- { "nDrawTextOnPath", "(ILjava/lang/String;IIIFFII)V",
+ { "nDrawTextOnPath", "(J[CIIJFFIJ)V", (void*) android_view_GLES20Canvas_drawTextArrayOnPath },
+ { "nDrawTextOnPath", "(JLjava/lang/String;IIJFFIJ)V",
(void*) android_view_GLES20Canvas_drawTextOnPath },
- { "nDrawTextRun", "(I[CIIIIFFII)V", (void*) android_view_GLES20Canvas_drawTextRunArray },
- { "nDrawTextRun", "(ILjava/lang/String;IIIIFFII)V",
+ { "nDrawTextRun", "(J[CIIIIFFIJ)V", (void*) android_view_GLES20Canvas_drawTextRunArray },
+ { "nDrawTextRun", "(JLjava/lang/String;IIIIFFIJ)V",
(void*) android_view_GLES20Canvas_drawTextRun },
- { "nDrawPosText", "(I[CII[FI)V", (void*) android_view_GLES20Canvas_drawPosTextArray },
- { "nDrawPosText", "(ILjava/lang/String;II[FI)V",
+ { "nDrawPosText", "(J[CII[FJ)V", (void*) android_view_GLES20Canvas_drawPosTextArray },
+ { "nDrawPosText", "(JLjava/lang/String;II[FJ)V",
(void*) android_view_GLES20Canvas_drawPosText },
- { "nGetClipBounds", "(ILandroid/graphics/Rect;)Z",
+ { "nGetClipBounds", "(JLandroid/graphics/Rect;)Z",
(void*) android_view_GLES20Canvas_getClipBounds },
- { "nGetDisplayList", "(II)I", (void*) android_view_GLES20Canvas_getDisplayList },
- { "nOutputDisplayList", "(II)V", (void*) android_view_GLES20Canvas_outputDisplayList },
- { "nDrawDisplayList", "(IILandroid/graphics/Rect;I)I",
+ { "nGetDisplayList", "(JJ)J", (void*) android_view_GLES20Canvas_getDisplayList },
+ { "nOutputDisplayList", "(JJ)V", (void*) android_view_GLES20Canvas_outputDisplayList },
+ { "nDrawDisplayList", "(JJLandroid/graphics/Rect;I)I",
(void*) android_view_GLES20Canvas_drawDisplayList },
- { "nCreateDisplayListRenderer", "()I", (void*) android_view_GLES20Canvas_createDisplayListRenderer },
- { "nResetDisplayListRenderer", "(I)V", (void*) android_view_GLES20Canvas_resetDisplayListRenderer },
+ { "nCreateDisplayListRenderer", "()J", (void*) android_view_GLES20Canvas_createDisplayListRenderer },
+ { "nResetDisplayListRenderer", "(J)V", (void*) android_view_GLES20Canvas_resetDisplayListRenderer },
- { "nInterrupt", "(I)V", (void*) android_view_GLES20Canvas_interrupt },
- { "nResume", "(I)V", (void*) android_view_GLES20Canvas_resume },
+ { "nInterrupt", "(J)V", (void*) android_view_GLES20Canvas_interrupt },
+ { "nResume", "(J)V", (void*) android_view_GLES20Canvas_resume },
- { "nCreateLayerRenderer", "(I)I", (void*) android_view_GLES20Canvas_createLayerRenderer },
- { "nCreateLayer", "(IIZ[I)I", (void*) android_view_GLES20Canvas_createLayer },
- { "nResizeLayer", "(III[I)Z" , (void*) android_view_GLES20Canvas_resizeLayer },
- { "nSetLayerPaint", "(II)V", (void*) android_view_GLES20Canvas_setLayerPaint },
- { "nSetLayerColorFilter", "(II)V", (void*) android_view_GLES20Canvas_setLayerColorFilter },
- { "nSetOpaqueLayer", "(IZ)V", (void*) android_view_GLES20Canvas_setOpaqueLayer },
- { "nCreateTextureLayer", "(Z[I)I", (void*) android_view_GLES20Canvas_createTextureLayer },
- { "nUpdateTextureLayer", "(IIIZLandroid/graphics/SurfaceTexture;)V",
+ { "nCreateLayerRenderer", "(J)J", (void*) android_view_GLES20Canvas_createLayerRenderer },
+ { "nCreateLayer", "(IIZ[I)J", (void*) android_view_GLES20Canvas_createLayer },
+ { "nResizeLayer", "(JII[I)Z" , (void*) android_view_GLES20Canvas_resizeLayer },
+ { "nSetLayerPaint", "(JJ)V", (void*) android_view_GLES20Canvas_setLayerPaint },
+ { "nSetLayerColorFilter", "(JJ)V", (void*) android_view_GLES20Canvas_setLayerColorFilter },
+ { "nSetOpaqueLayer", "(JZ)V", (void*) android_view_GLES20Canvas_setOpaqueLayer },
+ { "nCreateTextureLayer", "(Z[I)J", (void*) android_view_GLES20Canvas_createTextureLayer },
+ { "nUpdateTextureLayer", "(JIIZLandroid/graphics/SurfaceTexture;)V",
(void*) android_view_GLES20Canvas_updateTextureLayer },
- { "nUpdateRenderLayer", "(IIIIIII)V", (void*) android_view_GLES20Canvas_updateRenderLayer },
- { "nClearLayerTexture", "(I)V", (void*) android_view_GLES20Canvas_clearLayerTexture },
- { "nDestroyLayer", "(I)V", (void*) android_view_GLES20Canvas_destroyLayer },
- { "nDestroyLayerDeferred", "(I)V", (void*) android_view_GLES20Canvas_destroyLayerDeferred },
- { "nDrawLayer", "(IIFF)V", (void*) android_view_GLES20Canvas_drawLayer },
- { "nCopyLayer", "(II)Z", (void*) android_view_GLES20Canvas_copyLayer },
- { "nClearLayerUpdates", "(I)V", (void*) android_view_GLES20Canvas_clearLayerUpdates },
- { "nFlushLayerUpdates", "(I)V", (void*) android_view_GLES20Canvas_flushLayerUpdates },
- { "nPushLayerUpdate", "(II)V", (void*) android_view_GLES20Canvas_pushLayerUpdate },
- { "nCancelLayerUpdate", "(II)V", (void*) android_view_GLES20Canvas_cancelLayerUpdate },
-
- { "nSetTextureLayerTransform", "(II)V", (void*) android_view_GLES20Canvas_setTextureLayerTransform },
+ { "nUpdateRenderLayer", "(JJJIIII)V", (void*) android_view_GLES20Canvas_updateRenderLayer },
+ { "nClearLayerTexture", "(J)V", (void*) android_view_GLES20Canvas_clearLayerTexture },
+ { "nDestroyLayer", "(J)V", (void*) android_view_GLES20Canvas_destroyLayer },
+ { "nDestroyLayerDeferred", "(J)V", (void*) android_view_GLES20Canvas_destroyLayerDeferred },
+ { "nDrawLayer", "(JJFF)V", (void*) android_view_GLES20Canvas_drawLayer },
+ { "nCopyLayer", "(JJ)Z", (void*) android_view_GLES20Canvas_copyLayer },
+ { "nClearLayerUpdates", "(J)V", (void*) android_view_GLES20Canvas_clearLayerUpdates },
+ { "nFlushLayerUpdates", "(J)V", (void*) android_view_GLES20Canvas_flushLayerUpdates },
+ { "nPushLayerUpdate", "(JJ)V", (void*) android_view_GLES20Canvas_pushLayerUpdate },
+ { "nCancelLayerUpdate", "(JJ)V", (void*) android_view_GLES20Canvas_cancelLayerUpdate },
+
+ { "nSetTextureLayerTransform", "(JJ)V", (void*) android_view_GLES20Canvas_setTextureLayerTransform },
{ "nGetMaximumTextureWidth", "()I", (void*) android_view_GLES20Canvas_getMaxTextureWidth },
{ "nGetMaximumTextureHeight", "()I", (void*) android_view_GLES20Canvas_getMaxTextureHeight },
diff --git a/core/jni/android_view_GLES20DisplayList.cpp b/core/jni/android_view_GLES20DisplayList.cpp
index 4ce2e24730c8..8e19efd0a086 100644
--- a/core/jni/android_view_GLES20DisplayList.cpp
+++ b/core/jni/android_view_GLES20DisplayList.cpp
@@ -42,17 +42,20 @@ using namespace uirenderer;
// ----------------------------------------------------------------------------
static void android_view_GLES20DisplayList_reset(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->reset();
}
static jint android_view_GLES20DisplayList_getDisplayListSize(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->getSize();
}
static void android_view_GLES20DisplayList_setDisplayListName(JNIEnv* env,
- jobject clazz, DisplayList* displayList, jstring name) {
+ jobject clazz, jlong displayListHandle, jstring name) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
if (name != NULL) {
const char* textArray = env->GetStringUTFChars(name, NULL);
displayList->setName(textArray);
@@ -61,7 +64,8 @@ static void android_view_GLES20DisplayList_setDisplayListName(JNIEnv* env,
}
static void android_view_GLES20DisplayList_destroyDisplayList(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
DisplayList::destroyDisplayListDeferred(displayList);
}
@@ -70,74 +74,91 @@ static void android_view_GLES20DisplayList_destroyDisplayList(JNIEnv* env,
// ----------------------------------------------------------------------------
static void android_view_GLES20DisplayList_setCaching(JNIEnv* env,
- jobject clazz, DisplayList* displayList, jboolean caching) {
+ jobject clazz, jlong displayListHandle, jboolean caching) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setCaching(caching);
}
+//serban
static void android_view_GLES20DisplayList_setStaticMatrix(JNIEnv* env,
- jobject clazz, DisplayList* displayList, SkMatrix* matrix) {
+ jobject clazz, jlong displayListHandle, jlong matrixHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
displayList->setStaticMatrix(matrix);
}
static void android_view_GLES20DisplayList_setAnimationMatrix(JNIEnv* env,
- jobject clazz, DisplayList* displayList, SkMatrix* matrix) {
+ jobject clazz, jlong displayListHandle, jlong matrixHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
displayList->setAnimationMatrix(matrix);
}
static void android_view_GLES20DisplayList_setClipToBounds(JNIEnv* env,
- jobject clazz, DisplayList* displayList, jboolean clipToBounds) {
+ jobject clazz, jlong displayListHandle, jboolean clipToBounds) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setClipToBounds(clipToBounds);
}
static void android_view_GLES20DisplayList_setAlpha(JNIEnv* env,
- jobject clazz, DisplayList* displayList, float alpha) {
+ jobject clazz, jlong displayListHandle, jfloat alpha) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setAlpha(alpha);
}
static void android_view_GLES20DisplayList_setHasOverlappingRendering(JNIEnv* env,
- jobject clazz, DisplayList* displayList, bool hasOverlappingRendering) {
+ jobject clazz, jlong displayListHandle, jboolean hasOverlappingRendering) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setHasOverlappingRendering(hasOverlappingRendering);
}
static void android_view_GLES20DisplayList_setTranslationX(JNIEnv* env,
- jobject clazz, DisplayList* displayList, float tx) {
+ jobject clazz, jlong displayListHandle, jfloat tx) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setTranslationX(tx);
}
static void android_view_GLES20DisplayList_setTranslationY(JNIEnv* env,
- jobject clazz, DisplayList* displayList, float ty) {
+ jobject clazz, jlong displayListHandle, jfloat ty) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setTranslationY(ty);
}
static void android_view_GLES20DisplayList_setRotation(JNIEnv* env,
- jobject clazz, DisplayList* displayList, float rotation) {
+ jobject clazz, jlong displayListHandle, jfloat rotation) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setRotation(rotation);
}
static void android_view_GLES20DisplayList_setRotationX(JNIEnv* env,
- jobject clazz, DisplayList* displayList, float rx) {
+ jobject clazz, jlong displayListHandle, jfloat rx) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setRotationX(rx);
}
static void android_view_GLES20DisplayList_setRotationY(JNIEnv* env,
- jobject clazz, DisplayList* displayList, float ry) {
+ jobject clazz, jlong displayListHandle, jfloat ry) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setRotationY(ry);
}
static void android_view_GLES20DisplayList_setScaleX(JNIEnv* env,
- jobject clazz, DisplayList* displayList, float sx) {
+ jobject clazz, jlong displayListHandle, jfloat sx) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setScaleX(sx);
}
static void android_view_GLES20DisplayList_setScaleY(JNIEnv* env,
- jobject clazz, DisplayList* displayList, float sy) {
+ jobject clazz, jlong displayListHandle, jfloat sy) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setScaleY(sy);
}
static void android_view_GLES20DisplayList_setTransformationInfo(JNIEnv* env,
- jobject clazz, DisplayList* displayList, float alpha,
- float translationX, float translationY, float rotation, float rotationX, float rotationY,
- float scaleX, float scaleY) {
+ jobject clazz, jlong displayListHandle, jfloat alpha,
+ jfloat translationX, jfloat translationY, jfloat rotation, jfloat rotationX, jfloat rotationY,
+ jfloat scaleX, jfloat scaleY) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setAlpha(alpha);
displayList->setTranslationX(translationX);
displayList->setTranslationY(translationY);
@@ -149,58 +170,70 @@ static void android_view_GLES20DisplayList_setTransformationInfo(JNIEnv* env,
}
static void android_view_GLES20DisplayList_setPivotX(JNIEnv* env,
- jobject clazz, DisplayList* displayList, float px) {
+ jobject clazz, jlong displayListHandle, jfloat px) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setPivotX(px);
}
static void android_view_GLES20DisplayList_setPivotY(JNIEnv* env,
- jobject clazz, DisplayList* displayList, float py) {
+ jobject clazz, jlong displayListHandle, jfloat py) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setPivotY(py);
}
static void android_view_GLES20DisplayList_setCameraDistance(JNIEnv* env,
- jobject clazz, DisplayList* displayList, float distance) {
+ jobject clazz, jlong displayListHandle, jfloat distance) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setCameraDistance(distance);
}
static void android_view_GLES20DisplayList_setLeft(JNIEnv* env,
- jobject clazz, DisplayList* displayList, int left) {
+ jobject clazz, jlong displayListHandle, jint left) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setLeft(left);
}
static void android_view_GLES20DisplayList_setTop(JNIEnv* env,
- jobject clazz, DisplayList* displayList, int top) {
+ jobject clazz, jlong displayListHandle, jint top) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setTop(top);
}
static void android_view_GLES20DisplayList_setRight(JNIEnv* env,
- jobject clazz, DisplayList* displayList, int right) {
+ jobject clazz, jlong displayListHandle, jint right) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setRight(right);
}
static void android_view_GLES20DisplayList_setBottom(JNIEnv* env,
- jobject clazz, DisplayList* displayList, int bottom) {
+ jobject clazz, jlong displayListHandle, jint bottom) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setBottom(bottom);
}
static void android_view_GLES20DisplayList_setLeftTopRightBottom(JNIEnv* env,
- jobject clazz, DisplayList* displayList, int left, int top,
+ jobject clazz, jlong displayListHandle, jint left, jint top,
int right, int bottom) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->setLeftTopRightBottom(left, top, right, bottom);
}
static void android_view_GLES20DisplayList_offsetLeftAndRight(JNIEnv* env,
- jobject clazz, DisplayList* displayList, float offset) {
+ jobject clazz, jlong displayListHandle, jfloat offset) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->offsetLeftRight(offset);
}
static void android_view_GLES20DisplayList_offsetTopAndBottom(JNIEnv* env,
- jobject clazz, DisplayList* displayList, float offset) {
+ jobject clazz, jlong displayListHandle, jfloat offset) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
displayList->offsetTopBottom(offset);
}
static void android_view_GLES20DisplayList_getMatrix(JNIEnv* env,
- jobject clazz, DisplayList* displayList, SkMatrix* matrix) {
+ jobject clazz, jlong displayListHandle, jlong matrixHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
+ SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle);
SkMatrix* source = displayList->getStaticMatrix();
if (source) {
matrix->setConcat(SkMatrix::I(), *source);
@@ -210,82 +243,98 @@ static void android_view_GLES20DisplayList_getMatrix(JNIEnv* env,
}
static jboolean android_view_GLES20DisplayList_hasOverlappingRendering(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->hasOverlappingRendering();
}
static jfloat android_view_GLES20DisplayList_getAlpha(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->getAlpha();
}
static jfloat android_view_GLES20DisplayList_getLeft(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->getLeft();
}
static jfloat android_view_GLES20DisplayList_getTop(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->getTop();
}
static jfloat android_view_GLES20DisplayList_getRight(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->getRight();
}
static jfloat android_view_GLES20DisplayList_getBottom(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->getBottom();
}
static jfloat android_view_GLES20DisplayList_getCameraDistance(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->getCameraDistance();
}
static jfloat android_view_GLES20DisplayList_getScaleX(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->getScaleX();
}
static jfloat android_view_GLES20DisplayList_getScaleY(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->getScaleY();
}
static jfloat android_view_GLES20DisplayList_getTranslationX(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->getTranslationX();
}
static jfloat android_view_GLES20DisplayList_getTranslationY(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->getTranslationY();
}
static jfloat android_view_GLES20DisplayList_getRotation(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->getRotation();
}
static jfloat android_view_GLES20DisplayList_getRotationX(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->getRotationX();
}
static jfloat android_view_GLES20DisplayList_getRotationY(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->getRotationY();
}
static jfloat android_view_GLES20DisplayList_getPivotX(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->getPivotX();
}
static jfloat android_view_GLES20DisplayList_getPivotY(JNIEnv* env,
- jobject clazz, DisplayList* displayList) {
+ jobject clazz, jlong displayListHandle) {
+ DisplayList* displayList = reinterpret_cast<DisplayList*>(displayListHandle);
return displayList->getPivotY();
}
@@ -299,58 +348,58 @@ const char* const kClassPathName = "android/view/GLES20DisplayList";
static JNINativeMethod gMethods[] = {
#ifdef USE_OPENGL_RENDERER
- { "nDestroyDisplayList", "(I)V", (void*) android_view_GLES20DisplayList_destroyDisplayList },
- { "nGetDisplayListSize", "(I)I", (void*) android_view_GLES20DisplayList_getDisplayListSize },
- { "nSetDisplayListName", "(ILjava/lang/String;)V",
+ { "nDestroyDisplayList", "(J)V", (void*) android_view_GLES20DisplayList_destroyDisplayList },
+ { "nGetDisplayListSize", "(J)I", (void*) android_view_GLES20DisplayList_getDisplayListSize },
+ { "nSetDisplayListName", "(JLjava/lang/String;)V",
(void*) android_view_GLES20DisplayList_setDisplayListName },
- { "nReset", "(I)V", (void*) android_view_GLES20DisplayList_reset },
- { "nSetCaching", "(IZ)V", (void*) android_view_GLES20DisplayList_setCaching },
- { "nSetStaticMatrix", "(II)V", (void*) android_view_GLES20DisplayList_setStaticMatrix },
- { "nSetAnimationMatrix", "(II)V", (void*) android_view_GLES20DisplayList_setAnimationMatrix },
- { "nSetClipToBounds", "(IZ)V", (void*) android_view_GLES20DisplayList_setClipToBounds },
- { "nSetAlpha", "(IF)V", (void*) android_view_GLES20DisplayList_setAlpha },
- { "nSetHasOverlappingRendering", "(IZ)V",
+ { "nReset", "(J)V", (void*) android_view_GLES20DisplayList_reset },
+ { "nSetCaching", "(JZ)V", (void*) android_view_GLES20DisplayList_setCaching },
+ { "nSetStaticMatrix", "(JJ)V", (void*) android_view_GLES20DisplayList_setStaticMatrix },
+ { "nSetAnimationMatrix", "(JJ)V", (void*) android_view_GLES20DisplayList_setAnimationMatrix },
+ { "nSetClipToBounds", "(JZ)V", (void*) android_view_GLES20DisplayList_setClipToBounds },
+ { "nSetAlpha", "(JF)V", (void*) android_view_GLES20DisplayList_setAlpha },
+ { "nSetHasOverlappingRendering", "(JZ)V",
(void*) android_view_GLES20DisplayList_setHasOverlappingRendering },
- { "nSetTranslationX", "(IF)V", (void*) android_view_GLES20DisplayList_setTranslationX },
- { "nSetTranslationY", "(IF)V", (void*) android_view_GLES20DisplayList_setTranslationY },
- { "nSetRotation", "(IF)V", (void*) android_view_GLES20DisplayList_setRotation },
- { "nSetRotationX", "(IF)V", (void*) android_view_GLES20DisplayList_setRotationX },
- { "nSetRotationY", "(IF)V", (void*) android_view_GLES20DisplayList_setRotationY },
- { "nSetScaleX", "(IF)V", (void*) android_view_GLES20DisplayList_setScaleX },
- { "nSetScaleY", "(IF)V", (void*) android_view_GLES20DisplayList_setScaleY },
- { "nSetTransformationInfo","(IFFFFFFFF)V",
+ { "nSetTranslationX", "(JF)V", (void*) android_view_GLES20DisplayList_setTranslationX },
+ { "nSetTranslationY", "(JF)V", (void*) android_view_GLES20DisplayList_setTranslationY },
+ { "nSetRotation", "(JF)V", (void*) android_view_GLES20DisplayList_setRotation },
+ { "nSetRotationX", "(JF)V", (void*) android_view_GLES20DisplayList_setRotationX },
+ { "nSetRotationY", "(JF)V", (void*) android_view_GLES20DisplayList_setRotationY },
+ { "nSetScaleX", "(JF)V", (void*) android_view_GLES20DisplayList_setScaleX },
+ { "nSetScaleY", "(JF)V", (void*) android_view_GLES20DisplayList_setScaleY },
+ { "nSetTransformationInfo","(JFFFFFFFF)V",
(void*) android_view_GLES20DisplayList_setTransformationInfo },
- { "nSetPivotX", "(IF)V", (void*) android_view_GLES20DisplayList_setPivotX },
- { "nSetPivotY", "(IF)V", (void*) android_view_GLES20DisplayList_setPivotY },
- { "nSetCameraDistance", "(IF)V", (void*) android_view_GLES20DisplayList_setCameraDistance },
- { "nSetLeft", "(II)V", (void*) android_view_GLES20DisplayList_setLeft },
- { "nSetTop", "(II)V", (void*) android_view_GLES20DisplayList_setTop },
- { "nSetRight", "(II)V", (void*) android_view_GLES20DisplayList_setRight },
- { "nSetBottom", "(II)V", (void*) android_view_GLES20DisplayList_setBottom },
- { "nSetLeftTopRightBottom","(IIIII)V",
+ { "nSetPivotX", "(JF)V", (void*) android_view_GLES20DisplayList_setPivotX },
+ { "nSetPivotY", "(JF)V", (void*) android_view_GLES20DisplayList_setPivotY },
+ { "nSetCameraDistance", "(JF)V", (void*) android_view_GLES20DisplayList_setCameraDistance },
+ { "nSetLeft", "(JI)V", (void*) android_view_GLES20DisplayList_setLeft },
+ { "nSetTop", "(JI)V", (void*) android_view_GLES20DisplayList_setTop },
+ { "nSetRight", "(JI)V", (void*) android_view_GLES20DisplayList_setRight },
+ { "nSetBottom", "(JI)V", (void*) android_view_GLES20DisplayList_setBottom },
+ { "nSetLeftTopRightBottom","(JIIII)V",
(void*) android_view_GLES20DisplayList_setLeftTopRightBottom },
- { "nOffsetLeftAndRight", "(IF)V", (void*) android_view_GLES20DisplayList_offsetLeftAndRight },
- { "nOffsetTopAndBottom", "(IF)V", (void*) android_view_GLES20DisplayList_offsetTopAndBottom },
-
-
- { "nGetMatrix", "(II)V", (void*) android_view_GLES20DisplayList_getMatrix },
- { "nHasOverlappingRendering", "(I)Z", (void*) android_view_GLES20DisplayList_hasOverlappingRendering },
- { "nGetAlpha", "(I)F", (void*) android_view_GLES20DisplayList_getAlpha },
- { "nGetLeft", "(I)F", (void*) android_view_GLES20DisplayList_getLeft },
- { "nGetTop", "(I)F", (void*) android_view_GLES20DisplayList_getTop },
- { "nGetRight", "(I)F", (void*) android_view_GLES20DisplayList_getRight },
- { "nGetBottom", "(I)F", (void*) android_view_GLES20DisplayList_getBottom },
- { "nGetCameraDistance", "(I)F", (void*) android_view_GLES20DisplayList_getCameraDistance },
- { "nGetScaleX", "(I)F", (void*) android_view_GLES20DisplayList_getScaleX },
- { "nGetScaleY", "(I)F", (void*) android_view_GLES20DisplayList_getScaleY },
- { "nGetTranslationX", "(I)F", (void*) android_view_GLES20DisplayList_getTranslationX },
- { "nGetTranslationY", "(I)F", (void*) android_view_GLES20DisplayList_getTranslationY },
- { "nGetRotation", "(I)F", (void*) android_view_GLES20DisplayList_getRotation },
- { "nGetRotationX", "(I)F", (void*) android_view_GLES20DisplayList_getRotationX },
- { "nGetRotationY", "(I)F", (void*) android_view_GLES20DisplayList_getRotationY },
- { "nGetPivotX", "(I)F", (void*) android_view_GLES20DisplayList_getPivotX },
- { "nGetPivotY", "(I)F", (void*) android_view_GLES20DisplayList_getPivotY },
+ { "nOffsetLeftAndRight", "(JF)V", (void*) android_view_GLES20DisplayList_offsetLeftAndRight },
+ { "nOffsetTopAndBottom", "(JF)V", (void*) android_view_GLES20DisplayList_offsetTopAndBottom },
+
+
+ { "nGetMatrix", "(JJ)V", (void*) android_view_GLES20DisplayList_getMatrix },
+ { "nHasOverlappingRendering", "(J)Z", (void*) android_view_GLES20DisplayList_hasOverlappingRendering },
+ { "nGetAlpha", "(J)F", (void*) android_view_GLES20DisplayList_getAlpha },
+ { "nGetLeft", "(J)F", (void*) android_view_GLES20DisplayList_getLeft },
+ { "nGetTop", "(J)F", (void*) android_view_GLES20DisplayList_getTop },
+ { "nGetRight", "(J)F", (void*) android_view_GLES20DisplayList_getRight },
+ { "nGetBottom", "(J)F", (void*) android_view_GLES20DisplayList_getBottom },
+ { "nGetCameraDistance", "(J)F", (void*) android_view_GLES20DisplayList_getCameraDistance },
+ { "nGetScaleX", "(J)F", (void*) android_view_GLES20DisplayList_getScaleX },
+ { "nGetScaleY", "(J)F", (void*) android_view_GLES20DisplayList_getScaleY },
+ { "nGetTranslationX", "(J)F", (void*) android_view_GLES20DisplayList_getTranslationX },
+ { "nGetTranslationY", "(J)F", (void*) android_view_GLES20DisplayList_getTranslationY },
+ { "nGetRotation", "(J)F", (void*) android_view_GLES20DisplayList_getRotation },
+ { "nGetRotationX", "(J)F", (void*) android_view_GLES20DisplayList_getRotationX },
+ { "nGetRotationY", "(J)F", (void*) android_view_GLES20DisplayList_getRotationY },
+ { "nGetPivotX", "(J)F", (void*) android_view_GLES20DisplayList_getPivotX },
+ { "nGetPivotY", "(J)F", (void*) android_view_GLES20DisplayList_getPivotY },
#endif
};
diff --git a/core/jni/android_view_GraphicBuffer.cpp b/core/jni/android_view_GraphicBuffer.cpp
index d68c0b251ef0..2e8dccf6bcb9 100644
--- a/core/jni/android_view_GraphicBuffer.cpp
+++ b/core/jni/android_view_GraphicBuffer.cpp
@@ -89,6 +89,12 @@ static struct {
#define SET_INT(object, field, value) \
env->SetIntField(object, field, value)
+#define GET_LONG(object, field) \
+ env->GetLongField(object, field)
+
+#define SET_LONG(object, field, value) \
+ env->SetLongField(object, field, value)
+
#define INVOKEV(object, method, ...) \
env->CallVoidMethod(object, method, __VA_ARGS__)
@@ -108,7 +114,7 @@ public:
// GraphicBuffer lifecycle
// ----------------------------------------------------------------------------
-static GraphicBufferWrapper* android_view_GraphiceBuffer_create(JNIEnv* env, jobject clazz,
+static jlong android_view_GraphiceBuffer_create(JNIEnv* env, jobject clazz,
jint width, jint height, jint format, jint usage) {
sp<ISurfaceComposer> composer(ComposerService::getComposerService());
@@ -125,11 +131,14 @@ static GraphicBufferWrapper* android_view_GraphiceBuffer_create(JNIEnv* env, job
return NULL;
}
- return new GraphicBufferWrapper(buffer);
+ GraphicBufferWrapper* wrapper = new GraphicBufferWrapper(buffer);
+ return reinterpret_cast<jlong>(wrapper);
}
static void android_view_GraphiceBuffer_destroy(JNIEnv* env, jobject clazz,
- GraphicBufferWrapper* wrapper) {
+ jlong wrapperHandle) {
+ GraphicBufferWrapper* wrapper =
+ reinterpret_cast<GraphicBufferWrapper*>(wrapperHandle);
delete wrapper;
}
@@ -140,9 +149,9 @@ static void android_view_GraphiceBuffer_destroy(JNIEnv* env, jobject clazz,
static inline void swapCanvasPtr(JNIEnv* env, jobject canvasObj, SkCanvas* newCanvas) {
jobject canvasFinalizerObj = env->GetObjectField(canvasObj, gCanvasClassInfo.mFinalizer);
SkCanvas* previousCanvas = reinterpret_cast<SkCanvas*>(
- GET_INT(canvasObj, gCanvasClassInfo.mNativeCanvas));
- SET_INT(canvasObj, gCanvasClassInfo.mNativeCanvas, (int) newCanvas);
- SET_INT(canvasFinalizerObj, gCanvasFinalizerClassInfo.mNativeCanvas, (int) newCanvas);
+ GET_LONG(canvasObj, gCanvasClassInfo.mNativeCanvas));
+ SET_LONG(canvasObj, gCanvasClassInfo.mNativeCanvas, (long) newCanvas);
+ SET_LONG(canvasFinalizerObj, gCanvasFinalizerClassInfo.mNativeCanvas, (long) newCanvas);
SkSafeUnref(previousCanvas);
}
@@ -160,10 +169,12 @@ static inline SkBitmap::Config convertPixelFormat(int32_t format) {
}
static jboolean android_view_GraphicBuffer_lockCanvas(JNIEnv* env, jobject,
- GraphicBufferWrapper* wrapper, jobject canvas, jobject dirtyRect) {
+ jlong wrapperHandle, jobject canvas, jobject dirtyRect) {
+ GraphicBufferWrapper* wrapper =
+ reinterpret_cast<GraphicBufferWrapper*>(wrapperHandle);
if (!wrapper) {
- return false;
+ return JNI_FALSE;
}
sp<GraphicBuffer> buffer(wrapper->buffer);
@@ -181,10 +192,10 @@ static jboolean android_view_GraphicBuffer_lockCanvas(JNIEnv* env, jobject,
void* bits = NULL;
status_t status = buffer->lock(LOCK_CANVAS_USAGE, rect, &bits);
- if (status) return false;
+ if (status) return JNI_FALSE;
if (!bits) {
buffer->unlock();
- return false;
+ return JNI_FALSE;
}
ssize_t bytesCount = buffer->getStride() * bytesPerPixel(buffer->getPixelFormat());
@@ -213,21 +224,23 @@ static jboolean android_view_GraphicBuffer_lockCanvas(JNIEnv* env, jobject,
int(rect.left), int(rect.top), int(rect.right), int(rect.bottom));
}
- return true;
+ return JNI_TRUE;
}
static jboolean android_view_GraphicBuffer_unlockCanvasAndPost(JNIEnv* env, jobject,
- GraphicBufferWrapper* wrapper, jobject canvas) {
+ jlong wrapperHandle, jobject canvas) {
+ GraphicBufferWrapper* wrapper =
+ reinterpret_cast<GraphicBufferWrapper*>(wrapperHandle);
SkCanvas* nativeCanvas = SkNEW(SkCanvas);
swapCanvasPtr(env, canvas, nativeCanvas);
if (wrapper) {
status_t status = wrapper->buffer->unlock();
- return status == 0;
+ return status == 0 ? JNI_TRUE : JNI_FALSE;
}
- return false;
+ return JNI_FALSE;
}
// ----------------------------------------------------------------------------
@@ -235,21 +248,23 @@ static jboolean android_view_GraphicBuffer_unlockCanvasAndPost(JNIEnv* env, jobj
// ----------------------------------------------------------------------------
static void android_view_GraphiceBuffer_write(JNIEnv* env, jobject clazz,
- GraphicBufferWrapper* wrapper, jobject dest) {
+ jlong wrapperHandle, jobject dest) {
+ GraphicBufferWrapper* wrapper =
+ reinterpret_cast<GraphicBufferWrapper*>(wrapperHandle);
Parcel* parcel = parcelForJavaObject(env, dest);
if (parcel) {
parcel->write(*wrapper->buffer);
}
}
-static GraphicBufferWrapper* android_view_GraphiceBuffer_read(JNIEnv* env, jobject clazz,
+static jlong android_view_GraphiceBuffer_read(JNIEnv* env, jobject clazz,
jobject in) {
Parcel* parcel = parcelForJavaObject(env, in);
if (parcel) {
sp<GraphicBuffer> buffer = new GraphicBuffer();
parcel->read(*buffer);
- return new GraphicBufferWrapper(buffer);
+ return reinterpret_cast<jlong>(new GraphicBufferWrapper(buffer));
}
return NULL;
@@ -261,7 +276,7 @@ static GraphicBufferWrapper* android_view_GraphiceBuffer_read(JNIEnv* env, jobje
sp<GraphicBuffer> graphicBufferForJavaObject(JNIEnv* env, jobject obj) {
if (obj) {
- jint nativeObject = env->GetIntField(obj, gGraphicBufferClassInfo.mNativeObject);
+ jlong nativeObject = env->GetLongField(obj, gGraphicBufferClassInfo.mNativeObject);
GraphicBufferWrapper* wrapper = (GraphicBufferWrapper*) nativeObject;
if (wrapper != NULL) {
sp<GraphicBuffer> buffer(wrapper->buffer);
@@ -290,24 +305,24 @@ sp<GraphicBuffer> graphicBufferForJavaObject(JNIEnv* env, jobject obj) {
const char* const kClassPathName = "android/view/GraphicBuffer";
static JNINativeMethod gMethods[] = {
- { "nCreateGraphicBuffer", "(IIII)I", (void*) android_view_GraphiceBuffer_create },
- { "nDestroyGraphicBuffer", "(I)V", (void*) android_view_GraphiceBuffer_destroy },
+ { "nCreateGraphicBuffer", "(IIII)J", (void*) android_view_GraphiceBuffer_create },
+ { "nDestroyGraphicBuffer", "(J)V", (void*) android_view_GraphiceBuffer_destroy },
- { "nWriteGraphicBufferToParcel", "(ILandroid/os/Parcel;)V",
+ { "nWriteGraphicBufferToParcel", "(JLandroid/os/Parcel;)V",
(void*) android_view_GraphiceBuffer_write },
- { "nReadGraphicBufferFromParcel", "(Landroid/os/Parcel;)I",
+ { "nReadGraphicBufferFromParcel", "(Landroid/os/Parcel;)J",
(void*) android_view_GraphiceBuffer_read },
- { "nLockCanvas", "(ILandroid/graphics/Canvas;Landroid/graphics/Rect;)Z",
+ { "nLockCanvas", "(JLandroid/graphics/Canvas;Landroid/graphics/Rect;)Z",
(void*) android_view_GraphicBuffer_lockCanvas },
- { "nUnlockCanvasAndPost", "(ILandroid/graphics/Canvas;)Z",
+ { "nUnlockCanvasAndPost", "(JLandroid/graphics/Canvas;)Z",
(void*) android_view_GraphicBuffer_unlockCanvasAndPost },
};
int register_android_view_GraphicBuffer(JNIEnv* env) {
jclass clazz;
FIND_CLASS(clazz, "android/view/GraphicBuffer");
- GET_FIELD_ID(gGraphicBufferClassInfo.mNativeObject, clazz, "mNativeObject", "I");
+ GET_FIELD_ID(gGraphicBufferClassInfo.mNativeObject, clazz, "mNativeObject", "J");
FIND_CLASS(clazz, "android/graphics/Rect");
GET_METHOD_ID(gRectClassInfo.set, clazz, "set", "(IIII)V");
@@ -319,11 +334,11 @@ int register_android_view_GraphicBuffer(JNIEnv* env) {
FIND_CLASS(clazz, "android/graphics/Canvas");
GET_FIELD_ID(gCanvasClassInfo.mFinalizer, clazz, "mFinalizer",
"Landroid/graphics/Canvas$CanvasFinalizer;");
- GET_FIELD_ID(gCanvasClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "I");
+ GET_FIELD_ID(gCanvasClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "J");
GET_FIELD_ID(gCanvasClassInfo.mSurfaceFormat, clazz, "mSurfaceFormat", "I");
FIND_CLASS(clazz, "android/graphics/Canvas$CanvasFinalizer");
- GET_FIELD_ID(gCanvasFinalizerClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "I");
+ GET_FIELD_ID(gCanvasFinalizerClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "J");
return AndroidRuntime::registerNativeMethods(env, kClassPathName, gMethods, NELEM(gMethods));
}
diff --git a/core/jni/android_view_InputChannel.cpp b/core/jni/android_view_InputChannel.cpp
index ce475e0998f3..d667920045e7 100644
--- a/core/jni/android_view_InputChannel.cpp
+++ b/core/jni/android_view_InputChannel.cpp
@@ -81,14 +81,14 @@ void NativeInputChannel::invokeAndRemoveDisposeCallback(JNIEnv* env, jobject obj
static NativeInputChannel* android_view_InputChannel_getNativeInputChannel(JNIEnv* env,
jobject inputChannelObj) {
- jint intPtr = env->GetIntField(inputChannelObj, gInputChannelClassInfo.mPtr);
- return reinterpret_cast<NativeInputChannel*>(intPtr);
+ jlong longPtr = env->GetLongField(inputChannelObj, gInputChannelClassInfo.mPtr);
+ return reinterpret_cast<NativeInputChannel*>(longPtr);
}
static void android_view_InputChannel_setNativeInputChannel(JNIEnv* env, jobject inputChannelObj,
NativeInputChannel* nativeInputChannel) {
- env->SetIntField(inputChannelObj, gInputChannelClassInfo.mPtr,
- reinterpret_cast<jint>(nativeInputChannel));
+ env->SetLongField(inputChannelObj, gInputChannelClassInfo.mPtr,
+ reinterpret_cast<jlong>(nativeInputChannel));
}
sp<InputChannel> android_view_InputChannel_getInputChannel(JNIEnv* env, jobject inputChannelObj) {
@@ -296,7 +296,7 @@ int register_android_view_InputChannel(JNIEnv* env) {
FIND_CLASS(gInputChannelClassInfo.clazz, "android/view/InputChannel");
GET_FIELD_ID(gInputChannelClassInfo.mPtr, gInputChannelClassInfo.clazz,
- "mPtr", "I");
+ "mPtr", "J");
GET_METHOD_ID(gInputChannelClassInfo.ctor, gInputChannelClassInfo.clazz,
"<init>", "()V");
diff --git a/core/jni/android_view_InputEventReceiver.cpp b/core/jni/android_view_InputEventReceiver.cpp
index 92a3e62a8d5f..f36bf31daa5f 100644
--- a/core/jni/android_view_InputEventReceiver.cpp
+++ b/core/jni/android_view_InputEventReceiver.cpp
@@ -330,7 +330,7 @@ status_t NativeInputEventReceiver::consumeEvents(JNIEnv* env,
}
-static jint nativeInit(JNIEnv* env, jclass clazz, jobject receiverWeak,
+static jlong nativeInit(JNIEnv* env, jclass clazz, jobject receiverWeak,
jobject inputChannelObj, jobject messageQueueObj) {
sp<InputChannel> inputChannel = android_view_InputChannel_getInputChannel(env,
inputChannelObj);
@@ -356,17 +356,17 @@ static jint nativeInit(JNIEnv* env, jclass clazz, jobject receiverWeak,
}
receiver->incStrong(gInputEventReceiverClassInfo.clazz); // retain a reference for the object
- return reinterpret_cast<jint>(receiver.get());
+ return reinterpret_cast<jlong>(receiver.get());
}
-static void nativeDispose(JNIEnv* env, jclass clazz, jint receiverPtr) {
+static void nativeDispose(JNIEnv* env, jclass clazz, jlong receiverPtr) {
sp<NativeInputEventReceiver> receiver =
reinterpret_cast<NativeInputEventReceiver*>(receiverPtr);
receiver->dispose();
receiver->decStrong(gInputEventReceiverClassInfo.clazz); // drop reference held by the object
}
-static void nativeFinishInputEvent(JNIEnv* env, jclass clazz, jint receiverPtr,
+static void nativeFinishInputEvent(JNIEnv* env, jclass clazz, jlong receiverPtr,
jint seq, jboolean handled) {
sp<NativeInputEventReceiver> receiver =
reinterpret_cast<NativeInputEventReceiver*>(receiverPtr);
@@ -378,7 +378,7 @@ static void nativeFinishInputEvent(JNIEnv* env, jclass clazz, jint receiverPtr,
}
}
-static bool nativeConsumeBatchedInputEvents(JNIEnv* env, jclass clazz, jint receiverPtr,
+static jboolean nativeConsumeBatchedInputEvents(JNIEnv* env, jclass clazz, jlong receiverPtr,
jlong frameTimeNanos) {
sp<NativeInputEventReceiver> receiver =
reinterpret_cast<NativeInputEventReceiver*>(receiverPtr);
@@ -389,22 +389,22 @@ static bool nativeConsumeBatchedInputEvents(JNIEnv* env, jclass clazz, jint rece
String8 message;
message.appendFormat("Failed to consume batched input event. status=%d", status);
jniThrowRuntimeException(env, message.string());
- return false;
+ return JNI_FALSE;
}
- return consumedBatch;
+ return consumedBatch ? JNI_TRUE : JNI_FALSE;
}
static JNINativeMethod gMethods[] = {
/* name, signature, funcPtr */
{ "nativeInit",
- "(Ljava/lang/ref/WeakReference;Landroid/view/InputChannel;Landroid/os/MessageQueue;)I",
+ "(Ljava/lang/ref/WeakReference;Landroid/view/InputChannel;Landroid/os/MessageQueue;)J",
(void*)nativeInit },
- { "nativeDispose", "(I)V",
+ { "nativeDispose", "(J)V",
(void*)nativeDispose },
- { "nativeFinishInputEvent", "(IIZ)V",
+ { "nativeFinishInputEvent", "(JIZ)V",
(void*)nativeFinishInputEvent },
- { "nativeConsumeBatchedInputEvents", "(IJ)Z",
+ { "nativeConsumeBatchedInputEvents", "(JJ)Z",
(void*)nativeConsumeBatchedInputEvents },
};
diff --git a/core/jni/android_view_InputEventSender.cpp b/core/jni/android_view_InputEventSender.cpp
index e4b65a18bf47..f156b9ada99e 100644
--- a/core/jni/android_view_InputEventSender.cpp
+++ b/core/jni/android_view_InputEventSender.cpp
@@ -230,7 +230,7 @@ status_t NativeInputEventSender::receiveFinishedSignals(JNIEnv* env) {
}
-static jint nativeInit(JNIEnv* env, jclass clazz, jobject senderWeak,
+static jlong nativeInit(JNIEnv* env, jclass clazz, jobject senderWeak,
jobject inputChannelObj, jobject messageQueueObj) {
sp<InputChannel> inputChannel = android_view_InputChannel_getInputChannel(env,
inputChannelObj);
@@ -256,17 +256,17 @@ static jint nativeInit(JNIEnv* env, jclass clazz, jobject senderWeak,
}
sender->incStrong(gInputEventSenderClassInfo.clazz); // retain a reference for the object
- return reinterpret_cast<jint>(sender.get());
+ return reinterpret_cast<jlong>(sender.get());
}
-static void nativeDispose(JNIEnv* env, jclass clazz, jint senderPtr) {
+static void nativeDispose(JNIEnv* env, jclass clazz, jlong senderPtr) {
sp<NativeInputEventSender> sender =
reinterpret_cast<NativeInputEventSender*>(senderPtr);
sender->dispose();
sender->decStrong(gInputEventSenderClassInfo.clazz); // drop reference held by the object
}
-static jboolean nativeSendKeyEvent(JNIEnv* env, jclass clazz, jint senderPtr,
+static jboolean nativeSendKeyEvent(JNIEnv* env, jclass clazz, jlong senderPtr,
jint seq, jobject eventObj) {
sp<NativeInputEventSender> sender =
reinterpret_cast<NativeInputEventSender*>(senderPtr);
@@ -276,7 +276,7 @@ static jboolean nativeSendKeyEvent(JNIEnv* env, jclass clazz, jint senderPtr,
return !status;
}
-static jboolean nativeSendMotionEvent(JNIEnv* env, jclass clazz, jint senderPtr,
+static jboolean nativeSendMotionEvent(JNIEnv* env, jclass clazz, jlong senderPtr,
jint seq, jobject eventObj) {
sp<NativeInputEventSender> sender =
reinterpret_cast<NativeInputEventSender*>(senderPtr);
@@ -289,13 +289,13 @@ static jboolean nativeSendMotionEvent(JNIEnv* env, jclass clazz, jint senderPtr,
static JNINativeMethod gMethods[] = {
/* name, signature, funcPtr */
{ "nativeInit",
- "(Ljava/lang/ref/WeakReference;Landroid/view/InputChannel;Landroid/os/MessageQueue;)I",
+ "(Ljava/lang/ref/WeakReference;Landroid/view/InputChannel;Landroid/os/MessageQueue;)J",
(void*)nativeInit },
- { "nativeDispose", "(I)V",
+ { "nativeDispose", "(J)V",
(void*)nativeDispose },
- { "nativeSendKeyEvent", "(IILandroid/view/KeyEvent;)Z",
+ { "nativeSendKeyEvent", "(JILandroid/view/KeyEvent;)Z",
(void*)nativeSendKeyEvent },
- { "nativeSendMotionEvent", "(IILandroid/view/MotionEvent;)Z",
+ { "nativeSendMotionEvent", "(JILandroid/view/MotionEvent;)Z",
(void*)nativeSendMotionEvent },
};
diff --git a/core/jni/android_view_InputQueue.cpp b/core/jni/android_view_InputQueue.cpp
index 7532c9da49e1..21b73b1480dd 100644
--- a/core/jni/android_view_InputQueue.cpp
+++ b/core/jni/android_view_InputQueue.cpp
@@ -151,7 +151,7 @@ void InputQueue::handleMessage(const Message& message) {
mFinishedEvents.removeAt(0);
}
env->CallVoidMethod(inputQueueObj.get(), gInputQueueClassInfo.finishInputEvent,
- reinterpret_cast<jint>(event), handled);
+ reinterpret_cast<jlong>(event), handled);
recycleInputEvent(event);
}
break;
@@ -193,7 +193,7 @@ InputQueue* InputQueue::createQueue(jobject inputQueueObj, const sp<Looper>& loo
return new InputQueue(inputQueueObj, looper, pipeFds[0], pipeFds[1]);
}
-static jint nativeInit(JNIEnv* env, jobject clazz, jobject queueWeak, jobject jMsgQueue) {
+static jlong nativeInit(JNIEnv* env, jobject clazz, jobject queueWeak, jobject jMsgQueue) {
sp<MessageQueue> messageQueue = android_os_MessageQueue_getMessageQueue(env, jMsgQueue);
if (messageQueue == NULL) {
jniThrowRuntimeException(env, "MessageQueue is not initialized.");
@@ -205,16 +205,16 @@ static jint nativeInit(JNIEnv* env, jobject clazz, jobject queueWeak, jobject jM
return 0;
}
queue->incStrong(&gInputQueueClassInfo);
- return reinterpret_cast<jint>(queue.get());
+ return reinterpret_cast<jlong>(queue.get());
}
-static void nativeDispose(JNIEnv* env, jobject clazz, jint ptr) {
+static void nativeDispose(JNIEnv* env, jobject clazz, jlong ptr) {
sp<InputQueue> queue = reinterpret_cast<InputQueue*>(ptr);
queue->detachLooper();
queue->decStrong(&gInputQueueClassInfo);
}
-static jint nativeSendKeyEvent(JNIEnv* env, jobject clazz, jint ptr, jobject eventObj,
+static jlong nativeSendKeyEvent(JNIEnv* env, jobject clazz, jlong ptr, jobject eventObj,
jboolean predispatch) {
InputQueue* queue = reinterpret_cast<InputQueue*>(ptr);
KeyEvent* event = queue->createKeyEvent();
@@ -230,10 +230,10 @@ static jint nativeSendKeyEvent(JNIEnv* env, jobject clazz, jint ptr, jobject eve
}
queue->enqueueEvent(event);
- return reinterpret_cast<jint>(event);
+ return reinterpret_cast<jlong>(event);
}
-static jint nativeSendMotionEvent(JNIEnv* env, jobject clazz, jint ptr, jobject eventObj) {
+static jlong nativeSendMotionEvent(JNIEnv* env, jobject clazz, jlong ptr, jobject eventObj) {
sp<InputQueue> queue = reinterpret_cast<InputQueue*>(ptr);
MotionEvent* originalEvent = android_view_MotionEvent_getNativePtr(env, eventObj);
if (!originalEvent) {
@@ -243,15 +243,15 @@ static jint nativeSendMotionEvent(JNIEnv* env, jobject clazz, jint ptr, jobject
MotionEvent* event = queue->createMotionEvent();
event->copyFrom(originalEvent, true /* keepHistory */);
queue->enqueueEvent(event);
- return reinterpret_cast<jint>(event);
+ return reinterpret_cast<jlong>(event);
}
static const JNINativeMethod g_methods[] = {
- { "nativeInit", "(Ljava/lang/ref/WeakReference;Landroid/os/MessageQueue;)I",
+ { "nativeInit", "(Ljava/lang/ref/WeakReference;Landroid/os/MessageQueue;)J",
(void*) nativeInit },
- { "nativeDispose", "(I)V", (void*) nativeDispose },
- { "nativeSendKeyEvent", "(ILandroid/view/KeyEvent;Z)I", (void*) nativeSendKeyEvent },
- { "nativeSendMotionEvent", "(ILandroid/view/MotionEvent;)I", (void*) nativeSendMotionEvent },
+ { "nativeDispose", "(J)V", (void*) nativeDispose },
+ { "nativeSendKeyEvent", "(JLandroid/view/KeyEvent;Z)J", (void*) nativeSendKeyEvent },
+ { "nativeSendMotionEvent", "(JLandroid/view/MotionEvent;)J", (void*) nativeSendMotionEvent },
};
static const char* const kInputQueuePathName = "android/view/InputQueue";
@@ -272,7 +272,7 @@ int register_android_view_InputQueue(JNIEnv* env)
{
jclass clazz;
FIND_CLASS(clazz, kInputQueuePathName);
- GET_METHOD_ID(gInputQueueClassInfo.finishInputEvent, clazz, "finishInputEvent", "(IZ)V");
+ GET_METHOD_ID(gInputQueueClassInfo.finishInputEvent, clazz, "finishInputEvent", "(JZ)V");
return AndroidRuntime::registerNativeMethods(
env, kInputQueuePathName,
diff --git a/core/jni/android_view_KeyCharacterMap.cpp b/core/jni/android_view_KeyCharacterMap.cpp
index ffe2deaba8c6..62d51296cbbf 100644
--- a/core/jni/android_view_KeyCharacterMap.cpp
+++ b/core/jni/android_view_KeyCharacterMap.cpp
@@ -75,10 +75,10 @@ jobject android_view_KeyCharacterMap_create(JNIEnv* env, int32_t deviceId,
}
return env->NewObject(gKeyCharacterMapClassInfo.clazz, gKeyCharacterMapClassInfo.ctor,
- reinterpret_cast<jint>(map));
+ reinterpret_cast<jlong>(map));
}
-static jint nativeReadFromParcel(JNIEnv *env, jobject clazz, jobject parcelObj) {
+static jlong nativeReadFromParcel(JNIEnv *env, jobject clazz, jobject parcelObj) {
Parcel* parcel = parcelForJavaObject(env, parcelObj);
if (!parcel) {
return 0;
@@ -95,10 +95,10 @@ static jint nativeReadFromParcel(JNIEnv *env, jobject clazz, jobject parcelObj)
}
NativeKeyCharacterMap* map = new NativeKeyCharacterMap(deviceId, kcm);
- return reinterpret_cast<jint>(map);
+ return reinterpret_cast<jlong>(map);
}
-static void nativeWriteToParcel(JNIEnv* env, jobject clazz, jint ptr, jobject parcelObj) {
+static void nativeWriteToParcel(JNIEnv* env, jobject clazz, jlong ptr, jobject parcelObj) {
NativeKeyCharacterMap* map = reinterpret_cast<NativeKeyCharacterMap*>(ptr);
Parcel* parcel = parcelForJavaObject(env, parcelObj);
if (parcel) {
@@ -107,18 +107,18 @@ static void nativeWriteToParcel(JNIEnv* env, jobject clazz, jint ptr, jobject pa
}
}
-static void nativeDispose(JNIEnv *env, jobject clazz, jint ptr) {
+static void nativeDispose(JNIEnv *env, jobject clazz, jlong ptr) {
NativeKeyCharacterMap* map = reinterpret_cast<NativeKeyCharacterMap*>(ptr);
delete map;
}
-static jchar nativeGetCharacter(JNIEnv *env, jobject clazz, jint ptr,
+static jchar nativeGetCharacter(JNIEnv *env, jobject clazz, jlong ptr,
jint keyCode, jint metaState) {
NativeKeyCharacterMap* map = reinterpret_cast<NativeKeyCharacterMap*>(ptr);
return map->getMap()->getCharacter(keyCode, metaState);
}
-static jboolean nativeGetFallbackAction(JNIEnv *env, jobject clazz, jint ptr, jint keyCode,
+static jboolean nativeGetFallbackAction(JNIEnv *env, jobject clazz, jlong ptr, jint keyCode,
jint metaState, jobject fallbackActionObj) {
NativeKeyCharacterMap* map = reinterpret_cast<NativeKeyCharacterMap*>(ptr);
KeyCharacterMap::FallbackAction fallbackAction;
@@ -133,12 +133,12 @@ static jboolean nativeGetFallbackAction(JNIEnv *env, jobject clazz, jint ptr, ji
return result;
}
-static jchar nativeGetNumber(JNIEnv *env, jobject clazz, jint ptr, jint keyCode) {
+static jchar nativeGetNumber(JNIEnv *env, jobject clazz, jlong ptr, jint keyCode) {
NativeKeyCharacterMap* map = reinterpret_cast<NativeKeyCharacterMap*>(ptr);
return map->getMap()->getNumber(keyCode);
}
-static jchar nativeGetMatch(JNIEnv *env, jobject clazz, jint ptr, jint keyCode,
+static jchar nativeGetMatch(JNIEnv *env, jobject clazz, jlong ptr, jint keyCode,
jcharArray charsArray, jint metaState) {
NativeKeyCharacterMap* map = reinterpret_cast<NativeKeyCharacterMap*>(ptr);
@@ -154,17 +154,17 @@ static jchar nativeGetMatch(JNIEnv *env, jobject clazz, jint ptr, jint keyCode,
return result;
}
-static jchar nativeGetDisplayLabel(JNIEnv *env, jobject clazz, jint ptr, jint keyCode) {
+static jchar nativeGetDisplayLabel(JNIEnv *env, jobject clazz, jlong ptr, jint keyCode) {
NativeKeyCharacterMap* map = reinterpret_cast<NativeKeyCharacterMap*>(ptr);
return map->getMap()->getDisplayLabel(keyCode);
}
-static jint nativeGetKeyboardType(JNIEnv *env, jobject clazz, jint ptr) {
+static jint nativeGetKeyboardType(JNIEnv *env, jobject clazz, jlong ptr) {
NativeKeyCharacterMap* map = reinterpret_cast<NativeKeyCharacterMap*>(ptr);
return map->getMap()->getKeyboardType();
}
-static jobjectArray nativeGetEvents(JNIEnv *env, jobject clazz, jint ptr,
+static jobjectArray nativeGetEvents(JNIEnv *env, jobject clazz, jlong ptr,
jcharArray charsArray) {
NativeKeyCharacterMap* map = reinterpret_cast<NativeKeyCharacterMap*>(ptr);
@@ -199,25 +199,25 @@ static jobjectArray nativeGetEvents(JNIEnv *env, jobject clazz, jint ptr,
static JNINativeMethod g_methods[] = {
/* name, signature, funcPtr */
- { "nativeReadFromParcel", "(Landroid/os/Parcel;)I",
+ { "nativeReadFromParcel", "(Landroid/os/Parcel;)J",
(void*)nativeReadFromParcel },
- { "nativeWriteToParcel", "(ILandroid/os/Parcel;)V",
+ { "nativeWriteToParcel", "(JLandroid/os/Parcel;)V",
(void*)nativeWriteToParcel },
- { "nativeDispose", "(I)V",
+ { "nativeDispose", "(J)V",
(void*)nativeDispose },
- { "nativeGetCharacter", "(III)C",
+ { "nativeGetCharacter", "(JII)C",
(void*)nativeGetCharacter },
- { "nativeGetFallbackAction", "(IIILandroid/view/KeyCharacterMap$FallbackAction;)Z",
+ { "nativeGetFallbackAction", "(JIILandroid/view/KeyCharacterMap$FallbackAction;)Z",
(void*)nativeGetFallbackAction },
- { "nativeGetNumber", "(II)C",
+ { "nativeGetNumber", "(JI)C",
(void*)nativeGetNumber },
- { "nativeGetMatch", "(II[CI)C",
+ { "nativeGetMatch", "(JI[CI)C",
(void*)nativeGetMatch },
- { "nativeGetDisplayLabel", "(II)C",
+ { "nativeGetDisplayLabel", "(JI)C",
(void*)nativeGetDisplayLabel },
- { "nativeGetKeyboardType", "(I)I",
+ { "nativeGetKeyboardType", "(J)I",
(void*)nativeGetKeyboardType },
- { "nativeGetEvents", "(I[C)[Landroid/view/KeyEvent;",
+ { "nativeGetEvents", "(J[C)[Landroid/view/KeyEvent;",
(void*)nativeGetEvents },
};
@@ -239,7 +239,7 @@ int register_android_view_KeyCharacterMap(JNIEnv* env)
gKeyCharacterMapClassInfo.clazz = jclass(env->NewGlobalRef(gKeyCharacterMapClassInfo.clazz));
GET_METHOD_ID(gKeyCharacterMapClassInfo.ctor, gKeyCharacterMapClassInfo.clazz,
- "<init>", "(I)V");
+ "<init>", "(J)V");
FIND_CLASS(gKeyEventClassInfo.clazz, "android/view/KeyEvent");
gKeyEventClassInfo.clazz = jclass(env->NewGlobalRef(gKeyEventClassInfo.clazz));
diff --git a/core/jni/android_view_MotionEvent.cpp b/core/jni/android_view_MotionEvent.cpp
index f1b90e1ecf64..76e145b782f0 100644
--- a/core/jni/android_view_MotionEvent.cpp
+++ b/core/jni/android_view_MotionEvent.cpp
@@ -67,13 +67,13 @@ MotionEvent* android_view_MotionEvent_getNativePtr(JNIEnv* env, jobject eventObj
return NULL;
}
return reinterpret_cast<MotionEvent*>(
- env->GetIntField(eventObj, gMotionEventClassInfo.mNativePtr));
+ env->GetLongField(eventObj, gMotionEventClassInfo.mNativePtr));
}
static void android_view_MotionEvent_setNativePtr(JNIEnv* env, jobject eventObj,
MotionEvent* event) {
- env->SetIntField(eventObj, gMotionEventClassInfo.mNativePtr,
- reinterpret_cast<int>(event));
+ env->SetLongField(eventObj, gMotionEventClassInfo.mNativePtr,
+ reinterpret_cast<jlong>(event));
}
jobject android_view_MotionEvent_obtainAsCopy(JNIEnv* env, const MotionEvent* event) {
@@ -334,8 +334,8 @@ static void pointerPropertiesFromNative(JNIEnv* env, const PointerProperties* po
// ----------------------------------------------------------------------------
-static jint android_view_MotionEvent_nativeInitialize(JNIEnv* env, jclass clazz,
- jint nativePtr,
+static jlong android_view_MotionEvent_nativeInitialize(JNIEnv* env, jclass clazz,
+ jlong nativePtr,
jint deviceId, jint source, jint action, jint flags, jint edgeFlags,
jint metaState, jint buttonState,
jfloat xOffset, jfloat yOffset, jfloat xPrecision, jfloat yPrecision,
@@ -377,7 +377,7 @@ static jint android_view_MotionEvent_nativeInitialize(JNIEnv* env, jclass clazz,
xOffset, yOffset, xPrecision, yPrecision,
downTimeNanos, eventTimeNanos, pointerCount, pointerProperties, rawPointerCoords);
- return reinterpret_cast<jint>(event);
+ return reinterpret_cast<jlong>(event);
Error:
if (!nativePtr) {
@@ -386,25 +386,25 @@ Error:
return 0;
}
-static jint android_view_MotionEvent_nativeCopy(JNIEnv* env, jclass clazz,
- jint destNativePtr, jint sourceNativePtr, jboolean keepHistory) {
+static jlong android_view_MotionEvent_nativeCopy(JNIEnv* env, jclass clazz,
+ jlong destNativePtr, jlong sourceNativePtr, jboolean keepHistory) {
MotionEvent* destEvent = reinterpret_cast<MotionEvent*>(destNativePtr);
if (!destEvent) {
destEvent = new MotionEvent();
}
MotionEvent* sourceEvent = reinterpret_cast<MotionEvent*>(sourceNativePtr);
destEvent->copyFrom(sourceEvent, keepHistory);
- return reinterpret_cast<jint>(destEvent);
+ return reinterpret_cast<jlong>(destEvent);
}
static void android_view_MotionEvent_nativeDispose(JNIEnv* env, jclass clazz,
- jint nativePtr) {
+ jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
delete event;
}
static void android_view_MotionEvent_nativeAddBatch(JNIEnv* env, jclass clazz,
- jint nativePtr, jlong eventTimeNanos, jobjectArray pointerCoordsObjArray,
+ jlong nativePtr, jlong eventTimeNanos, jobjectArray pointerCoordsObjArray,
jint metaState) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
size_t pointerCount = event->getPointerCount();
@@ -430,127 +430,127 @@ static void android_view_MotionEvent_nativeAddBatch(JNIEnv* env, jclass clazz,
}
static jint android_view_MotionEvent_nativeGetDeviceId(JNIEnv* env, jclass clazz,
- jint nativePtr) {
+ jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return event->getDeviceId();
}
static jint android_view_MotionEvent_nativeGetSource(JNIEnv* env, jclass clazz,
- jint nativePtr) {
+ jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return event->getSource();
}
static void android_view_MotionEvent_nativeSetSource(JNIEnv* env, jclass clazz,
- jint nativePtr, jint source) {
+ jlong nativePtr, jint source) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
event->setSource(source);
}
static jint android_view_MotionEvent_nativeGetAction(JNIEnv* env, jclass clazz,
- jint nativePtr) {
+ jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return event->getAction();
}
static void android_view_MotionEvent_nativeSetAction(JNIEnv* env, jclass clazz,
- jint nativePtr, jint action) {
+ jlong nativePtr, jint action) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
event->setAction(action);
}
static jboolean android_view_MotionEvent_nativeIsTouchEvent(JNIEnv* env, jclass clazz,
- jint nativePtr) {
+ jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return event->isTouchEvent();
}
static jint android_view_MotionEvent_nativeGetFlags(JNIEnv* env, jclass clazz,
- jint nativePtr) {
+ jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return event->getFlags();
}
static void android_view_MotionEvent_nativeSetFlags(JNIEnv* env, jclass clazz,
- jint nativePtr, jint flags) {
+ jlong nativePtr, jint flags) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
event->setFlags(flags);
}
static jint android_view_MotionEvent_nativeGetEdgeFlags(JNIEnv* env, jclass clazz,
- jint nativePtr) {
+ jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return event->getEdgeFlags();
}
static void android_view_MotionEvent_nativeSetEdgeFlags(JNIEnv* env, jclass clazz,
- jint nativePtr, jint edgeFlags) {
+ jlong nativePtr, jint edgeFlags) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
event->setEdgeFlags(edgeFlags);
}
static jint android_view_MotionEvent_nativeGetMetaState(JNIEnv* env, jclass clazz,
- jint nativePtr) {
+ jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return event->getMetaState();
}
static jint android_view_MotionEvent_nativeGetButtonState(JNIEnv* env, jclass clazz,
- jint nativePtr) {
+ jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return event->getButtonState();
}
static void android_view_MotionEvent_nativeOffsetLocation(JNIEnv* env, jclass clazz,
- jint nativePtr, jfloat deltaX, jfloat deltaY) {
+ jlong nativePtr, jfloat deltaX, jfloat deltaY) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return event->offsetLocation(deltaX, deltaY);
}
static jfloat android_view_MotionEvent_nativeGetXOffset(JNIEnv* env, jclass clazz,
- jint nativePtr) {
+ jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return event->getXOffset();
}
static jfloat android_view_MotionEvent_nativeGetYOffset(JNIEnv* env, jclass clazz,
- jint nativePtr) {
+ jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return event->getYOffset();
}
static jfloat android_view_MotionEvent_nativeGetXPrecision(JNIEnv* env, jclass clazz,
- jint nativePtr) {
+ jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return event->getXPrecision();
}
static jfloat android_view_MotionEvent_nativeGetYPrecision(JNIEnv* env, jclass clazz,
- jint nativePtr) {
+ jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return event->getYPrecision();
}
static jlong android_view_MotionEvent_nativeGetDownTimeNanos(JNIEnv* env, jclass clazz,
- jint nativePtr) {
+ jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return event->getDownTime();
}
static void android_view_MotionEvent_nativeSetDownTimeNanos(JNIEnv* env, jclass clazz,
- jint nativePtr, jlong downTimeNanos) {
+ jlong nativePtr, jlong downTimeNanos) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
event->setDownTime(downTimeNanos);
}
static jint android_view_MotionEvent_nativeGetPointerCount(JNIEnv* env, jclass clazz,
- jint nativePtr) {
+ jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return jint(event->getPointerCount());
}
static jint android_view_MotionEvent_nativeGetPointerId(JNIEnv* env, jclass clazz,
- jint nativePtr, jint pointerIndex) {
+ jlong nativePtr, jint pointerIndex) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
size_t pointerCount = event->getPointerCount();
if (!validatePointerIndex(env, pointerIndex, pointerCount)) {
@@ -560,7 +560,7 @@ static jint android_view_MotionEvent_nativeGetPointerId(JNIEnv* env, jclass claz
}
static jint android_view_MotionEvent_nativeGetToolType(JNIEnv* env, jclass clazz,
- jint nativePtr, jint pointerIndex) {
+ jlong nativePtr, jint pointerIndex) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
size_t pointerCount = event->getPointerCount();
if (!validatePointerIndex(env, pointerIndex, pointerCount)) {
@@ -570,19 +570,19 @@ static jint android_view_MotionEvent_nativeGetToolType(JNIEnv* env, jclass clazz
}
static jint android_view_MotionEvent_nativeFindPointerIndex(JNIEnv* env, jclass clazz,
- jint nativePtr, jint pointerId) {
+ jlong nativePtr, jint pointerId) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return jint(event->findPointerIndex(pointerId));
}
static jint android_view_MotionEvent_nativeGetHistorySize(JNIEnv* env, jclass clazz,
- jint nativePtr) {
+ jlong nativePtr) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
return jint(event->getHistorySize());
}
static jlong android_view_MotionEvent_nativeGetEventTimeNanos(JNIEnv* env, jclass clazz,
- jint nativePtr, jint historyPos) {
+ jlong nativePtr, jint historyPos) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
if (historyPos == HISTORY_CURRENT) {
return event->getEventTime();
@@ -596,7 +596,7 @@ static jlong android_view_MotionEvent_nativeGetEventTimeNanos(JNIEnv* env, jclas
}
static jfloat android_view_MotionEvent_nativeGetRawAxisValue(JNIEnv* env, jclass clazz,
- jint nativePtr, jint axis, jint pointerIndex, jint historyPos) {
+ jlong nativePtr, jint axis, jint pointerIndex, jint historyPos) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
size_t pointerCount = event->getPointerCount();
if (!validatePointerIndex(env, pointerIndex, pointerCount)) {
@@ -615,7 +615,7 @@ static jfloat android_view_MotionEvent_nativeGetRawAxisValue(JNIEnv* env, jclass
}
static jfloat android_view_MotionEvent_nativeGetAxisValue(JNIEnv* env, jclass clazz,
- jint nativePtr, jint axis, jint pointerIndex, jint historyPos) {
+ jlong nativePtr, jint axis, jint pointerIndex, jint historyPos) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
size_t pointerCount = event->getPointerCount();
if (!validatePointerIndex(env, pointerIndex, pointerCount)) {
@@ -634,7 +634,7 @@ static jfloat android_view_MotionEvent_nativeGetAxisValue(JNIEnv* env, jclass cl
}
static void android_view_MotionEvent_nativeGetPointerCoords(JNIEnv* env, jclass clazz,
- jint nativePtr, jint pointerIndex, jint historyPos, jobject outPointerCoordsObj) {
+ jlong nativePtr, jint pointerIndex, jint historyPos, jobject outPointerCoordsObj) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
size_t pointerCount = event->getPointerCount();
if (!validatePointerIndex(env, pointerIndex, pointerCount)
@@ -657,7 +657,7 @@ static void android_view_MotionEvent_nativeGetPointerCoords(JNIEnv* env, jclass
}
static void android_view_MotionEvent_nativeGetPointerProperties(JNIEnv* env, jclass clazz,
- jint nativePtr, jint pointerIndex, jobject outPointerPropertiesObj) {
+ jlong nativePtr, jint pointerIndex, jobject outPointerPropertiesObj) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
size_t pointerCount = event->getPointerCount();
if (!validatePointerIndex(env, pointerIndex, pointerCount)
@@ -670,13 +670,13 @@ static void android_view_MotionEvent_nativeGetPointerProperties(JNIEnv* env, jcl
}
static void android_view_MotionEvent_nativeScale(JNIEnv* env, jclass clazz,
- jint nativePtr, jfloat scale) {
+ jlong nativePtr, jfloat scale) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
event->scale(scale);
}
static void android_view_MotionEvent_nativeTransform(JNIEnv* env, jclass clazz,
- jint nativePtr, jobject matrixObj) {
+ jlong nativePtr, jobject matrixObj) {
SkMatrix* matrix = android_graphics_Matrix_getSkMatrix(env, matrixObj);
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
@@ -693,8 +693,8 @@ static void android_view_MotionEvent_nativeTransform(JNIEnv* env, jclass clazz,
event->transform(m);
}
-static jint android_view_MotionEvent_nativeReadFromParcel(JNIEnv* env, jclass clazz,
- jint nativePtr, jobject parcelObj) {
+static jlong android_view_MotionEvent_nativeReadFromParcel(JNIEnv* env, jclass clazz,
+ jlong nativePtr, jobject parcelObj) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
if (!event) {
event = new MotionEvent();
@@ -710,11 +710,11 @@ static jint android_view_MotionEvent_nativeReadFromParcel(JNIEnv* env, jclass cl
jniThrowRuntimeException(env, "Failed to read MotionEvent parcel.");
return 0;
}
- return reinterpret_cast<jint>(event);
+ return reinterpret_cast<jlong>(event);
}
static void android_view_MotionEvent_nativeWriteToParcel(JNIEnv* env, jclass clazz,
- jint nativePtr, jobject parcelObj) {
+ jlong nativePtr, jobject parcelObj) {
MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
Parcel* parcel = parcelForJavaObject(env, parcelObj);
@@ -729,116 +729,116 @@ static void android_view_MotionEvent_nativeWriteToParcel(JNIEnv* env, jclass cla
static JNINativeMethod gMotionEventMethods[] = {
/* name, signature, funcPtr */
{ "nativeInitialize",
- "(IIIIIIIIFFFFJJI[Landroid/view/MotionEvent$PointerProperties;"
- "[Landroid/view/MotionEvent$PointerCoords;)I",
+ "(JIIIIIIIFFFFJJI[Landroid/view/MotionEvent$PointerProperties;"
+ "[Landroid/view/MotionEvent$PointerCoords;)J",
(void*)android_view_MotionEvent_nativeInitialize },
{ "nativeCopy",
- "(IIZ)I",
+ "(JJZ)J",
(void*)android_view_MotionEvent_nativeCopy },
{ "nativeDispose",
- "(I)V",
+ "(J)V",
(void*)android_view_MotionEvent_nativeDispose },
{ "nativeAddBatch",
- "(IJ[Landroid/view/MotionEvent$PointerCoords;I)V",
+ "(JJ[Landroid/view/MotionEvent$PointerCoords;I)V",
(void*)android_view_MotionEvent_nativeAddBatch },
{ "nativeGetDeviceId",
- "(I)I",
+ "(J)I",
(void*)android_view_MotionEvent_nativeGetDeviceId },
{ "nativeGetSource",
- "(I)I",
+ "(J)I",
(void*)android_view_MotionEvent_nativeGetSource },
{ "nativeSetSource",
- "(II)I",
+ "(JI)I",
(void*)android_view_MotionEvent_nativeSetSource },
{ "nativeGetAction",
- "(I)I",
+ "(J)I",
(void*)android_view_MotionEvent_nativeGetAction },
{ "nativeSetAction",
- "(II)V",
+ "(JI)V",
(void*)android_view_MotionEvent_nativeSetAction },
{ "nativeIsTouchEvent",
- "(I)Z",
+ "(J)Z",
(void*)android_view_MotionEvent_nativeIsTouchEvent },
{ "nativeGetFlags",
- "(I)I",
+ "(J)I",
(void*)android_view_MotionEvent_nativeGetFlags },
{ "nativeSetFlags",
- "(II)V",
+ "(JI)V",
(void*)android_view_MotionEvent_nativeSetFlags },
{ "nativeGetEdgeFlags",
- "(I)I",
+ "(J)I",
(void*)android_view_MotionEvent_nativeGetEdgeFlags },
{ "nativeSetEdgeFlags",
- "(II)V",
+ "(JI)V",
(void*)android_view_MotionEvent_nativeSetEdgeFlags },
{ "nativeGetMetaState",
- "(I)I",
+ "(J)I",
(void*)android_view_MotionEvent_nativeGetMetaState },
{ "nativeGetButtonState",
- "(I)I",
+ "(J)I",
(void*)android_view_MotionEvent_nativeGetButtonState },
{ "nativeOffsetLocation",
- "(IFF)V",
+ "(JFF)V",
(void*)android_view_MotionEvent_nativeOffsetLocation },
{ "nativeGetXOffset",
- "(I)F",
+ "(J)F",
(void*)android_view_MotionEvent_nativeGetXOffset },
{ "nativeGetYOffset",
- "(I)F",
+ "(J)F",
(void*)android_view_MotionEvent_nativeGetYOffset },
{ "nativeGetXPrecision",
- "(I)F",
+ "(J)F",
(void*)android_view_MotionEvent_nativeGetXPrecision },
{ "nativeGetYPrecision",
- "(I)F",
+ "(J)F",
(void*)android_view_MotionEvent_nativeGetYPrecision },
{ "nativeGetDownTimeNanos",
- "(I)J",
+ "(J)J",
(void*)android_view_MotionEvent_nativeGetDownTimeNanos },
{ "nativeSetDownTimeNanos",
- "(IJ)V",
+ "(JJ)V",
(void*)android_view_MotionEvent_nativeSetDownTimeNanos },
{ "nativeGetPointerCount",
- "(I)I",
+ "(J)I",
(void*)android_view_MotionEvent_nativeGetPointerCount },
{ "nativeGetPointerId",
- "(II)I",
+ "(JI)I",
(void*)android_view_MotionEvent_nativeGetPointerId },
{ "nativeGetToolType",
- "(II)I",
+ "(JI)I",
(void*)android_view_MotionEvent_nativeGetToolType },
{ "nativeFindPointerIndex",
- "(II)I",
+ "(JI)I",
(void*)android_view_MotionEvent_nativeFindPointerIndex },
{ "nativeGetHistorySize",
- "(I)I",
+ "(J)I",
(void*)android_view_MotionEvent_nativeGetHistorySize },
{ "nativeGetEventTimeNanos",
- "(II)J",
+ "(JI)J",
(void*)android_view_MotionEvent_nativeGetEventTimeNanos },
{ "nativeGetRawAxisValue",
- "(IIII)F",
+ "(JIII)F",
(void*)android_view_MotionEvent_nativeGetRawAxisValue },
{ "nativeGetAxisValue",
- "(IIII)F",
+ "(JIII)F",
(void*)android_view_MotionEvent_nativeGetAxisValue },
{ "nativeGetPointerCoords",
- "(IIILandroid/view/MotionEvent$PointerCoords;)V",
+ "(JIILandroid/view/MotionEvent$PointerCoords;)V",
(void*)android_view_MotionEvent_nativeGetPointerCoords },
{ "nativeGetPointerProperties",
- "(IILandroid/view/MotionEvent$PointerProperties;)V",
+ "(JILandroid/view/MotionEvent$PointerProperties;)V",
(void*)android_view_MotionEvent_nativeGetPointerProperties },
{ "nativeScale",
- "(IF)V",
+ "(JF)V",
(void*)android_view_MotionEvent_nativeScale },
{ "nativeTransform",
- "(ILandroid/graphics/Matrix;)V",
+ "(JLandroid/graphics/Matrix;)V",
(void*)android_view_MotionEvent_nativeTransform },
{ "nativeReadFromParcel",
- "(ILandroid/os/Parcel;)I",
+ "(JLandroid/os/Parcel;)J",
(void*)android_view_MotionEvent_nativeReadFromParcel },
{ "nativeWriteToParcel",
- "(ILandroid/os/Parcel;)V",
+ "(JLandroid/os/Parcel;)V",
(void*)android_view_MotionEvent_nativeWriteToParcel },
};
@@ -871,7 +871,7 @@ int register_android_view_MotionEvent(JNIEnv* env) {
GET_METHOD_ID(gMotionEventClassInfo.recycle, gMotionEventClassInfo.clazz,
"recycle", "()V");
GET_FIELD_ID(gMotionEventClassInfo.mNativePtr, gMotionEventClassInfo.clazz,
- "mNativePtr", "I");
+ "mNativePtr", "J");
jclass clazz;
FIND_CLASS(clazz, "android/view/MotionEvent$PointerCoords");
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp
index dd178d8297f3..19ee8a69f032 100644
--- a/core/jni/android_view_Surface.cpp
+++ b/core/jni/android_view_Surface.cpp
@@ -97,7 +97,7 @@ sp<Surface> android_view_Surface_getSurface(JNIEnv* env, jobject surfaceObj) {
gSurfaceClassInfo.mLock);
if (env->MonitorEnter(lock) == JNI_OK) {
sur = reinterpret_cast<Surface *>(
- env->GetIntField(surfaceObj, gSurfaceClassInfo.mNativeObject));
+ env->GetLongField(surfaceObj, gSurfaceClassInfo.mNativeObject));
env->MonitorExit(lock);
}
return sur;
@@ -135,7 +135,7 @@ static inline bool isSurfaceValid(const sp<Surface>& sur) {
// ----------------------------------------------------------------------------
-static jint nativeCreateFromSurfaceTexture(JNIEnv* env, jclass clazz,
+static jlong nativeCreateFromSurfaceTexture(JNIEnv* env, jclass clazz,
jobject surfaceTextureObj) {
sp<IGraphicBufferProducer> producer(SurfaceTexture_getProducer(env, surfaceTextureObj));
if (producer == NULL) {
@@ -151,20 +151,20 @@ static jint nativeCreateFromSurfaceTexture(JNIEnv* env, jclass clazz,
}
surface->incStrong(&sRefBaseOwner);
- return int(surface.get());
+ return jlong(surface.get());
}
-static void nativeRelease(JNIEnv* env, jclass clazz, jint nativeObject) {
+static void nativeRelease(JNIEnv* env, jclass clazz, jlong nativeObject) {
sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject));
sur->decStrong(&sRefBaseOwner);
}
-static jboolean nativeIsValid(JNIEnv* env, jclass clazz, jint nativeObject) {
+static jboolean nativeIsValid(JNIEnv* env, jclass clazz, jlong nativeObject) {
sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject));
return isSurfaceValid(sur) ? JNI_TRUE : JNI_FALSE;
}
-static jboolean nativeIsConsumerRunningBehind(JNIEnv* env, jclass clazz, jint nativeObject) {
+static jboolean nativeIsConsumerRunningBehind(JNIEnv* env, jclass clazz, jlong nativeObject) {
sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject));
if (!isSurfaceValid(sur)) {
doThrowIAE(env);
@@ -193,14 +193,14 @@ static inline SkBitmap::Config convertPixelFormat(PixelFormat format) {
static inline void swapCanvasPtr(JNIEnv* env, jobject canvasObj, SkCanvas* newCanvas) {
jobject canvasFinalizerObj = env->GetObjectField(canvasObj, gCanvasClassInfo.mFinalizer);
SkCanvas* previousCanvas = reinterpret_cast<SkCanvas*>(
- env->GetIntField(canvasObj, gCanvasClassInfo.mNativeCanvas));
- env->SetIntField(canvasObj, gCanvasClassInfo.mNativeCanvas, (int)newCanvas);
- env->SetIntField(canvasFinalizerObj, gCanvasFinalizerClassInfo.mNativeCanvas, (int)newCanvas);
+ env->GetLongField(canvasObj, gCanvasClassInfo.mNativeCanvas));
+ env->SetLongField(canvasObj, gCanvasClassInfo.mNativeCanvas, (jlong)newCanvas);
+ env->SetLongField(canvasFinalizerObj, gCanvasFinalizerClassInfo.mNativeCanvas, (jlong)newCanvas);
SkSafeUnref(previousCanvas);
}
-static jint nativeLockCanvas(JNIEnv* env, jclass clazz,
- jint nativeObject, jobject canvasObj, jobject dirtyRectObj) {
+static jlong nativeLockCanvas(JNIEnv* env, jclass clazz,
+ jlong nativeObject, jobject canvasObj, jobject dirtyRectObj) {
sp<Surface> surface(reinterpret_cast<Surface *>(nativeObject));
if (!isSurfaceValid(surface)) {
@@ -264,11 +264,11 @@ static jint nativeLockCanvas(JNIEnv* env, jclass clazz,
// because the latter could be replaced while the surface is locked.
sp<Surface> lockedSurface(surface);
lockedSurface->incStrong(&sRefBaseOwner);
- return (int) lockedSurface.get();
+ return (jlong) lockedSurface.get();
}
static void nativeUnlockCanvasAndPost(JNIEnv* env, jclass clazz,
- jint nativeObject, jobject canvasObj) {
+ jlong nativeObject, jobject canvasObj) {
sp<Surface> surface(reinterpret_cast<Surface *>(nativeObject));
if (!isSurfaceValid(surface)) {
return;
@@ -287,8 +287,8 @@ static void nativeUnlockCanvasAndPost(JNIEnv* env, jclass clazz,
// ----------------------------------------------------------------------------
-static jint nativeCreateFromSurfaceControl(JNIEnv* env, jclass clazz,
- jint surfaceControlNativeObj) {
+static jlong nativeCreateFromSurfaceControl(JNIEnv* env, jclass clazz,
+ jlong surfaceControlNativeObj) {
/*
* This is used by the WindowManagerService just after constructing
* a Surface and is necessary for returning the Surface reference to
@@ -300,11 +300,11 @@ static jint nativeCreateFromSurfaceControl(JNIEnv* env, jclass clazz,
if (surface != NULL) {
surface->incStrong(&sRefBaseOwner);
}
- return reinterpret_cast<jint>(surface.get());
+ return reinterpret_cast<jlong>(surface.get());
}
-static jint nativeReadFromParcel(JNIEnv* env, jclass clazz,
- jint nativeObject, jobject parcelObj) {
+static jlong nativeReadFromParcel(JNIEnv* env, jclass clazz,
+ jlong nativeObject, jobject parcelObj) {
Parcel* parcel = parcelForJavaObject(env, parcelObj);
if (parcel == NULL) {
doThrowNPE(env);
@@ -319,7 +319,7 @@ static jint nativeReadFromParcel(JNIEnv* env, jclass clazz,
if (self != NULL
&& (self->getIGraphicBufferProducer()->asBinder() == binder)) {
// same IGraphicBufferProducer, return ourselves
- return int(self.get());
+ return jlong(self.get());
}
sp<Surface> sur;
@@ -336,11 +336,11 @@ static jint nativeReadFromParcel(JNIEnv* env, jclass clazz,
self->decStrong(&sRefBaseOwner);
}
- return int(sur.get());
+ return jlong(sur.get());
}
static void nativeWriteToParcel(JNIEnv* env, jclass clazz,
- jint nativeObject, jobject parcelObj) {
+ jlong nativeObject, jobject parcelObj) {
Parcel* parcel = parcelForJavaObject(env, parcelObj);
if (parcel == NULL) {
doThrowNPE(env);
@@ -353,23 +353,23 @@ static void nativeWriteToParcel(JNIEnv* env, jclass clazz,
// ----------------------------------------------------------------------------
static JNINativeMethod gSurfaceMethods[] = {
- {"nativeCreateFromSurfaceTexture", "(Landroid/graphics/SurfaceTexture;)I",
+ {"nativeCreateFromSurfaceTexture", "(Landroid/graphics/SurfaceTexture;)J",
(void*)nativeCreateFromSurfaceTexture },
- {"nativeRelease", "(I)V",
+ {"nativeRelease", "(J)V",
(void*)nativeRelease },
- {"nativeIsValid", "(I)Z",
+ {"nativeIsValid", "(J)Z",
(void*)nativeIsValid },
- {"nativeIsConsumerRunningBehind", "(I)Z",
+ {"nativeIsConsumerRunningBehind", "(J)Z",
(void*)nativeIsConsumerRunningBehind },
- {"nativeLockCanvas", "(ILandroid/graphics/Canvas;Landroid/graphics/Rect;)I",
+ {"nativeLockCanvas", "(JLandroid/graphics/Canvas;Landroid/graphics/Rect;)J",
(void*)nativeLockCanvas },
- {"nativeUnlockCanvasAndPost", "(ILandroid/graphics/Canvas;)V",
+ {"nativeUnlockCanvasAndPost", "(JLandroid/graphics/Canvas;)V",
(void*)nativeUnlockCanvasAndPost },
- {"nativeCreateFromSurfaceControl", "(I)I",
+ {"nativeCreateFromSurfaceControl", "(J)J",
(void*)nativeCreateFromSurfaceControl },
- {"nativeReadFromParcel", "(ILandroid/os/Parcel;)I",
+ {"nativeReadFromParcel", "(JLandroid/os/Parcel;)J",
(void*)nativeReadFromParcel },
- {"nativeWriteToParcel", "(ILandroid/os/Parcel;)V",
+ {"nativeWriteToParcel", "(JLandroid/os/Parcel;)V",
(void*)nativeWriteToParcel },
};
@@ -381,18 +381,18 @@ int register_android_view_Surface(JNIEnv* env)
jclass clazz = env->FindClass("android/view/Surface");
gSurfaceClassInfo.clazz = jclass(env->NewGlobalRef(clazz));
gSurfaceClassInfo.mNativeObject =
- env->GetFieldID(gSurfaceClassInfo.clazz, "mNativeObject", "I");
+ env->GetFieldID(gSurfaceClassInfo.clazz, "mNativeObject", "J");
gSurfaceClassInfo.mLock =
env->GetFieldID(gSurfaceClassInfo.clazz, "mLock", "Ljava/lang/Object;");
- gSurfaceClassInfo.ctor = env->GetMethodID(gSurfaceClassInfo.clazz, "<init>", "(I)V");
+ gSurfaceClassInfo.ctor = env->GetMethodID(gSurfaceClassInfo.clazz, "<init>", "(J)V");
clazz = env->FindClass("android/graphics/Canvas");
gCanvasClassInfo.mFinalizer = env->GetFieldID(clazz, "mFinalizer", "Landroid/graphics/Canvas$CanvasFinalizer;");
- gCanvasClassInfo.mNativeCanvas = env->GetFieldID(clazz, "mNativeCanvas", "I");
+ gCanvasClassInfo.mNativeCanvas = env->GetFieldID(clazz, "mNativeCanvas", "J");
gCanvasClassInfo.mSurfaceFormat = env->GetFieldID(clazz, "mSurfaceFormat", "I");
clazz = env->FindClass("android/graphics/Canvas$CanvasFinalizer");
- gCanvasFinalizerClassInfo.mNativeCanvas = env->GetFieldID(clazz, "mNativeCanvas", "I");
+ gCanvasFinalizerClassInfo.mNativeCanvas = env->GetFieldID(clazz, "mNativeCanvas", "J");
clazz = env->FindClass("android/graphics/Rect");
gRectClassInfo.left = env->GetFieldID(clazz, "left", "I");
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index b8d3c20fd899..ed84a6443e20 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -91,7 +91,7 @@ private:
// ----------------------------------------------------------------------------
-static jint nativeCreate(JNIEnv* env, jclass clazz, jobject sessionObj,
+static jlong nativeCreate(JNIEnv* env, jclass clazz, jobject sessionObj,
jstring nameStr, jint w, jint h, jint format, jint flags) {
ScopedUtfChars name(env, nameStr);
sp<SurfaceComposerClient> client(android_view_SurfaceSession_getClient(env, sessionObj));
@@ -102,15 +102,15 @@ static jint nativeCreate(JNIEnv* env, jclass clazz, jobject sessionObj,
return 0;
}
surface->incStrong((void *)nativeCreate);
- return int(surface.get());
+ return reinterpret_cast<jlong>(surface.get());
}
-static void nativeRelease(JNIEnv* env, jclass clazz, jint nativeObject) {
+static void nativeRelease(JNIEnv* env, jclass clazz, jlong nativeObject) {
sp<SurfaceControl> ctrl(reinterpret_cast<SurfaceControl *>(nativeObject));
ctrl->decStrong((void *)nativeCreate);
}
-static void nativeDestroy(JNIEnv* env, jclass clazz, jint nativeObject) {
+static void nativeDestroy(JNIEnv* env, jclass clazz, jlong nativeObject) {
sp<SurfaceControl> ctrl(reinterpret_cast<SurfaceControl *>(nativeObject));
ctrl->clear();
ctrl->decStrong((void *)nativeCreate);
@@ -209,7 +209,7 @@ static void nativeSetAnimationTransaction(JNIEnv* env, jclass clazz) {
SurfaceComposerClient::setAnimationTransaction();
}
-static void nativeSetLayer(JNIEnv* env, jclass clazz, jint nativeObject, jint zorder) {
+static void nativeSetLayer(JNIEnv* env, jclass clazz, jlong nativeObject, jint zorder) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
status_t err = ctrl->setLayer(zorder);
if (err < 0 && err != NO_INIT) {
@@ -217,7 +217,7 @@ static void nativeSetLayer(JNIEnv* env, jclass clazz, jint nativeObject, jint zo
}
}
-static void nativeSetPosition(JNIEnv* env, jclass clazz, jint nativeObject, jfloat x, jfloat y) {
+static void nativeSetPosition(JNIEnv* env, jclass clazz, jlong nativeObject, jfloat x, jfloat y) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
status_t err = ctrl->setPosition(x, y);
if (err < 0 && err != NO_INIT) {
@@ -225,7 +225,7 @@ static void nativeSetPosition(JNIEnv* env, jclass clazz, jint nativeObject, jflo
}
}
-static void nativeSetSize(JNIEnv* env, jclass clazz, jint nativeObject, jint w, jint h) {
+static void nativeSetSize(JNIEnv* env, jclass clazz, jlong nativeObject, jint w, jint h) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
status_t err = ctrl->setSize(w, h);
if (err < 0 && err != NO_INIT) {
@@ -233,7 +233,7 @@ static void nativeSetSize(JNIEnv* env, jclass clazz, jint nativeObject, jint w,
}
}
-static void nativeSetFlags(JNIEnv* env, jclass clazz, jint nativeObject, jint flags, jint mask) {
+static void nativeSetFlags(JNIEnv* env, jclass clazz, jlong nativeObject, jint flags, jint mask) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
status_t err = ctrl->setFlags(flags, mask);
if (err < 0 && err != NO_INIT) {
@@ -241,7 +241,7 @@ static void nativeSetFlags(JNIEnv* env, jclass clazz, jint nativeObject, jint fl
}
}
-static void nativeSetTransparentRegionHint(JNIEnv* env, jclass clazz, jint nativeObject, jobject regionObj) {
+static void nativeSetTransparentRegionHint(JNIEnv* env, jclass clazz, jlong nativeObject, jobject regionObj) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
SkRegion* region = android_graphics_Region_getSkRegion(env, regionObj);
if (!region) {
@@ -266,7 +266,7 @@ static void nativeSetTransparentRegionHint(JNIEnv* env, jclass clazz, jint nativ
}
}
-static void nativeSetAlpha(JNIEnv* env, jclass clazz, jint nativeObject, jfloat alpha) {
+static void nativeSetAlpha(JNIEnv* env, jclass clazz, jlong nativeObject, jfloat alpha) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
status_t err = ctrl->setAlpha(alpha);
if (err < 0 && err != NO_INIT) {
@@ -274,7 +274,7 @@ static void nativeSetAlpha(JNIEnv* env, jclass clazz, jint nativeObject, jfloat
}
}
-static void nativeSetMatrix(JNIEnv* env, jclass clazz, jint nativeObject,
+static void nativeSetMatrix(JNIEnv* env, jclass clazz, jlong nativeObject,
jfloat dsdx, jfloat dtdx, jfloat dsdy, jfloat dtdy) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
status_t err = ctrl->setMatrix(dsdx, dtdx, dsdy, dtdy);
@@ -283,7 +283,7 @@ static void nativeSetMatrix(JNIEnv* env, jclass clazz, jint nativeObject,
}
}
-static void nativeSetWindowCrop(JNIEnv* env, jclass clazz, jint nativeObject,
+static void nativeSetWindowCrop(JNIEnv* env, jclass clazz, jlong nativeObject,
jint l, jint t, jint r, jint b) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
Rect crop(l, t, r, b);
@@ -293,7 +293,7 @@ static void nativeSetWindowCrop(JNIEnv* env, jclass clazz, jint nativeObject,
}
}
-static void nativeSetLayerStack(JNIEnv* env, jclass clazz, jint nativeObject, jint layerStack) {
+static void nativeSetLayerStack(JNIEnv* env, jclass clazz, jlong nativeObject, jint layerStack) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
status_t err = ctrl->setLayerStack(layerStack);
if (err < 0 && err != NO_INIT) {
@@ -321,7 +321,7 @@ static void nativeDestroyDisplay(JNIEnv* env, jclass clazz, jobject tokenObj) {
}
static void nativeSetDisplaySurface(JNIEnv* env, jclass clazz,
- jobject tokenObj, jint nativeSurfaceObject) {
+ jobject tokenObj, jlong nativeSurfaceObject) {
sp<IBinder> token(ibinderForJavaObject(env, tokenObj));
if (token == NULL) return;
sp<IGraphicBufferProducer> bufferProducer;
@@ -390,11 +390,11 @@ static void nativeUnblankDisplay(JNIEnv* env, jclass clazz, jobject tokenObj) {
// ----------------------------------------------------------------------------
static JNINativeMethod sSurfaceControlMethods[] = {
- {"nativeCreate", "(Landroid/view/SurfaceSession;Ljava/lang/String;IIII)I",
+ {"nativeCreate", "(Landroid/view/SurfaceSession;Ljava/lang/String;IIII)J",
(void*)nativeCreate },
- {"nativeRelease", "(I)V",
+ {"nativeRelease", "(J)V",
(void*)nativeRelease },
- {"nativeDestroy", "(I)V",
+ {"nativeDestroy", "(J)V",
(void*)nativeDestroy },
{"nativeScreenshot", "(Landroid/os/IBinder;IIIIZ)Landroid/graphics/Bitmap;",
(void*)nativeScreenshotBitmap },
@@ -406,23 +406,23 @@ static JNINativeMethod sSurfaceControlMethods[] = {
(void*)nativeCloseTransaction },
{"nativeSetAnimationTransaction", "()V",
(void*)nativeSetAnimationTransaction },
- {"nativeSetLayer", "(II)V",
+ {"nativeSetLayer", "(JI)V",
(void*)nativeSetLayer },
- {"nativeSetPosition", "(IFF)V",
+ {"nativeSetPosition", "(JFF)V",
(void*)nativeSetPosition },
- {"nativeSetSize", "(III)V",
+ {"nativeSetSize", "(JII)V",
(void*)nativeSetSize },
- {"nativeSetTransparentRegionHint", "(ILandroid/graphics/Region;)V",
+ {"nativeSetTransparentRegionHint", "(JLandroid/graphics/Region;)V",
(void*)nativeSetTransparentRegionHint },
- {"nativeSetAlpha", "(IF)V",
+ {"nativeSetAlpha", "(JF)V",
(void*)nativeSetAlpha },
- {"nativeSetMatrix", "(IFFFF)V",
+ {"nativeSetMatrix", "(JFFFF)V",
(void*)nativeSetMatrix },
- {"nativeSetFlags", "(III)V",
+ {"nativeSetFlags", "(JII)V",
(void*)nativeSetFlags },
- {"nativeSetWindowCrop", "(IIIII)V",
+ {"nativeSetWindowCrop", "(JIIII)V",
(void*)nativeSetWindowCrop },
- {"nativeSetLayerStack", "(II)V",
+ {"nativeSetLayerStack", "(JI)V",
(void*)nativeSetLayerStack },
{"nativeGetBuiltInDisplay", "(I)Landroid/os/IBinder;",
(void*)nativeGetBuiltInDisplay },
@@ -430,7 +430,7 @@ static JNINativeMethod sSurfaceControlMethods[] = {
(void*)nativeCreateDisplay },
{"nativeDestroyDisplay", "(Landroid/os/IBinder;)V",
(void*)nativeDestroyDisplay },
- {"nativeSetDisplaySurface", "(Landroid/os/IBinder;I)V",
+ {"nativeSetDisplaySurface", "(Landroid/os/IBinder;J)V",
(void*)nativeSetDisplaySurface },
{"nativeSetDisplayLayerStack", "(Landroid/os/IBinder;I)V",
(void*)nativeSetDisplayLayerStack },
diff --git a/core/jni/android_view_TextureView.cpp b/core/jni/android_view_TextureView.cpp
index 7a4a20a97cab..77ede33ca150 100644
--- a/core/jni/android_view_TextureView.cpp
+++ b/core/jni/android_view_TextureView.cpp
@@ -60,9 +60,15 @@ static struct {
#define GET_INT(object, field) \
env->GetIntField(object, field)
+#define GET_LONG(object, field) \
+ env->GetLongField(object, field)
+
#define SET_INT(object, field, value) \
env->SetIntField(object, field, value)
+#define SET_LONG(object, field, value) \
+ env->SetLongField(object, field, value)
+
#define INVOKEV(object, method, ...) \
env->CallVoidMethod(object, method, __VA_ARGS__)
@@ -104,35 +110,35 @@ static void android_view_TextureView_createNativeWindow(JNIEnv* env, jobject tex
sp<ANativeWindow> window = new Surface(producer, true);
window->incStrong((void*)android_view_TextureView_createNativeWindow);
- SET_INT(textureView, gTextureViewClassInfo.nativeWindow, jint(window.get()));
+ SET_LONG(textureView, gTextureViewClassInfo.nativeWindow, jlong(window.get()));
}
static void android_view_TextureView_destroyNativeWindow(JNIEnv* env, jobject textureView) {
ANativeWindow* nativeWindow = (ANativeWindow*)
- GET_INT(textureView, gTextureViewClassInfo.nativeWindow);
+ GET_LONG(textureView, gTextureViewClassInfo.nativeWindow);
if (nativeWindow) {
sp<ANativeWindow> window(nativeWindow);
window->decStrong((void*)android_view_TextureView_createNativeWindow);
- SET_INT(textureView, gTextureViewClassInfo.nativeWindow, 0);
+ SET_LONG(textureView, gTextureViewClassInfo.nativeWindow, 0);
}
}
static inline void swapCanvasPtr(JNIEnv* env, jobject canvasObj, SkCanvas* newCanvas) {
jobject canvasFinalizerObj = env->GetObjectField(canvasObj, gCanvasClassInfo.mFinalizer);
SkCanvas* previousCanvas = reinterpret_cast<SkCanvas*>(
- env->GetIntField(canvasObj, gCanvasClassInfo.mNativeCanvas));
- env->SetIntField(canvasObj, gCanvasClassInfo.mNativeCanvas, (int)newCanvas);
- env->SetIntField(canvasFinalizerObj, gCanvasFinalizerClassInfo.mNativeCanvas, (int)newCanvas);
+ env->GetLongField(canvasObj, gCanvasClassInfo.mNativeCanvas));
+ env->SetLongField(canvasObj, gCanvasClassInfo.mNativeCanvas, (jlong)newCanvas);
+ env->SetLongField(canvasFinalizerObj, gCanvasFinalizerClassInfo.mNativeCanvas, (jlong)newCanvas);
SkSafeUnref(previousCanvas);
}
static jboolean android_view_TextureView_lockCanvas(JNIEnv* env, jobject,
- jint nativeWindow, jobject canvas, jobject dirtyRect) {
+ jlong nativeWindow, jobject canvas, jobject dirtyRect) {
if (!nativeWindow) {
- return false;
+ return JNI_FALSE;
}
ANativeWindow_Buffer buffer;
@@ -149,7 +155,7 @@ static jboolean android_view_TextureView_lockCanvas(JNIEnv* env, jobject,
sp<ANativeWindow> window((ANativeWindow*) nativeWindow);
int32_t status = native_window_lock(window.get(), &buffer, &rect);
- if (status) return false;
+ if (status) return JNI_FALSE;
ssize_t bytesCount = buffer.stride * bytesPerPixel(buffer.format);
@@ -180,11 +186,11 @@ static jboolean android_view_TextureView_lockCanvas(JNIEnv* env, jobject,
int(rect.left), int(rect.top), int(rect.right), int(rect.bottom));
}
- return true;
+ return JNI_TRUE;
}
static void android_view_TextureView_unlockCanvasAndPost(JNIEnv* env, jobject,
- jint nativeWindow, jobject canvas) {
+ jlong nativeWindow, jobject canvas) {
SkCanvas* nativeCanvas = SkNEW(SkCanvas);
swapCanvasPtr(env, canvas, nativeCanvas);
@@ -207,9 +213,9 @@ static JNINativeMethod gMethods[] = {
{ "nDestroyNativeWindow", "()V",
(void*) android_view_TextureView_destroyNativeWindow },
- { "nLockCanvas", "(ILandroid/graphics/Canvas;Landroid/graphics/Rect;)Z",
+ { "nLockCanvas", "(JLandroid/graphics/Canvas;Landroid/graphics/Rect;)Z",
(void*) android_view_TextureView_lockCanvas },
- { "nUnlockCanvasAndPost", "(ILandroid/graphics/Canvas;)V",
+ { "nUnlockCanvasAndPost", "(JLandroid/graphics/Canvas;)V",
(void*) android_view_TextureView_unlockCanvasAndPost },
};
@@ -237,14 +243,14 @@ int register_android_view_TextureView(JNIEnv* env) {
FIND_CLASS(clazz, "android/graphics/Canvas");
GET_FIELD_ID(gCanvasClassInfo.mFinalizer, clazz, "mFinalizer",
"Landroid/graphics/Canvas$CanvasFinalizer;");
- GET_FIELD_ID(gCanvasClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "I");
+ GET_FIELD_ID(gCanvasClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "J");
GET_FIELD_ID(gCanvasClassInfo.mSurfaceFormat, clazz, "mSurfaceFormat", "I");
FIND_CLASS(clazz, "android/graphics/Canvas$CanvasFinalizer");
- GET_FIELD_ID(gCanvasFinalizerClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "I");
+ GET_FIELD_ID(gCanvasFinalizerClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "J");
FIND_CLASS(clazz, "android/view/TextureView");
- GET_FIELD_ID(gTextureViewClassInfo.nativeWindow, clazz, "mNativeWindow", "I");
+ GET_FIELD_ID(gTextureViewClassInfo.nativeWindow, clazz, "mNativeWindow", "J");
return AndroidRuntime::registerNativeMethods(env, kClassPathName, gMethods, NELEM(gMethods));
}
diff --git a/core/jni/android_view_VelocityTracker.cpp b/core/jni/android_view_VelocityTracker.cpp
index 90ba2ba849e8..1e36932ac3d7 100644
--- a/core/jni/android_view_VelocityTracker.cpp
+++ b/core/jni/android_view_VelocityTracker.cpp
@@ -138,26 +138,26 @@ bool VelocityTrackerState::getEstimator(int32_t id, VelocityTracker::Estimator*
// --- JNI Methods ---
-static jint android_view_VelocityTracker_nativeInitialize(JNIEnv* env, jclass clazz,
+static jlong android_view_VelocityTracker_nativeInitialize(JNIEnv* env, jclass clazz,
jstring strategyStr) {
if (strategyStr) {
ScopedUtfChars strategy(env, strategyStr);
- return reinterpret_cast<jint>(new VelocityTrackerState(strategy.c_str()));
+ return reinterpret_cast<jlong>(new VelocityTrackerState(strategy.c_str()));
}
- return reinterpret_cast<jint>(new VelocityTrackerState(NULL));
+ return reinterpret_cast<jlong>(new VelocityTrackerState(NULL));
}
-static void android_view_VelocityTracker_nativeDispose(JNIEnv* env, jclass clazz, jint ptr) {
+static void android_view_VelocityTracker_nativeDispose(JNIEnv* env, jclass clazz, jlong ptr) {
VelocityTrackerState* state = reinterpret_cast<VelocityTrackerState*>(ptr);
delete state;
}
-static void android_view_VelocityTracker_nativeClear(JNIEnv* env, jclass clazz, jint ptr) {
+static void android_view_VelocityTracker_nativeClear(JNIEnv* env, jclass clazz, jlong ptr) {
VelocityTrackerState* state = reinterpret_cast<VelocityTrackerState*>(ptr);
state->clear();
}
-static void android_view_VelocityTracker_nativeAddMovement(JNIEnv* env, jclass clazz, jint ptr,
+static void android_view_VelocityTracker_nativeAddMovement(JNIEnv* env, jclass clazz, jlong ptr,
jobject eventObj) {
const MotionEvent* event = android_view_MotionEvent_getNativePtr(env, eventObj);
if (!event) {
@@ -170,13 +170,13 @@ static void android_view_VelocityTracker_nativeAddMovement(JNIEnv* env, jclass c
}
static void android_view_VelocityTracker_nativeComputeCurrentVelocity(JNIEnv* env, jclass clazz,
- jint ptr, jint units, jfloat maxVelocity) {
+ jlong ptr, jint units, jfloat maxVelocity) {
VelocityTrackerState* state = reinterpret_cast<VelocityTrackerState*>(ptr);
state->computeCurrentVelocity(units, maxVelocity);
}
static jfloat android_view_VelocityTracker_nativeGetXVelocity(JNIEnv* env, jclass clazz,
- jint ptr, jint id) {
+ jlong ptr, jint id) {
VelocityTrackerState* state = reinterpret_cast<VelocityTrackerState*>(ptr);
float vx;
state->getVelocity(id, &vx, NULL);
@@ -184,7 +184,7 @@ static jfloat android_view_VelocityTracker_nativeGetXVelocity(JNIEnv* env, jclas
}
static jfloat android_view_VelocityTracker_nativeGetYVelocity(JNIEnv* env, jclass clazz,
- jint ptr, jint id) {
+ jlong ptr, jint id) {
VelocityTrackerState* state = reinterpret_cast<VelocityTrackerState*>(ptr);
float vy;
state->getVelocity(id, NULL, &vy);
@@ -192,7 +192,7 @@ static jfloat android_view_VelocityTracker_nativeGetYVelocity(JNIEnv* env, jclas
}
static jboolean android_view_VelocityTracker_nativeGetEstimator(JNIEnv* env, jclass clazz,
- jint ptr, jint id, jobject outEstimatorObj) {
+ jlong ptr, jint id, jobject outEstimatorObj) {
VelocityTrackerState* state = reinterpret_cast<VelocityTrackerState*>(ptr);
VelocityTracker::Estimator estimator;
bool result = state->getEstimator(id, &estimator);
@@ -217,28 +217,28 @@ static jboolean android_view_VelocityTracker_nativeGetEstimator(JNIEnv* env, jcl
static JNINativeMethod gVelocityTrackerMethods[] = {
/* name, signature, funcPtr */
{ "nativeInitialize",
- "(Ljava/lang/String;)I",
+ "(Ljava/lang/String;)J",
(void*)android_view_VelocityTracker_nativeInitialize },
{ "nativeDispose",
- "(I)V",
+ "(J)V",
(void*)android_view_VelocityTracker_nativeDispose },
{ "nativeClear",
- "(I)V",
+ "(J)V",
(void*)android_view_VelocityTracker_nativeClear },
{ "nativeAddMovement",
- "(ILandroid/view/MotionEvent;)V",
+ "(JLandroid/view/MotionEvent;)V",
(void*)android_view_VelocityTracker_nativeAddMovement },
{ "nativeComputeCurrentVelocity",
- "(IIF)V",
+ "(JIF)V",
(void*)android_view_VelocityTracker_nativeComputeCurrentVelocity },
{ "nativeGetXVelocity",
- "(II)F",
+ "(JI)F",
(void*)android_view_VelocityTracker_nativeGetXVelocity },
{ "nativeGetYVelocity",
- "(II)F",
+ "(JI)F",
(void*)android_view_VelocityTracker_nativeGetYVelocity },
{ "nativeGetEstimator",
- "(IILandroid/view/VelocityTracker$Estimator;)Z",
+ "(JILandroid/view/VelocityTracker$Estimator;)Z",
(void*)android_view_VelocityTracker_nativeGetEstimator },
};
diff --git a/core/jni/com_android_internal_content_NativeLibraryHelper.cpp b/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
index bf5accd431d7..a86091851aba 100644
--- a/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
+++ b/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
@@ -21,7 +21,9 @@
#include <utils/Log.h>
#include <androidfw/ZipFileRO.h>
+#include <androidfw/ZipUtils.h>
#include <ScopedUtfChars.h>
+#include <UniquePtr.h>
#include <zlib.h>
@@ -143,7 +145,7 @@ isFileDifferent(const char* filePath, size_t fileSize, time_t modifiedTime,
}
static install_status_t
-sumFiles(JNIEnv* env, void* arg, ZipFileRO* zipFile, ZipEntryRO zipEntry, const char* fileName)
+sumFiles(JNIEnv*, void* arg, ZipFileRO* zipFile, ZipEntryRO zipEntry, const char*)
{
size_t* total = (size_t*) arg;
size_t uncompLen;
@@ -178,7 +180,7 @@ copyFileIfChanged(JNIEnv *env, void* arg, ZipFileRO* zipFile, ZipEntryRO zipEntr
return INSTALL_FAILED_INVALID_APK;
} else {
struct tm t;
- ZipFileRO::zipTimeToTimespec(when, &t);
+ ZipUtils::zipTimeToTimespec(when, &t);
modTime = mktime(&t);
}
@@ -200,7 +202,7 @@ copyFileIfChanged(JNIEnv *env, void* arg, ZipFileRO* zipFile, ZipEntryRO zipEntr
}
// Only copy out the native file if it's different.
- struct stat st;
+ struct stat64 st;
if (!isFileDifferent(localFileName, uncompLen, modTime, crc, &st)) {
return INSTALL_SUCCEEDED;
}
@@ -273,26 +275,25 @@ iterateOverNativeFiles(JNIEnv *env, jstring javaFilePath, jstring javaCpuAbi, js
ScopedUtfChars cpuAbi(env, javaCpuAbi);
ScopedUtfChars cpuAbi2(env, javaCpuAbi2);
- ZipFileRO zipFile;
-
- if (zipFile.open(filePath.c_str()) != NO_ERROR) {
+ UniquePtr<ZipFileRO> zipFile(ZipFileRO::open(filePath.c_str()));
+ if (zipFile.get() == NULL) {
ALOGI("Couldn't open APK %s\n", filePath.c_str());
return INSTALL_FAILED_INVALID_APK;
}
- const int N = zipFile.getNumEntries();
-
char fileName[PATH_MAX];
bool hasPrimaryAbi = false;
- for (int i = 0; i < N; i++) {
- const ZipEntryRO entry = zipFile.findEntryByIndex(i);
- if (entry == NULL) {
- continue;
- }
+ void* cookie = NULL;
+ if (!zipFile->startIteration(&cookie)) {
+ ALOGI("Couldn't iterate over APK%s\n", filePath.c_str());
+ return INSTALL_FAILED_INVALID_APK;
+ }
+ ZipEntryRO entry = NULL;
+ while ((entry = zipFile->nextEntry(cookie)) != NULL) {
// Make sure this entry has a filename.
- if (zipFile.getEntryFileName(entry, fileName, sizeof(fileName))) {
+ if (zipFile->getEntryFileName(entry, fileName, sizeof(fileName))) {
continue;
}
@@ -346,15 +347,18 @@ iterateOverNativeFiles(JNIEnv *env, jstring javaFilePath, jstring javaCpuAbi, js
&& isFilenameSafe(lastSlash + 1))
|| !strncmp(lastSlash + 1, GDBSERVER, GDBSERVER_LEN)) {
- install_status_t ret = callFunc(env, callArg, &zipFile, entry, lastSlash + 1);
+ install_status_t ret = callFunc(env, callArg, zipFile.get(), entry, lastSlash + 1);
if (ret != INSTALL_SUCCEEDED) {
ALOGV("Failure for entry %s", lastSlash + 1);
+ zipFile->endIteration(cookie);
return ret;
}
}
}
+ zipFile->endIteration(cookie);
+
return INSTALL_SUCCEEDED;
}
diff --git a/core/jni/com_android_internal_net_NetworkStatsFactory.cpp b/core/jni/com_android_internal_net_NetworkStatsFactory.cpp
index ec19f0ab38bc..0b9ad9b39e80 100644
--- a/core/jni/com_android_internal_net_NetworkStatsFactory.cpp
+++ b/core/jni/com_android_internal_net_NetworkStatsFactory.cpp
@@ -80,7 +80,7 @@ static int readNetworkStatsDetail(JNIEnv* env, jclass clazz, jobject stats,
stats_line s;
int64_t rawTag;
if (sscanf(buffer, "%d %31s 0x%llx %u %u %llu %llu %llu %llu", &s.idx,
- &s.iface, &rawTag, &s.uid, &s.set, &s.rxBytes, &s.rxPackets,
+ s.iface, &rawTag, &s.uid, &s.set, &s.rxBytes, &s.rxPackets,
&s.txBytes, &s.txPackets) == 9) {
if (s.idx != lastIdx + 1) {
ALOGE("inconsistent idx=%d after lastIdx=%d", s.idx, lastIdx);
diff --git a/core/jni/com_android_internal_os_ZygoteInit.cpp b/core/jni/com_android_internal_os_ZygoteInit.cpp
index 44452f001090..2233ee3e012b 100644
--- a/core/jni/com_android_internal_os_ZygoteInit.cpp
+++ b/core/jni/com_android_internal_os_ZygoteInit.cpp
@@ -159,29 +159,6 @@ static void com_android_internal_os_ZygoteInit_setCloseOnExec (JNIEnv *env,
}
}
-static jlong com_android_internal_os_ZygoteInit_capgetPermitted (JNIEnv *env,
- jobject clazz, jint pid)
-{
- struct __user_cap_header_struct capheader;
- struct __user_cap_data_struct capdata;
- int err;
-
- memset (&capheader, 0, sizeof(capheader));
- memset (&capdata, 0, sizeof(capdata));
-
- capheader.version = _LINUX_CAPABILITY_VERSION;
- capheader.pid = pid;
-
- err = capget (&capheader, &capdata);
-
- if (err < 0) {
- jniThrowIOException(env, errno);
- return 0;
- }
-
- return (jlong) capdata.permitted;
-}
-
static jint com_android_internal_os_ZygoteInit_selectReadable (
JNIEnv *env, jobject clazz, jobjectArray fds)
{
@@ -274,8 +251,6 @@ static JNINativeMethod gMethods[] = {
(void *) com_android_internal_os_ZygoteInit_reopenStdio},
{ "setCloseOnExec", "(Ljava/io/FileDescriptor;Z)V",
(void *) com_android_internal_os_ZygoteInit_setCloseOnExec},
- { "capgetPermitted", "(I)J",
- (void *) com_android_internal_os_ZygoteInit_capgetPermitted },
{ "selectReadable", "([Ljava/io/FileDescriptor;)I",
(void *) com_android_internal_os_ZygoteInit_selectReadable },
{ "createFileDescriptor", "(I)Ljava/io/FileDescriptor;",
diff --git a/core/jni/com_google_android_gles_jni_EGLImpl.cpp b/core/jni/com_google_android_gles_jni_EGLImpl.cpp
index 50b3302940b2..a0982bdd6e72 100644
--- a/core/jni/com_google_android_gles_jni_EGLImpl.cpp
+++ b/core/jni/com_google_android_gles_jni_EGLImpl.cpp
@@ -82,7 +82,7 @@ static void nativeClassInit(JNIEnv *_env, jclass eglImplClass)
gSurface_NativePixelRefFieldID = _env->GetFieldID(surface_class, "mNativePixelRef", "I");
jclass bitmap_class = _env->FindClass("android/graphics/Bitmap");
- gBitmap_NativeBitmapFieldID = _env->GetFieldID(bitmap_class, "mNativeBitmap", "I");
+ gBitmap_NativeBitmapFieldID = _env->GetFieldID(bitmap_class, "mNativeBitmap", "J");
}
static const jint gNull_attrib_base[] = {EGL_NONE};
@@ -276,7 +276,7 @@ static void jni_eglCreatePixmapSurface(JNIEnv *_env, jobject _this, jobject out_
jint* base = 0;
SkBitmap const * nativeBitmap =
- (SkBitmap const *)_env->GetIntField(native_pixmap,
+ (SkBitmap const *)_env->GetLongField(native_pixmap,
gBitmap_NativeBitmapFieldID);
SkPixelRef* ref = nativeBitmap ? nativeBitmap->pixelRef() : 0;
if (ref == NULL) {
diff --git a/core/jni/com_google_android_gles_jni_GLImpl.cpp b/core/jni/com_google_android_gles_jni_GLImpl.cpp
index b0c26c5157c1..b3b004970b6f 100644
--- a/core/jni/com_google_android_gles_jni_GLImpl.cpp
+++ b/core/jni/com_google_android_gles_jni_GLImpl.cpp
@@ -183,7 +183,7 @@ getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
if (array) {
releasePointer(_env, array, buf, 0);
}
- buf = buf + offset;
+ buf = (char*)buf + offset;
} else {
jniThrowException(_env, "java/lang/IllegalArgumentException",
"Must use a native order direct Buffer");
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index daff390c93b1..05c9b179eeea 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -1056,9 +1056,8 @@
android:permissionGroupFlags="personalInfo"
android:priority="370" />
- <!-- Allows an application to see the number being dialed during an outgoing
- call with the option to redirect the call to a different number or
- abort the call altogether. -->
+ <!-- Allows an application to modify or abort outgoing
+ calls. -->
<permission android:name="android.permission.PROCESS_OUTGOING_CALLS"
android:permissionGroup="android.permission-group.PHONE_CALLS"
android:protectionLevel="dangerous"
@@ -1289,7 +1288,7 @@
<!-- @hide Allows an application to create/manage/remove stacks -->
<permission android:name="android.permission.MANAGE_ACTIVITY_STACKS"
android:permissionGroup="android.permission-group.APP_INFO"
- android:protectionLevel="signature"
+ android:protectionLevel="signature|system"
android:label="@string/permlab_manageActivityStacks"
android:description="@string/permdesc_manageActivityStacks" />
@@ -2357,13 +2356,13 @@
@hide -->
<permission android:name="android.permission.READ_DREAM_STATE"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="signature" />
+ android:protectionLevel="signature|system" />
<!-- Allows applications to write dream settings, and start or stop dreaming.
@hide -->
<permission android:name="android.permission.WRITE_DREAM_STATE"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="signature" />
+ android:protectionLevel="signature|system" />
<!-- Allow an application to read and write the cache partition.
@hide -->
@@ -2523,7 +2522,7 @@
android:hasCode="false"
android:label="@string/android_system_label"
android:allowClearUserData="false"
- android:backupAgent="com.android.server.SystemBackupAgent"
+ android:backupAgent="com.android.server.backup.SystemBackupAgent"
android:killAfterRestore="false"
android:icon="@drawable/ic_launcher_android"
android:supportsRtl="true">
diff --git a/packages/DefaultContainerService/res/values-en-rIN/strings.xml b/core/res/res/anim/swipe_window_enter.xml
index 216d715996c7..e1617e210b87 100644
--- a/packages/DefaultContainerService/res/values-en-rIN/strings.xml
+++ b/core/res/res/anim/swipe_window_enter.xml
@@ -1,8 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
+<?xml version="1.0" encoding="utf-8"?>
+<!--
/*
-**
-** Copyright 2008, The Android Open Source Project
+** Copyright 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.
@@ -16,9 +15,12 @@
** 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">"Package Access Helper"</string>
-</resources>
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+ android:interpolator="@interpolator/decelerate_quad" >
+ <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
+ android:fillEnabled="true" android:fillBefore="true"
+ android:fillAfter="true"
+ android:duration="@android:integer/config_activityDefaultDur" />
+</set>
diff --git a/packages/DefaultContainerService/res/values-hy-rAM/strings.xml b/core/res/res/anim/swipe_window_exit.xml
index 1e2f587e55e3..ed0c5d37ff40 100644
--- a/packages/DefaultContainerService/res/values-hy-rAM/strings.xml
+++ b/core/res/res/anim/swipe_window_exit.xml
@@ -1,8 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
+<?xml version="1.0" encoding="utf-8"?>
+<!--
/*
-**
-** Copyright 2008, The Android Open Source Project
+** Copyright 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.
@@ -16,9 +15,12 @@
** 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>
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+ android:interpolator="@interpolator/decelerate_quad" >
+ <translate android:fromXDelta="0%" android:toXDelta="100%"
+ android:fillEnabled="true" android:fillBefore="true"
+ android:fillAfter="true"
+ android:duration="400" />
+</set>
diff --git a/packages/DefaultContainerService/res/values-fr-rCA/strings.xml b/core/res/res/layout/number_picker_with_selector_wheel_micro.xml
index 69c4e9944dff..a1c0921482ad 100644
--- a/packages/DefaultContainerService/res/values-fr-rCA/strings.xml
+++ b/core/res/res/layout/number_picker_with_selector_wheel_micro.xml
@@ -1,8 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/*
+<?xml version="1.0" encoding="utf-8"?>
+<!--
**
-** Copyright 2008, The Android Open Source Project
+** Copyright 2012, 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.
@@ -16,9 +15,17 @@
** 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">"Aide accès au paquet"</string>
-</resources>
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <view class="android.widget.NumberPicker$CustomEditText"
+ android:textAppearance="?android:attr/textAppearanceLarge"
+ android:id="@+id/numberpicker_input"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:singleLine="true"
+ android:background="@null" />
+
+</merge>
diff --git a/packages/ExternalStorageProvider/res/values-az/strings.xml b/core/res/res/layout/screen_swipe_dismiss.xml
index a6a79ca8bbcc..90e970fe98f5 100644
--- a/packages/ExternalStorageProvider/res/values-az/strings.xml
+++ b/core/res/res/layout/screen_swipe_dismiss.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,16 @@
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="7123375275748530234">"Xarici Yaddaş"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Daxili yaddaş"</string>
-</resources>
+<!--
+This is a layout for a window whose resident activity is finished when swiped away.
+-->
+
+<com.android.internal.widget.SwipeDismissLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@android:id/content"
+ android:fitsSystemWindows="true"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ />
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index f384e244cb2e..1a9acd3a433f 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Probeer weer oor <xliff:g id="COUNT">%d</xliff:g> sekondes"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Probeer later weer"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Sleep van bo af na onder om volskerm te verlaat"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Sleep van bo af na onder om volskerm te verlaat."</string>
</resources>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index d913063e8acb..e64b6f56c97f 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"በ<xliff:g id="COUNT">%d</xliff:g> ሰከንዶች ውስጥ እንደገና ይሞክሩ"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"ቆይተው እንደገና ይሞክሩ"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"ከሙሉ ገጽ ማያ ለመውጣት ከላይ ወደታች ጣትዎን ያንቀሳቅሱ"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"ከሙሉ ገጽ ማያ ለመውጣት ጣትዎን ከላይ ወደታች ያንሸራትቱ።"</string>
</resources>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 6ef77d839fe8..2d91e28c5b3a 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"أعد المحاولة خلال <xliff:g id="COUNT">%d</xliff:g> ثانية"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"أعد المحاولة لاحقًا"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"التمرير من أعلى لأسفل للخروج من وضع ملء الشاشة"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"مرر بسرعة من أعلى لأسفل للخروج من وضع ملء الشاشة."</string>
</resources>
diff --git a/core/res/res/values-az-rAZ/strings.xml b/core/res/res/values-az-rAZ/strings.xml
deleted file mode 100644
index 777288735598..000000000000
--- a/core/res/res/values-az-rAZ/strings.xml
+++ /dev/null
@@ -1,1588 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="byteShort" msgid="8340973892742019101">"B"</string>
- <string name="kilobyteShort" msgid="5973789783504771878">"KB"</string>
- <string name="megabyteShort" msgid="6355851576770428922">"MB"</string>
- <string name="gigabyteShort" msgid="3259882455212193214">"GB"</string>
- <string name="terabyteShort" msgid="231613018159186962">"TB"</string>
- <string name="petabyteShort" msgid="5637816680144990219">"PB"</string>
- <string name="fileSizeSuffix" msgid="9164292791500531949">"<xliff:g id="NUMBER">%1$s</xliff:g><xliff:g id="UNIT">%2$s</xliff:g>"</string>
- <string name="untitled" msgid="4638956954852782576">"Başlıqsız"</string>
- <string name="ellipsis" msgid="7899829516048813237">"..."</string>
- <string name="ellipsis_two_dots" msgid="1228078994866030736">"‥"</string>
- <string name="emptyPhoneNumber" msgid="7694063042079676517">"(Telefon nömrəsi yoxdur)"</string>
- <string name="unknownName" msgid="2277556546742746522">"(Naməlum)"</string>
- <string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"Səsli poçt"</string>
- <string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN1"</string>
- <string name="mmiError" msgid="5154499457739052907">"Bağlantı problemi və ya yalnış MM kodu."</string>
- <string name="mmiFdnError" msgid="5224398216385316471">"Əməliyyat yalnız sabit nömrələrə yığımla məhdudlaşıb."</string>
- <string name="serviceEnabled" msgid="8147278346414714315">"Servis işə salındı."</string>
- <string name="serviceEnabledFor" msgid="6856228140453471041">"Xidmət aktiv edilmişdir:"</string>
- <string name="serviceDisabled" msgid="1937553226592516411">"Xidmət deaktiv edilib."</string>
- <string name="serviceRegistered" msgid="6275019082598102493">"Qeydiyyat uğurlu oldu."</string>
- <string name="serviceErased" msgid="1288584695297200972">"Silinmə uğurlu olmuşdur."</string>
- <string name="passwordIncorrect" msgid="7612208839450128715">"Yanlış parol"</string>
- <string name="mmiComplete" msgid="8232527495411698359">"MMI tamamdır."</string>
- <string name="badPin" msgid="9015277645546710014">"Daxil etdiyiniz köhnə PİN düzgün deyil."</string>
- <string name="badPuk" msgid="5487257647081132201">"Daxil etdiyiniz PUK düzgün deyil."</string>
- <string name="mismatchPin" msgid="609379054496863419">"Daxil etdiyiniz PİN kodlar uyğun gəlmir."</string>
- <string name="invalidPin" msgid="3850018445187475377">"4-dən 8-ə qədər rəqəmi olan PIN yazın."</string>
- <string name="invalidPuk" msgid="8761456210898036513">"8 və daha çox rəqəmi olan PUK yazın."</string>
- <string name="needPuk" msgid="919668385956251611">"Sizin SİM kart PUK ilə kilidlənib. Onu açmaq üçün PUK kodu yazın."</string>
- <string name="needPuk2" msgid="4526033371987193070">"SIM kartın kilidini açmaq üçün PUK2 yazın"</string>
- <string name="imei" msgid="2625429890869005782">"IMEI"</string>
- <string name="meid" msgid="4841221237681254195">"MEID"</string>
- <string name="ClipMmi" msgid="6952821216480289285">"Daxil olan zəng edənin ID\'si"</string>
- <string name="ClirMmi" msgid="7784673673446833091">"Gedən Zəng ID"</string>
- <string name="CfMmi" msgid="5123218989141573515">"Zəng yönləndirmə"</string>
- <string name="CwMmi" msgid="9129678056795016867">"Zəng gözləyir"</string>
- <string name="BaMmi" msgid="455193067926770581">"Zəng qadağası"</string>
- <string name="PwdMmi" msgid="7043715687905254199">"Parolu dəyiş"</string>
- <string name="PinMmi" msgid="3113117780361190304">"PİN dəyişmək"</string>
- <string name="CnipMmi" msgid="3110534680557857162">"Hazırdakı nömrəyə zəng edilir"</string>
- <string name="CnirMmi" msgid="3062102121430548731">"Zənglərin sayı məhdudlaşdırılıb"</string>
- <string name="ThreeWCMmi" msgid="9051047170321190368">"Üç yollu zəng"</string>
- <string name="RuacMmi" msgid="7827887459138308886">"Xoşagəlməz zənglərdən imtina"</string>
- <string name="CndMmi" msgid="3116446237081575808">"Çatdırılma zəngi"</string>
- <string name="DndMmi" msgid="1265478932418334331">"Narahat etməyin"</string>
- <string name="CLIRDefaultOnNextCallOn" msgid="429415409145781923">"Adətən zəng edənin ID\'si məhdudlaşdırılır. Növbəti zəng: Məhdudlaşdırılıb"</string>
- <string name="CLIRDefaultOnNextCallOff" msgid="3092918006077864624">"Adətən zəng edənin ID\'si məhdudlaşdırılır. Növbəti zəng: Məhdudlaşdırılmayıb"</string>
- <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"Adətən zəng edənin ID\'si məhdudlaşdırılmır. Növbəti zəng: Məhdudlaşdırılıb"</string>
- <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"Adətən zəng edənin ID\'si məhdudlaşdırılmır. Növbəti zəng: Məhdudlaşdırılmayıb"</string>
- <string name="serviceNotProvisioned" msgid="8614830180508686666">"Xidmət təmin edilməyib."</string>
- <string name="CLIRPermanent" msgid="3377371145926835671">"Siz zəng edənin ID nizamlarını dəyişə bilməzsiz."</string>
- <string name="RestrictedChangedTitle" msgid="5592189398956187498">"Məhdudlaşdırılmış keçid dəyişdi"</string>
- <string name="RestrictedOnData" msgid="8653794784690065540">"Data xidmət bağlıdır."</string>
- <string name="RestrictedOnEmergency" msgid="6581163779072833665">"Təcili xidmət bağlıdır."</string>
- <string name="RestrictedOnNormal" msgid="4953867011389750673">"Səs xidməti bağlıdır."</string>
- <string name="RestrictedOnAllVoice" msgid="3396963652108151260">"Bütün Səs xidmətləri bağlıdır"</string>
- <string name="RestrictedOnSms" msgid="8314352327461638897">"SMS xidməti bloklanıb."</string>
- <string name="RestrictedOnVoiceData" msgid="996636487106171320">"Səs/data xidmətləri bloklanıb."</string>
- <string name="RestrictedOnVoiceSms" msgid="1888588152792023873">"Səs/SMS xidmətləri bloklanıb."</string>
- <string name="RestrictedOnAll" msgid="5643028264466092821">"Bütün səs/data/SMS xidmətləri bağlıdır."</string>
- <string name="serviceClassVoice" msgid="1258393812335258019">"Səs"</string>
- <string name="serviceClassData" msgid="872456782077937893">"Məlumat"</string>
- <string name="serviceClassFAX" msgid="5566624998840486475">"FAKS"</string>
- <string name="serviceClassSMS" msgid="2015460373701527489">"SMS"</string>
- <string name="serviceClassDataAsync" msgid="4523454783498551468">"Async"</string>
- <string name="serviceClassDataSync" msgid="7530000519646054776">"Sinx"</string>
- <string name="serviceClassPacket" msgid="6991006557993423453">"Paket"</string>
- <string name="serviceClassPAD" msgid="3235259085648271037">"PAD"</string>
- <string name="roamingText0" msgid="7170335472198694945">"Rominq göstəricisi işləkdir"</string>
- <string name="roamingText1" msgid="5314861519752538922">"Rominq göstəricisi işlək deyil"</string>
- <string name="roamingText2" msgid="8969929049081268115">"Rominq göstəricisi yanır"</string>
- <string name="roamingText3" msgid="5148255027043943317">"Qonşuluqdan Kənar"</string>
- <string name="roamingText4" msgid="8808456682550796530">"Binadan kənar"</string>
- <string name="roamingText5" msgid="7604063252850354350">"Rominq - Arzuolunan sistem"</string>
- <string name="roamingText6" msgid="2059440825782871513">"Rominq - Mümkün sistem"</string>
- <string name="roamingText7" msgid="7112078724097233605">"Rominq - Alyans partnyoru"</string>
- <string name="roamingText8" msgid="5989569778604089291">"Rominq - Premium partnyor"</string>
- <string name="roamingText9" msgid="7969296811355152491">"Rouminq - Tam Xidmət Funksionallığı"</string>
- <string name="roamingText10" msgid="3992906999815316417">"Rouminq - Qismən Xidmət Funksionallığı"</string>
- <string name="roamingText11" msgid="4154476854426920970">"Rouminq Banneri Açıqdır"</string>
- <string name="roamingText12" msgid="1189071119992726320">"Roaming Banner Off"</string>
- <string name="roamingTextSearching" msgid="8360141885972279963">"Xidmət axtarılır"</string>
- <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Yönləndirilmədi"</string>
- <string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string>
- <string name="cfTemplateForwardedTime" msgid="9206251736527085256">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g> <xliff:g id="TIME_DELAY">{2}</xliff:g> saniyə sonra"</string>
- <string name="cfTemplateRegistered" msgid="5073237827620166285">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Yönləndirilmədi"</string>
- <string name="cfTemplateRegisteredTime" msgid="6781621964320635172">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Yönləndirilmədi"</string>
- <string name="fcComplete" msgid="3118848230966886575">"Özəllik kodu tamamlandı."</string>
- <string name="fcError" msgid="3327560126588500777">"Əlaqə problemi və ya yanlış funksiya kodu."</string>
- <string name="httpErrorOk" msgid="1191919378083472204">"OK"</string>
- <string name="httpError" msgid="7956392511146698522">"Şəbəkə xətası var idi."</string>
- <string name="httpErrorLookup" msgid="4711687456111963163">"URL tapıla bilmədi."</string>
- <string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"Sayt autentifikasiya sxemi dəstəklənmir."</string>
- <string name="httpErrorAuth" msgid="1435065629438044534">"Təsdiq edilə bilmədi."</string>
- <string name="httpErrorProxyAuth" msgid="1788207010559081331">"Proksi server vasitəsilə təsdiqlənmə uğursuz oldu."</string>
- <string name="httpErrorConnect" msgid="8714273236364640549">"Serverə qoşula bilmədi."</string>
- <string name="httpErrorIO" msgid="2340558197489302188">"Serverlə əlaqə alınmadı. Sonra cəhd edin."</string>
- <string name="httpErrorTimeout" msgid="4743403703762883954">"Server ilə olan əlaqə zaman aşımına məruz qaldı."</string>
- <string name="httpErrorRedirectLoop" msgid="8679596090392779516">"Bu səhifədə həddindən çox server yönləndirilmələri var."</string>
- <string name="httpErrorUnsupportedScheme" msgid="5015730812906192208">"Protokol dəstəklənmir."</string>
- <string name="httpErrorFailedSslHandshake" msgid="96549606000658641">"Güvənli bağlantı yaradıla bilmədi."</string>
- <string name="httpErrorBadUrl" msgid="3636929722728881972">"URL yanlış olduğu üçün səhifəni açmaq mümkün olmadı."</string>
- <string name="httpErrorFile" msgid="2170788515052558676">"Fayla giriş baş tutmadı."</string>
- <string name="httpErrorFileNotFound" msgid="6203856612042655084">"Tələb olunan fayl tapılmadı."</string>
- <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Həddindən çox sorğu işlənilir. Daha sonra yoxlayın."</string>
- <string name="notification_title" msgid="8967710025036163822">"<xliff:g id="ACCOUNT">%1$s</xliff:g> üçün giriş xətası"</string>
- <string name="contentServiceSync" msgid="8353523060269335667">"Sinxronlaşdırma"</string>
- <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Sinxronlaşdırma"</string>
- <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Həddindən çox <xliff:g id="CONTENT_TYPE">%s</xliff:g> silinmələri var."</string>
- <string name="low_memory" product="tablet" msgid="6494019234102154896">"Planşetin yaddaşı doludur. Boş yer üçün bəzi faylları silin."</string>
- <string name="low_memory" product="default" msgid="3475999286680000541">"Telefonun yaddaşı doludur. Boş yer üçün bəzi faylları silin."</string>
- <string name="me" msgid="6545696007631404292">"Mən"</string>
- <string name="power_dialog" product="tablet" msgid="8545351420865202853">"Planşet seçimləri"</string>
- <string name="power_dialog" product="default" msgid="1319919075463988638">"Telefon seçimləri"</string>
- <string name="silent_mode" msgid="7167703389802618663">"Səssiz rejim"</string>
- <string name="turn_on_radio" msgid="3912793092339962371">"Simsizi işə salın"</string>
- <string name="turn_off_radio" msgid="8198784949987062346">"Simsiz rabitəni söndürün"</string>
- <string name="screen_lock" msgid="799094655496098153">"Ekran kilidi"</string>
- <string name="power_off" msgid="4266614107412865048">"Söndür"</string>
- <string name="silent_mode_silent" msgid="319298163018473078">"Zəng deaktivdir"</string>
- <string name="silent_mode_vibrate" msgid="7072043388581551395">"Zəng vibrasiyadadır"</string>
- <string name="silent_mode_ring" msgid="8592241816194074353">"Zəngvuran açıqdır"</string>
- <string name="shutdown_progress" msgid="2281079257329981203">"Söndürülür..."</string>
- <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Planşetiniz sönəcək."</string>
- <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Telefonunuz sönəcək."</string>
- <string name="shutdown_confirm_question" msgid="2906544768881136183">"Söndürmək istəyirsiz?"</string>
- <string name="reboot_safemode_title" msgid="7054509914500140361">"Təhlükəsiz rejimdə yenidən başlayın"</string>
- <string name="reboot_safemode_confirm" msgid="55293944502784668">"Təhlükəsiz rejimdə yenidən başlamaq istəyirsiniz mi? Bu, quraşdırdığınız bütün üçüncü tərəf tətbiqlərini deaktiv edəcək."</string>
- <string name="recent_tasks_title" msgid="3691764623638127888">"Son"</string>
- <string name="no_recent_tasks" msgid="8794906658732193473">"Heç bir son tətbiq yoxdur."</string>
- <string name="global_actions" product="tablet" msgid="408477140088053665">"Planşet seçimləri"</string>
- <string name="global_actions" product="default" msgid="2406416831541615258">"Telefon seçimləri"</string>
- <string name="global_action_lock" msgid="2844945191792119712">"Ekran kilidi"</string>
- <string name="global_action_power_off" msgid="4471879440839879722">"Söndür"</string>
- <string name="global_action_bug_report" msgid="7934010578922304799">"Baq hesabatı"</string>
- <string name="bugreport_title" msgid="2667494803742548533">"Baqı xəbər verin"</string>
- <string name="bugreport_message" msgid="398447048750350456">"Bu, sizin hazırkı cihaz durumu haqqında məlumat toplayacaq ki, elektron məktub şəklində göndərsin. Baq raportuna başlamaq üçün bir az vaxt lazım ola bilər, bir az səbr edin."</string>
- <string name="global_action_toggle_silent_mode" msgid="8219525344246810925">"Səssiz rejim"</string>
- <string name="global_action_silent_mode_on_status" msgid="3289841937003758806">"Səs qapalıdır"</string>
- <string name="global_action_silent_mode_off_status" msgid="1506046579177066419">"Səs Aktivdir"</string>
- <string name="global_actions_toggle_airplane_mode" msgid="5884330306926307456">"Təyyarə rejimi"</string>
- <string name="global_actions_airplane_mode_on_status" msgid="2719557982608919750">"Uçuş rejimi açıqdır"</string>
- <string name="global_actions_airplane_mode_off_status" msgid="5075070442854490296">"Təyyarə rejimi qapalıdır"</string>
- <string name="status_bar_notification_info_overflow" msgid="5301981741705354993">"999+"</string>
- <string name="safeMode" msgid="2788228061547930246">"Təhlükəsiz rejim"</string>
- <string name="android_system_label" msgid="6577375335728551336">"Android sistemi"</string>
- <string name="permgrouplab_costMoney" msgid="5429808217861460401">"Ödənişli xidmətlər"</string>
- <string name="permgroupdesc_costMoney" msgid="3293301903409869495">"Xərc tutulacaq əməliyyatlar edir"</string>
- <string name="permgrouplab_messages" msgid="7521249148445456662">"Sizin mesajlarınız"</string>
- <string name="permgroupdesc_messages" msgid="7821999071003699236">"SMS, elektron poçt və digər mesajları oxuyur və yazır."</string>
- <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Şəxsi məlumatınız"</string>
- <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Kontakt kartınızda saxlanılan məlumatlarınıza birbaşa giriş."</string>
- <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Sosial məlumatınız"</string>
- <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Kontaktlarınız və sosial əlaqələriniz haqqında məlumata birbaşa giriş."</string>
- <string name="permgrouplab_location" msgid="635149742436692049">"Yerləşməniz"</string>
- <string name="permgroupdesc_location" msgid="5704679763124170100">"Fiziki adresinizi monitorinq edir."</string>
- <string name="permgrouplab_network" msgid="5808983377727109831">"Şəbəkə kommunikasiyası"</string>
- <string name="permgroupdesc_network" msgid="4478299413241861987">"Müxtəlif şəbəkə xüsusiyyətlərinə daxil ol."</string>
- <string name="permgrouplab_bluetoothNetwork" msgid="1585403544162128109">"Bluetooth"</string>
- <string name="permgroupdesc_bluetoothNetwork" msgid="5625288577164282391">"Bluetooth üzərindən cihazlara və şəbəkələrə daxil ol."</string>
- <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Audio Ayarlar"</string>
- <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Audio ayarları dəyişin."</string>
- <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Batareyaya təsir edir"</string>
- <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Batareyanızın tez qurtarmasına səbəb olan funksiyalar istifadə edir"</string>
- <string name="permgrouplab_calendar" msgid="5863508437783683902">"Təqvim"</string>
- <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Təqvimə və tədbirlərə birbaşa giriş."</string>
- <string name="permgrouplab_dictionary" msgid="4148597128843641379">"İstifadəçi Lüğətini Oxu"</string>
- <string name="permgroupdesc_dictionary" msgid="7921166355964764490">"İstifadəçi lüğətindəki sözləri oxuyur."</string>
- <string name="permgrouplab_writeDictionary" msgid="8090237702432576788">"İstifadəçi Lüğətini Yaz"</string>
- <string name="permgroupdesc_writeDictionary" msgid="2711561994497361646">"İstifadəçi lüğətinə sözlər əlavə edin."</string>
- <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Əlfəcinlər və Tarixçə"</string>
- <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Əlfəcinlərə və brauzer tarixinə birbaşa icazə."</string>
- <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Zəng"</string>
- <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Alarm qur."</string>
- <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Səsli poçt"</string>
- <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Səs poçtuna birbaşa çıxış."</string>
- <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string>
- <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Audio yazmaq üçün mikrofona birbaşa giriş."</string>
- <string name="permgrouplab_camera" msgid="4820372495894586615">"Kamera"</string>
- <string name="permgroupdesc_camera" msgid="2933667372289567714">"Şəkil və ya video çəkmək üçün kameraya birbaşa çıxış."</string>
- <string name="permgrouplab_screenlock" msgid="8275500173330718168">"Ekran kilidi"</string>
- <string name="permgroupdesc_screenlock" msgid="7067497128925499401">"Cihazınızdakı kilid ekranının hərəkətinə təsir etmə bacarığı"</string>
- <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Tətbiq məlumatlarınız"</string>
- <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Cihazınızdakı digər tətbiqlərin davranışına təsir etmək bacarığı."</string>
- <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Divar kağızı"</string>
- <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Cihazın divar kağızı ayarlarını dəyişin."</string>
- <string name="permgrouplab_systemClock" msgid="406535759236612992">"Saat"</string>
- <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Cihazın vaxt və zaman zolağını dəyişir."</string>
- <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Status paneli"</string>
- <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Cihazın status paneli ayarlarınızı dəyişir."</string>
- <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Sinx Ayarları"</string>
- <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Sinxronizasiya nizamlarına çıxış."</string>
- <string name="permgrouplab_accounts" msgid="3359646291125325519">"Hesablarınız"</string>
- <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Əlçatımlı hesablara daxil olun."</string>
- <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Hardware kontrolları"</string>
- <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Dəstəkdəki avadanlığa birbaşa giriş."</string>
- <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Telefon zəngləri"</string>
- <string name="permgroupdesc_phoneCalls" msgid="7489701620446183770">"Telefon zənglərinə nəzarət edin, qeydə alın və idarə edin."</string>
- <string name="permgrouplab_systemTools" msgid="4652191644082714048">"Sistem alətləri"</string>
- <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Aşağı səviyyəli çıxış və sistem idarəetməsi."</string>
- <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"İnkişaf alətləri"</string>
- <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Özəlliklər yalnız tətbiq developerləri üçün lazımdır."</string>
- <string name="permgrouplab_display" msgid="4279909676036402636">"Digər tətbiq İstifadəçi İnterfeysi"</string>
- <string name="permgroupdesc_display" msgid="6051002031933013714">"Digər tətbiqlərin İstifadəçi İnterfeysinə təsir edir."</string>
- <string name="permgrouplab_storage" msgid="1971118770546336966">"Yaddaş"</string>
- <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USB yaddaşa daxil ol."</string>
- <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD karta daxil ol."</string>
- <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Əlçatımlılıq funksiyaları"</string>
- <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Yardımçı texnologiya tələb edə biləcəyi funksiyalar."</string>
- <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>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Toxunulan 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>
- <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Kredit kartı nömrələri və parollar kimi şəxsi məlumatlar daxildir."</string>
- <string name="permlab_statusBar" msgid="7417192629601890791">"status panelini deaktivləşdir və ya dəyişdir"</string>
- <string name="permdesc_statusBar" msgid="8434669549504290975">"Tətbiqə status panelini deaktiv etməyə və ya sistem ikonalarını əlavə etmək və ya silmək imkanı verir."</string>
- <string name="permlab_statusBarService" msgid="7247281911387931485">"status paneli"</string>
- <string name="permdesc_statusBarService" msgid="716113660795976060">"Tətbiqə status paneli olmağa imkan verir."</string>
- <string name="permlab_expandStatusBar" msgid="1148198785937489264">"status panelini genişlətmək və ya yığmaq"</string>
- <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Tətbiqə status panelini genişləndirməyə və ya yox etməyə imkan verir."</string>
- <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"gedən zənglərin marşrutunu dəyişmək"</string>
- <string name="permdesc_processOutgoingCalls" msgid="5331318931937402040">"Tətbiqə zəng etməyə və zəng edilən nömrəni dəyişməyə imkan verir. Zərərli tətbiqlər bundan istifadə edərək gedən zəngləri izləyə, yönləndirə və ya qarşısını ala bilər."</string>
- <string name="permlab_receiveSms" msgid="8673471768947895082">"SMS qəbul etmək"</string>
- <string name="permdesc_receiveSms" msgid="6424387754228766939">"Tətbiqə MMS mesajlarını almaq və emal etmək icazəsi verir. Bu o deməkdir ki, tətbiq sizin mesajlarınızı sizə göstərmədən monitorinq edə və ya silə bilər."</string>
- <string name="permlab_receiveMms" msgid="1821317344668257098">"mətn mesajlarını qəbul edir (MMS)"</string>
- <string name="permdesc_receiveMms" msgid="533019437263212260">"Tətbiqə MMS mesajlarını qəbul və emal üçün imkan verir. Bu o deməkdir ki, bu tətbiq sizə göstərmədən cihazınıza göndərilən mesajları silə bilər."</string>
- <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"təcili yayımları qəbul edir"</string>
- <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Tətbiqə təcili yayım mesajlarını qəbul və emal etmək icazəsi verir. Bu icazə ancaq sistem tətbiqləri üçün mümkündür."</string>
- <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"mobil yayım mesajlarını oxuyur"</string>
- <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Tətbiqə sizin telefonunuz tərəfindən alınmış yayım mesajlarını oxuma icazəsi verir. Telefon yayımı bəzi məkanlarda olan fövqəladə hadisələrlə bağlı sizi xəbərdar etmək üçün qəbul edilir. Zərərli tətbiqlər fövqəladə mobil yayım qəbul edildiyi zaman telefonunun performansına və əməliyyatına müdaxilə edə bilər."</string>
- <string name="permlab_sendSms" msgid="5600830612147671529">"SMS mesajlarını göndərir"</string>
- <string name="permdesc_sendSms" msgid="7094729298204937667">"Tətbiqə SMS mesajı göndərmə icazəsi verir. Bu gözlənilməyən ödənişlərə səbəb ola bilər. Zərərli tətbiqlər sizin təsdiqiniz olmadan mesaj göndərməklə sizə ödənişə səbəb ola bilərlər."</string>
- <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"mesajla cavab verilməli tədbirlər göndərmək"</string>
- <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Tətbiqə zənglər üçün \"mesajla cavabla\" hadisələrini idarə etmək üçün digər mesajlaşma tətbiqlərinə sorğuların göndərilməsi icazəsi verir."</string>
- <string name="permlab_readSms" msgid="8745086572213270480">"tekst mesajlarınızı oxuyur (SMS və ya MMS)"</string>
- <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Tətbiqə planşetinizdə və ya SIM kartınızda saxlanan SMS mesajları oxumağa imkan verir. Bu bütün SMS mesajların, onların məzmunundan və konfidensiallığından asılı olmadan oxunması imkanı deməkdir."</string>
- <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Tətbiqə telefonunuzda və ya SIM kartınızda saxlanan SMS mesajları oxumağa imkan verir. Bu bütün SMS mesajların, onların məzmunundan və konfidensiallığından asılı olmadan oxunması imkanı deməkdir."</string>
- <string name="permlab_writeSms" msgid="3216950472636214774">"mətn mesajlarınızı redaktə edir (SMS və ya MMS)"</string>
- <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Tətbiqə telefonunuzda və ya SİM kartınızda yerləşən SMS mesajlara yazma icazəsi verir. Zərərli tətbiqlər sizin mesajlarınızı silə bilər."</string>
- <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Tətbiqə telefonunuzda və ya SİM kartınızda yerləşən SMS mesajlara yazma icazəsi verir. Zərərli tətbiqlər sizin mesajlarınızı silə bilər."</string>
- <string name="permlab_receiveWapPush" msgid="5991398711936590410">"mətn mesajları qəbul etmək (WAP)"</string>
- <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Tətbiqə WAP mesajlar göndərmək və ya qəbul etmək imkanı verir. Buna mesajları izləmək və Sizə xəbər vermədən silmək imkanları da daxildir."</string>
- <string name="permlab_getTasks" msgid="6466095396623933906">"işlənən tətbiqlər əldə etmək"</string>
- <string name="permdesc_getTasks" msgid="7454215995847658102">"Tətbiqə hazırda və az öncə işləyən tapşırıqlar haqqında ətraflı məlumat əldə etməyə imkan verir. Bu da cihazda hansı tətbiqlərin istifadə olunması haqqında məlumatların əldə edilməsinə imkan verir."</string>
- <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"istifadəçilər arasında əlaqə qurur"</string>
- <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Tətbiqə bu cihazdakı digər istifadəçilərlə müxtəlif işləri görməyə icazə verir. Zərərli tətbiqlər bundan istifadəçilər arasındakı qorunmanı pozmaq üçün istifadə edə bilər."</string>
- <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"bütün istifadəçilər ilə əlaqə saxlamaq üçün tam hüquq"</string>
- <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"İstifadəçilər arasında bütün mümkün əlaqələrə imkan verir."</string>
- <string name="permlab_manageUsers" msgid="1676150911672282428">"istifadəçiləri idarə edir"</string>
- <string name="permdesc_manageUsers" msgid="8409306667645355638">"Tətbiqlərə cihazda olan istifadəçiləri, habelə sorğu göndərmə, yaratma və silmə izni verir."</string>
- <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"işlənən tətbiqlərin detallarını əldə etmək"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Tətbiqə hazırda və az öncə işləyən tapşırıqlar haqqında ətraflı məlumat əldə etməyə imkan verir. Zərərli tətbiqlər bundan istifadə edərək şəxsi məlumatları oğurlaya bilər."</string>
- <string name="permlab_reorderTasks" msgid="2018575526934422779">"işlənən tətbiqlərin sırasını dəyişmək"</string>
- <string name="permdesc_reorderTasks" msgid="7734217754877439351">"Tətbiqə tapşırıqları ön plandan arxa plana keçirməyə imkan verir. Tətbiq bunu Sizin daxiletməniz olmadan da edə bilər."</string>
- <string name="permlab_removeTasks" msgid="6821513401870377403">"işlək tətbiqləri dayandırır"</string>
- <string name="permdesc_removeTasks" msgid="1394714352062635493">"Tətbiqə tapşırıqları silməyə və onların tətbiqlərini məhv etməyə imkan verir. Zərərli tətbiqlər bundan istifadə edərək digər tətbiqlərin işlərini dayandıra bilər."</string>
- <string name="permlab_manageActivityStacks" msgid="7391191384027303065">"fəaliyyət toplularını idarə edin"</string>
- <string name="permdesc_manageActivityStacks" msgid="1615881933034084440">"Tətbiqə digər tətbiqlərin fəaliyyəti daxilində fəaliyyət toplularını əlavə etmək, silmək və dəyişmək imkanı verir."</string>
- <string name="permlab_startAnyActivity" msgid="2918768238045206456">"hər hansı bir fəaliyyət başlat"</string>
- <string name="permdesc_startAnyActivity" msgid="997823695343584001">"İcazə qorunması və ya eksport edilmiş statusdan asılı olmayaraq, tətbiqə hər hansı fəaliyyəti başlatmağa imkan verir."</string>
- <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"ekran uyğunluğunu yerləşdirir"</string>
- <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Tətbiqə digər tətbiqlərin ekran uyğunluğunu yoxlamaq imkanı verir. Zərərli tətbiqlər digər tətbiqlərin fəaliyyətini poza bilər."</string>
- <string name="permlab_setDebugApp" msgid="3022107198686584052">"tətbiq sazlanmasını aktiv edir"</string>
- <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Tətbiqə digər bir tətbiq üçün sazlamanı açmaq üçün imkan verir. Zərərli tətbiqlər bunu digər tətbiqləri yox etmək üçün istifadə edə bilər."</string>
- <string name="permlab_changeConfiguration" msgid="4162092185124234480">"sistem ekran nizamlarını dəyiş"</string>
- <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Tətbiqə yerli parametrlər və ya şriftin ölçüsü kimi cari konfiqurasiyanı dəyişməyə imkan verir."</string>
- <string name="permlab_enableCarMode" msgid="5684504058192921098">"avtomobil rejimini aktivləşdirir"</string>
- <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Tətbiqə avtomobil rejimini aktivləşdirməyə imkan verir."</string>
- <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"digər tətbiqləri qapatmaq"</string>
- <string name="permdesc_killBackgroundProcesses" msgid="4593353235959733119">"Tətbiqə başqa tətbiqlərin arxafon proseslərini dayandırmaq icazəsi verir. Bu digər tətbiqlərin dayanmasına səbəb ola bilər."</string>
- <string name="permlab_forceStopPackages" msgid="2329627428832067700">"Digər tətbiqləri dayanmağa məcbur et"</string>
- <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Tətbiqə digər tətbiqləri məcburi şəkildə dayandırmağa imkan verir."</string>
- <string name="permlab_forceBack" msgid="652935204072584616">"tətbiqi qapanmağa məcbur etmək"</string>
- <string name="permdesc_forceBack" msgid="3892295830419513623">"Tətbiqə ön planda olan istənilən tətbiqi bağlayaraq geriyə dönməyə imkan verir. Normal tətbiqlər tərəfindən heç vaxt istifadə olunmamalıdır."</string>
- <string name="permlab_dump" msgid="1681799862438954752">"sistemin daxili durumunu bərpa et"</string>
- <string name="permdesc_dump" msgid="1778299088692290329">"Tətbiqə sistemin daxili statusunu bərpa etməyə imkan verir. Zərərli tətbiqlər lazım olmadığı halda müxtəlif şəxsi və güvənli məlumatları bərpa edə bilər."</string>
- <string name="permlab_retrieve_window_content" msgid="8022588608994589938">"ekran kontentini bərpa edir"</string>
- <string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Tətbiqə aktiv pəncərənin məzmununu əldə etməyə imkan verir. Zərərli tətbiqlər bundan istifadə edərək pəncərə məzmununu ələ keçirib parollları oxuya bilər."</string>
- <string name="permlab_temporary_enable_accessibility" msgid="2312612135127310254">"giriş imkanını müvəqqəti açmaq"</string>
- <string name="permdesc_temporary_enable_accessibility" msgid="8079456293182975464">"Tətbiqə cihaza girişi müvəqqəti olaraq aktivləşdirməyə imkan verir. Zərərli tətbiqlər istifadəçi razılığı olmadan girişi aktivləşdirə bilər."</string>
- <string name="permlab_retrieve_window_info" msgid="8532295199112519378">"pəncərə infosunu bərpa edir"</string>
- <string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Tətbiqə pəncərə idarəçisindən gələn windows haqqında olan məlumatı bərpa etməyə imkan verir. Zərərli tətbiqlər daxili sistem istifadəsi üçün nəzərdə tutulan məlumatı bərpa edə bilər."</string>
- <string name="permlab_filter_events" msgid="8675535648807427389">"tədbirləri filtr edir"</string>
- <string name="permdesc_filter_events" msgid="8006236315888347680">"Tətbiqə daxiletmə filtrini qeydiyyat etdirməyə imkan verir, bu filtr bütün istifadəçi tədbirlərini göndərilməmişdən əvvəl filtrdən keçirir. Zərərli tətbiq istifadəçi müdaxiləsi olmadan İstifadəçi İnterfeysi sisteminə nəzarət edə bilər."</string>
- <string name="permlab_magnify_display" msgid="5973626738170618775">"ekranı böyüdür"</string>
- <string name="permdesc_magnify_display" msgid="7121235684515003792">"Tətbiqə ekran kontentini böyütmək icazəsi verir. Zərərli tətbiqlər bundan istifadə edərək ekranda kontenti böyüdərək cihazın qeyri-stabilliyinə səbəb ola bilər."</string>
- <string name="permlab_shutdown" msgid="7185747824038909016">"qismən söndürür"</string>
- <string name="permdesc_shutdown" msgid="7046500838746291775">"Aktivlik idarəçiliyini qapanmış hala gətirir. Tam qapanmanı həyata keçirmir."</string>
- <string name="permlab_stopAppSwitches" msgid="4138608610717425573">"tətbiqdən tətbiqə keçidin qarşısını almaq"</string>
- <string name="permdesc_stopAppSwitches" msgid="8262195802582255021">"İstifadəçinin başqa tətbiqə keçməsinin qarşısını alır."</string>
- <string name="permlab_getTopActivityInfo" msgid="2537922311411546016">"cari tətbiq informasiyası əldə etmək"</string>
- <string name="permdesc_getTopActivityInfo" msgid="2512448855496067131">"Sahibinə ekranda öndə olan cari tətbiq haqda gizli məlumatı almaq icazəsi verir."</string>
- <string name="permlab_runSetActivityWatcher" msgid="892239094867182656">"işə salınan bütün tətbiqləri izləyir və idarə edir"</string>
- <string name="permdesc_runSetActivityWatcher" msgid="6003603162578577406">"Tətbiqə sistemin fəaliyyətləri necə başlatdığını nəzarət və kontrol etməyə imkan verir. Zərərli tətbiqlər sistemi tamamilə kompromis edə bilər. Bu icazə yalnız inkişaf üçündür, heç vaxt normal istifadə üçün deyil."</string>
- <string name="permlab_broadcastPackageRemoved" msgid="2576333434893532475">"qaldırılmış yayım paketini göndər"</string>
- <string name="permdesc_broadcastPackageRemoved" msgid="6621901216207931089">"Tətbiqə tətbiq paketinin silinməsi haqqında bildiriş translasiya etmə icazəsi verir. Zərərli tətbiqlər bundan digər işlək tətbiqləri dayandırmaq üçün istifadə edə bilər."</string>
- <string name="permlab_broadcastSmsReceived" msgid="5689095009030336593">"SMS tərəfindən qəbul edilən yayım göndər"</string>
- <string name="permdesc_broadcastSmsReceived" msgid="4152037720034365492">"Tətbiqə mesaj gəlməsi haqqında bildirişi yayımlamaq imkanı verir. Zərərli tətbiqlər bundan gələn SMS mesajlarını saxtalaşdırmaq üçün istifadə edə bilər."</string>
- <string name="permlab_broadcastWapPush" msgid="3145347413028582371">"WAP-PUSH tərəfindən qəbul edilən yayım göndər"</string>
- <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Tətbiqə WAP PUSH mesajın alındığı haqda bildiriş translasiya etməyə icazə verir. Zərərli tətbiqlər bundan istifadə edərək saxta MMS mesaj alışı və ya səssizcə istənilən veb səhifəni zərərverici variantlarla dəyişmək üçün istifadə edə bilər."</string>
- <string name="permlab_setProcessLimit" msgid="2451873664363662666">"çalışan proseslərin sayını məhdudlaşdırır"</string>
- <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Tətbiqə işlədiləcək maksimum proses sayını idarə etmə izni verir. Normal tətbiqlər tərəfindən tələb olunmur."</string>
- <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"arxafon tətbiqlərini dayanmağa məcbur edir"</string>
- <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Tətbiqə aktivitilərin arxa fona getdiyi zaman bitməsini yoxlayır. Normal tətbiqlər tərəfindən tələn olunmur."</string>
- <string name="permlab_batteryStats" msgid="2789610673514103364">"batareya statistikalarını oxumaq"</string>
- <string name="permdesc_batteryStats" msgid="5897346582882915114">"Tətbiqə cari aşağı səviyyəli data sitifadəsini oxumaq imkanı verir. Tətbiqə hansı tətbiqi istifadə etdiyiniz haqqında ətraflı məlumat tapmağa imkan verə bilər."</string>
- <string name="permlab_updateBatteryStats" msgid="3719689764536379557">"batareya statistikalarını dəyişmək"</string>
- <string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"Tətbiqə yığılmış batareya statistikasını redaktə etmə icazəsi verir. Normal tətbiqlər tərəfindən istifadə edilmir."</string>
- <string name="permlab_getAppOpsStats" msgid="1508779687436585744">"tətbiq əməliyyat statistikalarını əldə etmək"</string>
- <string name="permdesc_getAppOpsStats" msgid="6243887041577912877">"Toplanmış tətbiq əməliyyat statistikalarının bərpa edilməsinə imkan verir. Normal tətbiqlər tərəfindən istifadə üçün deyil."</string>
- <string name="permlab_updateAppOpsStats" msgid="8829097373851521505">"tətbiq əməliyyat statistikasını dəyişmək"</string>
- <string name="permdesc_updateAppOpsStats" msgid="50784596594403483">"Tətbiqə toplanmış tətbiq əməliyyat statistikasını dəyişməyə imkan verir. Normal tətbiqlər tərəfindən istifadə olunmur."</string>
- <string name="permlab_backup" msgid="470013022865453920">"sistem yedəkləməsi və bərpasını idarə edir"</string>
- <string name="permdesc_backup" msgid="6912230525140589891">"Tətbiqə sistemi rezerv etməyə və mexanizmi bərpa etməyə imkan verir. Normal tətbiqlər tərəfindən istifadə edilmək üçün nəzərdə tutulmayıb.."</string>
- <string name="permlab_confirm_full_backup" msgid="5557071325804469102">"tam rezervi təsdiq etmək və ya əməliyyatı bərpa etmək"</string>
- <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Tətbiqə İstifadəçi İnterfeysi tam rezerv təsdiqini işə salmağa imkan verir. Heç bir tətbiq tərəfindən istifadə olunmamalıdır."</string>
- <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"icazəsiz pəncərələri görüntüləyir"</string>
- <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Tətbiqə daxili sistem interfeysi tərəfindən istifadə edilməsi üçün nəzərdə tutulmuş pəncərələri yaratmağa icazə verir. Normal tətbiqlər tərəfindən istifadə edilmir."</string>
- <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"digər tətbiqlər üzərində çəkmək"</string>
- <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"Tətbiqə digər tətbiqlərin və ya onların hissələrinin yuxarısında şəkil çəkməyə imkan verir. Onlar istənilən tətbiqin interfeysinin istifadəsinə müdaxilə edə və ya digər tətbiqlərdə axtardıqlarınızı dəyişə bilər."</string>
- <string name="permlab_setAnimationScale" msgid="2805103241153907174">"qlobal animasiya sürətini dəyişir"</string>
- <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Tətbiqə istənilən vaxt qlobal animasiya sürətini (sürətli və ya yavaş animasiyalar) dəyişdirmək imkanı verir."</string>
- <string name="permlab_manageAppTokens" msgid="1286505717050121370">"tətbiq nişanlarını idarə etmək"</string>
- <string name="permdesc_manageAppTokens" msgid="8043431713014395671">"Tətbiqlərə onların normal Z-orderinqi keçərək markerlərini yaratma və idarəetmə icazəsi verir. Normal tətbiqlər tərəfindən istifadə olunmur."</string>
- <string name="permlab_freezeScreen" msgid="4708181184441880175">"ekranı dondurur"</string>
- <string name="permdesc_freezeScreen" msgid="8558923789222670064">"Tətbiqə tam ekranlı yayım üçün ekranı müvəqqəti olaraq dondurma icazəsi verir."</string>
- <string name="permlab_injectEvents" msgid="1378746584023586600">"düymələri və idarəetmə düymələrini basır"</string>
- <string name="permdesc_injectEvents" product="tablet" msgid="206352565599968632">"Tətbiqə özünün daxiletmə tədbirlərini digər tətbiqlərə çatdırmağa imkan verir. Zərərli tətbiqlər planşeti ələ keçirmək üçün bundan istifadə edə bilər."</string>
- <string name="permdesc_injectEvents" product="default" msgid="653128057572326253">"Tətbiqə özünün daxiletmə tədbirlərini digər tətbiqlərə çatdırmağa imkan verir. Zərərli tətbiqlər telefonu ələ keçirmək üçün bundan istifadə edə bilər."</string>
- <string name="permlab_readInputState" msgid="469428900041249234">"yazdıqlarınızı və etdiklərinizi izləyir"</string>
- <string name="permdesc_readInputState" msgid="8387754901688728043">"Tətbiqə basdığınız düymələri izləmək imkanı verilir. Buna parolların və kredit kartı nömrələrinin yazılması da aiddir. Normal tətbiqlər tərəfindən istifadə olunmur."</string>
- <string name="permlab_bindInputMethod" msgid="3360064620230515776">"daxiletmə metoduna bağlanır"</string>
- <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Sahibinə daxiletmə metodunun ən üst səviyyə interfeysinə bağlamaq imkanı verir. Normal tətbiqlər üçün heç vaxt lazım olmamalıdır."</string>
- <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"giriş xidmətinə bağlı qal"</string>
- <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Sahibə giriş xidmətin ən üst səviyyə interfeysi bağlamağa imkan verir. Normal tətbiqlər üçün heç vaxt lazım olmamalıdır."</string>
- <string name="permlab_bindPrintService" msgid="8462815179572748761">"çap servisini qoşma"</string>
- <string name="permdesc_bindPrintService" msgid="7960067623209111135">"Sahibinə bir çap xidmətinin ən üst səviyə araüzünü bağlamağa imkan verir. Normal tətbiqlər üçün heç vaxt lazım olmamalıdır."</string>
- <string name="permlab_bindPrintSpoolerService" msgid="6807762783744125954">"çap spuler servisinə qoş"</string>
- <string name="permdesc_bindPrintSpoolerService" msgid="3680552285933318372">"Sahibinə çap spuler xidmətinin ən üst səviyyə interfeysinə bağlamağa imkan verir. Normal tətbiqlər üçün heç vaxt lazım olmamalıdır."</string>
- <string name="permlab_bindNfcService" msgid="2752731300419410724">"NFC xidmətlərinə qoşun"</string>
- <string name="permdesc_bindNfcService" msgid="6120647629174066862">"Sahibinə NFC kartlarını emulyasiya edən tətbiqləri bir-birinə qoşmağa icazə verin. Normal tətbiqlər üçün lazım deyil."</string>
- <string name="permlab_bindTextService" msgid="7358378401915287938">"mətn servisini qoşma"</string>
- <string name="permdesc_bindTextService" msgid="8151968910973998670">"Sahibinə bir mətn xidmətinin ən üst səviyyə araüzünü bağlamağa imkan verir(məsələn, SpellCheckerService). Normal tətbiqlər üçün heç vaxt lazım olmamalıdır."</string>
- <string name="permlab_bindVpnService" msgid="4708596021161473255">"VPN xidmətə əlaqələndirmək"</string>
- <string name="permdesc_bindVpnService" msgid="2067845564581693905">"Sahibinə bir Vpn xidmətinin ən üst səviyyə araüzünü bağlamağa imkan verir. Normal tətbiqlər üçün heç vaxt lazım olmamalıdır."</string>
- <string name="permlab_bindWallpaper" msgid="8716400279937856462">"divar kağızına bağlanır"</string>
- <string name="permdesc_bindWallpaper" msgid="7108428692595491668">"Cihaz sahibinə yuxarı səviyyəli divar kağızı interfeysini cildləməyə imkan verir. Normal tətbiqlər tərəfindən istifadə olunmamalıdır."</string>
- <string name="permlab_bindRemoteViews" msgid="5697987759897367099">"widget servisini qoşma"</string>
- <string name="permdesc_bindRemoteViews" msgid="4717987810137692572">"Sahibinə vidcet servisin yüksək səviyyəli interfeysi ilə əlaqə saxlamaq icazəsi verir. Normal tətbiqlər tərəfindən heç vaxt istənilməməlidir."</string>
- <string name="permlab_bindDeviceAdmin" msgid="8704986163711455010">"cihaz admini ilə ünsiyyət qurmaq"</string>
- <string name="permdesc_bindDeviceAdmin" msgid="569715419543907930">"Sahibinə bir cihaz idarəçisinə planlar göndərmək üçün imkan verir. Normal tətbiqlər üçün heç vaxt lazım olmamalıdır."</string>
- <string name="permlab_manageDeviceAdmins" msgid="4248828900045808722">"cihaz admini əlavə edin və ya silin"</string>
- <string name="permdesc_manageDeviceAdmins" msgid="5025608167709942485">"Sahibinə aktiv cihaz administratorlarını əlavə etməyə və ya silməyə icazə verir. Normal tətbiqlər üçün tələb olunmamalıdır."</string>
- <string name="permlab_setOrientation" msgid="3365947717163866844">"ekran oriyentasiyasını dəyişir"</string>
- <string name="permdesc_setOrientation" msgid="3046126619316671476">"Tətbiqə istənilən zaman ekranın vəziyyətini dəyişmə icazəsi verir. Normal tətbiqlər tərəfindən tələb olunmur."</string>
- <string name="permlab_setPointerSpeed" msgid="9175371613322562934">"kursor sürətini dəyişmək"</string>
- <string name="permdesc_setPointerSpeed" msgid="6866563234274104233">"Tətbiqə mausun və ya trekpedin kursor sürətini istənilən zaman dəyişməyə imkan verir. Normal tətbiqlər tərəfindən istifadə olunmamalıdır."</string>
- <string name="permlab_setKeyboardLayout" msgid="4778731703600909340">"klaviatura sxemini dəyişir"</string>
- <string name="permdesc_setKeyboardLayout" msgid="8480016771134175879">"Tətbiqə klaviatura sxemini dəyişmək imkanı verir. Normal tətbiqlər tərəfindən tələb olunmur."</string>
- <string name="permlab_signalPersistentProcesses" msgid="4539002991947376659">"tətbiqlərə Linux siqnalları göndərir"</string>
- <string name="permdesc_signalPersistentProcesses" msgid="4896992079182649141">"Tətbiqə bütün davamlı proseslərə siqnal soğrusu göndərməyə imkan verir."</string>
- <string name="permlab_persistentActivity" msgid="8841113627955563938">"təbiqi həmişə çalışdır"</string>
- <string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"Tətbiqə öz komponentlərini yaddaşda saxlama icazəsi verir. Bu planşetin sürətini zəiflətməklə, digər tətbiqlər üçün mövcud olan yaddaşı limitləyə bilər."</string>
- <string name="permdesc_persistentActivity" product="default" msgid="4384760047508278272">"Tətbiqə öz komponentlərini yaddaşda saxlama icazəsi verir. Bu digər tətbiqlər üçün mövcud olan yaddaşı limitləyə bilər."</string>
- <string name="permlab_deletePackages" msgid="184385129537705938">"tətbiqləri sil"</string>
- <string name="permdesc_deletePackages" msgid="7411480275167205081">"Tətbiqə Android paketləri silmə icazəsi verir. Zərərli tətbiqlər bundan digər vacib tətbiqləri silmək üçün istifadə edə bilər."</string>
- <string name="permlab_clearAppUserData" msgid="274109191845842756">"digər tətbiqlərin məlumatını silir"</string>
- <string name="permdesc_clearAppUserData" msgid="4625323684125459488">"Tətbiqə istifadəçi datasını təmizləməyə imkan verir."</string>
- <string name="permlab_deleteCacheFiles" msgid="3128665571837408675">"digər tətbiqlərin keşini sil"</string>
- <string name="permdesc_deleteCacheFiles" msgid="3812998599006730196">"Tətbiqə keş faylları silmə icazəsi verir."</string>
- <string name="permlab_getPackageSize" msgid="7472921768357981986">"tətbiq saxlama yaddaşını ölçmək"</string>
- <string name="permdesc_getPackageSize" msgid="3921068154420738296">"Tətbiqə özünün kodunu, məlumatını və keş ölçüsünü alma icazəsi verir."</string>
- <string name="permlab_installPackages" msgid="2199128482820306924">"birbaşa tətbiqlər quraşdırmaq"</string>
- <string name="permdesc_installPackages" msgid="5628530972548071284">"Tətbiqə yeni və ya güncəllənmiş Android paketlərini quraşdırmağa imkan verir. Zərərli tətbiqlər bundan istifadə edərək güclü səlahiyyətlərə malik tətbiqləri endirə bilər."</string>
- <string name="permlab_clearAppCache" msgid="7487279391723526815">"bütün tətbiq keş datasını silir"</string>
- <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"Tətbiqə planşetin yaddaşını boşaltmaq üçün digər tətbiqlərin keş fayllarını silmək imkanı verir. Bu da digər tətbiqlərin dataları yenidən əldə etmələri səbəbindən daha yavaş işləmələrinə səbəb ola bilər."</string>
- <string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"Tətbiqə digər tətbiqlərin keş qovluğunu təmizləyərək telefonun yaddaşını boşaltmaq icazəsi verir. Bu digər tətbiqlərin məlumatlarını yenidən əldə etməli olduqlarına görə daha yavaş başlamasına səbəb olur."</string>
- <string name="permlab_movePackage" msgid="3289890271645921411">"tətbiq resurslarının yerini dəyişir"</string>
- <string name="permdesc_movePackage" msgid="319562217778244524">"Tətbiqə tətbiq resurslarını daxili mediadan xarici mediaya və əksinə daşımağa imkan verir."</string>
- <string name="permlab_readLogs" msgid="6615778543198967614">"məxfi loq datasını oxuyur"</string>
- <string name="permdesc_readLogs" product="tablet" msgid="82061313293455151">"Tətbiqə sistemin müxtəlif jurnal fayllarını oxumağa imkan verir. Bu da Sizin planşetdə etdikləriniz haqqında məlumatlar, həmçinin şəxsi və konfidensial məlumatlar ola bilər."</string>
- <string name="permdesc_readLogs" product="default" msgid="2063438140241560443">"Tətbiqə sistemin müxtəlif jurnal fayllarını oxumağa imkan verir. Bu da Sizin planşetdə etdikləriniz haqqında məlumatlar, həmçinin şəxsi və konfidensial məlumatlar ola bilər."</string>
- <string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"oxutmaq üçün istənilən media dekoderi istifadə edir"</string>
- <string name="permdesc_anyCodecForPlayback" msgid="8283912488433189010">"Tətbiqə playback\'i deşifrə etmək üçün hər hansı bir quraşdırılmış media deşifrələyicisini istifadə etmık imkanı verir."</string>
- <string name="permlab_manageCaCertificates" msgid="1678391896786882014">"etibarlı etimadnamələri idarə et"</string>
- <string name="permdesc_manageCaCertificates" msgid="4015644047196937014">"Tətbiqə etibarlı etimadnamələr kimi CA sertifikatlarını quraşdırmaq və sistemdən silməyə icazə verir."</string>
- <string name="permlab_diagnostic" msgid="8076743953908000342">"diaga məxsus olan mənbələri yaz/oxu"</string>
- <string name="permdesc_diagnostic" msgid="6608295692002452283">"Tətbiqə diag qrupa məsus olan resursları yazmaq və oxumaq icazəsi verir; məsələn /dev qovluğundakı fayllar. Bu sistemin stabilliyinə və təhlükəsizliyinə təsir edə bilər. Bu ancaq istehsalçı və ya operator tərəfindən avadanlığa xas diaqnostika üçün olmalıdır."</string>
- <string name="permlab_changeComponentState" msgid="6335576775711095931">"tətbiq komponentlərini aktivləşdirmə və ya deaktivləşdirmə"</string>
- <string name="permdesc_changeComponentState" product="tablet" msgid="8887435740982237294">"Tətbiqə digər tətbiq komponentinin aktiv olub-olmadığını dəyişmək imkanı verir. Zərərli tətbiqlər bundan əhəmiyyətli planşet imkanlarını deaktiv etmək üçün istifadə edə bilər. Bu icazə ilə ehtiyatlı olmaq lazımdır, çünki tətbiq komponentləri yararsız, ziddiyyətli, və ya qeyri-sabit statusa çevrilə bilər."</string>
- <string name="permdesc_changeComponentState" product="default" msgid="1827232484416505615">"Tətbiqə digər tətbiq komponentinin aktiv olub-olmadığını dəyişmək imkanı verir. Zərərli tətbiqlər bundan əhəmiyyətli telefon imkanlarını deaktiv etmək üçün istifadə edə bilər. Bu icazə ilə ehtiyatlı olmaq lazımdır, çünki tətbiq komponentləri yararsız, ziddiyyətli, və ya qeyri-sabit statusa çevrilə bilər."</string>
- <string name="permlab_grantRevokePermissions" msgid="4627315351093508795">"icazələr vermək və ya ləğv etmək"</string>
- <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Tətbiqə bu və ya digər tətbiqlərə xüsusi iznlər verməyə icazə verir. Zərərli tətbiqlər bundan izin vermədiyiniz özəllikləri özlərinə vermək üçün istifadə edə bilər."</string>
- <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"tərcih edilən tətbiqlər qur"</string>
- <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Tətbiqə tərcih etdiyiniz tətbiqləri dəyişmək imkanı verir. Zərərli tətbiqlər şəxsi məlumatlarınızı toplamaq üçün cari tətbiqlərinizi aldadaraq işləyən tətbiqləri xəbərsiz dəyişə bilər."</string>
- <string name="permlab_writeSettings" msgid="2226195290955224730">"sistem ayarlarında dəyişiklik etmək"</string>
- <string name="permdesc_writeSettings" msgid="7775723441558907181">"Tətbiqə sistem ayarları datasını redaktə etmə icazəsi verir. Zərərli tətbiqlər sistem ayarlarını korlaya bilər."</string>
- <string name="permlab_writeSecureSettings" msgid="204676251876718288">"təhlükəsiz sistem nizamlarını dəyişir"</string>
- <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Tətbiqə sistemin təhlükəsiz ayarlar datasını dəyişməyə imkan verir. Normal tətbiqlər tərəfindən istifadə üçün deyil."</string>
- <string name="permlab_writeGservices" msgid="2149426664226152185">"Google xidmətlər xəritəsini dəyişdir"</string>
- <string name="permdesc_writeGservices" msgid="1287309437638380229">"Tətbiqə Google xidmətlər xəritəsini dəyişdirmək imkanı verir. Normal tətbiqlərin istifadəsi üçün deyil."</string>
- <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"başlanğıcda işləyir"</string>
- <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Tətbiqə sistem yükləməni bitirdiyi zaman dərhal özünü başlatmağa imkan verir. Bu planşeti başlatmağın uzun çəkməsinə səbəb ola bilər və tətbiqə həmişə çalışdıraraq bütün planşeti yavaşlatmağa imkan verir."</string>
- <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Tətbiqə sistem bootinqi bitirdikdən dərhal sonra özünü başlatmaq icazəsi verir. Bu telefonun açılmasını ləngidə və daima işlək qalaraq telefonun sürətini aşağı sala bilər."</string>
- <string name="permlab_broadcastSticky" msgid="7919126372606881614">"daimi siqnal göndərmək"</string>
- <string name="permdesc_broadcastSticky" product="tablet" msgid="7749760494399915651">"Tətbiqə yayım bitdikdən sonra da qalan çətin yayımlar göndərməyə imkan verir. Hədsiz istifadə çox yaddaş istifadəsinə səbəb olmaqla planşeti yavaş və qeyri-stabil edə bilər."</string>
- <string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"Tətbiqə yayım bitdikdən sonra da qalan çətin yayımlar göndərməyə imkan verir. Hədsiz istifadə çox yaddaş istifadəsinə səbəb olmaqla telefonu yavaş və qeyri-stabil edə bilər."</string>
- <string name="permlab_readContacts" msgid="8348481131899886131">"kontakrlatınızı oxumaq"</string>
- <string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"Tətbiqə planşetinizdə yerləşən kontaktları oxumaq icazəsi verir, tez-tez zəng elədiyiniz, emailləşdiyiniz və ya əlaqə saxladığınız xüsusi individuallar daxil olmaqla. Bu icazə tətbiqlərə kontakt məlumatlarınızı saxlamağa və zərərli tətbiqlərə kontakt məlumatlarını sizin bilginiz olmada paylaşma imkanı yaradır."</string>
- <string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"Tətbiqə tez-tez zəng elədiyiniz, e-məktub göndərdiyiniz və ya əlaqə saxladığınız xüsusi individuallar daxil olmaqla telefonunuzda yerləşən kontaktları oxumaq icazəsi verir. Bu icazə tətbiqlərə kontakt məlumatlarınızı saxlamağa və zərərli tətbiqlərə kontakt məlumatlarını sizin xəbəriniz olmada paylaşma imkanı yaradır."</string>
- <string name="permlab_writeContacts" msgid="5107492086416793544">"kontaktlarınızı dəyişdirir"</string>
- <string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"Tətbiqə planşetinizdəki zəng etmək tezliyiniz, elektron poçtlarınız, ünsiyyətləriniz haqqında məlumatları dəyişməyə imkan verir. Bu icazə kontakt məlumatlarının silinməsinə də imkan verir."</string>
- <string name="permdesc_writeContacts" product="default" msgid="589869224625163558">"Tətbiqə Sizin zəng etmək tezliyiniz, elektron poçtlarınız, ünsiyyətləriniz haqqında məlumatları dəyişməyə imkan verir. Buna kontaktların silinməsi imkanı də daxildir."</string>
- <string name="permlab_readCallLog" msgid="3478133184624102739">"zəng qeydiyyatını oxu"</string>
- <string name="permdesc_readCallLog" product="tablet" msgid="3700645184870760285">"Tətbiqə gələn və gedən zənglər haqqında olan data daxil olmaqla bərabər planşetinizin zəng qeydiyyatını oxumağa imkan verir. Bu icazə tətbiqlərə zəng qeydiyyatınızı saxlamağa imkan verir və zərərli tətbiqlər zəng qeydiyyat datasını sizdən xəbərsiz paylaşa bilər."</string>
- <string name="permdesc_readCallLog" product="default" msgid="5777725796813217244">"Tətbiqə telefon jurnalınızı oxumağa imkan verir, buna gələn və gedən zənglər haqqında məlumatlar da daxildir. Bu icazə tətbiqə zəng jurnalı datasını saxlamağa imkan verir ki, Zərərli tətbiqlər bundan istifadə edərək Sizdən xəbərsiz bütün məlumatlarnızı paylaşa bilər."</string>
- <string name="permlab_writeCallLog" msgid="8552045664743499354">"zəng loqu yazır"</string>
- <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Tətbiqə planşetinizdəki zəng jurnalını, həmçinin gedən və gələn zənglərin siyahısını dəyişməyə imkan verir. Zərərli tətbiqlər bundan istifadə edərək, zəng jurnalınıza dəyişiklik edə bilər."</string>
- <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Tətbiqə sizin daxil olan və gedən zənglər daxil olmaqla telefon zəngi loqlarınızı redaktə etmək icazəsi verir. Zərərli tətbiqlər bundan telefon loqlarınızı silmək və ya redaktə etmək üçün istifadə edə bilər."</string>
- <string name="permlab_readProfile" msgid="4701889852612716678">"öz kontakt kartınızı oxuyun"</string>
- <string name="permdesc_readProfile" product="default" msgid="5462475151849888848">"Tətbiqə cihazınızda yerləşən adınız və kontakt məlumatlarınız kimi şəxsi profil məlumatlarını oxuma icazəsi verir. Bu o deməkdir ki, tətbiq sizi tanıya və sizin profil məlumatlarınızı başqalarına göndərə bilər."</string>
- <string name="permlab_writeProfile" msgid="907793628777397643">"sizin kontakt kartınızda dəyişiklik etmək"</string>
- <string name="permdesc_writeProfile" product="default" msgid="5552084294598465899">"Tətbiqə cihazınızda yerləşən adınız və kontakt məlumatlarınız kimi şəxsi profil məlumatlarını dəyişmək və ya əlavə etmək icazəsi verir. Bu o deməkdir ki, tətbiq sizi tanıya və sizin profil məlumatlarınızı başqalarına göndərə bilər."</string>
- <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"sosial lentinizi oxuyur"</string>
- <string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"Tətbiqə Sizin və dostlarınızın sosial güncəllərini əldə etmək və sinxronizə etmək icazəsi verir. Məlumat paylaşarkən diqqətli olun - konfidensiallıqdan asılı olmayaraq bu, Siz və dostlarınız arasında sosial şəbəkələrdəki danışığı oxumaq imkanı verir. Qeyd: bu icazə bütün sosial şəbəkələrdə icra edilə bilməz."</string>
- <string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"sosial axınınıza yazır"</string>
- <string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"Tətbiqə dostlarınızdan sosial yenilənmələri göstərmə icazəsi verir. Məlumat paylaşarkən diqqətli olun - bu dostlarınızdan gələn mesajı emal etməyə izn verir. Qeyd: bu icazə bütün sosial şəbəkələrə şamil olunmaya bilər."</string>
- <string name="permlab_readCalendar" msgid="5972727560257612398">"təqvim tədbirlərini və konfidensial məlumatları oxuyur"</string>
- <string name="permdesc_readCalendar" product="tablet" msgid="4216462049057658723">"Tətbiqə dostlarınızın və əməkdaşlarınızın planşetinizdə yerləşən kalendar tədbirlərini oxumağa icazə verir. Bu tətbiqə konfidensiallıq və ya həssaslıqdan asılı olmayaraq sizin kalendar məlumatlarınızı paylaşmaq və ya saxlamağa imkan yaradır."</string>
- <string name="permdesc_readCalendar" product="default" msgid="7434548682470851583">"Tətbiqə dost və əməkdaşlara məxsus olanlar daxil olmaqla planşetdə yerləşən bütün kalendar tətbiqlərini oxumaq icazəsi verir. Bu tətbiqə konfidensiallıq və ya həssaslıqdan asılı olmayaraq, Sizin kalendar məlumatlarınızı paylaşmaq və ya saxlamaq imkanı yaradır."</string>
- <string name="permlab_writeCalendar" msgid="8438874755193825647">"cihaz sahibinin icazəsi olmadan təqvim tədbirləri əlavə etmək və ya dəyişmək, bunun haqqında bildirişlər göndərmək"</string>
- <string name="permdesc_writeCalendar" product="tablet" msgid="6679035520113668528">"Tətbiqə planşetinizdəki tədbirləri dəyişməyə, tədbir əlavə etməyə və ya silməyə imkan verir. Buna Sizin dostlarınızla və həmkarlarınızla birlikdə hazırladığınız tədbirlər də daxildir. Bu, tədbirə Sizin adınızdan və Sizdən xəbərsiz, təqvim sahibi kimi mesaj göndərmək imkanını verir."</string>
- <string name="permdesc_writeCalendar" product="default" msgid="2324469496327249376">"Dostlarınız və həmkarlarınıza məxsus olanlar da daxil olmaqla, tətbiqə telefonunuzdakı tədbirləri dəyişməyə, tədbir əlavə etməyə və ya silməyə imkan verir. Bu, tədbirə Sizin adınızdan və Sizdən xəbərsiz, təqvim sahibi kimi mesaj göndərmək imkanı verir."</string>
- <string name="permlab_accessMockLocation" msgid="8688334974036823330">"test üçün saxta məkan mənbələri"</string>
- <string name="permdesc_accessMockLocation" msgid="5808711039482051824">"Test üçün saxta məkan mənbələri yaradın və ya yeni məkan provayderi quraşdırın. Bu tətbiqlərə GPS və məkan provayderləri kimi məkan mənbələrindən alınan məkan və/ya statusları yenidən yazmağa icazə verir."</string>
- <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"əlavə məkan provayderi əmrlərinə çıxış"</string>
- <string name="permdesc_accessLocationExtraCommands" msgid="5945166642335800763">"Tətbiqə əlavə məkan provayderi əmrlərinə daxil olmaq imkanı verir. Bu tətbiqə GPS əməliyyatına və ya digər məkan mənbələrinə mane olmaq imkanı verə bilər."</string>
- <string name="permlab_installLocationProvider" msgid="6578101199825193873">"Məkan provayderini quraşdırmaq icazəsi"</string>
- <string name="permdesc_installLocationProvider" msgid="9066146120470591509">"Yeni yerləşmə təchizatçısını test etmək və ya quraşdırmaq üçün mock yerləşmə mənbələri yarat. Bu tətbiqə yerləşmənin və/ya digər yerləşmə mənbələrindən GPS və ya yerləşmə təchizatçıları qayıtmış statusların ləğv etməsinə imkan verir."</string>
- <string name="permlab_accessFineLocation" msgid="1191898061965273372">"dəqiq yeri (GPS və şəbəkə-əsaslı)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"Qlobal Pozisiya Sistemini və ya şəbəkə qüllələri və Wi-Fi kimi şəbəkə məkanını istifadə edərək tətbiqə Sizin dəqiq yerinizi təyin etməyə imkan verir. Bu məkan xidmətləri aktivləşdirilməlidirlər ki, Siz tətbiqi istifadə edən zaman tətbiq onları istifadə edə bilsin. Tətbiqlər Sizin harada olmağınızı bunun vasitəsilə təyin edəcək, eyni zamanda, bu xidmət əlavə batareya enerjisi apara bilər."</string>
- <string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"təxmini məkan (şəbəkə əsaslı)"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"Tətbiqə təxmini yerinizi almaq üçün imkan verir. Bu yer, yerləşmə xidmətləri tərəfindən mobil qüllələr və Wi-Fi kimi şəbəkə yerləşmə mənbələrdən istifadə etməklə əldə edilir. Bu yerləşmə xidmətləri tətbiqin onlardan istifadəsi üçün açıq və cihazınızın onları istifadəsi üçün mövcud olmalıdır. Tətbiqlər bundan sizin təxminən harada olduğunuzu müəyyənləşdirmək üçün istifadə edə bilər."</string>
- <string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"SurfaceFlinger\'ə daxil olmaq"</string>
- <string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"Tətbiqə aşağı səviyyəli SurfaceFnger özəlliklərini istifadə etməyə icazə verir."</string>
- <string name="permlab_readFrameBuffer" msgid="6690504248178498136">"freym buferi oxuyur"</string>
- <string name="permdesc_readFrameBuffer" msgid="4937405521809454680">"Tətbiqə freym buferinin kontentini oxumaq icazəsi verir."</string>
- <string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"Wifi görüntülərini quraşdır"</string>
- <string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"Tətbiqə Wifi görüntülərini quraşdırmağa və onlara qoşulmağa imkan verir."</string>
- <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"WiFi görüntülərini dəyişir"</string>
- <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"Tətbiqə Wifi displeylərinin aşağı səviyyəli funksiyalarını idarə etmək imkanı verir."</string>
- <string name="permlab_captureAudioOutput" msgid="6857134498402346708">"audio çıxışı alın"</string>
- <string name="permdesc_captureAudioOutput" msgid="6210597754212208853">"Tətbiqə audio çıxışı almaq və yenidən yönləndirmək imkanı verir."</string>
- <string name="permlab_captureVideoOutput" msgid="2246828773589094023">"video çıxışı alın"</string>
- <string name="permdesc_captureVideoOutput" msgid="359481658034149860">"Tətbiqə video çıxışı almaq və yenidən yönləndirmək imkanı verir."</string>
- <string name="permlab_captureSecureVideoOutput" msgid="7815398969303382016">"təhlükəsiz video çıxışı alın"</string>
- <string name="permdesc_captureSecureVideoOutput" msgid="2779793064709350289">"Tətbiqə güvənli video çıxışı almaq və yenidən yönləndirmək imkanı verir."</string>
- <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"audio ayarlarınızı dəyişir"</string>
- <string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"Tətbiqə səs və hansı spikerin çıxış üçün istifadə olunduğu kimi qlobal səs ayarlarını dəyişdirməyə imkan verir."</string>
- <string name="permlab_recordAudio" msgid="3876049771427466323">"səs yaz"</string>
- <string name="permdesc_recordAudio" msgid="4906839301087980680">"Tətbiqə mikrofonla audio yazmaq icazəsi verir. İcazə tətbiqə sizin təsdiqiniz olmadan istənilən zaman səs yazma izni verir."</string>
- <string name="permlab_camera" msgid="3616391919559751192">"şəkil və video çəkmək"</string>
- <string name="permdesc_camera" msgid="8497216524735535009">"Tətbiqə kamera ilə şəkil və video çəkməyə imkan yaradır. Bu icazə tətbiqə sizin təsdiqiniz olmadan kameradan istifadə icazəsi verir."</string>
- <string name="permlab_cameraDisableTransmitLed" msgid="2651072630501126222">"kamera istifadə edildikdə LED göstərici ötürülməsini deaktiv edir"</string>
- <string name="permdesc_cameraDisableTransmitLed" msgid="4764585465480295341">"Öncədən quraşdırılmış sistem tətbiqinə kamera tərəfindən istifadə edilən LED indikatorunu söndürmək icazəsi verir."</string>
- <string name="permlab_brick" product="tablet" msgid="2961292205764488304">"planşeti daimi olaraq aradan qaldır"</string>
- <string name="permlab_brick" product="default" msgid="8337817093326370537">"telefonu həmişəlik deaktiv etmək"</string>
- <string name="permdesc_brick" product="tablet" msgid="4334818808001699530">"Tətbiqə planşeti birdəfəlik deaktiv etməyə imkan verir. Bu da çox təhlükəlidir."</string>
- <string name="permdesc_brick" product="default" msgid="5788903297627283099">"Tətbiqə bütün telefonu birdəfəlik deaktivləşdirməyə imkan verir. Bu çox təhlükəlidir."</string>
- <string name="permlab_reboot" product="tablet" msgid="3436634972561795002">"planşeti yenidən yüklənməyə məcbur edir"</string>
- <string name="permlab_reboot" product="default" msgid="2898560872462638242">"telefonu yenidən yüklənməyə məcbur edir"</string>
- <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Tətbiqə planşeti yenidən yükləməyə məcbur etmək imkanı verir."</string>
- <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Tətbiqə telefonu yenidən yükləməyə məcbur etmək üçün imkan verir."</string>
- <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"USB yaddaş fayl sisteminə daxil olmaq"</string>
- <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"SD Kart fayl sisteminə daxil olmaq"</string>
- <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Tətbiqə silinəbilən yaddaşları və ya fayl sistemini quraşdırma və ayırma icazəsi verir."</string>
- <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB yaddaşı silir"</string>
- <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD kartı silir"</string>
- <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Tətbiqə çıxarıla bilən yaddaşı format etməyə imkan verir."</string>
- <string name="permlab_asec_access" msgid="3411338632002193846">"daxili yaddaşınız haqqında məlumat əldə etmək"</string>
- <string name="permdesc_asec_access" msgid="3094563844593878548">"Tətbiqə daxili yaddaş haqqında məlumat almağa imkan verir."</string>
- <string name="permlab_asec_create" msgid="6414757234789336327">"daxili yaddaş yaratmaq"</string>
- <string name="permdesc_asec_create" msgid="4558869273585856876">"Tətbiqə daxili yaddaş yaratmaq üçün imkan verir."</string>
- <string name="permlab_asec_destroy" msgid="526928328301618022">"daxili yaddaşı məhv etmə"</string>
- <string name="permdesc_asec_destroy" msgid="7218749286145526537">"Tətbiqə daxili yaddaşı məhv etmə icazəsi verir."</string>
- <string name="permlab_asec_mount_unmount" msgid="8877998101944999386">"daxili yaddaşı montaj və ya demontaj etmək"</string>
- <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Tətbiqə daxili yaddaşı quraşdırma/ayırma icazəsi verir."</string>
- <string name="permlab_asec_rename" msgid="7496633954080472417">"daxili yaddaşın adını dəyiş"</string>
- <string name="permdesc_asec_rename" msgid="1794757588472127675">"Tətbiqə daxili yaddaşın adını dəyişmək imkanı verir."</string>
- <string name="permlab_vibrate" msgid="7696427026057705834">"vibrasiyaya nəzarət edir"</string>
- <string name="permdesc_vibrate" msgid="6284989245902300945">"Tətbiqə vibratoru idarə etmə icazəsi verir."</string>
- <string name="permlab_flashlight" msgid="2155920810121984215">"Flash işığını idarə edir"</string>
- <string name="permdesc_flashlight" msgid="6522284794568368310">"Tətbiqə siqnal işığı na nəzarət etməyə imkan verir."</string>
- <string name="permlab_manageUsb" msgid="1113453430645402723">"USB cihazlar üçün tərcihləri və icazələri idarə etmək"</string>
- <string name="permdesc_manageUsb" msgid="7776155430218239833">"Tətbiqə USB cihazlar üçün olan tərcihləri və icazələri idarə etməyə imkan verir."</string>
- <string name="permlab_accessMtp" msgid="4953468676795917042">"MTP protokol həyata keçirmək"</string>
- <string name="permdesc_accessMtp" msgid="6532961200486791570">"Kernel MTP drayverə girişə imkan verir ki, MTP USB protokolunu həyata keçirsin."</string>
- <string name="permlab_hardware_test" msgid="4148290860400659146">"avadanlığı sınaq edir"</string>
- <string name="permdesc_hardware_test" msgid="6597964191208016605">"Tətbiqə avadanlığı yoxlamaq üçün müxtəlif periferiyaları kontrol etməyə imkan verir."</string>
- <string name="permlab_callPhone" msgid="3925836347681847954">"telefon nömrələrinə birbaşa zəng edir"</string>
- <string name="permdesc_callPhone" msgid="3740797576113760827">"Tətbiqə Sizin müdaxiləniz olmadan telefon zəngləri etməyə imkan verir. Zərərli tətbiqlər Sizdən xəbərsiz şəkildə müxtəlif zənglər edərək, Sizə maddi ziyan vura bilər. Qeyd: Bu, tətbiqlərə təcili nömrələrə zəng etməyə icazə vermir."</string>
- <string name="permlab_callPrivileged" msgid="4198349211108497879">"istənilən nömrəyə birbaşa zəng edir"</string>
- <string name="permdesc_callPrivileged" msgid="1689024901509996810">"Tətbiqə Sizin müdaxiləniz olmadan, təcili zənglər də daxil olmaqla, istənilən telefon zəngini etməyə imkan verir. Zərərli tətbiqlər bundan istifadə edərək, təcili nömrələrə qanunsuz zəng vurmaqla Sizin üçün hüquqi problemlər yarada bilər."</string>
- <string name="permlab_performCdmaProvisioning" product="tablet" msgid="4842576994144604821">"CDMA planşet ayarlarına birbaşa başlamaq"</string>
- <string name="permlab_performCdmaProvisioning" product="default" msgid="5604848095315421425">"CDMA telefon quraşdırmalarına birbaşa başlamaq"</string>
- <string name="permdesc_performCdmaProvisioning" msgid="1994193538802314186">"Tətbiqə CDMA hazırlığını başlatma icazəsi verir. Zərərli tətbiqlər ehtiyac olmadıqda CDMA hazırlığını başlada bilərlər."</string>
- <string name="permlab_locationUpdates" msgid="7785408253364335740">"məkan güncəlləmə bildirişlərini idarə edir"</string>
- <string name="permdesc_locationUpdates" msgid="1120741557891438876">"Tətbiqə radiodan gələn məkan güncəllənmələrini aktiv və ya deaktiv etməyə imkan verir. Normal tətbiqlər tərəfindən istifadə olunmur."</string>
- <string name="permlab_checkinProperties" msgid="7855259461268734914">"qeydiyyat xüsusiyyətlərini əldə edir"</string>
- <string name="permdesc_checkinProperties" msgid="4024526968630194128">"Tətbiqə giriş qeydi servisi tərəfindən yüklənmiş mülkiyyətə girişi oxumaq/yazmaq imkanl verir. Normal tətbiqlər üçün nəzərdə tutulmayıb."</string>
- <string name="permlab_bindGadget" msgid="776905339015863471">"vidcetlər seç"</string>
- <string name="permdesc_bindGadget" msgid="8261326938599049290">"Tətbiqə sistemə hansı vidcetin hansı tətbiq tərəfindən istifadə edilə bilməsini deməyə icazə verir. Bu icazəli tətbiqlər şəxsi məlumatlara və digər tətbiqlərə çıxış verə bilər. Normal tətbiqlər tərəfindən istifadə üçün deyil."</string>
- <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"telefon statusunu dəyişmək"</string>
- <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Tətbiqə cihazın telefon funksiyalarını idarə etmək imkanı verir. Belə icazəli tətbiq Sizi xəbərdar etmədən şəbəkələri qoşa, telefon radiosunu yandırıb-söndürə bilər."</string>
- <string name="permlab_readPhoneState" msgid="9178228524507610486">"telefon statusunu və identifikasiyanı oxuyur"</string>
- <string name="permdesc_readPhoneState" msgid="1639212771826125528">"Tətbiqə cihazın telefon funksiyalarına giriş icazəsi verir. Belə icazəli tətbiq bu telefonun nömrəsini və cihaz İD\'ni, zəngin aktiv olub-olmadığını və zəng edilən nömrəni müəyyən edə bilər."</string>
- <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"planşetin yuxu rejiminin qarşısını almaq"</string>
- <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"telefonun yuxu rejiminə keçməsini əngəllə"</string>
- <string name="permdesc_wakeLock" product="tablet" msgid="7311319824400447868">"Tətbiqə planşetin yuxu rejimini qadağan etməyə imkan verir."</string>
- <string name="permdesc_wakeLock" product="default" msgid="8559100677372928754">"Tətbiqə telefonun yuxu rejimini qadağan etmək imkanı verir."</string>
- <string name="permlab_devicePower" product="tablet" msgid="2787034722616350417">"planşeti yandırma və ya söndürmə"</string>
- <string name="permlab_devicePower" product="default" msgid="4928622470980943206">"telefonu yandırmaq və ya söndürmək"</string>
- <string name="permdesc_devicePower" product="tablet" msgid="6689862878984631831">"Tətbiqə planşeti yandırmağa və söndürməyə imkan verir."</string>
- <string name="permdesc_devicePower" product="default" msgid="6037057348463131032">"Tətbiqə telefonu yandırıb söndürmə icazəsi verir."</string>
- <string name="permlab_factoryTest" msgid="3715225492696416187">"zavod test rejimində işləyir"</string>
- <string name="permdesc_factoryTest" product="tablet" msgid="3952059318359653091">"Planşet avadanlığına tam girişə imkan verməklə aşağı səviyyəli istehsalçı sınağı kimi işləyir. Yalnız planşet istehsalçı sınaq rejimində olduqda işləyir."</string>
- <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Bir aşağı səviyyəli istehsalçı testi kimi çalışdırın, telefon hardware üçün tam giriş imkanı verir. Ancaq telefon, istehsalçı test rejimində çalışdığı zaman aktivdir."</string>
- <string name="permlab_setWallpaper" msgid="6627192333373465143">"divar kağızı yerləşdirir"</string>
- <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Tətbiqə sistemə divar kağızı yerləşdirmək icazəsi verir."</string>
- <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"divar kağızı ölçüsünü verir"</string>
- <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Tətbiqə sistem divar kağızı ölçüsü göstərişlərini müəyyən etməyə imkan verir."</string>
- <string name="permlab_masterClear" msgid="2315750423139697397">"fabrik defoltuna sıfırlamaq"</string>
- <string name="permdesc_masterClear" msgid="3665380492633910226">"Tətbiqə bütün məlumatları, nizamları və quraşdırılmış tətbiqləri silərək sistemi fabrik nizamlarına qaytarmaq imkanı verir."</string>
- <string name="permlab_setTime" msgid="2021614829591775646">"vaxtı təyin edir"</string>
- <string name="permdesc_setTime" product="tablet" msgid="1896341438151152881">"Tətbiqə planşetin saat vaxtını dəyişməyə imkan verir."</string>
- <string name="permdesc_setTime" product="default" msgid="1855702730738020">"Tətbiqə telefonun saat vaxtını dəyişməyə imkan verir."</string>
- <string name="permlab_setTimeZone" msgid="2945079801013077340">"vaxt zonasını quraşdırır"</string>
- <string name="permdesc_setTimeZone" product="tablet" msgid="1676983712315827645">"Tətbiqə planşetin vaxt zonasını dəyişmə icazəsi verir."</string>
- <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Tətbiqə telefon saat zolağını dəyişmək üçün imkan verir."</string>
- <string name="permlab_accountManagerService" msgid="4829262349691386986">"AccountManagerService kimi davranır"</string>
- <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Tətbiqə AccountAuthenticators\'ə zəng etməyə imkan verir."</string>
- <string name="permlab_getAccounts" msgid="1086795467760122114">"cihazda hesabları tapır"</string>
- <string name="permdesc_getAccounts" product="tablet" msgid="2741496534769660027">"Tətbiqə planşet tərəfindən bilinən hesabların siyahısını alma icazəsi verir. Bu quraşdırdığınız tətbiqlər tərəfindən yaradılmış istənilən hesab ola bilər."</string>
- <string name="permdesc_getAccounts" product="default" msgid="3448316822451807382">"Tətbiqə telefonda olan hesabların siyahısını əldə etməyə imkan verir. Buna quraşdırdığınız istənilən tətbiq tərəfindən yaradılan hesablar da aiddir."</string>
- <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"hesablar yaradır və parollar təyin edir"</string>
- <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Tətbiqə AccountManager\'in hesab yaratmaq və parol almaq və açmaq daxil olmaqla bərabər, hesab təsdiqləyici imkanlarını istifadə etməyə icazə verir."</string>
- <string name="permlab_manageAccounts" msgid="4983126304757177305">"hesabları əlavə edir və ya silir"</string>
- <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Tətbiqə hesabların əlavə olunması və ya silinməsi, həmçinin onların parollarının silinməsi kimi əməliyyatları icra etməyə imkan verir."</string>
- <string name="permlab_useCredentials" msgid="235481396163877642">"cihazda hesablar istifadə etmək"</string>
- <string name="permdesc_useCredentials" msgid="7984227147403346422">"Tətbiqə autentifikasiya tokenləri sorğularını göndərməyə icazə verir."</string>
- <string name="permlab_accessNetworkState" msgid="4951027964348974773">"şəbəkə bağlantılarına baxmaq"</string>
- <string name="permdesc_accessNetworkState" msgid="8318964424675960975">"Tətbiqə mövcud olan və qoşulan şəbəkələr kimi qoşulmalar haqqında məlumatı görməyə icazə verir."</string>
- <string name="permlab_createNetworkSockets" msgid="8018758136404323658">"tam şəbəkə girişi"</string>
- <string name="permdesc_createNetworkSockets" msgid="3403062187779724185">"Tətbiqə şəbəkə soketlərini yaratmağa və fərdi şəbəkə protokollarını istifadə etməyə imkan verir. Brauzer və digər tətbiqlər datanın internetə ötürülməsini təmin edən vəsaitlər verir, ona görə də datanın internetə gönrədilməsi üçün bu icazə tələb olunmur."</string>
- <string name="permlab_writeApnSettings" msgid="505660159675751896">"şəbəkə nizamlarını və trafiki dəyişdirir/qarşısını alır"</string>
- <string name="permdesc_writeApnSettings" msgid="5333798886412714193">"Tətbiqə şəbəkə trafikinin qarşısını almaq üçün şəbəkə nizamlarını dəyişmə icazəsi verir, məsələn proksini və ya istənilən APN-in portunu. Zərərli tətbiqlər şəbəkə paketlərini sizin bilginiz olmadan monitorinq edə, yönləndirə və ya redaktə edə bilər."</string>
- <string name="permlab_changeNetworkState" msgid="958884291454327309">"şəbəkə bağlantısını dəyişir"</string>
- <string name="permdesc_changeNetworkState" msgid="6789123912476416214">"Tətbiqə şəbəkə vəziyyətini dəyişməyə icazə verir."</string>
- <string name="permlab_changeTetherState" msgid="5952584964373017960">"Sərhədli bağlantını dəyişir"</string>
- <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Tətbiqə birləşilmiş şəbəkə bağlantısının statusunu dəyişməyə imkan verir."</string>
- <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"arxafon data istifadəsi ayarını dəyişir"</string>
- <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Tətbiqə fon rejimi nizamlarını dəyişməyə icazə verir."</string>
- <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi bağlantılarına baxmaq"</string>
- <string name="permdesc_accessWifiState" msgid="5002798077387803726">"Tətbiqə Wi-Fi şəbəkələri haqqında məlumatı görməyə icazə verir, məsələn, Wi-Fi mövcudluğu və qoşulmuş Wi-Fi cihazlarının adları."</string>
- <string name="permlab_changeWifiState" msgid="6550641188749128035">"Wi-Fi şəbəkəsinə qoşulmaq və ya ayrılmaq"</string>
- <string name="permdesc_changeWifiState" msgid="7137950297386127533">"Tətbiqə Wi-Fi çıxış nöqtəsinə qoşulmaq və ondan ayrılmaq və cihazın Wi-Fi şəbəkə nizamlarını dəyişməyə icazə verir."</string>
- <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fi Multicast qəbuluna icazə ver"</string>
- <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"Tətbiqə Wi-Fi şəbəkədə sizin planşetdən başqa digər multikast adreslərə yönləndirilmiş paketləri almaq icazəsi verir. Bu qeyri-çoxadresli rejimdən fəqli olaraq daha çox enerji işlədir."</string>
- <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"Tətbiqə qrup ünvanlar istifadə etməklə, Wi-Fi şəbəkəsində olan bütün cihazlara göndərilmiş paketləri qəbul etməyə imkan verir. Buna daha çox enerji sərf olunur."</string>
- <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Bluetooth ayarlarını əldə edir"</string>
- <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Tətbiqə yerli Bluetooth planşetinin konfiqurasiyasını görməyə və məsafədən cihazları tapmağa və cütləməyə imkan verir."</string>
- <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Tətbiqə lokal Bluetooth telefonunu konfiqurə etməyə və uzaq cihazları kəşf etmək və onlara qoşulmaq icazəsi verir."</string>
- <string name="permlab_accessWimaxState" msgid="4195907010610205703">"WiMAX\'a qoşul və bağlantını kəs"</string>
- <string name="permdesc_accessWimaxState" msgid="6360102877261978887">"Tətbiqə WiMAX mövcudluğu və qoşulmuş WiMAX şəbəkələrini təyin etməyə icazə verir."</string>
- <string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX vəziyyətini dəyişir"</string>
- <string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"Tətbiqə planşeti WiMAX şəbəkələrinə qoşmaq və onlardan ayırmaq icazəsi verir."</string>
- <string name="permdesc_changeWimaxState" product="default" msgid="697025043004923798">"Tətbiqə telefonu WiMAX şəbəkəsinə qoşmağa və ya WiMAX şəbəkəsindən ayırmağa imkan verir."</string>
- <string name="permlab_bluetooth" msgid="6127769336339276828">"Bluetooth cihazları ilə cütləndirmək"</string>
- <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"Tətbiqə yerli Bluetooth planşetinin konfiqurasiyasını görməyə və cütlənmiş cihazlarla bağlantılar etməyə və qəbul etməyə imkan verir."</string>
- <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"Tətbiqə Bluetooth və ya telefon konfiqurasiyalarını görməyə və qoşulmuş cihazlarla əlaqə qurmağa və qəbul etməyə icazə verir."</string>
- <string name="permlab_nfc" msgid="4423351274757876953">"Near Field Communication\'ı kontrol et"</string>
- <string name="permdesc_nfc" msgid="7120611819401789907">"Tətbiqə Yaxın Məsafə Kommunikasiyası (NFC) teqləri, kartları və oxuyucuları ilə əlaqə qurmağa icazə verir."</string>
- <string name="permlab_disableKeyguard" msgid="3598496301486439258">"Ekran kilidini deaktiv edir"</string>
- <string name="permdesc_disableKeyguard" msgid="6034203065077122992">"Tətbiqə kilid açarını və təhlükəsizlik parolunu deaktiv etməyə imkan verir. Qanuni misal budur ki, telefon zəng qəbul edən zaman kilidi açır və zəng qurtarandan sonra kilidi bağlayır."</string>
- <string name="permlab_readSyncSettings" msgid="6201810008230503052">"sinx ayarlarını oxu"</string>
- <string name="permdesc_readSyncSettings" msgid="2706745674569678644">"Tətbiqə hesablar üçün sinxronizasiya nizamlarını oxuma icazəsi verir. Məsələn, bu Şəxslər tətbiqinin sinxronizə olunub-olunmadığını təyin edə bilər."</string>
- <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"sinxronizasiyaya davam edir və onu söndürür"</string>
- <string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"Tətbiqə hesab üçün sinxronizasiya nizamlarını dəyişməyə icazə verir. Məsələn, bu istifadəçi hesablı Şəxslər tətbiqinin sinxronizasiyasını başlamaq üçün istifadə edilə bilər."</string>
- <string name="permlab_readSyncStats" msgid="7396577451360202448">"sinxronizasiya statistikasını oxumaq"</string>
- <string name="permdesc_readSyncStats" msgid="1510143761757606156">"Tətbiqə sync tədbirlərinin tarixçəsi və nə qədər datanın sinx olduğu da daxil olmaqla bərabər, hər hansı bir hesab üçün olan sinx statlarını oxumağa imkan verir."</string>
- <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"abunə olunmuş xəbərləri oxuyur"</string>
- <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Tətbiqə hazırda sinxron lentlər haqqında ətraflı məlumat almaq üçün imkan verir."</string>
- <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"abunə olunmuş xəbərləri yazır"</string>
- <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Tətbiqə cari sinxronlaşmış lentlərinizə dəyişiklik etmək imkanı verir. Zərərli tətbiqlər sixronlaşmış lentlərinizi dəyişə bilər."</string>
- <string name="permlab_readDictionary" msgid="4107101525746035718">"lüğətə əlavə etdiyiniz şərtləri oxumaq"</string>
- <string name="permdesc_readDictionary" msgid="659614600338904243">"Tətbiqə istifadəçinin lüğətdə saxladığı bütün sözləri, adları və frazaları oxumaq icazəsi verir."</string>
- <string name="permlab_writeDictionary" msgid="2183110402314441106">"istifadəçi lüğətinə sözlər əlavə etmək"</string>
- <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Tətbiqə istifadəçi lüğətinə yeni sözlər yazmağa imkan verir."</string>
- <string name="permlab_sdcardRead" product="nosdcard" msgid="8235341515605559677">"qorunmuş yaddaşa daxil olmağa cəhd etmək"</string>
- <string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"qorunmuş yaddaşa daxil olmağa cəhd etmək"</string>
- <string name="permdesc_sdcardRead" product="nosdcard" msgid="3642473292348132072">"Tətbiqə gələcək cihazlarda əlçatımlı olacaq USB yaddaş üçün icazə testi etməyə imkan verir."</string>
- <string name="permdesc_sdcardRead" product="default" msgid="5914402684685848828">"Tətbiqə gələcək cihazlarda mövcud olacaq SD kart üçün icazəni test etmək üçün imkan verir."</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USB yaddaşınızın məzmununu dəyişmək və ya silmək"</string>
- <string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"SD kart kontentlərini dəyişir və ya silir"</string>
- <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Tətbiqə USB yaddaşa yazmağa imkan verir."</string>
- <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Tətbiqə SD karta yazma icazəsi verir."</string>
- <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"daxili media yaddaşı kontentini dəyişir/silir"</string>
- <string name="permdesc_mediaStorageWrite" product="default" msgid="8189160597698529185">"Tətbiqə daxili media yaddaşdakı kontenti redaktə etmək icazəsi verir."</string>
- <string name="permlab_manageDocs" product="default" msgid="5778318598448849829">"sənəd yaddaşını nizamlayır"</string>
- <string name="permdesc_manageDocs" product="default" msgid="8704323176914121484">"Tətbiqə sənəd yaddaşını idarə etməyə imkan verir."</string>
- <string name="permlab_sdcardAccessAll" msgid="8150613823900460576">"bütün istifadəçilərin xarici yaddaşına daxil ol"</string>
- <string name="permdesc_sdcardAccessAll" msgid="3215208357415891320">"Tətbiqə bütün istifadəçilər üçün olan xarici yaddaşa giriş imkanı verir."</string>
- <string name="permlab_cache_filesystem" msgid="5656487264819669824">"keş fayl sisteminə girmək"</string>
- <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Tətbiqə keş fayl sistemini oxumağa və yazmağa icazə verir."</string>
- <string name="permlab_use_sip" msgid="5986952362795870502">"İnternet zəngləri etmək və ya qəbul etmək"</string>
- <string name="permdesc_use_sip" msgid="4717632000062674294">"Tətbiqə internet zənglərinin göndərilməsi və qəbul edilməsi üçün SIP servisindən istifadə icazəsi verir."</string>
- <string name="permlab_readNetworkUsageHistory" msgid="7862593283611493232">"tarixi şəbəkə istifadəsini oxu"</string>
- <string name="permdesc_readNetworkUsageHistory" msgid="7689060749819126472">"Tətbiqə xüsusi şəbəkələr və tətbiqlər üçün tarixi şəbəkə istifadəsini oxumağa icazə verir."</string>
- <string name="permlab_manageNetworkPolicy" msgid="2562053592339859990">"şəbəkə siyasətini idarə etmək"</string>
- <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Tətbiqə şəbəkə qanunlarını və tətbiqin xüsusi qaydalarını idarə etmək imkanı verir."</string>
- <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"şəbəkə istifadə hesabını dəyişmək"</string>
- <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Tətbiqə şəbəkə istifadəsinin tətbiqlərə qarşı nizamlarını redaktə etməyə icazə verir. Normal tətbiqlər tərəfindən istifadə edilmir."</string>
- <string name="permlab_markNetworkSocket" msgid="3658527214914959749">"soket işarələrini dəyişin"</string>
- <string name="permdesc_markNetworkSocket" msgid="7655568433696356578">"Tətbiqə araşdırma üçün soket işarələrini dəyişmək imkanı verir"</string>
- <string name="permlab_accessNotifications" msgid="7673416487873432268">"bildirişlərə daxil ol"</string>
- <string name="permdesc_accessNotifications" msgid="458457742683431387">"Tətbiqə bildirişləri əldə etməyə, sınamağa və təmizləməyə imkan verir, buna digər tətbiqlər tərəfindən verilmiş bildirişlər də daxildir."</string>
- <string name="permlab_bindNotificationListenerService" msgid="7057764742211656654">"bildiriş dinləmə xidmətinə bağlanır"</string>
- <string name="permdesc_bindNotificationListenerService" msgid="985697918576902986">"Sahibinə yüksək səviyyəli bildiriş dinləmə servisi ilə əlaqə saxlamağa icazə verir. Normal tətbiqlər tərəfindən heç vaxt istənilməməlidir."</string>
- <string name="permlab_invokeCarrierSetup" msgid="3699600833975117478">"operator xidmətli konfiurasiya tətbiqinə müraciət edin"</string>
- <string name="permdesc_invokeCarrierSetup" msgid="4159549152529111920">"Sahibinə operator xidmətli tətbiq konfiqurasiyasına müraciət imkanı verir. Normal tətbiqlər üçün tələb olunmamalıdır."</string>
- <string name="permlab_accessNetworkConditions" msgid="8206077447838909516">"şəbəkə şəraiti haqqında müşahidələr üçün qulaq asmaq"</string>
- <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"Tətbiqə şəbəkə şəraiti üzrə müşahidələr üçün qulaq asmaq imkanı verir. Normal tətbiqlər üçün heç vaxt lazım olmamalıdır."</string>
- <string name="permlab_hotwordRecognition" msgid="3225080408746361313">"isti söz tanınması tələb et"</string>
- <string name="permdesc_hotwordRecognition" msgid="3716741260195364252">"Tətbiqə isti söz tanınması tələb etməyə imkan verir. Normal tətbiq üçün lazım ola bilməz."</string>
- <string name="policylab_limitPassword" msgid="4497420728857585791">"Parol qaydalarını təyin edin"</string>
- <string name="policydesc_limitPassword" msgid="3252114203919510394">"Ekran kilidini açan şifrələrin uzunluğunu və onlardakı icazə verilən işarələrə nəzarət edir."</string>
- <string name="policylab_watchLogin" msgid="914130646942199503">"Ekran kilidi cəhdlərini monitorinq et"</string>
- <string name="policydesc_watchLogin" product="tablet" msgid="3215729294215070072">"Ekan kilidini açarkən daxil edilmiş yanlış parollara baxın və əgər həddindən çox yanlış parollar daxil edilibsə, planşeti kilidləyin və ya bütün planşet datasını silin."</string>
- <string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"Ekan kilidini açarkən daxil edilmiş yanlış parollara baxın və əgər həddindən çox yanlış parollar daxil edilibsə, telefonu kilidləyin və ya bütün telefon datasını silin."</string>
- <string name="policylab_resetPassword" msgid="2620077191242688955">"Ekran kilid parolunu dəyişin"</string>
- <string name="policydesc_resetPassword" msgid="605963962301904458">"Ekran kilidini açan şifrəni dəyişdirin."</string>
- <string name="policylab_forceLock" msgid="2274085384704248431">"Ekranı kilidləyin"</string>
- <string name="policydesc_forceLock" msgid="1141797588403827138">"Ekranın nə vaxt və necə kilidlənməsinə nəzarət edir."</string>
- <string name="policylab_wipeData" msgid="3910545446758639713">"Bütün məlumatları silin"</string>
- <string name="policydesc_wipeData" product="tablet" msgid="4306184096067756876">"Planşetin datasını xəbərdarlıq olmadan, zavod data sıfırlaması ilə silin."</string>
- <string name="policydesc_wipeData" product="default" msgid="5096895604574188391">"Telefonun datasını xəbərdarlıq olmadan, zavod data sıfırlaması ilə silin"</string>
- <string name="policylab_setGlobalProxy" msgid="2784828293747791446">"Cihazın qlobal proksisini ayarlayın"</string>
- <string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"Siyasət aktiv olarkən cihazın qlobal proksisini istifadə üçün qurun. Yalnız ilk cihaz admini effektiv qlobal proksini təyin edir."</string>
- <string name="policylab_expirePassword" msgid="885279151847254056">"Ekran kilidi şifrəsinə son zaman seç"</string>
- <string name="policydesc_expirePassword" msgid="1729725226314691591">"Ekran kilidi parolunun nə qədər tez-tez dəyişməsini kontrol edin."</string>
- <string name="policylab_encryptedStorage" msgid="8901326199909132915">"Yaddaş şifrələnməsini ayarlayın"</string>
- <string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Tətbiq məlumatlarının şifrələnməsini tələb edir."</string>
- <string name="policylab_disableCamera" msgid="6395301023152297826">"Kameraları dekativ edin"</string>
- <string name="policydesc_disableCamera" msgid="2306349042834754597">"Bütün cihaz kameralarının istifadəsini əngəllə."</string>
- <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Klaviatura kilidində funksiyaları deaktiv edin"</string>
- <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Klaviatura kilidində bəzi funksiyaların qarşısını alın."</string>
- <string-array name="phoneTypes">
- <item msgid="8901098336658710359">"Əsas səhifə"</item>
- <item msgid="869923650527136615">"Mobil"</item>
- <item msgid="7897544654242874543">"İş"</item>
- <item msgid="1103601433382158155">"İş Faksı"</item>
- <item msgid="1735177144948329370">"Ev Faksı"</item>
- <item msgid="603878674477207394">"Peycer"</item>
- <item msgid="1650824275177931637">"Digər"</item>
- <item msgid="9192514806975898961">"Şəxsi"</item>
- </string-array>
- <string-array name="emailAddressTypes">
- <item msgid="8073994352956129127">"Ana səhifə"</item>
- <item msgid="7084237356602625604">"İş"</item>
- <item msgid="1112044410659011023">"Digər"</item>
- <item msgid="2374913952870110618">"Fərdi"</item>
- </string-array>
- <string-array name="postalAddressTypes">
- <item msgid="6880257626740047286">"Əsas səhifə"</item>
- <item msgid="5629153956045109251">"İş"</item>
- <item msgid="4966604264500343469">"Digər"</item>
- <item msgid="4932682847595299369">"Düzənləyin"</item>
- </string-array>
- <string-array name="imAddressTypes">
- <item msgid="1738585194601476694">"Əsas səhifə"</item>
- <item msgid="1359644565647383708">"İş"</item>
- <item msgid="7868549401053615677">"Digər"</item>
- <item msgid="3145118944639869809">"Fərdi"</item>
- </string-array>
- <string-array name="organizationTypes">
- <item msgid="7546335612189115615">"İş"</item>
- <item msgid="4378074129049520373">"Digər"</item>
- <item msgid="3455047468583965104">"Fərdi"</item>
- </string-array>
- <string-array name="imProtocols">
- <item msgid="8595261363518459565">"AIM"</item>
- <item msgid="7390473628275490700">"Windows Live"</item>
- <item msgid="7882877134931458217">"Yahoo"</item>
- <item msgid="5035376313200585242">"Skype"</item>
- <item msgid="7532363178459444943">"QQ"</item>
- <item msgid="3713441034299660749">"Google Söhbət"</item>
- <item msgid="2506857312718630823">"ICQ"</item>
- <item msgid="1648797903785279353">"Jabber"</item>
- </string-array>
- <string name="phoneTypeCustom" msgid="1644738059053355820">"Şəxsi"</string>
- <string name="phoneTypeHome" msgid="2570923463033985887">"Ev"</string>
- <string name="phoneTypeMobile" msgid="6501463557754751037">"Mobil"</string>
- <string name="phoneTypeWork" msgid="8863939667059911633">"İş"</string>
- <string name="phoneTypeFaxWork" msgid="3517792160008890912">"İş Faksı"</string>
- <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Ev Faksı"</string>
- <string name="phoneTypePager" msgid="7582359955394921732">"Peycer"</string>
- <string name="phoneTypeOther" msgid="1544425847868765990">"Digər"</string>
- <string name="phoneTypeCallback" msgid="2712175203065678206">"Geriyə zəng"</string>
- <string name="phoneTypeCar" msgid="8738360689616716982">"Avtomobil"</string>
- <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Şirkət"</string>
- <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
- <string name="phoneTypeMain" msgid="6766137010628326916">"Əsas"</string>
- <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Digər faks"</string>
- <string name="phoneTypeRadio" msgid="4093738079908667513">"Radio"</string>
- <string name="phoneTypeTelex" msgid="3367879952476250512">"Teleks"</string>
- <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
- <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Mobil iş telefonu"</string>
- <string name="phoneTypeWorkPager" msgid="649938731231157056">"İş Peyceri"</string>
- <string name="phoneTypeAssistant" msgid="5596772636128562884">"Köməkçi"</string>
- <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
- <string name="eventTypeCustom" msgid="7837586198458073404">"Fərdi"</string>
- <string name="eventTypeBirthday" msgid="2813379844211390740">"Doğum günü"</string>
- <string name="eventTypeAnniversary" msgid="3876779744518284000">"İldönümü"</string>
- <string name="eventTypeOther" msgid="7388178939010143077">"Digər"</string>
- <string name="emailTypeCustom" msgid="8525960257804213846">"Fərdi"</string>
- <string name="emailTypeHome" msgid="449227236140433919">"Əsas səhifə"</string>
- <string name="emailTypeWork" msgid="3548058059601149973">"İş"</string>
- <string name="emailTypeOther" msgid="2923008695272639549">"Digər"</string>
- <string name="emailTypeMobile" msgid="119919005321166205">"Mobil"</string>
- <string name="postalTypeCustom" msgid="8903206903060479902">"Fərdi"</string>
- <string name="postalTypeHome" msgid="8165756977184483097">"Əsas səhifə"</string>
- <string name="postalTypeWork" msgid="5268172772387694495">"İş"</string>
- <string name="postalTypeOther" msgid="2726111966623584341">"Digər"</string>
- <string name="imTypeCustom" msgid="2074028755527826046">"Fərdi"</string>
- <string name="imTypeHome" msgid="6241181032954263892">"Ana səhifə"</string>
- <string name="imTypeWork" msgid="1371489290242433090">"İş"</string>
- <string name="imTypeOther" msgid="5377007495735915478">"Digər"</string>
- <string name="imProtocolCustom" msgid="6919453836618749992">"Şəxsi"</string>
- <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
- <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
- <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
- <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
- <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
- <string name="imProtocolGoogleTalk" msgid="493902321140277304">"Görüşlər"</string>
- <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
- <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
- <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
- <string name="orgTypeWork" msgid="29268870505363872">"İş"</string>
- <string name="orgTypeOther" msgid="3951781131570124082">"Digər"</string>
- <string name="orgTypeCustom" msgid="225523415372088322">"Fərdi"</string>
- <string name="relationTypeCustom" msgid="3542403679827297300">"Şəxsi"</string>
- <string name="relationTypeAssistant" msgid="6274334825195379076">"Köməkçi"</string>
- <string name="relationTypeBrother" msgid="8757913506784067713">"Qardaş"</string>
- <string name="relationTypeChild" msgid="1890746277276881626">"Uşaq"</string>
- <string name="relationTypeDomesticPartner" msgid="6904807112121122133">"Ev yoldaşı"</string>
- <string name="relationTypeFather" msgid="5228034687082050725">"Ata"</string>
- <string name="relationTypeFriend" msgid="7313106762483391262">"Dost"</string>
- <string name="relationTypeManager" msgid="6365677861610137895">"Müdir"</string>
- <string name="relationTypeMother" msgid="4578571352962758304">"Ana"</string>
- <string name="relationTypeParent" msgid="4755635567562925226">"Valideyn"</string>
- <string name="relationTypePartner" msgid="7266490285120262781">"Ortaq"</string>
- <string name="relationTypeReferredBy" msgid="101573059844135524">"Dəvət edən"</string>
- <string name="relationTypeRelative" msgid="1799819930085610271">"Qohum"</string>
- <string name="relationTypeSister" msgid="1735983554479076481">"Bacı"</string>
- <string name="relationTypeSpouse" msgid="394136939428698117">"Həyat yoldaşı"</string>
- <string name="sipAddressTypeCustom" msgid="2473580593111590945">"Fərdi"</string>
- <string name="sipAddressTypeHome" msgid="6093598181069359295">"Əsas səhifə"</string>
- <string name="sipAddressTypeWork" msgid="6920725730797099047">"İş"</string>
- <string name="sipAddressTypeOther" msgid="4408436162950119849">"Digər"</string>
- <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"PİN kodu daxil edin"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Şifrə daxil etmək üçün toxunun"</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>
- <string name="keyguard_label_text" msgid="861796461028298424">"Kilidi açmaq üçün Menyu, sonra 0 basın."</string>
- <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"Təcili nömrə"</string>
- <string name="lockscreen_carrier_default" msgid="8963839242565653192">"Xidmət yoxdur."</string>
- <string name="lockscreen_screen_locked" msgid="7288443074806832904">"Ekran kilidlənib."</string>
- <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"Təcili zəng kilidini açmaq və ya yerləşdirmək üçün Menyu düyməsinə basın."</string>
- <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"Kilidi açmaq üçün Menyu düyməsinə basın."</string>
- <string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"Kilidi açmaq üçün model çəkin"</string>
- <string name="lockscreen_emergency_call" msgid="5347633784401285225">"Təcili zəng"</string>
- <string name="lockscreen_return_to_call" msgid="5244259785500040021">"Zəngə qayıt"</string>
- <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Düzdür!"</string>
- <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Bir də cəhd edin"</string>
- <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Bir daha cəhd et"</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Sifət kilidi cəhdləriniz bitdi"</string>
- <string name="lockscreen_plugged_in" msgid="8057762828355572315">"Batareya yığılır, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_charged" msgid="321635745684060624">"Dolub"</string>
- <string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_low_battery" msgid="1482873981919249740">"Elektrikə qoşun."</string>
- <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM kart yoxdur."</string>
- <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Planşetdə SIM kart yoxdur."</string>
- <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Telefonda SİM kart yoxdur."</string>
- <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"SİM kart daxil edin."</string>
- <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SİM kart yoxdur və ya oxuna bilinmir. SİM kart daxil edin."</string>
- <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Yararsız SIM kart."</string>
- <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Sizin SİM kartınız daimi olaraq deaktivləşib.\n Başqa SİM kart üçün simsiz xidmət provayderinizə müraciət edin."</string>
- <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Əvvəlki trek düyməsi"</string>
- <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Növbəti trek düyməsi"</string>
- <string name="lockscreen_transport_pause_description" msgid="7659088786780128001">"Pauza düyməsi"</string>
- <string name="lockscreen_transport_play_description" msgid="5888422938351019426">"Oxutma düyməsi"</string>
- <string name="lockscreen_transport_stop_description" msgid="4562318378766987601">"Dayandırma düyməsi"</string>
- <string name="emergency_calls_only" msgid="6733978304386365407">"Yalnız təcili zənglər"</string>
- <string name="lockscreen_network_locked_message" msgid="143389224986028501">"Şəbəkə kilidlidir"</string>
- <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM kart PUK ilə kilidlənib."</string>
- <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"İstifadəçi Təlimatlarına baxın və ya Müştəri Xidmətlərinə müraciət edin."</string>
- <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"SIM kart kilidlənib."</string>
- <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"SİM kartın kilidi açılır..."</string>
- <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"Siz kilid modelini <xliff:g id="NUMBER_0">%d</xliff:g> dəfə yanlış çəkdiniz. \n\n <xliff:g id="NUMBER_1">%d</xliff:g> saniyə içində yenidən sınayın."</string>
- <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="2725973286239344555">"Şifrənizi <xliff:g id="NUMBER_0">%d</xliff:g> dəfə yanlış daxil etdiniz.\n\n <xliff:g id="NUMBER_1">%d</xliff:g> saniyə ərzində yenidən yoxlayın"</string>
- <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"Siz PIN nömrənizi <xliff:g id="NUMBER_0">%d</xliff:g> dəfə yanlış daxil etdiniz. \n \n <xliff:g id="NUMBER_1">%d</xliff:g> saniyə içində təkrar sınayın."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"Siz kilidi açmaq üçün şablonu <xliff:g id="NUMBER_0">%d</xliff:g> dəfə səhv çəkdiniz. <xliff:g id="NUMBER_1">%d</xliff:g> daha uğursuz cəhddən sonra planşetin kilidini Google hesabınıza daxil olmaqla açmağınız istəniləcək.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> saniyə ərzində bir daha yoxlayın."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"Siz kilidi açmaq üçün şablonu <xliff:g id="NUMBER_0">%d</xliff:g> dəfə səhv çəkdiniz. <xliff:g id="NUMBER_1">%d</xliff:g> daha uğursuz cəhddən sonra planşetin kilidini Google hesabınıza daxil olmaqla açmağınız tələb olunacaq.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> saniyə ərzində bir daha yoxlayın."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"Siz planşet kilidini açmaq üçün <xliff:g id="NUMBER_0">%d</xliff:g> dəfə uğursuz cəhd etmisiniz. <xliff:g id="NUMBER_1">%d</xliff:g> dəfə də uğursuz cəhd etsəniz, planşet fabrik ayarlarına sıfırlanacaq və bütün məlumatlarınız itəcək."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"Siz telefon kilidini açmaq üçün <xliff:g id="NUMBER_0">%d</xliff:g> dəfə uğursuz cəhd etmisiniz. <xliff:g id="NUMBER_1">%d</xliff:g> dəfə də uğursuz cəhd etsəniz, telefon zavod ayarlarına sıfırlanacaq və bütün məlumatlarınız itəcək."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"Siz planşetin kilidini açmaq üçün <xliff:g id="NUMBER">%d</xliff:g> yanlış cəhd etmisiniz. Planşet artıq defolt zavod halına sıfırlanacaq."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"Siz telefonun kilidini açmaq üçün <xliff:g id="NUMBER">%d</xliff:g> dəfə səhv cəhd etdiniz. Telefonunuz indi zavod nizamlarına yenilənəcək."</string>
- <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"<xliff:g id="NUMBER">%d</xliff:g> saniyə ərzində bir daha cəhd edin."</string>
- <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"Şablonu unutdunuz?"</string>
- <string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"Hesab kilid açma"</string>
- <string name="lockscreen_glogin_too_many_attempts" msgid="2751368605287288808">"Həddindən çox cəhd edildi!"</string>
- <string name="lockscreen_glogin_instructions" msgid="3931816256100707784">"Kilidi açmaq üçün Google hesabınız ilə daxil olun."</string>
- <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"İstifadəçi adı (e-poçt)"</string>
- <string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">"Şifrə"</string>
- <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"Daxil olun"</string>
- <string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"Yanlış istifadəçi adı və parol."</string>
- <string name="lockscreen_glogin_account_recovery_hint" msgid="1696924763690379073">"İstifadəçi adınızı və ya parolunuzu unutmusunuz?\n "<b>"google.com/accounts/recovery"</b>" linkinə daxil olun."</string>
- <string name="lockscreen_glogin_checking_password" msgid="7114627351286933867">"Yoxlanır..."</string>
- <string name="lockscreen_unlock_label" msgid="737440483220667054">"Kilidi aç"</string>
- <string name="lockscreen_sound_on_label" msgid="9068877576513425970">"Səs açıqdır"</string>
- <string name="lockscreen_sound_off_label" msgid="996822825154319026">"Səs sönülüdür"</string>
- <string name="lockscreen_access_pattern_start" msgid="3941045502933142847">"Model başlandı"</string>
- <string name="lockscreen_access_pattern_cleared" msgid="5583479721001639579">"Model təmizləndi"</string>
- <string name="lockscreen_access_pattern_cell_added" msgid="6756031208359292487">"Xana əlavə edildi"</string>
- <string name="lockscreen_access_pattern_detected" msgid="4988730895554057058">"Model tamamlandı"</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d of %3$d."</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Widget əlavə edin."</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Boş"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Kilidi açma sahəsi genişləndi."</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Kilidi açma sahəsi çökdü."</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> vidcet."</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"İstifadəçi selektoru"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Status"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kamera"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Media kontrolları"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Yenidən sıralama vidceti başladıldı."</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Vidcetin təkrar sifarişi sona çatdı."</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Vidcet <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> silindi."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Kilidi açma sahəsini genişləndir."</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Sürüşdürmə kilidi."</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Kild açma modeli."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Sifət Kilidi"</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Pin kilid açması."</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Şifrə kilidi."</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Model sahəsi."</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Sürüşdürmə sahəsi."</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="granularity_label_character" msgid="7336470535385009523">"simvol"</string>
- <string name="granularity_label_word" msgid="7075570328374918660">"söz"</string>
- <string name="granularity_label_link" msgid="5815508880782488267">"link"</string>
- <string name="granularity_label_line" msgid="5764267235026120888">"xətt"</string>
- <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string>
- <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string>
- <string name="factorytest_failed" msgid="5410270329114212041">"Zavod testi alınmadı"</string>
- <string name="factorytest_not_system" msgid="4435201656767276723">"Bu FACTORY_TEST fəaliyyəti yalnızca/sistemdə/tətbiqdə quraşdırılmış paketlər üçün dəstəklənir."</string>
- <string name="factorytest_no_action" msgid="872991874799998561">"FACTORY_TEST əməliyyatını təsdiqləyən heç bir paket tapılmadı."</string>
- <string name="factorytest_reboot" msgid="6320168203050791643">"Yenidən yükləyin"</string>
- <string name="js_dialog_title" msgid="1987483977834603872">"\"<xliff:g id="TITLE">%s</xliff:g>\"dakı səhifədə deyilir:"</string>
- <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
- <string name="js_dialog_before_unload_title" msgid="2619376555525116593">"Naviqasiyanı Təsdiq edin"</string>
- <string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"Bu Səhifəni Tərk edin"</string>
- <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"Bu səhifədə qalın"</string>
- <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nBu səhifədən kənara naviqasiya etmək istədiyinizə əminsiniz mi?"</string>
- <string name="save_password_label" msgid="6860261758665825069">"Təsdiqlə"</string>
- <string name="double_tap_toast" msgid="4595046515400268881">"Məsləhət: Böyütmək və kiçiltmək üçün iki dəfə tıklayın."</string>
- <string name="autofill_this_form" msgid="4616758841157816676">"Avtodoldurma"</string>
- <string name="setup_autofill" msgid="7103495070180590814">"AvtoDoldurmanı ayarla"</string>
- <string name="autofill_address_name_separator" msgid="6350145154779706772">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3268041054899214945">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="7483307893170324129">", "</string>
- <string name="autofill_address_summary_format" msgid="4874459455786827344">"$1$2$3"</string>
- <string name="autofill_province" msgid="2231806553863422300">"Vilayət"</string>
- <string name="autofill_postal_code" msgid="4696430407689377108">"Poçt kodu"</string>
- <string name="autofill_state" msgid="6988894195520044613">"Dövlət"</string>
- <string name="autofill_zip_code" msgid="8697544592627322946">"Poçt indeksi"</string>
- <string name="autofill_county" msgid="237073771020362891">"Ölkə"</string>
- <string name="autofill_island" msgid="4020100875984667025">"Ada"</string>
- <string name="autofill_district" msgid="8400735073392267672">"Sahə"</string>
- <string name="autofill_department" msgid="5343279462564453309">"Departament"</string>
- <string name="autofill_prefecture" msgid="2028499485065800419">"Prefektura"</string>
- <string name="autofill_parish" msgid="8202206105468820057">"Pariş"</string>
- <string name="autofill_area" msgid="3547409050889952423">"Sahə"</string>
- <string name="autofill_emirate" msgid="2893880978835698818">"Əmirlik"</string>
- <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"Veb əlfəcinlərinizi və tarixçələrinizi oxumaq"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="8462378226600439658">"Tətbiqə Brauzerin daxil olduğu bütün linkləri və bütün Brauzer əlfəcinlərini oxumaq imkanı verir. Qeyd: bu icazə veb brauzer imkanları olan üçüncü tərəf brazuerləri və digər tətbiqlər tərəfindən yerinə yetirilə bilməz."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"veb əlfəcinləri və tarixçəsi yazmaq"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="6825527469145760922">"Tətbiqə planşetinizdəki brauzer tarixini və əlfəcinləri redaktə etmək icazəsi verir. Bu tətbizə brauzer məlumatlarını silmək və ya redaktə etmək imkanı verə bilər. Qeyd: Bu icazə 3-cü partiya brauzerlərə və ya veb brauzing xüsusiyyətli digər tətbiqlərə şamil olunmaya bilər."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"Tətbiqə Brauzer tarixçəsi və telefonunuzda saxlanılan əlfəcinlərə dəyişiklik etmək imkanı verir. Bununla tətbiqlə Brauzer datanızı silə və ya dəyişdirə bilər. Qeyd: bu icazə veb brauzer imkanları olan üçüncü tərəf brazuerləri və digər tətbiqlər tərəfindən yerinə yetirilə bilməz."</string>
- <string name="permlab_setAlarm" msgid="1379294556362091814">"siqnal qurur"</string>
- <string name="permdesc_setAlarm" msgid="316392039157473848">"Tətbiqə quraşdırlmış zəngli saata alarm ayarlamağa imkan verir. Bəzi zəngli saat tətbiqləri bu özəlliyi dəstəkləməyə bilər."</string>
- <string name="permlab_addVoicemail" msgid="5525660026090959044">"Səsli poçt əlavə et"</string>
- <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Tətbiqə səsli poçt qutunuza mesaj əlavə etməyə imkan verir."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"Brauzerin geolokasiya icazələrini dəyişir"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"Tətbiqə Brauzerin geolokasiya icazələrini dəyişməyə imkan verir. Zərərli tətbiqlər bundan istifadə edərək məkan məlumatlarını təsadüfi saytlara göndərə bilər."</string>
- <string name="permlab_packageVerificationAgent" msgid="5568139100645829117">"paketləri təsdiqlə"</string>
- <string name="permdesc_packageVerificationAgent" msgid="8437590190990843381">"Tətbiqə paketin quraşdırılabilən olmasını yoxlamağa imkan verir."</string>
- <string name="permlab_bindPackageVerifier" msgid="4187786793360326654">"paket doğrulayıcıya bağlanır"</string>
- <string name="permdesc_bindPackageVerifier" msgid="3180741773233862126">"Sahibinə paket yoxlayıcılarına sorğu göndərmək icazəsi verir. Normal tətbiqlər tərəfindən heç vaxt istənilməməlidir."</string>
- <string name="permlab_serialPort" msgid="546083327654631076">"serial porta çıxır"</string>
- <string name="permdesc_serialPort" msgid="2991639985224598193">"Sahibinə SerialManager API vasitəsilə serial portlara icazə izni verir."</string>
- <string name="permlab_accessContentProvidersExternally" msgid="5077774297943409285">"xarici kontent provayderlərinə giriş"</string>
- <string name="permdesc_accessContentProvidersExternally" msgid="4544346486697853685">"Məzmun provayderlərinə örtükdən daxil olmaq üçün cihaz sahibinə imkan verir. Normal tətbiqlər üçün lazım deyil."</string>
- <string name="permlab_updateLock" msgid="3527558366616680889">"avtomatik cihaz yenilənmələrini pozur"</string>
- <string name="permdesc_updateLock" msgid="1655625832166778492">"Sahibinə yeni versiyaya yenilənmək üçün nə vaxt qeyri-interaktiv reboot məlumatını sistemə təklif etmə icazəsi verir."</string>
- <string name="save_password_message" msgid="767344687139195790">"Brauzerin bu şifrəni yadda saxlamasını istəyirsiz?"</string>
- <string name="save_password_notnow" msgid="6389675316706699758">"İndi yox"</string>
- <string name="save_password_remember" msgid="6491879678996749466">"Yadda saxla"</string>
- <string name="save_password_never" msgid="8274330296785855105">"Heç vaxt"</string>
- <string name="open_permission_deny" msgid="7374036708316629800">"Bu səhifəni açmaq üçün icazəniz yoxdur."</string>
- <string name="text_copied" msgid="4985729524670131385">"Mətn panoya kopyalandı."</string>
- <string name="more_item_label" msgid="4650918923083320495">"Daha çox"</string>
- <string name="prepend_shortcut_label" msgid="2572214461676015642">"Menyu+"</string>
- <string name="menu_space_shortcut_label" msgid="2410328639272162537">"boşluq"</string>
- <string name="menu_enter_shortcut_label" msgid="2743362785111309668">"daxil olun"</string>
- <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"sil"</string>
- <string name="search_go" msgid="8298016669822141719">"Axtar"</string>
- <string name="searchview_description_search" msgid="6749826639098512120">"Axtarış"</string>
- <string name="searchview_description_query" msgid="5911778593125355124">"Axtarış sorğusu"</string>
- <string name="searchview_description_clear" msgid="1330281990951833033">"Sorğunu təmizlə"</string>
- <string name="searchview_description_submit" msgid="2688450133297983542">"Sorğunu göndərin"</string>
- <string name="searchview_description_voice" msgid="2453203695674994440">"Səsli axtarış"</string>
- <string name="enable_explore_by_touch_warning_title" msgid="7460694070309730149">"Toxunaraq Kəşf et funksiyası aktiv edilsin?"</string>
- <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="8655887539089910577">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> Toxunaraq Kəşf Et rejimini aktivləşdirmək istəyir. Toxunaraq Kəşf Et açıldığı zaman, barmağınızın altında nə olduğu haqda olan təsvirləri eşidə və ya görə bilərsiniz və yaplanşetdə insanlarla əlaqəyə keçmək üçün jestlər həyata keçirə bilərsiniz."</string>
- <string name="enable_explore_by_touch_warning_message" product="default" msgid="2708199672852373195">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> Toxunaraq Kəşf Et rejimini aktivləşdirmək istəyir. Toxunaraq Kəşf Et açıldığı zaman, barmağınızın altında nə olduğu haqda olan təsvirləri eşidə və ya görə bilərsiniz və ya telefonda insanlarla əlaqəyə keçmək üçün jestlər həyata keçirə bilərsiniz"</string>
- <string name="oneMonthDurationPast" msgid="7396384508953779925">"1 ay öncə"</string>
- <string name="beforeOneMonthDurationPast" msgid="909134546836499826">"1 ay əvvəl"</string>
- <plurals name="num_seconds_ago">
- <item quantity="one" msgid="4869870056547896011">"1 saniyə əvvəl"</item>
- <item quantity="other" msgid="3903706804349556379">"<xliff:g id="COUNT">%d</xliff:g> saniyə əvvəl"</item>
- </plurals>
- <plurals name="num_minutes_ago">
- <item quantity="one" msgid="3306787433088810191">"1 dəqiqə əvvəl"</item>
- <item quantity="other" msgid="2176942008915455116">"<xliff:g id="COUNT">%d</xliff:g> dəqiqə əvvəl"</item>
- </plurals>
- <plurals name="num_hours_ago">
- <item quantity="one" msgid="9150797944610821849">"1 saat əvvəl"</item>
- <item quantity="other" msgid="2467273239587587569">"<xliff:g id="COUNT">%d</xliff:g> saat əvvəl"</item>
- </plurals>
- <plurals name="last_num_days">
- <item quantity="other" msgid="3069992808164318268">"Son <xliff:g id="COUNT">%d</xliff:g> gün"</item>
- </plurals>
- <string name="last_month" msgid="3959346739979055432">"Keçən ay"</string>
- <string name="older" msgid="5211975022815554840">"Köhnə"</string>
- <plurals name="num_days_ago">
- <item quantity="one" msgid="861358534398115820">"dünən"</item>
- <item quantity="other" msgid="2479586466153314633">"<xliff:g id="COUNT">%d</xliff:g> gün əvvəl"</item>
- </plurals>
- <plurals name="in_num_seconds">
- <item quantity="one" msgid="2729745560954905102">"1 saniyə ərzində"</item>
- <item quantity="other" msgid="1241926116443974687">"<xliff:g id="COUNT">%d</xliff:g> saniyə içində"</item>
- </plurals>
- <plurals name="in_num_minutes">
- <item quantity="one" msgid="8793095251325200395">"1 dəqiqə içində"</item>
- <item quantity="other" msgid="3330713936399448749">"<xliff:g id="COUNT">%d</xliff:g> dəqiqə ərzində"</item>
- </plurals>
- <plurals name="in_num_hours">
- <item quantity="one" msgid="7164353342477769999">"1 saata"</item>
- <item quantity="other" msgid="547290677353727389">"<xliff:g id="COUNT">%d</xliff:g> saata"</item>
- </plurals>
- <plurals name="in_num_days">
- <item quantity="one" msgid="5413088743009839518">"sabah"</item>
- <item quantity="other" msgid="5109449375100953247">"<xliff:g id="COUNT">%d</xliff:g> gün ərzində"</item>
- </plurals>
- <plurals name="abbrev_num_seconds_ago">
- <item quantity="one" msgid="1849036840200069118">"1 saniyə əvvəl"</item>
- <item quantity="other" msgid="3699169366650930415">"<xliff:g id="COUNT">%d</xliff:g> san əvvəl"</item>
- </plurals>
- <plurals name="abbrev_num_minutes_ago">
- <item quantity="one" msgid="6361490147113871545">"1 dəqiqə əvvəl"</item>
- <item quantity="other" msgid="851164968597150710">"<xliff:g id="COUNT">%d</xliff:g> dəqiqə əvvəl"</item>
- </plurals>
- <plurals name="abbrev_num_hours_ago">
- <item quantity="one" msgid="4796212039724722116">"1 saat əvvəl"</item>
- <item quantity="other" msgid="6889970745748538901">"<xliff:g id="COUNT">%d</xliff:g> saat əvvəl"</item>
- </plurals>
- <plurals name="abbrev_num_days_ago">
- <item quantity="one" msgid="8463161711492680309">"dünən"</item>
- <item quantity="other" msgid="3453342639616481191">"<xliff:g id="COUNT">%d</xliff:g> gün əvvəl"</item>
- </plurals>
- <plurals name="abbrev_in_num_seconds">
- <item quantity="one" msgid="5842225370795066299">"1 san ərzində"</item>
- <item quantity="other" msgid="5495880108825805108">"<xliff:g id="COUNT">%d</xliff:g> san ərzində"</item>
- </plurals>
- <plurals name="abbrev_in_num_minutes">
- <item quantity="one" msgid="562786149928284878">"1 dəq ərzində"</item>
- <item quantity="other" msgid="4216113292706568726">"<xliff:g id="COUNT">%d</xliff:g> dəqiqəyə"</item>
- </plurals>
- <plurals name="abbrev_in_num_hours">
- <item quantity="one" msgid="3274708118124045246">"1 saat ərzində"</item>
- <item quantity="other" msgid="3705373766798013406">"<xliff:g id="COUNT">%d</xliff:g> saata"</item>
- </plurals>
- <plurals name="abbrev_in_num_days">
- <item quantity="one" msgid="2178576254385739855">"sabah"</item>
- <item quantity="other" msgid="2973062968038355991">"<xliff:g id="COUNT">%d</xliff:g> günə"</item>
- </plurals>
- <string name="preposition_for_date" msgid="9093949757757445117">"<xliff:g id="DATE">%s</xliff:g> tarixində"</string>
- <string name="preposition_for_time" msgid="5506831244263083793">"saat <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="preposition_for_year" msgid="5040395640711867177">"<xliff:g id="YEAR">%s</xliff:g> ilində"</string>
- <string name="day" msgid="8144195776058119424">"gün"</string>
- <string name="days" msgid="4774547661021344602">"günlər"</string>
- <string name="hour" msgid="2126771916426189481">"saat"</string>
- <string name="hours" msgid="894424005266852993">"saatlar"</string>
- <string name="minute" msgid="9148878657703769868">"dəq."</string>
- <string name="minutes" msgid="5646001005827034509">"dəqiqə"</string>
- <string name="second" msgid="3184235808021478">"sn"</string>
- <string name="seconds" msgid="3161515347216589235">"san"</string>
- <string name="week" msgid="5617961537173061583">"həftə"</string>
- <string name="weeks" msgid="6509623834583944518">"həftə"</string>
- <string name="year" msgid="4001118221013892076">"il"</string>
- <string name="years" msgid="6881577717993213522">"il"</string>
- <plurals name="duration_seconds">
- <item quantity="one" msgid="6962015528372969481">"1 saniyə"</item>
- <item quantity="other" msgid="1886107766577166786">"<xliff:g id="COUNT">%d</xliff:g> saniyə"</item>
- </plurals>
- <plurals name="duration_minutes">
- <item quantity="one" msgid="4915414002546085617">"1 dəqiqə"</item>
- <item quantity="other" msgid="3165187169224908775">"<xliff:g id="COUNT">%d</xliff:g> dəqiqə"</item>
- </plurals>
- <plurals name="duration_hours">
- <item quantity="one" msgid="8917467491248809972">"1 saat"</item>
- <item quantity="other" msgid="3863962854246773930">"<xliff:g id="COUNT">%d</xliff:g> saat"</item>
- </plurals>
- <string name="VideoView_error_title" msgid="3534509135438353077">"Video problemi"</string>
- <string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Bu video bu cihaza strim olunmaq üçün uyğun deyil."</string>
- <string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Bu video oxumur"</string>
- <string name="VideoView_error_button" msgid="2822238215100679592">"OK"</string>
- <string name="relative_time" msgid="1818557177829411417">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
- <string name="noon" msgid="7245353528818587908">"günorta"</string>
- <string name="Noon" msgid="3342127745230013127">"Günorta"</string>
- <string name="midnight" msgid="7166259508850457595">"gecəyarı"</string>
- <string name="Midnight" msgid="5630806906897892201">"Gecəyarı"</string>
- <string name="elapsed_time_short_format_mm_ss" msgid="4431555943828711473">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
- <string name="elapsed_time_short_format_h_mm_ss" msgid="1846071997616654124">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
- <string name="selectAll" msgid="6876518925844129331">"Hamısını seç"</string>
- <string name="cut" msgid="3092569408438626261">"Kəs"</string>
- <string name="copy" msgid="2681946229533511987">"Kopyala"</string>
- <string name="paste" msgid="5629880836805036433">"Yerləşdir"</string>
- <string name="replace" msgid="5781686059063148930">"Əvəz et..."</string>
- <string name="delete" msgid="6098684844021697789">"Sil"</string>
- <string name="copyUrl" msgid="2538211579596067402">"URL kopyala"</string>
- <string name="selectTextMode" msgid="1018691815143165326">"Mətn seçin"</string>
- <string name="textSelectionCABTitle" msgid="5236850394370820357">"Mətn seçimi"</string>
- <string name="addToDictionary" msgid="4352161534510057874">"Lüğətə əlavə et"</string>
- <string name="deleteText" msgid="6979668428458199034">"Sil"</string>
- <string name="inputMethod" msgid="1653630062304567879">"Daxiletmə metodu"</string>
- <string name="editTextMenuTitle" msgid="4909135564941815494">"Mətn əməliyyatları"</string>
- <string name="low_internal_storage_view_title" msgid="5576272496365684834">"Yaddaş yeri bitir"</string>
- <string name="low_internal_storage_view_text" msgid="6640505817617414371">"Bəzi sistem funksiyaları işləməyə bilər"</string>
- <string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> işlənir"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Daha çox məlumat üçün və ya tətbiqi dayandırmaq üçün toxunun."</string>
- <string name="ok" msgid="5970060430562524910">"OK"</string>
- <string name="cancel" msgid="6442560571259935130">"Ləğv et"</string>
- <string name="yes" msgid="5362982303337969312">"OK"</string>
- <string name="no" msgid="5141531044935541497">"Ləğv et"</string>
- <string name="dialog_alert_title" msgid="2049658708609043103">"Diqqət"</string>
- <string name="loading" msgid="7933681260296021180">"Yüklənir…"</string>
- <string name="capital_on" msgid="1544682755514494298">"AÇIQ"</string>
- <string name="capital_off" msgid="6815870386972805832">"QAPALI"</string>
- <string name="whichApplication" msgid="4533185947064773386">"Əməliyyatı tamamlayın:"</string>
- <string name="alwaysUse" msgid="4583018368000610438">"Bu fəaliyyət üçün defolt istifadə edin"</string>
- <string name="clearDefaultHintMsg" msgid="3252584689512077257">"Sistem ayarlarında, Tətbiqlərdə və Endirilmişlərdə defoltu təmizləyin."</string>
- <string name="chooseActivity" msgid="7486876147751803333">"Fəaliyyət seçin"</string>
- <string name="chooseUsbActivity" msgid="6894748416073583509">"USB cihaz üçün tətbiq seçin"</string>
- <string name="noApplications" msgid="2991814273936504689">"Heç bir tətbiq bu əməliyyatı apara bilmir."</string>
- <string name="aerr_title" msgid="1905800560317137752"></string>
- <string name="aerr_application" msgid="932628488013092776">"Təəssüf ki, <xliff:g id="APPLICATION">%1$s</xliff:g> dayandı."</string>
- <string name="aerr_process" msgid="4507058997035697579">"Təəssüf ki, <xliff:g id="PROCESS">%1$s</xliff:g> prosesi dayandı."</string>
- <string name="anr_title" msgid="4351948481459135709"></string>
- <string name="anr_activity_application" msgid="1904477189057199066">"<xliff:g id="APPLICATION">%2$s</xliff:g> cavab vermir.\n\nOnu bağlamaq istəyirsiniz?"</string>
- <string name="anr_activity_process" msgid="5776209883299089767">"<xliff:g id="ACTIVITY">%1$s</xliff:g> aktivitisi cavab vermir. \n\nOnu bağlamaq istəyirsiniz?"</string>
- <string name="anr_application_process" msgid="8941757607340481057">"<xliff:g id="APPLICATION">%1$s</xliff:g> cavab vermir. Onu bağlamaq istəyirsiniz?"</string>
- <string name="anr_process" msgid="6513209874880517125">"Proses <xliff:g id="PROCESS">%1$s</xliff:g> cavab vermir. \n \n Onu bağlamaq istəyirsiniz?"</string>
- <string name="force_close" msgid="8346072094521265605">"OK"</string>
- <string name="report" msgid="4060218260984795706">"Şikayət edin"</string>
- <string name="wait" msgid="7147118217226317732">"Gözlə"</string>
- <string name="webpage_unresponsive" msgid="3272758351138122503">"Bu səhifə yararsızlaşıb.\n\nBağlamaq istəyirsiz?"</string>
- <string name="launch_warning_title" msgid="1547997780506713581">"Tətbiq yönləndirildi"</string>
- <string name="launch_warning_replace" msgid="6202498949970281412">"<xliff:g id="APP_NAME">%1$s</xliff:g> indi çalışır."</string>
- <string name="launch_warning_original" msgid="188102023021668683">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilk başladıldı."</string>
- <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Miqyas"</string>
- <string name="screen_compat_mode_show" msgid="4013878876486655892">"Həmişə göstər"</string>
- <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Bunları Sistem ayarlarında yenidən aktivləşdir Yüklənmiş &gt; Tətbiqlər &gt;."</string>
- <string name="smv_application" msgid="3307209192155442829">"Tətbiq <xliff:g id="APPLICATION">%1$s</xliff:g> (proses <xliff:g id="PROCESS">%2$s</xliff:g>) StrictMode siyasətini pozdu."</string>
- <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> prosesi StrictMode siyasətini pozdu."</string>
- <string name="android_upgrading_title" msgid="1584192285441405746">"Android təkmilləşdirilir..."</string>
- <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> əddədən <xliff:g id="NUMBER_0">%1$d</xliff:g> tətbiq optimallaşır."</string>
- <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>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Tətbiqə keçmək üçün toxunun"</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>
- <string name="old_app_description" msgid="2082094275580358049">"Yeni tətbiqi başlatmayın."</string>
- <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="sendText" msgid="5209874571959469142">"Mətn üçün əməliyyat seçin"</string>
- <string name="volume_ringtone" msgid="6885421406845734650">"Zəngin səs gücü"</string>
- <string name="volume_music" msgid="5421651157138628171">"Media həcmi"</string>
- <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"Bluetooth vasitəsilə oynadılır"</string>
- <string name="volume_music_hint_silent_ringtone_selected" msgid="8310739960973156272">"Səssiz zəng"</string>
- <string name="volume_call" msgid="3941680041282788711">"Daxili zəng səsi"</string>
- <string name="volume_bluetooth_call" msgid="2002891926351151534">"Bluetooth zəng həcmi"</string>
- <string name="volume_alarm" msgid="1985191616042689100">"Siqnal səsi"</string>
- <string name="volume_notification" msgid="2422265656744276715">"Bildiriş səsi"</string>
- <string name="volume_unknown" msgid="1400219669770445902">"Həcm"</string>
- <string name="volume_icon_description_bluetooth" msgid="6538894177255964340">"Bluetooth həcmi"</string>
- <string name="volume_icon_description_ringer" msgid="3326003847006162496">"Zəng səsi gücü"</string>
- <string name="volume_icon_description_incall" msgid="8890073218154543397">"Zəng həcmi"</string>
- <string name="volume_icon_description_media" msgid="4217311719665194215">"Media həcmi"</string>
- <string name="volume_icon_description_notification" msgid="7044986546477282274">"Bildiriş səsi"</string>
- <string name="ringtone_default" msgid="3789758980357696936">"Defolt rinqton"</string>
- <string name="ringtone_default_with_actual" msgid="8129563480895990372">"Defolt rinqton (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
- <string name="ringtone_silent" msgid="7937634392408977062">"Heç biri"</string>
- <string name="ringtone_picker_title" msgid="3515143939175119094">"Zəng səsləri"</string>
- <string name="ringtone_unknown" msgid="5477919988701784788">"Naməlum rinqton"</string>
- <plurals name="wifi_available">
- <item quantity="one" msgid="6654123987418168693">"Wi-Fi şəbəkəsi mövcuddur"</item>
- <item quantity="other" msgid="4192424489168397386">"Wi-Fi şəbəkələri mövcuddur"</item>
- </plurals>
- <plurals name="wifi_available_detailed">
- <item quantity="one" msgid="1634101450343277345">"Wi-Fi şəbəkəni açın"</item>
- <item quantity="other" msgid="7915895323644292768">"Açıq Wi-Fi şəbəkələri mövcuddur"</item>
- </plurals>
- <string name="wifi_available_sign_in" msgid="4029489716605255386">"Wi-Fi şəbəkəsinə daxil ol"</string>
- <string name="network_available_sign_in" msgid="8495155593358054676">"Şəbəkəyə daxil olun"</string>
- <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
- <skip />
- <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_p2p_dialog_title" msgid="97611782659324517">"Wi-Fi Direct"</string>
- <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>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Ayarlar üçün toxunun"</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>
- <string name="wifi_p2p_invitation_to_connect_title" msgid="4958803948658533637">"Qoşulmaq üçün dəvət"</string>
- <string name="wifi_p2p_from_message" msgid="570389174731951769">"Kimdən:"</string>
- <string name="wifi_p2p_to_message" msgid="248968974522044099">"Kimə:"</string>
- <string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Tələb olunan PİN kodu daxil edin:"</string>
- <string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PİN:"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="tablet" msgid="8012981257742232475">"Bu planşet <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazına qoşulan zaman Wi-Fi şəbəkəsindən müvəqqəti ayrılmış olacaq"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="default" msgid="7363907213787469151">"Bu telefon <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazına qoşulan zaman Wi-Fi şəbəkəsindən müvəqqəti ayrılmış olacaq"</string>
- <string name="select_character" msgid="3365550120617701745">"Simvol daxil edin"</string>
- <string name="sms_control_title" msgid="7296612781128917719">"SMS mesaj göndərilir"</string>
- <string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; çox sayda SMS mesaj göndərir. Bu tətbiqin mesaj göndərməyə davam etməsinə icazə verirsiniz?"</string>
- <string name="sms_control_yes" msgid="3663725993855816807">"İcazə verin"</string>
- <string name="sms_control_no" msgid="625438561395534982">"Rədd edin"</string>
- <string name="sms_short_code_confirm_message" msgid="1645436466285310855">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; &lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;/b&gt; ünvanına mesaj göndərmək istəyir."</string>
- <string name="sms_short_code_details" msgid="3492025719868078457">"Bu, mobil hesabınıza "<font fgcolor="#ffffb060">"əlavə tariflərin tətbiq olunması"</font>" ilə nəticələnə bilər."</string>
- <string name="sms_premium_short_code_details" msgid="5523826349105123687"><font fgcolor="#ffffb060">"Bu mobil hesabınızda ödənişlərə səbəb olacaq."</font></string>
- <string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"Göndər"</string>
- <string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"Ləğv et"</string>
- <string name="sms_short_code_remember_choice" msgid="5289538592272218136">"Mənim seçimimi yadda saxla"</string>
- <string name="sms_short_code_remember_undo_instruction" msgid="4960944133052287484">"Bunu sonra Ayarlarda dəyişə bilərsiniz &gt; Tətbiqlər"</string>
- <string name="sms_short_code_confirm_always_allow" msgid="3241181154869493368">"Həmişə icazə ver"</string>
- <string name="sms_short_code_confirm_never_allow" msgid="446992765774269673">"Heç vaxt icazə verməyin"</string>
- <string name="sim_removed_title" msgid="6227712319223226185">"SIM kart çıxarıldı"</string>
- <string name="sim_removed_message" msgid="2333164559970958645">"Cihazınızı etibarlı SIM kart ilə başladana kimi mobil şəbəkə əlçatmaz olacaq."</string>
- <string name="sim_done_button" msgid="827949989369963775">"Bitdi"</string>
- <string name="sim_added_title" msgid="3719670512889674693">"SİM kart əlavə edildi"</string>
- <string name="sim_added_message" msgid="6599945301141050216">"Mobil şəbəkəyə qoşulmaq üçün cihazınızı yenidən başladın."</string>
- <string name="sim_restart_button" msgid="4722407842815232347">"Yenidən başlat"</string>
- <string name="time_picker_dialog_title" msgid="8349362623068819295">"Vaxt ayarlayın"</string>
- <string name="date_picker_dialog_title" msgid="5879450659453782278">"Tarixi quraşdır"</string>
- <string name="date_time_set" msgid="5777075614321087758">"Ayarlayın"</string>
- <string name="date_time_done" msgid="2507683751759308828">"Hazırdır"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"YENİ: "</font></string>
- <string name="perms_description_app" msgid="5139836143293299417">"<xliff:g id="APP_NAME">%1$s</xliff:g> tərəfindən təmin edilib."</string>
- <string name="no_permissions" msgid="7283357728219338112">"Heç bir icazə tələb olunmur"</string>
- <string name="perm_costs_money" msgid="4902470324142151116">"bununla sizdən xərc tutula bilər"</string>
- <string name="usb_storage_activity_title" msgid="4465055157209648641">"USB toplu yaddaş"</string>
- <string name="usb_storage_title" msgid="5901459041398751495">"USB qoşuludur"</string>
- <string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Siz USB vasitəsilə kompütere bağlandınız. Kompüter və Androidinizin USB yaddaşı arasında faylları kopyalamaq istəyirsinizsə, aşağıdakı düyməyə toxunun."</string>
- <string name="usb_storage_message" product="default" msgid="805351000446037811">"Kompüterinizə USB ilə qoşulmusunuz. Faylları Androidinizin SD kartı ilə kompüteriniz arasında kopyalamaq istəyirsinizsə aşağıdakı düyməyə toxunun."</string>
- <string name="usb_storage_button_mount" msgid="1052259930369508235">"USB yaddaşı aktivləşdirin"</string>
- <string name="usb_storage_error_message" product="nosdcard" msgid="3017045217365540658">"USB yaddaşınızı USB kütləvi yaddaşı üçün istifadə edən zaman problem yarandı."</string>
- <string name="usb_storage_error_message" product="default" msgid="2876018512716970313">"SD kartınızı USB kütləvi yaddaşı üçün istifadə edən zaman problem yarandı."</string>
- <string name="usb_storage_notification_title" msgid="8175892554757216525">"USB qoşuludur"</string>
- <string name="usb_storage_notification_message" msgid="939822783828183763">"Faylları kompüterinizə kopyalamaq və ya kompüterinizdən kopyalamaq üçün toxunun."</string>
- <string name="usb_storage_stop_notification_title" msgid="2336058396663516017">"USB yaddaşı söndürün"</string>
- <string name="usb_storage_stop_notification_message" msgid="1656852098555623822">"USB yaddaşı söndürmək üçün toxunun."</string>
- <string name="usb_storage_stop_title" msgid="660129851708775853">"USB yaddaş istifadə olunur"</string>
- <string name="usb_storage_stop_message" product="nosdcard" msgid="4264025280777219521">"USB yaddaşı söndürmədən öncə Android\'in USB yaddaşını kompüterdən demontaj etdiyinizə (çıxardığınıza) əmin olun."</string>
- <string name="usb_storage_stop_message" product="default" msgid="8043969782460613114">"USB yaddaşı söndürmədən öncə Android\'in USB yaddaşını kompüterdən demontaj etdiyinizə (çıxardığınıza) əmin olun."</string>
- <string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"USB yaddaşını söndür"</string>
- <string name="usb_storage_stop_error_message" msgid="1970374898263063836">"USB yaddaşı söndürən zaman problem oldu. USB hostu demontaj etmənizi yoxlayın və yenidən cəhd edin."</string>
- <string name="dlg_confirm_kill_storage_users_title" msgid="963039033470478697">"USB yaddaşı aktivləşdirin"</string>
- <string name="dlg_confirm_kill_storage_users_text" msgid="5100428757107469454">"USB yaddaşı aktivləşdirsəniz, istifadə etdiyiniz bəzi tətbiqlər dayana bilər və USB yaddaş deaktiv edilənə qədər işləməyə bilər."</string>
- <string name="dlg_error_title" msgid="7323658469626514207">"USB əməliyyatı uğursuzdur"</string>
- <string name="dlg_ok" msgid="7376953167039865701">"OK"</string>
- <string name="usb_mtp_notification_title" msgid="3699913097391550394">"Media cihazı kimi qoşuldu"</string>
- <string name="usb_ptp_notification_title" msgid="1960817192216064833">"Kamera kimi bağlanıldı"</string>
- <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Quraşdırıcı kimi qoşulub"</string>
- <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB aksesuara qoşuldu"</string>
- <string name="usb_notification_message" msgid="2290859399983720271">"Digər USB seçimləri üçün toxunun."</string>
- <string name="extmedia_format_title" product="nosdcard" msgid="9020092196061007262">"USB yaddaşına format atılsın?"</string>
- <string name="extmedia_format_title" product="default" msgid="3648415921526526069">"SD kart format edilsin?"</string>
- <string name="extmedia_format_message" product="nosdcard" msgid="3934016853425761078">"USB yaddaşınızda yerləşdirilmiş bütün fayllar silinəcək. Bu addım geri dönülməzdir."</string>
- <string name="extmedia_format_message" product="default" msgid="14131895027543830">"Kartınızdakı bütün məlumatlar itəcək."</string>
- <string name="extmedia_format_button_format" msgid="4131064560127478695">"Format"</string>
- <string name="adb_active_notification_title" msgid="6729044778949189918">"USB sazlama qoşuludur"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB debaqı deaktivasiya etmək üçün toxunun."</string>
- <string name="select_input_method" msgid="4653387336791222978">"Daxiletmə metodunu seçin"</string>
- <string name="configure_input_methods" msgid="9091652157722495116">"Daxiletmə üsullarını ayarlayın"</string>
- <string name="use_physical_keyboard" msgid="6203112478095117625">"Fiziki klaviatura"</string>
- <string name="hardware" msgid="7517821086888990278">"Hardware"</string>
- <string name="select_keyboard_layout_notification_title" msgid="1407367017263030773">"Klaviatura sxemi seçin"</string>
- <string name="select_keyboard_layout_notification_message" msgid="4465907700449257063">"Klaviatura tərtibatı seçmək üçün toxunun."</string>
- <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCÇDEƏFGĞHXIİJKQLMNOÖPRSŞTUÜVYZ"</string>
- <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCÇDEƏFGĞHİIJKLMNOÖPQRSŞTUÜVWXYZ"</string>
- <string name="candidates_style" msgid="4333913089637062257"><u>"namizədlər"</u></string>
- <string name="ext_media_checking_notification_title" product="nosdcard" msgid="3449816005351468560">"USB yaddaş hazırlanır"</string>
- <string name="ext_media_checking_notification_title" product="default" msgid="5457603418970994050">"SD kart hazırlanır"</string>
- <string name="ext_media_checking_notification_message" msgid="8287319882926737053">"Səhvlər yoxlanılır."</string>
- <string name="ext_media_nofs_notification_title" product="nosdcard" msgid="7788040745686229307">"Boş USB yaddaşı"</string>
- <string name="ext_media_nofs_notification_title" product="default" msgid="780477838241212997">"Boş SD kart"</string>
- <string name="ext_media_nofs_notification_message" product="nosdcard" msgid="7840121067427269500">"USB yaddaş boşdur və ya sistem tərəfindən dəstəklənməyən fayl sisteminə malikdir."</string>
- <string name="ext_media_nofs_notification_message" product="default" msgid="8641065641786923604">"SD kart boşdur və ya sistem tərəfindən dəstəklənməyən fayl sisteminə malikdir."</string>
- <string name="ext_media_unmountable_notification_title" product="nosdcard" msgid="2090046769532713563">"Zədəli USB yaddaş"</string>
- <string name="ext_media_unmountable_notification_title" product="default" msgid="6410723906019100189">"Zədəli SD kart"</string>
- <string name="ext_media_unmountable_notification_message" product="nosdcard" msgid="1795917578395333280">"SD yaddaş zədələnib. Onu format etməyə çalışın."</string>
- <string name="ext_media_unmountable_notification_message" product="default" msgid="1753898567525568253">"SD kart zədələnib. Onu format etməyə çalışın."</string>
- <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"USB yaddaşı gözlənilmədən çıxarıldı"</string>
- <string name="ext_media_badremoval_notification_title" product="default" msgid="6872152882604407837">"SD kart gözlənilmədən çıxarıldı"</string>
- <string name="ext_media_badremoval_notification_message" product="nosdcard" msgid="4329848819865594241">"Məlumat itkisinin qarşısını almaq üçün USB yaddaşı çıxarmazdan əvvəl onu demontaj edin."</string>
- <string name="ext_media_badremoval_notification_message" product="default" msgid="7260183293747448241">"Data itkisinin qarşısını almaq üçün SD kartı çıxarmadan öncə demontaj edin."</string>
- <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"USB yaddaş çıxarmaq üçün təhlükəsizdir"</string>
- <string name="ext_media_safe_unmount_notification_title" product="default" msgid="6729801130790616200">"SD kart təhlükəsiz çıxarıla bilər"</string>
- <string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"Siz USB yaddaşı təhlükəsiz çıxara bilərsiniz."</string>
- <string name="ext_media_safe_unmount_notification_message" product="default" msgid="568841278138377604">"Siz SD kartı təhlükəsiz çıxara bilərsiniz."</string>
- <string name="ext_media_nomedia_notification_title" product="nosdcard" msgid="4486377230140227651">"Silinmiş USB yaddaş"</string>
- <string name="ext_media_nomedia_notification_title" product="default" msgid="8902518030404381318">"SD kart çıxarıldı"</string>
- <string name="ext_media_nomedia_notification_message" product="nosdcard" msgid="6921126162580574143">"USB yaddaş çıxarıldı. Yeni media əlavə edin."</string>
- <string name="ext_media_nomedia_notification_message" product="default" msgid="3870120652983659641">"SD kart çıxarıldı. Yenisini daxil edin."</string>
- <string name="activity_list_empty" msgid="1675388330786841066">"Uyğun gələn fəaliyyət tapılmadı."</string>
- <string name="permlab_pkgUsageStats" msgid="8787352074326748892">"komponent istifadəsi statistikasını güncəlləyir"</string>
- <string name="permdesc_pkgUsageStats" msgid="1106612424254277630">"Tətbiqə toplanmış istifadə statistikasını dəyişməyə imkan verir. Normal tətbiqlər tərəfindən istifadə olunmur."</string>
- <string name="permlab_copyProtectedData" msgid="4341036311211406692">"məzmunu kopyala"</string>
- <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Tətbiqə kontenti kopyalamaq üçün defolt konteyner servisini çağırmaq icazəsi verir. Normal tətbiqlər tərəfindən istifadə edilmir."</string>
- <string name="permlab_route_media_output" msgid="1642024455750414694">"Media çıxışını yönləndirir"</string>
- <string name="permdesc_route_media_output" msgid="4932818749547244346">"Tətbiqə media çıxışını digər xarici cihazlara yönləndirmək imkanı verir."</string>
- <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Keyguard təhlükəsiz yaddaşa çıxış"</string>
- <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Tətbiqə keguard təhlükəsiz yaddaşa çatmağa icazə verir."</string>
- <string name="permlab_control_keyguard" msgid="172195184207828387">"Klaviatura kilidinin görülməsini və gizlədilməsini idarə edir"</string>
- <string name="permdesc_control_keyguard" msgid="3043732290518629061">"Tətbiqə keguardı idarə etmək icazəsi verir."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Zoom nəzarəti üçün iki dəfə toxunun"</string>
- <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Widget əlavə edilə bilmədi."</string>
- <string name="ime_action_go" msgid="8320845651737369027">"Get"</string>
- <string name="ime_action_search" msgid="658110271822807811">"Axtar"</string>
- <string name="ime_action_send" msgid="2316166556349314424">"Göndər"</string>
- <string name="ime_action_next" msgid="3138843904009813834">"Növbəti"</string>
- <string name="ime_action_done" msgid="8971516117910934605">"Tamam"</string>
- <string name="ime_action_previous" msgid="1443550039250105948">"Əvvəlki"</string>
- <string name="ime_action_default" msgid="2840921885558045721">"İcra edin"</string>
- <string name="dial_number_using" msgid="5789176425167573586">"<xliff:g id="NUMBER">%s</xliff:g> istifadə etməklə\nnömrə yığın"</string>
- <string name="create_contact_using" msgid="4947405226788104538">"<xliff:g id="NUMBER">%s</xliff:g>istifadə edərək kontakt yaradın\n"</string>
- <string name="grant_credentials_permission_message_header" msgid="2106103817937859662">"Aşağıdakı bir və ya daha çox tətbiqlər indi və gələcəkdə hesabınıza daxil olmaq üçün icazə istəyir."</string>
- <string name="grant_credentials_permission_message_footer" msgid="3125211343379376561">"Bu istəyə izn vermək istəyirsiniz?"</string>
- <string name="grant_permissions_header_text" msgid="6874497408201826708">"Giriş sorğusu"</string>
- <string name="allow" msgid="7225948811296386551">"İcazə verin"</string>
- <string name="deny" msgid="2081879885755434506">"Rədd et"</string>
- <string name="permission_request_notification_title" msgid="6486759795926237907">"İcazə tələb olunur"</string>
- <string name="permission_request_notification_with_subtitle" msgid="8530393139639560189">\n" hesabı üçün<xliff:g id="ACCOUNT">%s</xliff:g> icazə sorğusu göndərildi."</string>
- <string name="input_method_binding_label" msgid="1283557179944992649">"Daxiletmə metodu"</string>
- <string name="sync_binding_label" msgid="3687969138375092423">"Sinxronizasiya"</string>
- <string name="accessibility_binding_label" msgid="4148120742096474641">"Əlçatımlılıq"</string>
- <string name="wallpaper_binding_label" msgid="1240087844304687662">"Divar kağızı"</string>
- <string name="chooser_wallpaper" msgid="7873476199295190279">"Divar kağızını dəyişin"</string>
- <string name="notification_listener_binding_label" msgid="2014162835481906429">"Bildiriş dinləyən"</string>
- <string name="vpn_title" msgid="19615213552042827">"VPN aktivləşdirildi"</string>
- <string name="vpn_title_long" msgid="6400714798049252294">"VPN <xliff:g id="APP">%s</xliff:g> tərəfindən aktivləşdirilib"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Şəbəkəni idarə etmək üçün toxunun."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> sessiyaya qoşuludur. Şəbəkəni idarə etmək üçün toxunun."</string>
- <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>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Konfiqurə etmək üçün toxun"</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>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Avtomobil rejimindən çıxmaq üçün toxunun."</string>
- <string name="tethered_notification_title" msgid="3146694234398202601">"Tezerinq və ya hotspot aktivdir"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Quraşdırmaq üçün toxunun."</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>
- <string name="throttle_warning_notification_title" msgid="4890894267454867276">"Yüksək mobil data istifadəsi"</string>
- <string name="throttle_warning_notification_message" msgid="3340822228599337743">"Mobil data istifadəsi haqqında daha çox öyrənmək üçün toxunun."</string>
- <string name="throttled_notification_title" msgid="6269541897729781332">"Mobil data limiti keçildi"</string>
- <string name="throttled_notification_message" msgid="5443457321354907181">"Mobil data istifadəsi haqqında daha çox öyrənmək üçün toxunun."</string>
- <string name="no_matches" msgid="8129421908915840737">"Uyğunluq yoxdur"</string>
- <string name="find_on_page" msgid="1946799233822820384">"Səhifədə tap"</string>
- <plurals name="matches_found">
- <item quantity="one" msgid="8167147081136579439">"1 uyğunluq"</item>
- <item quantity="other" msgid="4641872797067609177">"<xliff:g id="INDEX">%d</xliff:g> ədəddən <xliff:g id="TOTAL">%d</xliff:g>"</item>
- </plurals>
- <string name="action_mode_done" msgid="7217581640461922289">"Hazırdır"</string>
- <string name="progress_unmounting" product="nosdcard" msgid="3923810448507612746">"USB yaddaşı qaldırılır..."</string>
- <string name="progress_unmounting" product="default" msgid="1327894998409537190">"SD kart demontaj edilir..."</string>
- <string name="progress_erasing" product="nosdcard" msgid="4521573321524340058">"USB yaddaş silinir..."</string>
- <string name="progress_erasing" product="default" msgid="6596988875507043042">"SD kart silinir..."</string>
- <string name="format_error" product="nosdcard" msgid="6299769563624776948">"USB yaddaşı silinə bilmədi."</string>
- <string name="format_error" product="default" msgid="7315248696644510935">"SD kartı silmək mümkün olmadı."</string>
- <string name="media_bad_removal" msgid="7960864061016603281">"SD kart demontaj edilmədən öncə çıxarıldı."</string>
- <string name="media_checking" product="nosdcard" msgid="418188720009569693">"USB yaddaş hazırda yoxlanılır."</string>
- <string name="media_checking" product="default" msgid="7334762503904827481">"SD kart hazırda yoxlanılır."</string>
- <string name="media_removed" msgid="7001526905057952097">"SD kart çıxarılıb."</string>
- <string name="media_shared" product="nosdcard" msgid="5830814349250834225">"SD kart hazırda kompüter tərəfindən istifadə edilir."</string>
- <string name="media_shared" product="default" msgid="5706130568133540435">"SD kart hal-hazırda kompüter tərəfindən istifadə edilir."</string>
- <string name="media_unknown_state" msgid="729192782197290385">"Naməlum vəziyyətdə xarici media."</string>
- <string name="share" msgid="1778686618230011964">"Paylaşın"</string>
- <string name="find" msgid="4808270900322985960">"Tapın"</string>
- <string name="websearch" msgid="4337157977400211589">"Veb Axtarış"</string>
- <string name="find_next" msgid="5742124618942193978">"Sonrakını tap"</string>
- <string name="find_previous" msgid="2196723669388360506">"Əvvəlkini tap"</string>
- <string name="gpsNotifTicker" msgid="5622683912616496172">"<xliff:g id="NAME">%s</xliff:g> tərəfindən məkan sorğusu"</string>
- <string name="gpsNotifTitle" msgid="5446858717157416839">"Məkan sorğusu"</string>
- <string name="gpsNotifMessage" msgid="1374718023224000702">"<xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>) tərəfindən tələb edilib"</string>
- <string name="gpsVerifYes" msgid="2346566072867213563">"Bəli"</string>
- <string name="gpsVerifNo" msgid="1146564937346454865">"Xeyr"</string>
- <string name="sync_too_many_deletes" msgid="5296321850662746890">"Limiti keçəni silin"</string>
- <string name="sync_too_many_deletes_desc" msgid="496551671008694245">"<xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g> üçün <xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> silinmiş fayl var, <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g> hesabı. Nə etmək istəyirsiniz?"</string>
- <string name="sync_really_delete" msgid="2572600103122596243">"Elementləri sil"</string>
- <string name="sync_undo_deletes" msgid="2941317360600338602">"Silinənləri geri qaytar"</string>
- <string name="sync_do_nothing" msgid="3743764740430821845">"İndilik heç nə etmə"</string>
- <string name="choose_account_label" msgid="5655203089746423927">"Hesab seçin"</string>
- <string name="add_account_label" msgid="2935267344849993553">"Hesab əlavə et"</string>
- <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>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> toxunun və basaraq 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>
- <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Saatı artırın"</string>
- <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Saatı azaldın"</string>
- <string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"PM qurun"</string>
- <string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"AM qurun"</string>
- <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Artma ayı"</string>
- <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Ayı azaldın"</string>
- <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Artma günü"</string>
- <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Azalma günü"</string>
- <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Artım ili"</string>
- <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Azalma ili"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Ləğv et"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Sil"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Hazırdır"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Rejim dəyişikliyi"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Daxil olun"</string>
- <string name="activitychooserview_choose_application" msgid="2125168057199941199">"Tətbiq seçin"</string>
- <string name="shareactionprovider_share_with" msgid="806688056141131819">"Bununla paylaşın"</string>
- <string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ilə paylaşın"</string>
- <string name="content_description_sliding_handle" msgid="415975056159262248">"Sürüşən qulp. Toxunaraq basılı tutun."</string>
- <string name="description_direction_up" msgid="7169032478259485180">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> üçün yuxarı sürüşdürün."</string>
- <string name="description_direction_down" msgid="5087739728639014595">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> üçün aşağı sürüşdürün."</string>
- <string name="description_direction_left" msgid="7207478719805562165">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> üçün sola sürüşdür."</string>
- <string name="description_direction_right" msgid="8034433242579600980">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> üçün sağa sürüşdür."</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"Kilidi aç"</string>
- <string name="description_target_camera" msgid="969071997552486814">"Kamera"</string>
- <string name="description_target_silent" msgid="893551287746522182">"Səssiz"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"Səs açıqdır"</string>
- <string name="description_target_search" msgid="3091587249776033139">"Axtar"</string>
- <string name="description_target_unlock_tablet" msgid="3833195335629795055">"Kilidi açmaq üçün vurun."</string>
- <string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Parolların səsləndirilməsi üçün qulaqlıqları taxın."</string>
- <string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Nöqtə."</string>
- <string name="action_bar_home_description" msgid="5293600496601490216">"Evə gedin"</string>
- <string name="action_bar_up_description" msgid="2237496562952152589">"Yuxarı gedin"</string>
- <string name="action_menu_overflow_description" msgid="2295659037509008453">"Əlavə seçimlər"</string>
- <string name="action_bar_home_description_format" msgid="7965984360903693903">"%1$s, %2$s"</string>
- <string name="action_bar_home_subtitle_description_format" msgid="6985546530471780727">"%1$s, %2$s, %3$s"</string>
- <string name="storage_internal" msgid="4891916833657929263">"Daxili yaddaş"</string>
- <string name="storage_sd_card" msgid="3282948861378286745">"SD kart"</string>
- <string name="storage_usb" msgid="3017954059538517278">"USB yaddaş"</string>
- <string name="extract_edit_menu_button" msgid="8940478730496610137">"Redaktə et"</string>
- <string name="data_usage_warning_title" msgid="1955638862122232342">"Data istifadə xəbərdarlığı"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"İstifadə və ayarları görmək üçün toxunun"</string>
- <string name="data_usage_3g_limit_title" msgid="7093334419518706686">"2G-3G data deaktivdir"</string>
- <string name="data_usage_4g_limit_title" msgid="7636489436819470761">"4G data deaktiv edildi"</string>
- <string name="data_usage_mobile_limit_title" msgid="7869402519391631884">"Mobil data deaktivdir"</string>
- <string name="data_usage_wifi_limit_title" msgid="8992154736441284865">"Wi-Fi data deaktiv edildi"</string>
- <string name="data_usage_limit_body" msgid="3317964706973601386">"Aktivləşdirmək üçün toxunun."</string>
- <string name="data_usage_3g_limit_snoozed_title" msgid="7026739121138005231">"2G-3G data limiti aşılıb"</string>
- <string name="data_usage_4g_limit_snoozed_title" msgid="1106562779311209039">"4G data limiti keçildi"</string>
- <string name="data_usage_mobile_limit_snoozed_title" msgid="279240572165412168">"Mobil data limiti keçildi"</string>
- <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>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Məhdudiyyəti aradan qaldırmaq üçün toxunun"</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>
- <string name="common_name" msgid="2233209299434172646">"Ümumi ad:"</string>
- <string name="org_name" msgid="6973561190762085236">"Təşkilat:"</string>
- <string name="org_unit" msgid="7265981890422070383">"Təşkilati vahid:"</string>
- <string name="issued_by" msgid="2647584988057481566">"Tərəfindən verilib:"</string>
- <string name="validity_period" msgid="8818886137545983110">"Keçərlilik:"</string>
- <string name="issued_on" msgid="5895017404361397232">"Dərc olunub:"</string>
- <string name="expires_on" msgid="3676242949915959821">"Bitmə vaxtı:"</string>
- <string name="serial_number" msgid="758814067660862493">"Seriya nömrəsi:"</string>
- <string name="fingerprints" msgid="4516019619850763049">"Barmaq izləri:"</string>
- <string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-256 barmaq izi:"</string>
- <string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1 barmaq izi:"</string>
- <string name="activity_chooser_view_see_all" msgid="4292569383976636200">"Hamısını seçın"</string>
- <string name="activity_chooser_view_dialog_title_default" msgid="4710013864974040615">"Fəaliyyəti seçin"</string>
- <string name="share_action_provider_share_with" msgid="5247684435979149216">"Bununla paylaşın"</string>
- <string name="list_delimeter" msgid="3975117572185494152">", "</string>
- <string name="sending" msgid="3245653681008218030">"Göndərilir..."</string>
- <string name="launchBrowserDefault" msgid="2057951947297614725">"Brauzer işə salınsın?"</string>
- <string name="SetupCallDefault" msgid="5834948469253758575">"Zəngi qəbul edək?"</string>
- <string name="activity_resolver_use_always" msgid="8017770747801494933">"Həmişə"</string>
- <string name="activity_resolver_use_once" msgid="2404644797149173758">"Sadəcə bir dəfə"</string>
- <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Planşet"</string>
- <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Telefon"</string>
- <string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Qulaqlıq"</string>
- <string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Dok spikerlər"</string>
- <string name="default_media_route_name_hdmi" msgid="2450970399023478055">"HDMI"</string>
- <string name="default_audio_route_category_name" msgid="3722811174003886946">"Sistem"</string>
- <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth audio"</string>
- <string name="wireless_display_route_description" msgid="9070346425023979651">"Simsiz ekran"</string>
- <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Hazırdır"</string>
- <string name="media_route_button_content_description" msgid="5758553567065145276">"Media çıxışı"</string>
- <string name="media_route_status_scanning" msgid="7279908761758293783">"Skan edilir..."</string>
- <string name="media_route_status_connecting" msgid="6422571716007825440">"Qoşulur..."</string>
- <string name="media_route_status_available" msgid="6983258067194649391">"Əlçatımlı"</string>
- <string name="media_route_status_not_available" msgid="6739899962681886401">"Əlçatımlı deyil"</string>
- <string name="media_route_status_in_use" msgid="4533786031090198063">"İstifadə olunur"</string>
- <string name="display_manager_built_in_display_name" msgid="2583134294292563941">"Daxili ekran"</string>
- <string name="display_manager_hdmi_display_name" msgid="1555264559227470109">"HDMI Ekran"</string>
- <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Örtük #<xliff:g id="ID">%1$d</xliff:g>"</string>
- <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string>
- <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", təhlükəsiz"</string>
- <string name="wifi_display_notification_title" msgid="2223050649240326557">"Simsiz ekran qoşulub"</string>
- <string name="wifi_display_notification_message" msgid="4498802012464170685">"Bu ekran digər cihazda göstərir"</string>
- <string name="wifi_display_notification_disconnect" msgid="6183754463561153372">"Bağlantını kəsin"</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"Təcili zəng"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Şablonu unutmuşam"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"Yanlış Model"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"Yanlış Şifrə"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN səhvdir"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"<xliff:g id="NUMBER">%1$d</xliff:g> saniyə sonra yenidən cəhd edin."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"Şablonunuzu çəkin"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"SIM PIN kodu daxil edin"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"PİN kodu daxil edin"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"Parol daxil edin"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM indi deaktivdir. Davam etmək üçün PUK kodu daxil edin. Əlavə məlumat üçün operatora müraciət edin."</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"İstədiyiniz PİN kodu daxil edin"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"İstədiyiniz PIN kodu təsdiqləyin"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SİM kartın kilidi açılır..."</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Yanlış PİN kod."</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"4-dən 8-ə qədər rəqəmi olan PIN yazın."</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK kod 8 rəqəm və ya daha çox olmalıdır."</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"Düzgün PUK kodu yenidən daxil edin. Təkrarlanan cəhdlər SIM\'i birdəfəlik sıradan çıxaracaq."</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN kodları uyğun deyil"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Həddindən çox cəhd edildi!"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"Kilidi açmaq üçün Google hesabınız ilə daxil olun."</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"İstifadəçi adı (e-poçt)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"Şifrə"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"Daxil ol"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"Yanlış istifadəçi adı və ya parol."</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"İstifadəçi adınızı və ya parolunuzu unutmusunuz?\n "<b>"google.com/accounts/recovery"</b>" linkinə daxil olun."</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"Hesab yoxlanılır..."</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"PIN kodunuzu <xliff:g id="NUMBER_0">%d</xliff:g> dəfə yanlış daxil etdiniz.\n\n <xliff:g id="NUMBER_1">%d</xliff:g> saniyə ərzində yenidən yoxlayın"</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Şifrənizi <xliff:g id="NUMBER_0">%d</xliff:g> dəfə yanlış daxil etdiniz. \n\n <xliff:g id="NUMBER_1">%d</xliff:g> saniyə ərzində yenidən yoxlayın."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Modelinizi <xliff:g id="NUMBER_0">%d</xliff:g> dəfə yanlış çəkmisiniz.\n\n <xliff:g id="NUMBER_1">%d</xliff:g> saniyə ərzində yenidən yoxlayın"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Siz planşet kilidini açmaq üçün <xliff:g id="NUMBER_0">%d</xliff:g> dəfə uğursuz cəhd etmisiniz. <xliff:g id="NUMBER_1">%d</xliff:g> dəfə də uğursuz cəhd etsəniz, planşet fabrik ayarlarına sıfırlanacaq və bütün məlumatlarınız itəcək."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Siz telefon kilidini açmaq üçün <xliff:g id="NUMBER_0">%d</xliff:g> dəfə uğursuz cəhd etmisiniz. <xliff:g id="NUMBER_1">%d</xliff:g> dəfə də uğursuz cəhd etsəniz, telefon fabrik ayarlarına sıfırlanacaq və bütün məlumatlarınız itəcək."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Siz planşet kilidini açmaq üçün <xliff:g id="NUMBER">%d</xliff:g> dəfə uğursuz cəhd etmisiniz. Planşet fabrik ayarlarına sıfırlanacaq."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Siz telefonun kilidini açmaq üçün <xliff:g id="NUMBER">%d</xliff:g> yanlış cəhd etmisiniz. Telefon artıq defolt zavod halına sıfırlanacaq."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Siz kilidi açmaq üçün şablonu <xliff:g id="NUMBER_0">%d</xliff:g> dəfə səhv çəkdiniz. <xliff:g id="NUMBER_1">%d</xliff:g> daha uğursuz cəhddən sonra planşetinizin kilidini e-poçt hesabınızla açmaq tələb olunacaq.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> saniyə ərzində bir daha yoxlayın."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Siz artıq modeli <xliff:g id="NUMBER_0">%d</xliff:g> dəfə yanlış daxil etmisiniz.<xliff:g id="NUMBER_1">%d</xliff:g> dəfə də yanlış daxil etsəniz, telefonun kilidinin açılması üçün elektron poçt ünvanınız tələb olunacaq.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> saniyə ərzində yenidən cəhd edin."</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" - "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Yığışdır"</string>
- <string name="safe_media_volume_warning" product="default" msgid="7324161939475478066">"Səs gücü tövsiyə edilən səviyyədən artırılsın?\nUzun müddət yüksək səs gücü ilə dinləmə Sizin eşitmə qabiliyyətinizə mənfi təsir edə bilər."</string>
- <string name="continue_to_enable_accessibility" msgid="1626427372316070258">"Əlçatımlığı aktivləşdirmək üçün iki barmağınızı basılı saxlayın."</string>
- <string name="accessibility_enabled" msgid="1381972048564547685">"Əlçatımlılıq aktivləşdirildi"</string>
- <string name="enable_accessibility_canceled" msgid="3833923257966635673">"Giriş imkanı ləğv edilib."</string>
- <string name="user_switched" msgid="3768006783166984410">"Cari istifadəçi <xliff:g id="NAME">%1$s</xliff:g>."</string>
- <string name="owner_name" msgid="2716755460376028154">"Sahib"</string>
- <string name="error_message_title" msgid="4510373083082500195">"Xəta"</string>
- <string name="app_no_restricted_accounts" msgid="5739463249673727736">"Bu tətbiq məhdud profillər üçün hesabları dəstəkləmir."</string>
- <string name="app_not_found" msgid="3429141853498927379">"Bu əməliyyatı idarə etmək üçün heç bir tətbiq tapılmadı."</string>
- <string name="revoke" msgid="5404479185228271586">"Ləğv edin"</string>
- <string name="mediaSize_iso_a0" msgid="7875427489420821793">"ISO A0"</string>
- <string name="mediaSize_iso_a1" msgid="3760734499050875356">"ISO A1"</string>
- <string name="mediaSize_iso_a2" msgid="5973266378020144382">"ISO A2"</string>
- <string name="mediaSize_iso_a3" msgid="1373407105687300884">"ISO A3"</string>
- <string name="mediaSize_iso_a4" msgid="6689772807982597254">"ISO A4"</string>
- <string name="mediaSize_iso_a5" msgid="5353549652015741040">"ISO A5"</string>
- <string name="mediaSize_iso_a6" msgid="8585038048674911907">"ISO A6"</string>
- <string name="mediaSize_iso_a7" msgid="6641836716963839119">"ISO A7"</string>
- <string name="mediaSize_iso_a8" msgid="7571139437465693355">"ISO A8"</string>
- <string name="mediaSize_iso_a9" msgid="1378455891957115079">"ISO A9"</string>
- <string name="mediaSize_iso_a10" msgid="2480747457429475344">"ISO A10"</string>
- <string name="mediaSize_iso_b0" msgid="3965935097661108039">"ISO B0"</string>
- <string name="mediaSize_iso_b1" msgid="2505753285010115437">"ISO B1"</string>
- <string name="mediaSize_iso_b2" msgid="8763874709859458453">"ISO B2"</string>
- <string name="mediaSize_iso_b3" msgid="4210506688191764076">"ISO B3"</string>
- <string name="mediaSize_iso_b4" msgid="5749404165888526034">"B4 ISO"</string>
- <string name="mediaSize_iso_b5" msgid="7640627414621904733">"ISO B5"</string>
- <string name="mediaSize_iso_b6" msgid="7342988864712748544">"ISO B6"</string>
- <string name="mediaSize_iso_b7" msgid="5069844065235382429">"ISO B7"</string>
- <string name="mediaSize_iso_b8" msgid="7316818922278779774">"ISO B8"</string>
- <string name="mediaSize_iso_b9" msgid="5414727094026532341">"ISO B9"</string>
- <string name="mediaSize_iso_b10" msgid="5251253731832048185">"ISO B10"</string>
- <string name="mediaSize_iso_c0" msgid="4003138342671964217">"ISO C0"</string>
- <string name="mediaSize_iso_c1" msgid="1935188063393553008">"ISO C1"</string>
- <string name="mediaSize_iso_c2" msgid="3197307969712069904">"ISO C2"</string>
- <string name="mediaSize_iso_c3" msgid="4335826087321913508">"ISO C3"</string>
- <string name="mediaSize_iso_c4" msgid="3745639598281015005">"ISO C4"</string>
- <string name="mediaSize_iso_c5" msgid="8269457765822791013">"ISO C5"</string>
- <string name="mediaSize_iso_c6" msgid="566666105260346930">"ISO C6"</string>
- <string name="mediaSize_iso_c7" msgid="8678413180782608498">"ISO C7"</string>
- <string name="mediaSize_iso_c8" msgid="8392376206627041730">"ISO C8"</string>
- <string name="mediaSize_iso_c9" msgid="9191613372324845405">"ISO C9"</string>
- <string name="mediaSize_iso_c10" msgid="7327709699184920822">"ISO C10"</string>
- <string name="mediaSize_na_letter" msgid="4191805615829472953">"Məktub"</string>
- <string name="mediaSize_na_gvrnmt_letter" msgid="7853382192649405507">"Hökumət Məktubu"</string>
- <string name="mediaSize_na_legal" msgid="6697982988283823150">"Hüquqi"</string>
- <string name="mediaSize_na_junior_legal" msgid="3727743969902758948">"Kiçik Hüquq"</string>
- <string name="mediaSize_na_ledger" msgid="281871464896601236">"Qovluq"</string>
- <string name="mediaSize_na_tabloid" msgid="5775966416333578127">"Qısa"</string>
- <string name="write_fail_reason_cancelled" msgid="7091258378121627624">"Ləğv edildi"</string>
- <string name="write_fail_reason_cannot_write" msgid="8132505417935337724">"Kontent yazmna xətası"</string>
- <string name="reason_unknown" msgid="6048913880184628119">"naməlum"</string>
- <string name="restr_pin_enter_admin_pin" msgid="783643731895143970">"Administrator PIN kodunu daxil edin"</string>
- <string name="restr_pin_enter_pin" msgid="3395953421368476103">"PIN daxil edin"</string>
- <string name="restr_pin_incorrect" msgid="8571512003955077924">"Səhv"</string>
- <string name="restr_pin_enter_old_pin" msgid="1462206225512910757">"Cari PIN"</string>
- <string name="restr_pin_enter_new_pin" msgid="5959606691619959184">"Yeni PIN"</string>
- <string name="restr_pin_confirm_pin" msgid="8501523829633146239">"Yeni PIN\'i təsdiq edin"</string>
- <string name="restr_pin_create_pin" msgid="8017600000263450337">"Dəyişmə məhdudiyyətləri üçün PİN yaradın"</string>
- <string name="restr_pin_error_doesnt_match" msgid="2224214190906994548">"PİN uyğun gəlmir. Yenidən cəhd edin."</string>
- <string name="restr_pin_error_too_short" msgid="8173982756265777792">"PİN çox qısadır. Ən azı 4 rəqəm olmalıdır."</string>
- <plurals name="restr_pin_countdown">
- <item quantity="one" msgid="311050995198548675">"1 saniyə sonra təkrar yoxlayın"</item>
- <item quantity="other" msgid="4730868920742952817">"<xliff:g id="COUNT">%d</xliff:g> saniyə sonra təkrar yoxlayın"</item>
- </plurals>
- <string name="restr_pin_try_later" msgid="973144472490532377">"Daha sonra yenidən yoxlayın."</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Paneli göstərmək üçün ekranın küncünü sürüşdürün"</string>
-</resources>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
deleted file mode 100644
index 82bf40049106..000000000000
--- a/core/res/res/values-az/strings.xml
+++ /dev/null
@@ -1,1583 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="byteShort" msgid="8340973892742019101">"B"</string>
- <string name="kilobyteShort" msgid="5973789783504771878">"KB"</string>
- <string name="megabyteShort" msgid="6355851576770428922">"MB"</string>
- <string name="gigabyteShort" msgid="3259882455212193214">"GB"</string>
- <string name="terabyteShort" msgid="231613018159186962">"TB"</string>
- <string name="petabyteShort" msgid="5637816680144990219">"PB"</string>
- <string name="fileSizeSuffix" msgid="9164292791500531949">"<xliff:g id="NUMBER">%1$s</xliff:g><xliff:g id="UNIT">%2$s</xliff:g>"</string>
- <string name="untitled" msgid="4638956954852782576">"Başlıqsız"</string>
- <string name="ellipsis" msgid="7899829516048813237">"..."</string>
- <string name="ellipsis_two_dots" msgid="1228078994866030736">"‥"</string>
- <string name="emptyPhoneNumber" msgid="7694063042079676517">"(Telefon nömrəsi yoxdur)"</string>
- <string name="unknownName" msgid="2277556546742746522">"(Naməlum)"</string>
- <string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"Səsli poçt"</string>
- <string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN1"</string>
- <string name="mmiError" msgid="5154499457739052907">"Bağlantı problemi və ya yalnış MM kodu."</string>
- <string name="mmiFdnError" msgid="5224398216385316471">"Əməliyyat yalnız sabit nömrələrə yığımla məhdudlaşıb."</string>
- <string name="serviceEnabled" msgid="8147278346414714315">"Servis işə salındı."</string>
- <string name="serviceEnabledFor" msgid="6856228140453471041">"Xidmət aktiv edilmişdir:"</string>
- <string name="serviceDisabled" msgid="1937553226592516411">"Xidmət deaktiv edilib."</string>
- <string name="serviceRegistered" msgid="6275019082598102493">"Qeydiyyat uğurlu oldu."</string>
- <string name="serviceErased" msgid="1288584695297200972">"Silinmə uğurlu olmuşdur."</string>
- <string name="passwordIncorrect" msgid="7612208839450128715">"Yanlış parol"</string>
- <string name="mmiComplete" msgid="8232527495411698359">"MMI tamamdır."</string>
- <string name="badPin" msgid="9015277645546710014">"Daxil etdiyiniz köhnə PİN düzgün deyil."</string>
- <string name="badPuk" msgid="5487257647081132201">"Daxil etdiyiniz PUK düzgün deyil."</string>
- <string name="mismatchPin" msgid="609379054496863419">"Daxil etdiyiniz PİN kodlar uyğun gəlmir."</string>
- <string name="invalidPin" msgid="3850018445187475377">"4-dən 8-ə qədər rəqəmi olan PIN yazın."</string>
- <string name="invalidPuk" msgid="8761456210898036513">"8 və daha çox rəqəmi olan PUK yazın."</string>
- <string name="needPuk" msgid="919668385956251611">"Sizin SİM kart PUK ilə kilidlənib. Onu açmaq üçün PUK kodu yazın."</string>
- <string name="needPuk2" msgid="4526033371987193070">"SIM kartın kilidini açmaq üçün PUK2 yazın"</string>
- <string name="imei" msgid="2625429890869005782">"IMEI"</string>
- <string name="meid" msgid="4841221237681254195">"MEID"</string>
- <string name="ClipMmi" msgid="6952821216480289285">"Daxil olan zəng edənin ID\'si"</string>
- <string name="ClirMmi" msgid="7784673673446833091">"Gedən Zəng ID"</string>
- <string name="CfMmi" msgid="5123218989141573515">"Zəng yönləndirmə"</string>
- <string name="CwMmi" msgid="9129678056795016867">"Zəng gözləyir"</string>
- <string name="BaMmi" msgid="455193067926770581">"Zəng qadağası"</string>
- <string name="PwdMmi" msgid="7043715687905254199">"Parolu dəyiş"</string>
- <string name="PinMmi" msgid="3113117780361190304">"PİN dəyişmək"</string>
- <string name="CnipMmi" msgid="3110534680557857162">"Hazırdakı nömrəyə zəng edilir"</string>
- <string name="CnirMmi" msgid="3062102121430548731">"Zənglərin sayı məhdudlaşdırılıb"</string>
- <string name="ThreeWCMmi" msgid="9051047170321190368">"Üç yollu zəng"</string>
- <string name="RuacMmi" msgid="7827887459138308886">"Xoşagəlməz zənglərdən imtina"</string>
- <string name="CndMmi" msgid="3116446237081575808">"Çatdırılma zəngi"</string>
- <string name="DndMmi" msgid="1265478932418334331">"Narahat etməyin"</string>
- <string name="CLIRDefaultOnNextCallOn" msgid="429415409145781923">"Adətən zəng edənin ID\'si məhdudlaşdırılır. Növbəti zəng: Məhdudlaşdırılıb"</string>
- <string name="CLIRDefaultOnNextCallOff" msgid="3092918006077864624">"Adətən zəng edənin ID\'si məhdudlaşdırılır. Növbəti zəng: Məhdudlaşdırılmayıb"</string>
- <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"Adətən zəng edənin ID\'si məhdudlaşdırılmır. Növbəti zəng: Məhdudlaşdırılıb"</string>
- <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"Adətən zəng edənin ID\'si məhdudlaşdırılmır. Növbəti zəng: Məhdudlaşdırılmayıb"</string>
- <string name="serviceNotProvisioned" msgid="8614830180508686666">"Xidmət təmin edilməyib."</string>
- <string name="CLIRPermanent" msgid="3377371145926835671">"Siz zəng edənin ID nizamlarını dəyişə bilməzsiz."</string>
- <string name="RestrictedChangedTitle" msgid="5592189398956187498">"Məhdudlaşdırılmış keçid dəyişdi"</string>
- <string name="RestrictedOnData" msgid="8653794784690065540">"Data xidmət bağlıdır."</string>
- <string name="RestrictedOnEmergency" msgid="6581163779072833665">"Təcili xidmət bağlıdır."</string>
- <string name="RestrictedOnNormal" msgid="4953867011389750673">"Səs xidməti bağlıdır."</string>
- <string name="RestrictedOnAllVoice" msgid="3396963652108151260">"Bütün Səs xidmətləri bağlıdır"</string>
- <string name="RestrictedOnSms" msgid="8314352327461638897">"SMS xidməti bloklanıb."</string>
- <string name="RestrictedOnVoiceData" msgid="996636487106171320">"Səs/data xidmətləri bloklanıb."</string>
- <string name="RestrictedOnVoiceSms" msgid="1888588152792023873">"Səs/SMS xidmətləri bloklanıb."</string>
- <string name="RestrictedOnAll" msgid="5643028264466092821">"Bütün səs/data/SMS xidmətləri bağlıdır."</string>
- <string name="serviceClassVoice" msgid="1258393812335258019">"Səs"</string>
- <string name="serviceClassData" msgid="872456782077937893">"Məlumat"</string>
- <string name="serviceClassFAX" msgid="5566624998840486475">"FAKS"</string>
- <string name="serviceClassSMS" msgid="2015460373701527489">"SMS"</string>
- <string name="serviceClassDataAsync" msgid="4523454783498551468">"Async"</string>
- <string name="serviceClassDataSync" msgid="7530000519646054776">"Sinx"</string>
- <string name="serviceClassPacket" msgid="6991006557993423453">"Paket"</string>
- <string name="serviceClassPAD" msgid="3235259085648271037">"PAD"</string>
- <string name="roamingText0" msgid="7170335472198694945">"Rominq göstəricisi işləkdir"</string>
- <string name="roamingText1" msgid="5314861519752538922">"Rominq göstəricisi işlək deyil"</string>
- <string name="roamingText2" msgid="8969929049081268115">"Rominq göstəricisi yanır"</string>
- <string name="roamingText3" msgid="5148255027043943317">"Qonşuluqdan Kənar"</string>
- <string name="roamingText4" msgid="8808456682550796530">"Binadan kənar"</string>
- <string name="roamingText5" msgid="7604063252850354350">"Rominq - Arzuolunan sistem"</string>
- <string name="roamingText6" msgid="2059440825782871513">"Rominq - Mümkün sistem"</string>
- <string name="roamingText7" msgid="7112078724097233605">"Rominq - Alyans partnyoru"</string>
- <string name="roamingText8" msgid="5989569778604089291">"Rominq - Premium partnyor"</string>
- <string name="roamingText9" msgid="7969296811355152491">"Rouminq - Tam Xidmət Funksionallığı"</string>
- <string name="roamingText10" msgid="3992906999815316417">"Rouminq - Qismən Xidmət Funksionallığı"</string>
- <string name="roamingText11" msgid="4154476854426920970">"Rouminq Banneri Açıqdır"</string>
- <string name="roamingText12" msgid="1189071119992726320">"Roaming Banner Off"</string>
- <string name="roamingTextSearching" msgid="8360141885972279963">"Xidmət axtarılır"</string>
- <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Yönləndirilmədi"</string>
- <string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string>
- <string name="cfTemplateForwardedTime" msgid="9206251736527085256">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g> <xliff:g id="TIME_DELAY">{2}</xliff:g> saniyə sonra"</string>
- <string name="cfTemplateRegistered" msgid="5073237827620166285">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Yönləndirilmədi"</string>
- <string name="cfTemplateRegisteredTime" msgid="6781621964320635172">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Yönləndirilmədi"</string>
- <string name="fcComplete" msgid="3118848230966886575">"Özəllik kodu tamamlandı."</string>
- <string name="fcError" msgid="3327560126588500777">"Əlaqə problemi və ya yanlış funksiya kodu."</string>
- <string name="httpErrorOk" msgid="1191919378083472204">"OK"</string>
- <string name="httpError" msgid="7956392511146698522">"Şəbəkə xətası var idi."</string>
- <string name="httpErrorLookup" msgid="4711687456111963163">"URL tapıla bilmədi."</string>
- <string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"Sayt autentifikasiya sxemi dəstəklənmir."</string>
- <string name="httpErrorAuth" msgid="1435065629438044534">"Təsdiq edilə bilmədi."</string>
- <string name="httpErrorProxyAuth" msgid="1788207010559081331">"Proksi server vasitəsilə təsdiqlənmə uğursuz oldu."</string>
- <string name="httpErrorConnect" msgid="8714273236364640549">"Serverə qoşula bilmədi."</string>
- <string name="httpErrorIO" msgid="2340558197489302188">"Serverlə əlaqə alınmadı. Sonra cəhd edin."</string>
- <string name="httpErrorTimeout" msgid="4743403703762883954">"Server ilə olan əlaqə zaman aşımına məruz qaldı."</string>
- <string name="httpErrorRedirectLoop" msgid="8679596090392779516">"Bu səhifədə həddindən çox server yönləndirilmələri var."</string>
- <string name="httpErrorUnsupportedScheme" msgid="5015730812906192208">"Protokol dəstəklənmir."</string>
- <string name="httpErrorFailedSslHandshake" msgid="96549606000658641">"Güvənli bağlantı yaradıla bilmədi."</string>
- <string name="httpErrorBadUrl" msgid="3636929722728881972">"URL yanlış olduğu üçün səhifəni açmaq mümkün olmadı."</string>
- <string name="httpErrorFile" msgid="2170788515052558676">"Fayla giriş baş tutmadı."</string>
- <string name="httpErrorFileNotFound" msgid="6203856612042655084">"Tələb olunan fayl tapılmadı."</string>
- <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Həddindən çox sorğu işlənilir. Daha sonra yoxlayın."</string>
- <string name="notification_title" msgid="8967710025036163822">"<xliff:g id="ACCOUNT">%1$s</xliff:g> üçün giriş xətası"</string>
- <string name="contentServiceSync" msgid="8353523060269335667">"Sinxronlaşdırma"</string>
- <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Sinxronlaşdırma"</string>
- <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Həddindən çox <xliff:g id="CONTENT_TYPE">%s</xliff:g> silinmələri var."</string>
- <string name="low_memory" product="tablet" msgid="6494019234102154896">"Planşetin yaddaşı doludur. Boş yer üçün bəzi faylları silin."</string>
- <string name="low_memory" product="default" msgid="3475999286680000541">"Telefonun yaddaşı doludur. Boş yer üçün bəzi faylları silin."</string>
- <string name="me" msgid="6545696007631404292">"Mən"</string>
- <string name="power_dialog" product="tablet" msgid="8545351420865202853">"Planşet seçimləri"</string>
- <string name="power_dialog" product="default" msgid="1319919075463988638">"Telefon seçimləri"</string>
- <string name="silent_mode" msgid="7167703389802618663">"Səssiz rejim"</string>
- <string name="turn_on_radio" msgid="3912793092339962371">"Simsizi işə salın"</string>
- <string name="turn_off_radio" msgid="8198784949987062346">"Simsiz rabitəni söndürün"</string>
- <string name="screen_lock" msgid="799094655496098153">"Ekran kilidi"</string>
- <string name="power_off" msgid="4266614107412865048">"Söndür"</string>
- <string name="silent_mode_silent" msgid="319298163018473078">"Zəng deaktivdir"</string>
- <string name="silent_mode_vibrate" msgid="7072043388581551395">"Zəng vibrasiyadadır"</string>
- <string name="silent_mode_ring" msgid="8592241816194074353">"Zəngvuran açıqdır"</string>
- <string name="shutdown_progress" msgid="2281079257329981203">"Söndürülür..."</string>
- <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Planşetiniz sönəcək."</string>
- <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Telefonunuz sönəcək."</string>
- <string name="shutdown_confirm_question" msgid="2906544768881136183">"Söndürmək istəyirsiz?"</string>
- <string name="reboot_safemode_title" msgid="7054509914500140361">"Təhlükəsiz rejimdə yenidən başlayın"</string>
- <string name="reboot_safemode_confirm" msgid="55293944502784668">"Təhlükəsiz rejimdə yenidən başlamaq istəyirsiniz mi? Bu, quraşdırdığınız bütün üçüncü tərəf tətbiqlərini deaktiv edəcək."</string>
- <string name="recent_tasks_title" msgid="3691764623638127888">"Son"</string>
- <string name="no_recent_tasks" msgid="8794906658732193473">"Heç bir son tətbiq yoxdur."</string>
- <string name="global_actions" product="tablet" msgid="408477140088053665">"Planşet seçimləri"</string>
- <string name="global_actions" product="default" msgid="2406416831541615258">"Telefon seçimləri"</string>
- <string name="global_action_lock" msgid="2844945191792119712">"Ekran kilidi"</string>
- <string name="global_action_power_off" msgid="4471879440839879722">"Söndür"</string>
- <string name="global_action_bug_report" msgid="7934010578922304799">"Baq hesabatı"</string>
- <string name="bugreport_title" msgid="2667494803742548533">"Baqı xəbər verin"</string>
- <string name="bugreport_message" msgid="398447048750350456">"Bu, sizin hazırkı cihaz durumu haqqında məlumat toplayacaq ki, elektron məktub şəklində göndərsin. Baq raportuna başlamaq üçün bir az vaxt lazım ola bilər, bir az səbr edin."</string>
- <string name="global_action_toggle_silent_mode" msgid="8219525344246810925">"Səssiz rejim"</string>
- <string name="global_action_silent_mode_on_status" msgid="3289841937003758806">"Səs qapalıdır"</string>
- <string name="global_action_silent_mode_off_status" msgid="1506046579177066419">"Səs Aktivdir"</string>
- <string name="global_actions_toggle_airplane_mode" msgid="5884330306926307456">"Təyyarə rejimi"</string>
- <string name="global_actions_airplane_mode_on_status" msgid="2719557982608919750">"Uçuş rejimi açıqdır"</string>
- <string name="global_actions_airplane_mode_off_status" msgid="5075070442854490296">"Təyyarə rejimi qapalıdır"</string>
- <string name="status_bar_notification_info_overflow" msgid="5301981741705354993">"999+"</string>
- <string name="safeMode" msgid="2788228061547930246">"Təhlükəsiz rejim"</string>
- <string name="android_system_label" msgid="6577375335728551336">"Android sistemi"</string>
- <string name="permgrouplab_costMoney" msgid="5429808217861460401">"Ödənişli xidmətlər"</string>
- <string name="permgroupdesc_costMoney" msgid="3293301903409869495">"Xərc tutulacaq əməliyyatlar edir"</string>
- <string name="permgrouplab_messages" msgid="7521249148445456662">"Sizin mesajlarınız"</string>
- <string name="permgroupdesc_messages" msgid="7821999071003699236">"SMS, elektron poçt və digər mesajları oxuyur və yazır."</string>
- <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Şəxsi məlumatınız"</string>
- <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Kontakt kartınızda saxlanılan məlumatlarınıza birbaşa giriş."</string>
- <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Sosial məlumatınız"</string>
- <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Kontaktlarınız və sosial əlaqələriniz haqqında məlumata birbaşa giriş."</string>
- <string name="permgrouplab_location" msgid="635149742436692049">"Yerləşməniz"</string>
- <string name="permgroupdesc_location" msgid="5704679763124170100">"Fiziki adresinizi monitorinq edir."</string>
- <string name="permgrouplab_network" msgid="5808983377727109831">"Şəbəkə kommunikasiyası"</string>
- <string name="permgroupdesc_network" msgid="4478299413241861987">"Müxtəlif şəbəkə xüsusiyyətlərinə daxil ol."</string>
- <string name="permgrouplab_bluetoothNetwork" msgid="1585403544162128109">"Bluetooth"</string>
- <string name="permgroupdesc_bluetoothNetwork" msgid="5625288577164282391">"Bluetooth üzərindən cihazlara və şəbəkələrə daxil ol."</string>
- <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Audio Ayarlar"</string>
- <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Audio ayarları dəyişin."</string>
- <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Batareyaya təsir edir"</string>
- <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Batareyanızın tez qurtarmasına səbəb olan funksiyalar istifadə edir"</string>
- <string name="permgrouplab_calendar" msgid="5863508437783683902">"Təqvim"</string>
- <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Təqvimə və tədbirlərə birbaşa giriş."</string>
- <string name="permgrouplab_dictionary" msgid="4148597128843641379">"İstifadəçi Lüğətini Oxu"</string>
- <string name="permgroupdesc_dictionary" msgid="7921166355964764490">"İstifadəçi lüğətindəki sözləri oxuyur."</string>
- <string name="permgrouplab_writeDictionary" msgid="8090237702432576788">"İstifadəçi Lüğətini Yaz"</string>
- <string name="permgroupdesc_writeDictionary" msgid="2711561994497361646">"İstifadəçi lüğətinə sözlər əlavə edin."</string>
- <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Əlfəcinlər və Tarixçə"</string>
- <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Əlfəcinlərə və brauzer tarixinə birbaşa icazə."</string>
- <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Zəng"</string>
- <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Alarm qur."</string>
- <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Səsli poçt"</string>
- <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Səs poçtuna birbaşa çıxış."</string>
- <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string>
- <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Audio yazmaq üçün mikrofona birbaşa giriş."</string>
- <string name="permgrouplab_camera" msgid="4820372495894586615">"Kamera"</string>
- <string name="permgroupdesc_camera" msgid="2933667372289567714">"Şəkil və ya video çəkmək üçün kameraya birbaşa çıxış."</string>
- <string name="permgrouplab_screenlock" msgid="8275500173330718168">"Ekran kilidi"</string>
- <string name="permgroupdesc_screenlock" msgid="7067497128925499401">"Cihazınızdakı kilid ekranının hərəkətinə təsir etmə bacarığı"</string>
- <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Tətbiq məlumatlarınız"</string>
- <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Cihazınızdakı digər tətbiqlərin davranışına təsir etmək bacarığı."</string>
- <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Divar kağızı"</string>
- <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Cihazın divar kağızı ayarlarını dəyişin."</string>
- <string name="permgrouplab_systemClock" msgid="406535759236612992">"Saat"</string>
- <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Cihazın vaxt və zaman zolağını dəyişir."</string>
- <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Status paneli"</string>
- <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Cihazın status paneli ayarlarınızı dəyişir."</string>
- <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Sinx Ayarları"</string>
- <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Sinxronizasiya nizamlarına çıxış."</string>
- <string name="permgrouplab_accounts" msgid="3359646291125325519">"Hesablarınız"</string>
- <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Əlçatımlı hesablara daxil olun."</string>
- <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Hardware kontrolları"</string>
- <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Dəstəkdəki avadanlığa birbaşa giriş."</string>
- <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Telefon zəngləri"</string>
- <string name="permgroupdesc_phoneCalls" msgid="7489701620446183770">"Telefon zənglərinə nəzarət edin, qeydə alın və idarə edin."</string>
- <string name="permgrouplab_systemTools" msgid="4652191644082714048">"Sistem alətləri"</string>
- <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Aşağı səviyyəli çıxış və sistem idarəetməsi."</string>
- <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"İnkişaf alətləri"</string>
- <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Özəlliklər yalnız tətbiq developerləri üçün lazımdır."</string>
- <string name="permgrouplab_display" msgid="4279909676036402636">"Digər tətbiq İstifadəçi İnterfeysi"</string>
- <string name="permgroupdesc_display" msgid="6051002031933013714">"Digər tətbiqlərin İstifadəçi İnterfeysinə təsir edir."</string>
- <string name="permgrouplab_storage" msgid="1971118770546336966">"Yaddaş"</string>
- <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USB yaddaşa daxil ol."</string>
- <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD karta daxil ol."</string>
- <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Əlçatımlılıq funksiyaları"</string>
- <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Yardımçı texnologiya tələb edə biləcəyi funksiyalar."</string>
- <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>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Toxunulan 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>
- <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Kredit kartı nömrələri və parollar kimi şəxsi məlumatlar daxildir."</string>
- <string name="permlab_statusBar" msgid="7417192629601890791">"status panelini deaktivləşdir və ya dəyişdir"</string>
- <string name="permdesc_statusBar" msgid="8434669549504290975">"Tətbiqə status panelini deaktiv etməyə və ya sistem ikonalarını əlavə etmək və ya silmək imkanı verir."</string>
- <string name="permlab_statusBarService" msgid="7247281911387931485">"status paneli"</string>
- <string name="permdesc_statusBarService" msgid="716113660795976060">"Tətbiqə status paneli olmağa imkan verir."</string>
- <string name="permlab_expandStatusBar" msgid="1148198785937489264">"status panelini genişlətmək və ya yığmaq"</string>
- <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Tətbiqə status panelini genişləndirməyə və ya yox etməyə imkan verir."</string>
- <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"gedən zənglərin marşrutunu dəyişmək"</string>
- <string name="permdesc_processOutgoingCalls" msgid="5331318931937402040">"Tətbiqə zəng etməyə və zəng edilən nömrəni dəyişməyə imkan verir. Zərərli tətbiqlər bundan istifadə edərək gedən zəngləri izləyə, yönləndirə və ya qarşısını ala bilər."</string>
- <string name="permlab_receiveSms" msgid="8673471768947895082">"SMS qəbul etmək"</string>
- <string name="permdesc_receiveSms" msgid="6424387754228766939">"Tətbiqə MMS mesajlarını almaq və emal etmək icazəsi verir. Bu o deməkdir ki, tətbiq sizin mesajlarınızı sizə göstərmədən monitorinq edə və ya silə bilər."</string>
- <string name="permlab_receiveMms" msgid="1821317344668257098">"mətn mesajlarını qəbul edir (MMS)"</string>
- <string name="permdesc_receiveMms" msgid="533019437263212260">"Tətbiqə MMS mesajlarını qəbul və emal üçün imkan verir. Bu o deməkdir ki, bu tətbiq sizə göstərmədən cihazınıza göndərilən mesajları silə bilər."</string>
- <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"təcili yayımları qəbul edir"</string>
- <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Tətbiqə təcili yayım mesajlarını qəbul və emal etmək icazəsi verir. Bu icazə ancaq sistem tətbiqləri üçün mümkündür."</string>
- <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"mobil yayım mesajlarını oxuyur"</string>
- <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Tətbiqə sizin telefonunuz tərəfindən alınmış yayım mesajlarını oxuma icazəsi verir. Telefon yayımı bəzi məkanlarda olan fövqəladə hadisələrlə bağlı sizi xəbərdar etmək üçün qəbul edilir. Zərərli tətbiqlər fövqəladə mobil yayım qəbul edildiyi zaman telefonunun performansına və əməliyyatına müdaxilə edə bilər."</string>
- <string name="permlab_sendSms" msgid="5600830612147671529">"SMS mesajlarını göndərir"</string>
- <string name="permdesc_sendSms" msgid="7094729298204937667">"Tətbiqə SMS mesajı göndərmə icazəsi verir. Bu gözlənilməyən ödənişlərə səbəb ola bilər. Zərərli tətbiqlər sizin təsdiqiniz olmadan mesaj göndərməklə sizə ödənişə səbəb ola bilərlər."</string>
- <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"mesajla cavab verilməli tədbirlər göndərmək"</string>
- <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Tətbiqə zənglər üçün \"mesajla cavabla\" hadisələrini idarə etmək üçün digər mesajlaşma tətbiqlərinə sorğuların göndərilməsi icazəsi verir."</string>
- <string name="permlab_readSms" msgid="8745086572213270480">"tekst mesajlarınızı oxuyur (SMS və ya MMS)"</string>
- <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Tətbiqə planşetinizdə və ya SIM kartınızda saxlanan SMS mesajları oxumağa imkan verir. Bu bütün SMS mesajların, onların məzmunundan və konfidensiallığından asılı olmadan oxunması imkanı deməkdir."</string>
- <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Tətbiqə telefonunuzda və ya SIM kartınızda saxlanan SMS mesajları oxumağa imkan verir. Bu bütün SMS mesajların, onların məzmunundan və konfidensiallığından asılı olmadan oxunması imkanı deməkdir."</string>
- <string name="permlab_writeSms" msgid="3216950472636214774">"mətn mesajlarınızı redaktə edir (SMS və ya MMS)"</string>
- <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Tətbiqə telefonunuzda və ya SİM kartınızda yerləşən SMS mesajlara yazma icazəsi verir. Zərərli tətbiqlər sizin mesajlarınızı silə bilər."</string>
- <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Tətbiqə telefonunuzda və ya SİM kartınızda yerləşən SMS mesajlara yazma icazəsi verir. Zərərli tətbiqlər sizin mesajlarınızı silə bilər."</string>
- <string name="permlab_receiveWapPush" msgid="5991398711936590410">"mətn mesajları qəbul etmək (WAP)"</string>
- <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Tətbiqə WAP mesajlar göndərmək və ya qəbul etmək imkanı verir. Buna mesajları izləmək və Sizə xəbər vermədən silmək imkanları da daxildir."</string>
- <string name="permlab_getTasks" msgid="6466095396623933906">"işlənən tətbiqlər əldə etmək"</string>
- <string name="permdesc_getTasks" msgid="7454215995847658102">"Tətbiqə hazırda və az öncə işləyən tapşırıqlar haqqında ətraflı məlumat əldə etməyə imkan verir. Bu da cihazda hansı tətbiqlərin istifadə olunması haqqında məlumatların əldə edilməsinə imkan verir."</string>
- <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"istifadəçilər arasında əlaqə qurur"</string>
- <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Tətbiqə bu cihazdakı digər istifadəçilərlə müxtəlif işləri görməyə icazə verir. Zərərli tətbiqlər bundan istifadəçilər arasındakı qorunmanı pozmaq üçün istifadə edə bilər."</string>
- <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"bütün istifadəçilər ilə əlaqə saxlamaq üçün tam hüquq"</string>
- <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"İstifadəçilər arasında bütün mümkün əlaqələrə imkan verir."</string>
- <string name="permlab_manageUsers" msgid="1676150911672282428">"istifadəçiləri idarə edir"</string>
- <string name="permdesc_manageUsers" msgid="8409306667645355638">"Tətbiqlərə cihazda olan istifadəçiləri, habelə sorğu göndərmə, yaratma və silmə izni verir."</string>
- <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"işlənən tətbiqlərin detallarını əldə etmək"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Tətbiqə hazırda və az öncə işləyən tapşırıqlar haqqında ətraflı məlumat əldə etməyə imkan verir. Zərərli tətbiqlər bundan istifadə edərək şəxsi məlumatları oğurlaya bilər."</string>
- <string name="permlab_reorderTasks" msgid="2018575526934422779">"işlənən tətbiqlərin sırasını dəyişmək"</string>
- <string name="permdesc_reorderTasks" msgid="7734217754877439351">"Tətbiqə tapşırıqları ön plandan arxa plana keçirməyə imkan verir. Tətbiq bunu Sizin daxiletməniz olmadan da edə bilər."</string>
- <string name="permlab_removeTasks" msgid="6821513401870377403">"işlək tətbiqləri dayandırır"</string>
- <string name="permdesc_removeTasks" msgid="1394714352062635493">"Tətbiqə tapşırıqları silməyə və onların tətbiqlərini məhv etməyə imkan verir. Zərərli tətbiqlər bundan istifadə edərək digər tətbiqlərin işlərini dayandıra bilər."</string>
- <string name="permlab_manageActivityStacks" msgid="7391191384027303065">"fəaliyyət toplularını idarə edin"</string>
- <string name="permdesc_manageActivityStacks" msgid="1615881933034084440">"Tətbiqə digər tətbiqlərin fəaliyyəti daxilində fəaliyyət toplularını əlavə etmək, silmək və dəyişmək imkanı verir."</string>
- <string name="permlab_startAnyActivity" msgid="2918768238045206456">"hər hansı bir fəaliyyət başlat"</string>
- <string name="permdesc_startAnyActivity" msgid="997823695343584001">"İcazə qorunması və ya eksport edilmiş statusdan asılı olmayaraq, tətbiqə hər hansı fəaliyyəti başlatmağa imkan verir."</string>
- <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"ekran uyğunluğunu yerləşdirir"</string>
- <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Tətbiqə digər tətbiqlərin ekran uyğunluğunu yoxlamaq imkanı verir. Zərərli tətbiqlər digər tətbiqlərin fəaliyyətini poza bilər."</string>
- <string name="permlab_setDebugApp" msgid="3022107198686584052">"tətbiq sazlanmasını aktiv edir"</string>
- <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Tətbiqə digər bir tətbiq üçün sazlamanı açmaq üçün imkan verir. Zərərli tətbiqlər bunu digər tətbiqləri yox etmək üçün istifadə edə bilər."</string>
- <string name="permlab_changeConfiguration" msgid="4162092185124234480">"sistem ekran nizamlarını dəyiş"</string>
- <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Tətbiqə yerli parametrlər və ya şriftin ölçüsü kimi cari konfiqurasiyanı dəyişməyə imkan verir."</string>
- <string name="permlab_enableCarMode" msgid="5684504058192921098">"avtomobil rejimini aktivləşdirir"</string>
- <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Tətbiqə avtomobil rejimini aktivləşdirməyə imkan verir."</string>
- <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"digər tətbiqləri qapatmaq"</string>
- <string name="permdesc_killBackgroundProcesses" msgid="4593353235959733119">"Tətbiqə başqa tətbiqlərin arxafon proseslərini dayandırmaq icazəsi verir. Bu digər tətbiqlərin dayanmasına səbəb ola bilər."</string>
- <string name="permlab_forceStopPackages" msgid="2329627428832067700">"Digər tətbiqləri dayanmağa məcbur et"</string>
- <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Tətbiqə digər tətbiqləri məcburi şəkildə dayandırmağa imkan verir."</string>
- <string name="permlab_forceBack" msgid="652935204072584616">"tətbiqi qapanmağa məcbur etmək"</string>
- <string name="permdesc_forceBack" msgid="3892295830419513623">"Tətbiqə ön planda olan istənilən tətbiqi bağlayaraq geriyə dönməyə imkan verir. Normal tətbiqlər tərəfindən heç vaxt istifadə olunmamalıdır."</string>
- <string name="permlab_dump" msgid="1681799862438954752">"sistemin daxili durumunu bərpa et"</string>
- <string name="permdesc_dump" msgid="1778299088692290329">"Tətbiqə sistemin daxili statusunu bərpa etməyə imkan verir. Zərərli tətbiqlər lazım olmadığı halda müxtəlif şəxsi və güvənli məlumatları bərpa edə bilər."</string>
- <string name="permlab_retrieve_window_content" msgid="8022588608994589938">"ekran kontentini bərpa edir"</string>
- <string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Tətbiqə aktiv pəncərənin məzmununu əldə etməyə imkan verir. Zərərli tətbiqlər bundan istifadə edərək pəncərə məzmununu ələ keçirib parollları oxuya bilər."</string>
- <string name="permlab_temporary_enable_accessibility" msgid="2312612135127310254">"giriş imkanını müvəqqəti açmaq"</string>
- <string name="permdesc_temporary_enable_accessibility" msgid="8079456293182975464">"Tətbiqə cihaza girişi müvəqqəti olaraq aktivləşdirməyə imkan verir. Zərərli tətbiqlər istifadəçi razılığı olmadan girişi aktivləşdirə bilər."</string>
- <string name="permlab_retrieve_window_info" msgid="8532295199112519378">"pəncərə infosunu bərpa edir"</string>
- <string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Tətbiqə pəncərə idarəçisindən gələn windows haqqında olan məlumatı bərpa etməyə imkan verir. Zərərli tətbiqlər daxili sistem istifadəsi üçün nəzərdə tutulan məlumatı bərpa edə bilər."</string>
- <string name="permlab_filter_events" msgid="8675535648807427389">"tədbirləri filtr edir"</string>
- <string name="permdesc_filter_events" msgid="8006236315888347680">"Tətbiqə daxiletmə filtrini qeydiyyat etdirməyə imkan verir, bu filtr bütün istifadəçi tədbirlərini göndərilməmişdən əvvəl filtrdən keçirir. Zərərli tətbiq istifadəçi müdaxiləsi olmadan İstifadəçi İnterfeysi sisteminə nəzarət edə bilər."</string>
- <string name="permlab_magnify_display" msgid="5973626738170618775">"ekranı böyüdür"</string>
- <string name="permdesc_magnify_display" msgid="7121235684515003792">"Tətbiqə ekran kontentini böyütmək icazəsi verir. Zərərli tətbiqlər bundan istifadə edərək ekranda kontenti böyüdərək cihazın qeyri-stabilliyinə səbəb ola bilər."</string>
- <string name="permlab_shutdown" msgid="7185747824038909016">"qismən söndürür"</string>
- <string name="permdesc_shutdown" msgid="7046500838746291775">"Aktivlik idarəçiliyini qapanmış hala gətirir. Tam qapanmanı həyata keçirmir."</string>
- <string name="permlab_stopAppSwitches" msgid="4138608610717425573">"tətbiqdən tətbiqə keçidin qarşısını almaq"</string>
- <string name="permdesc_stopAppSwitches" msgid="8262195802582255021">"İstifadəçinin başqa tətbiqə keçməsinin qarşısını alır."</string>
- <string name="permlab_getTopActivityInfo" msgid="2537922311411546016">"cari tətbiq informasiyası əldə etmək"</string>
- <string name="permdesc_getTopActivityInfo" msgid="8153651434145132505">"Sahibə ekran önündə cari tətbiq və xidmətlər haqqında şəxsi məlumat əldə etməyə imkan verir."</string>
- <string name="permlab_runSetActivityWatcher" msgid="892239094867182656">"işə salınan bütün tətbiqləri izləyir və idarə edir"</string>
- <string name="permdesc_runSetActivityWatcher" msgid="6003603162578577406">"Tətbiqə sistemin fəaliyyətləri necə başlatdığını nəzarət və kontrol etməyə imkan verir. Zərərli tətbiqlər sistemi tamamilə kompromis edə bilər. Bu icazə yalnız inkişaf üçündür, heç vaxt normal istifadə üçün deyil."</string>
- <string name="permlab_broadcastPackageRemoved" msgid="2576333434893532475">"qaldırılmış yayım paketini göndər"</string>
- <string name="permdesc_broadcastPackageRemoved" msgid="6621901216207931089">"Tətbiqə tətbiq paketinin silinməsi haqqında bildiriş translasiya etmə icazəsi verir. Zərərli tətbiqlər bundan digər işlək tətbiqləri dayandırmaq üçün istifadə edə bilər."</string>
- <string name="permlab_broadcastSmsReceived" msgid="5689095009030336593">"SMS tərəfindən qəbul edilən yayım göndər"</string>
- <string name="permdesc_broadcastSmsReceived" msgid="4152037720034365492">"Tətbiqə mesaj gəlməsi haqqında bildirişi yayımlamaq imkanı verir. Zərərli tətbiqlər bundan gələn SMS mesajlarını saxtalaşdırmaq üçün istifadə edə bilər."</string>
- <string name="permlab_broadcastWapPush" msgid="3145347413028582371">"WAP-PUSH tərəfindən qəbul edilən yayım göndər"</string>
- <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Tətbiqə WAP PUSH mesajın alındığı haqda bildiriş translasiya etməyə icazə verir. Zərərli tətbiqlər bundan istifadə edərək saxta MMS mesaj alışı və ya səssizcə istənilən veb səhifəni zərərverici variantlarla dəyişmək üçün istifadə edə bilər."</string>
- <string name="permlab_setProcessLimit" msgid="2451873664363662666">"çalışan proseslərin sayını məhdudlaşdırır"</string>
- <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Tətbiqə işlədiləcək maksimum proses sayını idarə etmə izni verir. Normal tətbiqlər tərəfindən tələb olunmur."</string>
- <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"arxafon tətbiqlərini dayanmağa məcbur edir"</string>
- <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Tətbiqə aktivitilərin arxa fona getdiyi zaman bitməsini yoxlayır. Normal tətbiqlər tərəfindən tələn olunmur."</string>
- <string name="permlab_batteryStats" msgid="2789610673514103364">"batareya statistikalarını oxumaq"</string>
- <string name="permdesc_batteryStats" msgid="5897346582882915114">"Tətbiqə cari aşağı səviyyəli data sitifadəsini oxumaq imkanı verir. Tətbiqə hansı tətbiqi istifadə etdiyiniz haqqında ətraflı məlumat tapmağa imkan verə bilər."</string>
- <string name="permlab_updateBatteryStats" msgid="3719689764536379557">"batareya statistikalarını dəyişmək"</string>
- <string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"Tətbiqə yığılmış batareya statistikasını redaktə etmə icazəsi verir. Normal tətbiqlər tərəfindən istifadə edilmir."</string>
- <string name="permlab_getAppOpsStats" msgid="1508779687436585744">"tətbiq əməliyyat statistikalarını əldə etmək"</string>
- <string name="permdesc_getAppOpsStats" msgid="6243887041577912877">"Toplanmış tətbiq əməliyyat statistikalarının bərpa edilməsinə imkan verir. Normal tətbiqlər tərəfindən istifadə üçün deyil."</string>
- <string name="permlab_updateAppOpsStats" msgid="8829097373851521505">"tətbiq əməliyyat statistikasını dəyişmək"</string>
- <string name="permdesc_updateAppOpsStats" msgid="50784596594403483">"Tətbiqə toplanmış tətbiq əməliyyat statistikasını dəyişməyə imkan verir. Normal tətbiqlər tərəfindən istifadə olunmur."</string>
- <string name="permlab_backup" msgid="470013022865453920">"sistem yedəkləməsi və bərpasını idarə edir"</string>
- <string name="permdesc_backup" msgid="6912230525140589891">"Tətbiqə sistemi rezerv etməyə və mexanizmi bərpa etməyə imkan verir. Normal tətbiqlər tərəfindən istifadə edilmək üçün nəzərdə tutulmayıb.."</string>
- <string name="permlab_confirm_full_backup" msgid="5557071325804469102">"tam rezervi təsdiq etmək və ya əməliyyatı bərpa etmək"</string>
- <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Tətbiqə İstifadəçi İnterfeysi tam rezerv təsdiqini işə salmağa imkan verir. Heç bir tətbiq tərəfindən istifadə olunmamalıdır."</string>
- <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"icazəsiz pəncərələri görüntüləyir"</string>
- <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Tətbiqə daxili sistem interfeysi tərəfindən istifadə edilməsi üçün nəzərdə tutulmuş pəncərələri yaratmağa icazə verir. Normal tətbiqlər tərəfindən istifadə edilmir."</string>
- <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"digər tətbiqlər üzərində çəkmək"</string>
- <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"Tətbiqə digər tətbiqlərin və ya onların hissələrinin yuxarısında şəkil çəkməyə imkan verir. Onlar istənilən tətbiqin interfeysinin istifadəsinə müdaxilə edə və ya digər tətbiqlərdə axtardıqlarınızı dəyişə bilər."</string>
- <string name="permlab_setAnimationScale" msgid="2805103241153907174">"qlobal animasiya sürətini dəyişir"</string>
- <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Tətbiqə istənilən vaxt qlobal animasiya sürətini (sürətli və ya yavaş animasiyalar) dəyişdirmək imkanı verir."</string>
- <string name="permlab_manageAppTokens" msgid="1286505717050121370">"tətbiq nişanlarını idarə etmək"</string>
- <string name="permdesc_manageAppTokens" msgid="8043431713014395671">"Tətbiqlərə onların normal Z-orderinqi keçərək markerlərini yaratma və idarəetmə icazəsi verir. Normal tətbiqlər tərəfindən istifadə olunmur."</string>
- <string name="permlab_freezeScreen" msgid="4708181184441880175">"ekranı dondurur"</string>
- <string name="permdesc_freezeScreen" msgid="8558923789222670064">"Tətbiqə tam ekranlı yayım üçün ekranı müvəqqəti olaraq dondurma icazəsi verir."</string>
- <string name="permlab_injectEvents" msgid="1378746584023586600">"düymələri və idarəetmə düymələrini basır"</string>
- <string name="permdesc_injectEvents" product="tablet" msgid="206352565599968632">"Tətbiqə özünün daxiletmə tədbirlərini digər tətbiqlərə çatdırmağa imkan verir. Zərərli tətbiqlər planşeti ələ keçirmək üçün bundan istifadə edə bilər."</string>
- <string name="permdesc_injectEvents" product="default" msgid="653128057572326253">"Tətbiqə özünün daxiletmə tədbirlərini digər tətbiqlərə çatdırmağa imkan verir. Zərərli tətbiqlər telefonu ələ keçirmək üçün bundan istifadə edə bilər."</string>
- <string name="permlab_readInputState" msgid="469428900041249234">"yazdıqlarınızı və etdiklərinizi izləyir"</string>
- <string name="permdesc_readInputState" msgid="8387754901688728043">"Tətbiqə basdığınız düymələri izləmək imkanı verilir. Buna parolların və kredit kartı nömrələrinin yazılması da aiddir. Normal tətbiqlər tərəfindən istifadə olunmur."</string>
- <string name="permlab_bindInputMethod" msgid="3360064620230515776">"daxiletmə metoduna bağlanır"</string>
- <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Sahibinə daxiletmə metodunun ən üst səviyyə interfeysinə bağlamaq imkanı verir. Normal tətbiqlər üçün heç vaxt lazım olmamalıdır."</string>
- <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"giriş xidmətinə bağlı qal"</string>
- <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Sahibə giriş xidmətin ən üst səviyyə interfeysi bağlamağa imkan verir. Normal tətbiqlər üçün heç vaxt lazım olmamalıdır."</string>
- <string name="permlab_bindPrintService" msgid="8462815179572748761">"çap servisini qoşma"</string>
- <string name="permdesc_bindPrintService" msgid="7960067623209111135">"Sahibinə bir çap xidmətinin ən üst səviyə araüzünü bağlamağa imkan verir. Normal tətbiqlər üçün heç vaxt lazım olmamalıdır."</string>
- <string name="permlab_accessAllPrintJobs" msgid="1120792468465711159">"bütün çap işlərinə giriş əldə et"</string>
- <string name="permdesc_accessAllPrintJobs" msgid="2978185311041864762">"Sahibinə digər tətbiqlər tərəfindən yaradılan çap işlərinə giriş hüququ verir. Normal tətbiqlər üçün tələb olunmamalıdır."</string>
- <string name="permlab_bindNfcService" msgid="2752731300419410724">"NFC xidmətlərinə qoşun"</string>
- <string name="permdesc_bindNfcService" msgid="6120647629174066862">"Sahibinə NFC kartlarını emulyasiya edən tətbiqləri bir-birinə qoşmağa icazə verin. Normal tətbiqlər üçün lazım deyil."</string>
- <string name="permlab_bindTextService" msgid="7358378401915287938">"mətn servisini qoşma"</string>
- <string name="permdesc_bindTextService" msgid="8151968910973998670">"Sahibinə bir mətn xidmətinin ən üst səviyyə araüzünü bağlamağa imkan verir(məsələn, SpellCheckerService). Normal tətbiqlər üçün heç vaxt lazım olmamalıdır."</string>
- <string name="permlab_bindVpnService" msgid="4708596021161473255">"VPN xidmətə əlaqələndirmək"</string>
- <string name="permdesc_bindVpnService" msgid="2067845564581693905">"Sahibinə bir Vpn xidmətinin ən üst səviyyə araüzünü bağlamağa imkan verir. Normal tətbiqlər üçün heç vaxt lazım olmamalıdır."</string>
- <string name="permlab_bindWallpaper" msgid="8716400279937856462">"divar kağızına bağlanır"</string>
- <string name="permdesc_bindWallpaper" msgid="7108428692595491668">"Cihaz sahibinə yuxarı səviyyəli divar kağızı interfeysini cildləməyə imkan verir. Normal tətbiqlər tərəfindən istifadə olunmamalıdır."</string>
- <string name="permlab_bindRemoteViews" msgid="5697987759897367099">"widget servisini qoşma"</string>
- <string name="permdesc_bindRemoteViews" msgid="4717987810137692572">"Sahibinə vidcet servisin yüksək səviyyəli interfeysi ilə əlaqə saxlamaq icazəsi verir. Normal tətbiqlər tərəfindən heç vaxt istənilməməlidir."</string>
- <string name="permlab_bindDeviceAdmin" msgid="8704986163711455010">"cihaz admini ilə ünsiyyət qurmaq"</string>
- <string name="permdesc_bindDeviceAdmin" msgid="569715419543907930">"Sahibinə bir cihaz idarəçisinə planlar göndərmək üçün imkan verir. Normal tətbiqlər üçün heç vaxt lazım olmamalıdır."</string>
- <string name="permlab_manageDeviceAdmins" msgid="4248828900045808722">"cihaz admini əlavə edin və ya silin"</string>
- <string name="permdesc_manageDeviceAdmins" msgid="5025608167709942485">"Sahibinə aktiv cihaz administratorlarını əlavə etməyə və ya silməyə icazə verir. Normal tətbiqlər üçün tələb olunmamalıdır."</string>
- <string name="permlab_setOrientation" msgid="3365947717163866844">"ekran oriyentasiyasını dəyişir"</string>
- <string name="permdesc_setOrientation" msgid="3046126619316671476">"Tətbiqə istənilən zaman ekranın vəziyyətini dəyişmə icazəsi verir. Normal tətbiqlər tərəfindən tələb olunmur."</string>
- <string name="permlab_setPointerSpeed" msgid="9175371613322562934">"kursor sürətini dəyişmək"</string>
- <string name="permdesc_setPointerSpeed" msgid="6866563234274104233">"Tətbiqə mausun və ya trekpedin kursor sürətini istənilən zaman dəyişməyə imkan verir. Normal tətbiqlər tərəfindən istifadə olunmamalıdır."</string>
- <string name="permlab_setKeyboardLayout" msgid="4778731703600909340">"klaviatura sxemini dəyişir"</string>
- <string name="permdesc_setKeyboardLayout" msgid="8480016771134175879">"Tətbiqə klaviatura sxemini dəyişmək imkanı verir. Normal tətbiqlər tərəfindən tələb olunmur."</string>
- <string name="permlab_signalPersistentProcesses" msgid="4539002991947376659">"tətbiqlərə Linux siqnalları göndərir"</string>
- <string name="permdesc_signalPersistentProcesses" msgid="4896992079182649141">"Tətbiqə bütün davamlı proseslərə siqnal soğrusu göndərməyə imkan verir."</string>
- <string name="permlab_persistentActivity" msgid="8841113627955563938">"təbiqi həmişə çalışdır"</string>
- <string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"Tətbiqə öz komponentlərini yaddaşda saxlama icazəsi verir. Bu planşetin sürətini zəiflətməklə, digər tətbiqlər üçün mövcud olan yaddaşı limitləyə bilər."</string>
- <string name="permdesc_persistentActivity" product="default" msgid="4384760047508278272">"Tətbiqə öz komponentlərini yaddaşda saxlama icazəsi verir. Bu digər tətbiqlər üçün mövcud olan yaddaşı limitləyə bilər."</string>
- <string name="permlab_deletePackages" msgid="184385129537705938">"tətbiqləri sil"</string>
- <string name="permdesc_deletePackages" msgid="7411480275167205081">"Tətbiqə Android paketləri silmə icazəsi verir. Zərərli tətbiqlər bundan digər vacib tətbiqləri silmək üçün istifadə edə bilər."</string>
- <string name="permlab_clearAppUserData" msgid="274109191845842756">"digər tətbiqlərin məlumatını silir"</string>
- <string name="permdesc_clearAppUserData" msgid="4625323684125459488">"Tətbiqə istifadəçi datasını təmizləməyə imkan verir."</string>
- <string name="permlab_deleteCacheFiles" msgid="3128665571837408675">"digər tətbiqlərin keşini sil"</string>
- <string name="permdesc_deleteCacheFiles" msgid="3812998599006730196">"Tətbiqə keş faylları silmə icazəsi verir."</string>
- <string name="permlab_getPackageSize" msgid="7472921768357981986">"tətbiq saxlama yaddaşını ölçmək"</string>
- <string name="permdesc_getPackageSize" msgid="3921068154420738296">"Tətbiqə özünün kodunu, məlumatını və keş ölçüsünü alma icazəsi verir."</string>
- <string name="permlab_installPackages" msgid="2199128482820306924">"birbaşa tətbiqlər quraşdırmaq"</string>
- <string name="permdesc_installPackages" msgid="5628530972548071284">"Tətbiqə yeni və ya güncəllənmiş Android paketlərini quraşdırmağa imkan verir. Zərərli tətbiqlər bundan istifadə edərək güclü səlahiyyətlərə malik tətbiqləri endirə bilər."</string>
- <string name="permlab_clearAppCache" msgid="7487279391723526815">"bütün tətbiq keş datasını silir"</string>
- <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"Tətbiqə planşetin yaddaşını boşaltmaq üçün digər tətbiqlərin keş fayllarını silmək imkanı verir. Bu da digər tətbiqlərin dataları yenidən əldə etmələri səbəbindən daha yavaş işləmələrinə səbəb ola bilər."</string>
- <string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"Tətbiqə digər tətbiqlərin keş qovluğunu təmizləyərək telefonun yaddaşını boşaltmaq icazəsi verir. Bu digər tətbiqlərin məlumatlarını yenidən əldə etməli olduqlarına görə daha yavaş başlamasına səbəb olur."</string>
- <string name="permlab_movePackage" msgid="3289890271645921411">"tətbiq resurslarının yerini dəyişir"</string>
- <string name="permdesc_movePackage" msgid="319562217778244524">"Tətbiqə tətbiq resurslarını daxili mediadan xarici mediaya və əksinə daşımağa imkan verir."</string>
- <string name="permlab_readLogs" msgid="6615778543198967614">"məxfi loq datasını oxuyur"</string>
- <string name="permdesc_readLogs" product="tablet" msgid="82061313293455151">"Tətbiqə sistemin müxtəlif jurnal fayllarını oxumağa imkan verir. Bu da Sizin planşetdə etdikləriniz haqqında məlumatlar, həmçinin şəxsi və konfidensial məlumatlar ola bilər."</string>
- <string name="permdesc_readLogs" product="default" msgid="2063438140241560443">"Tətbiqə sistemin müxtəlif jurnal fayllarını oxumağa imkan verir. Bu da Sizin planşetdə etdikləriniz haqqında məlumatlar, həmçinin şəxsi və konfidensial məlumatlar ola bilər."</string>
- <string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"oxutmaq üçün istənilən media dekoderi istifadə edir"</string>
- <string name="permdesc_anyCodecForPlayback" msgid="8283912488433189010">"Tətbiqə playback\'i deşifrə etmək üçün hər hansı bir quraşdırılmış media deşifrələyicisini istifadə etmık imkanı verir."</string>
- <string name="permlab_manageCaCertificates" msgid="1678391896786882014">"etibarlı etimadnamələri idarə et"</string>
- <string name="permdesc_manageCaCertificates" msgid="4015644047196937014">"Tətbiqə etibarlı etimadnamələr kimi CA sertifikatlarını quraşdırmaq və sistemdən silməyə icazə verir."</string>
- <string name="permlab_diagnostic" msgid="8076743953908000342">"diaga məxsus olan mənbələri yaz/oxu"</string>
- <string name="permdesc_diagnostic" msgid="6608295692002452283">"Tətbiqə diag qrupa məsus olan resursları yazmaq və oxumaq icazəsi verir; məsələn /dev qovluğundakı fayllar. Bu sistemin stabilliyinə və təhlükəsizliyinə təsir edə bilər. Bu ancaq istehsalçı və ya operator tərəfindən avadanlığa xas diaqnostika üçün olmalıdır."</string>
- <string name="permlab_changeComponentState" msgid="6335576775711095931">"tətbiq komponentlərini aktivləşdirmə və ya deaktivləşdirmə"</string>
- <string name="permdesc_changeComponentState" product="tablet" msgid="8887435740982237294">"Tətbiqə digər tətbiq komponentinin aktiv olub-olmadığını dəyişmək imkanı verir. Zərərli tətbiqlər bundan əhəmiyyətli planşet imkanlarını deaktiv etmək üçün istifadə edə bilər. Bu icazə ilə ehtiyatlı olmaq lazımdır, çünki tətbiq komponentləri yararsız, ziddiyyətli, və ya qeyri-sabit statusa çevrilə bilər."</string>
- <string name="permdesc_changeComponentState" product="default" msgid="1827232484416505615">"Tətbiqə digər tətbiq komponentinin aktiv olub-olmadığını dəyişmək imkanı verir. Zərərli tətbiqlər bundan əhəmiyyətli telefon imkanlarını deaktiv etmək üçün istifadə edə bilər. Bu icazə ilə ehtiyatlı olmaq lazımdır, çünki tətbiq komponentləri yararsız, ziddiyyətli, və ya qeyri-sabit statusa çevrilə bilər."</string>
- <string name="permlab_grantRevokePermissions" msgid="4627315351093508795">"icazələr vermək və ya ləğv etmək"</string>
- <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Tətbiqə bu və ya digər tətbiqlərə xüsusi iznlər verməyə icazə verir. Zərərli tətbiqlər bundan izin vermədiyiniz özəllikləri özlərinə vermək üçün istifadə edə bilər."</string>
- <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"tərcih edilən tətbiqlər qur"</string>
- <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Tətbiqə tərcih etdiyiniz tətbiqləri dəyişmək imkanı verir. Zərərli tətbiqlər şəxsi məlumatlarınızı toplamaq üçün cari tətbiqlərinizi aldadaraq işləyən tətbiqləri xəbərsiz dəyişə bilər."</string>
- <string name="permlab_writeSettings" msgid="2226195290955224730">"sistem ayarlarında dəyişiklik etmək"</string>
- <string name="permdesc_writeSettings" msgid="7775723441558907181">"Tətbiqə sistem ayarları datasını redaktə etmə icazəsi verir. Zərərli tətbiqlər sistem ayarlarını korlaya bilər."</string>
- <string name="permlab_writeSecureSettings" msgid="204676251876718288">"təhlükəsiz sistem nizamlarını dəyişir"</string>
- <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Tətbiqə sistemin təhlükəsiz ayarlar datasını dəyişməyə imkan verir. Normal tətbiqlər tərəfindən istifadə üçün deyil."</string>
- <string name="permlab_writeGservices" msgid="2149426664226152185">"Google xidmətlər xəritəsini dəyişdir"</string>
- <string name="permdesc_writeGservices" msgid="1287309437638380229">"Tətbiqə Google xidmətlər xəritəsini dəyişdirmək imkanı verir. Normal tətbiqlərin istifadəsi üçün deyil."</string>
- <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"başlanğıcda işləyir"</string>
- <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Tətbiqə sistem yükləməni bitirdiyi zaman dərhal özünü başlatmağa imkan verir. Bu planşeti başlatmağın uzun çəkməsinə səbəb ola bilər və tətbiqə həmişə çalışdıraraq bütün planşeti yavaşlatmağa imkan verir."</string>
- <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Tətbiqə sistem bootinqi bitirdikdən dərhal sonra özünü başlatmaq icazəsi verir. Bu telefonun açılmasını ləngidə və daima işlək qalaraq telefonun sürətini aşağı sala bilər."</string>
- <string name="permlab_broadcastSticky" msgid="7919126372606881614">"daimi siqnal göndərmək"</string>
- <string name="permdesc_broadcastSticky" product="tablet" msgid="7749760494399915651">"Tətbiqə yayım bitdikdən sonra da qalan çətin yayımlar göndərməyə imkan verir. Hədsiz istifadə çox yaddaş istifadəsinə səbəb olmaqla planşeti yavaş və qeyri-stabil edə bilər."</string>
- <string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"Tətbiqə yayım bitdikdən sonra da qalan çətin yayımlar göndərməyə imkan verir. Hədsiz istifadə çox yaddaş istifadəsinə səbəb olmaqla telefonu yavaş və qeyri-stabil edə bilər."</string>
- <string name="permlab_readContacts" msgid="8348481131899886131">"kontakrlatınızı oxumaq"</string>
- <string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"Tətbiqə planşetinizdə yerləşən kontaktları oxumaq icazəsi verir, tez-tez zəng elədiyiniz, emailləşdiyiniz və ya əlaqə saxladığınız xüsusi individuallar daxil olmaqla. Bu icazə tətbiqlərə kontakt məlumatlarınızı saxlamağa və zərərli tətbiqlərə kontakt məlumatlarını sizin bilginiz olmada paylaşma imkanı yaradır."</string>
- <string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"Tətbiqə tez-tez zəng elədiyiniz, e-məktub göndərdiyiniz və ya əlaqə saxladığınız xüsusi individuallar daxil olmaqla telefonunuzda yerləşən kontaktları oxumaq icazəsi verir. Bu icazə tətbiqlərə kontakt məlumatlarınızı saxlamağa və zərərli tətbiqlərə kontakt məlumatlarını sizin xəbəriniz olmada paylaşma imkanı yaradır."</string>
- <string name="permlab_writeContacts" msgid="5107492086416793544">"kontaktlarınızı dəyişdirir"</string>
- <string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"Tətbiqə planşetinizdəki zəng etmək tezliyiniz, elektron poçtlarınız, ünsiyyətləriniz haqqında məlumatları dəyişməyə imkan verir. Bu icazə kontakt məlumatlarının silinməsinə də imkan verir."</string>
- <string name="permdesc_writeContacts" product="default" msgid="589869224625163558">"Tətbiqə Sizin zəng etmək tezliyiniz, elektron poçtlarınız, ünsiyyətləriniz haqqında məlumatları dəyişməyə imkan verir. Buna kontaktların silinməsi imkanı də daxildir."</string>
- <string name="permlab_readCallLog" msgid="3478133184624102739">"zəng qeydiyyatını oxu"</string>
- <string name="permdesc_readCallLog" product="tablet" msgid="3700645184870760285">"Tətbiqə gələn və gedən zənglər haqqında olan data daxil olmaqla bərabər planşetinizin zəng qeydiyyatını oxumağa imkan verir. Bu icazə tətbiqlərə zəng qeydiyyatınızı saxlamağa imkan verir və zərərli tətbiqlər zəng qeydiyyat datasını sizdən xəbərsiz paylaşa bilər."</string>
- <string name="permdesc_readCallLog" product="default" msgid="5777725796813217244">"Tətbiqə telefon jurnalınızı oxumağa imkan verir, buna gələn və gedən zənglər haqqında məlumatlar da daxildir. Bu icazə tətbiqə zəng jurnalı datasını saxlamağa imkan verir ki, Zərərli tətbiqlər bundan istifadə edərək Sizdən xəbərsiz bütün məlumatlarnızı paylaşa bilər."</string>
- <string name="permlab_writeCallLog" msgid="8552045664743499354">"zəng loqu yazır"</string>
- <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Tətbiqə planşetinizdəki zəng jurnalını, həmçinin gedən və gələn zənglərin siyahısını dəyişməyə imkan verir. Zərərli tətbiqlər bundan istifadə edərək, zəng jurnalınıza dəyişiklik edə bilər."</string>
- <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Tətbiqə sizin daxil olan və gedən zənglər daxil olmaqla telefon zəngi loqlarınızı redaktə etmək icazəsi verir. Zərərli tətbiqlər bundan telefon loqlarınızı silmək və ya redaktə etmək üçün istifadə edə bilər."</string>
- <string name="permlab_readProfile" msgid="4701889852612716678">"öz kontakt kartınızı oxuyun"</string>
- <string name="permdesc_readProfile" product="default" msgid="5462475151849888848">"Tətbiqə cihazınızda yerləşən adınız və kontakt məlumatlarınız kimi şəxsi profil məlumatlarını oxuma icazəsi verir. Bu o deməkdir ki, tətbiq sizi tanıya və sizin profil məlumatlarınızı başqalarına göndərə bilər."</string>
- <string name="permlab_writeProfile" msgid="907793628777397643">"sizin kontakt kartınızda dəyişiklik etmək"</string>
- <string name="permdesc_writeProfile" product="default" msgid="5552084294598465899">"Tətbiqə cihazınızda yerləşən adınız və kontakt məlumatlarınız kimi şəxsi profil məlumatlarını dəyişmək və ya əlavə etmək icazəsi verir. Bu o deməkdir ki, tətbiq sizi tanıya və sizin profil məlumatlarınızı başqalarına göndərə bilər."</string>
- <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"sosial lentinizi oxuyur"</string>
- <string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"Tətbiqə Sizin və dostlarınızın sosial güncəllərini əldə etmək və sinxronizə etmək icazəsi verir. Məlumat paylaşarkən diqqətli olun - konfidensiallıqdan asılı olmayaraq bu, Siz və dostlarınız arasında sosial şəbəkələrdəki danışığı oxumaq imkanı verir. Qeyd: bu icazə bütün sosial şəbəkələrdə icra edilə bilməz."</string>
- <string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"sosial axınınıza yazır"</string>
- <string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"Tətbiqə dostlarınızdan sosial yenilənmələri göstərmə icazəsi verir. Məlumat paylaşarkən diqqətli olun - bu dostlarınızdan gələn mesajı emal etməyə izn verir. Qeyd: bu icazə bütün sosial şəbəkələrə şamil olunmaya bilər."</string>
- <string name="permlab_readCalendar" msgid="5972727560257612398">"təqvim tədbirlərini və konfidensial məlumatları oxuyur"</string>
- <string name="permdesc_readCalendar" product="tablet" msgid="4216462049057658723">"Tətbiqə dostlarınızın və əməkdaşlarınızın planşetinizdə yerləşən kalendar tədbirlərini oxumağa icazə verir. Bu tətbiqə konfidensiallıq və ya həssaslıqdan asılı olmayaraq sizin kalendar məlumatlarınızı paylaşmaq və ya saxlamağa imkan yaradır."</string>
- <string name="permdesc_readCalendar" product="default" msgid="7434548682470851583">"Tətbiqə dost və əməkdaşlara məxsus olanlar daxil olmaqla planşetdə yerləşən bütün kalendar tətbiqlərini oxumaq icazəsi verir. Bu tətbiqə konfidensiallıq və ya həssaslıqdan asılı olmayaraq, Sizin kalendar məlumatlarınızı paylaşmaq və ya saxlamaq imkanı yaradır."</string>
- <string name="permlab_writeCalendar" msgid="8438874755193825647">"cihaz sahibinin icazəsi olmadan təqvim tədbirləri əlavə etmək və ya dəyişmək, bunun haqqında bildirişlər göndərmək"</string>
- <string name="permdesc_writeCalendar" product="tablet" msgid="6679035520113668528">"Tətbiqə planşetinizdəki tədbirləri dəyişməyə, tədbir əlavə etməyə və ya silməyə imkan verir. Buna Sizin dostlarınızla və həmkarlarınızla birlikdə hazırladığınız tədbirlər də daxildir. Bu, tədbirə Sizin adınızdan və Sizdən xəbərsiz, təqvim sahibi kimi mesaj göndərmək imkanını verir."</string>
- <string name="permdesc_writeCalendar" product="default" msgid="2324469496327249376">"Dostlarınız və həmkarlarınıza məxsus olanlar da daxil olmaqla, tətbiqə telefonunuzdakı tədbirləri dəyişməyə, tədbir əlavə etməyə və ya silməyə imkan verir. Bu, tədbirə Sizin adınızdan və Sizdən xəbərsiz, təqvim sahibi kimi mesaj göndərmək imkanı verir."</string>
- <string name="permlab_accessMockLocation" msgid="8688334974036823330">"test üçün saxta məkan mənbələri"</string>
- <string name="permdesc_accessMockLocation" msgid="5808711039482051824">"Test üçün saxta məkan mənbələri yaradın və ya yeni məkan provayderi quraşdırın. Bu tətbiqlərə GPS və məkan provayderləri kimi məkan mənbələrindən alınan məkan və/ya statusları yenidən yazmağa icazə verir."</string>
- <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"əlavə məkan provayderi əmrlərinə çıxış"</string>
- <string name="permdesc_accessLocationExtraCommands" msgid="5945166642335800763">"Tətbiqə əlavə məkan provayderi əmrlərinə daxil olmaq imkanı verir. Bu tətbiqə GPS əməliyyatına və ya digər məkan mənbələrinə mane olmaq imkanı verə bilər."</string>
- <string name="permlab_installLocationProvider" msgid="6578101199825193873">"Məkan provayderini quraşdırmaq icazəsi"</string>
- <string name="permdesc_installLocationProvider" msgid="9066146120470591509">"Yeni yerləşmə təchizatçısını test etmək və ya quraşdırmaq üçün mock yerləşmə mənbələri yarat. Bu tətbiqə yerləşmənin və/ya digər yerləşmə mənbələrindən GPS və ya yerləşmə təchizatçıları qayıtmış statusların ləğv etməsinə imkan verir."</string>
- <string name="permlab_accessFineLocation" msgid="1191898061965273372">"dəqiq yeri (GPS və şəbəkə-əsaslı)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"Qlobal Pozisiya Sistemini və ya şəbəkə qüllələri və Wi-Fi kimi şəbəkə məkanını istifadə edərək tətbiqə Sizin dəqiq yerinizi təyin etməyə imkan verir. Bu məkan xidmətləri aktivləşdirilməlidirlər ki, Siz tətbiqi istifadə edən zaman tətbiq onları istifadə edə bilsin. Tətbiqlər Sizin harada olmağınızı bunun vasitəsilə təyin edəcək, eyni zamanda, bu xidmət əlavə batareya enerjisi apara bilər."</string>
- <string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"təxmini məkan (şəbəkə əsaslı)"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"Tətbiqə təxmini yerinizi almaq üçün imkan verir. Bu yer, yerləşmə xidmətləri tərəfindən mobil qüllələr və Wi-Fi kimi şəbəkə yerləşmə mənbələrdən istifadə etməklə əldə edilir. Bu yerləşmə xidmətləri tətbiqin onlardan istifadəsi üçün açıq və cihazınızın onları istifadəsi üçün mövcud olmalıdır. Tətbiqlər bundan sizin təxminən harada olduğunuzu müəyyənləşdirmək üçün istifadə edə bilər."</string>
- <string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"SurfaceFlinger\'ə daxil olmaq"</string>
- <string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"Tətbiqə aşağı səviyyəli SurfaceFnger özəlliklərini istifadə etməyə icazə verir."</string>
- <string name="permlab_readFrameBuffer" msgid="6690504248178498136">"freym buferi oxuyur"</string>
- <string name="permdesc_readFrameBuffer" msgid="4937405521809454680">"Tətbiqə freym buferinin kontentini oxumaq icazəsi verir."</string>
- <string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"Wifi görüntülərini quraşdır"</string>
- <string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"Tətbiqə Wifi görüntülərini quraşdırmağa və onlara qoşulmağa imkan verir."</string>
- <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"WiFi görüntülərini dəyişir"</string>
- <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"Tətbiqə Wifi displeylərinin aşağı səviyyəli funksiyalarını idarə etmək imkanı verir."</string>
- <string name="permlab_captureAudioOutput" msgid="6857134498402346708">"audio çıxışı alın"</string>
- <string name="permdesc_captureAudioOutput" msgid="6210597754212208853">"Tətbiqə audio çıxışı almaq və yenidən yönləndirmək imkanı verir."</string>
- <string name="permlab_captureVideoOutput" msgid="2246828773589094023">"video çıxışı alın"</string>
- <string name="permdesc_captureVideoOutput" msgid="359481658034149860">"Tətbiqə video çıxışı almaq və yenidən yönləndirmək imkanı verir."</string>
- <string name="permlab_captureSecureVideoOutput" msgid="7815398969303382016">"təhlükəsiz video çıxışı alın"</string>
- <string name="permdesc_captureSecureVideoOutput" msgid="2779793064709350289">"Tətbiqə güvənli video çıxışı almaq və yenidən yönləndirmək imkanı verir."</string>
- <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"audio ayarlarınızı dəyişir"</string>
- <string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"Tətbiqə səs və hansı spikerin çıxış üçün istifadə olunduğu kimi qlobal səs ayarlarını dəyişdirməyə imkan verir."</string>
- <string name="permlab_recordAudio" msgid="3876049771427466323">"səs yaz"</string>
- <string name="permdesc_recordAudio" msgid="4906839301087980680">"Tətbiqə mikrofonla audio yazmaq icazəsi verir. İcazə tətbiqə sizin təsdiqiniz olmadan istənilən zaman səs yazma izni verir."</string>
- <string name="permlab_camera" msgid="3616391919559751192">"şəkil və video çəkmək"</string>
- <string name="permdesc_camera" msgid="8497216524735535009">"Tətbiqə kamera ilə şəkil və video çəkməyə imkan yaradır. Bu icazə tətbiqə sizin təsdiqiniz olmadan kameradan istifadə icazəsi verir."</string>
- <string name="permlab_cameraDisableTransmitLed" msgid="2651072630501126222">"kamera istifadə edildikdə LED göstərici ötürülməsini deaktiv edir"</string>
- <string name="permdesc_cameraDisableTransmitLed" msgid="4764585465480295341">"Öncədən quraşdırılmış sistem tətbiqinə kamera tərəfindən istifadə edilən LED indikatorunu söndürmək icazəsi verir."</string>
- <string name="permlab_brick" product="tablet" msgid="2961292205764488304">"planşeti daimi olaraq aradan qaldır"</string>
- <string name="permlab_brick" product="default" msgid="8337817093326370537">"telefonu həmişəlik deaktiv etmək"</string>
- <string name="permdesc_brick" product="tablet" msgid="4334818808001699530">"Tətbiqə planşeti birdəfəlik deaktiv etməyə imkan verir. Bu da çox təhlükəlidir."</string>
- <string name="permdesc_brick" product="default" msgid="5788903297627283099">"Tətbiqə bütün telefonu birdəfəlik deaktivləşdirməyə imkan verir. Bu çox təhlükəlidir."</string>
- <string name="permlab_reboot" product="tablet" msgid="3436634972561795002">"planşeti yenidən yüklənməyə məcbur edir"</string>
- <string name="permlab_reboot" product="default" msgid="2898560872462638242">"telefonu yenidən yüklənməyə məcbur edir"</string>
- <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Tətbiqə planşeti yenidən yükləməyə məcbur etmək imkanı verir."</string>
- <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Tətbiqə telefonu yenidən yükləməyə məcbur etmək üçün imkan verir."</string>
- <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"USB yaddaş fayl sisteminə daxil olmaq"</string>
- <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"SD Kart fayl sisteminə daxil olmaq"</string>
- <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Tətbiqə silinəbilən yaddaşları və ya fayl sistemini quraşdırma və ayırma icazəsi verir."</string>
- <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB yaddaşı silir"</string>
- <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD kartı silir"</string>
- <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Tətbiqə çıxarıla bilən yaddaşı format etməyə imkan verir."</string>
- <string name="permlab_asec_access" msgid="3411338632002193846">"daxili yaddaşınız haqqında məlumat əldə etmək"</string>
- <string name="permdesc_asec_access" msgid="3094563844593878548">"Tətbiqə daxili yaddaş haqqında məlumat almağa imkan verir."</string>
- <string name="permlab_asec_create" msgid="6414757234789336327">"daxili yaddaş yaratmaq"</string>
- <string name="permdesc_asec_create" msgid="4558869273585856876">"Tətbiqə daxili yaddaş yaratmaq üçün imkan verir."</string>
- <string name="permlab_asec_destroy" msgid="526928328301618022">"daxili yaddaşı məhv etmə"</string>
- <string name="permdesc_asec_destroy" msgid="7218749286145526537">"Tətbiqə daxili yaddaşı məhv etmə icazəsi verir."</string>
- <string name="permlab_asec_mount_unmount" msgid="8877998101944999386">"daxili yaddaşı montaj və ya demontaj etmək"</string>
- <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Tətbiqə daxili yaddaşı quraşdırma/ayırma icazəsi verir."</string>
- <string name="permlab_asec_rename" msgid="7496633954080472417">"daxili yaddaşın adını dəyiş"</string>
- <string name="permdesc_asec_rename" msgid="1794757588472127675">"Tətbiqə daxili yaddaşın adını dəyişmək imkanı verir."</string>
- <string name="permlab_vibrate" msgid="7696427026057705834">"vibrasiyaya nəzarət edir"</string>
- <string name="permdesc_vibrate" msgid="6284989245902300945">"Tətbiqə vibratoru idarə etmə icazəsi verir."</string>
- <string name="permlab_flashlight" msgid="2155920810121984215">"Flash işığını idarə edir"</string>
- <string name="permdesc_flashlight" msgid="6522284794568368310">"Tətbiqə siqnal işığı na nəzarət etməyə imkan verir."</string>
- <string name="permlab_manageUsb" msgid="1113453430645402723">"USB cihazlar üçün tərcihləri və icazələri idarə etmək"</string>
- <string name="permdesc_manageUsb" msgid="7776155430218239833">"Tətbiqə USB cihazlar üçün olan tərcihləri və icazələri idarə etməyə imkan verir."</string>
- <string name="permlab_accessMtp" msgid="4953468676795917042">"MTP protokol həyata keçirmək"</string>
- <string name="permdesc_accessMtp" msgid="6532961200486791570">"Kernel MTP drayverə girişə imkan verir ki, MTP USB protokolunu həyata keçirsin."</string>
- <string name="permlab_hardware_test" msgid="4148290860400659146">"avadanlığı sınaq edir"</string>
- <string name="permdesc_hardware_test" msgid="6597964191208016605">"Tətbiqə avadanlığı yoxlamaq üçün müxtəlif periferiyaları kontrol etməyə imkan verir."</string>
- <string name="permlab_callPhone" msgid="3925836347681847954">"telefon nömrələrinə birbaşa zəng edir"</string>
- <string name="permdesc_callPhone" msgid="3740797576113760827">"Tətbiqə Sizin müdaxiləniz olmadan telefon zəngləri etməyə imkan verir. Zərərli tətbiqlər Sizdən xəbərsiz şəkildə müxtəlif zənglər edərək, Sizə maddi ziyan vura bilər. Qeyd: Bu, tətbiqlərə təcili nömrələrə zəng etməyə icazə vermir."</string>
- <string name="permlab_callPrivileged" msgid="4198349211108497879">"istənilən nömrəyə birbaşa zəng edir"</string>
- <string name="permdesc_callPrivileged" msgid="1689024901509996810">"Tətbiqə Sizin müdaxiləniz olmadan, təcili zənglər də daxil olmaqla, istənilən telefon zəngini etməyə imkan verir. Zərərli tətbiqlər bundan istifadə edərək, təcili nömrələrə qanunsuz zəng vurmaqla Sizin üçün hüquqi problemlər yarada bilər."</string>
- <string name="permlab_performCdmaProvisioning" product="tablet" msgid="4842576994144604821">"CDMA planşet ayarlarına birbaşa başlamaq"</string>
- <string name="permlab_performCdmaProvisioning" product="default" msgid="5604848095315421425">"CDMA telefon quraşdırmalarına birbaşa başlamaq"</string>
- <string name="permdesc_performCdmaProvisioning" msgid="1994193538802314186">"Tətbiqə CDMA hazırlığını başlatma icazəsi verir. Zərərli tətbiqlər ehtiyac olmadıqda CDMA hazırlığını başlada bilərlər."</string>
- <string name="permlab_locationUpdates" msgid="7785408253364335740">"məkan güncəlləmə bildirişlərini idarə edir"</string>
- <string name="permdesc_locationUpdates" msgid="1120741557891438876">"Tətbiqə radiodan gələn məkan güncəllənmələrini aktiv və ya deaktiv etməyə imkan verir. Normal tətbiqlər tərəfindən istifadə olunmur."</string>
- <string name="permlab_checkinProperties" msgid="7855259461268734914">"qeydiyyat xüsusiyyətlərini əldə edir"</string>
- <string name="permdesc_checkinProperties" msgid="4024526968630194128">"Tətbiqə giriş qeydi servisi tərəfindən yüklənmiş mülkiyyətə girişi oxumaq/yazmaq imkanl verir. Normal tətbiqlər üçün nəzərdə tutulmayıb."</string>
- <string name="permlab_bindGadget" msgid="776905339015863471">"vidcetlər seç"</string>
- <string name="permdesc_bindGadget" msgid="8261326938599049290">"Tətbiqə sistemə hansı vidcetin hansı tətbiq tərəfindən istifadə edilə bilməsini deməyə icazə verir. Bu icazəli tətbiqlər şəxsi məlumatlara və digər tətbiqlərə çıxış verə bilər. Normal tətbiqlər tərəfindən istifadə üçün deyil."</string>
- <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"telefon statusunu dəyişmək"</string>
- <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Tətbiqə cihazın telefon funksiyalarını idarə etmək imkanı verir. Belə icazəli tətbiq Sizi xəbərdar etmədən şəbəkələri qoşa, telefon radiosunu yandırıb-söndürə bilər."</string>
- <string name="permlab_readPhoneState" msgid="9178228524507610486">"telefon statusunu və identifikasiyanı oxuyur"</string>
- <string name="permdesc_readPhoneState" msgid="1639212771826125528">"Tətbiqə cihazın telefon funksiyalarına giriş icazəsi verir. Belə icazəli tətbiq bu telefonun nömrəsini və cihaz İD\'ni, zəngin aktiv olub-olmadığını və zəng edilən nömrəni müəyyən edə bilər."</string>
- <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"planşetin yuxu rejiminin qarşısını almaq"</string>
- <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"telefonun yuxu rejiminə keçməsini əngəllə"</string>
- <string name="permdesc_wakeLock" product="tablet" msgid="7311319824400447868">"Tətbiqə planşetin yuxu rejimini qadağan etməyə imkan verir."</string>
- <string name="permdesc_wakeLock" product="default" msgid="8559100677372928754">"Tətbiqə telefonun yuxu rejimini qadağan etmək imkanı verir."</string>
- <string name="permlab_devicePower" product="tablet" msgid="2787034722616350417">"planşeti yandırma və ya söndürmə"</string>
- <string name="permlab_devicePower" product="default" msgid="4928622470980943206">"telefonu yandırmaq və ya söndürmək"</string>
- <string name="permdesc_devicePower" product="tablet" msgid="6689862878984631831">"Tətbiqə planşeti yandırmağa və söndürməyə imkan verir."</string>
- <string name="permdesc_devicePower" product="default" msgid="6037057348463131032">"Tətbiqə telefonu yandırıb söndürmə icazəsi verir."</string>
- <string name="permlab_factoryTest" msgid="3715225492696416187">"zavod test rejimində işləyir"</string>
- <string name="permdesc_factoryTest" product="tablet" msgid="3952059318359653091">"Planşet avadanlığına tam girişə imkan verməklə aşağı səviyyəli istehsalçı sınağı kimi işləyir. Yalnız planşet istehsalçı sınaq rejimində olduqda işləyir."</string>
- <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Bir aşağı səviyyəli istehsalçı testi kimi çalışdırın, telefon hardware üçün tam giriş imkanı verir. Ancaq telefon, istehsalçı test rejimində çalışdığı zaman aktivdir."</string>
- <string name="permlab_setWallpaper" msgid="6627192333373465143">"divar kağızı yerləşdirir"</string>
- <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Tətbiqə sistemə divar kağızı yerləşdirmək icazəsi verir."</string>
- <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"divar kağızı ölçüsünü verir"</string>
- <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Tətbiqə sistem divar kağızı ölçüsü göstərişlərini müəyyən etməyə imkan verir."</string>
- <string name="permlab_masterClear" msgid="2315750423139697397">"fabrik defoltuna sıfırlamaq"</string>
- <string name="permdesc_masterClear" msgid="3665380492633910226">"Tətbiqə bütün məlumatları, nizamları və quraşdırılmış tətbiqləri silərək sistemi fabrik nizamlarına qaytarmaq imkanı verir."</string>
- <string name="permlab_setTime" msgid="2021614829591775646">"vaxtı təyin edir"</string>
- <string name="permdesc_setTime" product="tablet" msgid="1896341438151152881">"Tətbiqə planşetin saat vaxtını dəyişməyə imkan verir."</string>
- <string name="permdesc_setTime" product="default" msgid="1855702730738020">"Tətbiqə telefonun saat vaxtını dəyişməyə imkan verir."</string>
- <string name="permlab_setTimeZone" msgid="2945079801013077340">"vaxt zonasını quraşdırır"</string>
- <string name="permdesc_setTimeZone" product="tablet" msgid="1676983712315827645">"Tətbiqə planşetin vaxt zonasını dəyişmə icazəsi verir."</string>
- <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Tətbiqə telefon saat zolağını dəyişmək üçün imkan verir."</string>
- <string name="permlab_accountManagerService" msgid="4829262349691386986">"AccountManagerService kimi davranır"</string>
- <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Tətbiqə AccountAuthenticators\'ə zəng etməyə imkan verir."</string>
- <string name="permlab_getAccounts" msgid="1086795467760122114">"cihazda hesabları tapır"</string>
- <string name="permdesc_getAccounts" product="tablet" msgid="2741496534769660027">"Tətbiqə planşet tərəfindən bilinən hesabların siyahısını alma icazəsi verir. Bu quraşdırdığınız tətbiqlər tərəfindən yaradılmış istənilən hesab ola bilər."</string>
- <string name="permdesc_getAccounts" product="default" msgid="3448316822451807382">"Tətbiqə telefonda olan hesabların siyahısını əldə etməyə imkan verir. Buna quraşdırdığınız istənilən tətbiq tərəfindən yaradılan hesablar da aiddir."</string>
- <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"hesablar yaradır və parollar təyin edir"</string>
- <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Tətbiqə AccountManager\'in hesab yaratmaq və parol almaq və açmaq daxil olmaqla bərabər, hesab təsdiqləyici imkanlarını istifadə etməyə icazə verir."</string>
- <string name="permlab_manageAccounts" msgid="4983126304757177305">"hesabları əlavə edir və ya silir"</string>
- <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Tətbiqə hesabların əlavə olunması və ya silinməsi, həmçinin onların parollarının silinməsi kimi əməliyyatları icra etməyə imkan verir."</string>
- <string name="permlab_useCredentials" msgid="235481396163877642">"cihazda hesablar istifadə etmək"</string>
- <string name="permdesc_useCredentials" msgid="7984227147403346422">"Tətbiqə autentifikasiya tokenləri sorğularını göndərməyə icazə verir."</string>
- <string name="permlab_accessNetworkState" msgid="4951027964348974773">"şəbəkə bağlantılarına baxmaq"</string>
- <string name="permdesc_accessNetworkState" msgid="8318964424675960975">"Tətbiqə mövcud olan və qoşulan şəbəkələr kimi qoşulmalar haqqında məlumatı görməyə icazə verir."</string>
- <string name="permlab_createNetworkSockets" msgid="8018758136404323658">"tam şəbəkə girişi"</string>
- <string name="permdesc_createNetworkSockets" msgid="3403062187779724185">"Tətbiqə şəbəkə soketlərini yaratmağa və fərdi şəbəkə protokollarını istifadə etməyə imkan verir. Brauzer və digər tətbiqlər datanın internetə ötürülməsini təmin edən vəsaitlər verir, ona görə də datanın internetə gönrədilməsi üçün bu icazə tələb olunmur."</string>
- <string name="permlab_writeApnSettings" msgid="505660159675751896">"şəbəkə nizamlarını və trafiki dəyişdirir/qarşısını alır"</string>
- <string name="permdesc_writeApnSettings" msgid="5333798886412714193">"Tətbiqə şəbəkə trafikinin qarşısını almaq üçün şəbəkə nizamlarını dəyişmə icazəsi verir, məsələn proksini və ya istənilən APN-in portunu. Zərərli tətbiqlər şəbəkə paketlərini sizin bilginiz olmadan monitorinq edə, yönləndirə və ya redaktə edə bilər."</string>
- <string name="permlab_changeNetworkState" msgid="958884291454327309">"şəbəkə bağlantısını dəyişir"</string>
- <string name="permdesc_changeNetworkState" msgid="6789123912476416214">"Tətbiqə şəbəkə vəziyyətini dəyişməyə icazə verir."</string>
- <string name="permlab_changeTetherState" msgid="5952584964373017960">"Sərhədli bağlantını dəyişir"</string>
- <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Tətbiqə birləşilmiş şəbəkə bağlantısının statusunu dəyişməyə imkan verir."</string>
- <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"arxafon data istifadəsi ayarını dəyişir"</string>
- <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Tətbiqə fon rejimi nizamlarını dəyişməyə icazə verir."</string>
- <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi bağlantılarına baxmaq"</string>
- <string name="permdesc_accessWifiState" msgid="5002798077387803726">"Tətbiqə Wi-Fi şəbəkələri haqqında məlumatı görməyə icazə verir, məsələn, Wi-Fi mövcudluğu və qoşulmuş Wi-Fi cihazlarının adları."</string>
- <string name="permlab_changeWifiState" msgid="6550641188749128035">"Wi-Fi şəbəkəsinə qoşulmaq və ya ayrılmaq"</string>
- <string name="permdesc_changeWifiState" msgid="7137950297386127533">"Tətbiqə Wi-Fi çıxış nöqtəsinə qoşulmaq və ondan ayrılmaq və cihazın Wi-Fi şəbəkə nizamlarını dəyişməyə icazə verir."</string>
- <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fi Multicast qəbuluna icazə ver"</string>
- <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"Tətbiqə Wi-Fi şəbəkədə sizin planşetdən başqa digər multikast adreslərə yönləndirilmiş paketləri almaq icazəsi verir. Bu qeyri-çoxadresli rejimdən fəqli olaraq daha çox enerji işlədir."</string>
- <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"Tətbiqə qrup ünvanlar istifadə etməklə, Wi-Fi şəbəkəsində olan bütün cihazlara göndərilmiş paketləri qəbul etməyə imkan verir. Buna daha çox enerji sərf olunur."</string>
- <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Bluetooth ayarlarını əldə edir"</string>
- <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Tətbiqə yerli Bluetooth planşetinin konfiqurasiyasını görməyə və məsafədən cihazları tapmağa və cütləməyə imkan verir."</string>
- <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Tətbiqə lokal Bluetooth telefonunu konfiqurə etməyə və uzaq cihazları kəşf etmək və onlara qoşulmaq icazəsi verir."</string>
- <string name="permlab_accessWimaxState" msgid="4195907010610205703">"WiMAX\'a qoşul və bağlantını kəs"</string>
- <string name="permdesc_accessWimaxState" msgid="6360102877261978887">"Tətbiqə WiMAX mövcudluğu və qoşulmuş WiMAX şəbəkələrini təyin etməyə icazə verir."</string>
- <string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX vəziyyətini dəyişir"</string>
- <string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"Tətbiqə planşeti WiMAX şəbəkələrinə qoşmaq və onlardan ayırmaq icazəsi verir."</string>
- <string name="permdesc_changeWimaxState" product="default" msgid="697025043004923798">"Tətbiqə telefonu WiMAX şəbəkəsinə qoşmağa və ya WiMAX şəbəkəsindən ayırmağa imkan verir."</string>
- <string name="permlab_bluetooth" msgid="6127769336339276828">"Bluetooth cihazları ilə cütləndirmək"</string>
- <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"Tətbiqə yerli Bluetooth planşetinin konfiqurasiyasını görməyə və cütlənmiş cihazlarla bağlantılar etməyə və qəbul etməyə imkan verir."</string>
- <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"Tətbiqə Bluetooth və ya telefon konfiqurasiyalarını görməyə və qoşulmuş cihazlarla əlaqə qurmağa və qəbul etməyə icazə verir."</string>
- <string name="permlab_nfc" msgid="4423351274757876953">"Near Field Communication\'ı kontrol et"</string>
- <string name="permdesc_nfc" msgid="7120611819401789907">"Tətbiqə Yaxın Məsafə Kommunikasiyası (NFC) teqləri, kartları və oxuyucuları ilə əlaqə qurmağa icazə verir."</string>
- <string name="permlab_disableKeyguard" msgid="3598496301486439258">"Ekran kilidini deaktiv edir"</string>
- <string name="permdesc_disableKeyguard" msgid="6034203065077122992">"Tətbiqə kilid açarını və təhlükəsizlik parolunu deaktiv etməyə imkan verir. Qanuni misal budur ki, telefon zəng qəbul edən zaman kilidi açır və zəng qurtarandan sonra kilidi bağlayır."</string>
- <string name="permlab_readSyncSettings" msgid="6201810008230503052">"sinx ayarlarını oxu"</string>
- <string name="permdesc_readSyncSettings" msgid="2706745674569678644">"Tətbiqə hesablar üçün sinxronizasiya nizamlarını oxuma icazəsi verir. Məsələn, bu Şəxslər tətbiqinin sinxronizə olunub-olunmadığını təyin edə bilər."</string>
- <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"sinxronizasiyaya davam edir və onu söndürür"</string>
- <string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"Tətbiqə hesab üçün sinxronizasiya nizamlarını dəyişməyə icazə verir. Məsələn, bu istifadəçi hesablı Şəxslər tətbiqinin sinxronizasiyasını başlamaq üçün istifadə edilə bilər."</string>
- <string name="permlab_readSyncStats" msgid="7396577451360202448">"sinxronizasiya statistikasını oxumaq"</string>
- <string name="permdesc_readSyncStats" msgid="1510143761757606156">"Tətbiqə sync tədbirlərinin tarixçəsi və nə qədər datanın sinx olduğu da daxil olmaqla bərabər, hər hansı bir hesab üçün olan sinx statlarını oxumağa imkan verir."</string>
- <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"abunə olunmuş xəbərləri oxuyur"</string>
- <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Tətbiqə hazırda sinxron lentlər haqqında ətraflı məlumat almaq üçün imkan verir."</string>
- <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"abunə olunmuş xəbərləri yazır"</string>
- <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Tətbiqə cari sinxronlaşmış lentlərinizə dəyişiklik etmək imkanı verir. Zərərli tətbiqlər sixronlaşmış lentlərinizi dəyişə bilər."</string>
- <string name="permlab_readDictionary" msgid="4107101525746035718">"lüğətə əlavə etdiyiniz şərtləri oxumaq"</string>
- <string name="permdesc_readDictionary" msgid="659614600338904243">"Tətbiqə istifadəçinin lüğətdə saxladığı bütün sözləri, adları və frazaları oxumaq icazəsi verir."</string>
- <string name="permlab_writeDictionary" msgid="2183110402314441106">"istifadəçi lüğətinə sözlər əlavə etmək"</string>
- <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Tətbiqə istifadəçi lüğətinə yeni sözlər yazmağa imkan verir."</string>
- <string name="permlab_sdcardRead" product="nosdcard" msgid="8235341515605559677">"qorunmuş yaddaşa daxil olmağa cəhd etmək"</string>
- <string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"qorunmuş yaddaşa daxil olmağa cəhd etmək"</string>
- <string name="permdesc_sdcardRead" product="nosdcard" msgid="3642473292348132072">"Tətbiqə gələcək cihazlarda əlçatımlı olacaq USB yaddaş üçün icazə testi etməyə imkan verir."</string>
- <string name="permdesc_sdcardRead" product="default" msgid="5914402684685848828">"Tətbiqə gələcək cihazlarda mövcud olacaq SD kart üçün icazəni test etmək üçün imkan verir."</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USB yaddaşınızın məzmununu dəyişmək və ya silmək"</string>
- <string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"SD kart kontentlərini dəyişir və ya silir"</string>
- <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Tətbiqə USB yaddaşa yazmağa imkan verir."</string>
- <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Tətbiqə SD karta yazma icazəsi verir."</string>
- <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"daxili media yaddaşı kontentini dəyişir/silir"</string>
- <string name="permdesc_mediaStorageWrite" product="default" msgid="8189160597698529185">"Tətbiqə daxili media yaddaşdakı kontenti redaktə etmək icazəsi verir."</string>
- <string name="permlab_manageDocs" product="default" msgid="5778318598448849829">"sənəd yaddaşını nizamlayır"</string>
- <string name="permdesc_manageDocs" product="default" msgid="8704323176914121484">"Tətbiqə sənəd yaddaşını idarə etməyə imkan verir."</string>
- <string name="permlab_sdcardAccessAll" msgid="8150613823900460576">"bütün istifadəçilərin xarici yaddaşına daxil ol"</string>
- <string name="permdesc_sdcardAccessAll" msgid="3215208357415891320">"Tətbiqə bütün istifadəçilər üçün olan xarici yaddaşa giriş imkanı verir."</string>
- <string name="permlab_cache_filesystem" msgid="5656487264819669824">"keş fayl sisteminə girmək"</string>
- <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Tətbiqə keş fayl sistemini oxumağa və yazmağa icazə verir."</string>
- <string name="permlab_use_sip" msgid="5986952362795870502">"İnternet zəngləri etmək və ya qəbul etmək"</string>
- <string name="permdesc_use_sip" msgid="4717632000062674294">"Tətbiqə internet zənglərinin göndərilməsi və qəbul edilməsi üçün SIP servisindən istifadə icazəsi verir."</string>
- <string name="permlab_readNetworkUsageHistory" msgid="7862593283611493232">"tarixi şəbəkə istifadəsini oxu"</string>
- <string name="permdesc_readNetworkUsageHistory" msgid="7689060749819126472">"Tətbiqə xüsusi şəbəkələr və tətbiqlər üçün tarixi şəbəkə istifadəsini oxumağa icazə verir."</string>
- <string name="permlab_manageNetworkPolicy" msgid="2562053592339859990">"şəbəkə siyasətini idarə etmək"</string>
- <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Tətbiqə şəbəkə qanunlarını və tətbiqin xüsusi qaydalarını idarə etmək imkanı verir."</string>
- <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"şəbəkə istifadə hesabını dəyişmək"</string>
- <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Tətbiqə şəbəkə istifadəsinin tətbiqlərə qarşı nizamlarını redaktə etməyə icazə verir. Normal tətbiqlər tərəfindən istifadə edilmir."</string>
- <string name="permlab_markNetworkSocket" msgid="3658527214914959749">"soket işarələrini dəyişin"</string>
- <string name="permdesc_markNetworkSocket" msgid="7655568433696356578">"Tətbiqə araşdırma üçün soket işarələrini dəyişmək imkanı verir"</string>
- <string name="permlab_accessNotifications" msgid="7673416487873432268">"bildirişlərə daxil ol"</string>
- <string name="permdesc_accessNotifications" msgid="458457742683431387">"Tətbiqə bildirişləri əldə etməyə, sınamağa və təmizləməyə imkan verir, buna digər tətbiqlər tərəfindən verilmiş bildirişlər də daxildir."</string>
- <string name="permlab_bindNotificationListenerService" msgid="7057764742211656654">"bildiriş dinləmə xidmətinə bağlanır"</string>
- <string name="permdesc_bindNotificationListenerService" msgid="985697918576902986">"Sahibinə yüksək səviyyəli bildiriş dinləmə servisi ilə əlaqə saxlamağa icazə verir. Normal tətbiqlər tərəfindən heç vaxt istənilməməlidir."</string>
- <string name="permlab_invokeCarrierSetup" msgid="3699600833975117478">"operator xidmətli konfiurasiya tətbiqinə müraciət edin"</string>
- <string name="permdesc_invokeCarrierSetup" msgid="4159549152529111920">"Sahibinə operator xidmətli tətbiq konfiqurasiyasına müraciət imkanı verir. Normal tətbiqlər üçün tələb olunmamalıdır."</string>
- <string name="permlab_accessNetworkConditions" msgid="8206077447838909516">"şəbəkə şəraiti haqqında müşahidələr üçün qulaq asmaq"</string>
- <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"Tətbiqə şəbəkə şəraiti üzrə müşahidələr üçün qulaq asmaq imkanı verir. Normal tətbiqlər üçün heç vaxt lazım olmamalıdır."</string>
- <string name="policylab_limitPassword" msgid="4497420728857585791">"Parol qaydalarını təyin edin"</string>
- <string name="policydesc_limitPassword" msgid="3252114203919510394">"Ekran kilidini açan şifrələrin uzunluğunu və onlardakı icazə verilən işarələrə nəzarət edir."</string>
- <string name="policylab_watchLogin" msgid="914130646942199503">"Ekran kilidi cəhdlərini monitorinq et"</string>
- <string name="policydesc_watchLogin" product="tablet" msgid="3215729294215070072">"Ekan kilidini açarkən daxil edilmiş yanlış parollara baxın və əgər həddindən çox yanlış parollar daxil edilibsə, planşeti kilidləyin və ya bütün planşet datasını silin."</string>
- <string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"Ekan kilidini açarkən daxil edilmiş yanlış parollara baxın və əgər həddindən çox yanlış parollar daxil edilibsə, telefonu kilidləyin və ya bütün telefon datasını silin."</string>
- <string name="policylab_resetPassword" msgid="2620077191242688955">"Ekran kilid parolunu dəyişin"</string>
- <string name="policydesc_resetPassword" msgid="605963962301904458">"Ekran kilidini açan şifrəni dəyişdirin."</string>
- <string name="policylab_forceLock" msgid="2274085384704248431">"Ekranı kilidləyin"</string>
- <string name="policydesc_forceLock" msgid="1141797588403827138">"Ekranın nə vaxt və necə kilidlənməsinə nəzarət edir."</string>
- <string name="policylab_wipeData" msgid="3910545446758639713">"Bütün məlumatları silin"</string>
- <string name="policydesc_wipeData" product="tablet" msgid="4306184096067756876">"Planşetin datasını xəbərdarlıq olmadan, zavod data sıfırlaması ilə silin."</string>
- <string name="policydesc_wipeData" product="default" msgid="5096895604574188391">"Telefonun datasını xəbərdarlıq olmadan, zavod data sıfırlaması ilə silin"</string>
- <string name="policylab_setGlobalProxy" msgid="2784828293747791446">"Cihazın qlobal proksisini ayarlayın"</string>
- <string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"Siyasət aktiv olarkən cihazın qlobal proksisini istifadə üçün qurun. Yalnız ilk cihaz admini effektiv qlobal proksini təyin edir."</string>
- <string name="policylab_expirePassword" msgid="885279151847254056">"Ekran kilidi şifrəsinə son zaman seç"</string>
- <string name="policydesc_expirePassword" msgid="1729725226314691591">"Ekran kilidi parolunun nə qədər tez-tez dəyişməsini kontrol edin."</string>
- <string name="policylab_encryptedStorage" msgid="8901326199909132915">"Yaddaş şifrələnməsini ayarlayın"</string>
- <string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Tətbiq məlumatlarının şifrələnməsini tələb edir."</string>
- <string name="policylab_disableCamera" msgid="6395301023152297826">"Kameraları dekativ edin"</string>
- <string name="policydesc_disableCamera" msgid="2306349042834754597">"Bütün cihaz kameralarının istifadəsini əngəllə."</string>
- <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Klaviatura kilidində funksiyaları deaktiv edin"</string>
- <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Klaviatura kilidində bəzi funksiyaların qarşısını alın."</string>
- <string-array name="phoneTypes">
- <item msgid="8901098336658710359">"Əsas səhifə"</item>
- <item msgid="869923650527136615">"Mobil"</item>
- <item msgid="7897544654242874543">"İş"</item>
- <item msgid="1103601433382158155">"İş Faksı"</item>
- <item msgid="1735177144948329370">"Ev Faksı"</item>
- <item msgid="603878674477207394">"Peycer"</item>
- <item msgid="1650824275177931637">"Digər"</item>
- <item msgid="9192514806975898961">"Şəxsi"</item>
- </string-array>
- <string-array name="emailAddressTypes">
- <item msgid="8073994352956129127">"Ana səhifə"</item>
- <item msgid="7084237356602625604">"İş"</item>
- <item msgid="1112044410659011023">"Digər"</item>
- <item msgid="2374913952870110618">"Fərdi"</item>
- </string-array>
- <string-array name="postalAddressTypes">
- <item msgid="6880257626740047286">"Əsas səhifə"</item>
- <item msgid="5629153956045109251">"İş"</item>
- <item msgid="4966604264500343469">"Digər"</item>
- <item msgid="4932682847595299369">"Düzənləyin"</item>
- </string-array>
- <string-array name="imAddressTypes">
- <item msgid="1738585194601476694">"Əsas səhifə"</item>
- <item msgid="1359644565647383708">"İş"</item>
- <item msgid="7868549401053615677">"Digər"</item>
- <item msgid="3145118944639869809">"Fərdi"</item>
- </string-array>
- <string-array name="organizationTypes">
- <item msgid="7546335612189115615">"İş"</item>
- <item msgid="4378074129049520373">"Digər"</item>
- <item msgid="3455047468583965104">"Fərdi"</item>
- </string-array>
- <string-array name="imProtocols">
- <item msgid="8595261363518459565">"AIM"</item>
- <item msgid="7390473628275490700">"Windows Live"</item>
- <item msgid="7882877134931458217">"Yahoo"</item>
- <item msgid="5035376313200585242">"Skype"</item>
- <item msgid="7532363178459444943">"QQ"</item>
- <item msgid="3713441034299660749">"Google Söhbət"</item>
- <item msgid="2506857312718630823">"ICQ"</item>
- <item msgid="1648797903785279353">"Jabber"</item>
- </string-array>
- <string name="phoneTypeCustom" msgid="1644738059053355820">"Şəxsi"</string>
- <string name="phoneTypeHome" msgid="2570923463033985887">"Ev"</string>
- <string name="phoneTypeMobile" msgid="6501463557754751037">"Mobil"</string>
- <string name="phoneTypeWork" msgid="8863939667059911633">"İş"</string>
- <string name="phoneTypeFaxWork" msgid="3517792160008890912">"İş Faksı"</string>
- <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Ev Faksı"</string>
- <string name="phoneTypePager" msgid="7582359955394921732">"Peycer"</string>
- <string name="phoneTypeOther" msgid="1544425847868765990">"Digər"</string>
- <string name="phoneTypeCallback" msgid="2712175203065678206">"Geriyə zəng"</string>
- <string name="phoneTypeCar" msgid="8738360689616716982">"Avtomobil"</string>
- <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Şirkət"</string>
- <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
- <string name="phoneTypeMain" msgid="6766137010628326916">"Əsas"</string>
- <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Digər faks"</string>
- <string name="phoneTypeRadio" msgid="4093738079908667513">"Radio"</string>
- <string name="phoneTypeTelex" msgid="3367879952476250512">"Teleks"</string>
- <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
- <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Mobil iş telefonu"</string>
- <string name="phoneTypeWorkPager" msgid="649938731231157056">"İş Peyceri"</string>
- <string name="phoneTypeAssistant" msgid="5596772636128562884">"Köməkçi"</string>
- <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
- <string name="eventTypeCustom" msgid="7837586198458073404">"Fərdi"</string>
- <string name="eventTypeBirthday" msgid="2813379844211390740">"Doğum günü"</string>
- <string name="eventTypeAnniversary" msgid="3876779744518284000">"İldönümü"</string>
- <string name="eventTypeOther" msgid="7388178939010143077">"Digər"</string>
- <string name="emailTypeCustom" msgid="8525960257804213846">"Fərdi"</string>
- <string name="emailTypeHome" msgid="449227236140433919">"Əsas səhifə"</string>
- <string name="emailTypeWork" msgid="3548058059601149973">"İş"</string>
- <string name="emailTypeOther" msgid="2923008695272639549">"Digər"</string>
- <string name="emailTypeMobile" msgid="119919005321166205">"Mobil"</string>
- <string name="postalTypeCustom" msgid="8903206903060479902">"Fərdi"</string>
- <string name="postalTypeHome" msgid="8165756977184483097">"Əsas səhifə"</string>
- <string name="postalTypeWork" msgid="5268172772387694495">"İş"</string>
- <string name="postalTypeOther" msgid="2726111966623584341">"Digər"</string>
- <string name="imTypeCustom" msgid="2074028755527826046">"Fərdi"</string>
- <string name="imTypeHome" msgid="6241181032954263892">"Ana səhifə"</string>
- <string name="imTypeWork" msgid="1371489290242433090">"İş"</string>
- <string name="imTypeOther" msgid="5377007495735915478">"Digər"</string>
- <string name="imProtocolCustom" msgid="6919453836618749992">"Şəxsi"</string>
- <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
- <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
- <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
- <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
- <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
- <string name="imProtocolGoogleTalk" msgid="493902321140277304">"Görüşlər"</string>
- <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
- <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
- <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
- <string name="orgTypeWork" msgid="29268870505363872">"İş"</string>
- <string name="orgTypeOther" msgid="3951781131570124082">"Digər"</string>
- <string name="orgTypeCustom" msgid="225523415372088322">"Fərdi"</string>
- <string name="relationTypeCustom" msgid="3542403679827297300">"Şəxsi"</string>
- <string name="relationTypeAssistant" msgid="6274334825195379076">"Köməkçi"</string>
- <string name="relationTypeBrother" msgid="8757913506784067713">"Qardaş"</string>
- <string name="relationTypeChild" msgid="1890746277276881626">"Uşaq"</string>
- <string name="relationTypeDomesticPartner" msgid="6904807112121122133">"Ev yoldaşı"</string>
- <string name="relationTypeFather" msgid="5228034687082050725">"Ata"</string>
- <string name="relationTypeFriend" msgid="7313106762483391262">"Dost"</string>
- <string name="relationTypeManager" msgid="6365677861610137895">"Müdir"</string>
- <string name="relationTypeMother" msgid="4578571352962758304">"Ana"</string>
- <string name="relationTypeParent" msgid="4755635567562925226">"Valideyn"</string>
- <string name="relationTypePartner" msgid="7266490285120262781">"Ortaq"</string>
- <string name="relationTypeReferredBy" msgid="101573059844135524">"Dəvət edən"</string>
- <string name="relationTypeRelative" msgid="1799819930085610271">"Qohum"</string>
- <string name="relationTypeSister" msgid="1735983554479076481">"Bacı"</string>
- <string name="relationTypeSpouse" msgid="394136939428698117">"Həyat yoldaşı"</string>
- <string name="sipAddressTypeCustom" msgid="2473580593111590945">"Fərdi"</string>
- <string name="sipAddressTypeHome" msgid="6093598181069359295">"Əsas səhifə"</string>
- <string name="sipAddressTypeWork" msgid="6920725730797099047">"İş"</string>
- <string name="sipAddressTypeOther" msgid="4408436162950119849">"Digər"</string>
- <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"PİN kodu daxil edin"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Şifrə daxil etmək üçün toxunun"</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>
- <string name="keyguard_label_text" msgid="861796461028298424">"Kilidi açmaq üçün Menyu, sonra 0 basın."</string>
- <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"Təcili nömrə"</string>
- <string name="lockscreen_carrier_default" msgid="8963839242565653192">"Xidmət yoxdur."</string>
- <string name="lockscreen_screen_locked" msgid="7288443074806832904">"Ekran kilidlənib."</string>
- <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"Təcili zəng kilidini açmaq və ya yerləşdirmək üçün Menyu düyməsinə basın."</string>
- <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"Kilidi açmaq üçün Menyu düyməsinə basın."</string>
- <string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"Kilidi açmaq üçün model çəkin"</string>
- <string name="lockscreen_emergency_call" msgid="5347633784401285225">"Təcili zəng"</string>
- <string name="lockscreen_return_to_call" msgid="5244259785500040021">"Zəngə qayıt"</string>
- <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Düzdür!"</string>
- <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Bir də cəhd edin"</string>
- <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Bir daha cəhd et"</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Sifət kilidi cəhdləriniz bitdi"</string>
- <string name="lockscreen_plugged_in" msgid="8057762828355572315">"Batareya yığılır, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_charged" msgid="321635745684060624">"Dolub"</string>
- <string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_low_battery" msgid="1482873981919249740">"Elektrikə qoşun."</string>
- <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM kart yoxdur."</string>
- <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Planşetdə SIM kart yoxdur."</string>
- <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Telefonda SİM kart yoxdur."</string>
- <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"SİM kart daxil edin."</string>
- <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SİM kart yoxdur və ya oxuna bilinmir. SİM kart daxil edin."</string>
- <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Yararsız SIM kart."</string>
- <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Sizin SİM kartınız daimi olaraq deaktivləşib.\n Başqa SİM kart üçün simsiz xidmət provayderinizə müraciət edin."</string>
- <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Əvvəlki trek düyməsi"</string>
- <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Növbəti trek düyməsi"</string>
- <string name="lockscreen_transport_pause_description" msgid="7659088786780128001">"Pauza düyməsi"</string>
- <string name="lockscreen_transport_play_description" msgid="5888422938351019426">"Oxutma düyməsi"</string>
- <string name="lockscreen_transport_stop_description" msgid="4562318378766987601">"Dayandırma düyməsi"</string>
- <string name="emergency_calls_only" msgid="6733978304386365407">"Yalnız təcili zənglər"</string>
- <string name="lockscreen_network_locked_message" msgid="143389224986028501">"Şəbəkə kilidlidir"</string>
- <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM kart PUK ilə kilidlənib."</string>
- <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"İstifadəçi Təlimatlarına baxın və ya Müştəri Xidmətlərinə müraciət edin."</string>
- <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"SIM kart kilidlənib."</string>
- <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"SİM kartın kilidi açılır..."</string>
- <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"Siz kilid modelini <xliff:g id="NUMBER_0">%d</xliff:g> dəfə yanlış çəkdiniz. \n\n <xliff:g id="NUMBER_1">%d</xliff:g> saniyə içində yenidən sınayın."</string>
- <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="2725973286239344555">"Şifrənizi <xliff:g id="NUMBER_0">%d</xliff:g> dəfə yanlış daxil etdiniz.\n\n <xliff:g id="NUMBER_1">%d</xliff:g> saniyə ərzində yenidən yoxlayın"</string>
- <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"Siz PIN nömrənizi <xliff:g id="NUMBER_0">%d</xliff:g> dəfə yanlış daxil etdiniz. \n \n <xliff:g id="NUMBER_1">%d</xliff:g> saniyə içində təkrar sınayın."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"Siz kilidi açmaq üçün şablonu <xliff:g id="NUMBER_0">%d</xliff:g> dəfə səhv çəkdiniz. <xliff:g id="NUMBER_1">%d</xliff:g> daha uğursuz cəhddən sonra planşetin kilidini Google hesabınıza daxil olmaqla açmağınız istəniləcək.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> saniyə ərzində bir daha yoxlayın."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"Siz kilidi açmaq üçün şablonu <xliff:g id="NUMBER_0">%d</xliff:g> dəfə səhv çəkdiniz. <xliff:g id="NUMBER_1">%d</xliff:g> daha uğursuz cəhddən sonra planşetin kilidini Google hesabınıza daxil olmaqla açmağınız tələb olunacaq.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> saniyə ərzində bir daha yoxlayın."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"Siz planşet kilidini açmaq üçün <xliff:g id="NUMBER_0">%d</xliff:g> dəfə uğursuz cəhd etmisiniz. <xliff:g id="NUMBER_1">%d</xliff:g> dəfə də uğursuz cəhd etsəniz, planşet fabrik ayarlarına sıfırlanacaq və bütün məlumatlarınız itəcək."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"Siz telefon kilidini açmaq üçün <xliff:g id="NUMBER_0">%d</xliff:g> dəfə uğursuz cəhd etmisiniz. <xliff:g id="NUMBER_1">%d</xliff:g> dəfə də uğursuz cəhd etsəniz, telefon zavod ayarlarına sıfırlanacaq və bütün məlumatlarınız itəcək."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"Siz planşetin kilidini açmaq üçün <xliff:g id="NUMBER">%d</xliff:g> yanlış cəhd etmisiniz. Planşet artıq defolt zavod halına sıfırlanacaq."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"Siz telefonun kilidini açmaq üçün <xliff:g id="NUMBER">%d</xliff:g> dəfə səhv cəhd etdiniz. Telefonunuz indi zavod nizamlarına yenilənəcək."</string>
- <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"<xliff:g id="NUMBER">%d</xliff:g> saniyə ərzində bir daha cəhd edin."</string>
- <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"Şablonu unutdunuz?"</string>
- <string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"Hesab kilid açma"</string>
- <string name="lockscreen_glogin_too_many_attempts" msgid="2751368605287288808">"Həddindən çox cəhd edildi!"</string>
- <string name="lockscreen_glogin_instructions" msgid="3931816256100707784">"Kilidi açmaq üçün Google hesabınız ilə daxil olun."</string>
- <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"İstifadəçi adı (e-poçt)"</string>
- <string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">"Şifrə"</string>
- <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"Daxil olun"</string>
- <string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"Yanlış istifadəçi adı və parol."</string>
- <string name="lockscreen_glogin_account_recovery_hint" msgid="1696924763690379073">"İstifadəçi adınızı və ya parolunuzu unutmusunuz?\n "<b>"google.com/accounts/recovery"</b>" linkinə daxil olun."</string>
- <string name="lockscreen_glogin_checking_password" msgid="7114627351286933867">"Yoxlanır..."</string>
- <string name="lockscreen_unlock_label" msgid="737440483220667054">"Kilidi aç"</string>
- <string name="lockscreen_sound_on_label" msgid="9068877576513425970">"Səs açıqdır"</string>
- <string name="lockscreen_sound_off_label" msgid="996822825154319026">"Səs sönülüdür"</string>
- <string name="lockscreen_access_pattern_start" msgid="3941045502933142847">"Model başlandı"</string>
- <string name="lockscreen_access_pattern_cleared" msgid="5583479721001639579">"Model təmizləndi"</string>
- <string name="lockscreen_access_pattern_cell_added" msgid="6756031208359292487">"Xana əlavə edildi"</string>
- <string name="lockscreen_access_pattern_detected" msgid="4988730895554057058">"Model tamamlandı"</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d of %3$d."</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Widget əlavə edin."</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Boş"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Kilidi açma sahəsi genişləndi."</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Kilidi açma sahəsi çökdü."</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> vidcet."</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"İstifadəçi selektoru"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Status"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kamera"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Media kontrolları"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Yenidən sıralama vidceti başladıldı."</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Vidcetin təkrar sifarişi sona çatdı."</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Vidcet <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> silindi."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Kilidi açma sahəsini genişləndir."</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Sürüşdürmə kilidi."</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Kild açma modeli."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Sifət Kilidi"</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Pin kilid açması."</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Şifrə kilidi."</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Model sahəsi."</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Sürüşdürmə sahəsi."</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="granularity_label_character" msgid="7336470535385009523">"simvol"</string>
- <string name="granularity_label_word" msgid="7075570328374918660">"söz"</string>
- <string name="granularity_label_link" msgid="5815508880782488267">"link"</string>
- <string name="granularity_label_line" msgid="5764267235026120888">"xətt"</string>
- <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string>
- <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string>
- <string name="factorytest_failed" msgid="5410270329114212041">"Zavod testi alınmadı"</string>
- <string name="factorytest_not_system" msgid="4435201656767276723">"Bu FACTORY_TEST fəaliyyəti yalnızca/sistemdə/tətbiqdə quraşdırılmış paketlər üçün dəstəklənir."</string>
- <string name="factorytest_no_action" msgid="872991874799998561">"FACTORY_TEST əməliyyatını təsdiqləyən heç bir paket tapılmadı."</string>
- <string name="factorytest_reboot" msgid="6320168203050791643">"Yenidən yükləyin"</string>
- <string name="js_dialog_title" msgid="1987483977834603872">"\"<xliff:g id="TITLE">%s</xliff:g>\"dakı səhifədə deyilir:"</string>
- <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
- <string name="js_dialog_before_unload_title" msgid="2619376555525116593">"Naviqasiyanı Təsdiq edin"</string>
- <string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"Bu Səhifəni Tərk edin"</string>
- <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"Bu səhifədə qalın"</string>
- <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nBu səhifədən kənara naviqasiya etmək istədiyinizə əminsiniz mi?"</string>
- <string name="save_password_label" msgid="6860261758665825069">"Təsdiqlə"</string>
- <string name="double_tap_toast" msgid="4595046515400268881">"Məsləhət: Böyütmək və kiçiltmək üçün iki dəfə tıklayın."</string>
- <string name="autofill_this_form" msgid="4616758841157816676">"Avtodoldurma"</string>
- <string name="setup_autofill" msgid="7103495070180590814">"AvtoDoldurmanı ayarla"</string>
- <string name="autofill_address_name_separator" msgid="6350145154779706772">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3268041054899214945">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="7483307893170324129">", "</string>
- <string name="autofill_address_summary_format" msgid="4874459455786827344">"$1$2$3"</string>
- <string name="autofill_province" msgid="2231806553863422300">"Vilayət"</string>
- <string name="autofill_postal_code" msgid="4696430407689377108">"Poçt kodu"</string>
- <string name="autofill_state" msgid="6988894195520044613">"Dövlət"</string>
- <string name="autofill_zip_code" msgid="8697544592627322946">"Poçt indeksi"</string>
- <string name="autofill_county" msgid="237073771020362891">"Ölkə"</string>
- <string name="autofill_island" msgid="4020100875984667025">"Ada"</string>
- <string name="autofill_district" msgid="8400735073392267672">"Sahə"</string>
- <string name="autofill_department" msgid="5343279462564453309">"Departament"</string>
- <string name="autofill_prefecture" msgid="2028499485065800419">"Prefektura"</string>
- <string name="autofill_parish" msgid="8202206105468820057">"Pariş"</string>
- <string name="autofill_area" msgid="3547409050889952423">"Sahə"</string>
- <string name="autofill_emirate" msgid="2893880978835698818">"Əmirlik"</string>
- <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"Veb əlfəcinlərinizi və tarixçələrinizi oxumaq"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="8462378226600439658">"Tətbiqə Brauzerin daxil olduğu bütün linkləri və bütün Brauzer əlfəcinlərini oxumaq imkanı verir. Qeyd: bu icazə veb brauzer imkanları olan üçüncü tərəf brazuerləri və digər tətbiqlər tərəfindən yerinə yetirilə bilməz."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"veb əlfəcinləri və tarixçəsi yazmaq"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="6825527469145760922">"Tətbiqə planşetinizdəki brauzer tarixini və əlfəcinləri redaktə etmək icazəsi verir. Bu tətbizə brauzer məlumatlarını silmək və ya redaktə etmək imkanı verə bilər. Qeyd: Bu icazə 3-cü partiya brauzerlərə və ya veb brauzing xüsusiyyətli digər tətbiqlərə şamil olunmaya bilər."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"Tətbiqə Brauzer tarixçəsi və telefonunuzda saxlanılan əlfəcinlərə dəyişiklik etmək imkanı verir. Bununla tətbiqlə Brauzer datanızı silə və ya dəyişdirə bilər. Qeyd: bu icazə veb brauzer imkanları olan üçüncü tərəf brazuerləri və digər tətbiqlər tərəfindən yerinə yetirilə bilməz."</string>
- <string name="permlab_setAlarm" msgid="1379294556362091814">"siqnal qurur"</string>
- <string name="permdesc_setAlarm" msgid="316392039157473848">"Tətbiqə quraşdırlmış zəngli saata alarm ayarlamağa imkan verir. Bəzi zəngli saat tətbiqləri bu özəlliyi dəstəkləməyə bilər."</string>
- <string name="permlab_addVoicemail" msgid="5525660026090959044">"Səsli poçt əlavə et"</string>
- <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Tətbiqə səsli poçt qutunuza mesaj əlavə etməyə imkan verir."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"Brauzerin geolokasiya icazələrini dəyişir"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"Tətbiqə Brauzerin geolokasiya icazələrini dəyişməyə imkan verir. Zərərli tətbiqlər bundan istifadə edərək məkan məlumatlarını təsadüfi saytlara göndərə bilər."</string>
- <string name="permlab_packageVerificationAgent" msgid="5568139100645829117">"paketləri təsdiqlə"</string>
- <string name="permdesc_packageVerificationAgent" msgid="8437590190990843381">"Tətbiqə paketin quraşdırılabilən olmasını yoxlamağa imkan verir."</string>
- <string name="permlab_bindPackageVerifier" msgid="4187786793360326654">"paket doğrulayıcıya bağlanır"</string>
- <string name="permdesc_bindPackageVerifier" msgid="3180741773233862126">"Sahibinə paket yoxlayıcılarına sorğu göndərmək icazəsi verir. Normal tətbiqlər tərəfindən heç vaxt istənilməməlidir."</string>
- <string name="permlab_serialPort" msgid="546083327654631076">"serial porta çıxır"</string>
- <string name="permdesc_serialPort" msgid="2991639985224598193">"Sahibinə SerialManager API vasitəsilə serial portlara icazə izni verir."</string>
- <string name="permlab_accessContentProvidersExternally" msgid="5077774297943409285">"xarici kontent provayderlərinə giriş"</string>
- <string name="permdesc_accessContentProvidersExternally" msgid="4544346486697853685">"Məzmun provayderlərinə örtükdən daxil olmaq üçün cihaz sahibinə imkan verir. Normal tətbiqlər üçün lazım deyil."</string>
- <string name="permlab_updateLock" msgid="3527558366616680889">"avtomatik cihaz yenilənmələrini pozur"</string>
- <string name="permdesc_updateLock" msgid="1655625832166778492">"Sahibinə yeni versiyaya yenilənmək üçün nə vaxt qeyri-interaktiv reboot məlumatını sistemə təklif etmə icazəsi verir."</string>
- <string name="save_password_message" msgid="767344687139195790">"Brauzerin bu şifrəni yadda saxlamasını istəyirsiz?"</string>
- <string name="save_password_notnow" msgid="6389675316706699758">"İndi yox"</string>
- <string name="save_password_remember" msgid="6491879678996749466">"Yadda saxla"</string>
- <string name="save_password_never" msgid="8274330296785855105">"Heç vaxt"</string>
- <string name="open_permission_deny" msgid="7374036708316629800">"Bu səhifəni açmaq üçün icazəniz yoxdur."</string>
- <string name="text_copied" msgid="4985729524670131385">"Mətn panoya kopyalandı."</string>
- <string name="more_item_label" msgid="4650918923083320495">"Daha çox"</string>
- <string name="prepend_shortcut_label" msgid="2572214461676015642">"Menyu+"</string>
- <string name="menu_space_shortcut_label" msgid="2410328639272162537">"boşluq"</string>
- <string name="menu_enter_shortcut_label" msgid="2743362785111309668">"daxil olun"</string>
- <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"sil"</string>
- <string name="search_go" msgid="8298016669822141719">"Axtar"</string>
- <string name="searchview_description_search" msgid="6749826639098512120">"Axtarış"</string>
- <string name="searchview_description_query" msgid="5911778593125355124">"Axtarış sorğusu"</string>
- <string name="searchview_description_clear" msgid="1330281990951833033">"Sorğunu təmizlə"</string>
- <string name="searchview_description_submit" msgid="2688450133297983542">"Sorğunu göndərin"</string>
- <string name="searchview_description_voice" msgid="2453203695674994440">"Səsli axtarış"</string>
- <string name="enable_explore_by_touch_warning_title" msgid="7460694070309730149">"Toxunaraq Kəşf et funksiyası aktiv edilsin?"</string>
- <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="8655887539089910577">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> Toxunaraq Kəşf Et rejimini aktivləşdirmək istəyir. Toxunaraq Kəşf Et açıldığı zaman, barmağınızın altında nə olduğu haqda olan təsvirləri eşidə və ya görə bilərsiniz və yaplanşetdə insanlarla əlaqəyə keçmək üçün jestlər həyata keçirə bilərsiniz."</string>
- <string name="enable_explore_by_touch_warning_message" product="default" msgid="2708199672852373195">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> Toxunaraq Kəşf Et rejimini aktivləşdirmək istəyir. Toxunaraq Kəşf Et açıldığı zaman, barmağınızın altında nə olduğu haqda olan təsvirləri eşidə və ya görə bilərsiniz və ya telefonda insanlarla əlaqəyə keçmək üçün jestlər həyata keçirə bilərsiniz"</string>
- <string name="oneMonthDurationPast" msgid="7396384508953779925">"1 ay öncə"</string>
- <string name="beforeOneMonthDurationPast" msgid="909134546836499826">"1 ay əvvəl"</string>
- <plurals name="num_seconds_ago">
- <item quantity="one" msgid="4869870056547896011">"1 saniyə əvvəl"</item>
- <item quantity="other" msgid="3903706804349556379">"<xliff:g id="COUNT">%d</xliff:g> saniyə əvvəl"</item>
- </plurals>
- <plurals name="num_minutes_ago">
- <item quantity="one" msgid="3306787433088810191">"1 dəqiqə əvvəl"</item>
- <item quantity="other" msgid="2176942008915455116">"<xliff:g id="COUNT">%d</xliff:g> dəqiqə əvvəl"</item>
- </plurals>
- <plurals name="num_hours_ago">
- <item quantity="one" msgid="9150797944610821849">"1 saat əvvəl"</item>
- <item quantity="other" msgid="2467273239587587569">"<xliff:g id="COUNT">%d</xliff:g> saat əvvəl"</item>
- </plurals>
- <plurals name="last_num_days">
- <item quantity="other" msgid="3069992808164318268">"Son <xliff:g id="COUNT">%d</xliff:g> gün"</item>
- </plurals>
- <string name="last_month" msgid="3959346739979055432">"Keçən ay"</string>
- <string name="older" msgid="5211975022815554840">"Köhnə"</string>
- <plurals name="num_days_ago">
- <item quantity="one" msgid="861358534398115820">"dünən"</item>
- <item quantity="other" msgid="2479586466153314633">"<xliff:g id="COUNT">%d</xliff:g> gün əvvəl"</item>
- </plurals>
- <plurals name="in_num_seconds">
- <item quantity="one" msgid="2729745560954905102">"1 saniyə ərzində"</item>
- <item quantity="other" msgid="1241926116443974687">"<xliff:g id="COUNT">%d</xliff:g> saniyə içində"</item>
- </plurals>
- <plurals name="in_num_minutes">
- <item quantity="one" msgid="8793095251325200395">"1 dəqiqə içində"</item>
- <item quantity="other" msgid="3330713936399448749">"<xliff:g id="COUNT">%d</xliff:g> dəqiqə ərzində"</item>
- </plurals>
- <plurals name="in_num_hours">
- <item quantity="one" msgid="7164353342477769999">"1 saata"</item>
- <item quantity="other" msgid="547290677353727389">"<xliff:g id="COUNT">%d</xliff:g> saata"</item>
- </plurals>
- <plurals name="in_num_days">
- <item quantity="one" msgid="5413088743009839518">"sabah"</item>
- <item quantity="other" msgid="5109449375100953247">"<xliff:g id="COUNT">%d</xliff:g> gün ərzində"</item>
- </plurals>
- <plurals name="abbrev_num_seconds_ago">
- <item quantity="one" msgid="1849036840200069118">"1 saniyə əvvəl"</item>
- <item quantity="other" msgid="3699169366650930415">"<xliff:g id="COUNT">%d</xliff:g> san əvvəl"</item>
- </plurals>
- <plurals name="abbrev_num_minutes_ago">
- <item quantity="one" msgid="6361490147113871545">"1 dəqiqə əvvəl"</item>
- <item quantity="other" msgid="851164968597150710">"<xliff:g id="COUNT">%d</xliff:g> dəqiqə əvvəl"</item>
- </plurals>
- <plurals name="abbrev_num_hours_ago">
- <item quantity="one" msgid="4796212039724722116">"1 saat əvvəl"</item>
- <item quantity="other" msgid="6889970745748538901">"<xliff:g id="COUNT">%d</xliff:g> saat əvvəl"</item>
- </plurals>
- <plurals name="abbrev_num_days_ago">
- <item quantity="one" msgid="8463161711492680309">"dünən"</item>
- <item quantity="other" msgid="3453342639616481191">"<xliff:g id="COUNT">%d</xliff:g> gün əvvəl"</item>
- </plurals>
- <plurals name="abbrev_in_num_seconds">
- <item quantity="one" msgid="5842225370795066299">"1 san ərzində"</item>
- <item quantity="other" msgid="5495880108825805108">"<xliff:g id="COUNT">%d</xliff:g> san ərzində"</item>
- </plurals>
- <plurals name="abbrev_in_num_minutes">
- <item quantity="one" msgid="562786149928284878">"1 dəq ərzində"</item>
- <item quantity="other" msgid="4216113292706568726">"<xliff:g id="COUNT">%d</xliff:g> dəqiqəyə"</item>
- </plurals>
- <plurals name="abbrev_in_num_hours">
- <item quantity="one" msgid="3274708118124045246">"1 saat ərzində"</item>
- <item quantity="other" msgid="3705373766798013406">"<xliff:g id="COUNT">%d</xliff:g> saata"</item>
- </plurals>
- <plurals name="abbrev_in_num_days">
- <item quantity="one" msgid="2178576254385739855">"sabah"</item>
- <item quantity="other" msgid="2973062968038355991">"<xliff:g id="COUNT">%d</xliff:g> günə"</item>
- </plurals>
- <string name="preposition_for_date" msgid="9093949757757445117">"<xliff:g id="DATE">%s</xliff:g> tarixində"</string>
- <string name="preposition_for_time" msgid="5506831244263083793">"saat <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="preposition_for_year" msgid="5040395640711867177">"<xliff:g id="YEAR">%s</xliff:g> ilində"</string>
- <string name="day" msgid="8144195776058119424">"gün"</string>
- <string name="days" msgid="4774547661021344602">"günlər"</string>
- <string name="hour" msgid="2126771916426189481">"saat"</string>
- <string name="hours" msgid="894424005266852993">"saatlar"</string>
- <string name="minute" msgid="9148878657703769868">"dəq."</string>
- <string name="minutes" msgid="5646001005827034509">"dəqiqə"</string>
- <string name="second" msgid="3184235808021478">"sn"</string>
- <string name="seconds" msgid="3161515347216589235">"san"</string>
- <string name="week" msgid="5617961537173061583">"həftə"</string>
- <string name="weeks" msgid="6509623834583944518">"həftə"</string>
- <string name="year" msgid="4001118221013892076">"il"</string>
- <string name="years" msgid="6881577717993213522">"il"</string>
- <plurals name="duration_seconds">
- <item quantity="one" msgid="6962015528372969481">"1 saniyə"</item>
- <item quantity="other" msgid="1886107766577166786">"<xliff:g id="COUNT">%d</xliff:g> saniyə"</item>
- </plurals>
- <plurals name="duration_minutes">
- <item quantity="one" msgid="4915414002546085617">"1 dəqiqə"</item>
- <item quantity="other" msgid="3165187169224908775">"<xliff:g id="COUNT">%d</xliff:g> dəqiqə"</item>
- </plurals>
- <plurals name="duration_hours">
- <item quantity="one" msgid="8917467491248809972">"1 saat"</item>
- <item quantity="other" msgid="3863962854246773930">"<xliff:g id="COUNT">%d</xliff:g> saat"</item>
- </plurals>
- <string name="VideoView_error_title" msgid="3534509135438353077">"Video problemi"</string>
- <string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Bu video bu cihaza strim olunmaq üçün uyğun deyil."</string>
- <string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Bu video oxumur"</string>
- <string name="VideoView_error_button" msgid="2822238215100679592">"OK"</string>
- <string name="relative_time" msgid="1818557177829411417">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
- <string name="noon" msgid="7245353528818587908">"günorta"</string>
- <string name="Noon" msgid="3342127745230013127">"Günorta"</string>
- <string name="midnight" msgid="7166259508850457595">"gecəyarı"</string>
- <string name="Midnight" msgid="5630806906897892201">"Gecəyarı"</string>
- <string name="elapsed_time_short_format_mm_ss" msgid="4431555943828711473">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
- <string name="elapsed_time_short_format_h_mm_ss" msgid="1846071997616654124">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
- <string name="selectAll" msgid="6876518925844129331">"Hamısını seç"</string>
- <string name="cut" msgid="3092569408438626261">"Kəs"</string>
- <string name="copy" msgid="2681946229533511987">"Kopyala"</string>
- <string name="paste" msgid="5629880836805036433">"Yerləşdir"</string>
- <string name="replace" msgid="5781686059063148930">"Əvəz et..."</string>
- <string name="delete" msgid="6098684844021697789">"Sil"</string>
- <string name="copyUrl" msgid="2538211579596067402">"URL kopyala"</string>
- <string name="selectTextMode" msgid="1018691815143165326">"Mətn seçin"</string>
- <string name="textSelectionCABTitle" msgid="5236850394370820357">"Mətn seçimi"</string>
- <string name="addToDictionary" msgid="4352161534510057874">"Lüğətə əlavə et"</string>
- <string name="deleteText" msgid="6979668428458199034">"Sil"</string>
- <string name="inputMethod" msgid="1653630062304567879">"Daxiletmə metodu"</string>
- <string name="editTextMenuTitle" msgid="4909135564941815494">"Mətn əməliyyatları"</string>
- <string name="low_internal_storage_view_title" msgid="5576272496365684834">"Yaddaş yeri bitir"</string>
- <string name="low_internal_storage_view_text" msgid="6640505817617414371">"Bəzi sistem funksiyaları işləməyə bilər"</string>
- <string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> işlənir"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Daha çox məlumat üçün və ya tətbiqi dayandırmaq üçün toxunun."</string>
- <string name="ok" msgid="5970060430562524910">"OK"</string>
- <string name="cancel" msgid="6442560571259935130">"Ləğv et"</string>
- <string name="yes" msgid="5362982303337969312">"OK"</string>
- <string name="no" msgid="5141531044935541497">"Ləğv et"</string>
- <string name="dialog_alert_title" msgid="2049658708609043103">"Diqqət"</string>
- <string name="loading" msgid="7933681260296021180">"Yüklənir…"</string>
- <string name="capital_on" msgid="1544682755514494298">"AÇIQ"</string>
- <string name="capital_off" msgid="6815870386972805832">"QAPALI"</string>
- <string name="whichApplication" msgid="4533185947064773386">"Əməliyyatı tamamlayın:"</string>
- <string name="alwaysUse" msgid="4583018368000610438">"Bu fəaliyyət üçün defolt istifadə edin"</string>
- <string name="clearDefaultHintMsg" msgid="3252584689512077257">"Sistem ayarlarında, Tətbiqlərdə və Endirilmişlərdə defoltu təmizləyin."</string>
- <string name="chooseActivity" msgid="7486876147751803333">"Fəaliyyət seçin"</string>
- <string name="chooseUsbActivity" msgid="6894748416073583509">"USB cihaz üçün tətbiq seçin"</string>
- <string name="noApplications" msgid="2991814273936504689">"Heç bir tətbiq bu əməliyyatı apara bilmir."</string>
- <string name="aerr_title" msgid="1905800560317137752"></string>
- <string name="aerr_application" msgid="932628488013092776">"Təəssüf ki, <xliff:g id="APPLICATION">%1$s</xliff:g> dayandı."</string>
- <string name="aerr_process" msgid="4507058997035697579">"Təəssüf ki, <xliff:g id="PROCESS">%1$s</xliff:g> prosesi dayandı."</string>
- <string name="anr_title" msgid="4351948481459135709"></string>
- <string name="anr_activity_application" msgid="1904477189057199066">"<xliff:g id="APPLICATION">%2$s</xliff:g> cavab vermir.\n\nOnu bağlamaq istəyirsiniz?"</string>
- <string name="anr_activity_process" msgid="5776209883299089767">"<xliff:g id="ACTIVITY">%1$s</xliff:g> aktivitisi cavab vermir. \n\nOnu bağlamaq istəyirsiniz?"</string>
- <string name="anr_application_process" msgid="8941757607340481057">"<xliff:g id="APPLICATION">%1$s</xliff:g> cavab vermir. Onu bağlamaq istəyirsiniz?"</string>
- <string name="anr_process" msgid="6513209874880517125">"Proses <xliff:g id="PROCESS">%1$s</xliff:g> cavab vermir. \n \n Onu bağlamaq istəyirsiniz?"</string>
- <string name="force_close" msgid="8346072094521265605">"OK"</string>
- <string name="report" msgid="4060218260984795706">"Şikayət edin"</string>
- <string name="wait" msgid="7147118217226317732">"Gözlə"</string>
- <string name="webpage_unresponsive" msgid="3272758351138122503">"Bu səhifə yararsızlaşıb.\n\nBağlamaq istəyirsiz?"</string>
- <string name="launch_warning_title" msgid="1547997780506713581">"Tətbiq yönləndirildi"</string>
- <string name="launch_warning_replace" msgid="6202498949970281412">"<xliff:g id="APP_NAME">%1$s</xliff:g> indi çalışır."</string>
- <string name="launch_warning_original" msgid="188102023021668683">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilk başladıldı."</string>
- <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Miqyas"</string>
- <string name="screen_compat_mode_show" msgid="4013878876486655892">"Həmişə göstər"</string>
- <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Bunları Sistem ayarlarında yenidən aktivləşdir Yüklənmiş &gt; Tətbiqlər &gt;."</string>
- <string name="smv_application" msgid="3307209192155442829">"Tətbiq <xliff:g id="APPLICATION">%1$s</xliff:g> (proses <xliff:g id="PROCESS">%2$s</xliff:g>) StrictMode siyasətini pozdu."</string>
- <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> prosesi StrictMode siyasətini pozdu."</string>
- <string name="android_upgrading_title" msgid="1584192285441405746">"Android təkmilləşdirilir..."</string>
- <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> əddədən <xliff:g id="NUMBER_0">%1$d</xliff:g> tətbiq optimallaşır."</string>
- <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>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Tətbiqə keçmək üçün toxunun"</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>
- <string name="old_app_description" msgid="2082094275580358049">"Yeni tətbiqi başlatmayın."</string>
- <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="sendText" msgid="5209874571959469142">"Mətn üçün əməliyyat seçin"</string>
- <string name="volume_ringtone" msgid="6885421406845734650">"Zəngin səs gücü"</string>
- <string name="volume_music" msgid="5421651157138628171">"Media həcmi"</string>
- <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"Bluetooth vasitəsilə oynadılır"</string>
- <string name="volume_music_hint_silent_ringtone_selected" msgid="8310739960973156272">"Səssiz zəng"</string>
- <string name="volume_call" msgid="3941680041282788711">"Daxili zəng səsi"</string>
- <string name="volume_bluetooth_call" msgid="2002891926351151534">"Bluetooth zəng həcmi"</string>
- <string name="volume_alarm" msgid="1985191616042689100">"Siqnal səsi"</string>
- <string name="volume_notification" msgid="2422265656744276715">"Bildiriş səsi"</string>
- <string name="volume_unknown" msgid="1400219669770445902">"Həcm"</string>
- <string name="volume_icon_description_bluetooth" msgid="6538894177255964340">"Bluetooth həcmi"</string>
- <string name="volume_icon_description_ringer" msgid="3326003847006162496">"Zəng səsi gücü"</string>
- <string name="volume_icon_description_incall" msgid="8890073218154543397">"Zəng həcmi"</string>
- <string name="volume_icon_description_media" msgid="4217311719665194215">"Media həcmi"</string>
- <string name="volume_icon_description_notification" msgid="7044986546477282274">"Bildiriş səsi"</string>
- <string name="ringtone_default" msgid="3789758980357696936">"Defolt rinqton"</string>
- <string name="ringtone_default_with_actual" msgid="8129563480895990372">"Defolt rinqton (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
- <string name="ringtone_silent" msgid="7937634392408977062">"Heç biri"</string>
- <string name="ringtone_picker_title" msgid="3515143939175119094">"Zəng səsləri"</string>
- <string name="ringtone_unknown" msgid="5477919988701784788">"Naməlum rinqton"</string>
- <plurals name="wifi_available">
- <item quantity="one" msgid="6654123987418168693">"Wi-Fi şəbəkəsi mövcuddur"</item>
- <item quantity="other" msgid="4192424489168397386">"Wi-Fi şəbəkələri mövcuddur"</item>
- </plurals>
- <plurals name="wifi_available_detailed">
- <item quantity="one" msgid="1634101450343277345">"Wi-Fi şəbəkəni açın"</item>
- <item quantity="other" msgid="7915895323644292768">"Açıq Wi-Fi şəbəkələri mövcuddur"</item>
- </plurals>
- <string name="wifi_available_sign_in" msgid="4029489716605255386">"Wi-Fi şəbəkəsinə daxil ol"</string>
- <string name="network_available_sign_in" msgid="8495155593358054676">"Şəbəkəyə daxil olun"</string>
- <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
- <skip />
- <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_p2p_dialog_title" msgid="97611782659324517">"Wi-Fi Direct"</string>
- <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>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Ayarlar üçün toxunun"</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>
- <string name="wifi_p2p_invitation_to_connect_title" msgid="4958803948658533637">"Qoşulmaq üçün dəvət"</string>
- <string name="wifi_p2p_from_message" msgid="570389174731951769">"Kimdən:"</string>
- <string name="wifi_p2p_to_message" msgid="248968974522044099">"Kimə:"</string>
- <string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Tələb olunan PİN kodu daxil edin:"</string>
- <string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PİN:"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="tablet" msgid="8012981257742232475">"Bu planşet <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazına qoşulan zaman Wi-Fi şəbəkəsindən müvəqqəti ayrılmış olacaq"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="default" msgid="7363907213787469151">"Bu telefon <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazına qoşulan zaman Wi-Fi şəbəkəsindən müvəqqəti ayrılmış olacaq"</string>
- <string name="select_character" msgid="3365550120617701745">"Simvol daxil edin"</string>
- <string name="sms_control_title" msgid="7296612781128917719">"SMS mesaj göndərilir"</string>
- <string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; çox sayda SMS mesaj göndərir. Bu tətbiqin mesaj göndərməyə davam etməsinə icazə verirsiniz?"</string>
- <string name="sms_control_yes" msgid="3663725993855816807">"İcazə verin"</string>
- <string name="sms_control_no" msgid="625438561395534982">"Rədd edin"</string>
- <string name="sms_short_code_confirm_message" msgid="1645436466285310855">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; &lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;/b&gt; ünvanına mesaj göndərmək istəyir."</string>
- <string name="sms_short_code_details" msgid="3492025719868078457">"Bu, mobil hesabınıza "<font fgcolor="#ffffb060">"əlavə tariflərin tətbiq olunması"</font>" ilə nəticələnə bilər."</string>
- <string name="sms_premium_short_code_details" msgid="5523826349105123687"><font fgcolor="#ffffb060">"Bu mobil hesabınızda ödənişlərə səbəb olacaq."</font></string>
- <string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"Göndər"</string>
- <string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"Ləğv et"</string>
- <string name="sms_short_code_remember_choice" msgid="5289538592272218136">"Mənim seçimimi yadda saxla"</string>
- <string name="sms_short_code_remember_undo_instruction" msgid="4960944133052287484">"Bunu sonra Ayarlarda dəyişə bilərsiniz &gt; Tətbiqlər"</string>
- <string name="sms_short_code_confirm_always_allow" msgid="3241181154869493368">"Həmişə icazə ver"</string>
- <string name="sms_short_code_confirm_never_allow" msgid="446992765774269673">"Heç vaxt icazə verməyin"</string>
- <string name="sim_removed_title" msgid="6227712319223226185">"SIM kart çıxarıldı"</string>
- <string name="sim_removed_message" msgid="2333164559970958645">"Cihazınızı etibarlı SIM kart ilə başladana kimi mobil şəbəkə əlçatmaz olacaq."</string>
- <string name="sim_done_button" msgid="827949989369963775">"Bitdi"</string>
- <string name="sim_added_title" msgid="3719670512889674693">"SİM kart əlavə edildi"</string>
- <string name="sim_added_message" msgid="6599945301141050216">"Mobil şəbəkəyə qoşulmaq üçün cihazınızı yenidən başladın."</string>
- <string name="sim_restart_button" msgid="4722407842815232347">"Yenidən başlat"</string>
- <string name="time_picker_dialog_title" msgid="8349362623068819295">"Vaxt ayarlayın"</string>
- <string name="date_picker_dialog_title" msgid="5879450659453782278">"Tarixi quraşdır"</string>
- <string name="date_time_set" msgid="5777075614321087758">"Ayarlayın"</string>
- <string name="date_time_done" msgid="2507683751759308828">"Hazırdır"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"YENİ: "</font></string>
- <string name="perms_description_app" msgid="5139836143293299417">"<xliff:g id="APP_NAME">%1$s</xliff:g> tərəfindən təmin edilib."</string>
- <string name="no_permissions" msgid="7283357728219338112">"Heç bir icazə tələb olunmur"</string>
- <string name="perm_costs_money" msgid="4902470324142151116">"bununla sizdən xərc tutula bilər"</string>
- <string name="usb_storage_activity_title" msgid="4465055157209648641">"USB toplu yaddaş"</string>
- <string name="usb_storage_title" msgid="5901459041398751495">"USB qoşuludur"</string>
- <string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Siz USB vasitəsilə kompütere bağlandınız. Kompüter və Androidinizin USB yaddaşı arasında faylları kopyalamaq istəyirsinizsə, aşağıdakı düyməyə toxunun."</string>
- <string name="usb_storage_message" product="default" msgid="805351000446037811">"Kompüterinizə USB ilə qoşulmusunuz. Faylları Androidinizin SD kartı ilə kompüteriniz arasında kopyalamaq istəyirsinizsə aşağıdakı düyməyə toxunun."</string>
- <string name="usb_storage_button_mount" msgid="1052259930369508235">"USB yaddaşı aktivləşdirin"</string>
- <string name="usb_storage_error_message" product="nosdcard" msgid="3017045217365540658">"USB yaddaşınızı USB kütləvi yaddaşı üçün istifadə edən zaman problem yarandı."</string>
- <string name="usb_storage_error_message" product="default" msgid="2876018512716970313">"SD kartınızı USB kütləvi yaddaşı üçün istifadə edən zaman problem yarandı."</string>
- <string name="usb_storage_notification_title" msgid="8175892554757216525">"USB qoşuludur"</string>
- <string name="usb_storage_notification_message" msgid="939822783828183763">"Faylları kompüterinizə kopyalamaq və ya kompüterinizdən kopyalamaq üçün toxunun."</string>
- <string name="usb_storage_stop_notification_title" msgid="2336058396663516017">"USB yaddaşı söndürün"</string>
- <string name="usb_storage_stop_notification_message" msgid="1656852098555623822">"USB yaddaşı söndürmək üçün toxunun."</string>
- <string name="usb_storage_stop_title" msgid="660129851708775853">"USB yaddaş istifadə olunur"</string>
- <string name="usb_storage_stop_message" product="nosdcard" msgid="4264025280777219521">"USB yaddaşı söndürmədən öncə Android\'in USB yaddaşını kompüterdən demontaj etdiyinizə (çıxardığınıza) əmin olun."</string>
- <string name="usb_storage_stop_message" product="default" msgid="8043969782460613114">"USB yaddaşı söndürmədən öncə Android\'in USB yaddaşını kompüterdən demontaj etdiyinizə (çıxardığınıza) əmin olun."</string>
- <string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"USB yaddaşını söndür"</string>
- <string name="usb_storage_stop_error_message" msgid="1970374898263063836">"USB yaddaşı söndürən zaman problem oldu. USB hostu demontaj etmənizi yoxlayın və yenidən cəhd edin."</string>
- <string name="dlg_confirm_kill_storage_users_title" msgid="963039033470478697">"USB yaddaşı aktivləşdirin"</string>
- <string name="dlg_confirm_kill_storage_users_text" msgid="5100428757107469454">"USB yaddaşı aktivləşdirsəniz, istifadə etdiyiniz bəzi tətbiqlər dayana bilər və USB yaddaş deaktiv edilənə qədər işləməyə bilər."</string>
- <string name="dlg_error_title" msgid="7323658469626514207">"USB əməliyyatı uğursuzdur"</string>
- <string name="dlg_ok" msgid="7376953167039865701">"OK"</string>
- <string name="usb_mtp_notification_title" msgid="3699913097391550394">"Media cihazı kimi qoşuldu"</string>
- <string name="usb_ptp_notification_title" msgid="1960817192216064833">"Kamera kimi bağlanıldı"</string>
- <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Quraşdırıcı kimi qoşulub"</string>
- <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB aksesuara qoşuldu"</string>
- <string name="usb_notification_message" msgid="2290859399983720271">"Digər USB seçimləri üçün toxunun."</string>
- <string name="extmedia_format_title" product="nosdcard" msgid="9020092196061007262">"USB yaddaşına format atılsın?"</string>
- <string name="extmedia_format_title" product="default" msgid="3648415921526526069">"SD kart format edilsin?"</string>
- <string name="extmedia_format_message" product="nosdcard" msgid="3934016853425761078">"USB yaddaşınızda yerləşdirilmiş bütün fayllar silinəcək. Bu addım geri dönülməzdir."</string>
- <string name="extmedia_format_message" product="default" msgid="14131895027543830">"Kartınızdakı bütün məlumatlar itəcək."</string>
- <string name="extmedia_format_button_format" msgid="4131064560127478695">"Format"</string>
- <string name="adb_active_notification_title" msgid="6729044778949189918">"USB sazlama qoşuludur"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB debaqı deaktivasiya etmək üçün toxunun."</string>
- <string name="select_input_method" msgid="4653387336791222978">"Daxiletmə metodunu seçin"</string>
- <string name="configure_input_methods" msgid="9091652157722495116">"Daxiletmə üsullarını ayarlayın"</string>
- <string name="use_physical_keyboard" msgid="6203112478095117625">"Fiziki klaviatura"</string>
- <string name="hardware" msgid="7517821086888990278">"Hardware"</string>
- <string name="select_keyboard_layout_notification_title" msgid="1407367017263030773">"Klaviatura sxemi seçin"</string>
- <string name="select_keyboard_layout_notification_message" msgid="4465907700449257063">"Klaviatura tərtibatı seçmək üçün toxunun."</string>
- <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCÇDEƏFGĞHXIİJKQLMNOÖPRSŞTUÜVYZ"</string>
- <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCÇDEƏFGĞHİIJKLMNOÖPQRSŞTUÜVWXYZ"</string>
- <string name="candidates_style" msgid="4333913089637062257"><u>"namizədlər"</u></string>
- <string name="ext_media_checking_notification_title" product="nosdcard" msgid="3449816005351468560">"USB yaddaş hazırlanır"</string>
- <string name="ext_media_checking_notification_title" product="default" msgid="5457603418970994050">"SD kart hazırlanır"</string>
- <string name="ext_media_checking_notification_message" msgid="8287319882926737053">"Səhvlər yoxlanılır."</string>
- <string name="ext_media_nofs_notification_title" product="nosdcard" msgid="7788040745686229307">"Boş USB yaddaşı"</string>
- <string name="ext_media_nofs_notification_title" product="default" msgid="780477838241212997">"Boş SD kart"</string>
- <string name="ext_media_nofs_notification_message" product="nosdcard" msgid="7840121067427269500">"USB yaddaş boşdur və ya sistem tərəfindən dəstəklənməyən fayl sisteminə malikdir."</string>
- <string name="ext_media_nofs_notification_message" product="default" msgid="8641065641786923604">"SD kart boşdur və ya sistem tərəfindən dəstəklənməyən fayl sisteminə malikdir."</string>
- <string name="ext_media_unmountable_notification_title" product="nosdcard" msgid="2090046769532713563">"Zədəli USB yaddaş"</string>
- <string name="ext_media_unmountable_notification_title" product="default" msgid="6410723906019100189">"Zədəli SD kart"</string>
- <string name="ext_media_unmountable_notification_message" product="nosdcard" msgid="1795917578395333280">"SD yaddaş zədələnib. Onu format etməyə çalışın."</string>
- <string name="ext_media_unmountable_notification_message" product="default" msgid="1753898567525568253">"SD kart zədələnib. Onu format etməyə çalışın."</string>
- <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"USB yaddaşı gözlənilmədən çıxarıldı"</string>
- <string name="ext_media_badremoval_notification_title" product="default" msgid="6872152882604407837">"SD kart gözlənilmədən çıxarıldı"</string>
- <string name="ext_media_badremoval_notification_message" product="nosdcard" msgid="4329848819865594241">"Məlumat itkisinin qarşısını almaq üçün USB yaddaşı çıxarmazdan əvvəl onu demontaj edin."</string>
- <string name="ext_media_badremoval_notification_message" product="default" msgid="7260183293747448241">"Data itkisinin qarşısını almaq üçün SD kartı çıxarmadan öncə demontaj edin."</string>
- <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"USB yaddaş çıxarmaq üçün təhlükəsizdir"</string>
- <string name="ext_media_safe_unmount_notification_title" product="default" msgid="6729801130790616200">"SD kart təhlükəsiz çıxarıla bilər"</string>
- <string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"Siz USB yaddaşı təhlükəsiz çıxara bilərsiniz."</string>
- <string name="ext_media_safe_unmount_notification_message" product="default" msgid="568841278138377604">"Siz SD kartı təhlükəsiz çıxara bilərsiniz."</string>
- <string name="ext_media_nomedia_notification_title" product="nosdcard" msgid="4486377230140227651">"Silinmiş USB yaddaş"</string>
- <string name="ext_media_nomedia_notification_title" product="default" msgid="8902518030404381318">"SD kart çıxarıldı"</string>
- <string name="ext_media_nomedia_notification_message" product="nosdcard" msgid="6921126162580574143">"USB yaddaş çıxarıldı. Yeni media əlavə edin."</string>
- <string name="ext_media_nomedia_notification_message" product="default" msgid="3870120652983659641">"SD kart çıxarıldı. Yenisini daxil edin."</string>
- <string name="activity_list_empty" msgid="1675388330786841066">"Uyğun gələn fəaliyyət tapılmadı."</string>
- <string name="permlab_pkgUsageStats" msgid="8787352074326748892">"komponent istifadəsi statistikasını güncəlləyir"</string>
- <string name="permdesc_pkgUsageStats" msgid="1106612424254277630">"Tətbiqə toplanmış istifadə statistikasını dəyişməyə imkan verir. Normal tətbiqlər tərəfindən istifadə olunmur."</string>
- <string name="permlab_copyProtectedData" msgid="4341036311211406692">"məzmunu kopyala"</string>
- <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Tətbiqə kontenti kopyalamaq üçün defolt konteyner servisini çağırmaq icazəsi verir. Normal tətbiqlər tərəfindən istifadə edilmir."</string>
- <string name="permlab_route_media_output" msgid="1642024455750414694">"Media çıxışını yönləndirir"</string>
- <string name="permdesc_route_media_output" msgid="4932818749547244346">"Tətbiqə media çıxışını digər xarici cihazlara yönləndirmək imkanı verir."</string>
- <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Keyguard təhlükəsiz yaddaşa çıxış"</string>
- <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Tətbiqə keguard təhlükəsiz yaddaşa çatmağa icazə verir."</string>
- <string name="permlab_control_keyguard" msgid="172195184207828387">"Klaviatura kilidinin görülməsini və gizlədilməsini idarə edir"</string>
- <string name="permdesc_control_keyguard" msgid="3043732290518629061">"Tətbiqə keguardı idarə etmək icazəsi verir."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Zoom nəzarəti üçün iki dəfə toxunun"</string>
- <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Widget əlavə edilə bilmədi."</string>
- <string name="ime_action_go" msgid="8320845651737369027">"Get"</string>
- <string name="ime_action_search" msgid="658110271822807811">"Axtar"</string>
- <string name="ime_action_send" msgid="2316166556349314424">"Göndər"</string>
- <string name="ime_action_next" msgid="3138843904009813834">"Növbəti"</string>
- <string name="ime_action_done" msgid="8971516117910934605">"Tamam"</string>
- <string name="ime_action_previous" msgid="1443550039250105948">"Əvvəlki"</string>
- <string name="ime_action_default" msgid="2840921885558045721">"İcra edin"</string>
- <string name="dial_number_using" msgid="5789176425167573586">"<xliff:g id="NUMBER">%s</xliff:g> istifadə etməklə\nnömrə yığın"</string>
- <string name="create_contact_using" msgid="4947405226788104538">"<xliff:g id="NUMBER">%s</xliff:g>istifadə edərək kontakt yaradın\n"</string>
- <string name="grant_credentials_permission_message_header" msgid="2106103817937859662">"Aşağıdakı bir və ya daha çox tətbiqlər indi və gələcəkdə hesabınıza daxil olmaq üçün icazə istəyir."</string>
- <string name="grant_credentials_permission_message_footer" msgid="3125211343379376561">"Bu istəyə izn vermək istəyirsiniz?"</string>
- <string name="grant_permissions_header_text" msgid="6874497408201826708">"Giriş sorğusu"</string>
- <string name="allow" msgid="7225948811296386551">"İcazə verin"</string>
- <string name="deny" msgid="2081879885755434506">"Rədd et"</string>
- <string name="permission_request_notification_title" msgid="6486759795926237907">"İcazə tələb olunur"</string>
- <string name="permission_request_notification_with_subtitle" msgid="8530393139639560189">\n" hesabı üçün<xliff:g id="ACCOUNT">%s</xliff:g> icazə sorğusu göndərildi."</string>
- <string name="input_method_binding_label" msgid="1283557179944992649">"Daxiletmə metodu"</string>
- <string name="sync_binding_label" msgid="3687969138375092423">"Sinxronizasiya"</string>
- <string name="accessibility_binding_label" msgid="4148120742096474641">"Əlçatımlılıq"</string>
- <string name="wallpaper_binding_label" msgid="1240087844304687662">"Divar kağızı"</string>
- <string name="chooser_wallpaper" msgid="7873476199295190279">"Divar kağızını dəyişin"</string>
- <string name="notification_listener_binding_label" msgid="2014162835481906429">"Bildiriş dinləyən"</string>
- <string name="vpn_title" msgid="19615213552042827">"VPN aktivləşdirildi"</string>
- <string name="vpn_title_long" msgid="6400714798049252294">"VPN <xliff:g id="APP">%s</xliff:g> tərəfindən aktivləşdirilib"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Şəbəkəni idarə etmək üçün toxunun."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> sessiyaya qoşuludur. Şəbəkəni idarə etmək üçün toxunun."</string>
- <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>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Konfiqurə etmək üçün toxun"</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>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Avtomobil rejimindən çıxmaq üçün toxunun."</string>
- <string name="tethered_notification_title" msgid="3146694234398202601">"Tezerinq və ya hotspot aktivdir"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Quraşdırmaq üçün toxunun."</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>
- <string name="throttle_warning_notification_title" msgid="4890894267454867276">"Yüksək mobil data istifadəsi"</string>
- <string name="throttle_warning_notification_message" msgid="3340822228599337743">"Mobil data istifadəsi haqqında daha çox öyrənmək üçün toxunun."</string>
- <string name="throttled_notification_title" msgid="6269541897729781332">"Mobil data limiti keçildi"</string>
- <string name="throttled_notification_message" msgid="5443457321354907181">"Mobil data istifadəsi haqqında daha çox öyrənmək üçün toxunun."</string>
- <string name="no_matches" msgid="8129421908915840737">"Uyğunluq yoxdur"</string>
- <string name="find_on_page" msgid="1946799233822820384">"Səhifədə tap"</string>
- <plurals name="matches_found">
- <item quantity="one" msgid="8167147081136579439">"1 uyğunluq"</item>
- <item quantity="other" msgid="4641872797067609177">"<xliff:g id="INDEX">%d</xliff:g> ədəddən <xliff:g id="TOTAL">%d</xliff:g>"</item>
- </plurals>
- <string name="action_mode_done" msgid="7217581640461922289">"Hazırdır"</string>
- <string name="progress_unmounting" product="nosdcard" msgid="3923810448507612746">"USB yaddaşı qaldırılır..."</string>
- <string name="progress_unmounting" product="default" msgid="1327894998409537190">"SD kart demontaj edilir..."</string>
- <string name="progress_erasing" product="nosdcard" msgid="4521573321524340058">"USB yaddaş silinir..."</string>
- <string name="progress_erasing" product="default" msgid="6596988875507043042">"SD kart silinir..."</string>
- <string name="format_error" product="nosdcard" msgid="6299769563624776948">"USB yaddaşı silinə bilmədi."</string>
- <string name="format_error" product="default" msgid="7315248696644510935">"SD kartı silmək mümkün olmadı."</string>
- <string name="media_bad_removal" msgid="7960864061016603281">"SD kart demontaj edilmədən öncə çıxarıldı."</string>
- <string name="media_checking" product="nosdcard" msgid="418188720009569693">"USB yaddaş hazırda yoxlanılır."</string>
- <string name="media_checking" product="default" msgid="7334762503904827481">"SD kart hazırda yoxlanılır."</string>
- <string name="media_removed" msgid="7001526905057952097">"SD kart çıxarılıb."</string>
- <string name="media_shared" product="nosdcard" msgid="5830814349250834225">"SD kart hazırda kompüter tərəfindən istifadə edilir."</string>
- <string name="media_shared" product="default" msgid="5706130568133540435">"SD kart hal-hazırda kompüter tərəfindən istifadə edilir."</string>
- <string name="media_unknown_state" msgid="729192782197290385">"Naməlum vəziyyətdə xarici media."</string>
- <string name="share" msgid="1778686618230011964">"Paylaşın"</string>
- <string name="find" msgid="4808270900322985960">"Tapın"</string>
- <string name="websearch" msgid="4337157977400211589">"Veb Axtarış"</string>
- <string name="find_next" msgid="5742124618942193978">"Sonrakını tap"</string>
- <string name="find_previous" msgid="2196723669388360506">"Əvvəlkini tap"</string>
- <string name="gpsNotifTicker" msgid="5622683912616496172">"<xliff:g id="NAME">%s</xliff:g> tərəfindən məkan sorğusu"</string>
- <string name="gpsNotifTitle" msgid="5446858717157416839">"Məkan sorğusu"</string>
- <string name="gpsNotifMessage" msgid="1374718023224000702">"<xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>) tərəfindən tələb edilib"</string>
- <string name="gpsVerifYes" msgid="2346566072867213563">"Bəli"</string>
- <string name="gpsVerifNo" msgid="1146564937346454865">"Xeyr"</string>
- <string name="sync_too_many_deletes" msgid="5296321850662746890">"Limiti keçəni silin"</string>
- <string name="sync_too_many_deletes_desc" msgid="496551671008694245">"<xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g> üçün <xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> silinmiş fayl var, <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g> hesabı. Nə etmək istəyirsiniz?"</string>
- <string name="sync_really_delete" msgid="2572600103122596243">"Elementləri sil"</string>
- <string name="sync_undo_deletes" msgid="2941317360600338602">"Silinənləri geri qaytar"</string>
- <string name="sync_do_nothing" msgid="3743764740430821845">"İndilik heç nə etmə"</string>
- <string name="choose_account_label" msgid="5655203089746423927">"Hesab seçin"</string>
- <string name="add_account_label" msgid="2935267344849993553">"Hesab əlavə et"</string>
- <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>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> toxunun və basaraq 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>
- <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Saatı artırın"</string>
- <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Saatı azaldın"</string>
- <string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"PM qurun"</string>
- <string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"AM qurun"</string>
- <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Artma ayı"</string>
- <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Ayı azaldın"</string>
- <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Artma günü"</string>
- <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Azalma günü"</string>
- <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Artım ili"</string>
- <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Azalma ili"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Ləğv et"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Sil"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Hazırdır"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Rejim dəyişikliyi"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Daxil olun"</string>
- <string name="activitychooserview_choose_application" msgid="2125168057199941199">"Tətbiq seçin"</string>
- <string name="shareactionprovider_share_with" msgid="806688056141131819">"Bununla paylaşın"</string>
- <string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ilə paylaşın"</string>
- <string name="content_description_sliding_handle" msgid="415975056159262248">"Sürüşən qulp. Toxunaraq basılı tutun."</string>
- <string name="description_direction_up" msgid="7169032478259485180">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> üçün yuxarı sürüşdürün."</string>
- <string name="description_direction_down" msgid="5087739728639014595">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> üçün aşağı sürüşdürün."</string>
- <string name="description_direction_left" msgid="7207478719805562165">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> üçün sola sürüşdür."</string>
- <string name="description_direction_right" msgid="8034433242579600980">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> üçün sağa sürüşdür."</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"Kilidi aç"</string>
- <string name="description_target_camera" msgid="969071997552486814">"Kamera"</string>
- <string name="description_target_silent" msgid="893551287746522182">"Səssiz"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"Səs açıqdır"</string>
- <string name="description_target_search" msgid="3091587249776033139">"Axtar"</string>
- <string name="description_target_unlock_tablet" msgid="3833195335629795055">"Kilidi açmaq üçün vurun."</string>
- <string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Parolların səsləndirilməsi üçün qulaqlıqları taxın."</string>
- <string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Nöqtə."</string>
- <string name="action_bar_home_description" msgid="5293600496601490216">"Evə gedin"</string>
- <string name="action_bar_up_description" msgid="2237496562952152589">"Yuxarı gedin"</string>
- <string name="action_menu_overflow_description" msgid="2295659037509008453">"Əlavə seçimlər"</string>
- <string name="action_bar_home_description_format" msgid="7965984360903693903">"%1$s, %2$s"</string>
- <string name="action_bar_home_subtitle_description_format" msgid="6985546530471780727">"%1$s, %2$s, %3$s"</string>
- <string name="storage_internal" msgid="4891916833657929263">"Daxili yaddaş"</string>
- <string name="storage_sd_card" msgid="3282948861378286745">"SD kart"</string>
- <string name="storage_usb" msgid="3017954059538517278">"USB yaddaş"</string>
- <string name="extract_edit_menu_button" msgid="8940478730496610137">"Redaktə et"</string>
- <string name="data_usage_warning_title" msgid="1955638862122232342">"Data istifadə xəbərdarlığı"</string>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"İstifadə və ayarları görmək üçün toxunun"</string>
- <string name="data_usage_3g_limit_title" msgid="7093334419518706686">"2G-3G data deaktivdir"</string>
- <string name="data_usage_4g_limit_title" msgid="7636489436819470761">"4G data deaktiv edildi"</string>
- <string name="data_usage_mobile_limit_title" msgid="7869402519391631884">"Mobil data deaktivdir"</string>
- <string name="data_usage_wifi_limit_title" msgid="8992154736441284865">"Wi-Fi data deaktiv edildi"</string>
- <string name="data_usage_limit_body" msgid="3317964706973601386">"Aktivləşdirmək üçün toxunun."</string>
- <string name="data_usage_3g_limit_snoozed_title" msgid="7026739121138005231">"2G-3G data limiti aşılıb"</string>
- <string name="data_usage_4g_limit_snoozed_title" msgid="1106562779311209039">"4G data limiti keçildi"</string>
- <string name="data_usage_mobile_limit_snoozed_title" msgid="279240572165412168">"Mobil data limiti keçildi"</string>
- <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>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Məhdudiyyəti aradan qaldırmaq üçün toxunun"</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>
- <string name="common_name" msgid="2233209299434172646">"Ümumi ad:"</string>
- <string name="org_name" msgid="6973561190762085236">"Təşkilat:"</string>
- <string name="org_unit" msgid="7265981890422070383">"Təşkilati vahid:"</string>
- <string name="issued_by" msgid="2647584988057481566">"Tərəfindən verilib:"</string>
- <string name="validity_period" msgid="8818886137545983110">"Keçərlilik:"</string>
- <string name="issued_on" msgid="5895017404361397232">"Dərc olunub:"</string>
- <string name="expires_on" msgid="3676242949915959821">"Bitmə vaxtı:"</string>
- <string name="serial_number" msgid="758814067660862493">"Seriya nömrəsi:"</string>
- <string name="fingerprints" msgid="4516019619850763049">"Barmaq izləri:"</string>
- <string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-256 barmaq izi:"</string>
- <string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1 barmaq izi:"</string>
- <string name="activity_chooser_view_see_all" msgid="4292569383976636200">"Hamısını seçın"</string>
- <string name="activity_chooser_view_dialog_title_default" msgid="4710013864974040615">"Fəaliyyəti seçin"</string>
- <string name="share_action_provider_share_with" msgid="5247684435979149216">"Bununla paylaşın"</string>
- <string name="status_bar_device_locked" msgid="3092703448690669768">"Cihaz kilidləndi."</string>
- <string name="list_delimeter" msgid="3975117572185494152">", "</string>
- <string name="sending" msgid="3245653681008218030">"Göndərilir..."</string>
- <string name="launchBrowserDefault" msgid="2057951947297614725">"Brauzer işə salınsın?"</string>
- <string name="SetupCallDefault" msgid="5834948469253758575">"Zəngi qəbul edək?"</string>
- <string name="activity_resolver_use_always" msgid="8017770747801494933">"Həmişə"</string>
- <string name="activity_resolver_use_once" msgid="2404644797149173758">"Sadəcə bir dəfə"</string>
- <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Planşet"</string>
- <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Telefon"</string>
- <string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Qulaqlıq"</string>
- <string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Dok spikerlər"</string>
- <string name="default_media_route_name_hdmi" msgid="2450970399023478055">"HDMI"</string>
- <string name="default_audio_route_category_name" msgid="3722811174003886946">"Sistem"</string>
- <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth audio"</string>
- <string name="wireless_display_route_description" msgid="9070346425023979651">"Simsiz ekran"</string>
- <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Hazırdır"</string>
- <string name="media_route_button_content_description" msgid="5758553567065145276">"Media çıxışı"</string>
- <string name="media_route_status_scanning" msgid="7279908761758293783">"Skan edilir..."</string>
- <string name="media_route_status_connecting" msgid="6422571716007825440">"Qoşulur..."</string>
- <string name="media_route_status_available" msgid="6983258067194649391">"Əlçatımlı"</string>
- <string name="media_route_status_not_available" msgid="6739899962681886401">"Əlçatımlı deyil"</string>
- <string name="media_route_status_in_use" msgid="4533786031090198063">"İstifadə olunur"</string>
- <string name="display_manager_built_in_display_name" msgid="2583134294292563941">"Daxili ekran"</string>
- <string name="display_manager_hdmi_display_name" msgid="1555264559227470109">"HDMI Ekran"</string>
- <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Örtük #<xliff:g id="ID">%1$d</xliff:g>"</string>
- <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string>
- <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", təhlükəsiz"</string>
- <string name="wifi_display_notification_title" msgid="2223050649240326557">"Simsiz ekran qoşulub"</string>
- <string name="wifi_display_notification_message" msgid="4498802012464170685">"Bu ekran digər cihazda göstərir"</string>
- <string name="wifi_display_notification_disconnect" msgid="6183754463561153372">"Bağlantını kəsin"</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"Təcili zəng"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Şablonu unutmuşam"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"Yanlış Model"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"Yanlış Şifrə"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN səhvdir"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"<xliff:g id="NUMBER">%1$d</xliff:g> saniyə sonra yenidən cəhd edin."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"Şablonunuzu çəkin"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"SIM PIN kodu daxil edin"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"PİN kodu daxil edin"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"Parol daxil edin"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM indi deaktivdir. Davam etmək üçün PUK kodu daxil edin. Əlavə məlumat üçün operatora müraciət edin."</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"İstədiyiniz PİN kodu daxil edin"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"İstədiyiniz PIN kodu təsdiqləyin"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SİM kartın kilidi açılır..."</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Yanlış PİN kod."</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"4-dən 8-ə qədər rəqəmi olan PIN yazın."</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK kod 8 rəqəm və ya daha çox olmalıdır."</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"Düzgün PUK kodu yenidən daxil edin. Təkrarlanan cəhdlər SIM\'i birdəfəlik sıradan çıxaracaq."</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN kodları uyğun deyil"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Həddindən çox cəhd edildi!"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"Kilidi açmaq üçün Google hesabınız ilə daxil olun."</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"İstifadəçi adı (e-poçt)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"Şifrə"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"Daxil ol"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"Yanlış istifadəçi adı və ya parol."</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"İstifadəçi adınızı və ya parolunuzu unutmusunuz?\n "<b>"google.com/accounts/recovery"</b>" linkinə daxil olun."</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"Hesab yoxlanılır..."</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"PIN kodunuzu <xliff:g id="NUMBER_0">%d</xliff:g> dəfə yanlış daxil etdiniz.\n\n <xliff:g id="NUMBER_1">%d</xliff:g> saniyə ərzində yenidən yoxlayın"</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Şifrənizi <xliff:g id="NUMBER_0">%d</xliff:g> dəfə yanlış daxil etdiniz. \n\n <xliff:g id="NUMBER_1">%d</xliff:g> saniyə ərzində yenidən yoxlayın."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Modelinizi <xliff:g id="NUMBER_0">%d</xliff:g> dəfə yanlış çəkmisiniz.\n\n <xliff:g id="NUMBER_1">%d</xliff:g> saniyə ərzində yenidən yoxlayın"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Siz planşet kilidini açmaq üçün <xliff:g id="NUMBER_0">%d</xliff:g> dəfə uğursuz cəhd etmisiniz. <xliff:g id="NUMBER_1">%d</xliff:g> dəfə də uğursuz cəhd etsəniz, planşet fabrik ayarlarına sıfırlanacaq və bütün məlumatlarınız itəcək."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Siz telefon kilidini açmaq üçün <xliff:g id="NUMBER_0">%d</xliff:g> dəfə uğursuz cəhd etmisiniz. <xliff:g id="NUMBER_1">%d</xliff:g> dəfə də uğursuz cəhd etsəniz, telefon fabrik ayarlarına sıfırlanacaq və bütün məlumatlarınız itəcək."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Siz planşet kilidini açmaq üçün <xliff:g id="NUMBER">%d</xliff:g> dəfə uğursuz cəhd etmisiniz. Planşet fabrik ayarlarına sıfırlanacaq."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Siz telefonun kilidini açmaq üçün <xliff:g id="NUMBER">%d</xliff:g> yanlış cəhd etmisiniz. Telefon artıq defolt zavod halına sıfırlanacaq."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Siz kilidi açmaq üçün şablonu <xliff:g id="NUMBER_0">%d</xliff:g> dəfə səhv çəkdiniz. <xliff:g id="NUMBER_1">%d</xliff:g> daha uğursuz cəhddən sonra planşetinizin kilidini e-poçt hesabınızla açmaq tələb olunacaq.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> saniyə ərzində bir daha yoxlayın."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Siz artıq modeli <xliff:g id="NUMBER_0">%d</xliff:g> dəfə yanlış daxil etmisiniz.<xliff:g id="NUMBER_1">%d</xliff:g> dəfə də yanlış daxil etsəniz, telefonun kilidinin açılması üçün elektron poçt ünvanınız tələb olunacaq.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> saniyə ərzində yenidən cəhd edin."</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" - "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Yığışdır"</string>
- <string name="safe_media_volume_warning" product="default" msgid="7324161939475478066">"Səs gücü tövsiyə edilən səviyyədən artırılsın?\nUzun müddət yüksək səs gücü ilə dinləmə Sizin eşitmə qabiliyyətinizə mənfi təsir edə bilər."</string>
- <string name="continue_to_enable_accessibility" msgid="1626427372316070258">"Əlçatımlığı aktivləşdirmək üçün iki barmağınızı basılı saxlayın."</string>
- <string name="accessibility_enabled" msgid="1381972048564547685">"Əlçatımlılıq aktivləşdirildi"</string>
- <string name="enable_accessibility_canceled" msgid="3833923257966635673">"Giriş imkanı ləğv edilib."</string>
- <string name="user_switched" msgid="3768006783166984410">"Cari istifadəçi <xliff:g id="NAME">%1$s</xliff:g>."</string>
- <string name="owner_name" msgid="2716755460376028154">"Sahib"</string>
- <string name="error_message_title" msgid="4510373083082500195">"Xəta"</string>
- <string name="app_no_restricted_accounts" msgid="5739463249673727736">"Bu tətbiq məhdud profillər üçün hesabları dəstəkləmir."</string>
- <string name="app_not_found" msgid="3429141853498927379">"Bu əməliyyatı idarə etmək üçün heç bir tətbiq tapılmadı."</string>
- <string name="revoke" msgid="5404479185228271586">"Ləğv edin"</string>
- <string name="mediaSize_iso_a0" msgid="7875427489420821793">"ISO A0"</string>
- <string name="mediaSize_iso_a1" msgid="3760734499050875356">"ISO A1"</string>
- <string name="mediaSize_iso_a2" msgid="5973266378020144382">"ISO A2"</string>
- <string name="mediaSize_iso_a3" msgid="1373407105687300884">"ISO A3"</string>
- <string name="mediaSize_iso_a4" msgid="6689772807982597254">"ISO A4"</string>
- <string name="mediaSize_iso_a5" msgid="5353549652015741040">"ISO A5"</string>
- <string name="mediaSize_iso_a6" msgid="8585038048674911907">"ISO A6"</string>
- <string name="mediaSize_iso_a7" msgid="6641836716963839119">"ISO A7"</string>
- <string name="mediaSize_iso_a8" msgid="7571139437465693355">"ISO A8"</string>
- <string name="mediaSize_iso_a9" msgid="1378455891957115079">"ISO A9"</string>
- <string name="mediaSize_iso_a10" msgid="2480747457429475344">"ISO A10"</string>
- <string name="mediaSize_iso_b0" msgid="3965935097661108039">"ISO B0"</string>
- <string name="mediaSize_iso_b1" msgid="2505753285010115437">"ISO B1"</string>
- <string name="mediaSize_iso_b2" msgid="8763874709859458453">"ISO B2"</string>
- <string name="mediaSize_iso_b3" msgid="4210506688191764076">"ISO B3"</string>
- <string name="mediaSize_iso_b4" msgid="5749404165888526034">"B4 ISO"</string>
- <string name="mediaSize_iso_b5" msgid="7640627414621904733">"ISO B5"</string>
- <string name="mediaSize_iso_b6" msgid="7342988864712748544">"ISO B6"</string>
- <string name="mediaSize_iso_b7" msgid="5069844065235382429">"ISO B7"</string>
- <string name="mediaSize_iso_b8" msgid="7316818922278779774">"ISO B8"</string>
- <string name="mediaSize_iso_b9" msgid="5414727094026532341">"ISO B9"</string>
- <string name="mediaSize_iso_b10" msgid="5251253731832048185">"ISO B10"</string>
- <string name="mediaSize_iso_c0" msgid="4003138342671964217">"ISO C0"</string>
- <string name="mediaSize_iso_c1" msgid="1935188063393553008">"ISO C1"</string>
- <string name="mediaSize_iso_c2" msgid="3197307969712069904">"ISO C2"</string>
- <string name="mediaSize_iso_c3" msgid="4335826087321913508">"ISO C3"</string>
- <string name="mediaSize_iso_c4" msgid="3745639598281015005">"ISO C4"</string>
- <string name="mediaSize_iso_c5" msgid="8269457765822791013">"ISO C5"</string>
- <string name="mediaSize_iso_c6" msgid="566666105260346930">"ISO C6"</string>
- <string name="mediaSize_iso_c7" msgid="8678413180782608498">"ISO C7"</string>
- <string name="mediaSize_iso_c8" msgid="8392376206627041730">"ISO C8"</string>
- <string name="mediaSize_iso_c9" msgid="9191613372324845405">"ISO C9"</string>
- <string name="mediaSize_iso_c10" msgid="7327709699184920822">"ISO C10"</string>
- <string name="mediaSize_na_letter" msgid="4191805615829472953">"Məktub"</string>
- <string name="mediaSize_na_gvrnmt_letter" msgid="7853382192649405507">"Hökumət Məktubu"</string>
- <string name="mediaSize_na_legal" msgid="6697982988283823150">"Hüquqi"</string>
- <string name="mediaSize_na_junior_legal" msgid="3727743969902758948">"Kiçik Hüquq"</string>
- <string name="mediaSize_na_ledger" msgid="281871464896601236">"Qovluq"</string>
- <string name="mediaSize_na_tabloid" msgid="5775966416333578127">"Qısa"</string>
- <string name="write_fail_reason_cancelled" msgid="7091258378121627624">"Ləğv edildi"</string>
- <string name="write_fail_reason_cannot_write" msgid="8132505417935337724">"Kontent yazmna xətası"</string>
- <string name="restr_pin_enter_pin" msgid="3395953421368476103">"PIN daxil edin"</string>
- <string name="restr_pin_enter_old_pin" msgid="1462206225512910757">"Cari PIN"</string>
- <string name="restr_pin_enter_new_pin" msgid="5959606691619959184">"Yeni PIN"</string>
- <string name="restr_pin_confirm_pin" msgid="8501523829633146239">"Yeni PIN\'i təsdiq edin"</string>
- <string name="restr_pin_create_pin" msgid="8017600000263450337">"Dəyişmə məhdudiyyətləri üçün PİN yaradın"</string>
- <string name="restr_pin_error_doesnt_match" msgid="2224214190906994548">"PİN uyğun gəlmir. Yenidən cəhd edin."</string>
- <string name="restr_pin_error_too_short" msgid="8173982756265777792">"PİN çox qısadır. Ən azı 4 rəqəm olmalıdır."</string>
- <plurals name="restr_pin_countdown">
- <item quantity="one" msgid="4835639969503729874">"Yanlış PİN. 1 saniyə sonra təkrar sınayın."</item>
- <item quantity="other" msgid="8030607343223287654">"Yanlış PİN. <xliff:g id="COUNT">%d</xliff:g> saniyə sonra təkrar sınayın."</item>
- </plurals>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Paneli göstərmək üçün ekranın küncünü sürüşdürün"</string>
-</resources>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index e7e52e40771f..ccc298674ef0 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -1795,6 +1795,7 @@
<!-- no translation found for restr_pin_countdown:other (4730868920742952817) -->
<!-- no translation found for restr_pin_try_later (973144472490532377) -->
<skip />
+ <!-- no translation found for immersive_mode_confirmation (7227416894979047467) -->
<!-- no translation found for immersive_mode_confirmation (8554991488096662508) -->
<skip />
</resources>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index e9f0d7844c58..99ba922e6506 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Опитайте отново след <xliff:g id="COUNT">%d</xliff:g> секунди"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Опитайте отново по-късно"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"За изх. от цял екр. прeк. пръст отгоре надолу"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"За изход от цял екран прекарайте пръст отгоре надолу."</string>
</resources>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 3bf7b2faa4af..8b46e8412ac0 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -440,7 +440,7 @@
<string name="permlab_readContacts" msgid="8348481131899886131">"lectura dels contactes"</string>
<string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"Permet que l\'aplicació llegeixi dades sobre els contactes que tinguis emmagatzemats a la tauleta, inclosa la freqüència amb què has trucat, has enviat correus electrònics o t\'has comunicat d\'altres maneres amb persones concretes. Aquest permís permet que les aplicacions desin les dades dels teus contactes, i és possible que les aplicacions malicioses comparteixin dades dels contactes sense el teu coneixement."</string>
<string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"Permet que l\'aplicació llegeixi dades sobre els contactes que tinguis emmagatzemats al telèfon, inclosa la freqüència amb què has trucat, has enviat correus electrònics o t\'has comunicat d\'altres maneres amb persones concretes. Aquest permís permet que les aplicacions desin les dades dels teus contactes, i és possible que les aplicacions malicioses comparteixin dades dels contactes sense el teu coneixement."</string>
- <string name="permlab_writeContacts" msgid="5107492086416793544">"modificació dels contactes"</string>
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"modificar els teus contactes"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"Permet que l\'aplicació modifiqui les dades sobre contactes emmagatzemades a la tauleta, inclosa la freqüència amb què has trucat, has enviat correus electrònics o t\'has comunicat d\'altres maneres amb contactes concrets. Aquest permís permet que les aplicacions suprimeixin dades de contactes."</string>
<string name="permdesc_writeContacts" product="default" msgid="589869224625163558">"Permet que l\'aplicació modifiqui les dades sobre contactes emmagatzemades al telèfon, inclosa la freqüència amb què has trucat, has enviat correus electrònics o t\'has comunicat d\'altres maneres amb contactes concrets. Aquest permís permet que les aplicacions suprimeixin dades de contactes."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"lectura del registre de trucades"</string>
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Torna-ho a provar d\'aquí a <xliff:g id="COUNT">%d</xliff:g> segons"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Torna-ho a provar més tard"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Fes llis. dit avall per sortir de pant. comp."</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Fes lliscar el dit cap avall per sortir de la pantalla completa."</string>
</resources>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index b52fd91e416f..73ca02bb2660 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Zkuste to znovu za <xliff:g id="COUNT">%d</xliff:g> s"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Zkuste to znovu později"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Režim celé obrazovky ukončíte přejetím dolů"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Režim celé obrazovky ukončíte přejetím dolů."</string>
</resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 72d31e209a3e..0cf5bc5f3454 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Prøv igen om <xliff:g id="COUNT">%d</xliff:g> sekunder"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Prøv igen senere"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Stryg ned fra toppen for at stoppe fuld skærm"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Stryg ned fra toppen for at afslutte fuld skærm"</string>
</resources>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 7503e8360fab..f799be4c5ed9 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"In <xliff:g id="COUNT">%d</xliff:g> Sek. wiederholen"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Später erneut versuchen"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Zum Schließen des Vollbilds von oben nach unten wischen"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Zum Schließen des Vollbilds von oben nach unten wischen"</string>
</resources>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 40efe0a7c635..605d845f2ab4 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Επανάληψη σε <xliff:g id="COUNT">%d</xliff:g> δευτ."</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Δοκιμάστε ξανά αργότερα"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Σάρωση προς τα κάτω για έξοδο από πλήρη οθόνη"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Σάρωση προς τα κάτω για έξοδο από πλήρη οθόνη"</string>
</resources>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index ecafaaf38cd1..ca8509aa09c2 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Try again in <xliff:g id="COUNT">%d</xliff:g> seconds"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Try again later"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Swipe down from the top to exit full screen"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Swipe down from the top to exit full screen."</string>
</resources>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index ecafaaf38cd1..ca8509aa09c2 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Try again in <xliff:g id="COUNT">%d</xliff:g> seconds"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Try again later"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Swipe down from the top to exit full screen"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Swipe down from the top to exit full screen."</string>
</resources>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index e9d23ab28dc2..eb731a3c12e2 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Intentar en <xliff:g id="COUNT">%d</xliff:g> s"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Vuelve a intentar más tarde."</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Salir de pantalla completa: deslizar abajo"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Salir de pantalla completa: deslizar abajo"</string>
</resources>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index bb3ae9474aa1..a89f35a2b583 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Inténtalo en <xliff:g id="COUNT">%d</xliff:g> s"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Volver a intentar más tarde"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Desliza hacia abajo para salir de la pantalla completa"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Desliza el dedo hacia abajo para salir de la pantalla completa"</string>
</resources>
diff --git a/core/res/res/values-et-rEE/strings.xml b/core/res/res/values-et-rEE/strings.xml
index ccb12d13dc81..742d3da44961 100644
--- a/core/res/res/values-et-rEE/strings.xml
+++ b/core/res/res/values-et-rEE/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Proovige uuesti <xliff:g id="COUNT">%d</xliff:g> sekundi pärast"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Proovige hiljem uuesti"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Täisekraani sulgemiseks pühkige ülevalt alla"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Täisekraani sulgemiseks pühkige ülevalt alla"</string>
</resources>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index ec0d93064f8a..71832c8b2469 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -314,7 +314,7 @@
<string name="permlab_stopAppSwitches" msgid="4138608610717425573">"väldi rakenduste ümberlülitamist"</string>
<string name="permdesc_stopAppSwitches" msgid="8262195802582255021">"Takistab kasutaja lülitumist teisele rakendusele."</string>
<string name="permlab_getTopActivityInfo" msgid="2537922311411546016">"aktiivse rakenduse teabe hankimine"</string>
- <string name="permdesc_getTopActivityInfo" msgid="8153651434145132505">"Lubab õiguse omanikul hankida privaatset teavet ekraani esiplaanil oleva aktiivse rakenduse ja teenuste kohta."</string>
+ <string name="permdesc_getTopActivityInfo" msgid="2512448855496067131">"Lubab õiguste saajal hankida privaatset teavet ekraanil esiplaanil oleva aktiivse rakenduse kohta."</string>
<string name="permlab_runSetActivityWatcher" msgid="892239094867182656">"Kõigi rakenduste käivitumise jälgimine ja juhtimine"</string>
<string name="permdesc_runSetActivityWatcher" msgid="6003603162578577406">"Võimaldab rakendusel jälgida ja juhtida, kuidas süsteem tegevusi käivitab. Pahatahtlikud rakendused võivad süsteemi täielikult rikkuda. Seda õigust on vaja ainult arenduseks, mitte tavakasutuse korral."</string>
<string name="permlab_broadcastPackageRemoved" msgid="2576333434893532475">"saada paketist eemaldatud saade"</string>
@@ -363,7 +363,7 @@
<string name="permlab_accessAllPrintJobs" msgid="1120792468465711159">"juurdepääs kõikidele printimistöödele"</string>
<string name="permdesc_accessAllPrintJobs" msgid="2978185311041864762">"Lubab omanikule juurdepääsu teise rakenduse loodud printimistöödele. Tavarakenduste puhul ei peaks seda kunagi vaja minema."</string>
<string name="permlab_bindNfcService" msgid="2752731300419410724">"NFC-teenusega sidumine"</string>
- <string name="permdesc_bindNfcService" msgid="6120647629174066862">"Lubab õiguste omajal luua seosed rakendustega, mis emuleerivad NFC-kaarte. Pole kunagi vajalik tavaliste rakenduste korral."</string>
+ <string name="permdesc_bindNfcService" msgid="6120647629174066862">"Lubab kasutajal luua seosed rakendustega, mis jäljendavad NFC-kaarte. Pole kunagi vajalik tavaliste rakenduste korral."</string>
<string name="permlab_bindTextService" msgid="7358378401915287938">"tekstiteenusega sidumine"</string>
<string name="permdesc_bindTextService" msgid="8151968910973998670">"Võimaldab omanikul siduda tekstiteenuse (nt SpellCheckerService) ülataseme liidesega. Tavarakenduste puhul ei peaks seda kunagi vaja minema."</string>
<string name="permlab_bindVpnService" msgid="4708596021161473255">"seo VPN-teenusega"</string>
@@ -407,10 +407,6 @@
<string name="permdesc_readLogs" product="default" msgid="2063438140241560443">"Võimaldab rakendusel lugeda süsteemi erinevaid logifaile. Nii on võimalik avastada üldist teavet selle kohta, mida te telefoniga teete, mis võib kaasata ka isiklikku või privaatset teavet."</string>
<string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"Mis tahes meediumidekooderi kasutamine taasesituseks"</string>
<string name="permdesc_anyCodecForPlayback" msgid="8283912488433189010">"Võimaldab rakendusel taasesituseks kasutada mis tahes installitud meediumidekooderit."</string>
- <!-- no translation found for permlab_manageCaCertificates (1678391896786882014) -->
- <skip />
- <!-- no translation found for permdesc_manageCaCertificates (4015644047196937014) -->
- <skip />
<string name="permlab_diagnostic" msgid="8076743953908000342">"loe/kirjuta valija allikaid"</string>
<string name="permdesc_diagnostic" msgid="6608295692002452283">"Võimaldab rakendusel lugeda valimisrühma mis tahes ressurssi ja sellesse kirjutada (näiteks kaustas /dev olevad failid). See võib mõjutada süsteemi stabiilsust ja turvet. Seda tohiks kasutada tootja või operaator AINULT riistvaraspetsiifiliseks diagnostikaks."</string>
<string name="permlab_changeComponentState" msgid="6335576775711095931">"Rakenduse komponentide lubamine või keelamine"</string>
@@ -476,14 +472,18 @@
<string name="permdesc_accessInputFlinger" msgid="2104864941201226616">"Lubab rakendusel kasutada InputFlingeri madalatasemelisi funktsioone."</string>
<string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"WiFi-ekraanide seadistamine"</string>
<string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"Lubab rakendusel seadistada WiFi-ekraane ja nendega ühendus luua."</string>
- <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"WiFi-ekraanide juhtimine"</string>
- <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"Lubab rakendusel juhtida WiFi-ekraanide madala taseme funktsioone."</string>
- <string name="permlab_captureAudioOutput" msgid="6857134498402346708">"heliväljundi jäädvustamine"</string>
- <string name="permdesc_captureAudioOutput" msgid="6210597754212208853">"Lubab rakendusel jäädvustada ja ümber suunata heliväljundit."</string>
- <string name="permlab_captureVideoOutput" msgid="2246828773589094023">"videoväljundi jäädvustamine"</string>
- <string name="permdesc_captureVideoOutput" msgid="359481658034149860">"Lubab rakendusel jäädvustada ja ümber suunata videoväljundit."</string>
- <string name="permlab_captureSecureVideoOutput" msgid="7815398969303382016">"kaitstud videoväljundi jäädvustamine"</string>
- <string name="permdesc_captureSecureVideoOutput" msgid="2779793064709350289">"Lubab rakendusel jäädvustada ja ümber suunata kaitstud videoväljundit."</string>
+ <!-- no translation found for permlab_captureAudioOutput (6857134498402346708) -->
+ <skip />
+ <!-- no translation found for permdesc_captureAudioOutput (6210597754212208853) -->
+ <skip />
+ <!-- no translation found for permlab_captureVideoOutput (2246828773589094023) -->
+ <skip />
+ <!-- no translation found for permdesc_captureVideoOutput (359481658034149860) -->
+ <skip />
+ <!-- no translation found for permlab_captureSecureVideoOutput (7815398969303382016) -->
+ <skip />
+ <!-- no translation found for permdesc_captureSecureVideoOutput (2779793064709350289) -->
+ <skip />
<string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"muuda heliseadeid"</string>
<string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"Võimaldab rakendusel muuta üldiseid heliseadeid, näiteks helitugevust ja seda, millist kõlarit kasutatakse väljundiks."</string>
<string name="permlab_recordAudio" msgid="3876049771427466323">"salvesta heli"</string>
@@ -657,8 +657,6 @@
<string name="permdesc_bindNotificationListenerService" msgid="985697918576902986">"Võimaldab omanikul siduda märguannete kuulamisteenuse ülemise taseme kasutajaliidese. Seda ei tohiks tavarakenduste puhul kunagi vaja olla."</string>
<string name="permlab_invokeCarrierSetup" msgid="3699600833975117478">"operaatoripoolse konfiguratsioonirakenduse aktiveerimine"</string>
<string name="permdesc_invokeCarrierSetup" msgid="4159549152529111920">"Lubab omanikul aktiveerida operaatoripoolse konfiguratsioonirakenduse. Tavarakenduste puhul ei peaks seda kunagi vaja minema."</string>
- <string name="permlab_accessNetworkConditions" msgid="8206077447838909516">"võrgutingimuste teabe kuulamine"</string>
- <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"Lubab rakendusel kuulata võrgutingimuste teavet. Ei ole kunagi vajalik tavaliste rakenduste puhul."</string>
<string name="policylab_limitPassword" msgid="4497420728857585791">"Parooli reeglite määramine"</string>
<string name="policydesc_limitPassword" msgid="3252114203919510394">"Kontrollige ekraaniluku avamise paroolide pikkust ja tähemärke."</string>
<string name="policylab_watchLogin" msgid="914130646942199503">"Ekraani avamiskatsed"</string>
@@ -1583,5 +1581,4 @@
<item quantity="one" msgid="4835639969503729874">"Vale PIN-kood. Proovige 1 s pärast."</item>
<item quantity="other" msgid="8030607343223287654">"Vale PIN-kood. Proovige <xliff:g id="COUNT">%d</xliff:g> s pärast."</item>
</plurals>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Riba kuvam. pühkige ekraani serva"</string>
</resources>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index f57ef469b41e..92d687fd2bd9 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"امتحان پس از <xliff:g id="COUNT">%d</xliff:g> ثانیه"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"بعداً دوباره امتحان کنید"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"برای خروج از تمام صفحه از بالا به پایین بکشید"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"برای خروج از تمام صفحه از بالا به پایین بکشید"</string>
</resources>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 40d4bdfcac1f..3130cbaddbbd 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Yritä uud. <xliff:g id="COUNT">%d</xliff:g> s kul."</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Yritä myöhemmin uudelleen"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Poistu koko näytön tilasta liu\'uttamalla alas"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Poistu koko näytön tilasta liu\'uttamalla alas."</string>
</resources>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 8a325edcc5ab..385ed4bb03d7 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Réessayer dans <xliff:g id="COUNT">%d</xliff:g> s"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Réessayez plus tard"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Balayez vers le bas pour quitter plein écran"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Balayez vers le bas pour quitter plein écran"</string>
</resources>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 4046d3dc9434..9a44a3159437 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Réessayer dans <xliff:g id="COUNT">%d</xliff:g> s"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Veuillez réessayer ultérieurement."</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Balayer vers le bas pour quitter le plein écran"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Balayer vers le bas pour quitter le plein écran"</string>
</resources>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index af2f2e3ca55e..73575bd6da5d 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"<xliff:g id="COUNT">%d</xliff:g> सेकंड में पुन: प्रयास करें"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"बाद में पुनः प्रयास करें"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"पूर्ण स्क्रीन से बाहर आने हेतु ऊपर से नीचे स्वाइप करें"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"पूर्ण स्क्रीन से बाहर आने के लिए ऊपर से नीचे स्वाइप करें."</string>
</resources>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 198416beb5d6..37dc14172cb1 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Ponovite za <xliff:g id="COUNT">%d</xliff:g> s"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Pokušajte ponovo kasnije"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Prijeđite prstom s vrha prema dolje za izlaz"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Prijeđite prstom s vrha prema dolje za izlaz iz cijelog zaslona."</string>
</resources>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 89f887866800..4ae593886602 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Próbálja újra <xliff:g id="COUNT">%d</xliff:g> másodperc múlva"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Próbálkozzon később"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"A kilépéshez húzza ujját a tetejétől lefelé"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"A teljes képernyős nézetből való kilépéshez húzza ujját a tetejétől lefelé."</string>
</resources>
diff --git a/core/res/res/values-hy-rAM/strings.xml b/core/res/res/values-hy-rAM/strings.xml
index 695ad0f2dee5..96ff31ef8f88 100644
--- a/core/res/res/values-hy-rAM/strings.xml
+++ b/core/res/res/values-hy-rAM/strings.xml
@@ -1114,7 +1114,7 @@
<string name="loading" msgid="7933681260296021180">"Բեռնում..."</string>
<string name="capital_on" msgid="1544682755514494298">"I"</string>
<string name="capital_off" msgid="6815870386972805832">"O"</string>
- <string name="whichApplication" msgid="4533185947064773386">"ավարտել գործողությունը` օգտագործելով"</string>
+ <string name="whichApplication" msgid="4533185947064773386">"Ավարտել գործողությունը` օգտագործելով"</string>
<string name="whichHomeApplication" msgid="4616420172727326782">"Ընտրեք հիմնական հավելվածը"</string>
<string name="alwaysUse" msgid="4583018368000610438">"Օգտագործել լռելյայն այս գործողության համար:"</string>
<string name="clearDefaultHintMsg" msgid="3252584689512077257">"Մաքրել լռելյայնը Համակարգի կարգավորումներ &gt; Ծրագրեր &gt;Ներբեռնված էջից:"</string>
@@ -1142,7 +1142,7 @@
<string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> ծրագիրը (գործընթաց <xliff:g id="PROCESS">%2$s</xliff:g>) խախտել է իր ինքնահարկադրված Խիստ ռեժիմ քաղաքականությունը:"</string>
<string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> գործընթացը խախտել է իր ինքնահարկադրված Խիստ ռեժիմ քաղաքականությունը:"</string>
<string name="android_upgrading_title" msgid="1584192285441405746">"Android-ը նորացվում է..."</string>
- <string name="android_upgrading_apk" msgid="7904042682111526169">"Հավելվածը օպտիմալացվում է <xliff:g id="NUMBER_0">%1$d</xliff:g>-ից <xliff:g id="NUMBER_1">%2$d</xliff:g>-ի:"</string>
+ <string name="android_upgrading_apk" msgid="7904042682111526169">"Օպտիմալացվում է հավելված <xliff:g id="NUMBER_0">%1$d</xliff:g>-ը <xliff:g id="NUMBER_1">%2$d</xliff:g>-ից:"</string>
<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>
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Կրկին փորձեք <xliff:g id="COUNT">%d</xliff:g> վայրկյանից"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Կրկին փորձեք մի փոքր ուշ"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Սահահարվածեք վերից վար՝ ամբողջական էկրանից դուրս գալու համար"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Սահահարվածեք վերից վար՝ ամբողջական էկրանից դուրս գալու համար:"</string>
</resources>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
deleted file mode 100644
index 1b04923df82e..000000000000
--- a/core/res/res/values-hy/strings.xml
+++ /dev/null
@@ -1,1585 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="byteShort" msgid="8340973892742019101">"Բ"</string>
- <string name="kilobyteShort" msgid="5973789783504771878">"Կբ"</string>
- <string name="megabyteShort" msgid="6355851576770428922">"Մբ"</string>
- <string name="gigabyteShort" msgid="3259882455212193214">"Գբ"</string>
- <string name="terabyteShort" msgid="231613018159186962">"Տբ"</string>
- <string name="petabyteShort" msgid="5637816680144990219">"Պբ"</string>
- <string name="fileSizeSuffix" msgid="9164292791500531949">"<xliff:g id="NUMBER">%1$s</xliff:g><xliff:g id="UNIT">%2$s</xliff:g>"</string>
- <string name="untitled" msgid="4638956954852782576">"&lt;Անանուն&gt;"</string>
- <string name="ellipsis" msgid="7899829516048813237">"…"</string>
- <string name="ellipsis_two_dots" msgid="1228078994866030736">"‥"</string>
- <string name="emptyPhoneNumber" msgid="7694063042079676517">"(Հեռախոսահամար չկա)"</string>
- <string name="unknownName" msgid="2277556546742746522">"(Անհայտ)"</string>
- <string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"Ձայնային փոստ"</string>
- <string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN1"</string>
- <string name="mmiError" msgid="5154499457739052907">"Միացման խնդիր կամ անվավեր MMI ծածակագիր:"</string>
- <string name="mmiFdnError" msgid="5224398216385316471">"Գործողությունը սահմանափակված է միայն ամրակայված հեռախոսահամարների համար:"</string>
- <string name="serviceEnabled" msgid="8147278346414714315">"Ծառայությունը միացված է:"</string>
- <string name="serviceEnabledFor" msgid="6856228140453471041">"Ծառայությունը միացված է`"</string>
- <string name="serviceDisabled" msgid="1937553226592516411">"Ծառայությունն անջատվել է:"</string>
- <string name="serviceRegistered" msgid="6275019082598102493">"Գրանցումը հաջողված է:"</string>
- <string name="serviceErased" msgid="1288584695297200972">"Ջնջումը հաջող էր:"</string>
- <string name="passwordIncorrect" msgid="7612208839450128715">"Սխալ գաղտնաբառ:"</string>
- <string name="mmiComplete" msgid="8232527495411698359">"MMI-ը ավարտված է:"</string>
- <string name="badPin" msgid="9015277645546710014">"Ձեր մուտքագրած հին PIN-ը ճիշտ չէ:"</string>
- <string name="badPuk" msgid="5487257647081132201">"Ձեր մուտքագրած PUK-ը ճիշտ չէ:"</string>
- <string name="mismatchPin" msgid="609379054496863419">"Ձեր մուտքագրած PIN-երը չեն համընկնում:"</string>
- <string name="invalidPin" msgid="3850018445187475377">"Մուտքագրեք PIN, որը 4-ից 8 թիվ է:"</string>
- <string name="invalidPuk" msgid="8761456210898036513">"Մուտքագրեք PUK, որն 8 կամ ավել թիվ ունի:"</string>
- <string name="needPuk" msgid="919668385956251611">"Ձեր SIM քարտը PUK-ով կողպված է: Մուտքագրեք PUK կոդը այն ապակողպելու համար:"</string>
- <string name="needPuk2" msgid="4526033371987193070">"Մուտքագրեք PUK2-ը` SIM քարտն արգելաբացելու համար:"</string>
- <string name="imei" msgid="2625429890869005782">"IMEI"</string>
- <string name="meid" msgid="4841221237681254195">"MEID"</string>
- <string name="ClipMmi" msgid="6952821216480289285">"Մուտքային զանգողի ID"</string>
- <string name="ClirMmi" msgid="7784673673446833091">"Ելքային զանգողի ID"</string>
- <string name="CfMmi" msgid="5123218989141573515">"Զանգի վերահասցեավորում"</string>
- <string name="CwMmi" msgid="9129678056795016867">"Զանգի սպասում"</string>
- <string name="BaMmi" msgid="455193067926770581">"Զանգի արգելափակում"</string>
- <string name="PwdMmi" msgid="7043715687905254199">"Գաղտնաբառի փոփոխում"</string>
- <string name="PinMmi" msgid="3113117780361190304">"PIN-ի փոփոխություն"</string>
- <string name="CnipMmi" msgid="3110534680557857162">"Զանգող համարը առկա է"</string>
- <string name="CnirMmi" msgid="3062102121430548731">"Զանգող հեռախոսահամարը սահմանափակված է"</string>
- <string name="ThreeWCMmi" msgid="9051047170321190368">"Երեք կողմով զանգ"</string>
- <string name="RuacMmi" msgid="7827887459138308886">"Անցանկալի վրդովեցնող զանգերի մերժում"</string>
- <string name="CndMmi" msgid="3116446237081575808">"Զանգող համարի առաքում"</string>
- <string name="DndMmi" msgid="1265478932418334331">"Չխանգարել"</string>
- <string name="CLIRDefaultOnNextCallOn" msgid="429415409145781923">"Զանգողի ID-ն լռելյայն սահմանափակված է: Հաջորդ զանգը` սահմանափակված"</string>
- <string name="CLIRDefaultOnNextCallOff" msgid="3092918006077864624">"Զանգողի ID-ն լռելյայն սահմանափակված է: Հաջորդ զանգը` չսահմանափակված"</string>
- <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"Զանգողի ID-ն լռելյայն չսահմանափակված է: Հաջորդ զանգը` Սահմանափակված"</string>
- <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"Զանգողի ID-ն լռելյայն չսահմանափակված է: Հաջորդ զանգը` չսահմանափակված"</string>
- <string name="serviceNotProvisioned" msgid="8614830180508686666">"Ծառայությունը չի տրամադրվում:"</string>
- <string name="CLIRPermanent" msgid="3377371145926835671">"Դուք չեք կարող փոխել զանգողի ID-ի կարգավորումները:"</string>
- <string name="RestrictedChangedTitle" msgid="5592189398956187498">"Սահմանափակված մուտքը փոխված է"</string>
- <string name="RestrictedOnData" msgid="8653794784690065540">"Տվյալների ծառայությունն արգելափակված է:"</string>
- <string name="RestrictedOnEmergency" msgid="6581163779072833665">"Արտակարգ իրավիճակի ծառայությունն արգելափակված է:"</string>
- <string name="RestrictedOnNormal" msgid="4953867011389750673">"Ձայնային ծառայությունը արգելափակված է:"</string>
- <string name="RestrictedOnAllVoice" msgid="3396963652108151260">"Բոլոր ձայնային ծառայությունները արգելափակված են:"</string>
- <string name="RestrictedOnSms" msgid="8314352327461638897">"SMS ծառայությունն արգելափակված է:"</string>
- <string name="RestrictedOnVoiceData" msgid="996636487106171320">"Ձայնային կամ տվյալների ծառայություններն արգելափակված են:"</string>
- <string name="RestrictedOnVoiceSms" msgid="1888588152792023873">"Ձայնային/SMS ծառայությունները արգելափակված են:"</string>
- <string name="RestrictedOnAll" msgid="5643028264466092821">"Բոլոր ձայնային/տվյալների/SMS ծառայությունները արգելափակված են:"</string>
- <string name="serviceClassVoice" msgid="1258393812335258019">"Ձայնային"</string>
- <string name="serviceClassData" msgid="872456782077937893">"Տվյալներ"</string>
- <string name="serviceClassFAX" msgid="5566624998840486475">"Ֆաքս"</string>
- <string name="serviceClassSMS" msgid="2015460373701527489">"SMS"</string>
- <string name="serviceClassDataAsync" msgid="4523454783498551468">"Չհամաժամեցված"</string>
- <string name="serviceClassDataSync" msgid="7530000519646054776">"Համաժամել"</string>
- <string name="serviceClassPacket" msgid="6991006557993423453">"Փաթեթ"</string>
- <string name="serviceClassPAD" msgid="3235259085648271037">"Հարթակ"</string>
- <string name="roamingText0" msgid="7170335472198694945">"Ռոումինգի ցուցիչը միացված է"</string>
- <string name="roamingText1" msgid="5314861519752538922">"Ռոումինգի ցուցիչը անջատված է"</string>
- <string name="roamingText2" msgid="8969929049081268115">"Ռոումինգի ցուցիչը թարթում է"</string>
- <string name="roamingText3" msgid="5148255027043943317">"Շրջակայքից դուրս"</string>
- <string name="roamingText4" msgid="8808456682550796530">"Շենքից դուրս"</string>
- <string name="roamingText5" msgid="7604063252850354350">"Ռոումինգ` նախընտրելի համակարգ"</string>
- <string name="roamingText6" msgid="2059440825782871513">"Ռոումինգ` հասանելի համակարգ"</string>
- <string name="roamingText7" msgid="7112078724097233605">"Ռոումինգ` դաշնային գործընկեր"</string>
- <string name="roamingText8" msgid="5989569778604089291">"Ռոումինգ` առաջնակարգ գործընկեր"</string>
- <string name="roamingText9" msgid="7969296811355152491">"Ռոումինգ` լիարժեք ծառայության գործառություն"</string>
- <string name="roamingText10" msgid="3992906999815316417">"Ռոումինգ` Մասնակի ծառայության գործառություն"</string>
- <string name="roamingText11" msgid="4154476854426920970">"Ռոումինգի ազդերիզը միացված է"</string>
- <string name="roamingText12" msgid="1189071119992726320">"Ռոումինգի ազդերիզն անջատված է"</string>
- <string name="roamingTextSearching" msgid="8360141885972279963">"Ծառայության որոնում..."</string>
- <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>. Չի վերահասցեավորվել"</string>
- <string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>. <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string>
- <string name="cfTemplateForwardedTime" msgid="9206251736527085256">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>. <xliff:g id="DIALING_NUMBER">{1}</xliff:g> <xliff:g id="TIME_DELAY">{2}</xliff:g> վայրկյանից"</string>
- <string name="cfTemplateRegistered" msgid="5073237827620166285">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>. Չի վերահասցեավորվել"</string>
- <string name="cfTemplateRegisteredTime" msgid="6781621964320635172">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>. Չի վերահասցեավորվել"</string>
- <string name="fcComplete" msgid="3118848230966886575">"Հատկության կոդը ամբողջական է:"</string>
- <string name="fcError" msgid="3327560126588500777">"Կապի խնդիր կամ անվավեր գործառույթի կոդ:"</string>
- <string name="httpErrorOk" msgid="1191919378083472204">"Լավ"</string>
- <string name="httpError" msgid="7956392511146698522">"Ցանցային սխալ էր տեղի ունեցել:"</string>
- <string name="httpErrorLookup" msgid="4711687456111963163">"URL-ը չհաջողվեց գտնել:"</string>
- <string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"Կայքի նույնականացման սխեման չի աջակցվում:"</string>
- <string name="httpErrorAuth" msgid="1435065629438044534">"Չհաջողվեց նույնականացնել:"</string>
- <string name="httpErrorProxyAuth" msgid="1788207010559081331">"Նույնականացումը պրոքսի սերվերի միջոցով անհաջող էր:"</string>
- <string name="httpErrorConnect" msgid="8714273236364640549">"Չհաջողվեց միանալ սերվերին:"</string>
- <string name="httpErrorIO" msgid="2340558197489302188">"Կապը սերվերի հետ չհաջողվեց: Փորձեք կրկին ավելի ուշ:"</string>
- <string name="httpErrorTimeout" msgid="4743403703762883954">"Սերվերի հետ կապակցման ժամանակը սպառվել է:"</string>
- <string name="httpErrorRedirectLoop" msgid="8679596090392779516">"Էջը պարունակում է չափազանց շատ սերվերի վերահղում:"</string>
- <string name="httpErrorUnsupportedScheme" msgid="5015730812906192208">"Պրոտոկոլը չի աջակցվում:"</string>
- <string name="httpErrorFailedSslHandshake" msgid="96549606000658641">"Չհաջողվեց հաստատել ապահով կապ:"</string>
- <string name="httpErrorBadUrl" msgid="3636929722728881972">"Չհաջողվեց բացել էջը, որովհետև URL-ը անվավեր է:"</string>
- <string name="httpErrorFile" msgid="2170788515052558676">"Չհաջողվեց մուտք գործել ֆայլ:"</string>
- <string name="httpErrorFileNotFound" msgid="6203856612042655084">"Չհաջողվեց գտնել հարցվող ֆայլը:"</string>
- <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Չափից շատ հարցումներ են մշակվում: Փորձեք կրկին ավելի ուշ:"</string>
- <string name="notification_title" msgid="8967710025036163822">"Մուտք գործելու սխալ` <xliff:g id="ACCOUNT">%1$s</xliff:g>-ի համար"</string>
- <string name="contentServiceSync" msgid="8353523060269335667">"Համաժամեցնել"</string>
- <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Համաժամել"</string>
- <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Չափից շատ <xliff:g id="CONTENT_TYPE">%s</xliff:g> հեռացումներ:"</string>
- <string name="low_memory" product="tablet" msgid="6494019234102154896">"Գրասալիկի պահոցը լիքն է: Ջնջեք մի քանի ֆայլ` տարածք ազատելու համար:"</string>
- <string name="low_memory" product="default" msgid="3475999286680000541">"Հեռախոսի պահոցը լիքն է: Ջնջեք մի քանի ֆայլեր` տարածություն ազատելու համար:"</string>
- <string name="me" msgid="6545696007631404292">"Իմ"</string>
- <string name="power_dialog" product="tablet" msgid="8545351420865202853">"Գրասալիկի ընտրանքները"</string>
- <string name="power_dialog" product="default" msgid="1319919075463988638">"Հեռախոսի ընտրանքներ"</string>
- <string name="silent_mode" msgid="7167703389802618663">"Անձայն ռեժիմ"</string>
- <string name="turn_on_radio" msgid="3912793092339962371">"Միացնել անլար"</string>
- <string name="turn_off_radio" msgid="8198784949987062346">"Անլարը անջատել"</string>
- <string name="screen_lock" msgid="799094655496098153">"էկրանի կողպեք"</string>
- <string name="power_off" msgid="4266614107412865048">"Անջատել"</string>
- <string name="silent_mode_silent" msgid="319298163018473078">"Զանգակն անջատված է"</string>
- <string name="silent_mode_vibrate" msgid="7072043388581551395">"Զանգակի թրթռոց"</string>
- <string name="silent_mode_ring" msgid="8592241816194074353">"Զանգակը միացված է"</string>
- <string name="shutdown_progress" msgid="2281079257329981203">"Անջատվում է…"</string>
- <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Ձեր գրասալիկը կանջատվի:"</string>
- <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Ձեր հեռախոսը կանջատվի:"</string>
- <string name="shutdown_confirm_question" msgid="2906544768881136183">"Ցանկանու՞մ եք անջատել:"</string>
- <string name="reboot_safemode_title" msgid="7054509914500140361">"Վերաբեռնել անվտանգ ռեժիմի"</string>
- <string name="reboot_safemode_confirm" msgid="55293944502784668">"Ցանկանու՞մ եք վերաբեռնել անվտանգ ռեժիմի: Սա կկասեցնի ձեր տեղադրած բոլոր կողմնակի ծրագրերը: Դրանք կվերականգնվեն, երբ դուք կրկին վերաբեռնեք:"</string>
- <string name="recent_tasks_title" msgid="3691764623638127888">"Վերջին"</string>
- <string name="no_recent_tasks" msgid="8794906658732193473">"Նոր հավելվածեր չկան:"</string>
- <string name="global_actions" product="tablet" msgid="408477140088053665">"Գրասալիկի ընտրանքները"</string>
- <string name="global_actions" product="default" msgid="2406416831541615258">"Հեռախոսի ընտրանքներ"</string>
- <string name="global_action_lock" msgid="2844945191792119712">"Էկրանի փական"</string>
- <string name="global_action_power_off" msgid="4471879440839879722">"Անջատել"</string>
- <string name="global_action_bug_report" msgid="7934010578922304799">"Վրիպակի զեկույց"</string>
- <string name="bugreport_title" msgid="2667494803742548533">"Գրել սխալի զեկույց"</string>
- <string name="bugreport_message" msgid="398447048750350456">"Սա տեղեկություններ կհավաքագրի ձեր սարքի առկա կարգավիճակի մասին և կուղարկի այն էլեկտրոնային նամակով: Որոշակի ժամանակ կպահանջվի վրիպակի մասին զեկուցելու պահից սկսած մինչ ուղարկելը: Խնդրում ենք փոքր-ինչ համբերատար լինել:"</string>
- <string name="global_action_toggle_silent_mode" msgid="8219525344246810925">"Անձայն ռեժիմ"</string>
- <string name="global_action_silent_mode_on_status" msgid="3289841937003758806">"Ձայնը անջատված է"</string>
- <string name="global_action_silent_mode_off_status" msgid="1506046579177066419">"Ձայնը միացված է"</string>
- <string name="global_actions_toggle_airplane_mode" msgid="5884330306926307456">"Ինքնաթիռային ռեժիմ"</string>
- <string name="global_actions_airplane_mode_on_status" msgid="2719557982608919750">"Ինքնաթիռային ռեժիմը միացված է"</string>
- <string name="global_actions_airplane_mode_off_status" msgid="5075070442854490296">"Ինքնաթիռային ռեժիմը անջատված է"</string>
- <string name="status_bar_notification_info_overflow" msgid="5301981741705354993">"999+"</string>
- <string name="safeMode" msgid="2788228061547930246">"Անվտանգ ռեժիմ"</string>
- <string name="android_system_label" msgid="6577375335728551336">"Android համակարգ"</string>
- <string name="permgrouplab_costMoney" msgid="5429808217861460401">"Ծառայություններ, որոնց համար կգանձվեք"</string>
- <string name="permgroupdesc_costMoney" msgid="3293301903409869495">"Կատարել գործողություններ, որի դիմաց ձեր հաշվից գումար կծախսվի:"</string>
- <string name="permgrouplab_messages" msgid="7521249148445456662">"Ձեր հաղորդագրությունները"</string>
- <string name="permgroupdesc_messages" msgid="7821999071003699236">"Կարդալ և գրել ձեր SMS-ը, նամակը և այլ հաղորդագրություններ:"</string>
- <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Ձեր անձնական տեղեկությունները"</string>
- <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Ուղղակի մուտք ձեր մասին տեղեկություններ` պահված ձեր կոնտակտային քարտում:"</string>
- <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Ձեր սոցիալական տեղեկությունները"</string>
- <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Ուղղակի մուտք ձեր կոնտակտների մասին տեղեկություններ և սոցիալական կապեր:"</string>
- <string name="permgrouplab_location" msgid="635149742436692049">"Ձեր տեղադրությունը"</string>
- <string name="permgroupdesc_location" msgid="5704679763124170100">"Վերահսկել ձեր ֆիզիկական տեղադրությունը:"</string>
- <string name="permgrouplab_network" msgid="5808983377727109831">"Ցանցային հաղորդակցություն"</string>
- <string name="permgroupdesc_network" msgid="4478299413241861987">"Մուտք գործել ցանցի տարբեր գործառույթներ:"</string>
- <string name="permgrouplab_bluetoothNetwork" msgid="1585403544162128109">"Bluetooth"</string>
- <string name="permgroupdesc_bluetoothNetwork" msgid="5625288577164282391">"Մուտք գործել սարքեր և ցանցեր Bluetooth-ի միջոցով:"</string>
- <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Ձայնանյութի կարգավորումներ"</string>
- <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Փոխել ձայնանյութի կարգավորումները:"</string>
- <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Ազդում է մարտկոցի վրա"</string>
- <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Օգտագործել գործիքները, որոնք կարող են արագ սպառել մարտկոցը:"</string>
- <string name="permgrouplab_calendar" msgid="5863508437783683902">"Օրացույց"</string>
- <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Անմիջական մուտք օրացույց և իրադարձություններ:"</string>
- <string name="permgrouplab_dictionary" msgid="4148597128843641379">"Կարդալ օգտվողի բառարանը"</string>
- <string name="permgroupdesc_dictionary" msgid="7921166355964764490">"Կարդալ բառերը օգտվողի բառարանում:"</string>
- <string name="permgrouplab_writeDictionary" msgid="8090237702432576788">"Գրել օգտվողի բառարանում"</string>
- <string name="permgroupdesc_writeDictionary" msgid="2711561994497361646">"Ավելացնել բառեր օգտվողի բառարանում:"</string>
- <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Էջանիշեր և պատմություն"</string>
- <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Ուղղակի մուտք դեպի էջանիշեր և դիտարկչի պատմություն:"</string>
- <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Ազդանշան"</string>
- <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Կարգավորել զարթուցիչի ժամացույցը:"</string>
- <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Ձայնային փոստ"</string>
- <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Ուղղակի մուտք դեպի ձայնային փոստ:"</string>
- <string name="permgrouplab_microphone" msgid="171539900250043464">"Բարձրախոս"</string>
- <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Ուղղակի մուտք դեպի բարձրախոս` ձայնանյութ ձայնագրելու համար:"</string>
- <string name="permgrouplab_camera" msgid="4820372495894586615">"Ֆոտոխցիկ"</string>
- <string name="permgroupdesc_camera" msgid="2933667372289567714">"Ուղղակի մուտք դեպի ֆոտոխցիկ` լուսանկարելու կամ տեսանկարելու համար:"</string>
- <string name="permgrouplab_screenlock" msgid="8275500173330718168">"Կողպել էկրանը"</string>
- <string name="permgroupdesc_screenlock" msgid="7067497128925499401">"Հնարավորություն ունի ազդելու ձեր սարքի կողպէկրանի ռեժիմի վրա:"</string>
- <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Ձեր հավելվածների տեղեկությունները"</string>
- <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Հնարավորություն` ազդելու մյուս հավելվածների վարքագծի վրա ձեր սարքում:"</string>
- <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Պաստառ"</string>
- <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Փոխել սարքի պաստառի կարգավորումները:"</string>
- <string name="permgrouplab_systemClock" msgid="406535759236612992">"Ժամացույց"</string>
- <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Փոխել սարքի ժամը կամ ժամային գոտին:"</string>
- <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Կարգավիճակի գոտի"</string>
- <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Փոխել սարքի կարգավիճակի գոտու կարգավորումները:"</string>
- <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Համաժամեցման կարգավորումներ"</string>
- <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Մուտք գործել համաժամեցման կարգավորումներ:"</string>
- <string name="permgrouplab_accounts" msgid="3359646291125325519">"Ձեր հաշիվները"</string>
- <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Մուտքի հնարավորություն առկա հաշիվներ:"</string>
- <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Սարքաշարի կարգավորումներ"</string>
- <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Անմիջական մուտք հեռախոսի սարքաշար:"</string>
- <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Հեռախոսային զանգերը"</string>
- <string name="permgroupdesc_phoneCalls" msgid="7489701620446183770">"Վերահսկել, ձայնագրելել և կատարել հեռախոսազանգեր:"</string>
- <string name="permgrouplab_systemTools" msgid="4652191644082714048">"Համակարգի գործիքները"</string>
- <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Համակարգի ավելի ցածր մակարդակի մատչում և վերահսկողություն:"</string>
- <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Ծրագրավորման գործիքներ"</string>
- <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Գործառույթներ, որ անհրաժեշտ են միայն հավելվածների ծրագրավորողներին:"</string>
- <string name="permgrouplab_display" msgid="4279909676036402636">"Այլ հավելվածի UI"</string>
- <string name="permgroupdesc_display" msgid="6051002031933013714">"Ազդել այլ հավելվածների UI-ներին:"</string>
- <string name="permgrouplab_storage" msgid="1971118770546336966">"Պահոց"</string>
- <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Մուտք գործել USB պահոց:"</string>
- <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Մուտք գործել SD քարտ:"</string>
- <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Մատչելիության գործիքներ"</string>
- <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Հատկություններ, որ օժանդակող տեխնոլոգիան կարող է հայցել:"</string>
- <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Առբերել պատուհանի բովանդակությունը"</string>
- <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Ստուգեք պատուհանի բովանդակությունը, որի հետ փոխգործակցում եք:"</string>
- <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Միացնել Հպման միջոցով հետազոտումը"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Տարրերը, որոնց հպեք, բարձրաձայն կխոսեն, և էկրանը հնարավոր կլինի ուսումնասիրել ժեստերով:"</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>
- <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Ներառում է անձնական տվյալներ, ինչպիսիք են վարկային քարտերի համարները և գաղտնաբառերը:"</string>
- <string name="permlab_statusBar" msgid="7417192629601890791">"անջատել կամ փոփոխել կարգավիճակի գոտին"</string>
- <string name="permdesc_statusBar" msgid="8434669549504290975">"Թույլ է տալիս հավելվածին անջատել կարգավիճակի գոտին կամ ավելացնել ու հեռացնել համակարգի պատկերակները:"</string>
- <string name="permlab_statusBarService" msgid="7247281911387931485">"կարգավիճակի գոտի"</string>
- <string name="permdesc_statusBarService" msgid="716113660795976060">"Թույլ է տալիս հավելվածին կարգավիճակի գոտին լինել:"</string>
- <string name="permlab_expandStatusBar" msgid="1148198785937489264">"ընդլայնել կամ ետ ծալել կարգավիճակի գոտին"</string>
- <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Թույլ է տալիս ծրագրին ընդլայնել կամ ետ ծալել կարգավիճակի գոտին:"</string>
- <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"վերաուղղել ելքային զանգերը"</string>
- <string name="permdesc_processOutgoingCalls" msgid="5331318931937402040">"Թույլ է տալիս հավելվածին մշակել ելքային զանգերը և փոխել համարհավաքումը: Վնասարար հավելվածները կարող են վերահսկել, վերահասցեավորել կամ կանխել ելքային զանգերը:"</string>
- <string name="permlab_receiveSms" msgid="8673471768947895082">"ստանալ տեքստային հաղորդագրություններ (SMS)"</string>
- <string name="permdesc_receiveSms" msgid="6424387754228766939">"Թույլ է տալիս հավելվածին ստանալ և մշակել SMS հաղորդագրությունները: Սա նշանակում է, որ հավելվածը կարող է ստուգել կամ ջնջել ձեր սարքին ուղարկված հաղորդագրությունները` առանց դրանք ձեզ ցուցադրելու:"</string>
- <string name="permlab_receiveMms" msgid="1821317344668257098">"ստանալ տեքստային հաղորդագրություններ (MMS)"</string>
- <string name="permdesc_receiveMms" msgid="533019437263212260">"Թույլ է տալիս հավելվածին ստանալ և մշակել MMS հաղորդագրությունները: Սա նշանակում է, որ հավելվածը կարող է ստուգել կամ ջնջել ձեր սարքին ուղարկված հաղորդագրությունները` առանց դրանք ձեզ ցուցադրելու:"</string>
- <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"ստանալ արտակարգ իրավիճակների հաղորդումներ"</string>
- <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Թույլ է տալիս հավելվածին ստանալ և մշակել ծանուցվող արտակարգ հաղորդակցությունները: Այս թույլտվությունը հասանելի է միայն համակարգային ծրագրերին:"</string>
- <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"կարդալ բջջային զեկուցվող հաղորդագրությունները"</string>
- <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Թույլ է տալիս հավելվածին կարդալ ձեր սարքի կողմից ստացված բջջային հեռարձակվող հաղորդագրությունները: Բջջային հեռարձակվող զգուշացումները ուղարկվում են որոշ վայրերում` արտակարգ իրավիճակների մասին ձեզ զգուշացնելու համար: Վնասարար հավելվածները կարող են խանգարել ձեր սարքի արդյունավետությանը կամ շահագործմանը, երբ ստացվում է արտակարգ իրավիճակի մասին բջջային հաղորդում:"</string>
- <string name="permlab_sendSms" msgid="5600830612147671529">"ուղարկել SMS հաղորդագրություններ"</string>
- <string name="permdesc_sendSms" msgid="7094729298204937667">"Թույլ է տալիս հավելվածին ուղարկել SMS հաղորդագրություններ: Այն կարող է անսպասելի ծախսերի պատճառ դառնալ: Վնասարար հավելվածները կարող են ձեր հաշվից գումար ծախսել` ուղարկելով հաղորդագրություններ` առանց ձեր հաստատման:"</string>
- <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"պատասխանել հաղորդագրության միջոցով իրադարձություններ ուղարկել"</string>
- <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Թույլ է տալիս հավելվածին հարցումներ ուղարկել այլ հաղորդագրությունների հավելվածներին` կառավարելու մուտքային զանգերին հաղորդագրության միջոցով պատասխանելու դեպքերը:"</string>
- <string name="permlab_readSms" msgid="8745086572213270480">"կարդալ ձեր տեքստային հաղորդագրությունները (SMS կամ MMS)"</string>
- <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Թույլ է տալիս հավելվածին կարդալ ձեր գրասալիկում կամ SIM քարտում պահված SMS հաղորդագրությունները: Սա թույլ է տալիս հավելվածին կարդալ բոլոր SMS հաղորդագրությունները` անկախ բովանդակությունից կամ գաղտնիությունից:"</string>
- <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Թույլ է տալիս հավելվածին կարդալ ձեր հեռախոսում կամ SIM քարտում պահված SMS հաղորդագրությունները: Սա թույլ է տալիս հավելվածին կարդալ բոլոր SMS հաղորդագրությունները` անկախ բովանդակությունից կամ գաղտնիությունից:"</string>
- <string name="permlab_writeSms" msgid="3216950472636214774">"խմբագրել ձեր տեքստային հաղորդագրությունները (SMS կամ MMS)"</string>
- <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Թույլ է տալիս հավելվածին պատասխանել ձեր գրասալիկում կամ SIM քարտում պահված SMS հաղորդագրություններին: Վնասարար հավելվածները կարող են ջնջել ձեր հաղորդագրությունները:"</string>
- <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Թույլ է տալիս հավելվածին պատասխանել ձեր հեռախոսում կամ SIM քարտում պահված SMS հաղորդագրություններին: Վնասարար հավելվածները կարող են ջնջել ձեր հաղորդագրությունները:"</string>
- <string name="permlab_receiveWapPush" msgid="5991398711936590410">"ստանալ տեքստային հաղորդագրություններ (WAP)"</string>
- <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Թույլ է տալիս հավելվածին ստանալ և գործարկել WAP հաղորդագրությունները: Այս թույլտվությունը ներառում է ձեզ ուղարկված հաղորդագրությունները հետևելու կամ ջնջելու կարողությունը` առանց ձեր տեսնելու:"</string>
- <string name="permlab_getTasks" msgid="6466095396623933906">"առբերել աշխատող հավելվածները"</string>
- <string name="permdesc_getTasks" msgid="7454215995847658102">"Թույլ է տալիս հավելվածին առբերել մանրամասն տեղեկություններ առկա և վերջերս աշխատող առաջադրանքների մասին: Սա կարող է թույլ տալ հավելվածին հայտնաբերել անձնական տեղեկություններ այլ հավելվածների վերաբերյալ:"</string>
- <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"հաղորդակցվել օգտվողների միջև"</string>
- <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Թույլ է տալիս հավելվածին իրականացնել գործողություններ սարքի տարբեր օգտվողների միջոցով: Վնասարար հավելվածները կարող են օգտագործել սա` խախտելու օգտվողների միջև պաշտպանությունը:"</string>
- <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"ամբողջական հաղորդակցվելու արտոնություն օգտվողների միջև"</string>
- <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Թույլ է տալիս բոլոր հնարավոր հաղորդակցության եղանակները օգտվողների միջև:"</string>
- <string name="permlab_manageUsers" msgid="1676150911672282428">"կառավարել օգտվողներին"</string>
- <string name="permdesc_manageUsers" msgid="8409306667645355638">"Թույլ է տալիս հավելվածներին կառավարել սարքի օգտագործողներին, այդ թվում` հարցումները, ստեղծումն ու ջնջումը:"</string>
- <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"առբերել աշխատող հավելվածների մանրամասները"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Թույլ է տալիս հավելվածին առբերել մանրամասն տեղեկություններ առկա և վերջերս աշխատող առաջադրանքների մասին: Վնասարար հավելվածները կարող են հայտնաբերել անձնական տեղեկություններ այլ հավելվածների վերաբերյալ:"</string>
- <string name="permlab_reorderTasks" msgid="2018575526934422779">"վերադասավորել աշխատող հավելվածները"</string>
- <string name="permdesc_reorderTasks" msgid="7734217754877439351">"Թույլ է տալիս հավելվածին փոխանցել առաջադրանքները առջևք և հետնաշերտ: Հավելվածը կարող է սա անել առանց ձեր ներածման:"</string>
- <string name="permlab_removeTasks" msgid="6821513401870377403">"դադարեցնել հավելվածների աշխատանքը"</string>
- <string name="permdesc_removeTasks" msgid="1394714352062635493">"Թույլ է տալիս հավելվածին հեռացնել առաջադրաքները և վերացնել դրանց հավելվածները: Վնասարար հավելվածները կարող են խանգարել այլ հավելվածների գործունեությանը:"</string>
- <string name="permlab_manageActivityStacks" msgid="7391191384027303065">"կառավարել գործունեության կույտերը"</string>
- <string name="permdesc_manageActivityStacks" msgid="1615881933034084440">"Թույլ է տալիս ծրագրին ավելացնել, հեռացնել և փոփոխել գործունեության կույտերը, որոնցում աշխատում են այլ ծրագրեր: Վնասակար ծրագրերը կարող են խաթարել այլ ծրագրերի վարքագիծը:"</string>
- <string name="permlab_startAnyActivity" msgid="2918768238045206456">"մեկնարկել ցանկացած գործունեություն"</string>
- <string name="permdesc_startAnyActivity" msgid="997823695343584001">"Թույլ է տալիս հավելվածին մեկնարկել ցանկացած գործունեություն` անկախ թույլտվության պաշտպանվածությունից կամ արտահանման կարգավիճակից:"</string>
- <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"կարգավորել էկրանի համատեղելիությունը"</string>
- <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Թույլ է տալիս հավելվածին վերահսկել այլ հավելվածների էկրանի համատեղելիության ռեժիմը: Վնասարար հավելվածները կարող են խաթարել այլ հավելվածների վարքագիծը:"</string>
- <string name="permlab_setDebugApp" msgid="3022107198686584052">"միացնել հավելվածի վրիպազերծումը"</string>
- <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Թույլ է տալիս հավելվածին միացնել վրիպազերծումը այլ հավելվածի համար: Վնասարար հավելվածները կարող են օգտագործել սա` մյուս հավելվածները վերացնելու համար:"</string>
- <string name="permlab_changeConfiguration" msgid="4162092185124234480">"փոխել համակարգի ցուցադրման կարգավորումները"</string>
- <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Թույլ է տալիս հավելվածին փոխել առկա կարգավորումը, ինչպես օրինակ տեղույթի կամ ընդհանուր տառաչափը:"</string>
- <string name="permlab_enableCarMode" msgid="5684504058192921098">"միացնել մեքենայի ռեժիմը"</string>
- <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Թույլ է տալիս հավելվածին միացնել մեքենայի ռեժիմը:"</string>
- <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"փակել այլ հավելվածները"</string>
- <string name="permdesc_killBackgroundProcesses" msgid="4593353235959733119">"Թույլ է տալիս հավելվածին վերջ տալ այլ հավելվածների հետնաշերտի գործընթացները: Սա կարող է պատճառ դառնալ, որ այլ հավելվածները դադարեն աշխատել:"</string>
- <string name="permlab_forceStopPackages" msgid="2329627428832067700">"ստիպել դադարեցնել այլ հավելվածները"</string>
- <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Թույլ է տալիս հավելվածին ստիպողաբար դադարեցնել այլ հավելվածները:"</string>
- <string name="permlab_forceBack" msgid="652935204072584616">"ստիպել, որ հավելվածը փակվի"</string>
- <string name="permdesc_forceBack" msgid="3892295830419513623">"Թույլ է տալիս հավելվածին ստիպել որևէ գործունեություն, որը գտնվում է առջևքում, փակել ու ետ գնալ: Սովորական հավելվածների համար երբևէ անհրաժեշտ չպետք է լինի:"</string>
- <string name="permlab_dump" msgid="1681799862438954752">"առբերել համակարգի ներքին կարգավիճակը"</string>
- <string name="permdesc_dump" msgid="1778299088692290329">"Թույլ է տալիս հավելվածին առբերել համակարգի ներքին կարգավիճակը: Վնասարար հավելվածները կարող են առբերել բազմաթիվ անձնական և ապահով տեղեկություններ, որոնք երբեք սովորաբար անհրաժեշտ չեն:"</string>
- <string name="permlab_retrieve_window_content" msgid="8022588608994589938">"առբերել էկրանի բովանդակությունը"</string>
- <string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Թույլ է տալիս հավելվածին առբերել ակտիվ պատուհանի պարունակությունը: Վնասարար հավելվածները կարող են առբերել պատուհանի լրիվ պարունակությունը և հետազոտել դրա ամբողջ տեքստը` բացառությամբ գաղտնաբառերի:"</string>
- <string name="permlab_temporary_enable_accessibility" msgid="2312612135127310254">"ժամանակավոր միացնել մուտքի հնարավորությունը"</string>
- <string name="permdesc_temporary_enable_accessibility" msgid="8079456293182975464">"Թույլ է տալիս հավելվածին ժամանակավորապես մուտքի հնարավորություն տալ սարքին: Վնասարար հավելվածները կարող են մուտքի հնարավորություն ընձեռել առանց օգտվողի համաձայնության:"</string>
- <string name="permlab_retrieve_window_info" msgid="8532295199112519378">"առբերել պատուհանի տեղեկություները"</string>
- <string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Թույլ է տալիս հավելվածին առբերել պատուհանների մասին տեղեկատվություններ  պատուհանի կառավարչից: Վնասարար հավելվածները կարող են առբերել տեղեկություններ, որը նախատեսված է ներքին համակարգի օգտագործման համար:"</string>
- <string name="permlab_filter_events" msgid="8675535648807427389">"զտել իրադարձությունները"</string>
- <string name="permdesc_filter_events" msgid="8006236315888347680">"Թույլ է տալիս հավելվածին գրանցել մուտքագրման զտիչ, որը զտում է օգտվողի իրադարձությունների ամբողջ հոսքը` նախքան դրանք կուղարկվեն: Վնասարար հավելվածը կարող է կառավարել համակարգի UI-ը` առանց ձեր միջամտության:"</string>
- <string name="permlab_magnify_display" msgid="5973626738170618775">"խոշորացնել ցուցադրիչը"</string>
- <string name="permdesc_magnify_display" msgid="7121235684515003792">"Թույլ է տալիս հավելվածին խոշորացնել ցուցադրիչի բովանդակությունը: Վնասարար հավելվածները կարող են փոխակերպել ցուցադրիչի բովանդակությունը այնպես, որ սարքը դառնա անպիտան:"</string>
- <string name="permlab_shutdown" msgid="7185747824038909016">"մասնակի անջատում"</string>
- <string name="permdesc_shutdown" msgid="7046500838746291775">"Դնում է գործունեության կառավարչին անջատման կարգավիճակի մեջ: Չի իրականացնում ամբողջական անջատում:"</string>
- <string name="permlab_stopAppSwitches" msgid="4138608610717425573">"կանխել ծրագրի փոխարկումները"</string>
- <string name="permdesc_stopAppSwitches" msgid="8262195802582255021">"Կանխում է օգտվողի անցումը այլ հավելվածի:"</string>
- <string name="permlab_getTopActivityInfo" msgid="2537922311411546016">"ստանալ ընթացիկ հավելվածի մասին տեղեկություններ"</string>
- <string name="permdesc_getTopActivityInfo" msgid="8153651434145132505">"Թույլ է տալիս սեփականատիրոջը առբերել գաղտնի տեղեկություններ ընթացիկ հավելվածի և ծառայությունների մասին էկրանի առաջին պլանում:"</string>
- <string name="permlab_runSetActivityWatcher" msgid="892239094867182656">"վերահսկել և կառավարել բոլոր հավելվածների թողարկումը"</string>
- <string name="permdesc_runSetActivityWatcher" msgid="6003603162578577406">"Թույլ է տալիս հավելվածին հետևել և վերահսկել, թե ինչպես է համակարգը գործարկում գործողությունները: Վնասարար հավելվածները կարող են ամբողջությամբ վնասել համակարգը: Այս թույլտվությունը անհրաժեշտ է միայն ծրագրավորման համար և ոչ երբեք սովորական օգտագործման համար:"</string>
- <string name="permlab_broadcastPackageRemoved" msgid="2576333434893532475">"ուղարկել հեռացված փաթեթի մասին հաղորդում"</string>
- <string name="permdesc_broadcastPackageRemoved" msgid="6621901216207931089">"Թույլ է տալիս հավելվածին հաղորդել ծանուցում, որ հեռացվել է հավելվածի փաթեթ: Վնասարար հավելվածները կարող են օգտագործել սա ցանկացած այլ աշխատող հավելված սպանելու համար:"</string>
- <string name="permlab_broadcastSmsReceived" msgid="5689095009030336593">"ուղարկել ստացված SMS-ի հաղորդում"</string>
- <string name="permdesc_broadcastSmsReceived" msgid="4152037720034365492">"Թույլ է տալիս հավելվածին հաղորդել ծանուցում, որ ստացվել է SMS հաղորդագրություն: Վնասարար հավելվածները կարող են օգտագործել սա` կեղծելու մուտքային SMS հաղորդագրությունները:"</string>
- <string name="permlab_broadcastWapPush" msgid="3145347413028582371">"ուղարկել ստացված WAP-PUSH-ի հաղորդում"</string>
- <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Թույլ է տալիս հավելվածին հաղորդել ծանուցում, որ ստացվել է WAP PUSH հաղորդագրություն: Վնասարար հավելվածները կարող են օգտագործել սա` կեղծելու MMS հաղորդագրության ստացումը կամ աննկատ փոխարինելու ցանկացած կայքի բովանդակությունը վնասարար տարբերակներով:"</string>
- <string name="permlab_setProcessLimit" msgid="2451873664363662666">"սահմանափակել աշխատող գործընթացների թիվը"</string>
- <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Թույլ է տալիս հավելվածին վերահսկել գործընթացների առավելագույն թիվը, որ աշխատելու են: Երբևէ անհրաժեշտ չէ սովորական հավելվածների համար:"</string>
- <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"ստիպել, որ առաջին պլանի հավելվածները փակվեն"</string>
- <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Թույլ է տալիս հավելվածին վերահսկել արդյոք գործողությունները միշտ ավարտված են, երբ գնում են հետին պլան: Երբևէ անհրաժեշտ չէ սովորական հավելվածների համար:"</string>
- <string name="permlab_batteryStats" msgid="2789610673514103364">"կարդալ մարտկոցի կարգավիճակը"</string>
- <string name="permdesc_batteryStats" msgid="5897346582882915114">"Թույլ է տալիս հավելվածին կարդալ ընթացիկ ցածր մակարդակի մարտկոցի օգտագործման տվյալները: Կարող է թույլ տալ հավելվածին պարզել մանրամասն տեղեկություններ, թե որ հավելվածներն եք օգտագործում:"</string>
- <string name="permlab_updateBatteryStats" msgid="3719689764536379557">"փոփոխել մարտկոցի վիճակագրությունը"</string>
- <string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"Թույլ է տալիս հավելվածին փոփոխել մարտկոցի հավաքագրված վիճակագրությունը: Սովորական հավելվածների օգտագործման համար չէ:"</string>
- <string name="permlab_getAppOpsStats" msgid="1508779687436585744">"առբերել ծրագրի ops վիճակագրությունը"</string>
- <string name="permdesc_getAppOpsStats" msgid="6243887041577912877">"Թույլ է տալիս հավելվածին առբերել հավելվածի հավաքագրված գործողության կարգավիճակը: Սովորական հավելվածների օգտագործման համար չէ:"</string>
- <string name="permlab_updateAppOpsStats" msgid="8829097373851521505">"փոփոխել ծրագրի գործողությունների վիճակագրությունը"</string>
- <string name="permdesc_updateAppOpsStats" msgid="50784596594403483">"Թույլ է տալիս հավելվածին փոփոխել գործողությունների հավաքագրված վիճակագրությունը: Սովորական հավելվածների օգտագործման համար չէ:"</string>
- <string name="permlab_backup" msgid="470013022865453920">"հսկել համակարգի պահուստավորումը և վերականգնումը"</string>
- <string name="permdesc_backup" msgid="6912230525140589891">"Թույլ է տալիս հավելվածին վերահսկել համակարգի պահուստավորման և վերականգնման մեխանիզմը: Սովորական հավելվածների կողմից օգտագործման համար չէ:"</string>
- <string name="permlab_confirm_full_backup" msgid="5557071325804469102">"հաստատել ամբողջական պահուստավորման կամ վերականգնման գործողությունը"</string>
- <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Թույլ է տալիս հավելվածին գործարկել ամբողջական պահուստավորման հաստատման UI-ը: Որևէ հավելվածի կողմից օգտագործման համար չէ:"</string>
- <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"ցուցադրել չարտոնված պատուհանները"</string>
- <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Թույլ է տալիս հավելվածին ստեղծել պատուհաններ, որոնք նախատեսված են ներքին համակարգի օգտվողի ինտերֆեյսի օգտագործման համար: Սովորական հավելվածների օգտագործման համար չէ:"</string>
- <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"անցնել այլ ծրագրերի վրայով"</string>
- <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"Թույլ է տալիս հավելվածին երևալ այլ հավելվածների վերևում կամ օգտվողի ինտերֆեյսի մասերում: Դրանք կարող են խոչընդոտել ձեր ինտերֆեյսի օգտագործմանը ցանկացած հավելվածում կամ փոխել այն, ինչը կարծում եք, որ տեսնում եք այլ հավելվածներում:"</string>
- <string name="permlab_setAnimationScale" msgid="2805103241153907174">"փոփոխել համաշխարհային անիմացիոն արագությունը"</string>
- <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Թույլ է տալիս հավելվածին փոխել համաշխարհային անիմացիոն արագությունը (ավելի արագ կամ դանդաղ անիմացիաներ) ցանկացած ժամանակ:"</string>
- <string name="permlab_manageAppTokens" msgid="1286505717050121370">"կառավարել ծրագրի այլանիշերը"</string>
- <string name="permdesc_manageAppTokens" msgid="8043431713014395671">"Թույլ է տալիս հավելվածին ստեղծել և կառավարել իրենց սեփական նշանները` շրջանցելով իրենց սովորական Z հերթականությունը: Սովորական հավելվածների համար երբևէ չպետք է անհրաժեշտ լինի:"</string>
- <string name="permlab_freezeScreen" msgid="4708181184441880175">"սառեցնել էկրանը"</string>
- <string name="permdesc_freezeScreen" msgid="8558923789222670064">"Թույլ է տալիս հավելվածին ժամանակավորապես սառեցնել էկրանը` լրիվ էկրանին անցնելու համար:"</string>
- <string name="permlab_injectEvents" msgid="1378746584023586600">"սեղմել ստեղները և կառավարման կոճակները"</string>
- <string name="permdesc_injectEvents" product="tablet" msgid="206352565599968632">"Թույլ է տալիս հավելվածին տրամադրել իր սեփական մուտքագրված իրադարձություններն (ստեղների սեղմումներ և այլն) այլ հավելվածներին: Վնասարար հավելվածները կարող են սա օգտագործել գրասալիկի աշխատանքին միջամտելու համար:"</string>
- <string name="permdesc_injectEvents" product="default" msgid="653128057572326253">"Թույլ է տալիս հավելվածին առաքել իր սեփական ներածման իրադարձությունները (ստեղնի սեղմումներ և այլն) այլ հավելվածներին: Վնասարար հավելվածները կարող են սա օգտագործել գրասալիկը վնասելու համար:"</string>
- <string name="permlab_readInputState" msgid="469428900041249234">"գրառել ձեր մուտքագրումները և գործողությունները"</string>
- <string name="permdesc_readInputState" msgid="8387754901688728043">"Թույլ է տալիս հավելվածին տեսնել ձեր սեղմած ստեղները, նույնիսկ այն ժամանակ, երբ փոխգործակցում եք այլ հավելվածի հետ (օրինակ` գաղտնաբառի մուտքագրումը): Երբեք անհրաժեշտ չպետք է լինի սովորական հավելվածների համար:"</string>
- <string name="permlab_bindInputMethod" msgid="3360064620230515776">"միանալ մուտքագրման եղանակին"</string>
- <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Թույլ է տալիս սեփականատիրոջը միանալ մուտքագրման եղանակի վերին մակարդակի ինտերֆեյսին: Սովորական հավելվածների համար երբևէ չպետք է անհրաժեշտ լինի:"</string>
- <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"կապվել մատչելիության ծառայության հետ"</string>
- <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Թույլ է տալիս սեփականատիրոջը միանալ հասանելիության ծառայության վերին մակարդակի ինտերֆեյսին: Սովորական հավելվածների համար երբևէ չպետք է անհրաժեշտ լինի:"</string>
- <string name="permlab_bindPrintService" msgid="8462815179572748761">"միանալ տպման ծառայությանը"</string>
- <string name="permdesc_bindPrintService" msgid="7960067623209111135">"Թույլ է տալիս սեփականատիրոջը միանալ տպման ծառայության վերին մակարդակի ինտերֆեյսին: Սովորական ծրագրերի համար երբևէ չպետք է անհրաժեշտ լինի:"</string>
- <string name="permlab_accessAllPrintJobs" msgid="1120792468465711159">"մուտքի գործել բոլոր տպման աշխատանքներ"</string>
- <string name="permdesc_accessAllPrintJobs" msgid="2978185311041864762">"Թույլ է տալիս սեփականատիրոջը մուտք ունենալ մեկ այլ ծրագրի կողմից ստեղծված տպման աշխատանքներ: Սովորական ծրագրերի համար երբևէ չպետք է անհրաժեշտ լինի:"</string>
- <string name="permlab_bindNfcService" msgid="2752731300419410724">"կապվել NFC ծառայությանը"</string>
- <string name="permdesc_bindNfcService" msgid="6120647629174066862">"Թույլ է տալիս տիրոջը կապվել ծրագրերին, որոնք օգտագործում են NFC քարտեր: Սովորական ծրագրերի համար երբեք անհրաժեշտ չէ:"</string>
- <string name="permlab_bindTextService" msgid="7358378401915287938">"միանալ տեքստային ծառայությանը"</string>
- <string name="permdesc_bindTextService" msgid="8151968910973998670">"Թույլ է տալիս սեփականատիրոջը կապվել տեքստային ծառայության բարձր մակարդակի ինտերֆեյսին (օրինակ` Ուղղագրության ստուգման ծառայությանը): Սովորական հավելվածների համար երբևէ չպետք է անհրաժեշտ լինի:"</string>
- <string name="permlab_bindVpnService" msgid="4708596021161473255">"կապվել VPN ծառայությանը"</string>
- <string name="permdesc_bindVpnService" msgid="2067845564581693905">"Թույլ է տալիս սեփականատիրոջը միանալ Vpn ծառայության վերին մակարդակի ինտերֆեյսին: Սովորական հավելվածների համար երբևէ չպետք է անհրաժեշտ լինի:"</string>
- <string name="permlab_bindWallpaper" msgid="8716400279937856462">"միանալ պաստառին"</string>
- <string name="permdesc_bindWallpaper" msgid="7108428692595491668">"Թույլ է տալիս սեփականատիրոջը միանալ պաստառի վերին մակարդակի ինտերֆեյսին: Սովորական հավելվածների համար երբևէ չպետք է անհրաժեշտ լինի:"</string>
- <string name="permlab_bindRemoteViews" msgid="5697987759897367099">"միանալ վիջեթ ծառայությանը"</string>
- <string name="permdesc_bindRemoteViews" msgid="4717987810137692572">"Թույլ է տալիս սեփականատիրոջը միանալ վիջեթ ծառայության վերին մակարդակի ինտերֆեյսին: Սովորական հավելվածների համար երբևէ չպետք է անհրաժեշտ լինի:"</string>
- <string name="permlab_bindDeviceAdmin" msgid="8704986163711455010">"փոխգործակցել սարքի կառավարչի հետ"</string>
- <string name="permdesc_bindDeviceAdmin" msgid="569715419543907930">"Թույլ է տալիս սեփականատիրոջը ուղարկել մտադրություններ սարքի կառավարչին: Սովորական հավելվածների համար երբևէ չպետք է անհրաժեշտ լինի:"</string>
- <string name="permlab_manageDeviceAdmins" msgid="4248828900045808722">"ավելացնել կամ հեռացնել սարքի արդմինիստրատոր"</string>
- <string name="permdesc_manageDeviceAdmins" msgid="5025608167709942485">"Թույլ է տալիս սեփականատիրոջը ավելացնել կամ հեռացնել սարքի ակտիվ ադմինիստրատորներ: Երբեք չպետք է անհրաժեշտ լինի սովորական ծրագրերին:"</string>
- <string name="permlab_setOrientation" msgid="3365947717163866844">"փոխել էկրանի դիրքավորումը"</string>
- <string name="permdesc_setOrientation" msgid="3046126619316671476">"Թույլ է տալիս հավելվածին փոխել էկրանի պտտումը ցանկացած ժամանակ: Սովորական հավելվածների համար երբևէ չպետք է անհրաժեշտ լինի:"</string>
- <string name="permlab_setPointerSpeed" msgid="9175371613322562934">"փոխել ցուցչի արագությունը"</string>
- <string name="permdesc_setPointerSpeed" msgid="6866563234274104233">"Թույլ է տալիս հավելվածին փոխել մկնիկի կամ հպահարթակի սլաքի արագությունը ցանկացած ժամանակ: Երբևէ անհրաժեշտ չպետք է լինի սովորական հավելվածների համար:"</string>
- <string name="permlab_setKeyboardLayout" msgid="4778731703600909340">"փոխել ստեղնաշարի դիրքը"</string>
- <string name="permdesc_setKeyboardLayout" msgid="8480016771134175879">"Թույլ է տալիս հավելվածին փոխել ստեղնաշարի դիրքը: Սովորական հավելվածների համար երբևէ չպետք է անհրաժեշտ լինի:"</string>
- <string name="permlab_signalPersistentProcesses" msgid="4539002991947376659">"ուղարկել Linux ազդանշաններ հավելվածներին"</string>
- <string name="permdesc_signalPersistentProcesses" msgid="4896992079182649141">"Թույլ է տալիս հավելվածին հայցել, որ տրամադրված ազդանշանը ուղարկվի բոլոր մշտական գործընթացներին:"</string>
- <string name="permlab_persistentActivity" msgid="8841113627955563938">"միշտ աշխատեցնել հավելվածը"</string>
- <string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"Թույլ է տալիս հավելվածին մնայուն դարձնել իր մասերը հիշողության մեջ: Սա կարող է սահմանափակել այլ հավելվածներին հասանելի հիշողությունը` դանդաղեցնելով գրասալիկի աշխատանքը:"</string>
- <string name="permdesc_persistentActivity" product="default" msgid="4384760047508278272">"Թույլ է տալիս հավելվածին մնայուն դարձնել իր մասերը հիշողության մեջ: Սա կարող է սահմանափակել այլ հավելվածներին հասանելի հիշողությունը` դանդաղեցնելով հեռախոսի աշխատանքը:"</string>
- <string name="permlab_deletePackages" msgid="184385129537705938">"ջնջել հավելվածները"</string>
- <string name="permdesc_deletePackages" msgid="7411480275167205081">"Թույլ է տալիս հավելվածին ջնջել Android փաթեթները: Վնասարար հավելվածները կարող են օգտագործել սա` կարևոր հավելվածները ջնջելու համար:"</string>
- <string name="permlab_clearAppUserData" msgid="274109191845842756">"ջնջել այլ հավելվածների տվյալները"</string>
- <string name="permdesc_clearAppUserData" msgid="4625323684125459488">"Թույլ է տալիս հավելվածին մաքրել օգտվողի տվյալները:"</string>
- <string name="permlab_deleteCacheFiles" msgid="3128665571837408675">"ջնջել այլ հավելվածների քեշերը"</string>
- <string name="permdesc_deleteCacheFiles" msgid="3812998599006730196">"Թույլ է տալիս հավելվածին ջնջել քեշ ֆայլերը:"</string>
- <string name="permlab_getPackageSize" msgid="7472921768357981986">"չափել հավելվածի պահոցի տարածքը"</string>
- <string name="permdesc_getPackageSize" msgid="3921068154420738296">"Թույլ է տալիս հավելվածին առբերել իր կոդը, տվյալները և քեշի չափերը"</string>
- <string name="permlab_installPackages" msgid="2199128482820306924">"ուղղակիորեն տեղադրել հավելվածները"</string>
- <string name="permdesc_installPackages" msgid="5628530972548071284">"Թույլ է տալիս հավելվածին տեղադրել նոր կամ թարմացված Android փաթեթներ: Վնասարար հավելվածները կարող են օգտագործել սա` ավելացնելու նոր հավելվածներ` կամայականորեն հզոր թույլտվություններով:"</string>
- <string name="permlab_clearAppCache" msgid="7487279391723526815">"ջնջել հավելվածի քեշի բոլոր տվյալները"</string>
- <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"Թույլ է տալիս հավելվածին ազատել գրասալիկի պահոցը` ջնջելով ֆայլերը այլ հավելվածների քեշ գրացուցակներում: Սա կարող է պատճառ դառնալ, որ այլ հավելվածները ավելի դանդաղ մեկնարկեն, քանի որ դրանք պետք է նորից առբերեն իրենց տվյալները:"</string>
- <string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"Թույլ է տալիս հավելվածին ազատել հեռախոսի պահուստը` ջնջելով ֆայլերը այլ հավելվածների քեշ գրացուցակներում: Սա կարող է պատճառ դառնալ, որ այլ հավելվածները ավելի դանդաղ մեկնարկեն, քանի որ նրանք պետք է նորից առբերեն իրենց տվյալները:"</string>
- <string name="permlab_movePackage" msgid="3289890271645921411">"Տեղափոխել հավելվածի ռեսուրսները"</string>
- <string name="permdesc_movePackage" msgid="319562217778244524">"Թույլ է տալիս հավելվածին տեղափոխել ծրագրային ռեսուրսները ներքին մեդիաներից արտաքինին և հակառակը:"</string>
- <string name="permlab_readLogs" msgid="6615778543198967614">"կարդալ հոսքի զգայուն տվյալները"</string>
- <string name="permdesc_readLogs" product="tablet" msgid="82061313293455151">"Թույլ է տալիս հավելվածին կարդալ համակարգի տարբեր գրանցամատյանային ֆայլերից: Սա թույլ է տալիս ստանալ ընդհանուր տեղեկություններ այն մասին, թե ինչ եք անում գրասալիկով, այդ թվում` անձնական կամ գաղտնի տեղեկություններ:"</string>
- <string name="permdesc_readLogs" product="default" msgid="2063438140241560443">"Թույլ է տալիս հավելվածին կարդալ համակարգի տարբեր գրանցամատյանային ֆայլերից: Սա թույլ է տալիս ստանալ ընդհանուր տեղեկություններ այն մասին, թե ինչ եք անում հեռախոսով, այդ թվում` անձնական կամ գաղտնի տեղեկություններ:"</string>
- <string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"օգտագործել ցանկացած մեդիա վերծանիչ նվագարկման համար"</string>
- <string name="permdesc_anyCodecForPlayback" msgid="8283912488433189010">"Թույլ է տալիս հավելվածին օգտագործել ցանկացած տեղադրված մեդիա վերծանիչ` նվագարկումը ապակոդավորելու համար:"</string>
- <string name="permlab_manageCaCertificates" msgid="1678391896786882014">"կառավարեք վստահելի վկայագրերը"</string>
- <string name="permdesc_manageCaCertificates" msgid="4015644047196937014">"Թույլատրում է հավելվածին տեղադրել և ապատեղադրել CA վկայագրերը՝ որպես վստահելի:"</string>
- <string name="permlab_diagnostic" msgid="8076743953908000342">"կարդալ կամ գրել ախտորոշիչին պատկանող ռեսուրսները"</string>
- <string name="permdesc_diagnostic" msgid="6608295692002452283">"Թույլ է տալիս հավելվածին կարդալ և գրել ախտորոշիչ խմբին պատկանող ցանկացած ռեսուրսում, ինչպես օրինակ ֆայլերը /dev-ում: Դա կարող է ազդել համակարգի կայունության և անվտանգության վրա: Սա պետք է օգտագործել միայն արտադրողի կամ օպերատորի կողմից սարքին հատուկ ախտորոշման համար:"</string>
- <string name="permlab_changeComponentState" msgid="6335576775711095931">"միացնել կամ անջատել հավելվածի բաղադրիչները"</string>
- <string name="permdesc_changeComponentState" product="tablet" msgid="8887435740982237294">"Թույլ է տալիս հավելվածին փոխել, արդյոք այլ հավելվածի բաղադրիչը լինի միացված թե անջատված: Վնասարար հավելվածները կարող են սա օգտագործել` անջատելու գրասալիկի կարևոր հնարավորությունները: Այս թույլտվությունը պետք է օգտագործել զգուշությամբ, քանի որ հնարավոր է հավելվածի բաղադրիչները հայտնվեն անպիտան, անհամապատասխան կամ անկայուն կարգավիճակում:"</string>
- <string name="permdesc_changeComponentState" product="default" msgid="1827232484416505615">"Թույլ է տալիս հավելվածին փոխել, արդյոք այլ հավելվածի բաղադրիչը լինի միացված թե անջատված: Վնասարար հավելվածները կարող են սա օգտագործել` անջատելու հեռախոսի կարևոր հնարավորությունները: Այս թույլտվությունը պետք է օգտագործել զգուշությամբ, քանի որ հնարավոր է հավելվածի բաղադրիչները հայտնվեն անպիտան, անհամապատասխան կամ անկայուն կարգավիճակում:"</string>
- <string name="permlab_grantRevokePermissions" msgid="4627315351093508795">"շնորհել կամ չեղարկել թույլտվություններ"</string>
- <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Թույլ է տալիս հավելվածին հատուկ թույլտվություն շնորհել կամ չեղարկել այդ կամ այլ հավելվածների համար: Վնասարար հավելվածները կարող են օգտագործել սա` մուտք գործելու ձեր կողմից չթույլատրված գործիքներ:"</string>
- <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"սահմանել նախընտրած հավելվածները"</string>
- <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Թույլ է տալիս հավելվածին փոփոխել ձեր նախընտրած հավելվածները: Վնասարար հավելվածները կարող են աննկատ փոխել հավելվածները, որոնք կեղծում են ձեր առկա հավելվածների աշխատանքը` ձեզանից անձնական տվյալներ հավաքագրելու համար:"</string>
- <string name="permlab_writeSettings" msgid="2226195290955224730">"փոփոխել համակարգի կարգավորումները"</string>
- <string name="permdesc_writeSettings" msgid="7775723441558907181">"Թույլ է տալիս հավելվածին փոփոխել համակարգի կարգավորումների տվյալները: Վնասարար հավելվածները կարող են վնասել ձեր համակարգի կարգավորումները:"</string>
- <string name="permlab_writeSecureSettings" msgid="204676251876718288">"փոփոխել անվտանգ համակարգի կարգավորումները"</string>
- <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Թույլ է տալիս հավելվածին փոփոխել համակարգի անվտանգ կարգավորումների տվյալները: Նախատեսված չէ սովորական հավելվածների կողմից օգտագործման համար:"</string>
- <string name="permlab_writeGservices" msgid="2149426664226152185">"փոփոխել Google ծառայությունների քարտեզը"</string>
- <string name="permdesc_writeGservices" msgid="1287309437638380229">"Թույլ է տալիս հավելվածին փոփոխել Google-ի ծառայությունների քարտեզը: Սովորական հավելվածների օգտագործման համար չէ:"</string>
- <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"աշխատել մեկնարկային ռեժիմով"</string>
- <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Թույլ է տալիս հավելվածին ինքնուրույն մեկնարկել համակարգի բեռնման ավարտից հետո: Սա կարող է երկարացնել գրասալիկի մեկնարկը և թույլ տալ հավելավածին դանդաղեցնել ամբողջ գրասալիկի աշխատանքը` միշտ աշխատելով:"</string>
- <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Թույլ է տալիս հավելվածին ինքն իրեն սկսել` համակարգի բեռնումն ավարտվելուն պես: Սա կարող է հեռախոսի մեկնարկը դարձնել ավելի երկար և թույլ տալ, որ հավելվածը դանդաղեցնի ընդհանուր հեռախոսի աշխատանքը` միշտ աշխատելով:"</string>
- <string name="permlab_broadcastSticky" msgid="7919126372606881614">"ուղարկել կպչուն հաղորդում"</string>
- <string name="permdesc_broadcastSticky" product="tablet" msgid="7749760494399915651">"Թույլ է տալիս հավելվածին ուղարկել կպչուն հաղորդումներ, որոնք մնում են հաղորդման ավարտից հետո: Չափազանց շատ օգտագործումը կարող է գրասալիկի աշխատանքը դանդաղեցնել կամ դարձնել անկայուն` պատճառ դառնալով չափազանց մեծ հիշողության օգտագործման:"</string>
- <string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"Թույլ է տալիս հավելվածին ուղարկել կպչուն հաղորդումներ, որոնք մնում են հաղորդման ավարտից հետո: Չափազանց շատ օգտագործումը կարող է հեռախոսի աշխատանքը դանդաղեցնել կամ դարձնել անկայուն` պատճառ դառնալով չափազանց մեծ հիշողության օգտագործման:"</string>
- <string name="permlab_readContacts" msgid="8348481131899886131">"կարդալ ձեր կոնտակտները"</string>
- <string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"Թույլ է տալիս հավելվածին կարդալ ձեր գրասալիկում պահված կոնտակտների մասին տվյալները, այդ թվում` ձեր կատարած զանգերի, գրած նամակների կամ որոշակի անհատների հետ այլ եղանակով շփման հաճախականությունը: Այս թույլտվությունը հնարավորություն է տալիս հավելվածներին պահել ձեր կոնտակտային տվյալները, իսկ վնասարար հավելվածները կարող են տարածել կոնտակտային տվյալները` առանց ձեր իմացության:"</string>
- <string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"Թույլ է տալիս հավելվածին կարդալ ձեր հեռախոսում պահված կոնտակտների մասին տվյալները, այդ թվում` ձեր կատարած զանգերի, գրած նամակների կամ որոշակի անհատների հետ այլ եղանակով շփման հաճախականությունը: Այս թույլտվությունը հնարավորություն է տալիս հավելվածներին պահել ձեր կոնտակտային տվյալները, իսկ վնասարար հավելվածները կարող են տարածել կոնտակտային տվյալները` առանց ձեր իմացության:"</string>
- <string name="permlab_writeContacts" msgid="5107492086416793544">"փոփոխել ձեր կոնտակտները"</string>
- <string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"Թույլ է տալիս հավելվածին փոփոխել ձեր գրասալիկում պահված կոնտակտների մասին տվյալները, այդ թվում` ձեր կատարած զանգերի, գրած նամակների կամ որոշակի անհատների հետ այլ եղանակով շփման հաճախականությունը: Այս թույլտվությունը հնարավորություն է տալիս հավելվածներին ջնջել կոնտակտային տվյալները:"</string>
- <string name="permdesc_writeContacts" product="default" msgid="589869224625163558">"Թույլ է տալիս հավելվածին փոփոխել ձեր գրասալիկում պահված կոնտակտների տվյալները, այդ թվում` ձեր կատարած զանգերի, գրած նամակների կամ որոշակի անհատների հետ այլ եղանակով շփման հաճախականությունը: Այս թույլտվությունը հնարավորություն է տալիս հավելվածներին ջնջել կոնտակտային տվյալները:"</string>
- <string name="permlab_readCallLog" msgid="3478133184624102739">"կարդալ զանգերի մատյանը"</string>
- <string name="permdesc_readCallLog" product="tablet" msgid="3700645184870760285">"Թույլ է տալիս հավելվածին կարդալ ձեր գրասալիկի զանգերի գրանցամատյանը, այդ թվում` մուտքային և ելքային զանգերի տվյալները: Սա թույլ է տալիս հավելվածին պահել ձեր զանգերի գրանցամատյանի տվյալները, և վնասարար հավելվածները կարող են տարածել դրանք` առանց ձեր իմացության:"</string>
- <string name="permdesc_readCallLog" product="default" msgid="5777725796813217244">"Թույլ է տալիս հավելվածին կարդալ ձեր հեռախոսի զանգերի գրանցամատյանը, այդ թվում` մուտքային և ելքային զանգերի տվյալները: Թույլտվությունը հնարավորություն է տալիս հավելվածին պահպանել ձեր զանգերի գրանցամատյանի տվյալները, և վնասարար հավելվածները կարող են տարածել գրանցամատյանի տվյալներն առանց ձեր իմացության:"</string>
- <string name="permlab_writeCallLog" msgid="8552045664743499354">"տեսնել զանգերի գրանցամատյանը"</string>
- <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Թույլ է տալիս հավելվածին փոփոխել ձեր գրասալիկի զանգերի մատյանը, այդ թվում` մուտքային և ելքային զանգերի մասին տվյալները: Վնասարար հավելվածները կարող են սա օգտագործել` ձեր զանգերի մատյանը ջնջելու կամ փոփոխելու համար:"</string>
- <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Թույլ է տալիս հավելվածին փոփոխել ձեր հեռախոսի զանգերի մատյանը, այդ թվում` մուտքային և ելքային զանգերի մասին տվյալները: Վնասարար հավելվածները կարող են սա օգտագործել` ձեր զանգերի մատյանը ջնջելու կամ փոփոխելու համար:"</string>
- <string name="permlab_readProfile" msgid="4701889852612716678">"կարդալ ձեր սեփական կոնտակտային քարտը"</string>
- <string name="permdesc_readProfile" product="default" msgid="5462475151849888848">"Թույլ է տալիս հավելվածին կարդալ ձեր սարքում պահված անհատական ​​պրոֆիլի տվյալները, ինչպիսիք են ձեր անունը և կոնտակտային տվյալները: Սա նշանակում է, որ հավելվածը կարող է ձեզ ճանաչել և ուղարկել ձեր պրոֆիլի տվյալները ուրիշներին:"</string>
- <string name="permlab_writeProfile" msgid="907793628777397643">"փոփոխել ձեր սեփական կոնտակտային քարտը"</string>
- <string name="permdesc_writeProfile" product="default" msgid="5552084294598465899">"Թույլ է տալիս հավելվածին փոխել կամ ավելացնել ձեր սարքում պահված անհատական ​​պրոֆիլի տվյալները, ինչպիսիք են ձեր անունը և կոնտակտային տվյալները: Սա նշանակում է, որ հավելվածը կարող է ձեզ ճանաչել և ուղարկել ձեր պրոֆիլի տվյալները ուրիշներին:"</string>
- <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"կարդալ ձեր սոցիալական հոսքը"</string>
- <string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"Թույլ է տալիս հավելվածին մուտք գործել և համաժամեցնել ձեր և ձեր ընկերների սոցիալական թարմացումները: Զգույշ եղեք տեղեկություններ տարածելիս. այն թույլ է տալիս հավելվածին կարդալ ձեր և ձեր ընկերների միջև անձնական հաղորդագրությունները սոցիալական ցանցերում` անկախ գաղտնիությունից: Նշում. այս թույլտվությունը չի կարող գործածվել բոլոր սոցիալական ցանցերում:"</string>
- <string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"գրել ձեր սոցիալական հոսքում"</string>
- <string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"Թույլ է տալիս հավելվածին ցուցադրել ձեր ընկերների սոցիալական թարմացումները: Զգույշ եղեք տեղեկություններ տարածելիս. այն թույլ է տալիս հավելվածին հաղորդագություններ ստեղծել, որոնք իբրև ստացվում են ընկերոջից: Նշում. այս թույլտվությունը չի կարող գործածվել բոլոր սոցիալական ցանցերում:"</string>
- <string name="permlab_readCalendar" msgid="5972727560257612398">"կարդալ օրացուցային իրադարձությունները և գաղտնի տեղեկությունները"</string>
- <string name="permdesc_readCalendar" product="tablet" msgid="4216462049057658723">"Թույլ է տալիս հավելվածին կարդալ ձեր գրասալիկում պահված բոլոր օրացուցային իրադարձությունները, այդ թվում` ընկերների կամ գործընկերների: Սա կարող է թույլ տալ հավելվածին տարածել կամ պահել ձեր օրացուցային տվյալները` անկախ գաղտնիությունից կամ զգայունությունից:"</string>
- <string name="permdesc_readCalendar" product="default" msgid="7434548682470851583">"Թույլ է տալիս հավելվածին կարդալ ձեր հեռախոսում պահված բոլոր օրացուցային իրադարձությունները, այդ թվում` ընկերների կամ գործընկերների: Սա կարող է թույլ տալ հավելվածին տարածել կամ պահել ձեր օրացուցային տվյալները` անկախ գաղտնիությունից կամ զգայունությունից:"</string>
- <string name="permlab_writeCalendar" msgid="8438874755193825647">"ավելացնել կամ փոփոխել օրացուցային իրադարձությունները և ուղարկել նամակ հյուրերին` առանց սեփականատերերի իմացության"</string>
- <string name="permdesc_writeCalendar" product="tablet" msgid="6679035520113668528">"Թույլ է տալիս հավելվածին ավելացնել, հեռացնել, փոխել իրադարձություններ, որոնք դուք կարող եք փոփոխել ձեր գրասալիկում, այդ թվում ընկերների կամ աշխատակիցների իրադարձությունները: Սա կարող է թույլ տալ հավելվածին ուղարկել հաղորդագրություններ, որոնք երևում են որպես օրացույցի սեփականատերերից ուղարկված, կամ փոփոխել իրադարձություններն առանց սեփականատերերի իմացության:"</string>
- <string name="permdesc_writeCalendar" product="default" msgid="2324469496327249376">"Թույլ է տալիս հավելվածին ավելացնել, հեռացնել, փոխել այն իրադարձությունները, որոնք կարող եք փոփոխել ձեր հեռախոսից, այդ թվում` ընկերների կամ գործընկերների: Սա կարող է թույլ տալ հավելվածին ուղարկել հաղորդագրություններ, որոնք իբրև գալիս են օրացույցի սեփականատիրոջից, կամ փոփոխել իրադարձությունները` առանց սեփականատիրոջ իմացության:"</string>
- <string name="permlab_accessMockLocation" msgid="8688334974036823330">"կեղծ տեղանքի աղբյուրներ փորձարկման համար"</string>
- <string name="permdesc_accessMockLocation" msgid="5808711039482051824">"Ստեղծել կեղծ տեղանքի աղբյուրներ` փորձարկման կամ տեղադրության նոր ծառայություն մատուցողի տեղադրման համար: Սա հնարավորություն է տալիս, որ ծրագիրը անտեսի տեղադրությունը և/կամ կարգավիճակը` տրամադրված տեղանքի այլ աղբյուրների կողմից, ինչպիսիք են GPS-ը կամ տեղադրության ծառայություն մատուցողները:"</string>
- <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"օգտագործել տեղադրություն տրամադրող հավելվյալ հրամաններ"</string>
- <string name="permdesc_accessLocationExtraCommands" msgid="5945166642335800763">"Թույլ է տալիս հավելվածին օգտագործել տեղադրության ծառայություն մատուցողների լրացուցիչ հրամանները: Սա կարող է թույլ տալհավելվածին խանգարել GPS-ի կամ այլ տեղանքի աղբյուրների աշխատանքին:"</string>
- <string name="permlab_installLocationProvider" msgid="6578101199825193873">"տեղադրության ծառայություն մատուցողի տեղադրման թույլտվություն"</string>
- <string name="permdesc_installLocationProvider" msgid="9066146120470591509">"Ստեղծել կեղծ տեղանքի աղբյուրներ` փորձարկման կամ տեղադրության նոր ծառայություն մատուցողի տեղադրման համար: Սա հնարավորություն է տալիս, որ հավելվածն անտեսի տեղադրությունը և/կամ կարգավիճակը` տրամադրված տեղանքի այլ աղբյուրների կողմից, ինչպիսիք են GPS-ը կամ տեղադրության ծառայություն մատուցողները:"</string>
- <string name="permlab_accessFineLocation" msgid="1191898061965273372">"ճշգրիտ վայրը (ըստ GPS-ի և ցանցի)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"Թույլ է տալիս հավելվածին ստանալ ձեր ճշգրիտ տեղադրությունը` օգտագործելով Գլոբալ Դիրքավորման Համակարգը (GPS) կամ ցանցային տեղանքի աղբյուրները, ինչպես օրինակ` բջջային աշտարակները և Wi-Fi-ը: Այս տեղադրության ծառայությունները պետք է միացվեն և հասանելի լինեն ձեր սարքի համար, որպեսզի հավելվածն օգտագործի դրանք: Հավելվածները կարող են սա օգտագործել` որոշելու համար ձեր գտնվելու վայրը և կարող են սպառել մարտկոցի լրացուցիչ լիցք:"</string>
- <string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"մոտավոր տեղադրությունը (ցանցային)"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"Թույլ է տալիս հավելվածին ստանալ ձեր մոտավոր տեղադրությունը: Այս տեղադրությունը ստացվում է տեղանքի ծառայությունների կողմից, ինչպես օրինակ` բջջային աշտարակներից և Wi-Fi-ից: Այս տեղանքի ծառայությունները պետք է միացված և հասանելի լինեն ձեր սարքին, որպեսզի հավելվածն օգտագործի դրանք: Հավելվածները կարող են սա օգտագործել` ձեր մոտավոր գտնվելու վայրը որոշելու համար:"</string>
- <string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"մուտք SurfaceFlinger"</string>
- <string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"Թույլ է տալիս հավելվածին օգտագործել SurfaceFlinger ցածր մակարդակի գործառույթները:"</string>
- <string name="permlab_readFrameBuffer" msgid="6690504248178498136">"կարդալ շրջանակի պահնակը"</string>
- <string name="permdesc_readFrameBuffer" msgid="4937405521809454680">"Թույլ է տալիս հավելվածին կարդալ շրջանակի պահնակի բովանդակությունը:"</string>
- <string name="permlab_accessInputFlinger" msgid="5348635270689553857">"մուտք գործել InputFlinger"</string>
- <string name="permdesc_accessInputFlinger" msgid="2104864941201226616">"Թույլ է տալիս ծրագրին օգտագործել InputFlinger ցածր մակարդակի գործառույթները:"</string>
- <string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"կարգավորել WiFi-ի ցուցադրումը"</string>
- <string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"Թույլ է տալիս հավելվածին կարգավորել և միանալ WiFi ցուցադրիչներին:"</string>
- <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"կառավարել Wifi-ի ցուցադրումը"</string>
- <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"Թույլ է տալիս հավելվածին կառավարել WiFi ցուցադրիչների ցածր մակարդակի գործառույթները:"</string>
- <string name="permlab_captureAudioOutput" msgid="6857134498402346708">"պահել աուդիո արտածումը"</string>
- <string name="permdesc_captureAudioOutput" msgid="6210597754212208853">"Թույլ է տալիս ծրագրին պահել և վերահղել աուդիո արտածումը:"</string>
- <string name="permlab_captureVideoOutput" msgid="2246828773589094023">"պահել վիդեո արտածումը"</string>
- <string name="permdesc_captureVideoOutput" msgid="359481658034149860">"Թույլ է տալիս ծրագրին պահել և վերահղել վիդեո արտածումը:"</string>
- <string name="permlab_captureSecureVideoOutput" msgid="7815398969303382016">"պահել անվտանգ վիդեո արտածումը"</string>
- <string name="permdesc_captureSecureVideoOutput" msgid="2779793064709350289">"Թույլ է տալիս ծրագրին պահել և վերահղել անվտանգ վիդեո արտածումը:"</string>
- <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"փոխել ձեր աուդիո կարգավորումները"</string>
- <string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"Թույլ է տալիս հավելվածին փոփոխել ձայնանյութի գլոբալ կարգավորումները, ինչպես օրինակ` ձայնը և թե որ խոսափողն է օգտագործված արտածման համար:"</string>
- <string name="permlab_recordAudio" msgid="3876049771427466323">"ձայնագրել ձայնանյութ"</string>
- <string name="permdesc_recordAudio" msgid="4906839301087980680">"Թույլ է տալիս հավելվածին բարձրախոսով ձայնագրել ձայնանյութ: Այս թույլտվությունը հնարավորություն է տալիս հավելվածին ձայնանյութ ձայնագրել ցանկացած ժամանակ` առանց ձեր հաստատման:"</string>
- <string name="permlab_camera" msgid="3616391919559751192">"լուսանկարել և տեսանկարել"</string>
- <string name="permdesc_camera" msgid="8497216524735535009">"Թույլ է տալիս հավելվածին ֆոտոխցիկով լուսանկարել և տեսանկարել: Այս թույլտվությունը հնարավորություն է տալիս հավելվածին օգտագործել ֆոտոխցիկը ցանկացած ժամանակ` առանց ձեր հաստատման:"</string>
- <string name="permlab_cameraDisableTransmitLed" msgid="2651072630501126222">"անջատել փոխանցող LED ցուցիչը, երբ ֆոտոխցիկը օգտագործվում է"</string>
- <string name="permdesc_cameraDisableTransmitLed" msgid="4764585465480295341">"Թույլ է տալիս նախապես տեղադրված համակարգային ծրագրին անջատել ֆոտոխցիկի օգտագործման LED ցուցիչը:"</string>
- <string name="permlab_brick" product="tablet" msgid="2961292205764488304">"մշտապես անջատել գրասալիկը"</string>
- <string name="permlab_brick" product="default" msgid="8337817093326370537">"ընդմիշտ կասեցնել հեռախոսը"</string>
- <string name="permdesc_brick" product="tablet" msgid="4334818808001699530">"Թույլ է տալիս հավելվածին ընդմիշտ անջատել ամբողջ գրասալիկը: Սա շատ վտանգավոր է:"</string>
- <string name="permdesc_brick" product="default" msgid="5788903297627283099">"Թույլ է տալիս հավելվածին ընդմիշտ անջատել ամբողջ հեռախոսը: Սա շատ վտանգավոր է:"</string>
- <string name="permlab_reboot" product="tablet" msgid="3436634972561795002">"ստիպել, որ գրասալիկը վերաբեռնվի"</string>
- <string name="permlab_reboot" product="default" msgid="2898560872462638242">"ստիպել, որ հեռախոսը վերաբեռնվի"</string>
- <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Թույլ է տալիս հավելվածին ստիպել, որ գրասալիկը վերաբեռնվի:"</string>
- <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Թույլ է տալիս հավելվածին ստիպել, որ հեռախոսը վերաբեռնվի:"</string>
- <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"մուտք ունենալ USB կրիչի ֆայլային համակարգ"</string>
- <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"մուտք ունենալ SD քարտի ֆայլային համակարգ"</string>
- <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Թույլ է տալիս հավելվածին միացնել և անջատել շարժական կրիչների ֆայլային համակարգերը:"</string>
- <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"ջնջել USB կրիչը"</string>
- <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"ջնջել SD քարտը"</string>
- <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Թույլ է տալիս հավելվածին ֆորմատավորել շարժական կրիչը:"</string>
- <string name="permlab_asec_access" msgid="3411338632002193846">"տեղեկություններ ստանալ ներքին պահոցի վերաբերյալ"</string>
- <string name="permdesc_asec_access" msgid="3094563844593878548">"Թույլ է տալիս հավելվածին ստանալ տեղեկություններ ներքին պահոցի վերաբերյալ:"</string>
- <string name="permlab_asec_create" msgid="6414757234789336327">"ստեղծել ներքին պահոց"</string>
- <string name="permdesc_asec_create" msgid="4558869273585856876">"Թույլ է տալիս հավելվածին ստեղծել ներքին պահոց:"</string>
- <string name="permlab_asec_destroy" msgid="526928328301618022">"ոչնչացնել ներքին պահոցը"</string>
- <string name="permdesc_asec_destroy" msgid="7218749286145526537">"Թույլ է տալիս հավելվածին ոչնչացնել ներքին պահոցը:"</string>
- <string name="permlab_asec_mount_unmount" msgid="8877998101944999386">"միացնել կամ անջատել ներքին պահոցը"</string>
- <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Թույլ է տալիս հավելվածին միացնել/անջատել ներքին պահոցը:"</string>
- <string name="permlab_asec_rename" msgid="7496633954080472417">"վերանվանել ներքին պահոցը"</string>
- <string name="permdesc_asec_rename" msgid="1794757588472127675">"Թույլ է տալիս հավելվածին վերանվանել ներքին պահոցը:"</string>
- <string name="permlab_vibrate" msgid="7696427026057705834">"կառավարել թրթռումը"</string>
- <string name="permdesc_vibrate" msgid="6284989245902300945">"Թույլ է տալիս հավելվածին կառավարել թրթռոցը:"</string>
- <string name="permlab_flashlight" msgid="2155920810121984215">"կառավարել լապտերը"</string>
- <string name="permdesc_flashlight" msgid="6522284794568368310">"Թույլ է տալիս հավելվածին կառավարել լապտերը:"</string>
- <string name="permlab_manageUsb" msgid="1113453430645402723">"կառավարել նախապատվությունները և թույլտվությունները USB սարքերի համար"</string>
- <string name="permdesc_manageUsb" msgid="7776155430218239833">"Թույլ է տալիս հավելվածին կառավարել նախասիրություններն ու թույլտվությունները USB սարքերի համար:"</string>
- <string name="permlab_accessMtp" msgid="4953468676795917042">"կիրառել MTP պրոտոկոլը"</string>
- <string name="permdesc_accessMtp" msgid="6532961200486791570">"Մուտքի հնարավորություն է տալիս միջուկի MTP սարքավարին MTP USB պրոտոկոլը կիրառելու համար:"</string>
- <string name="permlab_hardware_test" msgid="4148290860400659146">"փորձարկել սարքը"</string>
- <string name="permdesc_hardware_test" msgid="6597964191208016605">"Թույլ է տալիս հավելվածին կառավարել տարբեր արտաքին սարքավորումեր` սարքաշարի փորձարկման նպատակով:"</string>
- <string name="permlab_callPhone" msgid="3925836347681847954">"ուղղակիորեն զանգել հեռախոսահամարներին"</string>
- <string name="permdesc_callPhone" msgid="3740797576113760827">"Թույլ է տալիս հավելվածին զանգել հեռախոսահամարներին առանց ձեր միջամտության: Սա կարող է հանգեցնել անկանխատեսելի գանձումների կամ զանգերի: Նկատի ունեցեք, որ սա թույլ չի տալիս հավելվածին զանգել արտակարգ իրավիճակների համարներին: Վնասարար հավելվածները կարող են ձեր հաշվից զանգեր կատարել` առանց ձեր հաստատման:"</string>
- <string name="permlab_callPrivileged" msgid="4198349211108497879">"ուղղակիորեն զանգահարել որևէ հեռախոսահամարի"</string>
- <string name="permdesc_callPrivileged" msgid="1689024901509996810">"Թույլ է տալիս հավելվածին զանգել ցանկացած հեռախոսահամարի, այդ թվում` արտակարգ իրավիճակների համարներին` առանց ձեր միջամտության: Վնասարար հավելվածները կարող են կատարել անցանկալի և անօրինական զանգեր արտակարգ իրավիճակների ծառայություններին:"</string>
- <string name="permlab_performCdmaProvisioning" product="tablet" msgid="4842576994144604821">"ուղղակիորեն սկսել CDMA գրասալիկի կագավորումը"</string>
- <string name="permlab_performCdmaProvisioning" product="default" msgid="5604848095315421425">"ուղղակիորեն սկսել CDMA հեռախոսի կարգավորումը"</string>
- <string name="permdesc_performCdmaProvisioning" msgid="1994193538802314186">"Թույլ է տալիս հավելվածին մեկնարկել CDMA-ի տրամադրումը: Վնասարար հավելվածները կարող են անտեղի սկսել CDMA-ի տրամադրում:"</string>
- <string name="permlab_locationUpdates" msgid="7785408253364335740">"վերահսկել տեղանքի թարմացման ծանուցումները"</string>
- <string name="permdesc_locationUpdates" msgid="1120741557891438876">"Թույլ է տալիս հավելվածին միացնել կամ անջատել տեղանքի թարմացման ծանուցումները ռադիոյից: Սովորական հավելվածների օգտագործման համար չէ:"</string>
- <string name="permlab_checkinProperties" msgid="7855259461268734914">"մուտք գործել գրանցանշման կարգավորումներ"</string>
- <string name="permdesc_checkinProperties" msgid="4024526968630194128">"Թույլ է տալիս հավելվածին կարդալ/գրել գրանցանշման ծառայության կողմից վերբեռնված հատկությունների մուտքը: Սովորական հավելվածների օգտագործման համար չէ:"</string>
- <string name="permlab_bindGadget" msgid="776905339015863471">"ընտրել վիջեթներ"</string>
- <string name="permdesc_bindGadget" msgid="8261326938599049290">"Թույլ է տալիս հավելվածին թելադրել համակարգին, թե որ վիջեթները որ հավելվածի միջոցով է հնարավոր օգտագործել: Այս թույլտվությամբ հավելվածը կարող է այլ հավելվածներին մուտք տալ դեպի անձնական տվյալներ: Սովորական հավելվածների օգտագործման համար չէ:"</string>
- <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"փոփոխել հեռախոսի կարգավիճակը"</string>
- <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Թույլ է տալիս հավելվածին կառավարել սարքի հեռախոսային գործիքները: Այս թույլտվությամբ հավելվածը կարող է փոխարկել ցանցերը, միացնելև անջատել հեռախոսի ռադիոն և նման այլ բաներ` առանց ձեզ երբևէ տեղեկացնելու:"</string>
- <string name="permlab_readPhoneState" msgid="9178228524507610486">"կարդալ հեռախոսի կարգավիճակը և ինքնությունը"</string>
- <string name="permdesc_readPhoneState" msgid="1639212771826125528">"Թույլ է տալիս հավելվածին օգտագործել սարքի հեռախոսային գործիքները: Այս թույլտվությունը հավելվածին հնարավորություն է տալիս որոշել հեռախոսահամարը և սարքի ID-ները, արդյոք զանգը ակտիվ է և միացված զանգի հեռակա հեռախոսահամարը:"</string>
- <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"զերծ պահել գրասալիկը քնելուց"</string>
- <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"կանխել հեռախոսի քնի ռեժիմին անցնելը"</string>
- <string name="permdesc_wakeLock" product="tablet" msgid="7311319824400447868">"Թույլ է տալիս հավելվածին կանխել գրասալիկի` քնի ռեժիմին անցնելը:"</string>
- <string name="permdesc_wakeLock" product="default" msgid="8559100677372928754">"Թույլ է տալիս հավելվածին կանխել հեռախոսի` քնի ռեժիմին անցնելը:"</string>
- <string name="permlab_devicePower" product="tablet" msgid="2787034722616350417">"գրասալիկը միացնել կամ անջատել"</string>
- <string name="permlab_devicePower" product="default" msgid="4928622470980943206">"հեռախոսը միացնել կամ անջատել"</string>
- <string name="permdesc_devicePower" product="tablet" msgid="6689862878984631831">"Թույլ է տալիս հավելվածին միացնել կամ անջատել գրասալիկը:"</string>
- <string name="permdesc_devicePower" product="default" msgid="6037057348463131032">"Թույլ է տալիս հավելվածին միացնել կամ անջատել հեռախոսը:"</string>
- <string name="permlab_factoryTest" msgid="3715225492696416187">"աշխատել գործարանային փորձնական ռեժիմում"</string>
- <string name="permdesc_factoryTest" product="tablet" msgid="3952059318359653091">"Աշխատեցնել որպես արտադրողի ցածր մակարդակի փորձարկում` թույլատրելով գրասալիկի սարքին լիարժեք մուտք: Հասանելի է միայն այն ժամանակ, երբ գրասալիկը աշխատում է արտադրողի փորձնական ռեժիմում:"</string>
- <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Աշխատեցնել որպես արտադրողի ցածր մակարդակի փորձարկում` թույլատրելով լիարժեք մուտք հեռախոսի սարքաշարին: Հասանելի է միայն այն ժամանակ, երբ հեռախոսն աշխատում է արտադրողի փորձնական ռեժիմում:"</string>
- <string name="permlab_setWallpaper" msgid="6627192333373465143">"դնել պաստառ"</string>
- <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Թույլ է տալիս հավելվածին տեղադրել համակարգի պաստառը:"</string>
- <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"կարգաբերել ձեր պաստառի չափերը"</string>
- <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Թույլ է տալիս հավելվածին տեղադրել համակարգի պաստառի չափի հուշումները:"</string>
- <string name="permlab_masterClear" msgid="2315750423139697397">"վերակայել համակարգը գործարանային լռելյայնի"</string>
- <string name="permdesc_masterClear" msgid="3665380492633910226">"Թույլ է տալիս հավելվածին ամբողջությամբ վերակայել համակարգը իր գործարանային կարգավորումներին` ջնջելով բոլոր տվյալները, կարգավորումները և տեղադրված հավելվածները:"</string>
- <string name="permlab_setTime" msgid="2021614829591775646">"կարգավորել ժամը"</string>
- <string name="permdesc_setTime" product="tablet" msgid="1896341438151152881">"Թույլ է տալիս հավելվածին փոխել գրասալիկի ժամացույցի ժամանակը:"</string>
- <string name="permdesc_setTime" product="default" msgid="1855702730738020">"Թույլ է տալիս հավելվածին փոխել հեռախոսի ժամացույցի ժամանակը:"</string>
- <string name="permlab_setTimeZone" msgid="2945079801013077340">"կարգավորել ժամային գոտին"</string>
- <string name="permdesc_setTimeZone" product="tablet" msgid="1676983712315827645">"Թույլ է տալիս հավելվածին փոխել գրասալիկի ժամային գոտին:"</string>
- <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Թույլ է տալիս հավելվածին փոխել հեռախոսի ժամային գոտին:"</string>
- <string name="permlab_accountManagerService" msgid="4829262349691386986">"գործել որպես Հաշվի կառավարիչ ծառայություն"</string>
- <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Թույլ է տալիս հավելվածին զանգել Հաշվի իսկորոշիչներին:"</string>
- <string name="permlab_getAccounts" msgid="1086795467760122114">"գտնել հաշիվներ սարքում"</string>
- <string name="permdesc_getAccounts" product="tablet" msgid="2741496534769660027">"Թույլ է տալիս հավելվածին ստանալ գրասալիկի կողմից ճանաչված հաշիվների ցանկը: Սա կարող է ներառել ցանկացած հաշիվ, որ ստեղծվել է ձեր տեղադրած հավելվածների կողմից:"</string>
- <string name="permdesc_getAccounts" product="default" msgid="3448316822451807382">"Թույլ է տալիս հավելվածին ստանալ հեռախոսի կողմից ճանաչված հաշիվների ցանկը: Սա կարող է ներառել ցանկացած հաշիվ, որ ստեղծվել է ձեր տեղադրած հավելվածների կողմից:"</string>
- <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"ստեղծել հաշիվներ և դնել գաղտնաբառեր"</string>
- <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Թույլ է տալիս հավելվածին օգտագործել հաշվի կառավարչի նույնականացնող հնարավորությունները, ինչպես նաև ստեղծել հաշիվներ, ստանալ և կարգավորել դրանց գաղտնաբառերը:"</string>
- <string name="permlab_manageAccounts" msgid="4983126304757177305">"ավելացնել կամ հեռացնել հաշիվներ"</string>
- <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Թույլ է տալիս հավելվածին իրականացնել գործողություններ, ինչպիսիք են` ավելացնել և հեռացնել հաշիվներ և ջնջել դրանց գաղտնաբառերը:"</string>
- <string name="permlab_useCredentials" msgid="235481396163877642">"օգտագործել սարքի հաշիվները"</string>
- <string name="permdesc_useCredentials" msgid="7984227147403346422">"Թույլ է տալիս հավելվածին հայցել նույնականացման նշաններ:"</string>
- <string name="permlab_accessNetworkState" msgid="4951027964348974773">"դիտել ցանցային միացումները"</string>
- <string name="permdesc_accessNetworkState" msgid="8318964424675960975">"Թույլ է տալիս հավելվածին տեսնել ցանցային կապերի մասին տեղեկություններ, ինչպես օրինակ, թե ինչ կապեր կան և որոնք են միացված:"</string>
- <string name="permlab_createNetworkSockets" msgid="8018758136404323658">"լրիվ ցանցային մուտք"</string>
- <string name="permdesc_createNetworkSockets" msgid="3403062187779724185">"Թույլ է տալիս հավելվածին ստեղծել ցանցային բնիկներ և օգտագործել հատուկ ցանցային պրոտոկոլներ: Զննարկիչը և այլ հավելվածները միջոցներ են տրամադրում ինտերնետին տվյալներ ուղարկելու համար, ուստի այս թույլտվությունը չի պահանջվում ինտերնետին տվյալներ ուղարկելու համար:"</string>
- <string name="permlab_writeApnSettings" msgid="505660159675751896">"փոխել/կասեցնել ցանցային կարգավորումները և շարժը"</string>
- <string name="permdesc_writeApnSettings" msgid="5333798886412714193">"Թույլ է տալիս հավելվածին փոխել ցանցային կարգավորումները և կասեցնել ու ստուգել ամբողջ ցանցային շարժը, օրինակ` փոխել ցանկացած APN-ի պրոքսին և միացքը: Վնասարար հավելվածները կարող են հետևել, վերահասցեավորել կամ փոփոխել ցանցային փաթեթները` առանց ձեր իմացության:"</string>
- <string name="permlab_changeNetworkState" msgid="958884291454327309">"փոխել ցանցի կապը"</string>
- <string name="permdesc_changeNetworkState" msgid="6789123912476416214">"Թույլ է տալիս հավելվածին փոխել ցանցի միացման կարգավիճակը:"</string>
- <string name="permlab_changeTetherState" msgid="5952584964373017960">"փոխել միացված կապը"</string>
- <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Թույլ է տալիս հավելվածին փոխել կապված ցանցի միացման կարգավիճակը:"</string>
- <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"փոխել ֆոնային տվյալների օգտագործման կարգավորումը"</string>
- <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Թույլ է տալիս հավելվածին փոխել ֆոնային տվյալների օգտագործման կարգավորումները:"</string>
- <string name="permlab_accessWifiState" msgid="5202012949247040011">"դիտել Wi-Fi կապերը"</string>
- <string name="permdesc_accessWifiState" msgid="5002798077387803726">"Թույլ է տալիս հավելվածին տեսնել Wi-Fi ցանցի տեղեկություններ, ինչպես օրինակ` արդյոք Wi-Fi-ը միացված է, թե` ոչ, և միացված Wi-Fi սարքի անունը:"</string>
- <string name="permlab_changeWifiState" msgid="6550641188749128035">"միանալ Wi-Fi-ին և անջատվել դրանից"</string>
- <string name="permdesc_changeWifiState" msgid="7137950297386127533">"Թույլ է տալիս հավելվածին միանալ Wi-Fi մուտքի կետերին և անջատվել այդ կետերից, ինչպես նաև կատարել սարքի կարգավորման փոփոխություններ Wi-Fi ցանցերի համար:"</string>
- <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"թույլատրել Բազմասփյուռ Wi-Fi-ի ընդունումը"</string>
- <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"Թույլ է տալիս հավելվածին ստանալ Wi-Fi ցանցի բոլոր սարքերին ուղարկված փաթեթները` օգտագործելով ոչ միայն ձեր գրասալիկը, այլ նաև բազմասփյուռ հասցեները: Այն օգտագործում է ավելի շատ լիցք, քան ոչ բազմասփյուռ ռեժիմը:"</string>
- <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"Թույլ է տալիս հավելվածին ստանալ Wi-Fi ցանցի բոլոր սարքերին ուղարկված փաթեթները` օգտագործելով ոչ միայն ձեր հեռախոսը, այլ նաև բազմասփյուռ հասցեները: Այն օգտագործում է ավելի շատ լիցք, քան ոչ բազմասփյուռ ռեժիմը:"</string>
- <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"մուտք գործել Bluetooth-ի կարգավորումներ"</string>
- <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Թույլ է տալիս հավելվածին կարգավորել տեղային Bluetooth գրասալիկը և հայտնաբերել ու զուգակցվել հեռակա սարքերի հետ:"</string>
- <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Թույլ է տալիս հավելվածին կարգավորել տեղային Bluetooth հեռախոսը և հայտնաբերել ու զուգակցվել հեռակա սարքերի հետ:"</string>
- <string name="permlab_accessWimaxState" msgid="4195907010610205703">"միանալ WiMAX-ին և անջատվել դրանից"</string>
- <string name="permdesc_accessWimaxState" msgid="6360102877261978887">"Թույլ է տալիս հավելվածին պարզել, արդյոք WiMAX-ը միացված է և ցանկացած միացված WiMAX ցանցի մասին տեղեկություններ:"</string>
- <string name="permlab_changeWimaxState" msgid="2405042267131496579">"Փոխել WiMAX-ի կարգավիճակը"</string>
- <string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"Թույլ է տալիս հավելվածին գրասալիկը միացնել WiMAX ցանցին և անջատվել այդ ցանցից:"</string>
- <string name="permdesc_changeWimaxState" product="default" msgid="697025043004923798">"Թույլ է տալիս հավելվածին հեռախոսը միացնել WiMAX ցանցին և անջատել այդ ցանցից:"</string>
- <string name="permlab_bluetooth" msgid="6127769336339276828">"զուգակցվել Bluetooth սարքերի հետ"</string>
- <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"Թույլ է տալիս հավելվածին տեսնել Bluetooth-ի կարգավորումը գրասալիկի վրա և կապվել ու կապեր ընդունել զուգակցված սարքերի հետ:"</string>
- <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"Թույլ է տալիս հավելվածին տեսնել Bluetooth-ի կարգավորումը հեռախոսի վրա և կապվել ու կապեր ընդունել զուգակցված սարքերի հետ:"</string>
- <string name="permlab_nfc" msgid="4423351274757876953">"վերահսկել Մոտ Տարածությամբ Հաղորդակցումը"</string>
- <string name="permdesc_nfc" msgid="7120611819401789907">"Թույլ է տալիս հավելվածին հաղորդակցվել Մոտ տարածությամբ հաղորդակցման (NFC) պիտակների, քարտերի և ընթերցիչների հետ:"</string>
- <string name="permlab_disableKeyguard" msgid="3598496301486439258">"անջատել ձեր էկրանի կողպեքը"</string>
- <string name="permdesc_disableKeyguard" msgid="6034203065077122992">"Թույլ է տալիս հավելվածին անջատել ստեղնաշարի կողպումը և ցանկացած համակցված գաղտնաբառի պաշտպանվածությունը: Սրա ճիշտ օրինակն է, երբ հեռախոսը անջատում է ստեղնաշարի կողպումը մուտքային զանգ ստանալիս, հետո այն կրկին միացնում է, երբ զանգը ավարտվում է:"</string>
- <string name="permlab_readSyncSettings" msgid="6201810008230503052">"կարդալ համաժամեցման կարգավորումները"</string>
- <string name="permdesc_readSyncSettings" msgid="2706745674569678644">"Թույլ է տալիս հավելվածին կարդալ համաժամեցման կարգավորումները հաշվի համար: Օրինակ` այն կարող է որոշել, արդյոք Մարդիկ հավելվածը համաժամեցված է հաշվի հետ:"</string>
- <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"համաժամեցումը փոխարկել միացվածի և անջատվածի"</string>
- <string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"Թույլ է տալիս հավելվածին փոփոխել համաժամեցման կարգավորումները հաշվի համար: Օրինակ, այն կարող է օգտագործվել` միացնելու Մարդիկ հավելվածի համաժամեցումը հաշվի հետ:"</string>
- <string name="permlab_readSyncStats" msgid="7396577451360202448">"կարդալ համաժամեցման վիճակագրությունը"</string>
- <string name="permdesc_readSyncStats" msgid="1510143761757606156">"Թույլ է տալիս հավելվածին կարդալ հաշվի համաժամեցման վիճակագրությունը, այդ թվում` համաժամեցման իրադարձությունների պատմությունը և թե որքան տվյալ է համաժամեցված:"</string>
- <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"կարդալ բաժանորդագրված հոսքերը"</string>
- <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Թույլ է տալիս հավելվածին մանրամասներ ստանալ ընթացիկ համաժամեցված հոսքերի մասին:"</string>
- <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"գրել բաժանորդագրված հոսքերը"</string>
- <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Թույլ է տալիս հավելվածին փոփոխել ձեր ներկայումս համաժամեցված հոսքերը: Վնասարար հավելվածները կարող են փոխել ձեր համաժամեցված հոսքերը:"</string>
- <string name="permlab_readDictionary" msgid="4107101525746035718">"կարդալ պայմանները, որ ավելացրել եք բառարանում"</string>
- <string name="permdesc_readDictionary" msgid="659614600338904243">"Թույլ է տալիս հավելվածին կարդալ բոլոր բառերը, անունները և արտահայտությունները, որոնք օգտագործողը հնարավոր է պահել է օգտվողի բառարանում:"</string>
- <string name="permlab_writeDictionary" msgid="2183110402314441106">"ավելացնել բառեր օգտվողի համար սահմանված բառարանում"</string>
- <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Թույլ է տալիս հավելվածին գրել նոր բառեր օգտվողի բառարանում:"</string>
- <string name="permlab_sdcardRead" product="nosdcard" msgid="8235341515605559677">"փորձարկել մուտքը դեպի պաշտպանված պահոց"</string>
- <string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"փորձարկել մուտքը դեպի պաշտպանված պահոց"</string>
- <string name="permdesc_sdcardRead" product="nosdcard" msgid="3642473292348132072">"Թույլ է տալիս հավելվածին փորձարկել USB կրիչի թույլտվությունը, որը հասանելի կլինի հետագա սարքերում:"</string>
- <string name="permdesc_sdcardRead" product="default" msgid="5914402684685848828">"Թույլ է տալիս հավելվածին փորձարկել SD քարտի թույլտվությունը, որը հասանելի կլինի հետագա սարքերի վրա:"</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"փոփոխել կամ ջնջել ձեր USB կրիչի բովանդակությունը"</string>
- <string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"փոփոխել կամ ջնջել ձեր SD քարտի բովանդակությունը"</string>
- <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Թույլ է տալիս հավելվածին գրել USB կրիչի վրա:"</string>
- <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Թույլ է տալիս հավելվածին գրել SD քարտի վրա:"</string>
- <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"փոփոխել/ջնջել ներքին մեդիա կրիչի բովանդակությունը"</string>
- <string name="permdesc_mediaStorageWrite" product="default" msgid="8189160597698529185">"Թույլ է տալիս հավելվածին փոփոխել ներքին մեդիա պահոցի բովանդակությունը:"</string>
- <string name="permlab_manageDocs" product="default" msgid="5778318598448849829">"կառավարել փաստաթղթերի պահոցը"</string>
- <string name="permdesc_manageDocs" product="default" msgid="8704323176914121484">"Թույլ է տալիս հավելվածին կառավարել փաստաթղթի պահոցը:"</string>
- <string name="permlab_sdcardAccessAll" msgid="8150613823900460576">"մուտք ունենալ բոլոր օգտվողների արտաքին պահոց"</string>
- <string name="permdesc_sdcardAccessAll" msgid="3215208357415891320">"Թույլ է տալիս հավելվածին մուտք գործել արտաքին պահոց բոլոր օգտվողների համար:"</string>
- <string name="permlab_cache_filesystem" msgid="5656487264819669824">"մուտք քեշի ֆայլերի համակարգ"</string>
- <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Թույլ է տալիս հավելվածին գրել և կարդալ քեշ ֆայլային համակարգը:"</string>
- <string name="permlab_use_sip" msgid="5986952362795870502">"կատարել կամ ստանալ ինտերնետային զանգեր"</string>
- <string name="permdesc_use_sip" msgid="4717632000062674294">"Թույլ է տալիս հավելվածին օգտագործել SIP ծառայությունը` ինտերնետային զանգեր կատարելու/ստանալու համար:"</string>
- <string name="permlab_readNetworkUsageHistory" msgid="7862593283611493232">"կարդալ պատմական ցանցի օգտագործումը"</string>
- <string name="permdesc_readNetworkUsageHistory" msgid="7689060749819126472">"Թույլ է տալիս հավելվածին կարդալ հատուկ ցանցերի և հավելվածների համար ցանցի օգտագործման պատմությունը:"</string>
- <string name="permlab_manageNetworkPolicy" msgid="2562053592339859990">"կառավարել ցանցի քաղաքականությունը"</string>
- <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Թույլ է տալիս հավելվածին կառավարել ցանցային քաղաքականությունը և սահմանել հավելվածի հատուկ կանոնները:"</string>
- <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"փոփոխել ցանցի օգտագործման հաշվառումը"</string>
- <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Թույլ է տալիս հավելվածին փոփոխել, թե ինչպես է ցանցի օգտագործումը հաշվարկվում հավելվածների համար: Սովորական հավելվածների օգտագործման համար չէ:"</string>
- <string name="permlab_markNetworkSocket" msgid="3658527214914959749">"փոփոխել բնիկի նշանները"</string>
- <string name="permdesc_markNetworkSocket" msgid="7655568433696356578">"Թույլ է տալիս ծրագրին փոփոխել բնիկի նշանները երթուղման համար"</string>
- <string name="permlab_accessNotifications" msgid="7673416487873432268">"մուտք գործել ծանուցումներ"</string>
- <string name="permdesc_accessNotifications" msgid="458457742683431387">"Թույլ է տալիս հավելվածին առբերել, ուսումնասիրել և մաքրել ծանուցումներն, այդ թվում նաև այլ հավելվածների կողմից գրառվածները:"</string>
- <string name="permlab_bindNotificationListenerService" msgid="7057764742211656654">"միանալ ծանուցումների ունկնդրիչ ծառայությանը"</string>
- <string name="permdesc_bindNotificationListenerService" msgid="985697918576902986">"Թույլ է տալիս սեփականատիրոջը միանալ ծանուցումները ունկնդրող ծառայության վերին մակարդակի ինտերֆեյսին: Սովորական հավելվածների համար երբևէ չպետք է անհրաժեշտ լինի:"</string>
- <string name="permlab_invokeCarrierSetup" msgid="3699600833975117478">"գործարկել օպերատորի կողմից տրամադրված կազմաձևման ծրագիրը"</string>
- <string name="permdesc_invokeCarrierSetup" msgid="4159549152529111920">"Թույլ է տալիս սեփականատիրոջը գործարկել օպերատորի կողմից տրամադրված կազմաձևման ծրագիրը: Սովորական ծրագրերի համար երբևէ չպետք է անհրաժեշտ լինի:"</string>
- <string name="permlab_accessNetworkConditions" msgid="8206077447838909516">"լսել դիտարկումներ ցանցային պայմանների վերաբերյալ"</string>
- <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"Հավելվածին թույլ է տալիս լսել դիտարկումներ ցանցային պայմանների վերաբերյալ: Սովորական հավելվածների համար երբեք պետք չի գալիս:"</string>
- <string name="policylab_limitPassword" msgid="4497420728857585791">"Սահմանել գաղտնաբառի կանոնները"</string>
- <string name="policydesc_limitPassword" msgid="3252114203919510394">"Վերահսկել էկրանի ապակողպման գաղտնաբառերի թույլատրելի երկարությունն ու գրանշանները:"</string>
- <string name="policylab_watchLogin" msgid="914130646942199503">"Վերահսկել էկրանի ապակողպման փորձերը"</string>
- <string name="policydesc_watchLogin" product="tablet" msgid="3215729294215070072">"Վերահսկել սխալ գաղտնաբառերի թիվը, որոնք մուտքագրվել են էկրանն ապակողպելիս, և կողպել գրասալիկը կամ ջնջել գրասալիկի բոլոր տվյալները, եթե մուտքագրվել են չափից շատ սխալ գաղտնաբառեր:"</string>
- <string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"Վերահսկել սխալ գաղտնաբառերի թիվը, որոնք մուտքագրվել են էկրանն ապակողպելիս, և կողպել հեռախոսը կամ ջնջել հեռախոսի բոլոր տվյալները, եթե մուտքագրվել են չափից շատ սխալ գաղտնաբառեր:"</string>
- <string name="policylab_resetPassword" msgid="2620077191242688955">"Փոխել էկրանի ապակողպման գաղտնաբառը"</string>
- <string name="policydesc_resetPassword" msgid="605963962301904458">"Փոխել էկրանի ապակողպման գաղտնաբառը:"</string>
- <string name="policylab_forceLock" msgid="2274085384704248431">"Կողպել էկրանը"</string>
- <string name="policydesc_forceLock" msgid="1141797588403827138">"Վերահսկել` ինչպես և երբ է էկրանը կողպվում:"</string>
- <string name="policylab_wipeData" msgid="3910545446758639713">"Ջնջել բոլոր տվյալները"</string>
- <string name="policydesc_wipeData" product="tablet" msgid="4306184096067756876">"Ջնջել գրասալիկի տվյալներն առանց նախազգուշացման` կատարելով գործարանային տվյալների վերակայում:"</string>
- <string name="policydesc_wipeData" product="default" msgid="5096895604574188391">"Ջնջել հեռախոսի տվյալներն առանց նախազգուշացման` կատարելով գործարանային տվյալների վերակայում:"</string>
- <string name="policylab_setGlobalProxy" msgid="2784828293747791446">"Կարգավորել սարքի համաշխարհային պրոքսին"</string>
- <string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"Սարքը կարգավորել, որ համաշխարհային պրոքսին օգտագործվի, երբ քաղաքականությունը միացված է: Միայն առաջին սարքի կառավարիչն է կարգավորում գործող համաշխարհային պրոքսին:"</string>
- <string name="policylab_expirePassword" msgid="885279151847254056">"Սահմանել էկրանի կողպման գաղտնաբառի սպառման ժամկետը"</string>
- <string name="policydesc_expirePassword" msgid="1729725226314691591">"Վերահսկել` ինչ հաճախականությամբ պետք է էկրանի կողպման գաղտնաբառը փոխվի:"</string>
- <string name="policylab_encryptedStorage" msgid="8901326199909132915">"Կարգավորել պահոցի կոդավորումը"</string>
- <string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Պահանջել, որ պահվող հավելվածների տվյալները լինեն կոդավորված:"</string>
- <string name="policylab_disableCamera" msgid="6395301023152297826">"Կասեցնել տեսախցիկները"</string>
- <string name="policydesc_disableCamera" msgid="2306349042834754597">"Կանխել բոլոր սարքերի ֆոտոխցիկների օգտագործումը:"</string>
- <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Անջատել ստեղնակողպեքի գործառույթները"</string>
- <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Կանխել ստեղնակողպեքի որոշ գործառույթների օգտագործումը:"</string>
- <string-array name="phoneTypes">
- <item msgid="8901098336658710359">"Տնային"</item>
- <item msgid="869923650527136615">"Բջջային"</item>
- <item msgid="7897544654242874543">"Աշխատանքային"</item>
- <item msgid="1103601433382158155">"Աշխատանքային ֆաքս"</item>
- <item msgid="1735177144948329370">"Տնային ֆաքս"</item>
- <item msgid="603878674477207394">"Փեյջեր"</item>
- <item msgid="1650824275177931637">"Այլ"</item>
- <item msgid="9192514806975898961">"Հատուկ"</item>
- </string-array>
- <string-array name="emailAddressTypes">
- <item msgid="8073994352956129127">"Տուն"</item>
- <item msgid="7084237356602625604">"Աշխատանքային"</item>
- <item msgid="1112044410659011023">"Այլ"</item>
- <item msgid="2374913952870110618">"Հատուկ"</item>
- </string-array>
- <string-array name="postalAddressTypes">
- <item msgid="6880257626740047286">"Տնային"</item>
- <item msgid="5629153956045109251">"Աշխատանքային"</item>
- <item msgid="4966604264500343469">"Այլ"</item>
- <item msgid="4932682847595299369">"Հատուկ"</item>
- </string-array>
- <string-array name="imAddressTypes">
- <item msgid="1738585194601476694">"Տնային"</item>
- <item msgid="1359644565647383708">"Աշխատանքային"</item>
- <item msgid="7868549401053615677">"Այլ"</item>
- <item msgid="3145118944639869809">"Հատուկ"</item>
- </string-array>
- <string-array name="organizationTypes">
- <item msgid="7546335612189115615">"Աշխատանքային"</item>
- <item msgid="4378074129049520373">"Այլ"</item>
- <item msgid="3455047468583965104">"Հատուկ"</item>
- </string-array>
- <string-array name="imProtocols">
- <item msgid="8595261363518459565">"AIM"</item>
- <item msgid="7390473628275490700">"Windows Live"</item>
- <item msgid="7882877134931458217">"Yahoo"</item>
- <item msgid="5035376313200585242">"Skype"</item>
- <item msgid="7532363178459444943">"QQ"</item>
- <item msgid="3713441034299660749">"Google Talk"</item>
- <item msgid="2506857312718630823">"ICQ"</item>
- <item msgid="1648797903785279353">"Jabber"</item>
- </string-array>
- <string name="phoneTypeCustom" msgid="1644738059053355820">"Հատուկ"</string>
- <string name="phoneTypeHome" msgid="2570923463033985887">"Տնային"</string>
- <string name="phoneTypeMobile" msgid="6501463557754751037">"Բջջային"</string>
- <string name="phoneTypeWork" msgid="8863939667059911633">"Աշխատանքային"</string>
- <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Աշխատանքային ֆաքս"</string>
- <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Տնային ֆաքս"</string>
- <string name="phoneTypePager" msgid="7582359955394921732">"Փեյջեր"</string>
- <string name="phoneTypeOther" msgid="1544425847868765990">"Այլ"</string>
- <string name="phoneTypeCallback" msgid="2712175203065678206">"Ետզանգ"</string>
- <string name="phoneTypeCar" msgid="8738360689616716982">"Մեքենա"</string>
- <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Ընկերության գլխավոր"</string>
- <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
- <string name="phoneTypeMain" msgid="6766137010628326916">"Հիմնական"</string>
- <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Այլ ֆաքս"</string>
- <string name="phoneTypeRadio" msgid="4093738079908667513">"Ռադիո"</string>
- <string name="phoneTypeTelex" msgid="3367879952476250512">"Տելեքս"</string>
- <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
- <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Աշխատանքային բջջային համար"</string>
- <string name="phoneTypeWorkPager" msgid="649938731231157056">"Աշխատանքային փեյջեր"</string>
- <string name="phoneTypeAssistant" msgid="5596772636128562884">"Օգնական"</string>
- <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
- <string name="eventTypeCustom" msgid="7837586198458073404">"Հատուկ"</string>
- <string name="eventTypeBirthday" msgid="2813379844211390740">"Ծննդյան օր"</string>
- <string name="eventTypeAnniversary" msgid="3876779744518284000">"Տարեդարձ"</string>
- <string name="eventTypeOther" msgid="7388178939010143077">"Այլ"</string>
- <string name="emailTypeCustom" msgid="8525960257804213846">"Հատուկ"</string>
- <string name="emailTypeHome" msgid="449227236140433919">"Տնային"</string>
- <string name="emailTypeWork" msgid="3548058059601149973">"Աշխատանքային"</string>
- <string name="emailTypeOther" msgid="2923008695272639549">"Այլ"</string>
- <string name="emailTypeMobile" msgid="119919005321166205">"Բջջային"</string>
- <string name="postalTypeCustom" msgid="8903206903060479902">"Հատուկ"</string>
- <string name="postalTypeHome" msgid="8165756977184483097">"Տնային"</string>
- <string name="postalTypeWork" msgid="5268172772387694495">"Աշխատանքային"</string>
- <string name="postalTypeOther" msgid="2726111966623584341">"Այլ"</string>
- <string name="imTypeCustom" msgid="2074028755527826046">"Հատուկ"</string>
- <string name="imTypeHome" msgid="6241181032954263892">"Տուն"</string>
- <string name="imTypeWork" msgid="1371489290242433090">"Աշխատանքային"</string>
- <string name="imTypeOther" msgid="5377007495735915478">"Այլ"</string>
- <string name="imProtocolCustom" msgid="6919453836618749992">"Հատուկ"</string>
- <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
- <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
- <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
- <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
- <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
- <string name="imProtocolGoogleTalk" msgid="493902321140277304">"Hangouts"</string>
- <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
- <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
- <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
- <string name="orgTypeWork" msgid="29268870505363872">"Աշխատանքային"</string>
- <string name="orgTypeOther" msgid="3951781131570124082">"Այլ"</string>
- <string name="orgTypeCustom" msgid="225523415372088322">"Հատուկ"</string>
- <string name="relationTypeCustom" msgid="3542403679827297300">"Հատուկ"</string>
- <string name="relationTypeAssistant" msgid="6274334825195379076">"Օգնական"</string>
- <string name="relationTypeBrother" msgid="8757913506784067713">"Եղբայր"</string>
- <string name="relationTypeChild" msgid="1890746277276881626">"Երեխա"</string>
- <string name="relationTypeDomesticPartner" msgid="6904807112121122133">"Տեղական գործընկեր"</string>
- <string name="relationTypeFather" msgid="5228034687082050725">"Հայր"</string>
- <string name="relationTypeFriend" msgid="7313106762483391262">"Ընկեր"</string>
- <string name="relationTypeManager" msgid="6365677861610137895">"Կառավարիչ"</string>
- <string name="relationTypeMother" msgid="4578571352962758304">"Մայր"</string>
- <string name="relationTypeParent" msgid="4755635567562925226">"Ծնող"</string>
- <string name="relationTypePartner" msgid="7266490285120262781">"Գործընկեր"</string>
- <string name="relationTypeReferredBy" msgid="101573059844135524">"Հղված է"</string>
- <string name="relationTypeRelative" msgid="1799819930085610271">"Բարեկամ"</string>
- <string name="relationTypeSister" msgid="1735983554479076481">"Քույր"</string>
- <string name="relationTypeSpouse" msgid="394136939428698117">"Ամուսին"</string>
- <string name="sipAddressTypeCustom" msgid="2473580593111590945">"Հատուկ"</string>
- <string name="sipAddressTypeHome" msgid="6093598181069359295">"Տնային"</string>
- <string name="sipAddressTypeWork" msgid="6920725730797099047">"Աշխատանքային"</string>
- <string name="sipAddressTypeOther" msgid="4408436162950119849">"Այլ"</string>
- <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Մուտքագրեք PIN կոդը"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><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>
- <string name="keyguard_label_text" msgid="861796461028298424">"Ապակողպման համար սեղմեք Ցանկ, ապա 0:"</string>
- <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"Արտակարգ իրավիճակների հեռախոսահամար"</string>
- <string name="lockscreen_carrier_default" msgid="8963839242565653192">"Ծառայություն չկա:"</string>
- <string name="lockscreen_screen_locked" msgid="7288443074806832904">"Էկրանը կողպված է:"</string>
- <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"Սեղմեք Ցանկ` ապակողպելու համար, կամ կատարեք արտակարգ իրավիճակների զանգ:"</string>
- <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"Ապակողպելու համար սեղմեք Ցանկը:"</string>
- <string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"Հավաքեք սխեման` ապակողպելու համար"</string>
- <string name="lockscreen_emergency_call" msgid="5347633784401285225">"Արտակարգ իրավիճակների հեռախոսազանգ"</string>
- <string name="lockscreen_return_to_call" msgid="5244259785500040021">"Վերադառնալ զանգին"</string>
- <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Ճիշտ է:"</string>
- <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Կրկին փորձեք"</string>
- <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Կրկին փորձեք"</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Առավելագույն Դեմքով ապակողպման փորձերը գերազանցված են"</string>
- <string name="lockscreen_plugged_in" msgid="8057762828355572315">"Լիցքավորում, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_charged" msgid="321635745684060624">"Լիցքավորված է"</string>
- <string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_low_battery" msgid="1482873981919249740">"Միացրեք ձեր լիցքավորիչը:"</string>
- <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM քարտ չկա"</string>
- <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Գրասալիկում SIM քարտ չկա:"</string>
- <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Հեռախոսում SIM քարտ չկա:"</string>
- <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Մտցրեք SIM քարտը:"</string>
- <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM քարտը բացակայում է կամ չի կարող կարդացվել: Մտցրեք SIM քարտ:"</string>
- <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Անպիտան SIM քարտ:"</string>
- <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Ձեր SIM քարտը ընդմիշտ կասեցված է:\n Կապվեք ձեր անլար ծառայությունների մատակարարի հետ մեկ այլ SIM քարտի համար:"</string>
- <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Նախորդ հետքի կոճակ"</string>
- <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Հաջորդ հետագծի կոճակ"</string>
- <string name="lockscreen_transport_pause_description" msgid="7659088786780128001">"Դադարի կոճակ"</string>
- <string name="lockscreen_transport_play_description" msgid="5888422938351019426">"Նվագարկման կոճակ"</string>
- <string name="lockscreen_transport_stop_description" msgid="4562318378766987601">"Կանգի կոճակ"</string>
- <string name="emergency_calls_only" msgid="6733978304386365407">"Միայն արտակարգ իրավիճակների զանգեր"</string>
- <string name="lockscreen_network_locked_message" msgid="143389224986028501">"Ցանցը կողպված է"</string>
- <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM քարտը PUK-ով կողպված է:"</string>
- <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"Տեսեք Օգտվողի ուղեցույցը կամ դիմեք Բաժանորդների սպասարկման կենտրոն:"</string>
- <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"SIM քարտը կողպված է:"</string>
- <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"SIM քարտը ապակողպվում է…"</string>
- <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"Դուք <xliff:g id="NUMBER_0">%d</xliff:g> անգամ սխալ եք հավաքել ձեր ապակողպման սխեման: \n\nՓորձեք կրկին <xliff:g id="NUMBER_1">%d</xliff:g> վայրկյանից:"</string>
- <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="2725973286239344555">"Դուք սխալ եք մուտքագրել ձեր գաղտնաբառը <xliff:g id="NUMBER_0">%d</xliff:g> անգամ: \n\n Փորձեք կրկին <xliff:g id="NUMBER_1">%d</xliff:g> վայրկյանից:"</string>
- <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"Դուք <xliff:g id="NUMBER_0">%d</xliff:g> անգամ սխալ եք մուտքագրել ձեր PIN-ը: \n\nՓորձեք կրկին <xliff:g id="NUMBER_1">%d</xliff:g> վայրկյանից:"</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"Դուք <xliff:g id="NUMBER_0">%d</xliff:g> անգամ սխալ եք հավաքել ձեր ապակողպման սխեման: <xliff:g id="NUMBER_1">%d</xliff:g> անգամից ավել անհաջող փորձերից հետո ձեզ կառաջարկվի ապակողպել ձեր գրասալիկը` օգտագործելով ձեր Google-ի մուտքի օգտանունը:\n \n Փորձեք կրկին <xliff:g id="NUMBER_2">%d</xliff:g> վայրկյանից:"</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"Դուք <xliff:g id="NUMBER_0">%d</xliff:g> անգամ սխալ եք հավաքել ձեր ապակողպման սխեման: Եվս <xliff:g id="NUMBER_1">%d</xliff:g> անհաջող փորձից հետո ձեզ կառաջարկվի ապակողպել ձեր հեռախոսը` օգտագործելով Google-ի ձեր մուտքը:\n \n Փորձեք կրկին <xliff:g id="NUMBER_2">%d</xliff:g> վայրկյանից:"</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"Դուք <xliff:g id="NUMBER_0">%d</xliff:g> անգամ գրասալիկն ապակողպելու սխալ փորձ եք արել: Եվս <xliff:g id="NUMBER_1">%d</xliff:g> անհաջող փորձից հետո գրասալիկը կվերակարգավորվի գործարանային լռելյայնի, և օգտվողի բոլոր տվյալները կկորեն:"</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"Դուք <xliff:g id="NUMBER_0">%d</xliff:g> անգամ հեռախոսը ապակողպելու սխալ փորձ եք արել: Եվս <xliff:g id="NUMBER_1">%d</xliff:g> անհաջող փորձից հետո հեռախոսը կվերակարգավորվի գործարանային սկզբնադիր ռեժիմի, և օգտվողի բոլոր տվյալները կկորեն:"</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"Դուք <xliff:g id="NUMBER">%d</xliff:g> անգամ սխալ փորձ եք արել գրասալիկն ապակողպելու համար: Գրասալիկն այժմ կվերակարգավորվի գործարանային լռելյայնի:"</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"Դուք <xliff:g id="NUMBER">%d</xliff:g> անգամ հեռախոսը ապակողպելու սխալ փորձ եք արել: Հեռախոսն այժմ կվերակարգավորվի գործարանային սկզբնադիր ռեժիմի:"</string>
- <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"Փորձեք կրկին <xliff:g id="NUMBER">%d</xliff:g> վայրկյանից:"</string>
- <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"Մոռացե՞լ եք սխեման:"</string>
- <string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"Հաշվի ապակողպում"</string>
- <string name="lockscreen_glogin_too_many_attempts" msgid="2751368605287288808">"Չափից շատ սխեմայի փորձեր"</string>
- <string name="lockscreen_glogin_instructions" msgid="3931816256100707784">"Ապակողպելու համար` մուտք գործեք ձեր Google հաշվով:"</string>
- <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"Օգտանուն (էլփոստ)"</string>
- <string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">"Գաղտնաբառ"</string>
- <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"Մուտք գործել"</string>
- <string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"Անվավեր օգտանուն կամ գաղտնաբառ:"</string>
- <string name="lockscreen_glogin_account_recovery_hint" msgid="1696924763690379073">"Մոռացե՞լ եք ձեր օգտանունը կամ գաղտնաբառը:\nԱյցելեք "<b>"google.com/accounts/recovery"</b>":"</string>
- <string name="lockscreen_glogin_checking_password" msgid="7114627351286933867">"Ստուգվում է..."</string>
- <string name="lockscreen_unlock_label" msgid="737440483220667054">"Ապակողպել"</string>
- <string name="lockscreen_sound_on_label" msgid="9068877576513425970">"Ձայնը միացնել"</string>
- <string name="lockscreen_sound_off_label" msgid="996822825154319026">"Անձայն"</string>
- <string name="lockscreen_access_pattern_start" msgid="3941045502933142847">"Սխեմայի հավաքումը սկսված է"</string>
- <string name="lockscreen_access_pattern_cleared" msgid="5583479721001639579">"Սխեման մաքրված է"</string>
- <string name="lockscreen_access_pattern_cell_added" msgid="6756031208359292487">"Ավելացվել է վանդակ"</string>
- <string name="lockscreen_access_pattern_detected" msgid="4988730895554057058">"Սխեմայի հավաքումն ավարտված է"</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Վիջեթ %2$d of %3$d:"</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Ավելացնել վիջեթ:"</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Դատարկ"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Ապակողպման տարածքն ընդլայնված է:"</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Ապակողպման տարածքը ետ է ծալված:"</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> վիջեթ:"</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Օգտվողի ընտրիչ"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Կարգավիճակ"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Ֆոտոխցիկ"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Մեդիա կարգավորումներ"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Վիջեթների վերադասավորումը մեկնարկել է:"</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Վիջեթի վերադասավորումն ավարտվեց:"</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Վիջեթ <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>-ը ջնջված է:"</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Ընդլայնել ապակողպման տարածությունը:"</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Էջի ապակողպում:"</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Սխեմայով ապակողպում:"</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Դեմքով ապակողպում:"</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Pin-ն ապակողպված է:"</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Գաղտնաբառի ապակողպում:"</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Սխեմայի տարածք:"</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Սահեցման տարածք:"</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="granularity_label_character" msgid="7336470535385009523">"բնույթը"</string>
- <string name="granularity_label_word" msgid="7075570328374918660">"բառ"</string>
- <string name="granularity_label_link" msgid="5815508880782488267">"հղում"</string>
- <string name="granularity_label_line" msgid="5764267235026120888">"գիծ"</string>
- <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string>
- <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string>
- <string name="factorytest_failed" msgid="5410270329114212041">"Գործարանային թեստը ձախողվեց"</string>
- <string name="factorytest_not_system" msgid="4435201656767276723">"FACTORY_TEST գործողությունը միայն աջակցվում է /համակարգում/ծրագրում տեղադրված փաթեթների համար:"</string>
- <string name="factorytest_no_action" msgid="872991874799998561">"Չի գտնվել ոչ մի փաթեթ, որը ապահովում է FACTORY_TEST գործողությունը:"</string>
- <string name="factorytest_reboot" msgid="6320168203050791643">"Վերաբեռնել"</string>
- <string name="js_dialog_title" msgid="1987483977834603872">"«<xliff:g id="TITLE">%s</xliff:g>»-ի էջում ասվում է`"</string>
- <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
- <string name="js_dialog_before_unload_title" msgid="2619376555525116593">"Հաստատել կողմնորոշումը"</string>
- <string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"Լքել այս էջը"</string>
- <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"Մնալ այս էջում"</string>
- <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nՎստա՞հ եք, որ ցանկանում եք հեռանալ այս էջից:"</string>
- <string name="save_password_label" msgid="6860261758665825069">"Հաստատել"</string>
- <string name="double_tap_toast" msgid="4595046515400268881">"Հուշակ` կրկնակի հպեք` մեծացնելու և փոքրացնելու համար:"</string>
- <string name="autofill_this_form" msgid="4616758841157816676">"Ինքնալրացում"</string>
- <string name="setup_autofill" msgid="7103495070180590814">"Դնել ինքնալրացում"</string>
- <string name="autofill_address_name_separator" msgid="6350145154779706772">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3268041054899214945">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="7483307893170324129">", "</string>
- <string name="autofill_address_summary_format" msgid="4874459455786827344">"$1$2$3"</string>
- <string name="autofill_province" msgid="2231806553863422300">"Գավառ"</string>
- <string name="autofill_postal_code" msgid="4696430407689377108">"Փոստային ինդեքս"</string>
- <string name="autofill_state" msgid="6988894195520044613">"Նահանգ"</string>
- <string name="autofill_zip_code" msgid="8697544592627322946">"Փոստային կոդ"</string>
- <string name="autofill_county" msgid="237073771020362891">"Մարզ"</string>
- <string name="autofill_island" msgid="4020100875984667025">"Կղզի"</string>
- <string name="autofill_district" msgid="8400735073392267672">"Շրջան"</string>
- <string name="autofill_department" msgid="5343279462564453309">"Դեպարտամենտ"</string>
- <string name="autofill_prefecture" msgid="2028499485065800419">"Պրեֆեկտուրա"</string>
- <string name="autofill_parish" msgid="8202206105468820057">"Ծուխ"</string>
- <string name="autofill_area" msgid="3547409050889952423">"Տարածք"</string>
- <string name="autofill_emirate" msgid="2893880978835698818">"Էմիրություն"</string>
- <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"կարդալ ձեր վեբ էջանիշերը և պատմությունը"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="8462378226600439658">"Թույլ է տալիս հավելվածին կարդալ դիտարկչի այցելած բոլոր URL-ների պատմությունը և դիտարկչի բոլոր էջանիշերը: Նշում. այս թույլտվությունը չի կարող գործածվել կողմնակի դիտարկիչների կամ վեբ զննարկման հնարավորություններով այլ հավելվածների կողմից:"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"գրել վեբ էջանիշերը և պատմությունը"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="6825527469145760922">"Թույլ է տալիս հավելվածին փոփոխել դիտարկչի պատմությունը կամ ձեր գրասալիկում պահված էջանիշերը: Այն կարող է թույլ տալ հավելվածին ջնջել կամ փոփոխել դիտարկչի տվյալները: Նշում. այս թույլտվությունը չի կարող գործածվել կողմնակի դիտարկիչների կամ վեբ զննարկման հնարավորություններով այլ հավելվածների կողմից:"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"Թույլ է տալիս հավելվածին փոփոխել դիտարկչի պատմությունը կամ ձեր հեռախոսում պահված էջանիշերը: Այն կարող է թույլ տալ հավելվածին ջնջել կամ փոփոխել դիտարկչի տվյալները: Նշում. այս թույլտվությունը չի կարող գործածվել կողմնակի դիտարկիչների կամ վեբ զննարկման հնարավորություններով այլ հավելվածների կողմից:"</string>
- <string name="permlab_setAlarm" msgid="1379294556362091814">"դնել ազդանշան"</string>
- <string name="permdesc_setAlarm" msgid="316392039157473848">"Թույլ է տալիս հավելվածին սահմանել զարթուցիչի ծրագրում տեղադրված ազդանշանը: Զարթուցիչի որոշ հավելվածներ չեն կարող կիրառել այս հատկությունը:"</string>
- <string name="permlab_addVoicemail" msgid="5525660026090959044">"ավելացնել ձայնային փոստ"</string>
- <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Թույլ է տալիս հավելվածին ավելացնել հաղորդագրություններ ձեր ձայնային փոստի արկղում:"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"փոփոխել դիտարկչի աշխարհագրական տեղանքի թույլտվությունները"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"Թույլ է տալիս հավելվածին փոփոխել զննարկչի աշխարհագրական դիրքի թույլտվությունները: Վնասարար հավելվածները կարող են օգտագործել սա` թույլատրելու ուղարկել տեղադրության վերաբերյալ տեղեկությունները կամայական վեբ կայքերին:"</string>
- <string name="permlab_packageVerificationAgent" msgid="5568139100645829117">"հաստատել փաթեթները"</string>
- <string name="permdesc_packageVerificationAgent" msgid="8437590190990843381">"Թույլ է տալիս հավելվածին հաստատել, որ փաթեթը տեղադրելի է:"</string>
- <string name="permlab_bindPackageVerifier" msgid="4187786793360326654">"միանալ փաթեթի ստուգիչին"</string>
- <string name="permdesc_bindPackageVerifier" msgid="3180741773233862126">"Թույլ է տալիս սեփականատիրոջը փաթեթի ստուգիչների հարցում կատարել: Սովորական հավելվածների համար երբևէ չպետք է անհրաժեշտ լինի:"</string>
- <string name="permlab_serialPort" msgid="546083327654631076">"մուտք գործել հաջորդական միացքներ"</string>
- <string name="permdesc_serialPort" msgid="2991639985224598193">"Թույլ է տալիս սեփականատիրոջը մուտք գործել հաջորդական միացքներ` օգտագործելով SerialManager API-ը:"</string>
- <string name="permlab_accessContentProvidersExternally" msgid="5077774297943409285">"դրսից մատչել բովանդակություն տրամադրողներին"</string>
- <string name="permdesc_accessContentProvidersExternally" msgid="4544346486697853685">"Սեփականատիրոջը հնարավորություն է տալիս կապվել ծառայության մատակարարների հետ վահանակից: Սովորական հավելվածների համար երբևէ չպետք է անհրաժեշտ լինի:"</string>
- <string name="permlab_updateLock" msgid="3527558366616680889">"կասեցնել սարքի ավտոմատ թարմացումները"</string>
- <string name="permdesc_updateLock" msgid="1655625832166778492">"Թույլ է տալիս սեփականատիրոջը համակարգին տեղեկացնել հարմար ժամանակի մասին` սարքը նորացնելու նպատակով ոչ փոխազդական վերաբեռնման համար:"</string>
- <string name="save_password_message" msgid="767344687139195790">"Ցանկանու՞մ եք, որ դիտարկիչը հիշի այս գաղտնաբառը:"</string>
- <string name="save_password_notnow" msgid="6389675316706699758">"Ոչ հիմա"</string>
- <string name="save_password_remember" msgid="6491879678996749466">"Հիշել"</string>
- <string name="save_password_never" msgid="8274330296785855105">"Երբեք"</string>
- <string name="open_permission_deny" msgid="7374036708316629800">"Դուք չունեք այս էջը բացելու թույլտվություն:"</string>
- <string name="text_copied" msgid="4985729524670131385">"Տեքստը պատճենված է սեղմատախտակին:"</string>
- <string name="more_item_label" msgid="4650918923083320495">"Ավելին"</string>
- <string name="prepend_shortcut_label" msgid="2572214461676015642">"Ցանկ+"</string>
- <string name="menu_space_shortcut_label" msgid="2410328639272162537">"բացակ"</string>
- <string name="menu_enter_shortcut_label" msgid="2743362785111309668">"մուտք"</string>
- <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"ջնջել"</string>
- <string name="search_go" msgid="8298016669822141719">"Որոնել"</string>
- <string name="searchview_description_search" msgid="6749826639098512120">"Որոնել"</string>
- <string name="searchview_description_query" msgid="5911778593125355124">"Որոնել հարցումը"</string>
- <string name="searchview_description_clear" msgid="1330281990951833033">"Մաքրել հարցումը"</string>
- <string name="searchview_description_submit" msgid="2688450133297983542">"Ուղարկել հարցումը"</string>
- <string name="searchview_description_voice" msgid="2453203695674994440">"Ձայնային որոնում"</string>
- <string name="enable_explore_by_touch_warning_title" msgid="7460694070309730149">"Միացնե՞լ Հպման միջոցով հետազոտումը:"</string>
- <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="8655887539089910577">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>-ը ցանկանում է միացնել «Հետազոտում հպման միջոցով» ռեժիմը: Երբ միացված է «Հետազոտում հպման միջոցով» ռեժիմը, դուք կարող եք լսել կամ տեսնել նկարագրությունը, թե ինչ է ձեր մատի տակ, կամ կատարել ժեստեր` գրասալիկի հետ փոխգործակցելու համար:"</string>
- <string name="enable_explore_by_touch_warning_message" product="default" msgid="2708199672852373195">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>-ը ցանկանում է միացնել «Հետազոտում հպման միջոցով» ռեժիմը: Երբ միացված է «Հետազոտում հպման միջոցով» ռեժիմը, դուք կարող եք լսել կամ տեսնել նկարագրությունը, թե ինչ է ձեր մատի տակ, կամ կատարել ժեստեր` հեռախոսի հետ փոխգործակցելու համար:"</string>
- <string name="oneMonthDurationPast" msgid="7396384508953779925">"1 ամիս առաջ"</string>
- <string name="beforeOneMonthDurationPast" msgid="909134546836499826">"Ավելի շուտ քան 1 ամիս"</string>
- <plurals name="num_seconds_ago">
- <item quantity="one" msgid="4869870056547896011">"1 վայրկյան առաջ"</item>
- <item quantity="other" msgid="3903706804349556379">"<xliff:g id="COUNT">%d</xliff:g> վայրկյան առաջ"</item>
- </plurals>
- <plurals name="num_minutes_ago">
- <item quantity="one" msgid="3306787433088810191">"1 րոպե առաջ"</item>
- <item quantity="other" msgid="2176942008915455116">"<xliff:g id="COUNT">%d</xliff:g> րոպե առաջ"</item>
- </plurals>
- <plurals name="num_hours_ago">
- <item quantity="one" msgid="9150797944610821849">"1 ժամ առաջ"</item>
- <item quantity="other" msgid="2467273239587587569">"<xliff:g id="COUNT">%d</xliff:g> ժամ առաջ"</item>
- </plurals>
- <plurals name="last_num_days">
- <item quantity="other" msgid="3069992808164318268">"Վերջին <xliff:g id="COUNT">%d</xliff:g> օրերին"</item>
- </plurals>
- <string name="last_month" msgid="3959346739979055432">"Անցյալ ամիս"</string>
- <string name="older" msgid="5211975022815554840">"Ավելի հին"</string>
- <plurals name="num_days_ago">
- <item quantity="one" msgid="861358534398115820">"երեկ"</item>
- <item quantity="other" msgid="2479586466153314633">"<xliff:g id="COUNT">%d</xliff:g> օր առաջ"</item>
- </plurals>
- <plurals name="in_num_seconds">
- <item quantity="one" msgid="2729745560954905102">"1 վայրկյանից"</item>
- <item quantity="other" msgid="1241926116443974687">"<xliff:g id="COUNT">%d</xliff:g> վայրկյանից"</item>
- </plurals>
- <plurals name="in_num_minutes">
- <item quantity="one" msgid="8793095251325200395">"1 րոպեից"</item>
- <item quantity="other" msgid="3330713936399448749">"<xliff:g id="COUNT">%d</xliff:g> րոպեից"</item>
- </plurals>
- <plurals name="in_num_hours">
- <item quantity="one" msgid="7164353342477769999">"1 ժամից"</item>
- <item quantity="other" msgid="547290677353727389">"<xliff:g id="COUNT">%d</xliff:g> ժամից"</item>
- </plurals>
- <plurals name="in_num_days">
- <item quantity="one" msgid="5413088743009839518">"վաղը"</item>
- <item quantity="other" msgid="5109449375100953247">"<xliff:g id="COUNT">%d</xliff:g> օրից"</item>
- </plurals>
- <plurals name="abbrev_num_seconds_ago">
- <item quantity="one" msgid="1849036840200069118">"1 վրկ առաջ"</item>
- <item quantity="other" msgid="3699169366650930415">"<xliff:g id="COUNT">%d</xliff:g> վրկ. առաջ"</item>
- </plurals>
- <plurals name="abbrev_num_minutes_ago">
- <item quantity="one" msgid="6361490147113871545">"1 րոպե առաջ"</item>
- <item quantity="other" msgid="851164968597150710">"<xliff:g id="COUNT">%d</xliff:g> րոպե առաջ"</item>
- </plurals>
- <plurals name="abbrev_num_hours_ago">
- <item quantity="one" msgid="4796212039724722116">"1 ժամ առաջ"</item>
- <item quantity="other" msgid="6889970745748538901">"<xliff:g id="COUNT">%d</xliff:g> ժամ առաջ"</item>
- </plurals>
- <plurals name="abbrev_num_days_ago">
- <item quantity="one" msgid="8463161711492680309">"երեկ"</item>
- <item quantity="other" msgid="3453342639616481191">"<xliff:g id="COUNT">%d</xliff:g> օր առաջ"</item>
- </plurals>
- <plurals name="abbrev_in_num_seconds">
- <item quantity="one" msgid="5842225370795066299">"1 վրկ-ից"</item>
- <item quantity="other" msgid="5495880108825805108">"<xliff:g id="COUNT">%d</xliff:g> վրկ-ից"</item>
- </plurals>
- <plurals name="abbrev_in_num_minutes">
- <item quantity="one" msgid="562786149928284878">"1 րոպեից"</item>
- <item quantity="other" msgid="4216113292706568726">"<xliff:g id="COUNT">%d</xliff:g> րոպեից"</item>
- </plurals>
- <plurals name="abbrev_in_num_hours">
- <item quantity="one" msgid="3274708118124045246">"1 ժամից"</item>
- <item quantity="other" msgid="3705373766798013406">"<xliff:g id="COUNT">%d</xliff:g> ժամից"</item>
- </plurals>
- <plurals name="abbrev_in_num_days">
- <item quantity="one" msgid="2178576254385739855">"վաղը"</item>
- <item quantity="other" msgid="2973062968038355991">"<xliff:g id="COUNT">%d</xliff:g> օրից"</item>
- </plurals>
- <string name="preposition_for_date" msgid="9093949757757445117">"<xliff:g id="DATE">%s</xliff:g>-ին"</string>
- <string name="preposition_for_time" msgid="5506831244263083793">"ժամը <xliff:g id="TIME">%s</xliff:g>-ին"</string>
- <string name="preposition_for_year" msgid="5040395640711867177">"<xliff:g id="YEAR">%s</xliff:g> թվականին"</string>
- <string name="day" msgid="8144195776058119424">"օր"</string>
- <string name="days" msgid="4774547661021344602">"օր"</string>
- <string name="hour" msgid="2126771916426189481">"ժամ"</string>
- <string name="hours" msgid="894424005266852993">"ժամ"</string>
- <string name="minute" msgid="9148878657703769868">"րոպե"</string>
- <string name="minutes" msgid="5646001005827034509">"րոպե"</string>
- <string name="second" msgid="3184235808021478">"վրկ"</string>
- <string name="seconds" msgid="3161515347216589235">"վրկ"</string>
- <string name="week" msgid="5617961537173061583">"շաբաթ"</string>
- <string name="weeks" msgid="6509623834583944518">"շաբաթ"</string>
- <string name="year" msgid="4001118221013892076">"տարի"</string>
- <string name="years" msgid="6881577717993213522">"տարի"</string>
- <plurals name="duration_seconds">
- <item quantity="one" msgid="6962015528372969481">"1 վայրկյան"</item>
- <item quantity="other" msgid="1886107766577166786">"<xliff:g id="COUNT">%d</xliff:g> վայրկյան"</item>
- </plurals>
- <plurals name="duration_minutes">
- <item quantity="one" msgid="4915414002546085617">"1 րոպե"</item>
- <item quantity="other" msgid="3165187169224908775">"<xliff:g id="COUNT">%d</xliff:g> րոպե"</item>
- </plurals>
- <plurals name="duration_hours">
- <item quantity="one" msgid="8917467491248809972">"1 ժամ"</item>
- <item quantity="other" msgid="3863962854246773930">"<xliff:g id="COUNT">%d</xliff:g> ժամ"</item>
- </plurals>
- <string name="VideoView_error_title" msgid="3534509135438353077">"Տեսանյութի խնդիր"</string>
- <string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Այս տեսանյութը հեռարձակման ենթակա չէ այս սարքով:"</string>
- <string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Այս տեսանյութը հնարավոր չէ նվագարկել:"</string>
- <string name="VideoView_error_button" msgid="2822238215100679592">"Լավ"</string>
- <string name="relative_time" msgid="1818557177829411417">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
- <string name="noon" msgid="7245353528818587908">"կեսօր"</string>
- <string name="Noon" msgid="3342127745230013127">"Կեսօր"</string>
- <string name="midnight" msgid="7166259508850457595">"կեսգիշեր"</string>
- <string name="Midnight" msgid="5630806906897892201">"Կեսգիշեր"</string>
- <string name="elapsed_time_short_format_mm_ss" msgid="4431555943828711473">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
- <string name="elapsed_time_short_format_h_mm_ss" msgid="1846071997616654124">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
- <string name="selectAll" msgid="6876518925844129331">"Ընտրել բոլորը"</string>
- <string name="cut" msgid="3092569408438626261">"Կտրել"</string>
- <string name="copy" msgid="2681946229533511987">"Պատճենել"</string>
- <string name="paste" msgid="5629880836805036433">"Տեղադրել"</string>
- <string name="replace" msgid="5781686059063148930">"Փոխարինել..."</string>
- <string name="delete" msgid="6098684844021697789">"Ջնջել"</string>
- <string name="copyUrl" msgid="2538211579596067402">"Պատճենել URL-ը"</string>
- <string name="selectTextMode" msgid="1018691815143165326">"Ընտրել տեքստ"</string>
- <string name="textSelectionCABTitle" msgid="5236850394370820357">"Տեքստի ընտրություն"</string>
- <string name="addToDictionary" msgid="4352161534510057874">"Ավելացնել բառարանում"</string>
- <string name="deleteText" msgid="6979668428458199034">"Ջնջել"</string>
- <string name="inputMethod" msgid="1653630062304567879">"Մուտքագրման եղանակը"</string>
- <string name="editTextMenuTitle" msgid="4909135564941815494">"Տեքստի գործողությունները"</string>
- <string name="low_internal_storage_view_title" msgid="5576272496365684834">"Պահոցային տարածքը սպառվում է"</string>
- <string name="low_internal_storage_view_text" msgid="6640505817617414371">"Համակարգի որոշ գործառույթներ հնարավոր է չաշխատեն"</string>
- <string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ն աշխատեցվում է"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Հպեք` լրացուցիչ տեղեկությունները կամ ծրագիրը դադարեցնելու համար:"</string>
- <string name="ok" msgid="5970060430562524910">"Լավ"</string>
- <string name="cancel" msgid="6442560571259935130">"Չեղարկել"</string>
- <string name="yes" msgid="5362982303337969312">"Լավ"</string>
- <string name="no" msgid="5141531044935541497">"Չեղարկել"</string>
- <string name="dialog_alert_title" msgid="2049658708609043103">"Ուշադրություն"</string>
- <string name="loading" msgid="7933681260296021180">"Բեռնում..."</string>
- <string name="capital_on" msgid="1544682755514494298">"Միացնել"</string>
- <string name="capital_off" msgid="6815870386972805832">"Անջատել"</string>
- <string name="whichApplication" msgid="4533185947064773386">"ավարտել գործողությունը` օգտագործելով"</string>
- <string name="alwaysUse" msgid="4583018368000610438">"Օգտագործել լռելյայն այս գործողության համար:"</string>
- <string name="clearDefaultHintMsg" msgid="3252584689512077257">"Մաքրել լռելյայնը Համակարգի կարգավորումներ &gt; Ծրագրեր &gt;Ներբեռնված էջից:"</string>
- <string name="chooseActivity" msgid="7486876147751803333">"Ընտրել գործողություն"</string>
- <string name="chooseUsbActivity" msgid="6894748416073583509">"Ընտրեք հավելված USB սարքի համար"</string>
- <string name="noApplications" msgid="2991814273936504689">"Ոչ մի հավելված չի կարող կատարել այս գործողությունը:"</string>
- <string name="aerr_title" msgid="1905800560317137752"></string>
- <string name="aerr_application" msgid="932628488013092776">"Ցավոք, <xliff:g id="APPLICATION">%1$s</xliff:g>-ը ընդհատվել է:"</string>
- <string name="aerr_process" msgid="4507058997035697579">"Ցավոք, <xliff:g id="PROCESS">%1$s</xliff:g> գործընթացը դադարել է:"</string>
- <string name="anr_title" msgid="4351948481459135709"></string>
- <string name="anr_activity_application" msgid="1904477189057199066">"<xliff:g id="APPLICATION">%2$s</xliff:g>-ը չի արձագանքում:\n\nՑանկանու՞մ եք փակել այն:"</string>
- <string name="anr_activity_process" msgid="5776209883299089767">"<xliff:g id="ACTIVITY">%1$s</xliff:g> գործողությունը չի պատասխանում:\n\nՑանկանու՞մ եք այն փակել:"</string>
- <string name="anr_application_process" msgid="8941757607340481057">"<xliff:g id="APPLICATION">%1$s</xliff:g>-ը չի արձագանքում: Ցանկանու՞մ եք փակել այն:"</string>
- <string name="anr_process" msgid="6513209874880517125">"<xliff:g id="PROCESS">%1$s</xliff:g> գործընթացը չի արձագանքում:\n\nՑանկանու՞մ եք փակել այն:"</string>
- <string name="force_close" msgid="8346072094521265605">"Լավ"</string>
- <string name="report" msgid="4060218260984795706">"Զեկույց"</string>
- <string name="wait" msgid="7147118217226317732">"Սպասեք"</string>
- <string name="webpage_unresponsive" msgid="3272758351138122503">"Էջը չի պատասխանում:\n\nՑանկանու՞մ եք փակել այն:"</string>
- <string name="launch_warning_title" msgid="1547997780506713581">"Հավելվածը վերահղվել է"</string>
- <string name="launch_warning_replace" msgid="6202498949970281412">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ն այժմ աշխատում է:"</string>
- <string name="launch_warning_original" msgid="188102023021668683">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ը ի սկզբանե թողարկվել է:"</string>
- <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Աստիճանակարգել"</string>
- <string name="screen_compat_mode_show" msgid="4013878876486655892">"Միշտ ցույց տալ"</string>
- <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Կրկին ակտիվացնել սա Համակարգի կարգավորումներում &amp;gt Ծրագրեր &gt; Ներբեռնումներ:"</string>
- <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> ծրագիրը (գործընթաց <xliff:g id="PROCESS">%2$s</xliff:g>) խախտել է իր ինքնահարկադրված Խիստ ռեժիմ քաղաքականությունը:"</string>
- <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> գործընթացը խախտել է իր ինքնահարկադրված Խիստ ռեժիմ քաղաքականությունը:"</string>
- <string name="android_upgrading_title" msgid="1584192285441405746">"Android-ը նորացվում է..."</string>
- <string name="android_upgrading_apk" msgid="7904042682111526169">"Հավելվածը օպտիմալացվում է <xliff:g id="NUMBER_0">%1$d</xliff:g>-ից <xliff:g id="NUMBER_1">%2$d</xliff:g>-ի:"</string>
- <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>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Հպեք` հավելվածին անցնելու համար"</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>
- <string name="old_app_description" msgid="2082094275580358049">"Չսկսել նոր հավելված:"</string>
- <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="sendText" msgid="5209874571959469142">"Ընտրեք գործողություն տեքստի համար"</string>
- <string name="volume_ringtone" msgid="6885421406845734650">"Զանգակի ձայնի ուժգնությունը"</string>
- <string name="volume_music" msgid="5421651157138628171">"Մեդիա ձայնի բարձրություն"</string>
- <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"Նվագարկում է Bluetooth-ի միջոցով"</string>
- <string name="volume_music_hint_silent_ringtone_selected" msgid="8310739960973156272">"Սահմանվել է անձայն զանգերանգ"</string>
- <string name="volume_call" msgid="3941680041282788711">"Մուտքային զանգի ձայնի ուժգնությունը"</string>
- <string name="volume_bluetooth_call" msgid="2002891926351151534">"Bluetooth-ի ներզանգի բարձրություն"</string>
- <string name="volume_alarm" msgid="1985191616042689100">"Զարթուցիչի ձայնի ուժգնությունը"</string>
- <string name="volume_notification" msgid="2422265656744276715">"Ծանուցումների ձայնի ուժգնությունը"</string>
- <string name="volume_unknown" msgid="1400219669770445902">"Ձայն"</string>
- <string name="volume_icon_description_bluetooth" msgid="6538894177255964340">"Bluetooth-ի ձայնի ուժգնությունը"</string>
- <string name="volume_icon_description_ringer" msgid="3326003847006162496">"Զանգերանգի բարձրություն"</string>
- <string name="volume_icon_description_incall" msgid="8890073218154543397">"Զանգի ձայնի բարձրություն"</string>
- <string name="volume_icon_description_media" msgid="4217311719665194215">"Մեդիա ձայնի բարձրություն"</string>
- <string name="volume_icon_description_notification" msgid="7044986546477282274">"Ծանուցումների ձայնի ուժգնությունը"</string>
- <string name="ringtone_default" msgid="3789758980357696936">"Լռելյայն զանգերանգ"</string>
- <string name="ringtone_default_with_actual" msgid="8129563480895990372">"Լռելյայն զանգերանգ (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
- <string name="ringtone_silent" msgid="7937634392408977062">"Ոչ մեկը"</string>
- <string name="ringtone_picker_title" msgid="3515143939175119094">"Զանգերանգներ"</string>
- <string name="ringtone_unknown" msgid="5477919988701784788">"Անհայտ զանգերանգ"</string>
- <plurals name="wifi_available">
- <item quantity="one" msgid="6654123987418168693">"Wi-Fi ցանցը հասանելի է"</item>
- <item quantity="other" msgid="4192424489168397386">"հասանելի են Wi-Fi ցանցեր"</item>
- </plurals>
- <plurals name="wifi_available_detailed">
- <item quantity="one" msgid="1634101450343277345">"Բաց Wi-Fi ցանցը հասանելի է"</item>
- <item quantity="other" msgid="7915895323644292768">"Հասանելի են բաց Wi-Fi ցանցեր"</item>
- </plurals>
- <string name="wifi_available_sign_in" msgid="4029489716605255386">"Մուտք գործեք Wi-Fi ցանց"</string>
- <string name="network_available_sign_in" msgid="8495155593358054676">"Մուտք գործել ցանց"</string>
- <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
- <skip />
- <string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Չհաջողվեց միանալ Wi-Fi-ին"</string>
- <string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ունի թույլ ինտերնետ կապ:"</string>
- <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"Wi-Fi ուղիղ"</string>
- <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>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Հպեք կարգավորումների համար"</string>
- <string name="accept" msgid="1645267259272829559">"Ընդունել"</string>
- <string name="decline" msgid="2112225451706137894">"Մերժել"</string>
- <string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Հրավերն ուղարկված է"</string>
- <string name="wifi_p2p_invitation_to_connect_title" msgid="4958803948658533637">"Միացման հրավեր"</string>
- <string name="wifi_p2p_from_message" msgid="570389174731951769">"Ուղարկող`"</string>
- <string name="wifi_p2p_to_message" msgid="248968974522044099">"Ում`"</string>
- <string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Մուտքագրեք պահանջվող PIN-ը:"</string>
- <string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN-ը`"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="tablet" msgid="8012981257742232475">"Գրասալիկը ժամանակավորապես կանջատվի Wi-Fi-ից, քանի դեռ այն կապակցված է <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ին"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="default" msgid="7363907213787469151">"Հեռախոսը ժամանակավորապես կանջատվի Wi-Fi-ից, քանի դեռ այն միացված է <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ին"</string>
- <string name="select_character" msgid="3365550120617701745">"Զետեղել նշան"</string>
- <string name="sms_control_title" msgid="7296612781128917719">"SMS հաղորդագրությունների ուղարկում"</string>
- <string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-ը ուղարկում է մեծ թվով SMS հաղորդագրություններ: Ցանկանու՞մ եք թույլատրել այս հավելվածին շարունակել ուղարկել հաղորդագրություններ:"</string>
- <string name="sms_control_yes" msgid="3663725993855816807">"Թույլատրել"</string>
- <string name="sms_control_no" msgid="625438561395534982">"Ժխտել"</string>
- <string name="sms_short_code_confirm_message" msgid="1645436466285310855">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ը&lt;/b&gt; ուզում է հաղորդագրություն ուղարկել &lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>-ին&lt;/b&gt;:"</string>
- <string name="sms_short_code_details" msgid="3492025719868078457">"Այս "<font fgcolor="#ffffb060">"-ը կարող է գանձումներ առաջացնել"</font>" ձեր բջջային հաշվի վրա:"</string>
- <string name="sms_premium_short_code_details" msgid="5523826349105123687"><font fgcolor="#ffffb060">"Սրա հետևանքով ձեր բջջային հաշվին կներկայացվի հաշիվ:"</font></string>
- <string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"Ուղարկել"</string>
- <string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"Չեղարկել"</string>
- <string name="sms_short_code_remember_choice" msgid="5289538592272218136">"Հիշել իմ ընտրությունը"</string>
- <string name="sms_short_code_remember_undo_instruction" msgid="4960944133052287484">"Դուք կարող եք փոխել սա ավելի ուշ Կարգավորումներում  &gt; Ծրագրերում"</string>
- <string name="sms_short_code_confirm_always_allow" msgid="3241181154869493368">"Միշտ թույլատրել"</string>
- <string name="sms_short_code_confirm_never_allow" msgid="446992765774269673">"Երբեք չթույլատրել"</string>
- <string name="sim_removed_title" msgid="6227712319223226185">"SIM քարտը հեռացված է"</string>
- <string name="sim_removed_message" msgid="2333164559970958645">"Բջջային ցանցը անհասանելի կլինի, մինչև չվերագործարկեք վավեր SIM քարտ տեղադրելուց հետո:"</string>
- <string name="sim_done_button" msgid="827949989369963775">"Կատարված"</string>
- <string name="sim_added_title" msgid="3719670512889674693">"SIM քարտը ավելացվել է"</string>
- <string name="sim_added_message" msgid="6599945301141050216">"Վերագործարկեք ձեր սարքը` բջջային ցանց մուտք ունենալու համար:"</string>
- <string name="sim_restart_button" msgid="4722407842815232347">"Վերագործարկել"</string>
- <string name="time_picker_dialog_title" msgid="8349362623068819295">"Սահմանել ժամը"</string>
- <string name="date_picker_dialog_title" msgid="5879450659453782278">"Սահմանել ամսաթիվը"</string>
- <string name="date_time_set" msgid="5777075614321087758">"Սահմանել"</string>
- <string name="date_time_done" msgid="2507683751759308828">"Կատարված է"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"Նոր` "</font></string>
- <string name="perms_description_app" msgid="5139836143293299417">"Տրամադրված է <xliff:g id="APP_NAME">%1$s</xliff:g>-ի կողմից:"</string>
- <string name="no_permissions" msgid="7283357728219338112">"Թույլտվություններ չեն պահանջվում"</string>
- <string name="perm_costs_money" msgid="4902470324142151116">"Սա կարող է գումար պահանջել"</string>
- <string name="usb_storage_activity_title" msgid="4465055157209648641">"USB զանգվածային կրիչ"</string>
- <string name="usb_storage_title" msgid="5901459041398751495">"USB-ն կապակցված է"</string>
- <string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Դուք կապակցվել եք ձեր համակարգչին USB-ի միջոցով: Հպեք ներքևի կոճակը, եթե ցանկանում եք պատճենել ֆայլերը ձեր համակարգչի և ձեր Android-ի USB կրիչի միջև:"</string>
- <string name="usb_storage_message" product="default" msgid="805351000446037811">"Դուք միացել եք ձեր համակարգչին USB-ի միջոցով: Հպեք ներքևի կոճակին, եթե ցանկանում եք պատճենել ֆայլերը ձեր համակարգչի և ձեր Android-ի SD քարտի միջև:"</string>
- <string name="usb_storage_button_mount" msgid="1052259930369508235">"Միացնել USB կրիչը"</string>
- <string name="usb_storage_error_message" product="nosdcard" msgid="3017045217365540658">"Խնդիր է ծագել ձեր USB կրիչը USB զանգվածային կրիչի համար օգտագործելիս:"</string>
- <string name="usb_storage_error_message" product="default" msgid="2876018512716970313">"Խնդիր է ծագել ձեր SD քարտը USB զանգվածային կրիչի համար օգտագործելիս:"</string>
- <string name="usb_storage_notification_title" msgid="8175892554757216525">"USB-ն կապակցված է"</string>
- <string name="usb_storage_notification_message" msgid="939822783828183763">"Հպեք` ֆայլերը պատճենելու համար ձեր համակարգչում կամ համակարգչից:"</string>
- <string name="usb_storage_stop_notification_title" msgid="2336058396663516017">"Անջատել USB կրիչը"</string>
- <string name="usb_storage_stop_notification_message" msgid="1656852098555623822">"Հպեք` USB կրիչն անջատելու համար:"</string>
- <string name="usb_storage_stop_title" msgid="660129851708775853">"USB կրիչը օգտագործվում է"</string>
- <string name="usb_storage_stop_message" product="nosdcard" msgid="4264025280777219521">"Նախքան USB կրիչն անջատելը, անջատեք («հանեք») ձեր Android-ի USB կրիչը համակարգչից:"</string>
- <string name="usb_storage_stop_message" product="default" msgid="8043969782460613114">"Նախքան USB կրիչն անջատելը, անջատեք («հանեք») ձեր Android-ի SD քարտը համակարգչից:"</string>
- <string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"Անջատել USB կրիչը"</string>
- <string name="usb_storage_stop_error_message" msgid="1970374898263063836">"Խնդիր առաջացավ USB կրիչն անջատելիս: Ստուգեք, արդյոք անջատել եք USB հանգույցը, ապա փորձեք կրկին:"</string>
- <string name="dlg_confirm_kill_storage_users_title" msgid="963039033470478697">"Միացնել USB կրիչը"</string>
- <string name="dlg_confirm_kill_storage_users_text" msgid="5100428757107469454">"Եթե ​​դուք միացնեք USB կրիչը, որոշ ծրագրեր,որոնցից օգտվում եք, կդադարեն աշխատել և կարող են անհասանելի լինել, քանի դեռ չեք անջատել USB կրիչը:"</string>
- <string name="dlg_error_title" msgid="7323658469626514207">"USB գործողությունը անհաջող էր"</string>
- <string name="dlg_ok" msgid="7376953167039865701">"Լավ"</string>
- <string name="usb_mtp_notification_title" msgid="3699913097391550394">"Կապակցված է որպես մեդիա սարք"</string>
- <string name="usb_ptp_notification_title" msgid="1960817192216064833">"Միացված է որպես ֆոտոխցիկ"</string>
- <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Միացված է որպես տեղադրիչ"</string>
- <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Կապակցված է USB լրասարքի"</string>
- <string name="usb_notification_message" msgid="2290859399983720271">"Հպեք` այլ USB ընտրանքների համար:"</string>
- <string name="extmedia_format_title" product="nosdcard" msgid="9020092196061007262">"Ֆորմատավորե՞լ USB կրիչը:"</string>
- <string name="extmedia_format_title" product="default" msgid="3648415921526526069">"Ֆորմատավորե՞լ SD քարտը:"</string>
- <string name="extmedia_format_message" product="nosdcard" msgid="3934016853425761078">"Ձեր USB կրիչում պահվող բոլոր ֆայլերը կջնջվեն: Այս գործողությունը անշրջելի է:"</string>
- <string name="extmedia_format_message" product="default" msgid="14131895027543830">"Ձեր քարտի բոլոր տվյալները կկորեն:"</string>
- <string name="extmedia_format_button_format" msgid="4131064560127478695">"Ձևաչափ"</string>
- <string name="adb_active_notification_title" msgid="6729044778949189918">"USB վրիպազերծումը միացված է"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"Հպեք` USB կարգաբերումը կասեցնելու համար:"</string>
- <string name="select_input_method" msgid="4653387336791222978">"Ընտրեք մուտքագրման եղանակը"</string>
- <string name="configure_input_methods" msgid="9091652157722495116">"Կարգավորել ներածման եղանակները"</string>
- <string name="use_physical_keyboard" msgid="6203112478095117625">"Ֆիզիկական ստեղնաշար"</string>
- <string name="hardware" msgid="7517821086888990278">"Սարքաշար"</string>
- <string name="select_keyboard_layout_notification_title" msgid="1407367017263030773">"Ընտրեք ստեղնաշարի դիրքը"</string>
- <string name="select_keyboard_layout_notification_message" msgid="4465907700449257063">"Հպեք` ստեղնաշարի դիրքը ընտրելու համար:"</string>
- <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՈՒՓՔԵւՕՖ"</string>
- <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="candidates_style" msgid="4333913089637062257"><u>"թեկնածուները"</u></string>
- <string name="ext_media_checking_notification_title" product="nosdcard" msgid="3449816005351468560">"Պատրաստում է USB կրիչը"</string>
- <string name="ext_media_checking_notification_title" product="default" msgid="5457603418970994050">"Պատրաստվում է SD քարտը"</string>
- <string name="ext_media_checking_notification_message" msgid="8287319882926737053">"Սխալների ստուգում:"</string>
- <string name="ext_media_nofs_notification_title" product="nosdcard" msgid="7788040745686229307">"USB կրիչը դատարկ է"</string>
- <string name="ext_media_nofs_notification_title" product="default" msgid="780477838241212997">"Դատարկ SD քարտ"</string>
- <string name="ext_media_nofs_notification_message" product="nosdcard" msgid="7840121067427269500">"USB կրիչը դատարկ է կամ ունի չաջակցվող ֆայլային համակարգ:"</string>
- <string name="ext_media_nofs_notification_message" product="default" msgid="8641065641786923604">"SD քարտը դատարկ է կամ ունի չաջակցվող ֆայլային համակարգ:"</string>
- <string name="ext_media_unmountable_notification_title" product="nosdcard" msgid="2090046769532713563">"Վնասված USB կրիչ"</string>
- <string name="ext_media_unmountable_notification_title" product="default" msgid="6410723906019100189">"Վնասված SD քարտ"</string>
- <string name="ext_media_unmountable_notification_message" product="nosdcard" msgid="1795917578395333280">"USB կրիչը վնասված է: Փորձեք վերաֆորմատավորել այն:"</string>
- <string name="ext_media_unmountable_notification_message" product="default" msgid="1753898567525568253">"SD քարտը վնասված է: Փորձեք վերաֆորմատավորել այն:"</string>
- <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"USB կրիչն անսպասելիորեն հեռացվել է"</string>
- <string name="ext_media_badremoval_notification_title" product="default" msgid="6872152882604407837">"SD քարտը անսպասելիորեն հեռացվել է"</string>
- <string name="ext_media_badremoval_notification_message" product="nosdcard" msgid="4329848819865594241">"Անջատել USB կրիչը հեռացնելուց առաջ` տվյալների կորստից խուսափելու համար:"</string>
- <string name="ext_media_badremoval_notification_message" product="default" msgid="7260183293747448241">"Անջատել SD քարտը հեռացնելուց առաջ` տվյալների կորստից խուսափելու համար:"</string>
- <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"USB կրիչը կարող է անվտանգ հեռացվել"</string>
- <string name="ext_media_safe_unmount_notification_title" product="default" msgid="6729801130790616200">"SD քարտն անվտանգ է հեռացման համար"</string>
- <string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"Դուք կարող եք ապահով հեռացնել USB կրիչը:"</string>
- <string name="ext_media_safe_unmount_notification_message" product="default" msgid="568841278138377604">"Դուք կարող եք անվտանգ հեռացնել SD քարտը:"</string>
- <string name="ext_media_nomedia_notification_title" product="nosdcard" msgid="4486377230140227651">"USB կրիչը հեռացված է"</string>
- <string name="ext_media_nomedia_notification_title" product="default" msgid="8902518030404381318">"SD քարտը հեռացված է"</string>
- <string name="ext_media_nomedia_notification_message" product="nosdcard" msgid="6921126162580574143">"USB կրիչը հեռացված է: Մտցրեք նոր կրիչ:"</string>
- <string name="ext_media_nomedia_notification_message" product="default" msgid="3870120652983659641">"SD քարտը հեռացված է: Տեղադրեք նորը:"</string>
- <string name="activity_list_empty" msgid="1675388330786841066">"Համընկնող գործունեություններ չգտնվեցին:"</string>
- <string name="permlab_pkgUsageStats" msgid="8787352074326748892">"թարմացնել բաղադրիչի օգտագործման վիճակագրությունը"</string>
- <string name="permdesc_pkgUsageStats" msgid="1106612424254277630">"Թույլ է տալիս հավելվածին փոփոխել հավաքագրված բաղադրիչի վիճակագրությունը: Սովորական հավելվածների օգտագործման համար չէ:"</string>
- <string name="permlab_copyProtectedData" msgid="4341036311211406692">"պատճենել բովանդակությունը"</string>
- <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Թույլ է տալիս հայցել լռելյայն զետեղարանի ծառայությունը` բովանդակությունը պատճենելու համար: Սովորական հավելվածների օգտագործման համար չէ:"</string>
- <string name="permlab_route_media_output" msgid="1642024455750414694">"Երթուղել մեդիա արտածումը"</string>
- <string name="permdesc_route_media_output" msgid="4932818749547244346">"Թույլ է տալիս հավելվածին մեդիա արտածումը երթուղել այլ արտաքին սարքեր:"</string>
- <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Մուտք գործել ստեղնակողպեքով պաշտպանված պահոց"</string>
- <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Թույլ է տալիս հավելվածին մուտք գործել ստեղնակողպեքով պաշտպանված պահոց:"</string>
- <string name="permlab_control_keyguard" msgid="172195184207828387">"Կառավարել ստեղնակողպեքի ցուցադրումը և թաքցնումը"</string>
- <string name="permdesc_control_keyguard" msgid="3043732290518629061">"Թույլ է տալիս հավելվածին կառավարել ստեղնաշարի պաշտպանիչը:"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Հպեք երկու անգամ` դիտափոխման կարգավորման համար"</string>
- <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Չհաջողվեց վիջեթ ավելացնել:"</string>
- <string name="ime_action_go" msgid="8320845651737369027">"Առաջ"</string>
- <string name="ime_action_search" msgid="658110271822807811">"Որոնել"</string>
- <string name="ime_action_send" msgid="2316166556349314424">"Ուղարկել"</string>
- <string name="ime_action_next" msgid="3138843904009813834">"Հաջորդը"</string>
- <string name="ime_action_done" msgid="8971516117910934605">"Կատարված է"</string>
- <string name="ime_action_previous" msgid="1443550039250105948">"Նախորդ"</string>
- <string name="ime_action_default" msgid="2840921885558045721">"Կատարել"</string>
- <string name="dial_number_using" msgid="5789176425167573586">"Հավաքել հեռախոսահամարը`\nօգտագործելով <xliff:g id="NUMBER">%s</xliff:g>-ը"</string>
- <string name="create_contact_using" msgid="4947405226788104538">"Ստեղծել կոնտակտ`\nօգտագործելով <xliff:g id="NUMBER">%s</xliff:g>-ը"</string>
- <string name="grant_credentials_permission_message_header" msgid="2106103817937859662">"Հետևյալ մեկ կամ ավել հավելվածներ մուտքի թույլտվության հարցում են անում` այժմ և հետագայում ձեր հաշվին մուտք ունենալու համար:"</string>
- <string name="grant_credentials_permission_message_footer" msgid="3125211343379376561">"Ցանկանու՞մ եք թույլատրել այս հարցումը:"</string>
- <string name="grant_permissions_header_text" msgid="6874497408201826708">"Մուտքի հարցում"</string>
- <string name="allow" msgid="7225948811296386551">"Թույլատրել"</string>
- <string name="deny" msgid="2081879885755434506">"Մերժել"</string>
- <string name="permission_request_notification_title" msgid="6486759795926237907">"Թույլտվության հարցում է արված"</string>
- <string name="permission_request_notification_with_subtitle" msgid="8530393139639560189">"Թույլտվության հարցում է արված\n<xliff:g id="ACCOUNT">%s</xliff:g> հաշվի համար:"</string>
- <string name="input_method_binding_label" msgid="1283557179944992649">"Ներածման եղանակը"</string>
- <string name="sync_binding_label" msgid="3687969138375092423">"Համաժամել"</string>
- <string name="accessibility_binding_label" msgid="4148120742096474641">"Մատչելիությունը"</string>
- <string name="wallpaper_binding_label" msgid="1240087844304687662">"Պաստառ"</string>
- <string name="chooser_wallpaper" msgid="7873476199295190279">"Փոխել պաստառը"</string>
- <string name="notification_listener_binding_label" msgid="2014162835481906429">"Ծանուցման ունկնդիր"</string>
- <string name="vpn_title" msgid="19615213552042827">"VPN-ը ակտիվացված է"</string>
- <string name="vpn_title_long" msgid="6400714798049252294">"VPN-ն ակտիվացված է <xliff:g id="APP">%s</xliff:g>-ի կողմից"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Հպեք` ցանցի կառավարման համար:"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"Միացված է <xliff:g id="SESSION">%s</xliff:g>-ին: Հպեք` ցանցը կառավարելու համար:"</string>
- <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>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Հպեք կարգավորելու համար"</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>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Հպեք` մեքենայի ռեժիմից դուրս գալու համար:"</string>
- <string name="tethered_notification_title" msgid="3146694234398202601">"Մուտքը կամ թեժ կետը ակտիվ է"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Հպեք կարգավորելու համար:"</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>
- <string name="throttle_warning_notification_title" msgid="4890894267454867276">"Շարժական տվյալների օգտագործման բարձր մակարդակ"</string>
- <string name="throttle_warning_notification_message" msgid="3340822228599337743">"Հպեք` շարժական տվյալների օգտագործման մասին ավելին իմանալու համար:"</string>
- <string name="throttled_notification_title" msgid="6269541897729781332">"Շարժական տվյալների սահմանը գերազանցված է"</string>
- <string name="throttled_notification_message" msgid="5443457321354907181">"Հպել` շարժական տվյալների օգտագործման մասին ավելին իմանալու համար:"</string>
- <string name="no_matches" msgid="8129421908915840737">"Համընկնում չկա"</string>
- <string name="find_on_page" msgid="1946799233822820384">"Գտեք էջում"</string>
- <plurals name="matches_found">
- <item quantity="one" msgid="8167147081136579439">"1 համընկնում"</item>
- <item quantity="other" msgid="4641872797067609177">"<xliff:g id="TOTAL">%d</xliff:g>-ից <xliff:g id="INDEX">%d</xliff:g>-ը"</item>
- </plurals>
- <string name="action_mode_done" msgid="7217581640461922289">"Կատարված է"</string>
- <string name="progress_unmounting" product="nosdcard" msgid="3923810448507612746">"Անջատվում է USB կրիչը..."</string>
- <string name="progress_unmounting" product="default" msgid="1327894998409537190">"Անջատում է SD քարտը..."</string>
- <string name="progress_erasing" product="nosdcard" msgid="4521573321524340058">"Ջնջում է USB կրիչը..."</string>
- <string name="progress_erasing" product="default" msgid="6596988875507043042">"Ջնջում է SD քարտը..."</string>
- <string name="format_error" product="nosdcard" msgid="6299769563624776948">"Չհաջողվեց ջնջել USB կրիչը:"</string>
- <string name="format_error" product="default" msgid="7315248696644510935">"SD քարտը չհաջողվեց ջնջել:"</string>
- <string name="media_bad_removal" msgid="7960864061016603281">"SD քարտը հեռացվել է նախքան անջատելը:"</string>
- <string name="media_checking" product="nosdcard" msgid="418188720009569693">"USB կրիչն այժմ ստուգվում է:"</string>
- <string name="media_checking" product="default" msgid="7334762503904827481">"SD քարտը այժմ ստուգվում է:"</string>
- <string name="media_removed" msgid="7001526905057952097">"SD քարտը հեռացվել է:"</string>
- <string name="media_shared" product="nosdcard" msgid="5830814349250834225">"USB կրիչն այժմ օգտագործվում է համակարգչի կողմից:"</string>
- <string name="media_shared" product="default" msgid="5706130568133540435">"SD քարտն այժմ օգտագործվում է համակարգչի կողմից:"</string>
- <string name="media_unknown_state" msgid="729192782197290385">"Արտաքին մեդիան անհայտ է վիճակում է:"</string>
- <string name="share" msgid="1778686618230011964">"Տարածել"</string>
- <string name="find" msgid="4808270900322985960">"Գտնել"</string>
- <string name="websearch" msgid="4337157977400211589">"Վեբի որոնում"</string>
- <string name="find_next" msgid="5742124618942193978">"Գտնել հաջորդը"</string>
- <string name="find_previous" msgid="2196723669388360506">"Գտնել նախորդը"</string>
- <string name="gpsNotifTicker" msgid="5622683912616496172">"Տեղադրության հարցում <xliff:g id="NAME">%s</xliff:g>-ից"</string>
- <string name="gpsNotifTitle" msgid="5446858717157416839">"Տեղադրության հարցում"</string>
- <string name="gpsNotifMessage" msgid="1374718023224000702">"<xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)-ի հարցմամբ"</string>
- <string name="gpsVerifYes" msgid="2346566072867213563">"Այո"</string>
- <string name="gpsVerifNo" msgid="1146564937346454865">"Ոչ"</string>
- <string name="sync_too_many_deletes" msgid="5296321850662746890">"Ջնջելու սահմանը գերազանցվել է"</string>
- <string name="sync_too_many_deletes_desc" msgid="496551671008694245">"<xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> ջնջված տարր կա <xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g>-ի համար, <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g>-ի հաշիվ: Ի՞նչ եք ցանկանում անել:"</string>
- <string name="sync_really_delete" msgid="2572600103122596243">"Ջնջել տարրերը"</string>
- <string name="sync_undo_deletes" msgid="2941317360600338602">"Հետարկել ջնջումները"</string>
- <string name="sync_do_nothing" msgid="3743764740430821845">"Առայժմ ոչինչ չանեք"</string>
- <string name="choose_account_label" msgid="5655203089746423927">"Ընտրել հաշիվը"</string>
- <string name="add_account_label" msgid="2935267344849993553">"Ավելացնել հաշիվ"</string>
- <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>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<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>
- <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Աճեցնել ժամը"</string>
- <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Նվազեցնել ժամը"</string>
- <string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Դնել PM"</string>
- <string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Դնել AM"</string>
- <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Աճեցնել ամիսը"</string>
- <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Նվազեցնել ամիսը"</string>
- <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Աճեցնել օրը"</string>
- <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Նվազեցնել օրը"</string>
- <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Աճեցնել տարին"</string>
- <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Նվազեցնել տարին"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Չեղարկել"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Ջնջել"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Կատարված է"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Ռեժիմի փոփոխում"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Մուտք"</string>
- <string name="activitychooserview_choose_application" msgid="2125168057199941199">"Ընտրել ծրագիր"</string>
- <string name="shareactionprovider_share_with" msgid="806688056141131819">"Տարածել"</string>
- <string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Համօգտագործել <xliff:g id="APPLICATION_NAME">%s</xliff:g>-ի հետ"</string>
- <string name="content_description_sliding_handle" msgid="415975056159262248">"Սահող բռնակ: Հպել &amp; պահել:"</string>
- <string name="description_direction_up" msgid="7169032478259485180">"Սահեցրեք վերև <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-ի համար:"</string>
- <string name="description_direction_down" msgid="5087739728639014595">"Սահեցրեք ցած <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-ի համար:"</string>
- <string name="description_direction_left" msgid="7207478719805562165">"Սահեցրեք ձախ` <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-ի համար:"</string>
- <string name="description_direction_right" msgid="8034433242579600980">"Սահեցրեք աջ` <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-ի համար:"</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"Ապակողպել"</string>
- <string name="description_target_camera" msgid="969071997552486814">"Ֆոտոխցիկ"</string>
- <string name="description_target_silent" msgid="893551287746522182">"Լուռ"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"Ձայնը միացնել"</string>
- <string name="description_target_search" msgid="3091587249776033139">"Որոնել"</string>
- <string name="description_target_unlock_tablet" msgid="3833195335629795055">"Սահեցրեք` ապակողպելու համար:"</string>
- <string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Միացրեք ականջակալները` արտասանվող գաղտնաբառը լսելու համար:"</string>
- <string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Կետ:"</string>
- <string name="action_bar_home_description" msgid="5293600496601490216">"Ուղղվել տուն"</string>
- <string name="action_bar_up_description" msgid="2237496562952152589">"Ուղղվել վերև"</string>
- <string name="action_menu_overflow_description" msgid="2295659037509008453">"Ավելի շատ ընտրանքներ"</string>
- <string name="action_bar_home_description_format" msgid="7965984360903693903">"%1$s, %2$s"</string>
- <string name="action_bar_home_subtitle_description_format" msgid="6985546530471780727">"%1$s, %2$s, %3$s"</string>
- <string name="storage_internal" msgid="4891916833657929263">"Ներքին պահոց"</string>
- <string name="storage_sd_card" msgid="3282948861378286745">"SD քարտ"</string>
- <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>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Հպեք` օգտագործումը և կարգավորումները տեսնելու համար:"</string>
- <string name="data_usage_3g_limit_title" msgid="7093334419518706686">"2G-3G տվյալները կասեցված են"</string>
- <string name="data_usage_4g_limit_title" msgid="7636489436819470761">"4G տվյալները անջատված են"</string>
- <string name="data_usage_mobile_limit_title" msgid="7869402519391631884">"Շարժական տվյալները կասեցված են"</string>
- <string name="data_usage_wifi_limit_title" msgid="8992154736441284865">"Wi-Fi տվյալները անջատված են"</string>
- <string name="data_usage_limit_body" msgid="3317964706973601386">"Հպեք` միացնելու համար:"</string>
- <string name="data_usage_3g_limit_snoozed_title" msgid="7026739121138005231">"2G-3G տվյալների սահմանը գերազանցված է"</string>
- <string name="data_usage_4g_limit_snoozed_title" msgid="1106562779311209039">"4G տվյալների սահմանը գերազանցվել է"</string>
- <string name="data_usage_mobile_limit_snoozed_title" msgid="279240572165412168">"Շարժական տվյալների սահմանը գերազանցվել է"</string>
- <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>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Հպեք` սահմանափակումը հեռացնելու համար:"</string>
- <string name="ssl_certificate" msgid="6510040486049237639">"Անվտանգության վկայական"</string>
- <string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Այս վկայականը վավեր է:"</string>
- <string name="issued_to" msgid="454239480274921032">"Թողարկվել է`"</string>
- <string name="common_name" msgid="2233209299434172646">"Ընդհանուր անունը`"</string>
- <string name="org_name" msgid="6973561190762085236">"Կազմակերպություն`"</string>
- <string name="org_unit" msgid="7265981890422070383">"Կազմակերպական միավոր`"</string>
- <string name="issued_by" msgid="2647584988057481566">"Թողարկվել է`"</string>
- <string name="validity_period" msgid="8818886137545983110">"Վավերականություն`"</string>
- <string name="issued_on" msgid="5895017404361397232">"Թողարկվել է`"</string>
- <string name="expires_on" msgid="3676242949915959821">"Սպառվում է`"</string>
- <string name="serial_number" msgid="758814067660862493">"Հերթական համարը`"</string>
- <string name="fingerprints" msgid="4516019619850763049">"Մատնահետքերը`"</string>
- <string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-256 մատնահետք`"</string>
- <string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1մատնահետք`"</string>
- <string name="activity_chooser_view_see_all" msgid="4292569383976636200">"Տեսնել բոլորը"</string>
- <string name="activity_chooser_view_dialog_title_default" msgid="4710013864974040615">"Ընտրել գործունեությունը"</string>
- <string name="share_action_provider_share_with" msgid="5247684435979149216">"Տարածել"</string>
- <string name="status_bar_device_locked" msgid="3092703448690669768">"Սարքը կողպված է:"</string>
- <string name="list_delimeter" msgid="3975117572185494152">", "</string>
- <string name="sending" msgid="3245653681008218030">"Ուղարկվում է..."</string>
- <string name="launchBrowserDefault" msgid="2057951947297614725">"Գործարկե՞լ զննարկիչը:"</string>
- <string name="SetupCallDefault" msgid="5834948469253758575">"Ընդունե՞լ զանգը:"</string>
- <string name="activity_resolver_use_always" msgid="8017770747801494933">"Միշտ"</string>
- <string name="activity_resolver_use_once" msgid="2404644797149173758">"Միայն մեկ անգամ"</string>
- <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Գրասալիկ"</string>
- <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Հեռախոս"</string>
- <string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Ականջակալներ"</string>
- <string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Համակցված բարձրախոսներ"</string>
- <string name="default_media_route_name_hdmi" msgid="2450970399023478055">"HDMI"</string>
- <string name="default_audio_route_category_name" msgid="3722811174003886946">"Համակարգ"</string>
- <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth-ի ձայնանյութ"</string>
- <string name="wireless_display_route_description" msgid="9070346425023979651">"Անլար էկրան"</string>
- <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Կատարված է"</string>
- <string name="media_route_button_content_description" msgid="5758553567065145276">"Մեդիա արտածում"</string>
- <string name="media_route_status_scanning" msgid="7279908761758293783">"Սկանավորում..."</string>
- <string name="media_route_status_connecting" msgid="6422571716007825440">"Միանում է..."</string>
- <string name="media_route_status_available" msgid="6983258067194649391">"Հասանելի է"</string>
- <string name="media_route_status_not_available" msgid="6739899962681886401">"Հասանելի չէ"</string>
- <string name="media_route_status_in_use" msgid="4533786031090198063">"Զբաղեցված է"</string>
- <string name="display_manager_built_in_display_name" msgid="2583134294292563941">"Ներկառուցված էկրան"</string>
- <string name="display_manager_hdmi_display_name" msgid="1555264559227470109">"HDMI էկրան"</string>
- <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Վերածածկ #<xliff:g id="ID">%1$d</xliff:g>"</string>
- <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>. <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> կմվ"</string>
- <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", անվտանգ"</string>
- <string name="wifi_display_notification_title" msgid="2223050649240326557">"Անլար ցուցադրումը կապակցված է"</string>
- <string name="wifi_display_notification_message" msgid="4498802012464170685">"Այս էկրանը ցուցադրվում է այլ սարքում"</string>
- <string name="wifi_display_notification_disconnect" msgid="6183754463561153372">"Անջատել"</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"Արտակարգ իրավիճակի հեռախոսազանգ"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Մոռացել եմ սխեման"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"Սխալ սխեմա"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"Սխալ գաղտնաբառ"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"Սխալ PIN"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Փորձեք կրկին <xliff:g id="NUMBER">%1$d</xliff:g> վայրկյանից:"</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"Հավաքեք ձեր սխեման"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Մուտքագրեք SIM-ի PIN-ը"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"Մուտքագրեք PIN-ը"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"Մուտքագրեք գաղտնաբառը"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM-ը այս պահին անջատված է: Մուտքագրեք PUK կոդը շարունակելու համար: Մանրամասների համար կապվեք օպերատորի հետ:"</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Մուտքագրեք ցանկալի PIN ծածկագիրը"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Հաստատեք ցանկալի PIN ծածկագիրը"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Ապակողպում է SIM քարտը ..."</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Սխալ PIN ծածկագիր:"</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Մուտքագրեք PIN, որը 4-ից 8 թիվ է:"</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK կոդը պետք է լինի 8 կամ ավելի թիվ:"</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"Վերամուտքագրեք ճիշտ PUK ծածկագիրը: Կրկնվող փորձերը ընդմիշտ կկասեցնեն SIM քարտը:"</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN ծածկագրերը չեն համընկնում"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Չափից շատ սխեմայի փորձեր"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"Ապակողպելու համար` մուտք գործեք ձեր Google հաշվով:"</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"Օգտանուն (էլփոստ)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"Գաղտնաբառը"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"Մուտք գործել"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"Սխալ օգտանուն կամ գաղտնաբառ:"</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Մոռացե՞լ եք ձեր օգտանունը կամ գաղտնաբառը:\nԱյցելեք "<b>"google.com /accounts/recovery"</b>":"</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"Հաշիվը ստուգվում է..."</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Դուք <xliff:g id="NUMBER_0">%d</xliff:g> անգամ սխալ եք մուտքագրել ձեր PIN-ը: \n\nՓորձեք կրկին <xliff:g id="NUMBER_1">%d</xliff:g> վայրկյանից:"</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Դուք սխալ եք մուտքագրել ձեր գաղտնաբառը <xliff:g id="NUMBER_0">%d</xliff:g> անգամ: \n\nՓորձեք կրկին <xliff:g id="NUMBER_1">%d</xliff:g> վայրկյանից:"</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Դուք <xliff:g id="NUMBER_0">%d</xliff:g> անգամ սխալ եք հավաքել ձեր ապակողպման սխեման: \n\nՓորձեք կրկին <xliff:g id="NUMBER_1">%d</xliff:g> վայրկյանից:"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Դուք <xliff:g id="NUMBER_0">%d</xliff:g> անգամ սխալ փորձ եք արել գրասալիկն ապակողպելու համար: <xliff:g id="NUMBER_1">%d</xliff:g> անգամից ավել անհաջող փորձերից հետո գրասալիկը կվերակարգավորվի գործարանային լռելյայնի, և օգտվողի բոլոր տվյալները կկորեն:"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Դուք <xliff:g id="NUMBER_0">%d</xliff:g> անգամ սխալ փորձ եք արել հեռախոսն ապակողպելու համար: <xliff:g id="NUMBER_1">%d</xliff:g> անգամից ավել անհաջող փորձերից հետո հեռախոսը կվերակարգավորվի գործարանային լռելյայնի, և օգտվողի բոլոր տվյալները կկորեն:"</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Դուք <xliff:g id="NUMBER">%d</xliff:g> անգամ սխալ փորձ եք արել գրասալիկն ապակողպելու համար: Գրասալիկն այժմ կվերակարգավորվի գործարանային լռելյայնի:"</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Դուք <xliff:g id="NUMBER">%d</xliff:g> անգամ սխալ փորձ եք արել հեռախոսն ապակողպելու համար: Հեռախոսն այժմ կվերակարգավորվի գործարանային լռելյայնի:"</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Դուք սխալ եք հավաքել ձեր ապակողպման սխեման <xliff:g id="NUMBER_0">%d</xliff:g> անգամ: Եվս <xliff:g id="NUMBER_1">%d</xliff:g> անհաջող փորձից հետո ձեզանից կպահանջվի ապակողպել ձեր գրասալիկը` օգտագործելով էլփոստի հաշիվ:\n\n Փորձեք կրկին <xliff:g id="NUMBER_2">%d</xliff:g> վայրկյանից:"</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Դուք <xliff:g id="NUMBER_0">%d</xliff:g> անգամ սխալ եք հավաքել ձեր ապակողպման նմուշը: <xliff:g id="NUMBER_1">%d</xliff:g> անգամից ավել անհաջող փորձերից հետո ձեզ կառաջարկվի ապակողպել ձեր հեռախոսը` օգտագործելով էլփոստի հաշիվ:\n\n Փորձեք կրկին <xliff:g id="NUMBER_2">%d</xliff:g> վայրկյանից:"</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Հեռացնել"</string>
- <string name="safe_media_volume_warning" product="default" msgid="7324161939475478066">"Բարձրացնե՞լ ձայնը առաջարկվող շեմից բարձր:\nԵրկար ժամանակ բարձրաձայն լսելը կարող է վնասել ձեր լսողությունը:"</string>
- <string name="continue_to_enable_accessibility" msgid="1626427372316070258">"Սեղմած պահեք երկու մատները` մատչելիությունը միացնելու համար:"</string>
- <string name="accessibility_enabled" msgid="1381972048564547685">"Մատչելիությունը միացված է:"</string>
- <string name="enable_accessibility_canceled" msgid="3833923257966635673">"Մուտքի հնարավորությունը չեղարկված է:"</string>
- <string name="user_switched" msgid="3768006783166984410">"Ներկայիս օգտվողը <xliff:g id="NAME">%1$s</xliff:g>:"</string>
- <string name="owner_name" msgid="2716755460376028154">"Սեփականատեր"</string>
- <string name="error_message_title" msgid="4510373083082500195">"Սխալ"</string>
- <string name="app_no_restricted_accounts" msgid="5739463249673727736">"Այս ծրագիրը չի աջակցում սահմանափակված պրոֆիլների հաշիվներ:"</string>
- <string name="app_not_found" msgid="3429141853498927379">"Այս գործողությունը կատարելու համար ոչ մի ծրագիր չի գտնվել:"</string>
- <string name="revoke" msgid="5404479185228271586">"Չեղարկել"</string>
- <string name="mediaSize_iso_a0" msgid="7875427489420821793">"ISO A0"</string>
- <string name="mediaSize_iso_a1" msgid="3760734499050875356">"ISO A1"</string>
- <string name="mediaSize_iso_a2" msgid="5973266378020144382">"ISO A2"</string>
- <string name="mediaSize_iso_a3" msgid="1373407105687300884">"ISO A3"</string>
- <string name="mediaSize_iso_a4" msgid="6689772807982597254">"ISO A4"</string>
- <string name="mediaSize_iso_a5" msgid="5353549652015741040">"ISO A5"</string>
- <string name="mediaSize_iso_a6" msgid="8585038048674911907">"ISO A6"</string>
- <string name="mediaSize_iso_a7" msgid="6641836716963839119">"ISO A7"</string>
- <string name="mediaSize_iso_a8" msgid="7571139437465693355">"ISO A8"</string>
- <string name="mediaSize_iso_a9" msgid="1378455891957115079">"ISO A9"</string>
- <string name="mediaSize_iso_a10" msgid="2480747457429475344">"ISO A10"</string>
- <string name="mediaSize_iso_b0" msgid="3965935097661108039">"ISO B0"</string>
- <string name="mediaSize_iso_b1" msgid="2505753285010115437">"ISO B1"</string>
- <string name="mediaSize_iso_b2" msgid="8763874709859458453">"ISO B2"</string>
- <string name="mediaSize_iso_b3" msgid="4210506688191764076">"ISO B3"</string>
- <string name="mediaSize_iso_b4" msgid="5749404165888526034">"ISO B4"</string>
- <string name="mediaSize_iso_b5" msgid="7640627414621904733">"ISO B5"</string>
- <string name="mediaSize_iso_b6" msgid="7342988864712748544">"ISO B6"</string>
- <string name="mediaSize_iso_b7" msgid="5069844065235382429">"ISO B7"</string>
- <string name="mediaSize_iso_b8" msgid="7316818922278779774">"ISO B8"</string>
- <string name="mediaSize_iso_b9" msgid="5414727094026532341">"ISO B9"</string>
- <string name="mediaSize_iso_b10" msgid="5251253731832048185">"ISO B10"</string>
- <string name="mediaSize_iso_c0" msgid="4003138342671964217">"ISO C0"</string>
- <string name="mediaSize_iso_c1" msgid="1935188063393553008">"ISO C1"</string>
- <string name="mediaSize_iso_c2" msgid="3197307969712069904">"ISO C2"</string>
- <string name="mediaSize_iso_c3" msgid="4335826087321913508">"ISO C3"</string>
- <string name="mediaSize_iso_c4" msgid="3745639598281015005">"ISO C4"</string>
- <string name="mediaSize_iso_c5" msgid="8269457765822791013">"ISO C5"</string>
- <string name="mediaSize_iso_c6" msgid="566666105260346930">"ISO C6"</string>
- <string name="mediaSize_iso_c7" msgid="8678413180782608498">"ISO C7"</string>
- <string name="mediaSize_iso_c8" msgid="8392376206627041730">"ISO C8"</string>
- <string name="mediaSize_iso_c9" msgid="9191613372324845405">"ISO C9"</string>
- <string name="mediaSize_iso_c10" msgid="7327709699184920822">"ISO C10"</string>
- <string name="mediaSize_na_letter" msgid="4191805615829472953">"Letter"</string>
- <string name="mediaSize_na_gvrnmt_letter" msgid="7853382192649405507">"Government Letter"</string>
- <string name="mediaSize_na_legal" msgid="6697982988283823150">"Legal"</string>
- <string name="mediaSize_na_junior_legal" msgid="3727743969902758948">"Junior Legal"</string>
- <string name="mediaSize_na_ledger" msgid="281871464896601236">"Ledger"</string>
- <string name="mediaSize_na_tabloid" msgid="5775966416333578127">"Tabloid"</string>
- <string name="write_fail_reason_cancelled" msgid="7091258378121627624">"Չեղարկված է"</string>
- <string name="write_fail_reason_cannot_write" msgid="8132505417935337724">"Բովանդակության գրելու սխալ"</string>
- <string name="restr_pin_enter_pin" msgid="3395953421368476103">"Մուտքագրեք PIN-ը"</string>
- <string name="restr_pin_enter_old_pin" msgid="1462206225512910757">"Ընթացիկ PIN"</string>
- <string name="restr_pin_enter_new_pin" msgid="5959606691619959184">"Նոր PIN"</string>
- <string name="restr_pin_confirm_pin" msgid="8501523829633146239">"Հաստատեք նոր PIN-ը"</string>
- <string name="restr_pin_create_pin" msgid="8017600000263450337">"Ստեղծել PIN՝ սահմանափակումները փոփոխելու համար"</string>
- <string name="restr_pin_error_doesnt_match" msgid="2224214190906994548">"PIN-երը չեն համընկնում: Փորձեք կրկին:"</string>
- <string name="restr_pin_error_too_short" msgid="8173982756265777792">"PIN-ը չափազանց կարճ է: Պետք է ունենա առնվազն 4 թվանիշ:"</string>
- <plurals name="restr_pin_countdown">
- <item quantity="one" msgid="4835639969503729874">"PIN-ը սխալ է: Փորձեք կրկին 1 վայրկյանից:"</item>
- <item quantity="other" msgid="8030607343223287654">"PIN-ը սխալ է: Փորձեք կրկին <xliff:g id="COUNT">%d</xliff:g> վայրկյանից:"</item>
- </plurals>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Սահեցրեք էկրանի եզրով՝ գոտին բացելու համար"</string>
-</resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 9a1c641178f6..417c18ed99e6 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Coba <xliff:g id="COUNT">%d</xliff:g> detik lagi"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Coba lagi nanti"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Gesek ke bawah untuk keluar dari layar penuh"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Gesek ke bawah untuk keluar dari layar penuh"</string>
</resources>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index b05046b8200f..d2dbfc3e5abb 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Riprova tra <xliff:g id="COUNT">%d</xliff:g> s."</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Riprova più tardi"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Uscita schermo intero: scorri in basso da alto"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Scorri dall\'alto verso il basso per uscire dalla modalità schermo intero."</string>
</resources>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index bef33863a73b..51f3889f8678 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"נסה שוב בעוד <xliff:g id="COUNT">%d</xliff:g> שניות"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"נסה שוב מאוחר יותר"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"החלק מטה מהחלק העליון כדי לצאת ממסך מלא"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"החלק מטה מהחלק העליון כדי לצאת ממסך מלא."</string>
</resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 634ca2c0ed92..246a82e3fb12 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"<xliff:g id="COUNT">%d</xliff:g>秒後に再試行"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"しばらくしてから再試行"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"全画面表示を終了するには、上から下にスワイプ"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"全画面表示を終了するには、上から下にスワイプ"</string>
</resources>
diff --git a/core/res/res/values-ka-rGE/strings.xml b/core/res/res/values-ka-rGE/strings.xml
index b3e7c7da26f6..a8025d895b3e 100644
--- a/core/res/res/values-ka-rGE/strings.xml
+++ b/core/res/res/values-ka-rGE/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"კიდევ ერთხელ სცადეთ <xliff:g id="COUNT">%d</xliff:g> წამში"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"სცადეთ მოგვიანებით"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"ჩამოასრიალეთ ზევიდან სრული ეკრანის დასახურად"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"ჩამოასრიალეთ ზევიდან სრული ეკრანის დასახურად"</string>
</resources>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
deleted file mode 100644
index a7c16ed0bd9e..000000000000
--- a/core/res/res/values-ka/strings.xml
+++ /dev/null
@@ -1,1587 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="byteShort" msgid="8340973892742019101">"B"</string>
- <string name="kilobyteShort" msgid="5973789783504771878">"კბაიტი"</string>
- <string name="megabyteShort" msgid="6355851576770428922">"მბაიტი"</string>
- <string name="gigabyteShort" msgid="3259882455212193214">"გბაიტი"</string>
- <string name="terabyteShort" msgid="231613018159186962">"ტბაიტი"</string>
- <string name="petabyteShort" msgid="5637816680144990219">"PB"</string>
- <string name="fileSizeSuffix" msgid="9164292791500531949">"<xliff:g id="NUMBER">%1$s</xliff:g><xliff:g id="UNIT">%2$s</xliff:g>"</string>
- <string name="untitled" msgid="4638956954852782576">"უსათაურო"</string>
- <string name="ellipsis" msgid="7899829516048813237">"…"</string>
- <string name="ellipsis_two_dots" msgid="1228078994866030736">"‥"</string>
- <string name="emptyPhoneNumber" msgid="7694063042079676517">"(ტელეფონის ნომრის გარეშე)"</string>
- <string name="unknownName" msgid="2277556546742746522">"უცნობი"</string>
- <string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"ხმოვანი ფოსტა"</string>
- <string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN1"</string>
- <string name="mmiError" msgid="5154499457739052907">"კავშირის პრობლემა ან არასწორი MMI კოდი."</string>
- <string name="mmiFdnError" msgid="5224398216385316471">"ოპერაცია შეზღუდულია მხოლოდ დაშვებულ ნომრებზე."</string>
- <string name="serviceEnabled" msgid="8147278346414714315">"სერვისი ჩართულია."</string>
- <string name="serviceEnabledFor" msgid="6856228140453471041">"სერვისი ჩართულია შემდეგისთვის:"</string>
- <string name="serviceDisabled" msgid="1937553226592516411">"სერვისი გამორთულია."</string>
- <string name="serviceRegistered" msgid="6275019082598102493">"რეგისტრაცია წარმატებით განხორციელდა."</string>
- <string name="serviceErased" msgid="1288584695297200972">"წაშლა წარმატებით განხორციელდა."</string>
- <string name="passwordIncorrect" msgid="7612208839450128715">"პაროლი არასწორია"</string>
- <string name="mmiComplete" msgid="8232527495411698359">"MMI დასრულდა."</string>
- <string name="badPin" msgid="9015277645546710014">"თქვენ მიერ შეყვანილი ძველი პინ-კოდი არასწორია."</string>
- <string name="badPuk" msgid="5487257647081132201">"თქვენ მიერ შეყვანილი PUK კოდი არასწორია."</string>
- <string name="mismatchPin" msgid="609379054496863419">"თქვენ მიერ შეყვანილი PIN კოდები არ შეესატყვისება."</string>
- <string name="invalidPin" msgid="3850018445187475377">"აკრიფეთ PIN, რომელიც შედგება 4-დან 8 ციფრამდე."</string>
- <string name="invalidPuk" msgid="8761456210898036513">"აკრიფეთ PUK, რომელიც რვა ან მეტი ციფრისგან შედგება."</string>
- <string name="needPuk" msgid="919668385956251611">"თქვენი SIM ბარათი დაბლოკილია PUK კოდით. განბლოკვისთვის შეიყვანეთ PUK კოდი."</string>
- <string name="needPuk2" msgid="4526033371987193070">"SIM ბარათის განსაბლოკად აკრიფეთ PUK2."</string>
- <string name="imei" msgid="2625429890869005782">"IMEI"</string>
- <string name="meid" msgid="4841221237681254195">"MEID"</string>
- <string name="ClipMmi" msgid="6952821216480289285">"შემომავალი ზარის აბონენტის ID"</string>
- <string name="ClirMmi" msgid="7784673673446833091">"გამავალი მრეკავის ID"</string>
- <string name="CfMmi" msgid="5123218989141573515">"ზარის გადამისამართება"</string>
- <string name="CwMmi" msgid="9129678056795016867">"ზარის ლოდინი"</string>
- <string name="BaMmi" msgid="455193067926770581">"ზარის აკრძალვა"</string>
- <string name="PwdMmi" msgid="7043715687905254199">"პაროლის შეცვლა"</string>
- <string name="PinMmi" msgid="3113117780361190304">"PIN-ის შეცვლა"</string>
- <string name="CnipMmi" msgid="3110534680557857162">"გამომძახებლის ნომერი წარმოდგენილია"</string>
- <string name="CnirMmi" msgid="3062102121430548731">"შემოსული ზარი შეზღუდულია"</string>
- <string name="ThreeWCMmi" msgid="9051047170321190368">"დარეკვის სამი გზა"</string>
- <string name="RuacMmi" msgid="7827887459138308886">"არასასურველი მომაბეზრებელი ზარების უარყოფა"</string>
- <string name="CndMmi" msgid="3116446237081575808">"დამრეკავი ნომრის მოწოდება"</string>
- <string name="DndMmi" msgid="1265478932418334331">"არ შემაწუხოთ"</string>
- <string name="CLIRDefaultOnNextCallOn" msgid="429415409145781923">"მრეკავის ID ნაგულისხმევად შეზღუდულია. შემდეგი ზარი: შეზღუდულია."</string>
- <string name="CLIRDefaultOnNextCallOff" msgid="3092918006077864624">"აბონენტის ID ნაგულისხმევად შეზღუდულია. შემდეგი ზარი: შეუზღუდავი."</string>
- <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"აბონენტის ID უპირობოდ შეზღუდული არ არის. შემდეგი ზარი: შეზღუდულია."</string>
- <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"აბონენტის ID ნაგულისხმევად შეზღუდული არ არის. შემდეგი ზარი: შეუზღუდავი."</string>
- <string name="serviceNotProvisioned" msgid="8614830180508686666">"სერვისი არ არის მიწოდებული."</string>
- <string name="CLIRPermanent" msgid="3377371145926835671">"არ შეგიძლიათ აბონენტის ID პარამეტრების შეცვლა."</string>
- <string name="RestrictedChangedTitle" msgid="5592189398956187498">"წვდომის შეზღუდვები შეცვლილია"</string>
- <string name="RestrictedOnData" msgid="8653794784690065540">"ინტერნეტი დაბლოკილია."</string>
- <string name="RestrictedOnEmergency" msgid="6581163779072833665">"გადაუდებელი სამსახური დაბლოკილია."</string>
- <string name="RestrictedOnNormal" msgid="4953867011389750673">"ხმოვანი მომსახურება დაბლოკილია."</string>
- <string name="RestrictedOnAllVoice" msgid="3396963652108151260">"ყველა ხმოვანი სერვისი დაბლოკილია."</string>
- <string name="RestrictedOnSms" msgid="8314352327461638897">"SMS მომსახურება დაბლოკილია."</string>
- <string name="RestrictedOnVoiceData" msgid="996636487106171320">"ხმის/მონაცემების სერვისები დაბლოკილია."</string>
- <string name="RestrictedOnVoiceSms" msgid="1888588152792023873">"ყველა ხმოვანი/SMS-ის სერვისი დაბლოკილია."</string>
- <string name="RestrictedOnAll" msgid="5643028264466092821">"ხმის/მონაცემების/SMS-ის ყველა სერვისი დაბლოკილია."</string>
- <string name="serviceClassVoice" msgid="1258393812335258019">"ხმა"</string>
- <string name="serviceClassData" msgid="872456782077937893">"მონაცემები"</string>
- <string name="serviceClassFAX" msgid="5566624998840486475">"ფაქსი"</string>
- <string name="serviceClassSMS" msgid="2015460373701527489">"SMS"</string>
- <string name="serviceClassDataAsync" msgid="4523454783498551468">"ასინქრონული"</string>
- <string name="serviceClassDataSync" msgid="7530000519646054776">"სინქრონიზაცია"</string>
- <string name="serviceClassPacket" msgid="6991006557993423453">"პაკეტი"</string>
- <string name="serviceClassPAD" msgid="3235259085648271037">"PAD"</string>
- <string name="roamingText0" msgid="7170335472198694945">"როუმინგის მაჩვენებელი ჩართულია."</string>
- <string name="roamingText1" msgid="5314861519752538922">"როუმინგის მაჩვენებელი გამორთულია."</string>
- <string name="roamingText2" msgid="8969929049081268115">"როუმინგის მაჩვენებლის ციმციმი"</string>
- <string name="roamingText3" msgid="5148255027043943317">"სამეზობლოს მიღმა"</string>
- <string name="roamingText4" msgid="8808456682550796530">"შენობის გარეთ"</string>
- <string name="roamingText5" msgid="7604063252850354350">"როუმინგი - უპირატესი სისტემა"</string>
- <string name="roamingText6" msgid="2059440825782871513">"როუმინგი - ხელმისაწვდომი სისტემა"</string>
- <string name="roamingText7" msgid="7112078724097233605">"როუმინგი - ალიანსის პარტნიორი"</string>
- <string name="roamingText8" msgid="5989569778604089291">"როუმინგი - პრემიუმ პარტნიორი"</string>
- <string name="roamingText9" msgid="7969296811355152491">"Roaming - Full Service Functionality"</string>
- <string name="roamingText10" msgid="3992906999815316417">"Roaming - Partial Service Functionality"</string>
- <string name="roamingText11" msgid="4154476854426920970">"Roaming Banner ჩართულია"</string>
- <string name="roamingText12" msgid="1189071119992726320">"როუმინგის ბანერი გამორთულია"</string>
- <string name="roamingTextSearching" msgid="8360141885972279963">"სერვისის ძიება"</string>
- <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: არ არის გადამისამართებული"</string>
- <string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string>
- <string name="cfTemplateForwardedTime" msgid="9206251736527085256">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g> <xliff:g id="TIME_DELAY">{2}</xliff:g> წამის შემდეგ"</string>
- <string name="cfTemplateRegistered" msgid="5073237827620166285">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: არ არის გადამისამართებული"</string>
- <string name="cfTemplateRegisteredTime" msgid="6781621964320635172">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: არ არის გადამისამართებული"</string>
- <string name="fcComplete" msgid="3118848230966886575">"ფუნქციის კოდი შესრულდა."</string>
- <string name="fcError" msgid="3327560126588500777">"კავშირის პრობლემაა ან არასწორი ფუნქციური კოდია."</string>
- <string name="httpErrorOk" msgid="1191919378083472204">"კარგი"</string>
- <string name="httpError" msgid="7956392511146698522">"ქსელის შეცდომა იყო."</string>
- <string name="httpErrorLookup" msgid="4711687456111963163">"URL-ის მოძიება ვერ მოხერხდა."</string>
- <string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"საიტის ავტორიზაციის სქემას მხარდაჭერა არ აქვს."</string>
- <string name="httpErrorAuth" msgid="1435065629438044534">"ავტორიზაცია ვერ ხერხდება."</string>
- <string name="httpErrorProxyAuth" msgid="1788207010559081331">"ავტორიზაცია პროქსი-სერვერის გამოყენებით წარუმატებელად დასრულდა."</string>
- <string name="httpErrorConnect" msgid="8714273236364640549">"სერვერთან დაკავშირება ვერ მოხერხდა."</string>
- <string name="httpErrorIO" msgid="2340558197489302188">"სერვერთან კომუნიკაცია ვერ განახორციელა. სცადეთ ხელახლა."</string>
- <string name="httpErrorTimeout" msgid="4743403703762883954">"სერვერთან დაკავშირებისას ამოიწურა ლოდინის დრო."</string>
- <string name="httpErrorRedirectLoop" msgid="8679596090392779516">"ეს გვერდი შეიცავს სერვერის ძალიან ბევრ გადამისამართებას."</string>
- <string name="httpErrorUnsupportedScheme" msgid="5015730812906192208">"პროტოკოლს მხარდაჭერა არ აქვს."</string>
- <string name="httpErrorFailedSslHandshake" msgid="96549606000658641">"დაცული კავშირის დამყარება შეუძლებელია."</string>
- <string name="httpErrorBadUrl" msgid="3636929722728881972">"გვერდი ვერ გაიხსნა, რადგანაც URL არასწორია."</string>
- <string name="httpErrorFile" msgid="2170788515052558676">"ფაილთან წვდომა ვერ ხერხდება."</string>
- <string name="httpErrorFileNotFound" msgid="6203856612042655084">"მოთხოვნილი ფაილის მოძიება ვერ მოხერხდა."</string>
- <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"ძალიან ბევრი მოთხოვნა მუშავდება. სცადეთ მოგვიანებით."</string>
- <string name="notification_title" msgid="8967710025036163822">"<xliff:g id="ACCOUNT">%1$s</xliff:g> ანგარიშის ავტორიზაციის შეცდომა"</string>
- <string name="contentServiceSync" msgid="8353523060269335667">"სინქრონიზაცია"</string>
- <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"სინქრონიზაცია"</string>
- <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"<xliff:g id="CONTENT_TYPE">%s</xliff:g>-ის ძალიან ბევრი წაშლილები."</string>
- <string name="low_memory" product="tablet" msgid="6494019234102154896">"ტაბლეტის მეხსიერება გავსებულია. ადგილის გასათავისუფლებლად წაშალეთ ფაილების ნაწილი."</string>
- <string name="low_memory" product="default" msgid="3475999286680000541">"ტელეფონის მეხსიერება გავსებულია. ადგილის გასათავისუფლებლად წაშალეთ ფაილების ნაწილი."</string>
- <string name="me" msgid="6545696007631404292">"მე"</string>
- <string name="power_dialog" product="tablet" msgid="8545351420865202853">"ტაბლეტის პარამეტრები"</string>
- <string name="power_dialog" product="default" msgid="1319919075463988638">"ტელეფონის პარამეტრები"</string>
- <string name="silent_mode" msgid="7167703389802618663">"ჩუმი რეჟიმი"</string>
- <string name="turn_on_radio" msgid="3912793092339962371">"უსადენოს ჩართვა"</string>
- <string name="turn_off_radio" msgid="8198784949987062346">"უსადენო ინტერნეტის გამორთვა"</string>
- <string name="screen_lock" msgid="799094655496098153">"ეკრანის დაბლოკვა"</string>
- <string name="power_off" msgid="4266614107412865048">"გამორთვა"</string>
- <string name="silent_mode_silent" msgid="319298163018473078">"მრეკავი გათიშულია"</string>
- <string name="silent_mode_vibrate" msgid="7072043388581551395">"ვიბრაციის რეჟიმი"</string>
- <string name="silent_mode_ring" msgid="8592241816194074353">"ზარი ჩართულია"</string>
- <string name="shutdown_progress" msgid="2281079257329981203">"გამორთვა…"</string>
- <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"თქვენი ტაბლეტი გაითიშება."</string>
- <string name="shutdown_confirm" product="default" msgid="649792175242821353">"თქვენი ტელეფონი გაითიშება."</string>
- <string name="shutdown_confirm_question" msgid="2906544768881136183">"გსურთ გამორთვა?"</string>
- <string name="reboot_safemode_title" msgid="7054509914500140361">"უსაფრთხო რეჟიმის ჩატვირთვა"</string>
- <string name="reboot_safemode_confirm" msgid="55293944502784668">"გსურთ, უსაფრთხო რეჟიმის ხელახალი ჩატვირთვა? ამით გაითიშება ყველა მესამე პირი აპლიკაცია, რომელიც დაყენებული გაქვთ. ისინი აღდგება მომდევნო ხელახალი ჩატვირთვის შემდეგ."</string>
- <string name="recent_tasks_title" msgid="3691764623638127888">"უახლესი"</string>
- <string name="no_recent_tasks" msgid="8794906658732193473">"არ არის ბოლოს გამოყენებული აპები."</string>
- <string name="global_actions" product="tablet" msgid="408477140088053665">"ტაბლეტის პარამეტრები"</string>
- <string name="global_actions" product="default" msgid="2406416831541615258">"ტელეფონის პარამეტრები"</string>
- <string name="global_action_lock" msgid="2844945191792119712">"ეკრანის დაბლოკვა"</string>
- <string name="global_action_power_off" msgid="4471879440839879722">"გამორთულია"</string>
- <string name="global_action_bug_report" msgid="7934010578922304799">"ხარვეზის შესახებ ანგარიში"</string>
- <string name="bugreport_title" msgid="2667494803742548533">"შექმენით შეცდომის ანგარიში"</string>
- <string name="bugreport_message" msgid="398447048750350456">"იგი შეაგროვებს ინფორმაციას თქვენი მოწყობილობის ამჟამინდელი მდგომარეობის შესახებ, რათა ის ელფოსტის შეტყობინების სახით გააგზავნოს. ხარვეზის ანგარიშის მომზადებასა და შეტყობინების გაგზავნას გარკვეული დრო სჭირდება. გთხოვთ, მოითმინოთ."</string>
- <string name="global_action_toggle_silent_mode" msgid="8219525344246810925">"ჩუმი რეჟიმი"</string>
- <string name="global_action_silent_mode_on_status" msgid="3289841937003758806">"ხმა გამორთულია"</string>
- <string name="global_action_silent_mode_off_status" msgid="1506046579177066419">"ხმა ჩართულია"</string>
- <string name="global_actions_toggle_airplane_mode" msgid="5884330306926307456">"თვითმფრინავის რეჟიმი"</string>
- <string name="global_actions_airplane_mode_on_status" msgid="2719557982608919750">"თვითმფრინავის რეჟიმი ჩართულია."</string>
- <string name="global_actions_airplane_mode_off_status" msgid="5075070442854490296">"თვითმფრინავის რეჟიმი გამორთულია."</string>
- <string name="status_bar_notification_info_overflow" msgid="5301981741705354993">"999+"</string>
- <string name="safeMode" msgid="2788228061547930246">"უსაფრთხო რეჟიმი"</string>
- <string name="android_system_label" msgid="6577375335728551336">"Android-ის სისტემა"</string>
- <string name="permgrouplab_costMoney" msgid="5429808217861460401">"სერვისები, რომელშიც ფულის გადახდა გიწევთ"</string>
- <string name="permgroupdesc_costMoney" msgid="3293301903409869495">"ისეთი აქტივობების განხორციელება, რომლებშიც ფულის გადახდა მოგიწევთ."</string>
- <string name="permgrouplab_messages" msgid="7521249148445456662">"თქვენი შეტყობინებები"</string>
- <string name="permgroupdesc_messages" msgid="7821999071003699236">"თქვენი SMS-ის, ელფოტის და სხვა შეტყობინებების წაკითხვა და დაწერა."</string>
- <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"თქვენი პირადი ინფორმაცია"</string>
- <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"პირდაპირი წვდომა თქვენ შესახებ ინფორმაციაზე, რომელიც საკონტაქტო ბარათზეა შენახული."</string>
- <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"თქვენი სოციალური ინფორმაცია"</string>
- <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"თქვენს კონტაქტებისა და სოციალურ კავშირების შესახებ ინფორმაციაზე პირდაპირი წვდომა."</string>
- <string name="permgrouplab_location" msgid="635149742436692049">"თქვენი მდებარეობა"</string>
- <string name="permgroupdesc_location" msgid="5704679763124170100">"თქვენი ფიზიკური მდებარეობის მონიტორინგი"</string>
- <string name="permgrouplab_network" msgid="5808983377727109831">"ქსელის კომუნიკაცია"</string>
- <string name="permgroupdesc_network" msgid="4478299413241861987">"წვდომა ქსელის სხვადასხვა პარამეტრთან."</string>
- <string name="permgrouplab_bluetoothNetwork" msgid="1585403544162128109">"Bluetooth"</string>
- <string name="permgroupdesc_bluetoothNetwork" msgid="5625288577164282391">"მოწყობილობებთან და ქსელებთან წვდომა Bluetooth მეშვეობით."</string>
- <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"აუდიო პარამეტრები"</string>
- <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"აუდიო პარამეტრების შეცვლა."</string>
- <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"აზიანებს ელემენტს"</string>
- <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"იმ ფუნქციების გამოყენება, რომელიც ელემენტს სწრაფად დახლის."</string>
- <string name="permgrouplab_calendar" msgid="5863508437783683902">"კალენდარი"</string>
- <string name="permgroupdesc_calendar" msgid="5777534316982184416">"კალენდარსა და ღონისძიებებზე პირდაპირი წვდომა."</string>
- <string name="permgrouplab_dictionary" msgid="4148597128843641379">"მომხმარებლის ლექსიკონის წაკითხვა"</string>
- <string name="permgroupdesc_dictionary" msgid="7921166355964764490">"მომხმარებლის ლექსიკონში სიტყვების წაკითხვა"</string>
- <string name="permgrouplab_writeDictionary" msgid="8090237702432576788">"მომხმარებლის ლექსიკონში ჩაწერა"</string>
- <string name="permgroupdesc_writeDictionary" msgid="2711561994497361646">"მომხმარებლის ლექსიკონში სიტყვების დამატება."</string>
- <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"სანიშნეები და ისტორია"</string>
- <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"პირდაპირი წვდომა სანიშნეებსა და ბრაუზერის ისტორიაზე"</string>
- <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"მაღვიძარა"</string>
- <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"მაღვიძარის დაყენება."</string>
- <string name="permgrouplab_voicemail" msgid="4162237145027592133">"ხმოვანი ფოსტა"</string>
- <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"პირდაპირი წვდომა ხმოვან ფოსტაზე"</string>
- <string name="permgrouplab_microphone" msgid="171539900250043464">"მიკროფონი"</string>
- <string name="permgroupdesc_microphone" msgid="7106618286905738408">"პირდაპირი წვდომა მიკროფონზე აუდიოს ჩასაწერად."</string>
- <string name="permgrouplab_camera" msgid="4820372495894586615">"კამერა"</string>
- <string name="permgroupdesc_camera" msgid="2933667372289567714">"პირდაპირი წვდომა კამერაზე სურათის ან ვიდეოს გადასაღებად"</string>
- <string name="permgrouplab_screenlock" msgid="8275500173330718168">"ჩაკეტილი ეკრანი"</string>
- <string name="permgroupdesc_screenlock" msgid="7067497128925499401">"მოწყობილობის ეკრანის ჩამკეტის ქცევის შეცვლის შესაძლებლობა."</string>
- <string name="permgrouplab_appInfo" msgid="8028789762634147725">"თქვენი აპლიკაციების ინფორმაცია"</string>
- <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"თქვენს მოწყობილობაზე სხვა აპლიკაციების ქცევის შეცვლის შესაძლებლობა."</string>
- <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"ფონი"</string>
- <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"მოწყობილობის ფონის პარამეტრების შეცვლა."</string>
- <string name="permgrouplab_systemClock" msgid="406535759236612992">"საათი"</string>
- <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"მოწყობილობის დროის ან დროითი სარტყლის შეცვლა."</string>
- <string name="permgrouplab_statusBar" msgid="2095862568113945398">"სტატუსის ზოლი"</string>
- <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"მოწყობილობის სტატუსების ზოლის პარამეტრების შეცვლა."</string>
- <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"სინქრონიზაციის პარამეტრები"</string>
- <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"სინქრონიზაციის პარამეტრებზე წვდომა"</string>
- <string name="permgrouplab_accounts" msgid="3359646291125325519">"თქვენი ანგარიშები"</string>
- <string name="permgroupdesc_accounts" msgid="4948732641827091312">"ხელმისაწვდომ ანგარიშებზე წვდომა."</string>
- <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"მოწყობილობების მართვა"</string>
- <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"ყურსაცვამის აპარატურულ მოწყობილობაზე პირდაპირი წვდომა."</string>
- <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"სატელეფონო ზარები"</string>
- <string name="permgroupdesc_phoneCalls" msgid="7489701620446183770">"სატელეფონო ზარების მონიტორინგი, ჩაწერა და განხორციელება."</string>
- <string name="permgrouplab_systemTools" msgid="4652191644082714048">"სისტემის ხელსაწყოები"</string>
- <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"დაბალი წვდომა და სისტემის კონტროლი"</string>
- <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"დეველოპმენტის ინსტრუმენტები"</string>
- <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"ელემენტები, რომლებიც მხოლოდ აპების დეველოპერებს სჭირდებათ."</string>
- <string name="permgrouplab_display" msgid="4279909676036402636">"სხვა აპლიკაციის UI"</string>
- <string name="permgroupdesc_display" msgid="6051002031933013714">"სხვა აპლიკაციების UI-ის ეფექტი."</string>
- <string name="permgrouplab_storage" msgid="1971118770546336966">"შესანახი სივრცე"</string>
- <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USB მეხსიერებასთან წვდომა."</string>
- <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD ბარათთან წვდომა."</string>
- <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"წვდომის ფუნქციები"</string>
- <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"ფუნქციები, რომელიც შესაძლოა მოითხოვოს დამხმარე ტექნოლოგიამ."</string>
- <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ფანჯრის კონტენტის მოძიება"</string>
- <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"შეამოწმეთ იმ ფანჯრის კონტექტი, რომელშიც მუშაობთ."</string>
- <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"„შეხებით აღმოჩენის“ ჩართვა"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"ის ერთეულები, რომლებსაც შეეხებით, წაიკითხება ხმამაღლა და ეკრანის კვლევა შეიძლება ჟესტების გამოყენებით."</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>
- <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"შეიცავს ისეთ პირად მონაცემებს, როგორიცაა საკრედიტო ბარათის ნომრები და პაროლები."</string>
- <string name="permlab_statusBar" msgid="7417192629601890791">"სტატუსის ზოლის გათიშვა ან ცვლილება"</string>
- <string name="permdesc_statusBar" msgid="8434669549504290975">"აპს შეეძლება სტატუსების ზოლის გათიშვა და სისტემის ხატულების დამატება/წაშლა."</string>
- <string name="permlab_statusBarService" msgid="7247281911387931485">"სტატუსის ზოლი"</string>
- <string name="permdesc_statusBarService" msgid="716113660795976060">"აპს შეეძლება სტატუსის ზოლის ჩანაცვლება."</string>
- <string name="permlab_expandStatusBar" msgid="1148198785937489264">"სტატუსების ზოლის გაფართოება/აკეცვა"</string>
- <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"აპს შეეძლება სტატუსის ზოლის გახსნა-დახურვა."</string>
- <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"გამავალი ზარების გადამისამართება"</string>
- <string name="permdesc_processOutgoingCalls" msgid="5331318931937402040">"აპს შეეძლება გამავალი ზარების დამუშავება და ასაკრეფი ნომრის შეცვლა. ეს უფლება აპს აძლევს შესაძლებლობას აკონტროლოს, გადაამისამართოს ან აღკვეთოს გამავალი ზარები."</string>
- <string name="permlab_receiveSms" msgid="8673471768947895082">"ტექსტური შეტყობინებების (SMS) მიღება"</string>
- <string name="permdesc_receiveSms" msgid="6424387754228766939">"აპს შეეძლება SMS შეტყობინებების მიღება და დამუშავება. ეს ნიშნავს, რომ აპს შეეძლება თქვენ მოწყობილობაზე გამოგზავნილი შეტყობინებების მონიტორინგი და მათი წაშლა თქვენთვის ჩვენების გარეშე."</string>
- <string name="permlab_receiveMms" msgid="1821317344668257098">"ტექსტური შეტყობინებების (MMS) მიღება"</string>
- <string name="permdesc_receiveMms" msgid="533019437263212260">"აპს შეეძლება MMS შეტყობინებების მიღება და დამუშავება. ეს ნიშნავს, რომ აპს შეეძლება შეტყობინებების მონიტორინგი და მათი წაშლა თქვენთვის ჩვენების გარეშე."</string>
- <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"გადაუდებელი შეტყობინებების მიღება"</string>
- <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"აპს შეეძლება, მიიღოს და დაამუშაოს საგანგებო სამაუწყებლო შეტყობინებები. ეს ნებართვა ხელმისაწვდომია მხოლოდ სისტემის აპებისთვის."</string>
- <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"მასიური დაგზავნის შეტყობინებების წაკითხვა"</string>
- <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"აპს შეეძლება, წაიკითხოს თქვენს მოწყობილობაზე გამოგზავნილი ქსელის სამაუწყებლო შეტყობინებები. სამაუწყებლო გაფრთხილებები მოგეწოდებათ ზოგიერთ ადგილზე ექსტრემალური სიტუაციების შესახებ გასაფრთხილებლად. ქსელის გადაუდებელი შეტყონიბენის მიღების დროს მავნე აპებმა შეიძლება ხელი შეუშალონ თქვენი მოწყობილობის ფუნქციონირებას ან ოპერაციებს."</string>
- <string name="permlab_sendSms" msgid="5600830612147671529">"SMS შეტყობის გაგზავნა"</string>
- <string name="permdesc_sendSms" msgid="7094729298204937667">"აპს შეეძლება, გაგზავნოს SMS შეტყობინებები, რამაც შეიძლება გაუთვალისწინებელი ხარჯები გამოიწვიოს. მავნე აპებმა შეიძლება დაგიხარჯონ ფული შეტყობინებების თქვენი თანხმობის გარეშე გაგზავნით."</string>
- <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"ღონისძიებების გაგზავნა (პასუხის მიღება მხოლოდ შეტყობინებით)"</string>
- <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"აპს შეეძლება, გაუგზავნოს მოთხოვნები სხვა შეტყობინებების აპებს შემომავალ ზარებზე შეტყობინებით პასუხის მოვლენებთან გასამკლავებლად."</string>
- <string name="permlab_readSms" msgid="8745086572213270480">"თქვენი ტექსტური შეტყობინებების (SMS ან MMS) წაკითხვა"</string>
- <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"აპს შეეძლება თქვენს ტაბლეტში ან SIM ბარათში შენახული SMS შეტყობინებების წაკითხვა. ამგვარად, აპს ექნება შესაძლებლობა წაიკითხოს ყველა SMS შეტყობინება, მათი კონტენტისა და კონფიდენციალურობის მიუხედავად."</string>
- <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"აპს შეეძლება თქვენს ტაბლეტში ან SIM ბარათში შენახული SMS შეტყობინებების წაკითხვა. ამგვარად, აპს ექნება შესაძლებლობა წაიკითხოს ყველა SMS შეტყობინება, მათი კონტენტისა და კონფიდენციალურობის მიუხედავად."</string>
- <string name="permlab_writeSms" msgid="3216950472636214774">"თქვენი ტექსტური შეტყობინებების (SMS ან MMS) რედაქტირება"</string>
- <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"აპს შეეძლება, უპასუხოს თქვენ ტაბლეტში ან SIM ბარათზე შენახულ SMS შეტყობინებებს. მავნე აპებმა შეიძლება წაშალონ თქვენი შეტყობინებები."</string>
- <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"აპს უფლება ექნება , უპასუხოს თქვენ ტაბლეტში ან SIM ბარათზე შენახულ SMS შეტყობინებებს. მავნე აპებმა შეიძლება წაშალონ თქვენი შეტყობინებები."</string>
- <string name="permlab_receiveWapPush" msgid="5991398711936590410">"ტექსტური შეტყობინებების (WAP) მიღება"</string>
- <string name="permdesc_receiveWapPush" msgid="748232190220583385">"აპს შეეძლება WAP შეტყობინებების მიღება და გენერირება. ამ უფლებით აპი ისე დააკვირდება და წაშლის თქვენთვის გამოგზავნილ შეტყობინებებს, რომ თქვენ ვერც ნახავთ."</string>
- <string name="permlab_getTasks" msgid="6466095396623933906">"მოქმედი აპების მოძიება"</string>
- <string name="permdesc_getTasks" msgid="7454215995847658102">"აპს შეეძლება მოიძიოს ინფორმაცია ამჟამად და უახლოეს წარსულში მიმდინარე ამოცანების შესახებ. ამგვარად, აპს აქვს შესაძლებლობა აღმოაჩინოს ინფორმაცია იმის შესახებ, თუ რომელი აპლიკაციებია გამოყენებული მოწყობილობაზე."</string>
- <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"მომხმარებლებს შორის ინტერაქცია"</string>
- <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"აპს შეეძლება, სხვადასხვა მომხმარებლის მოქმედებები შეასრულოს მოწყობილობაზე. მავნე აპებმა შეიძლება მომხმარებლებს შორის დაცვის დასარღვევად გამოიყენონ."</string>
- <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"მომხმარებლებთან ინტერაქციის სრული ლიცენზია"</string>
- <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"აძლევს მომხმარებლებს შორის ყველა შესაძლო ინტერაქციის უფლებას."</string>
- <string name="permlab_manageUsers" msgid="1676150911672282428">"მომხმარებლების მართვა"</string>
- <string name="permdesc_manageUsers" msgid="8409306667645355638">"აპს შეუძლია მომხმარებლების მართვა მოწყობილობაზე, მათ შორის მოთხოვნის, შექმნის და წაშლის."</string>
- <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"მოქმედი აპების დეტალების მოძიება"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"აპს შეეძლება მოიძიოს დეტალური ინფორმაცია ამჟამად და უახლოეს წარსულში მიმდინარე ამოცანების შესახებ. მავნე აპებს შეუძლიათ აღმოაჩინონ პირადი ინფორმაცია სხვა აპების შესახებ."</string>
- <string name="permlab_reorderTasks" msgid="2018575526934422779">"მოქმედი აპების წყობის შეცვლა"</string>
- <string name="permdesc_reorderTasks" msgid="7734217754877439351">"აპს შეეძლება ამოცანების გადატანა წინა და უკანა პლანზე. ამას თქვენი ჩარევის გარეშე გააკეთებს."</string>
- <string name="permlab_removeTasks" msgid="6821513401870377403">"გაშვებული აპების შეწყვეტა"</string>
- <string name="permdesc_removeTasks" msgid="1394714352062635493">"აპს შეეძლება ამოცანების წაშლა და მათი აპების გაუქმება. მავნე აპებმა შესაძლოა დაარღვიონ სხვა აპების მოქმედება."</string>
- <string name="permlab_manageActivityStacks" msgid="7391191384027303065">"აქტივობის დასტების მართვა"</string>
- <string name="permdesc_manageActivityStacks" msgid="1615881933034084440">"საშუალებას აძლევს აპს დაამატოს, ამოშალოს და შეცვალოს აქტივობის დასტები, რაშიც სხვა აპები ეშვება. მავნე აპები სხვა აპებს ქცევის ხელის შეშლას შეძლებს."</string>
- <string name="permlab_startAnyActivity" msgid="2918768238045206456">"ნებისმიერი აქტივობის წამოწყება"</string>
- <string name="permdesc_startAnyActivity" msgid="997823695343584001">"აპს შეეძლება დაიწყოს ნებისმიერი აქტივობა, ყოველგვარი უფლებისა და სტატუსის გარეშე."</string>
- <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"ეკრანის თავსებადობის დაყენება"</string>
- <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"აპს შეეძლება სხვა აპლიკაციებთან ეკრანის თავსებადობის რეჟიმის კონტროლი. მავნე აპლიკაციებმა შესაძლოა სხვა აპლიაკციების ქცევა შეცვალოს."</string>
- <string name="permlab_setDebugApp" msgid="3022107198686584052">"აპის გამართვის გააქტიურება"</string>
- <string name="permdesc_setDebugApp" msgid="4474512416299013256">"აპს შეეძლება სხვა აპისთვის გამართვის რეჟიმის ჩართვა. მავნე აპლიკაციებს ამ ფუნქციით შეეძლებათ სხვა აპების გათიშვა."</string>
- <string name="permlab_changeConfiguration" msgid="4162092185124234480">"სისტემის ინტერფეისის პარამეტრების შეცვლა"</string>
- <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"აპს შეეძლება, შეცვალოს ამჟამინდელი კონფიგურაცია, მაგალითად, ენა და ქვეყნის კოდი ან შრიფტის ზომა."</string>
- <string name="permlab_enableCarMode" msgid="5684504058192921098">"მანქანის რეჟიმის ჩართვა"</string>
- <string name="permdesc_enableCarMode" msgid="4853187425751419467">"აპს შეეძლება მანქანის რეჟიმის ჩართვა."</string>
- <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"სხვა აპების დახურვა"</string>
- <string name="permdesc_killBackgroundProcesses" msgid="4593353235959733119">"აპს შეეძლება, დაასრულოს სხვა აპების ფონური პროცესები. ამან შეიძლება სხვა აპების შეჩერება გამოიწვიოს."</string>
- <string name="permlab_forceStopPackages" msgid="2329627428832067700">"სხვა აპების იძულებითი შეჩერება"</string>
- <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"აპს შეეძლება იძულებით შეწყვიტოს სხვა აპების მუშაობა."</string>
- <string name="permlab_forceBack" msgid="652935204072584616">"აპის ძალით დახურვა"</string>
- <string name="permdesc_forceBack" msgid="3892295830419513623">"აპს შეეძლება იძულებით დაასრულოს წინა პლანზე მიმდინარე ნებისმიერი აქტივობა და დაბრუნდეს უკან. ჩვეულებრივ აპებს მსგავსი რამ არასოდეს სჭირდება."</string>
- <string name="permlab_dump" msgid="1681799862438954752">"სისტემის მდგომარეობის შესახებ ინფორმაციის მიღება"</string>
- <string name="permdesc_dump" msgid="1778299088692290329">"აპს შეეძლება სისტემის შიდა მდგომარეობის ნახვა. მავნე პროგრამები შეძლებენ პირადი და დაცული ინფორმაციის ნახვას, რომელთან წვდომის საშუალებაც მათ არ უნდა ჰქონდეთ."</string>
- <string name="permlab_retrieve_window_content" msgid="8022588608994589938">"ეკრანის კონტენტის მოძიება"</string>
- <string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"აპს შეეძლება აქტიური ფანჯრიდან კონტენტის მოძიება. მავნე აპებს შეუძლიათ ფანჯრის სრული კონტენტის მოძიება და ყველა ტექსტის წაკითხვა პაროლების გარდა."</string>
- <string name="permlab_temporary_enable_accessibility" msgid="2312612135127310254">"მარტივი წვდომის დროებით გააქტიურება"</string>
- <string name="permdesc_temporary_enable_accessibility" msgid="8079456293182975464">"აპს შეეძლება მოწყობილობაზე გამარტივებული რეჟიმის ჩართვა. მავნე აპებს შეეძლებათ ამ რეჟიმის ჩართვა მომხმარებლის გაფრთხილების გარეშე."</string>
- <string name="permlab_retrieve_window_info" msgid="8532295199112519378">"ფანჯრის ინფორმაციის მოძიება"</string>
- <string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"აპს შეეძლება ფანჯრების მენეჯერის მეშვეობით ფანჯრების შესახებ ინფორმაციის მოპოვება. მავნე აპლიკაციებს შეეძლებათ ისეთი ინფორმაციის მოპოვება, რომელიც შიდა სისტემური მოხმარებისთვის არის განკუთვნილი."</string>
- <string name="permlab_filter_events" msgid="8675535648807427389">"ღონისძიებების გაფილტვრა"</string>
- <string name="permdesc_filter_events" msgid="8006236315888347680">"აპლიკაციას შეეძლება რეგისტრაცია შეტანის ფილტრებისა, რომლებიც ასუფთავებენ მომხმარებლის ღონისძიების ყველა დინებას. მავნე აპმა შესაძლოა ეს ფუნქცია სისტემის UI კონტროლისთვის გამოიყენოს, მომხმარებლის ინტერვენციის გარეშე."</string>
- <string name="permlab_magnify_display" msgid="5973626738170618775">"ეკრანის გადიდება"</string>
- <string name="permdesc_magnify_display" msgid="7121235684515003792">"აპლიკაციას შეეძლება, შეცვალოს დისპლეის კონტენტი. მავნე აპებმა შეიძლება იმგვარად გარდაქმნან დისპლეის კონტენტი, რომ  მოწყობილობა გამოუსადეგარი გახდეს."</string>
- <string name="permlab_shutdown" msgid="7185747824038909016">"ნაწილობრივი გამორთვა"</string>
- <string name="permdesc_shutdown" msgid="7046500838746291775">"აქტივობების მენეჯერს გათიშვის რეჟიმში აყენებს. სრულ გათიშვას არ ახორციელებს."</string>
- <string name="permlab_stopAppSwitches" msgid="4138608610717425573">"აპის გადართვებისგან დაცვა"</string>
- <string name="permdesc_stopAppSwitches" msgid="8262195802582255021">"ხელს უშლის მომხმარებლის სხვა აპზე გადართვას."</string>
- <string name="permlab_getTopActivityInfo" msgid="2537922311411546016">"ამჟამინდელი აპის ინფორმაციის მიღება"</string>
- <string name="permdesc_getTopActivityInfo" msgid="8153651434145132505">"ნებას რთავს მფლობელს, მოიპოვოს მიმდინარე აპლიკაციის და სერვისების შესახებ პირადი ინფორმაცია ეკრანის წინა პლანზე."</string>
- <string name="permlab_runSetActivityWatcher" msgid="892239094867182656">"ყველა აპის გაშვების მონიტორინგი დ კონტროლი"</string>
- <string name="permdesc_runSetActivityWatcher" msgid="6003603162578577406">"აპს შეეძლება სისტემის მიერ გამოძახებული აქტივობების მონიტორინგი და მართვა. მავნე აპლიკაციებს შეეძლებათ სისტემის სრული კონტროლი. ეს ნებართვა საჭროა მხოლოდ დეველოპმენტისთვის და ჩვეულებრივი მოხმარებისთის არ გამოიყენება."</string>
- <string name="permlab_broadcastPackageRemoved" msgid="2576333434893532475">"პაკეტების წაშლის შესახებ შეტყობინებების გაგზავნა"</string>
- <string name="permdesc_broadcastPackageRemoved" msgid="6621901216207931089">"აპს შეეძლება, გაგზავნოს შეტყობინება, რომ აპის პაკეტი წაიშალა. მავნე აპებმა ეს უფლება შეიძლება გამოიყენონ სხვა ნებისმიერი გაშვებული აპების შესაწყვეტად."</string>
- <string name="permlab_broadcastSmsReceived" msgid="5689095009030336593">"SMS-ით მიღებული სამაუწყებლო შეტყობინების გაგზავნა"</string>
- <string name="permdesc_broadcastSmsReceived" msgid="4152037720034365492">"აპს საშუალებას აძლევს გააგზავნოს შეტყობინება SMS შეტყობინების მიღების თაობაზე. მავნე აპლიკაციებში ეს ფუნქცია შეიძლება გამოყენებული იქნას SMS შეტყობინებების მიღების იმიტაციიისათვის."</string>
- <string name="permlab_broadcastWapPush" msgid="3145347413028582371">"WAP-PUSH-ით მიღებული სამაუწყებლო შეტყობინების გაგზავნა"</string>
- <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"აპს შეეძლება, გაგზავნოს შეტყობინება WAP PUSH შეტყობინების მიღების თაობაზე. მავნე აპებმა ეს შეიძლება გამოიყენონ MMS შეტყობინების მიღების გასაყალბებლად ან ნებისმიერი ვებგვერდის კონტენტის სახიფათო ვარიანტებით ჩუმად ჩასანაცვლებლად."</string>
- <string name="permlab_setProcessLimit" msgid="2451873664363662666">"მიმდინარე პროცესების რაოდენობის ლიმიტი"</string>
- <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"აპს შეეძლება, გააკონტროლოს მიმდინარე პროცესების მაქსიმალური რაოდენობა. ჩვეულებრივ აპებში არასდროს არის საჭირო."</string>
- <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"უკანა ფონის აპის იძულებით დახურვა"</string>
- <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"აპს შეეძლება გააკონტროლოს, არის თუ არა აქტივობები ყოველთვის დასრულებული მათი უკანა ფონზე გადასვლის დროს. არასდროს არის საჭირო ჩვეულებრივ აპებში."</string>
- <string name="permlab_batteryStats" msgid="2789610673514103364">"ელემენტის სტატისტიკის წაკითხვა"</string>
- <string name="permdesc_batteryStats" msgid="5897346582882915114">"აპლიკაციას შეეძლება ამჟამინდელი დაბალი დამუხტვის ელემენტის გამოყენების მონაცემების წაკითხვა. აპლიკაციამ შესაძლოა მოახერხოს თქვენ მიერ გამოყენებული აპების შესახებ დეტალური ინფორმაციის მოძიება."</string>
- <string name="permlab_updateBatteryStats" msgid="3719689764536379557">"ელემენტის სტატისტიკის შეცვლა"</string>
- <string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"აპს შეეძლება, შეცვალოს ბატარეის გამოყენების შეგროვებული სტატისტიკა. არ გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_getAppOpsStats" msgid="1508779687436585744">"აპის სამუშაო ჟურნალის სტატისტიკის მოძიება"</string>
- <string name="permdesc_getAppOpsStats" msgid="6243887041577912877">"აპს შეეძლება აპლიკაციათა ოპერაციების შეგროვებული სტატისტიკის მოპოვება. არ გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_updateAppOpsStats" msgid="8829097373851521505">"აპის სამუშაო ჟურნალის სტატისტიკის შეცვლა"</string>
- <string name="permdesc_updateAppOpsStats" msgid="50784596594403483">"აპს შეეძლება აპლიკაციის ოპერაციების შეგროვებული სტატისტიკის მოპოვება. არ გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_backup" msgid="470013022865453920">"სისტემის სარეზერვო ასლების კონტროლი და აღდგენა"</string>
- <string name="permdesc_backup" msgid="6912230525140589891">"აპს შეეძლება სისტემის სარეზერვო ასლების კონტროლი და მექანიზმის აღდგენა. ჩვეულებრივი აპები მსგავს შესაძლებლობებს არ იყენებენ."</string>
- <string name="permlab_confirm_full_backup" msgid="5557071325804469102">"სრული სარეზერვო ასლების დადასტურება ან ოპერაციის აღდგენა"</string>
- <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"აპს შეეძლება გაუშვას სრული სარეზერვო ასლების UI დადასტურება. არ იყენებს არც ერთი სხვა აპი."</string>
- <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"არაავტორიზებული ფანჯრების ჩვენება"</string>
- <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"აპს შეეძლება, შექმნას შიდა სისტემის მომხმარებლის ინტერფეისის მიერ გამოყენებისთვის განკუთვნილი ფანჯრები. არ გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"სხვა აპების ინტერფეისზე გადაწერა"</string>
- <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"აპს შეეძლება თავისი ინტერფეისი ზემოდან გადააწეროს სხვა აპლიკაციებს ან მომხმარებლის ინტერფეისის ნაწილებს. ამგვარად, შესაძლოა შეიცვალოს სხვა აპლიკაციის ინტერფეისი და ხელი შეგეშალოთ სხვა მასთან მუშაობისას."</string>
- <string name="permlab_setAnimationScale" msgid="2805103241153907174">"ანიმაციის გლობალური სიჩქარის შეცვლა"</string>
- <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"აპს შეეძლება გლობალური ანიმაციის სიჩქარის შეცვლა (სწრაფი ან ნელი ანიმაცია) ნებისმიერ დროს."</string>
- <string name="permlab_manageAppTokens" msgid="1286505717050121370">"აპის წინასწარი გადახდის ბარათების მართვა"</string>
- <string name="permdesc_manageAppTokens" msgid="8043431713014395671">"აპს შეეძლება, შექმნას და მართოს საკუთარი იდენტიფიკაციის ნიშნები, ჩვეულებრივი Z-წყობის უგულვებელყოფით. ჩვეულებრივი აპებისთვის მისი გამოყენება არასდროს არის საჭირო."</string>
- <string name="permlab_freezeScreen" msgid="4708181184441880175">"ეკრანის გაყინვა"</string>
- <string name="permdesc_freezeScreen" msgid="8558923789222670064">"აპლიკაციას შეეძლება ეკრანის დროებით გაშეშება სრულ ეკრანზე გადასასვლელად."</string>
- <string name="permlab_injectEvents" msgid="1378746584023586600">"გასაღებზე დაჭერა და ღილაკების მართვა"</string>
- <string name="permdesc_injectEvents" product="tablet" msgid="206352565599968632">"აპს შეეძლება შეყვანის საკუთარი მოვლენების (გასაღები და ა.შ.) სხვა აპებისთვის გადაცემა. მავნე აპებმა შესაძლოა ეს გამოიყენონ ტაბლეტის საკონტროლოდ."</string>
- <string name="permdesc_injectEvents" product="default" msgid="653128057572326253">"აპს შეეძლება შეყვანის საკუთარი მოვლენების (გასაღები და ა.შ.) სხვა აპებისთვის გადაცემა. მავნე აპებმა შესაძლოა ეს გამოიყენონ ტელეფონის საკონტროლოდ."</string>
- <string name="permlab_readInputState" msgid="469428900041249234">"ჩაწერეთ რასაც ბეჭდავთ და რა ქმედებებსაც მიმართავთ."</string>
- <string name="permdesc_readInputState" msgid="8387754901688728043">"აპს შეეძლება დაინახოს გასაღები, როდესაც მას ბეჭდავთ თუნდაც სხვა აპში მუშაობის დროს (მაგალითად, პაროლის აკრეფა). ჩვეულებრივ აპებს მსგავსი რამ არასოდეს სჭირდება."</string>
- <string name="permlab_bindInputMethod" msgid="3360064620230515776">"შეტანის მეთოდთან დაკავშირება"</string>
- <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"აპს შეეძლება ზედა დონის ინტერფეისის წვდომის სისტემასთან დაკავშირება. არასდროს გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"გამარტივებული წვდომის სერვისთან მიერთება"</string>
- <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"აპს შეეძლება გამარტივებული წვდომის სერვისის ზედა დონის ინტერფეისთან დაკავშირება. არასდროს გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_bindPrintService" msgid="8462815179572748761">"ბეჭდვის სევისზე მიბმა"</string>
- <string name="permdesc_bindPrintService" msgid="7960067623209111135">"მფლობელს შეეძლება მიებას ბეჭდვის სერვისების ზედა დონის ინტერფეისს. ჩვეულებრივ აპს ეს წესით არასოდეს არ უნდა დაჭირდეს."</string>
- <string name="permlab_accessAllPrintJobs" msgid="1120792468465711159">"ბეჭდვის ყველა დავალებაზე წვდომა"</string>
- <string name="permdesc_accessAllPrintJobs" msgid="2978185311041864762">"საშუალებას აძლევს მფლობელს იქონიოს წვდომა სხვა აპის მიერ შექმნილ ბეჭდვის დავალებებზე. ჩვეულებრივ აპს ეს წესით არასოდეს არ უნდა დაჭირდეს."</string>
- <string name="permlab_bindNfcService" msgid="2752731300419410724">"NFC სერვისთან შეკავშირება"</string>
- <string name="permdesc_bindNfcService" msgid="6120647629174066862">"საშუალებას აძლევს მფლობელს შეკავშირდეს აპლიკაციებთან, რომლებიც NFC ბარათების სიმულაციას ახდენს. ჩვეულებრივ აპებს უმეტეს შემთხვევაში არ დაჭირდება."</string>
- <string name="permlab_bindTextService" msgid="7358378401915287938">"ტექსტ სერვისთან დაკავშირება"</string>
- <string name="permdesc_bindTextService" msgid="8151968910973998670">"აპს შეეძლება ზედა დონის ინტერფეისის ტექსტური სამსახურთან (მაგ. SpellCheckerService) დაკავშირება. არასდროს გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_bindVpnService" msgid="4708596021161473255">"VPN სერვისთან დაკავშირება"</string>
- <string name="permdesc_bindVpnService" msgid="2067845564581693905">"აპს შეეძლება Vpn სერვისის ზედა დონის ინტერფეისთან დაკავშირება. არასდროს გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_bindWallpaper" msgid="8716400279937856462">"ფონზე მიჭედება"</string>
- <string name="permdesc_bindWallpaper" msgid="7108428692595491668">"მფლობელს შეეძლება ფონის ზედა დონის ინტერფეისთან დაკავშირება. არასდროს გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_bindRemoteViews" msgid="5697987759897367099">"ვიჯეტ სერვისთან დაკავშირება"</string>
- <string name="permdesc_bindRemoteViews" msgid="4717987810137692572">"აპს შეეძლება ზედა დონის ინტერფეისის ვიჯეტთან დაკავშირება. არასდროს გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_bindDeviceAdmin" msgid="8704986163711455010">"მოწყობილობის ადმინთან ინტერაქცია"</string>
- <string name="permdesc_bindDeviceAdmin" msgid="569715419543907930">"აპს შეეძლება მოწყობილობის ადმინისტრატორისთვის intent ობიექტების გაგზავნა. არასდროს გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_manageDeviceAdmins" msgid="4248828900045808722">"მოწყობილობის ადმინისტრატორს დამატება ან ამოშლა"</string>
- <string name="permdesc_manageDeviceAdmins" msgid="5025608167709942485">"საშუალებას აძლევს მფლობელს დაამატოს ან ამოშალოს მოწყობილობის აქტიური ადმინისტრატორები. ჩვეულებრივ აპებს, ალბათ, არასოდეს დაჭირდება"</string>
- <string name="permlab_setOrientation" msgid="3365947717163866844">"ეკრანის ორიენტაციის შეცვლა"</string>
- <string name="permdesc_setOrientation" msgid="3046126619316671476">"აპს შეეძლება, ატრიალოს ეკრანი ნებისმიერ დროს. არასდროს იქნება საჭირო ჩვეულებრივ აპებში."</string>
- <string name="permlab_setPointerSpeed" msgid="9175371613322562934">"მაჩვენებლის სიჩქარის შეცვლა"</string>
- <string name="permdesc_setPointerSpeed" msgid="6866563234274104233">"აპს შეეძლება, შეცვალოს მაუსის ან თრექპედის კურსორის სიჩქარე ნებისმიერ დროს. არასდროს იქნება საჭირო ჩვეულებრივ აპებში."</string>
- <string name="permlab_setKeyboardLayout" msgid="4778731703600909340">"კლავიატურის განლაგების შეცვლა"</string>
- <string name="permdesc_setKeyboardLayout" msgid="8480016771134175879">"აპს შეეძლება შეცვალოს კლავიატურის განლაგება. ეს ფუნქცია არასდროს იქნება საჭირო ჩვეულებრივ აპებში."</string>
- <string name="permlab_signalPersistentProcesses" msgid="4539002991947376659">"აპებისთვის Linux-ის სიგნალების გაგზავნა"</string>
- <string name="permdesc_signalPersistentProcesses" msgid="4896992079182649141">"აპს შეეძლება მოითხოვოს უზრუნველყოფილი სიგნალის მუდმივ პროცესებისთვის გაგზავნა."</string>
- <string name="permlab_persistentActivity" msgid="8841113627955563938">"დააყენოს აპი მუდმივად ჩართულად"</string>
- <string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"აპს შეეძლება, საკუთარი ნაწილები მუდმივად ჩაწეროს მეხსიერებაში. ეს შეზღუდავს მეხსიერების ხელმისაწვდომობას სხვა აპებისთვის და შეანელებს ტაბლეტს."</string>
- <string name="permdesc_persistentActivity" product="default" msgid="4384760047508278272">"აპს შეეძლება, საკუთარი ნაწილები მუდმივად ჩაწეროს მეხსიერებაში. ეს შეზღუდავს მეხსიერების ხელმისაწვდომობას სხვა აპებისთვის და შეანელებს ტელეფონს."</string>
- <string name="permlab_deletePackages" msgid="184385129537705938">"აპების წაშლა"</string>
- <string name="permdesc_deletePackages" msgid="7411480275167205081">"აპს შეეძლება Android პაკეტების წაშლა. მავნე აპებმა შეიძლება გამოიყენონ მნიშვნელოვანი აპების წასაშლელად."</string>
- <string name="permlab_clearAppUserData" msgid="274109191845842756">"სხვა აპების მონაცემების წაშლა"</string>
- <string name="permdesc_clearAppUserData" msgid="4625323684125459488">"აპს შეეძლება მომხმარებლის მონაცემების წაშლა."</string>
- <string name="permlab_deleteCacheFiles" msgid="3128665571837408675">"სხვა აპების ქეშის წაშლა"</string>
- <string name="permdesc_deleteCacheFiles" msgid="3812998599006730196">"აპს შეეძლება ქეშის ფაილების წაშლა."</string>
- <string name="permlab_getPackageSize" msgid="7472921768357981986">"აპის მეხსიერების სივრცის გაზომვა"</string>
- <string name="permdesc_getPackageSize" msgid="3921068154420738296">"აპს შეეძლება, მოიპოვოს თავისი კოდი, მონაცემები და ქეშის ზომები."</string>
- <string name="permlab_installPackages" msgid="2199128482820306924">"აპების პირდაპირი ინსტალაცია"</string>
- <string name="permdesc_installPackages" msgid="5628530972548071284">"აპს შეეძლება Android-ის ახალი ან განახლებული პაკეტების ინსტალაცია. მავნე აპებმა შესაძლოა ეს გამოიყენონ ახალი აპების დასამატებლად თვითნებურად, მნიშვნელოვანი უფლებებით."</string>
- <string name="permlab_clearAppCache" msgid="7487279391723526815">"ყველა აპის მონაცემთა ქეშის წაშლა"</string>
- <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"აპს შეეძლება, გაასუფთავოს ტაბლეტის მეხსიერება სხვა აპლიკაციების ქეშის საქაღალდეებში ფაილების წაშლით. ამან შეიძლება გამოიწვიოს სხვა აპლიკაციების უფრო ნელი გაშვება, რადგანაც მათ მონაცემების ხელახლა პოვნა სჭირდებათ."</string>
- <string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"აპს შეეძლება, გაასუფთავოს ტელეფონის მეხსიერება სხვა აპლიკაციების ქეშის საქაღალდეებში ფაილების წაშლით. ამან შეიძლება გამოიწვიოს სხვა აპლიკაციების უფრო ნელი გაშვება, რადგანაც მათ მონაცემების ხელახლა პოვნა სჭირდებათ."</string>
- <string name="permlab_movePackage" msgid="3289890271645921411">"აპის რესურსების გადატანა"</string>
- <string name="permdesc_movePackage" msgid="319562217778244524">"აპს შეეძლება აპების რესურსსების გადატანა გარედან შიდა მეხსიერებაზე და პირიქით."</string>
- <string name="permlab_readLogs" msgid="6615778543198967614">"ჟურნალის სენსიტიური მონაცემების წაკითხვა"</string>
- <string name="permdesc_readLogs" product="tablet" msgid="82061313293455151">"აპს შეეძლება სისტემის სხვადასხვა ჟურნალის ფაილების წაკითხვა. ეს უფლებას აძლევს, გაიგოს ზოგადი ინფორმაცია იმის შესახებ, თუ რას აკეთებთ ტაბლეტზე და, პოტენციურად, პირადი ან კონფიდენციალური ინფორმაციაც."</string>
- <string name="permdesc_readLogs" product="default" msgid="2063438140241560443">"აპს შეეძლება სისტემის სხვადასხვა ჟურნალის ფაილების წაკითხვა. ეს უფლებას აძლევს, გაიგოს ზოგადი ინფორმაცია იმის შესახებ, თუ რას აკეთებთ ტელეფონზე და, პოტენციურად, პირადი ან კონფიდენციალური ინფორმაციაც."</string>
- <string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"ნებისმიერი მედია დეკოდერის გამოყენება"</string>
- <string name="permdesc_anyCodecForPlayback" msgid="8283912488433189010">"აპს დასაკრავად შეეძლება გამოიყენოს ნებისმიერი დაყენებული მედია დეკოდერი."</string>
- <!-- no translation found for permlab_manageCaCertificates (1678391896786882014) -->
- <skip />
- <!-- no translation found for permdesc_manageCaCertificates (4015644047196937014) -->
- <skip />
- <string name="permlab_diagnostic" msgid="8076743953908000342">"სისტემის დიაგნოსტიკის რესურსებში წაკითხვა/ჩაწერის უფლება"</string>
- <string name="permdesc_diagnostic" msgid="6608295692002452283">"აპს შეეძლება, წაიკითხოს ან ჩაწეროს ნებისმიერ რესურსში, რომელიც დიაგნოსტიკის ჯგუფს ეკუთვნის, მაგალითად, ფაილები /dev-ში. ამან შესაძლოა იმოქმედოს სისტემის სტაბილურობასა და უსაფრთხოებაზე. მისი გამოყენება მხოლოდ მწარმოებლის ან ოპერატორის მიერ ტექნიკის სპეციფიკური დიაგნოსტიკისთვის უნდა მოხდეს."</string>
- <string name="permlab_changeComponentState" msgid="6335576775711095931">"აპის კომპონენტების ჩართვა ან გამორთვა"</string>
- <string name="permdesc_changeComponentState" product="tablet" msgid="8887435740982237294">"აპებს საშუალებას აძლევს, შეცვალონ სხვა აპების კომპონენტები. ამ გზით მავნე აპები შეძლებენ ტაბლეტის მნიშვნელვანი ფუნქციების გათიშვას. ეს ნებართვა სიფრთხილით გამოიყენეთ, რათა შემთხვევით არ დაარღვიოთ აპლიკაციის კომპონენტების მუშაობა."</string>
- <string name="permdesc_changeComponentState" product="default" msgid="1827232484416505615">"აპებს საშუალებას აძლევს, შეცვალონ სხვა აპების კომპონენტები. ამ გზით მავნე აპები შეძლებენ ტელეფონის მნიშვნელვანი ფუნქციების გათიშვას. ეს ნებართვა სიფრთხილით გამოიყენეთ, რათა შემთხვევით არ დაარღვიოთ აპლიკაციის კომპონენტების მუშაობა."</string>
- <string name="permlab_grantRevokePermissions" msgid="4627315351093508795">"ნებართვების მიცემა ან გაუქმება"</string>
- <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"აპლიკაციას შეეძლება, გასცეს ან გააუქმოს განსაკუთრებული ნებართვები მისთვის ან სხვა აპლიკაციებისთვის. მავნე აპლიკაციებმა შეიძლება გამოიყენონ იმ თვისებებზე წვდომისთვის, რომლებიც მათ არ მიანიჭეთ."</string>
- <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"სასურველი აპების დაყენება"</string>
- <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"აპს შეეძლება შეცვალოს თქვენი სასურველი აპები. მავნე აპებმა ეს შესაძლოა გამოიყენონ თქვენ მიერ მოხმარებადი აპების ჩუმად შესაცვლელად, თქვენგან პირადი ინფორმაციის მოსაგროვებლად."</string>
- <string name="permlab_writeSettings" msgid="2226195290955224730">"სისტემის პარამეტრების შეცვლა"</string>
- <string name="permdesc_writeSettings" msgid="7775723441558907181">"აპს შეეძლება, შეცვალოს სისტემის პარამეტრების მონაცემები. მავნე აპებს შეუძლიათ დააზიანონ თქვენი სისტემის კონფიგურაცია."</string>
- <string name="permlab_writeSecureSettings" msgid="204676251876718288">"სისტემის უზრუნველყოფის პარამეტრების შეცვლა"</string>
- <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"აპს შეეძლება სისტემის უსაფრთხოების პარამეტრების მონაცემების შეცვლა. ამ შესაძლებლობას ჩვეულებრივი აპების არასოდეს იყენებენ."</string>
- <string name="permlab_writeGservices" msgid="2149426664226152185">"Google სერვისების რუკის შეცვლა"</string>
- <string name="permdesc_writeGservices" msgid="1287309437638380229">"აპს შეეძლება Google სერვისების რუკის შეცვლა. არ გამოიყენება ჩვეულებრივ აპლიკაციებში."</string>
- <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"გაშვება სისტემის ჩართვისას"</string>
- <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"აპს შეეძლება საკუთარი თავის სისტემის ჩატვირთვისას ჩართვა. ამან შეიძლება გამოიწვიოს ჩატვირთვის დროის გაზრდა და ტაბლეტის შენელება, რადგან აპი ყოველთვის ჩართული იქნება."</string>
- <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"აპს შეეძლება საკუთარი თავის ჩართვა სისტემის ჩატვირთვისთანავე. ამან შეიძლება გამოიწვიოს ტელეფონის ჩატვირთვის დროის გაზრდა და ზოგადად ტელეფონის შენელება, რადგან აპი ყოველთვის ჩართული იქნება."</string>
- <string name="permlab_broadcastSticky" msgid="7919126372606881614">"ისეთი შეტყობინებების გაგზავნა, რომლებიც არ იშლება"</string>
- <string name="permdesc_broadcastSticky" product="tablet" msgid="7749760494399915651">"აპს შეეძლება არასაჩქარო შეტყობინებების გაგზავნა, რომლებიც რჩებიან გაგზავნის დასრულების შემდეგაც. ამ გადაგზავნის ზომაზე მეტად გამოყენებამ შეიძლება შეანელოს ან შეაფერხოს თქვენი ტაბლეტის მუშაობა ზედმეტად დიდი მოცულობის მეხსიერების გამოყენების შედეგად."</string>
- <string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"აპს შეეძლება არასაჩქარო შეტყობინებების გაგზავნა, რომელიც რჩებიან გაგზავნის დასრულების შემდეგაც. მავნე აპლიკაციებს შეუძლიათ თქვენი ტელეფონის მუშაობის შენელება ან შეფერხება ზედმეტად დიდი მოცულობის მეხსიერების გამოყენების შედეგად."</string>
- <string name="permlab_readContacts" msgid="8348481131899886131">"თქვენი კონტაქტების წაკითხვა"</string>
- <string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"აპს შეეძლება, წაიკითხოს თქვენ ტაბლეტზე შენახული კონტაქტების მონაცემები, მათ შორის ინფორმაცია კონკრეტულ ადამიანებთან თქვენი დარეკვის, ელფოსტის გაგზავნის ან კომუნიკაციის სიხშირის შესახებ. ეს ნებართვა უფლებას აძლევს აპებს, შეინახონ თქვენი კონტაქტების მონაცემები და მავნე აპებმა შეიძლება გააზიარონ საკონტაქტო მონაცემები თქვენგან დამოუკიდებლად. "</string>
- <string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"აპს შეეძლება, წაიკითხოს თქვენ ტელეფონზე შენახული კონტაქტების მონაცემები, მათ შორის ინფორმაცია კონკრეტულ ადამიანებთან თქვენი დარეკვის, ელფოსტის გაგზავნის ან კომუნიკაციის სიხშირის შესახებ. ეს ნებართვა უფლებას აძლევს აპებს, შეინახონ თქვენი კონტაქტების მონაცემები და მავნე აპებმა შეიძლება გააზიარონ საკონტაქტო მონაცემები თქვენგან დამოუკიდებლად. "</string>
- <string name="permlab_writeContacts" msgid="5107492086416793544">"თქვენი კონტაქტების შეცვლა"</string>
- <string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"აპს შეეძლება, შეცვალოს თქვენ ტაბლეტზე შენახული კონტაქტების მონაცემები, მათ შორის ინფორმაცია კონკრეტულ ინდივიდუალებთან თქვენი დარეკვის, ელფოსტის გაგზავნის ან კომუნიკაციის სიხშირის შესახებ. ეს ნებართვა უფლებას აძლევს აპებს, წაშალოს საკონტაქტო მონაცემები. "</string>
- <string name="permdesc_writeContacts" product="default" msgid="589869224625163558">"აპს შეეძლება, შეცვალოს თქვენ ტელეფონზე შენახული კონტაქტების მონაცემები, მათ შორის ინფორმაცია კონკრეტულ ინდივიდუალებთან თქვენი დარეკვის, ელფოსტის გაგზავნის ან კომუნიკაციის სიხშირის შესახებ. ეს ნებართვა უფლებას აძლევს აპებს, წაშალოს საკონტაქტო მონაცემები. "</string>
- <string name="permlab_readCallLog" msgid="3478133184624102739">"ზარების ჟურნალის წაკითხვა"</string>
- <string name="permdesc_readCallLog" product="tablet" msgid="3700645184870760285">"აპს შეეძლება თქვენი ტაბლეტის გამავალი და შემომავალი ზარების ჟურნალის ნახვა, ასევე ექნება ამ ჟურნალის შენახვის უფლება. ეს მავნე აპლიკაციებს საშუალებას მისცემს ნებართვის გარეშე გააზიარონ თქვენი ზარების ჟურნალი."</string>
- <string name="permdesc_readCallLog" product="default" msgid="5777725796813217244">"აპს შეეძლება თქვენი ტელეფონის გამავალი და შემომავალი ზარების ჟურნალის ნახვა, ასევე ექნება ამ ჟურნალის შენახვის უფლება. ეს მავნე აპლიკაციებს საშუალებას მისცემს ნებართვის გარეშე გააზიარონ თქვენი ზარების ჟურნალი."</string>
- <string name="permlab_writeCallLog" msgid="8552045664743499354">"ზარების ჟურნალში ჩაწერა"</string>
- <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"აპს შეეძლება, შეცვალოს თქვენი ტაბლეტის ზარების ჟურნალი, მათ შორის შემომავალი და გამავალი ზარების მონაცემები. მავნე აპებმა შეიძლება გამოიყენონ ეს თქვენი ზარების ჟურნალის წასაშლელად ან შესაცვლელად."</string>
- <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"აპს შეეძლება, შეცვალოს თქვენი ტელეფონის ზარების ჟურნალი, მათ შორის შემომავალი და გამავალი ზარების მონაცემები. მავნე აპებმა შეიძლება გამოიყენონ ეს თქვენი ზარების ჟურნალის წასაშლელად ან შესაცვლელად."</string>
- <string name="permlab_readProfile" msgid="4701889852612716678">"თქვენი საკონტაქტო ინფორმაციის ნახვა"</string>
- <string name="permdesc_readProfile" product="default" msgid="5462475151849888848">"აპს შეეძლება მოწყობილობაზე შენახული პირადი პროფილის ინფორმაციის წაკითხვა, მაგალითად, თქვენი სახელისა და საკონტაქტო ინფორმაციის. ეს ნიშნავს, რომ აპს შეუძლია თქვენი იდენტიფიცირება და თქვენი პირადი ინფორმაციის სხვებისთვის გაგზავნა."</string>
- <string name="permlab_writeProfile" msgid="907793628777397643">"თქვენი საკონტაქტო ინფორმაციის შეცვლა"</string>
- <string name="permdesc_writeProfile" product="default" msgid="5552084294598465899">"აპს შეეძლება მოწყობილობაზე შენახული პირადი პროფილის ინფორმაციის შეცვლა ან დამატება, მაგალითად, თქვენი სახელისა და საკონტაქტო ინფორმაციის. ეს ნიშნავს, რომ აპს შეუძლია თქვენი იდენტიფიცირება და თქვენი პირადი ინფორმაციის სხვებისთვის გაგზავნა."</string>
- <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"სოციალური ნაკადის წაკითხვა"</string>
- <string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"აპს შეეძლება თქვენი და თქვენი მეგობრების სოციალური განახლებებთან წვდომა და სინქრონიზაცია. ინფორმაციის გაზიარებისას იყავით ფრთხიად - აპს ექნება შესაძლებლობა, რომ წაიკითხოს სოციალურ ქსელებში კომუნიკაცია თქვენსა და თქვენს მეგობრებს შორის კონფიდენციალურობის მიუხედავად. შენიშვნა: ეს უფლება შესაძლოა ვერ იყოს გამოყენებული ყველა სოციალურ ქსელში."</string>
- <string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"თქვენს სოციალურ მაუწყებლობაზე დაწერა"</string>
- <string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"აპს შეეძლება, გიჩვენოთ თქვენი მეგობრების სოციალური სიახლეები. ფრთხილად იყავით ინფორმაციის გაზიარებისას - აპს შეუძლია შექმნას შეტყობინება, რომელიც თითქოსდა მეგობრისგან არის მოწერილი. შენიშვნა: ეს ნებართვა არ შეიძლება შესრულდეს ყველა სოციალურ ქსელში."</string>
- <string name="permlab_readCalendar" msgid="5972727560257612398">"კალენდრის ღონისძიებებისა და კონფიდენციალური ინფორმაციის წაკითხვა"</string>
- <string name="permdesc_readCalendar" product="tablet" msgid="4216462049057658723">"აპს შეეძლება, წაიკითხოს თქვენ ტაბლეტზე შენახული კალენდრის ყველა მოვლენა, მათ შორის მეგობრებისა და თანამშრომლების მოვლენებიც. ამან შეიძლება უფლება მისცეს აპს, გააზიაროს ან შეინახოს თქვენი კალენდრის მონაცემები, მიუხედავად კონფიდენციალურობისა თუ მგრძობიარობისა."</string>
- <string name="permdesc_readCalendar" product="default" msgid="7434548682470851583">"აპს შეეძლება, წაიკითხოს თქვენს ტელეფონზე შენახული კალენდრის ყველა მოვლენა, მათ შორის მეგობრებისა და თანამშრომლების მოვლენებიც. ამან შეიძლება უფლება მისცეს აპს, გააზიაროს ან შეინახოს თქვენი კალენდრის მონაცემები, მიუხედავად კონფიდენციალურობისა თუ მგრძობიარობისა."</string>
- <string name="permlab_writeCalendar" msgid="8438874755193825647">"კალენდრის ღონისძიებების დამატება და შეცვლა და მფლობელის გარეშე ელფოსტის გაგზავნა სტუმრებთან."</string>
- <string name="permdesc_writeCalendar" product="tablet" msgid="6679035520113668528">"აპს შეეძლება იმ ღონისძიებების დამატება, წაშლა და შეცვლა, რომლებსაც თქვენს ტაბლეტზე ქმნით, ასევე თქვენი მეგობრების და თანამშრომლების ღონისძიებებიც. ამგვარად, აპს ექნება შესაძლებლობა ისე დააგზავნოს შეტყობინებები კალენდრის მფლობელის სახელით ან შეცვალოს ღონისძიებები, რომ მფლობელმა ამის შესახებ არაფერი იცოდეს."</string>
- <string name="permdesc_writeCalendar" product="default" msgid="2324469496327249376">"აპს შეეძლება იმ ღონისძიებების დამატება, წაშლა და შეცვლა, რომლებსაც თქვენს ტელეფონზე ქმნით, ასევე თქვენი მეგობრების და თანამშრომლების ღონისძიებებიც. ამგვარად, აპს ექნება შესაძლებლობა ისე დააგზავნოს შეტყობინებები კალენდრის მფლობელის სახელით ან შეცვალოს ღონისძიებები, რომ მფლობელმა ამის შესახებ არაფერი იცოდეს."</string>
- <string name="permlab_accessMockLocation" msgid="8688334974036823330">"მდებარეობის წყაროების იმიტირება ტესტირებისთვის"</string>
- <string name="permdesc_accessMockLocation" msgid="5808711039482051824">"აპს შეეძლება ტესტირებისთვის ყალბი ლოკაციების შექმნა, ან მდებარეობის ახალი პროვაიდერის დაყენება. ეს უფლებას მისცემს აპს, შეცვალოს მდებარეობის სხვა წყაროების მიერ, მაგ. GPS ან მდებარეობის პროვაიდერების მიერ მოწოდებული მდებარეობა და/ ან სტატუსი."</string>
- <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"მდებარეობის პროვაიდერის დამატებით ბრძანებებზე წვდომა"</string>
- <string name="permdesc_accessLocationExtraCommands" msgid="5945166642335800763">"აპს შეეძლება წვდომა ჰქონდეს მდებარეობის სერვისის დამატებით ბრძანებებზე. შესაძლოა აპმა ეს გამოიყენოს GPS-ისა და მდებარეობის სხვა წყაროების მუშაობის პროცესში ჩარევისთვის."</string>
- <string name="permlab_installLocationProvider" msgid="6578101199825193873">"მდებარეობის პროვაიდერის ინსტალაციის უფლება"</string>
- <string name="permdesc_installLocationProvider" msgid="9066146120470591509">"აპს შეეძლება ტესტირებისთვის ყალბი ლოკაციების შექმნა, ან მდებარეობის ახალი პროვაიდერის დაყენება. აპს საშუალება მიეცემა გადააკეთოს სხვა წყაროების მაგ.: GPS ან მდებარეობის პროვაიდერების მოწოდებული მდებარეობა ან/და სტატუსი."</string>
- <string name="permlab_accessFineLocation" msgid="1191898061965273372">"ზუსტი მდებარეობა (GPS და ქსელის კოორდინატების მიხედვით)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"აძლევს აპს უფლებას მოიპოვოს ზუსტი მდებარეობა გლობალური პოზიციონირების სისტემის (GPS) გამოყენებით ან ქსელის მდებარეობის წყაროს მიხედვით, როგორიცაა ქსელის ანძები და Wi-Fi. მდებარეობის ეს სერვისები ჩართული უნდა იყოს და თქვენს მოწყობილობაზე აპისთვის მისაწვდომი, რათა შეძლოს მათი გამოყენება. აპებში შესაძლებელია მათი გამოყენება თქვენი მდებარეობის განსასაზღვრად და ამან ელემენტის დამატებითი ხარჯვა შეიძლება გამოიწვიოს."</string>
- <string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"სავარაუდო (ქსელის კოორდინატების მიხედვით) მდებარეობა"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"აპს შეეძლება გაიგოს თქვენი სავარაუდო მდებარეობა. ის გამოითვლება მდებარეობის სერვისის მიერ ქსელის მონაცემების - მობილური კავშირგაბმულობის ანძებისა და Wi-Fi-ის მიხედვით. ეს სერვისები ჩართული უნდა იყოს თქვენს მოწყობილობაზე, ხოლო აპებს უნდა ჰქონდეთ მათი გამოყენების უფლება. აპები მათი მონაცემების მიხედვით სავარაუდო მდებარეობის გამოთვლას შეძლებენ."</string>
- <string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"SurfaceFlinger-ზე წვდომა"</string>
- <string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"აპს შეეძლება, გამოიყენოს SurfaceFlinger-ის დაბალი დონის ელემენტები."</string>
- <string name="permlab_readFrameBuffer" msgid="6690504248178498136">"ჩარჩოს ბუფერის წაკითხვა"</string>
- <string name="permdesc_readFrameBuffer" msgid="4937405521809454680">"აპს შეეძლება წაიკითხოს ბუფერული ჩარჩოს კონტენტი."</string>
- <string name="permlab_accessInputFlinger" msgid="5348635270689553857">"InputFlinger-ზე წვდომა"</string>
- <string name="permdesc_accessInputFlinger" msgid="2104864941201226616">"აპს შეეძლება, გამოიყენოს InputFlinger-ის დაბალი დონის ფუნქციები."</string>
- <string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"Wifi ეკრანის კონფიგურაცია"</string>
- <string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"აპს შეეძლება Wifi ეკრანებთან დაკავშირება და დაკონფიგურირება."</string>
- <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"Wifi ეკრანების მართვა"</string>
- <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"აპს შეეძლება აკონტროლოს Wifi ეკრანების დაბალი დონის ფუნქციები."</string>
- <string name="permlab_captureAudioOutput" msgid="6857134498402346708">"გამომავალი აუდიოს დაჭერა"</string>
- <string name="permdesc_captureAudioOutput" msgid="6210597754212208853">"საშუალებას აძლევს აპს დაიჭიროს და გადაამისამართოს გამომავალი აუდიო."</string>
- <string name="permlab_captureVideoOutput" msgid="2246828773589094023">"გამომავალი ვიდეოს დაჭერა"</string>
- <string name="permdesc_captureVideoOutput" msgid="359481658034149860">"საშუალებას აძლევს აპს დაიჭიროს და გადაამისამართოს გამომავალი ვიდეო."</string>
- <string name="permlab_captureSecureVideoOutput" msgid="7815398969303382016">"გამომავალი დაცული ვიდეოს დაჭერა"</string>
- <string name="permdesc_captureSecureVideoOutput" msgid="2779793064709350289">"საშუალებას აძლევს აპს დაიჭიროს და გადაამისამართოს გამომავალი დაცული ვიდეო."</string>
- <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"თქვენი აუდიო პარამეტრების შეცვლა"</string>
- <string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"აპს შეეძლება აუდიოს გლობალური პარამეტრების შეცვლა. მაგ.: ხმის სიმაღლე და რომელი დინამიკი გამოიყენება სიგნალის გამოსტანად."</string>
- <string name="permlab_recordAudio" msgid="3876049771427466323">"აუდიოს ჩაწერა"</string>
- <string name="permdesc_recordAudio" msgid="4906839301087980680">"აპს შეეძლება აუდიო ჩაწერა მიკროფონით. ნებართვა აპს აუდიო ჩაწერის უფლებას აძლევს ნებისმიერ დროს, თქვენი თანხმობის გარეშე."</string>
- <string name="permlab_camera" msgid="3616391919559751192">"სურათებისა და ვიდეოების გადაღება"</string>
- <string name="permdesc_camera" msgid="8497216524735535009">"აპს შეეძლება კამერით სურათისა და ვიდეოს გადაღება. ეს ნებართვა აპს უფლებას აძლევს, ნებისმიერ დროს გამოიყენოს კამერა თქვენი დადასტურების გარეშე."</string>
- <string name="permlab_cameraDisableTransmitLed" msgid="2651072630501126222">"კამერის გამოყენებისას გადამცემი ინდიკატორის LED გათიშვა"</string>
- <string name="permdesc_cameraDisableTransmitLed" msgid="4764585465480295341">"ნებას რთავს წინასწარ დაყენებული სისტემის აპლიკაციას, გამორთოს კამერის გამოყენების ინდიკატორი LED."</string>
- <string name="permlab_brick" product="tablet" msgid="2961292205764488304">"მუდმივად გამორთული ტაბლეტი"</string>
- <string name="permlab_brick" product="default" msgid="8337817093326370537">"ტელეფონის სამუდამოდ დეაქტივაცია"</string>
- <string name="permdesc_brick" product="tablet" msgid="4334818808001699530">"აპს შეეძლება მთელი ტაბლეტის სამუდამოდ გათიშვა. ეს ძალიან სახიფათოა."</string>
- <string name="permdesc_brick" product="default" msgid="5788903297627283099">"აპს შეეძლება მთელი ტელეფონის სამუდამოდ გათიშვა. ეს ძალიან სახიფათოა."</string>
- <string name="permlab_reboot" product="tablet" msgid="3436634972561795002">"ტაბლეტის გადატვირთვის იძულება"</string>
- <string name="permlab_reboot" product="default" msgid="2898560872462638242">"ტელეფონის გადატვირთვის იძულება"</string>
- <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"აპს შეეძლება ტაბლეტის იძულებითი გადატვირთვა."</string>
- <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"აპს შეეძლება მოწყობილობის იძულებითი გადატვირთვა."</string>
- <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"UBS ბარათის ფაილურ სისტემაზე წვდომა"</string>
- <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"SD ბარათის ფაილურ სისტემაზე წვდომა"</string>
- <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"აპს შეეძლება, მიუერთოს და გამოაერთოს ფაილების სისტემები მოსახსნელი მეხსიერებისთვის."</string>
- <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB მეხსიერების წაშლა"</string>
- <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD ბარათის წაშლა"</string>
- <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"აპს შეეძლება, დააფორმატოს მოსახსნელი მეხსიერება."</string>
- <string name="permlab_asec_access" msgid="3411338632002193846">"შიდა მეხსიერების შესახებ ინფორმაციის მიღება"</string>
- <string name="permdesc_asec_access" msgid="3094563844593878548">"აპს შეეძლება, მიიღოს ინფორმაცია შიდა მეხსიერებაზე."</string>
- <string name="permlab_asec_create" msgid="6414757234789336327">"შიდა მეხსიერების შექმნა"</string>
- <string name="permdesc_asec_create" msgid="4558869273585856876">"აპს შეეძლება მეხსიერების შიდა საცავის შექმნა."</string>
- <string name="permlab_asec_destroy" msgid="526928328301618022">"შიდა მეხსიერების განადგურება"</string>
- <string name="permdesc_asec_destroy" msgid="7218749286145526537">"აპს შეეძლება შიდა მეხსიერების განადგურება."</string>
- <string name="permlab_asec_mount_unmount" msgid="8877998101944999386">"შიდა მეხსიერების მიერთება/გამოერთება"</string>
- <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"აპს შეეძლება შიდა მეხსიერების მიერთება / გამოერთება."</string>
- <string name="permlab_asec_rename" msgid="7496633954080472417">"შიდა მეხსიერებისთვის სახელის გადარქმევა"</string>
- <string name="permdesc_asec_rename" msgid="1794757588472127675">"აპს შეეძლება შიდა მეხსიერებისთვის სახელის გადარქმევა."</string>
- <string name="permlab_vibrate" msgid="7696427026057705834">"ვიბრაციის კონტროლი"</string>
- <string name="permdesc_vibrate" msgid="6284989245902300945">"აპს შეეძლება, მართოს ვიბრირება."</string>
- <string name="permlab_flashlight" msgid="2155920810121984215">"სასიგნალო შუქის მართვა"</string>
- <string name="permdesc_flashlight" msgid="6522284794568368310">"აპს შეეძლება, მართოს განათება."</string>
- <string name="permlab_manageUsb" msgid="1113453430645402723">"USB მოწყობილობების უფლებებისა და სასურველი პარამეტრების მართვა"</string>
- <string name="permdesc_manageUsb" msgid="7776155430218239833">"აპს შეეძლება USB მოწყობილობების პარამეტრებისა და ნებართვების მართვა."</string>
- <string name="permlab_accessMtp" msgid="4953468676795917042">"MTP პროტოკოლის დანერგვა"</string>
- <string name="permdesc_accessMtp" msgid="6532961200486791570">"ანიჭებს წვდომას kernel MTP დრაივერს MTP USB პროტოკოლის იმპლემენტაციისთვის."</string>
- <string name="permlab_hardware_test" msgid="4148290860400659146">"აპარატურული აღჭურვილობის ტესტირება"</string>
- <string name="permdesc_hardware_test" msgid="6597964191208016605">"აპს შეეძლება, მართოს სხვადასხვა პერიფერიული მოწყობილობა აპარატურის ტესტირების მიზნით."</string>
- <string name="permlab_callPhone" msgid="3925836347681847954">"პირდაპირი დარეკვა ტელეფონის ნომრებზე"</string>
- <string name="permdesc_callPhone" msgid="3740797576113760827">"აპს შეეძლება დარეკოს ტელეფონის ნომრებზე თქვენი ჩარევის გარეშე. ამან შესაძლოა გამოიწვიოს თქვენს სატელეფონი ქვითარზე მოულოდნელი ხარჯებისა და ზარების გაჩენა. გაითვალისწინეთ, რომ აპს გადაუდებელი დახმარების ნომრებზე დარეკვა არ შეუძლია. მავნე აპებს შეეძლება თქვენი დადასტურების გარეშე ზარების განხორციელება და შესაბამისი საფასურის გადახდაც მოგიწევთ."</string>
- <string name="permlab_callPrivileged" msgid="4198349211108497879">"პირდაპირი დარეკვა ტელეფონის ნებისმიერ ნომერზე"</string>
- <string name="permdesc_callPrivileged" msgid="1689024901509996810">"აპს შეეძლება თქვენი მონაწილეობის გარეშე დარეკოს ნებისმიერ ტელეფონის ნომერზე, მათ შორის საგანგებო ნომრებზე. მავნე აპები შეძლებენ არასასურველი ან უკანონო ზარების საგანგებო სამსახურების სიებში განთავსებას."</string>
- <string name="permlab_performCdmaProvisioning" product="tablet" msgid="4842576994144604821">"CDMA ტაბლეტის დაყენების პირდაპირ დაწყება"</string>
- <string name="permlab_performCdmaProvisioning" product="default" msgid="5604848095315421425">"CDMA ტელეფონის დაყენების პირდაპირ დაწყება"</string>
- <string name="permdesc_performCdmaProvisioning" msgid="1994193538802314186">"აპს შეეძლება, დაიწყოს CDMA უზრუნველყოფა. მავნე აპებმა შეიძლება ზედმეტად, საჭიროების გარეშე დაიწყონ CDMA უზრუნველყოფა."</string>
- <string name="permlab_locationUpdates" msgid="7785408253364335740">"მდებარეობის განახლების შეტყობინებების კონტროლი"</string>
- <string name="permdesc_locationUpdates" msgid="1120741557891438876">"აპს შეეძლება მდებარეობის განახლების შესახებ რადიო შეტყობინებების აქტივაცია/დეაქტივაცია. ჩვეულებრივი აპები ამ ფუნქციას არ იყენებენ."</string>
- <string name="permlab_checkinProperties" msgid="7855259461268734914">"სარეგისტრაციო პარამეტრებზე წვდომა"</string>
- <string name="permdesc_checkinProperties" msgid="4024526968630194128">"აპებს შეეძლებათ რეგისტრაციის სამსახურის მეშვეობით დამატებული თვისებების წასაკითხად ან ჩასაწერად წვდომა. არ გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_bindGadget" msgid="776905339015863471">"ვიჯეტების არჩევა"</string>
- <string name="permdesc_bindGadget" msgid="8261326938599049290">"აპს შეეძლება უთხრას სისტემას, თუ რომელმა აპმა რომელი ვიჯეტი შეიძლება გამოიყენოს. ამ ნებართვის მქონე აპს შეუძლია, პირად მონაცემებზე წვდომა მისცეს სხვა აპებს. არ გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"ტელეფონის მდგომარეობის შეცვლა"</string>
- <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"აპს შეეძლება აკონტროლოს მოწყობილობაზე ტელეფონის ფუნქციები. ამ უფლების მქონე აპს შეუძლია ქსელების გადართვა, ტელეფონის რადიოს ჩართვა და გამორთვა, მომხმარებლისათვის შეტყობინების გარეშე."</string>
- <string name="permlab_readPhoneState" msgid="9178228524507610486">"ტელეფონის სტატუსისა და იდენტობის წაკითხვა"</string>
- <string name="permdesc_readPhoneState" msgid="1639212771826125528">"აპს შეეძლება ჰქონდეს წვდომა მოწყობილობის სატელეფონო ფუნქციებზე. აპმა მსგავსი უფლებით შეძლებს დაადგინოს ტელეფონის ნომერი, მისი სერიული გამოცემა, აქტიური ზარი, დაკავშირებული ნომერი და მსგავსი."</string>
- <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"დაიცავით ტაბლეტი დაძინებისგან"</string>
- <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"ტელეფონის ძილის რეჟიმში გადასვლის აღკვეთა"</string>
- <string name="permdesc_wakeLock" product="tablet" msgid="7311319824400447868">"აპს შეეძლება ხელი შეუშალოს ტაბლეტის დაძინებას."</string>
- <string name="permdesc_wakeLock" product="default" msgid="8559100677372928754">"აპს შეეძლება ხელი შეუშალოს ტელეფონის დაძინებას."</string>
- <string name="permlab_devicePower" product="tablet" msgid="2787034722616350417">"ტაბლეტის ჩართვა ან გამორთვა"</string>
- <string name="permlab_devicePower" product="default" msgid="4928622470980943206">"ტელეფონის ჩართვა ან გამორთვა"</string>
- <string name="permdesc_devicePower" product="tablet" msgid="6689862878984631831">"აპს შეეძლება, ჩართოს ან გამორთოს ტაბლეტი."</string>
- <string name="permdesc_devicePower" product="default" msgid="6037057348463131032">"აპს შეეძლება, ჩართოს ან გამორთოს ტელეფონი."</string>
- <string name="permlab_factoryTest" msgid="3715225492696416187">"ქარხნულ სატესტო რეჟიმში გაშვება"</string>
- <string name="permdesc_factoryTest" product="tablet" msgid="3952059318359653091">"მწარმოებლის დაბალი დონის ტესტის რეჟიმში გაშვება, რომლის დროსაც სრულად არის ხელმისაწვდომი ტაბლეტის აპარატული უზრუნველყოფა. ხელმისაწვდომია მხოლოდ მწარმოებლის ტესტის რეჟიმში ჩართულ ტაბლეტზე."</string>
- <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"მწარმოებლის დაბალი დონის ტესტის რეჟიმში გაშვება, რომლის დროსაც სრულად არის ხელმისაწვდომი ტელეფონის აპარატული უზრუნველყოფა. ხელმისაწვდომია მხოლოდ მწარმოებლის ტესტის რეჟიმში ჩართულ ტელეფონზე."</string>
- <string name="permlab_setWallpaper" msgid="6627192333373465143">"ფონის დაყენება"</string>
- <string name="permdesc_setWallpaper" msgid="7373447920977624745">"აპს შეეძლება, დააყენოს სისტემის ფონი."</string>
- <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ფონის ზომის შესწორება"</string>
- <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"აპს შეეძლება მინიშნებების დაყენება სისტემის ფონის ზომის მიხედვით."</string>
- <string name="permlab_masterClear" msgid="2315750423139697397">"სისტემის დაბრუნება ქარხნულ ნაგულისხმევ მდგომარეობაში"</string>
- <string name="permdesc_masterClear" msgid="3665380492633910226">"აპს შეეძლება, სისტემა სრულად გადაყენოს ქარხნულ პარამეტრებზე და წაშალოს ყველა მონაცემი, კონფიგურაცია და დაყენებული აპები."</string>
- <string name="permlab_setTime" msgid="2021614829591775646">"დროის დაყენება"</string>
- <string name="permdesc_setTime" product="tablet" msgid="1896341438151152881">"აპს შეეძლება ტაბლეტის საათის დროის შეცვლა."</string>
- <string name="permdesc_setTime" product="default" msgid="1855702730738020">"აპს შეეძლება ტელეფონის საათის დროის შეცვლა."</string>
- <string name="permlab_setTimeZone" msgid="2945079801013077340">"დროის სარტყლის დაყენება"</string>
- <string name="permdesc_setTimeZone" product="tablet" msgid="1676983712315827645">"აპს შეეძლება, შეცვალოს ტაბლეტის დროის სარტყელი."</string>
- <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"აპს შეეძლება ტელეფონის დროის სარტყელის შეცვლა."</string>
- <string name="permlab_accountManagerService" msgid="4829262349691386986">"იმოქმედეთ როგორც AccountManagerService"</string>
- <string name="permdesc_accountManagerService" msgid="1948455552333615954">"აპს შეეძლება განახორციელოს ზარები AccountAuthenticators-ზე."</string>
- <string name="permlab_getAccounts" msgid="1086795467760122114">"მოწყობილობაზე ანგარიშების მოძიება"</string>
- <string name="permdesc_getAccounts" product="tablet" msgid="2741496534769660027">"აპს შეეძლება, მიიღოს ტაბლეტისთვის ცნობილი ანგარიშების სია. ეს შეიძლება მოიცავდეს ნებისმიერ ანგარიშს, რომელიც თქვენ მიერ დაყენებული აპლიკაციებით შეიქმნა."</string>
- <string name="permdesc_getAccounts" product="default" msgid="3448316822451807382">"აპს შეეძლება, მიიღოს ტელეფონისთვის ცნობილი ანგარიშების სია. ეს შეიძლება მოიცავდეს ნებისმიერ ანგარიშს, რომელიც თქვენ მიერ დაყენებული აპლიკაციებით შეიქმნა."</string>
- <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"ანგარიშების შექმნა და პაროლების დაყენება"</string>
- <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"აპს შეეძლება ანგარიშების მენეჯერის ავტორიზაციის შესაძლებლობების გამოყენება. მათ შორის ანგარიშების შექმნა და მათთვის პაროლების მიღება და დაყენება."</string>
- <string name="permlab_manageAccounts" msgid="4983126304757177305">"ანგარიშების დამატება ან წაშლა"</string>
- <string name="permdesc_manageAccounts" msgid="8698295625488292506">"აპს შეეძლება ისეთი ოპერაციების განხორციელება, როგორიცაა ანგარიშების დამატება და წაშლა, ასევე მათი პაროლების წაშლაც."</string>
- <string name="permlab_useCredentials" msgid="235481396163877642">"მოწყობილობაზე ანგარიშების გამოყენება"</string>
- <string name="permdesc_useCredentials" msgid="7984227147403346422">"აპს შეეძლება, მოითხოვოს ავტორიზაციის საიდენტიფიკაციო ნიშნები."</string>
- <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ქსელის კავშირების ნახვა"</string>
- <string name="permdesc_accessNetworkState" msgid="8318964424675960975">"აპს შეეძლება ქსელის კავშირის შესახებ ინფორმაციის ნახვა, მაგ. რომელი ქსელები არსებობს და რომელია დაკავშირებული."</string>
- <string name="permlab_createNetworkSockets" msgid="8018758136404323658">"ქსელზე სრული წვდომა"</string>
- <string name="permdesc_createNetworkSockets" msgid="3403062187779724185">"აპს შეეძლება შექმნას ქსელური ბუდეები და გამოიყენოს მორგებული ქსელის პროტოკოლები. ბრაუზერი და სხვა აპლიკაციები უზრუნველყოფს ინტერნეტში მონაცემების გაგზავნის საშუალებას, ამგვარად ეს უფლება ინფორმაციის გასაგზავნად საჭირო არაა."</string>
- <string name="permlab_writeApnSettings" msgid="505660159675751896">"ქსელის პარამეტრებისა და ტრაფიკის შეცვლა / შეწყვეტა"</string>
- <string name="permdesc_writeApnSettings" msgid="5333798886412714193">"აპს შეეძლება ქსელის პარამეტრების შეცვლა, მთელი ქსელის ტრაფიკის შეწყვეტა და ინსპექტირება, მაგალითად, ნებისმიერი APN-ის პორტისა და პროქსის შეცვლა. მავნე აპებს შეეძლებათ ქსელის პაკეტების მონიტორინგი, გადამისამართება ან შეცვლა თქვენთვის შეტყობინების გარეშე."</string>
- <string name="permlab_changeNetworkState" msgid="958884291454327309">"ქსელის დაკავშირებულობის შეცვლა"</string>
- <string name="permdesc_changeNetworkState" msgid="6789123912476416214">"აპს შეეძლება, შეცვალოს ქსელის კავშირის მდგომარეობა."</string>
- <string name="permlab_changeTetherState" msgid="5952584964373017960">"მიერთებული კავშირის შეცვლა"</string>
- <string name="permdesc_changeTetherState" msgid="1524441344412319780">"აპს შეეძლება, შეცვალოს მობილური ქსელის კავშირის მდგომარეობა."</string>
- <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"ფონური მონაცემების გამოყენების პარამეტრების შეცვლა"</string>
- <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"აპს შეეძლება, შეცვალოს უკანა ფონის მონაცემების გამოყენების პარამეტრები."</string>
- <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi კავშირების ნახვა"</string>
- <string name="permdesc_accessWifiState" msgid="5002798077387803726">"აპს შეეძლება Wi-Fi ქსელის შესახებ ინფორმაციის ნახვა, მაგალითად, Wi-Fi ჩართულია თუ არა, ასევე დაკავშირებული Wi-Fi მოწყობილობის სახელის ნახვა."</string>
- <string name="permlab_changeWifiState" msgid="6550641188749128035">"Wi-Fi-ისთან დაკავშირება ან კავშირის შეწყვეტა"</string>
- <string name="permdesc_changeWifiState" msgid="7137950297386127533">"აპს შეეძლება Wi-Fi წვდომის წერტილებთან დაკავშირება და კავშირის გაწყვეტა და მოწყობილობის კონფიგურაციის შეცვლა Wi-Fi ქსელებისთვის."</string>
- <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"ნებართვა Wi-Fi მრავალმისამართიან მიღებაზე"</string>
- <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"აპს შეეძლება, მიიღოს Wi-Fi ქსელში ყველა მოწყობილობაზე გაგზავნილი პაკეტები ჯგუფური მისამართების გამოყენებით. მოიხმარს მეტ ენერგიას, ვიდრე არამრავალმისამართიანი რეჟიმი."</string>
- <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"აპს შეეძლება, მიიღოს Wi-Fi ქსელში ყველა მოწყობილობაზე გაგზავნილი პაკეტები ჯგუფური მისამართების გამოყენებით. მოიხმარს მეტ ენერგიას, ვიდრე არამრავალმისამართიანი რეჟიმი."</string>
- <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Bluetooth-ის პარამეტრებზე წვდომა"</string>
- <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"აპს შეეძლება ადგილობრივი Bluetooth ტაბლეტის პარამეტრების დაყენება და დისტანციური მოწყობილობების აღმოჩენა და დაწყვილება."</string>
- <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"აპს შეეძლება ტელეფონის ადგილობრივი Bluetooth პარამეტრების დაყენება და დისტანციური მოწყობილობების აღმოჩენა და დაწყვილება."</string>
- <string name="permlab_accessWimaxState" msgid="4195907010610205703">"WiMAX-თან დაკავშირება და კავშირის გაწყვეტა"</string>
- <string name="permdesc_accessWimaxState" msgid="6360102877261978887">"აპს შეეძლება განსაზღვროს, WiMAX არის თუ არა ჩართული და ასევე ინფორმაცია ნებისმიერი დაკავშირებული WiMAX ქსელის შესახებ."</string>
- <string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX მდგომარეობის შეცვლა"</string>
- <string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"აპს შეეძლება, დაუკავშიროს და გამოაერთოს ტაბლეტი WiMAX ქსელებიდან."</string>
- <string name="permdesc_changeWimaxState" product="default" msgid="697025043004923798">"აპს შეეძლება, დაუკავშიროს და გამოაერთოს ტელეფონი WiMAX ქსელებიდან."</string>
- <string name="permlab_bluetooth" msgid="6127769336339276828">"Bluetooth მოწყობილობებთან დაწყვილება"</string>
- <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"აპს შეეძლება, ნახოს Bluetooth-ის კონფიგურაცია ტაბლეტზე, შექმნას და მიიღოს კავშირები დაწყვილებულ მოწყობილობებთან."</string>
- <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"აპს შეეძლება, ნახოს Bluetooth-ის კონფიგურაცია ტელეფონზე და შექმნას და მიიღოს კავშირები დაწყვილებულ მოწყობილობებთან."</string>
- <string name="permlab_nfc" msgid="4423351274757876953">"ახლო მოქმედების რადიოკავშირი (NFC) მართვა"</string>
- <string name="permdesc_nfc" msgid="7120611819401789907">"აპს შეეძლება ახლო მოქმედების რადიოკავშირის (NFC) მეშვეობით ტეგების, ბარათებისა და წამკითხველების შემცველი მონაცემების მიმოცვლა."</string>
- <string name="permlab_disableKeyguard" msgid="3598496301486439258">"თქვენი ეკრანის ბლოკის გათიშვა"</string>
- <string name="permdesc_disableKeyguard" msgid="6034203065077122992">"შეეძლება კლავიატურის დაბლოკვისა და პაროლით უზრუნველყოფილი ნებისმიერი უსაფრთხოების ფუნქციის დეაქტივაცია. მაგალითად, ტელეფონი შემომავალი ზარის დროს აუქმებს კლავიატურის დაბლოკვას და კვლავ ააქტიურებს მას, როგორც კი ზარი დასრულდება."</string>
- <string name="permlab_readSyncSettings" msgid="6201810008230503052">"სინქრონიზაციის პარამეტრების წაკითხვა"</string>
- <string name="permdesc_readSyncSettings" msgid="2706745674569678644">"აპს შეეძლება, წაიკითხოს ანგარიშის სინქრონიზაციის პარამეტრები. მაგალითად, მას შეეძლება განსაზღვროს, არის თუ არა People აპი სინქრონიზებული ანგარიშთან."</string>
- <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"სინქრონიზაციის ჩართვა და გამორთვა"</string>
- <string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"აპს შეეძლება, შეცვალოს ანგარიშის სინქრონიზაციის პარამეტრები. მაგალითად, მისი გამოყენება შეიძლება ანგარიშის People აპთან სინქრონიზაციის ჩასართავად."</string>
- <string name="permlab_readSyncStats" msgid="7396577451360202448">"სინქრონიზაციის სტატისტიკების წაკითხვა"</string>
- <string name="permdesc_readSyncStats" msgid="1510143761757606156">"აპს შეეძლება ანგარიშის სინქრონიზაციის სტატისტიკის, მათ შორის სინქრონიზაციის მოვლენების ისტორიისა და სინქრონიზაციისას გადაცემული მონაცემების რაოდენობის წაკითხვა."</string>
- <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"გამოწერილი არხების წაკითხვა"</string>
- <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"აპს შეეძლება ინფორმაციის მოპოვება ბოლოს სინქრონიზებული არხების შესახებ."</string>
- <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"გამოწერილი არხების შეცვლა"</string>
- <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"აპს შეეძლება თქვენი ამჟამინდელი სინქრონიზებული არხების შეცვლა. მავნე აპებმა შესაძოა შეცვალონ თქვენი სინქრონიზებული არხები."</string>
- <string name="permlab_readDictionary" msgid="4107101525746035718">"ლექსიკონში თქვენი დამატებული ტერმინების ნახვა"</string>
- <string name="permdesc_readDictionary" msgid="659614600338904243">"აპს შეეძლება წაიკითხოს ყველა სიტყვა, სახელი და ფრაზა, რომელიც შეიძლება მომხმარებელმა შეიტანა მომხმარებლის ლექსიკონში."</string>
- <string name="permlab_writeDictionary" msgid="2183110402314441106">"მომხმარებლისთვის განკუთვნილ ლექსიკონში სიტყვების დამატება."</string>
- <string name="permdesc_writeDictionary" msgid="8185385716255065291">"აპს შეეძლება ახალი სიტყვების დამატება მომხმარებლის ლექსიკონში."</string>
- <string name="permlab_sdcardRead" product="nosdcard" msgid="8235341515605559677">"დაცულ მეხსიერებაზე საცდელი წვდომა"</string>
- <string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"დაცულ მეხსიერებაზე საცდელი წვდომა"</string>
- <string name="permdesc_sdcardRead" product="nosdcard" msgid="3642473292348132072">"აპს შეეძლება, მიაწოდოს USB მეხსიერებას ნებართვა, რომლებიც შემდგომ სხვა მოწყობილობებზეც იქნება ხელმისაწვდომი."</string>
- <string name="permdesc_sdcardRead" product="default" msgid="5914402684685848828">"აპს შეეძლება SD ბარათის ნებართვების შემოწმება, რომლებიც შემდგომ სხვა მოწყობილობებზეც გავრცელდება."</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"თქვენი USB მეხსიერების კონტენტის შეცვლა ან წაშლა"</string>
- <string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"თქვენი SD ბარათის კონტენტის შეცვლა ან წაშლა"</string>
- <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"უფლებას აძლევს აპს, ჩაწეროს USB მეხსიერებაზე."</string>
- <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"უფლებას აძლევს აპს, ჩაწეროს SD ბარათზე."</string>
- <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"შიდა მედია მეხსიერების კონტენტის შეცვლა/წაშლა"</string>
- <string name="permdesc_mediaStorageWrite" product="default" msgid="8189160597698529185">"აპლიკაციას შეეძლება შიდა მედია მეხსიერების კონტენტის შეცვლა."</string>
- <string name="permlab_manageDocs" product="default" msgid="5778318598448849829">"დოკუმენტების საცავის მართვა"</string>
- <string name="permdesc_manageDocs" product="default" msgid="8704323176914121484">"აპს შეეძლება დოკუმენტების საცავის მართვა."</string>
- <string name="permlab_sdcardAccessAll" msgid="8150613823900460576">"ყველა მომხმარებლის გარე მეხსიერებაზე წვდომა"</string>
- <string name="permdesc_sdcardAccessAll" msgid="3215208357415891320">"აპს შეეძლება ყველა მომხმარებლის გარე მეხსიერებასთან წვდომა."</string>
- <string name="permlab_cache_filesystem" msgid="5656487264819669824">"ქეშის ფაილურ სისტემაზე წვდომა"</string>
- <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"აპებს აძლევს ქეშირებული სისტემური ფაილების წაკითხვისა და მათში ჩანაწერების გაკეთების საშუალებას."</string>
- <string name="permlab_use_sip" msgid="5986952362795870502">"ინტერნეტ-ზარების წამოწყება/მიღება"</string>
- <string name="permdesc_use_sip" msgid="4717632000062674294">"აპს შეეძლება, გამოიყენოს SIP სერვისი ინტერნეტ ზარების განსახორციელებლად / საპასუხოდ."</string>
- <string name="permlab_readNetworkUsageHistory" msgid="7862593283611493232">"ქსელის გამოყენების ისტორიის წაკითხვა"</string>
- <string name="permdesc_readNetworkUsageHistory" msgid="7689060749819126472">"აპს შეეძლება კონკრეტული ქსელისა და აპების ისტორიული ქსელის გამოყენების წაკითხვას."</string>
- <string name="permlab_manageNetworkPolicy" msgid="2562053592339859990">"ქსელის დებულების მართვა"</string>
- <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"აპს საშუალება ექნება მართოს ქსელის პოლიტიკა და დააწესოს წესები ცალკეული აპებისთვის."</string>
- <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"ქსელის გამოყენების აღრიცხვის შეცვლა"</string>
- <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"აპს შეეძლება, შეცვალოს ქსელის გამოყენების აღრიცხვა აპებთან მიმართებაში. არ გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_markNetworkSocket" msgid="3658527214914959749">"სოკეტის ნიშნების შეცვლა"</string>
- <string name="permdesc_markNetworkSocket" msgid="7655568433696356578">"საშუალებას აძლევს აპს შეცვალოს მარშრუტიზაციის სოკეტის ნიშნები"</string>
- <string name="permlab_accessNotifications" msgid="7673416487873432268">"წვდომა შეტყობინებებთან"</string>
- <string name="permdesc_accessNotifications" msgid="458457742683431387">"აპს შეეძლება მოიძიოს, გამოიკვლიოს და წაშალოს შეტყობინებები, მათ შორის სხვა აპების მიერ გამოქვეყნებული."</string>
- <string name="permlab_bindNotificationListenerService" msgid="7057764742211656654">"შეტყობინებების მოსმენის სერვისთან დაკავშირება"</string>
- <string name="permdesc_bindNotificationListenerService" msgid="985697918576902986">"მფლობელს შეეძლება შეტყობინებების მსმენლის სერვისის ზედა დონის ინტერფეისთან დაკავშირება. არ უნდა მოხდეს მისი გამოყენება ჩვეუელებრივი აპებისთვის.ფ"</string>
- <string name="permlab_invokeCarrierSetup" msgid="3699600833975117478">"ოპერატორის მიერ მოწოდებული კოფიგურაციის აპის გამოხმობა"</string>
- <string name="permdesc_invokeCarrierSetup" msgid="4159549152529111920">"საშუალებას აძლევს მფლობელს გამოიწვიოს ოპერატორის მიერ მოწოდებული კონფიგურაციის აპი. ჩვეულებრივ აპს ეს წესით არასოდეს არ უნდა დაჭირდეს."</string>
- <string name="permlab_accessNetworkConditions" msgid="8206077447838909516">"განხორციელდეს ქსელის მდგომარეობის მონიტორინგი"</string>
- <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"საშუალებას აძლევს აპლიკაციებს განახორციელოს ქსელის მდგომარეობის მონიტორინგი. ეს ფუნქცია ჩვეულებრივ აპებს არ ჭირდება."</string>
- <string name="policylab_limitPassword" msgid="4497420728857585791">"პაროლის წესების დაყენება"</string>
- <string name="policydesc_limitPassword" msgid="3252114203919510394">"გააკონტროლეთ ეკრანის განბლოკვის პაროლში დაშვებული სიმბოლოები და მისი სიგრძე."</string>
- <string name="policylab_watchLogin" msgid="914130646942199503">"ეკრანის განბლოკვის მცდელობების გაკონტროლება"</string>
- <string name="policydesc_watchLogin" product="tablet" msgid="3215729294215070072">"ეკრანის განბლოკვისთვის არასწორად აკრეფილი პაროლების რაოდენობის მონიტორინგი. ტაბლეტის დაბლოკვა ან მასზე არსებული ყველა მონაცემის წაშლა ძალიან ბევრჯერ არასწორი პაროლის შეყვანის შემთხვევაში."</string>
- <string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"ეკრანის განბლოკვისთვის არასწორად აკრეფილი პაროლების რაოდენობის მონიტორინგი. ტელეფონის დაბლოკვა ან მასზე არსებული ყველა მონაცემის წაშლა ძალიან ბევრჯერ არასწორი პაროლის შეყვანის შემთხვევაში."</string>
- <string name="policylab_resetPassword" msgid="2620077191242688955">"ეკრანის განბლოკვის პაროლის შეცვლა"</string>
- <string name="policydesc_resetPassword" msgid="605963962301904458">"შეცვალეთ ეკრანის განბლოკვის პაროლი."</string>
- <string name="policylab_forceLock" msgid="2274085384704248431">"ეკრანის დაბლოკვა"</string>
- <string name="policydesc_forceLock" msgid="1141797588403827138">"გააკონტროლეთ, როგორ და როდის დაიბლოკოს ეკრანი."</string>
- <string name="policylab_wipeData" msgid="3910545446758639713">"ყველა მონაცემის წაშლა"</string>
- <string name="policydesc_wipeData" product="tablet" msgid="4306184096067756876">"ტაბლეტის მონაცემების გაუფრთხილებლად წაშლა, ქარხნული მონაცემების აღდგენით"</string>
- <string name="policydesc_wipeData" product="default" msgid="5096895604574188391">"ტელეფონის მონაცემების გაუფრთხილებლად წაშლა, ქარხნული მონაცემების აღდგენით"</string>
- <string name="policylab_setGlobalProxy" msgid="2784828293747791446">"მოწყობილობის გლობალური პროქსის დაყენება"</string>
- <string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"დააყენეთ მოწყობილობა გლობალურ პროქსის სერვერის გამოსაყენებლად, როდესაც დებულება გააქტიურებულია. მხოლოდ მოწყობილობის პირველი ადმინი აყენებს ეფექტურ გლობალურ პროქსი სერვერს."</string>
- <string name="policylab_expirePassword" msgid="885279151847254056">"ეკრანის პაროლის ვადის დაყენება"</string>
- <string name="policydesc_expirePassword" msgid="1729725226314691591">"გააკონტროლეთ, თუ რამდენად ხშირად უნდა შეიცვალოს ეკრანის დაბლოკვის პაროლი."</string>
- <string name="policylab_encryptedStorage" msgid="8901326199909132915">"მეხსიერების დაშიფრვის დაყენება"</string>
- <string name="policydesc_encryptedStorage" msgid="2637732115325316992">"საჭიროა შენახული აპის მონაცემების დაშიფრვა."</string>
- <string name="policylab_disableCamera" msgid="6395301023152297826">"კამერების გათიშვა"</string>
- <string name="policydesc_disableCamera" msgid="2306349042834754597">"მოწყობილობის კამერების გამოყენების აღკვეთა."</string>
- <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"დაბლოკვის ფუნქციების გათიშვა"</string>
- <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"დაბლოკვისას ზოგიერთი ფუნქციის გამოყენების თავიდან აცილება."</string>
- <string-array name="phoneTypes">
- <item msgid="8901098336658710359">"სახლი"</item>
- <item msgid="869923650527136615">"მობილური"</item>
- <item msgid="7897544654242874543">"სამსახური"</item>
- <item msgid="1103601433382158155">"სამსახურის ფაქსი"</item>
- <item msgid="1735177144948329370">"სახლის ფაქსი"</item>
- <item msgid="603878674477207394">"პეიჯერი"</item>
- <item msgid="1650824275177931637">"სხვა"</item>
- <item msgid="9192514806975898961">"მორგებული"</item>
- </string-array>
- <string-array name="emailAddressTypes">
- <item msgid="8073994352956129127">"სახლი"</item>
- <item msgid="7084237356602625604">"სამსახური"</item>
- <item msgid="1112044410659011023">"სხვა"</item>
- <item msgid="2374913952870110618">"მორგებული"</item>
- </string-array>
- <string-array name="postalAddressTypes">
- <item msgid="6880257626740047286">"სახლი"</item>
- <item msgid="5629153956045109251">"სამსახური"</item>
- <item msgid="4966604264500343469">"სხვა"</item>
- <item msgid="4932682847595299369">"მორგებული"</item>
- </string-array>
- <string-array name="imAddressTypes">
- <item msgid="1738585194601476694">"სახლი"</item>
- <item msgid="1359644565647383708">"სამსახური"</item>
- <item msgid="7868549401053615677">"სხვა"</item>
- <item msgid="3145118944639869809">"მორგებული"</item>
- </string-array>
- <string-array name="organizationTypes">
- <item msgid="7546335612189115615">"სამსახური"</item>
- <item msgid="4378074129049520373">"სხვა"</item>
- <item msgid="3455047468583965104">"მორგებული"</item>
- </string-array>
- <string-array name="imProtocols">
- <item msgid="8595261363518459565">"AIM"</item>
- <item msgid="7390473628275490700">"Windows Live"</item>
- <item msgid="7882877134931458217">"Yahoo"</item>
- <item msgid="5035376313200585242">"Skype"</item>
- <item msgid="7532363178459444943">"QQ"</item>
- <item msgid="3713441034299660749">"Google Talk"</item>
- <item msgid="2506857312718630823">"ICQ"</item>
- <item msgid="1648797903785279353">"Jabber"</item>
- </string-array>
- <string name="phoneTypeCustom" msgid="1644738059053355820">"მორგებული"</string>
- <string name="phoneTypeHome" msgid="2570923463033985887">"სახლი"</string>
- <string name="phoneTypeMobile" msgid="6501463557754751037">"მობილური"</string>
- <string name="phoneTypeWork" msgid="8863939667059911633">"სამსახური"</string>
- <string name="phoneTypeFaxWork" msgid="3517792160008890912">"სამსახურის ფაქსი"</string>
- <string name="phoneTypeFaxHome" msgid="2067265972322971467">"სახლის ფაქსი"</string>
- <string name="phoneTypePager" msgid="7582359955394921732">"პეიჯერი"</string>
- <string name="phoneTypeOther" msgid="1544425847868765990">"სხვა"</string>
- <string name="phoneTypeCallback" msgid="2712175203065678206">"გადმოსარეკი"</string>
- <string name="phoneTypeCar" msgid="8738360689616716982">"მანქანა"</string>
- <string name="phoneTypeCompanyMain" msgid="540434356461478916">"კომპანიის ძირ. ნომერი"</string>
- <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
- <string name="phoneTypeMain" msgid="6766137010628326916">"მთავარი"</string>
- <string name="phoneTypeOtherFax" msgid="8587657145072446565">"სხვა ფაქსი"</string>
- <string name="phoneTypeRadio" msgid="4093738079908667513">"რადიო"</string>
- <string name="phoneTypeTelex" msgid="3367879952476250512">"Telex"</string>
- <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
- <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"სამსახურის მობილური"</string>
- <string name="phoneTypeWorkPager" msgid="649938731231157056">"სამუშაო პეიჯერი"</string>
- <string name="phoneTypeAssistant" msgid="5596772636128562884">"დამხმარე"</string>
- <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
- <string name="eventTypeCustom" msgid="7837586198458073404">"მორგებული"</string>
- <string name="eventTypeBirthday" msgid="2813379844211390740">"დაბადების დღე"</string>
- <string name="eventTypeAnniversary" msgid="3876779744518284000">"იუბილე"</string>
- <string name="eventTypeOther" msgid="7388178939010143077">"სხვა"</string>
- <string name="emailTypeCustom" msgid="8525960257804213846">"მორგებული"</string>
- <string name="emailTypeHome" msgid="449227236140433919">"სახლი"</string>
- <string name="emailTypeWork" msgid="3548058059601149973">"სამსახური"</string>
- <string name="emailTypeOther" msgid="2923008695272639549">"სხვა"</string>
- <string name="emailTypeMobile" msgid="119919005321166205">"მობილური"</string>
- <string name="postalTypeCustom" msgid="8903206903060479902">"მორგებული"</string>
- <string name="postalTypeHome" msgid="8165756977184483097">"სახლი"</string>
- <string name="postalTypeWork" msgid="5268172772387694495">"სამსახური"</string>
- <string name="postalTypeOther" msgid="2726111966623584341">"სხვა"</string>
- <string name="imTypeCustom" msgid="2074028755527826046">"მორგებული"</string>
- <string name="imTypeHome" msgid="6241181032954263892">"სახლი"</string>
- <string name="imTypeWork" msgid="1371489290242433090">"სამსახური"</string>
- <string name="imTypeOther" msgid="5377007495735915478">"სხვა"</string>
- <string name="imProtocolCustom" msgid="6919453836618749992">"მორგებული"</string>
- <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
- <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
- <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
- <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
- <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
- <string name="imProtocolGoogleTalk" msgid="493902321140277304">"Hangouts"</string>
- <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
- <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
- <string name="imProtocolNetMeeting" msgid="8287625655986827971">"Netmeeting"</string>
- <string name="orgTypeWork" msgid="29268870505363872">"სამსახური"</string>
- <string name="orgTypeOther" msgid="3951781131570124082">"სხვა"</string>
- <string name="orgTypeCustom" msgid="225523415372088322">"მორგებული"</string>
- <string name="relationTypeCustom" msgid="3542403679827297300">"მორგებული"</string>
- <string name="relationTypeAssistant" msgid="6274334825195379076">"ასისტენტი"</string>
- <string name="relationTypeBrother" msgid="8757913506784067713">"ძმა"</string>
- <string name="relationTypeChild" msgid="1890746277276881626">"შვილი"</string>
- <string name="relationTypeDomesticPartner" msgid="6904807112121122133">"საოჯახო პარტნიორი"</string>
- <string name="relationTypeFather" msgid="5228034687082050725">"მამა"</string>
- <string name="relationTypeFriend" msgid="7313106762483391262">"მეგობარი"</string>
- <string name="relationTypeManager" msgid="6365677861610137895">"მენეჯერი"</string>
- <string name="relationTypeMother" msgid="4578571352962758304">"დედა"</string>
- <string name="relationTypeParent" msgid="4755635567562925226">"მშობელი"</string>
- <string name="relationTypePartner" msgid="7266490285120262781">"პარტნიორი"</string>
- <string name="relationTypeReferredBy" msgid="101573059844135524">"რეკომენდატორი:"</string>
- <string name="relationTypeRelative" msgid="1799819930085610271">"ნათესავი"</string>
- <string name="relationTypeSister" msgid="1735983554479076481">"და"</string>
- <string name="relationTypeSpouse" msgid="394136939428698117">"მეუღლე"</string>
- <string name="sipAddressTypeCustom" msgid="2473580593111590945">"მორგებული"</string>
- <string name="sipAddressTypeHome" msgid="6093598181069359295">"სახლი"</string>
- <string name="sipAddressTypeWork" msgid="6920725730797099047">"სამსახური"</string>
- <string name="sipAddressTypeOther" msgid="4408436162950119849">"სხვა"</string>
- <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"აკრიფეთ PIN კოდი"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384">"შეეხეთ "<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>
- <string name="keyguard_label_text" msgid="861796461028298424">"განბლოკვისათვის დააჭირეთ მენიუს და შემდეგ 0-ს."</string>
- <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"გადაუდებელი დახმარების ნომრები"</string>
- <string name="lockscreen_carrier_default" msgid="8963839242565653192">"სერვისი არ არის."</string>
- <string name="lockscreen_screen_locked" msgid="7288443074806832904">"ეკრანი დაბლოკილია."</string>
- <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"განბლოკვისთვის ან გადაუდებელი ზარისთვის დააჭირეთ მენიუს."</string>
- <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"განბლოკვისთვის დააჭირეთ მენიუს."</string>
- <string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"განსაბლოკად დახატეთ ნიმუში"</string>
- <string name="lockscreen_emergency_call" msgid="5347633784401285225">"გადაუდებელი ზარი"</string>
- <string name="lockscreen_return_to_call" msgid="5244259785500040021">"ზარზე დაბრუნება"</string>
- <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"სწორია!"</string>
- <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"კიდევ სცადეთ"</string>
- <string name="lockscreen_password_wrong" msgid="5737815393253165301">"კიდევ სცადეთ"</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"სახის ამოცნობით განბლოკვის მცდელობამ დაშვებულ რაოდენობას გადააჭარბა"</string>
- <string name="lockscreen_plugged_in" msgid="8057762828355572315">"დამუხტვა, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_charged" msgid="321635745684060624">"დამუხტულია"</string>
- <string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_low_battery" msgid="1482873981919249740">"შეაერთეთ დამტენი."</string>
- <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM ბარათი არ არის"</string>
- <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ტაბლეტში არ დევს SIM ბარათი."</string>
- <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"არ არის SIM ბარათი ტელეფონში."</string>
- <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"ჩადეთ SIM ბარათი."</string>
- <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM ბარათი არ არის ან არ იკითხება. ჩადეთ SIM ბარათი."</string>
- <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"არამოხმარებადი SIM ბარათი."</string>
- <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"თქვენი SIM ბარათი გამუდმებით გამორთული იყო.\n დაუკავშირდით თქვენი უკაბელო სერვისის პროვაიდერს სხვა SIM ბარათისთვის."</string>
- <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"წინა ჩანაწერი"</string>
- <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"შემდეგი ჩანაწერი"</string>
- <string name="lockscreen_transport_pause_description" msgid="7659088786780128001">"პაუზა"</string>
- <string name="lockscreen_transport_play_description" msgid="5888422938351019426">"დაკვრის ღილაკი"</string>
- <string name="lockscreen_transport_stop_description" msgid="4562318378766987601">"შეწყვეტა"</string>
- <string name="emergency_calls_only" msgid="6733978304386365407">"მხოლოდ გადაუდებელი დახმარების ზარები"</string>
- <string name="lockscreen_network_locked_message" msgid="143389224986028501">"ქსელი ჩაკეტილია"</string>
- <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM ბარათი არის PUK-ით დაბლოკილი."</string>
- <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"იხილეთ მომხმარებლის სახელმძღვანელო ან დაუკავშირდით კლიენტების მომსახურებას."</string>
- <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"SIM ბარათი დაბლოკილია."</string>
- <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"SIM ბარათის განბლოკვა…"</string>
- <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"თქვენ <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ დახატეთ განბლოკვის ნიმუში. \n\nსცადეთ ხელახლა <xliff:g id="NUMBER_1">%d</xliff:g> წამში."</string>
- <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="2725973286239344555">"თქვენ არასწორად დაბეჭდეთ თქვენი პაროლი <xliff:g id="NUMBER_0">%d</xliff:g> ჯერ. \n\nხელახლა სცადეთ <xliff:g id="NUMBER_1">%d</xliff:g> წამში."</string>
- <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"თქვენ <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ არასწორად შეიყვანეთ PIN კოდი. \n\nსცადეთ ხელახლა <xliff:g id="NUMBER_1">%d</xliff:g> წამში."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"თქვენ არასწორად დახატეთ განბლოკვის ნიმუში <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ. კიდევ <xliff:g id="NUMBER_1">%d</xliff:g> წარუმატებელი ცდის შემდეგ დაგჭირდებათ თქვენი ტაბლეტის განბლოკვა Google-ში შესვლით.\n\n გთხოვთ, ხელახლა სცადოთ <xliff:g id="NUMBER_2">%d</xliff:g> წამში."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"თქვენ არასწორად დახატეთ განბლოკვის ნიმუში <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ. კიდევ <xliff:g id="NUMBER_1">%d</xliff:g> წარუმატებელი ცდის შემდეგ დაგჭირდებათ თქვენი ტელეფონის განბლოკვა Google-ში შესვლით.\n\n გთხოვთ, ხელახლა სცადოთ <xliff:g id="NUMBER_2">%d</xliff:g> წამში."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"თქვენ არასწორად სცადეთ ტაბლეტის განბლოკვა <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ. კიდევ <xliff:g id="NUMBER_1">%d</xliff:g> წარუმატებელი ცდის შემდეგ ტაბლეტზე დაყენდება საწყისი, ქარხნული პარამეტრები და მომხმარებლის ყველა მონაცემი დაიკარგება."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"თქვენ არასწორად სცადეთ ტელეფონის განბლოკვა <xliff:g id="NUMBER_0">%d</xliff:g> ჯერ. კიდევ <xliff:g id="NUMBER_1">%d</xliff:g> წარუმატებელი ცდის შემდეგ ტელეფონზე დაყენდება საწყისი, ქარხნული პარამეტრები და მომხმარებლის ყველა მონაცემი დაიკარგება."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"თქვენ <xliff:g id="NUMBER">%d</xliff:g>-ჯერ არასწორად სცადეთ ტაბლეტის განბლოკვა. ამიტომ ტაბლეტზე დადგება საწყისი, ქარხნული პარამეტრები."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"თქვენ არასწორად სცადეთ ტელეფონის განბლოკვა <xliff:g id="NUMBER">%d</xliff:g> ჯერ. ახლა ტელეფონზე დაყენდება საწყისი, ქარხნული პარამეტრები."</string>
- <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"კიდევ სცადეთ <xliff:g id="NUMBER">%d</xliff:g> წამში."</string>
- <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"დაგავიწყდათ ნიმუში?"</string>
- <string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"ანგარიშით განბლოკვა"</string>
- <string name="lockscreen_glogin_too_many_attempts" msgid="2751368605287288808">"ნახატი ნიმუშის ძალიან ბევრი მცდელობა"</string>
- <string name="lockscreen_glogin_instructions" msgid="3931816256100707784">"განბლოკვისთვის გაიარეთ ავტორიზაცია თქვენი Google ანგარიშით."</string>
- <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"მომხმარებლის სახელი (ელფოსტა)"</string>
- <string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">"პაროლი"</string>
- <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"შესვლა"</string>
- <string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"მომხმარებლის არასწორი სახელი ან პაროლი"</string>
- <string name="lockscreen_glogin_account_recovery_hint" msgid="1696924763690379073">"დაგავიწყდათ მომხმარებლის სახელი და პაროლი?\nეწვიეთ ბმულს "<b>"google.com/accounts/recovery"</b>"."</string>
- <string name="lockscreen_glogin_checking_password" msgid="7114627351286933867">"შემოწმება..."</string>
- <string name="lockscreen_unlock_label" msgid="737440483220667054">"განბლოკვა"</string>
- <string name="lockscreen_sound_on_label" msgid="9068877576513425970">"ხმების ჩართვა"</string>
- <string name="lockscreen_sound_off_label" msgid="996822825154319026">"ხმის გამორთვა"</string>
- <string name="lockscreen_access_pattern_start" msgid="3941045502933142847">"ნიმუშის შექმნა დაწყებულია"</string>
- <string name="lockscreen_access_pattern_cleared" msgid="5583479721001639579">"ნიმუში წაიშალა"</string>
- <string name="lockscreen_access_pattern_cell_added" msgid="6756031208359292487">"უჯრედი დაემატა."</string>
- <string name="lockscreen_access_pattern_detected" msgid="4988730895554057058">"ნიმუშის შექმნა დასრულებულია"</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. ვიჯეტი %2$d of %3$d."</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"ვიჯეტის დამატება"</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"ცარიელი"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"განბლოკვის სივრცე გაშლილია."</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"განბლოკვის სივრცე ჩაკეცილია."</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ვიჯეტი."</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"მომხმარებლის ამომრჩეველი"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"სტატუსი"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"კამერა"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"მედიის მართვის ელემენტები"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"დაიწყო ვიჯეტის ხელახლა განლაგება."</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"ვიჯეტების გადახარისხება დასრულებულია."</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"ვიჯეტი <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> წაიშალა."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"განბლოკვის სივრცის გაშლა."</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"გასრიალებით განბლოკვა"</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"განბლოკვა ნიმუშით."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"განბლოკვა სახით"</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"განბლოკვა Pin-ით."</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"პაროლის განბლოკვა"</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"ნიმუშების სივრცე."</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"გადასრიალების სივრცე."</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="granularity_label_character" msgid="7336470535385009523">"სიმბოლო"</string>
- <string name="granularity_label_word" msgid="7075570328374918660">"სიტყვა"</string>
- <string name="granularity_label_link" msgid="5815508880782488267">"ბმული"</string>
- <string name="granularity_label_line" msgid="5764267235026120888">"სტრიქონი"</string>
- <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string>
- <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string>
- <string name="factorytest_failed" msgid="5410270329114212041">"წარმოების ტესტი ვერ განხორციელდა"</string>
- <string name="factorytest_not_system" msgid="4435201656767276723">"აქტივობა FACTORY_TEST მხარდაჭერილია მხოლოდ იმ პაკეტებისთვის, რომლებიც მოთავსებულია /system/app."</string>
- <string name="factorytest_no_action" msgid="872991874799998561">"ვერ მოიძებნა პაკეტი, რომელიც უზრუნველყოფს ქარხნულ ტესტ ქმედებას."</string>
- <string name="factorytest_reboot" msgid="6320168203050791643">"გადატვირთვა"</string>
- <string name="js_dialog_title" msgid="1987483977834603872">"„<xliff:g id="TITLE">%s</xliff:g>“-თან გვერდი ამბობს:"</string>
- <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
- <string name="js_dialog_before_unload_title" msgid="2619376555525116593">"ნავიგაციის დადასტურება"</string>
- <string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"გვერდის დატოვება"</string>
- <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"ამ გვერდზე დარჩენა"</string>
- <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nდარწმუნებული ხართ, რომ გსურთ ამ გვერდიდან გადასვლა?"</string>
- <string name="save_password_label" msgid="6860261758665825069">"დადასტურება"</string>
- <string name="double_tap_toast" msgid="4595046515400268881">"რჩევა: მასშტაბის შესაცვლელად გამოიყენეთ ორმაგი შეხება."</string>
- <string name="autofill_this_form" msgid="4616758841157816676">"ავტოშევსება"</string>
- <string name="setup_autofill" msgid="7103495070180590814">"ავტოშევსების დაყენება"</string>
- <string name="autofill_address_name_separator" msgid="6350145154779706772">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3268041054899214945">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="7483307893170324129">", "</string>
- <string name="autofill_address_summary_format" msgid="4874459455786827344">"$1$2$3"</string>
- <string name="autofill_province" msgid="2231806553863422300">"პროვინცია"</string>
- <string name="autofill_postal_code" msgid="4696430407689377108">"საფოსტი მისამართი"</string>
- <string name="autofill_state" msgid="6988894195520044613">"შტატი"</string>
- <string name="autofill_zip_code" msgid="8697544592627322946">"ZIP კოდი"</string>
- <string name="autofill_county" msgid="237073771020362891">"ქვეყანა"</string>
- <string name="autofill_island" msgid="4020100875984667025">"კუნძული"</string>
- <string name="autofill_district" msgid="8400735073392267672">"ოლქი"</string>
- <string name="autofill_department" msgid="5343279462564453309">"დეპარტამენტი"</string>
- <string name="autofill_prefecture" msgid="2028499485065800419">"პრეფექტურა"</string>
- <string name="autofill_parish" msgid="8202206105468820057">"სამოქალაქო ოლქი"</string>
- <string name="autofill_area" msgid="3547409050889952423">"რეგიონი"</string>
- <string name="autofill_emirate" msgid="2893880978835698818">"ემირატი"</string>
- <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"თქვენი ვებ სანიშნეებისა და ისტორიის წაკითხვა"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="8462378226600439658">"აპს შეეძლება წაიკითხოს ყველა URL-ის ისტორია, სადაც კი ბრაუზერი შესულა, ასევე ბრაუზერის სანიშნეები. შენიშვნა: ეს უფლება შესაძლოა არ მოიცავდეს მესამე მხარის ბრაუზერებს ან სხვა აპლიკაციებს, რომლებსაც ვებში ძიება შეუძლიათ."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"ვებ სანიშნეებისა და ისტორიის ჩაწერა"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="6825527469145760922">"აპს შეეძლება, შეცვალოს ბრაუზერის ისტორია და თქვენ ტაბლეტში შენახული სანიშნეები. ამან შეიძლება უფლება მისცეს აპს, წაშალოს ან შეცვალოს ბრაუზერის მონაცემები. შენიშვნა: ეს ნებართვა არ შეიძლება შესრულდეს მესამე მხარის ბრაუზერების ან ვებ დათვალიერების შესაძლებლობის მქონე სხვა აპლიკაციების მიერ."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"აპს შეეძლება, შეცვალოს ბრაუზერის ისტორია და თქვენ ტელეფონში შენახული სანიშნეები. ამან შეიძლება უფლება მისცეს აპს, წაშალოს ან შეცვალოს ბრაუზერის მონაცემები. შენიშვნა: ეს ნებართვა არ შეიძლება შესრულდეს მესამე მხარის ბრაუზერების ან ვებ დათვალიერების შესაძლებლობის მქონე სხვა აპლიკაციების მიერ."</string>
- <string name="permlab_setAlarm" msgid="1379294556362091814">"მაღვიძარას დაყენება"</string>
- <string name="permdesc_setAlarm" msgid="316392039157473848">"აპს შეეძლება მაღვიძარას დაყენება დაინსტალირებული მაღვიძარას აპლიკაციაში. ამ ფუნქციას მაღვიძარას ზოგიერთი აპი არ იყენებს."</string>
- <string name="permlab_addVoicemail" msgid="5525660026090959044">"ხმოვანი ფოსტის დამატება"</string>
- <string name="permdesc_addVoicemail" msgid="6604508651428252437">"აპს შეეძლება დაამატოს შეტყობინებები თქვენი ხმოვანი ფოსტის შემოსულებში."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"ბრაუზერის გეოლოკაციის უფლებების შეცვლა"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"აპს შეეძლება ბრაუზერის გეოლოკაციის უფლებების შეცვლა. მავნე აპებმა ეს შესაძლოა გამოიყენონ ნებისმიერი ვებსაიტისთვის მდებარეობის შესახებ ინფორმაციის გასაგზავნად."</string>
- <string name="permlab_packageVerificationAgent" msgid="5568139100645829117">"პაკეტების გადამოწმება"</string>
- <string name="permdesc_packageVerificationAgent" msgid="8437590190990843381">"აპს შეუძლია დაადასტუროს პაკეტის დაყანების შესაძლებლობა."</string>
- <string name="permlab_bindPackageVerifier" msgid="4187786793360326654">"პაკეტების ვერიფიკატორებთან დაკავშირება"</string>
- <string name="permdesc_bindPackageVerifier" msgid="3180741773233862126">"მფლობელს შეეძლება პაკეტის ვერიფიკატორების მოთხოვნა. არასდროს გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_serialPort" msgid="546083327654631076">"სერიულ პორტებზე წვდომა"</string>
- <string name="permdesc_serialPort" msgid="2991639985224598193">"მფლობელს შეეძლება სერიულ პორტებზე წვდომა სერიული მენეჯერის API-ის გამოყენებით."</string>
- <string name="permlab_accessContentProvidersExternally" msgid="5077774297943409285">"კონტენტის მომწოდებლებთან გარედან წვდომა"</string>
- <string name="permdesc_accessContentProvidersExternally" msgid="4544346486697853685">"მფლობელს აძლევს კონტენტ პროვაიდერებზე წვდომას გარემოდან. ჩვეულებრივ აპებში არასოდეს გამოიყენება."</string>
- <string name="permlab_updateLock" msgid="3527558366616680889">"მოწყობილობის ავტომატური განახლების დაშლა"</string>
- <string name="permdesc_updateLock" msgid="1655625832166778492">"მფლობელს შეეძლება სისტემისთვის ინფორმაციის მიწოდება, თუ როდის იქნება შესაფერისი დრო მოწყობილობის გასაახლებლად არაინტერაქტიული გადატვირთვისთვის."</string>
- <string name="save_password_message" msgid="767344687139195790">"გსურთ, რომ ბრაუზერმა დაიმახსოვროს პაროლი?"</string>
- <string name="save_password_notnow" msgid="6389675316706699758">"ახლა არა"</string>
- <string name="save_password_remember" msgid="6491879678996749466">"დამახსოვრება"</string>
- <string name="save_password_never" msgid="8274330296785855105">"არასოდეს"</string>
- <string name="open_permission_deny" msgid="7374036708316629800">"ამ გვერდის გახსნის უფლება არ გაქვთ."</string>
- <string name="text_copied" msgid="4985729524670131385">"ტექსტი დაკოპირებულია გაცვლის ბუფერში."</string>
- <string name="more_item_label" msgid="4650918923083320495">"მეტი"</string>
- <string name="prepend_shortcut_label" msgid="2572214461676015642">"მენიუ+"</string>
- <string name="menu_space_shortcut_label" msgid="2410328639272162537">"[ინტერვალი]"</string>
- <string name="menu_enter_shortcut_label" msgid="2743362785111309668">"enter"</string>
- <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"წაშლა"</string>
- <string name="search_go" msgid="8298016669822141719">"ძიება"</string>
- <string name="searchview_description_search" msgid="6749826639098512120">"ძიება"</string>
- <string name="searchview_description_query" msgid="5911778593125355124">"მოთხოვნის ძიება"</string>
- <string name="searchview_description_clear" msgid="1330281990951833033">"რიგის გასუფთავება"</string>
- <string name="searchview_description_submit" msgid="2688450133297983542">"შეკითხვის გაგზავნა"</string>
- <string name="searchview_description_voice" msgid="2453203695674994440">"ხმოვანი ძიება"</string>
- <string name="enable_explore_by_touch_warning_title" msgid="7460694070309730149">"ჩავრთოთ შეხებით დათვალიერება?"</string>
- <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="8655887539089910577">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>-ს სურს „შეხებით შესწავლის“ რეჟიმის ჩრთვა. ეს ტელეფონის ჟესტებით მართვისა და იმ ელემენტების აღწერის მოსმენის შესაძლებლობას მოგცემთ, რომელსაც შეეხებით."</string>
- <string name="enable_explore_by_touch_warning_message" product="default" msgid="2708199672852373195">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>-ს სურს „შეხებით შესწავლის“ რეჟიმის ჩრთვა. ეს ტელეფონის ჟესტებით მართვისა და იმ ელემენტების აღწერის მოსმენის შესაძლებლობას მოგცემთ, რომელსაც შეეხებით."</string>
- <string name="oneMonthDurationPast" msgid="7396384508953779925">"ერთი თვის წინ"</string>
- <string name="beforeOneMonthDurationPast" msgid="909134546836499826">"უფრო ადრე, ვიდრე ერთი თვის წინ"</string>
- <plurals name="num_seconds_ago">
- <item quantity="one" msgid="4869870056547896011">"1 წამის წინ"</item>
- <item quantity="other" msgid="3903706804349556379">"<xliff:g id="COUNT">%d</xliff:g> წამის წინ"</item>
- </plurals>
- <plurals name="num_minutes_ago">
- <item quantity="one" msgid="3306787433088810191">"1 წუთის უკან"</item>
- <item quantity="other" msgid="2176942008915455116">"<xliff:g id="COUNT">%d</xliff:g> წუთის წინ"</item>
- </plurals>
- <plurals name="num_hours_ago">
- <item quantity="one" msgid="9150797944610821849">"1 საათის წინ"</item>
- <item quantity="other" msgid="2467273239587587569">"<xliff:g id="COUNT">%d</xliff:g> საათის წინ"</item>
- </plurals>
- <plurals name="last_num_days">
- <item quantity="other" msgid="3069992808164318268">"ბოლო <xliff:g id="COUNT">%d</xliff:g> დღე"</item>
- </plurals>
- <string name="last_month" msgid="3959346739979055432">"გასული თვე"</string>
- <string name="older" msgid="5211975022815554840">"უფრო ძველი"</string>
- <plurals name="num_days_ago">
- <item quantity="one" msgid="861358534398115820">"გუშინ"</item>
- <item quantity="other" msgid="2479586466153314633">"<xliff:g id="COUNT">%d</xliff:g> დღის წინ"</item>
- </plurals>
- <plurals name="in_num_seconds">
- <item quantity="one" msgid="2729745560954905102">"1 წამში"</item>
- <item quantity="other" msgid="1241926116443974687">"<xliff:g id="COUNT">%d</xliff:g> წამში"</item>
- </plurals>
- <plurals name="in_num_minutes">
- <item quantity="one" msgid="8793095251325200395">"1 წუთში"</item>
- <item quantity="other" msgid="3330713936399448749">"<xliff:g id="COUNT">%d</xliff:g> წუთში"</item>
- </plurals>
- <plurals name="in_num_hours">
- <item quantity="one" msgid="7164353342477769999">"1 საათში"</item>
- <item quantity="other" msgid="547290677353727389">"<xliff:g id="COUNT">%d</xliff:g> საათში"</item>
- </plurals>
- <plurals name="in_num_days">
- <item quantity="one" msgid="5413088743009839518">"ხვალ"</item>
- <item quantity="other" msgid="5109449375100953247">"<xliff:g id="COUNT">%d</xliff:g> დღეში"</item>
- </plurals>
- <plurals name="abbrev_num_seconds_ago">
- <item quantity="one" msgid="1849036840200069118">"1 წმ. წინ"</item>
- <item quantity="other" msgid="3699169366650930415">"<xliff:g id="COUNT">%d</xliff:g> წამის წინ"</item>
- </plurals>
- <plurals name="abbrev_num_minutes_ago">
- <item quantity="one" msgid="6361490147113871545">"1 წუთის წინ"</item>
- <item quantity="other" msgid="851164968597150710">"<xliff:g id="COUNT">%d</xliff:g> წუთის წინ"</item>
- </plurals>
- <plurals name="abbrev_num_hours_ago">
- <item quantity="one" msgid="4796212039724722116">"1 საათის წინ"</item>
- <item quantity="other" msgid="6889970745748538901">"<xliff:g id="COUNT">%d</xliff:g> საათის წინ"</item>
- </plurals>
- <plurals name="abbrev_num_days_ago">
- <item quantity="one" msgid="8463161711492680309">"გუშინ"</item>
- <item quantity="other" msgid="3453342639616481191">"<xliff:g id="COUNT">%d</xliff:g> დღის წინ"</item>
- </plurals>
- <plurals name="abbrev_in_num_seconds">
- <item quantity="one" msgid="5842225370795066299">"1 წამში"</item>
- <item quantity="other" msgid="5495880108825805108">"<xliff:g id="COUNT">%d</xliff:g> წამის წინ"</item>
- </plurals>
- <plurals name="abbrev_in_num_minutes">
- <item quantity="one" msgid="562786149928284878">"1 წუთში"</item>
- <item quantity="other" msgid="4216113292706568726">"<xliff:g id="COUNT">%d</xliff:g> წუთში"</item>
- </plurals>
- <plurals name="abbrev_in_num_hours">
- <item quantity="one" msgid="3274708118124045246">"1 საათში"</item>
- <item quantity="other" msgid="3705373766798013406">"<xliff:g id="COUNT">%d</xliff:g> საათში"</item>
- </plurals>
- <plurals name="abbrev_in_num_days">
- <item quantity="one" msgid="2178576254385739855">"ხვალ"</item>
- <item quantity="other" msgid="2973062968038355991">"<xliff:g id="COUNT">%d</xliff:g> დღეში"</item>
- </plurals>
- <string name="preposition_for_date" msgid="9093949757757445117">"თარიღი: <xliff:g id="DATE">%s</xliff:g>"</string>
- <string name="preposition_for_time" msgid="5506831244263083793">"<xliff:g id="TIME">%s</xliff:g>-ზე"</string>
- <string name="preposition_for_year" msgid="5040395640711867177">"<xliff:g id="YEAR">%s</xliff:g> წელს"</string>
- <string name="day" msgid="8144195776058119424">"დღე"</string>
- <string name="days" msgid="4774547661021344602">"დღეები"</string>
- <string name="hour" msgid="2126771916426189481">"საათი"</string>
- <string name="hours" msgid="894424005266852993">"საათი"</string>
- <string name="minute" msgid="9148878657703769868">"წთ"</string>
- <string name="minutes" msgid="5646001005827034509">"წუთი"</string>
- <string name="second" msgid="3184235808021478">"წმ."</string>
- <string name="seconds" msgid="3161515347216589235">"წამები"</string>
- <string name="week" msgid="5617961537173061583">"კვირა"</string>
- <string name="weeks" msgid="6509623834583944518">"კვირები"</string>
- <string name="year" msgid="4001118221013892076">"წელი"</string>
- <string name="years" msgid="6881577717993213522">"წელი"</string>
- <plurals name="duration_seconds">
- <item quantity="one" msgid="6962015528372969481">"1 წამი"</item>
- <item quantity="other" msgid="1886107766577166786">"<xliff:g id="COUNT">%d</xliff:g> წამი"</item>
- </plurals>
- <plurals name="duration_minutes">
- <item quantity="one" msgid="4915414002546085617">"1 წუთი"</item>
- <item quantity="other" msgid="3165187169224908775">"<xliff:g id="COUNT">%d</xliff:g> წუთი"</item>
- </plurals>
- <plurals name="duration_hours">
- <item quantity="one" msgid="8917467491248809972">"1 საათი"</item>
- <item quantity="other" msgid="3863962854246773930">"<xliff:g id="COUNT">%d</xliff:g> საათში"</item>
- </plurals>
- <string name="VideoView_error_title" msgid="3534509135438353077">"პრობლემები ვიდეოსთან"</string>
- <string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"ეს ვიდეო არ გამოდგება ამ მოწყობილობაზე სტრიმინგისთვის."</string>
- <string name="VideoView_error_text_unknown" msgid="3450439155187810085">"ვიდეოს დაკვრა არ არის შესაძლებელი."</string>
- <string name="VideoView_error_button" msgid="2822238215100679592">"კარგი"</string>
- <string name="relative_time" msgid="1818557177829411417">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
- <string name="noon" msgid="7245353528818587908">"შუადღე"</string>
- <string name="Noon" msgid="3342127745230013127">"შუადღე"</string>
- <string name="midnight" msgid="7166259508850457595">"შუაღამე"</string>
- <string name="Midnight" msgid="5630806906897892201">"შუაღამე"</string>
- <string name="elapsed_time_short_format_mm_ss" msgid="4431555943828711473">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
- <string name="elapsed_time_short_format_h_mm_ss" msgid="1846071997616654124">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
- <string name="selectAll" msgid="6876518925844129331">"ყველას არჩევა"</string>
- <string name="cut" msgid="3092569408438626261">"ამოჭრა"</string>
- <string name="copy" msgid="2681946229533511987">"კოპირება"</string>
- <string name="paste" msgid="5629880836805036433">"ჩასმა"</string>
- <string name="replace" msgid="5781686059063148930">"ჩანაცვლება…"</string>
- <string name="delete" msgid="6098684844021697789">"წაშლა"</string>
- <string name="copyUrl" msgid="2538211579596067402">"URL კოპირება"</string>
- <string name="selectTextMode" msgid="1018691815143165326">"ტექსტის მონიშვნა"</string>
- <string name="textSelectionCABTitle" msgid="5236850394370820357">"ტექსტის მონიშვნა"</string>
- <string name="addToDictionary" msgid="4352161534510057874">"ლექსიკონში დამატება"</string>
- <string name="deleteText" msgid="6979668428458199034">"წაშლა"</string>
- <string name="inputMethod" msgid="1653630062304567879">"შეყვანის მეთოდი"</string>
- <string name="editTextMenuTitle" msgid="4909135564941815494">"ქმედებები ტექსტზე"</string>
- <string name="low_internal_storage_view_title" msgid="5576272496365684834">"თავისუფალი ადგილი იწურება"</string>
- <string name="low_internal_storage_view_text" msgid="6640505817617414371">"სისტემის ზოგიერთმა ფუნქციამ შესაძლოა არ იმუშავოს"</string>
- <string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> გაშვებულია"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"შეეხეთ მეტი ინფორმაციისათვის ან აპის შესაწყვეტად."</string>
- <string name="ok" msgid="5970060430562524910">"OK"</string>
- <string name="cancel" msgid="6442560571259935130">"გაუქმება"</string>
- <string name="yes" msgid="5362982303337969312">"OK"</string>
- <string name="no" msgid="5141531044935541497">"გაუქმება"</string>
- <string name="dialog_alert_title" msgid="2049658708609043103">"ყურადღება"</string>
- <string name="loading" msgid="7933681260296021180">"ჩატვირთვა…"</string>
- <string name="capital_on" msgid="1544682755514494298">"ჩართ."</string>
- <string name="capital_off" msgid="6815870386972805832">"გამორთულია"</string>
- <string name="whichApplication" msgid="4533185947064773386">"მოქმედების დასრულება შემდეგი საშუალებით:"</string>
- <string name="alwaysUse" msgid="4583018368000610438">"ამ ქმედებისთვის ნაგულისხმევად გამოყენება."</string>
- <string name="clearDefaultHintMsg" msgid="3252584689512077257">"ნაგულისხმევი პარამეტრების წაშლა სისტემის პარამეტრებში &gt; აპებში &gt; ჩამოტვირთულებში."</string>
- <string name="chooseActivity" msgid="7486876147751803333">"აირჩიეთ მოქმედება"</string>
- <string name="chooseUsbActivity" msgid="6894748416073583509">"USB მოწყობილობისათვის აპის შერჩევა"</string>
- <string name="noApplications" msgid="2991814273936504689">"ვერც ერთი აპი ვერ შეასრულებს ამ ქმედებას."</string>
- <string name="aerr_title" msgid="1905800560317137752"></string>
- <string name="aerr_application" msgid="932628488013092776">"სამწუხაროდ, <xliff:g id="APPLICATION">%1$s</xliff:g> შეწყდა."</string>
- <string name="aerr_process" msgid="4507058997035697579">"სამწუხაროდ, პროცესი <xliff:g id="PROCESS">%1$s</xliff:g> შეწყდა."</string>
- <string name="anr_title" msgid="4351948481459135709"></string>
- <string name="anr_activity_application" msgid="1904477189057199066">"<xliff:g id="APPLICATION">%2$s</xliff:g> არ რეაგირებს.\n\nგსურთ, მისი დახურვა?"</string>
- <string name="anr_activity_process" msgid="5776209883299089767">"<xliff:g id="ACTIVITY">%1$s</xliff:g> აქტივობა არ რეაგირებს.\n\nგსურთ მისი დახურვა?"</string>
- <string name="anr_application_process" msgid="8941757607340481057">"<xliff:g id="APPLICATION">%1$s</xliff:g> არ რეაგირებს. გსურთ მისი დახურვა?"</string>
- <string name="anr_process" msgid="6513209874880517125">"პროცესი <xliff:g id="PROCESS">%1$s</xliff:g> არ რეაგირებს.\n\nგსურთ, მისი დახურვა?"</string>
- <string name="force_close" msgid="8346072094521265605">"OK"</string>
- <string name="report" msgid="4060218260984795706">"ანგარიში"</string>
- <string name="wait" msgid="7147118217226317732">"მოცდა"</string>
- <string name="webpage_unresponsive" msgid="3272758351138122503">"გვერდი აღარ რეაგირებს.\n\nგსურთ მისი დახურვა?"</string>
- <string name="launch_warning_title" msgid="1547997780506713581">"აპი გადამისამართებულია"</string>
- <string name="launch_warning_replace" msgid="6202498949970281412">"<xliff:g id="APP_NAME">%1$s</xliff:g> გაშვებულია."</string>
- <string name="launch_warning_original" msgid="188102023021668683">"<xliff:g id="APP_NAME">%1$s</xliff:g> თავდაპირველად გაეშვა."</string>
- <string name="screen_compat_mode_scale" msgid="3202955667675944499">"მასშტაბი"</string>
- <string name="screen_compat_mode_show" msgid="4013878876486655892">"ყოველთვის ჩვენება"</string>
- <string name="screen_compat_mode_hint" msgid="1064524084543304459">"ხელახალი გააქტიურება განყოფილებაში: სისტემის პარამეტრები &gt; აპები &gt; ჩამოტვირთულები."</string>
- <string name="smv_application" msgid="3307209192155442829">"აპმა <xliff:g id="APPLICATION">%1$s</xliff:g> (პროცესი <xliff:g id="PROCESS">%2$s</xliff:g>) დაარღვია საკუთარი StrictMode დებულება."</string>
- <string name="smv_process" msgid="5120397012047462446">"ამ პროცესმა <xliff:g id="PROCESS">%1$s</xliff:g> დააზიანა საკუთარი StrictMode დებულება."</string>
- <string name="android_upgrading_title" msgid="1584192285441405746">"Android ახალ ვერსიაზე გადადის…"</string>
- <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> აპლიკაციის (სულ <xliff:g id="NUMBER_1">%2$d</xliff:g>-დან) ოპტიმიზაცია."</string>
- <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>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"აპზე გადასართველად შეეხეთ"</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>
- <string name="old_app_description" msgid="2082094275580358049">"არ ჩართოთ ახალი აპი."</string>
- <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="sendText" msgid="5209874571959469142">"შეარჩიეთ ქმედება ტექსტისთვის."</string>
- <string name="volume_ringtone" msgid="6885421406845734650">"მრეკავის ხმა"</string>
- <string name="volume_music" msgid="5421651157138628171">"მედიის ხმა"</string>
- <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"დაკვრა Bluetooth-ის გამოყენებით"</string>
- <string name="volume_music_hint_silent_ringtone_selected" msgid="8310739960973156272">"არჩეულია უხმო რეჟიმი"</string>
- <string name="volume_call" msgid="3941680041282788711">"ხმის სიმაღლე ზარის დროს"</string>
- <string name="volume_bluetooth_call" msgid="2002891926351151534">"Bluetooth ხმის სიმაღლე ზარის დროს"</string>
- <string name="volume_alarm" msgid="1985191616042689100">"მაღვიძარას ხმა"</string>
- <string name="volume_notification" msgid="2422265656744276715">"შეტყობინების ხმა"</string>
- <string name="volume_unknown" msgid="1400219669770445902">"ხმა"</string>
- <string name="volume_icon_description_bluetooth" msgid="6538894177255964340">"Bluetooth-ის ხმა"</string>
- <string name="volume_icon_description_ringer" msgid="3326003847006162496">"ზარის სიმაღლე"</string>
- <string name="volume_icon_description_incall" msgid="8890073218154543397">"ზარის ხმა"</string>
- <string name="volume_icon_description_media" msgid="4217311719665194215">"მედიის ხმა"</string>
- <string name="volume_icon_description_notification" msgid="7044986546477282274">"შეტყობინების ხმა"</string>
- <string name="ringtone_default" msgid="3789758980357696936">"ნაგულისხმევი ზარი"</string>
- <string name="ringtone_default_with_actual" msgid="8129563480895990372">"ნაგულისხმევი ზარი (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
- <string name="ringtone_silent" msgid="7937634392408977062">"არც ერთი"</string>
- <string name="ringtone_picker_title" msgid="3515143939175119094">"ზარები"</string>
- <string name="ringtone_unknown" msgid="5477919988701784788">"უცნობი ზარი"</string>
- <plurals name="wifi_available">
- <item quantity="one" msgid="6654123987418168693">"Wi-Fi ქსელი ხელმისაწვდომია"</item>
- <item quantity="other" msgid="4192424489168397386">"Wi-Fi ქსელები ხელმისაწვდომია."</item>
- </plurals>
- <plurals name="wifi_available_detailed">
- <item quantity="one" msgid="1634101450343277345">"ხელმისაწვდომი Wi-Fi ქსელების გახსნა"</item>
- <item quantity="other" msgid="7915895323644292768">"ხელმისაწვდომი Wi-Fi ქსელების გახსნა"</item>
- </plurals>
- <string name="wifi_available_sign_in" msgid="4029489716605255386">"Wi-Fi ქსელთან დაკავშირება"</string>
- <string name="network_available_sign_in" msgid="8495155593358054676">"ქსელში შესვლა"</string>
- <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
- <skip />
- <string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi-თან დაკავშირება ვერ მოხერხდა"</string>
- <string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" აქვს ცუდი ინტერნეტ კავშირი."</string>
- <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"Wi-Fi Direct"</string>
- <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>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"პარამეტრებისთვის შეეხეთ"</string>
- <string name="accept" msgid="1645267259272829559">"მიღება"</string>
- <string name="decline" msgid="2112225451706137894">"უარყოფა"</string>
- <string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"მოწვევა გაგზავნილია"</string>
- <string name="wifi_p2p_invitation_to_connect_title" msgid="4958803948658533637">"მოწვევა დასაკავშირებლად"</string>
- <string name="wifi_p2p_from_message" msgid="570389174731951769">"გამგზავნი:"</string>
- <string name="wifi_p2p_to_message" msgid="248968974522044099">"მიმღები:"</string>
- <string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"შეიყვანეთ საჭირო PIN:"</string>
- <string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"პინ-კოდი:"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="tablet" msgid="8012981257742232475">"ტაბლეტი დროებით გაითიშება Wi-Fi-დან, სანამ მიერთებულია <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ზე"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="default" msgid="7363907213787469151">"ტელეფონი დროებით გაითიშება Wi-Fi-დან, სანამ მიერთებულია <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ზე"</string>
- <string name="select_character" msgid="3365550120617701745">"სიმბოლოს ჩასმა"</string>
- <string name="sms_control_title" msgid="7296612781128917719">"SMS შეტყობინებები იგზავნება"</string>
- <string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;აგზავნის დიდი რაოდენობის SMS შეტყობინებებს. გსურთ, მისცეთ ამ აპს უფლება გააგრძელოს შეტყობინეების დაგზავნა?"</string>
- <string name="sms_control_yes" msgid="3663725993855816807">"უფლების მიცემა"</string>
- <string name="sms_control_no" msgid="625438561395534982">"უარყოფა"</string>
- <string name="sms_short_code_confirm_message" msgid="1645436466285310855">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; სურს შეტყობინების გაგზავნა &lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;/b&gt;-ისთვის."</string>
- <string name="sms_short_code_details" msgid="3492025719868078457">"ამან "<font fgcolor="#ffffb060">"შესაძლოა გამოიწვიოს ცვლილებები"</font>" თქვენი მობილურის ანგარიშზე."</string>
- <string name="sms_premium_short_code_details" msgid="5523826349105123687"><font fgcolor="#ffffb060">"ეს გამოიწვევს დანახარჯებს თქვენ მობილურ ანგარიშზე."</font></string>
- <string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"გაგზავნა"</string>
- <string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"გაუქმება"</string>
- <string name="sms_short_code_remember_choice" msgid="5289538592272218136">"ჩემი არჩევანის დამახსოვრება"</string>
- <string name="sms_short_code_remember_undo_instruction" msgid="4960944133052287484">"ამის შეცვლა შეგიძლიათ მოგვიანებით აპების პარამეტრებიდან."</string>
- <string name="sms_short_code_confirm_always_allow" msgid="3241181154869493368">"ნებართვის მიცემა - ყოველთვის"</string>
- <string name="sms_short_code_confirm_never_allow" msgid="446992765774269673">"არასოდეს მისცე უფლება"</string>
- <string name="sim_removed_title" msgid="6227712319223226185">"SIM ბარათი ამოღებულია"</string>
- <string name="sim_removed_message" msgid="2333164559970958645">"მობილური კავშირი არ იქნება ხელმისაწვდომი, ვიდრე არ ჩადებთ ქმედით SIM ბარათს და გადატვირთავთ."</string>
- <string name="sim_done_button" msgid="827949989369963775">"დასრულდა"</string>
- <string name="sim_added_title" msgid="3719670512889674693">"SIM ბარათი დაემატა"</string>
- <string name="sim_added_message" msgid="6599945301141050216">"გადატვირთეთ თქვენი მოწყობილობა მობილურ ქსელზე წვდომისთვის."</string>
- <string name="sim_restart_button" msgid="4722407842815232347">"გადატვირთვა"</string>
- <string name="time_picker_dialog_title" msgid="8349362623068819295">"დროის დაყენება"</string>
- <string name="date_picker_dialog_title" msgid="5879450659453782278">"თარიღის დაყენება"</string>
- <string name="date_time_set" msgid="5777075614321087758">"დაყენება"</string>
- <string name="date_time_done" msgid="2507683751759308828">"დასრულდა"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"ახალი: "</font></string>
- <string name="perms_description_app" msgid="5139836143293299417">"მომწოდებელი: <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="no_permissions" msgid="7283357728219338112">"ნებართვა საჭირო არ არის"</string>
- <string name="perm_costs_money" msgid="4902470324142151116">"ამისათვის შესაძლოა მოგიწიოთ თანხის გადახდა"</string>
- <string name="usb_storage_activity_title" msgid="4465055157209648641">"USB მასიური მეხსიერება"</string>
- <string name="usb_storage_title" msgid="5901459041398751495">"USB დაკავშირებულია"</string>
- <string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"თქვენ დაკავშირებული ხართ კომპიუტერთან USB-ის მეშვეობით. თუ გსურთ კომპიუტერსა და თქვენს Android USB მოწყობილობას შორის ფაილების კოპირება შეეხეთ ქვემოთ მდებარე ღილაკს."</string>
- <string name="usb_storage_message" product="default" msgid="805351000446037811">"თქვენ დაუკავშირდით კომპიუტერს USB-ის მეშვეობით. შეეხეთ ქვემოთ მდებარე ღილაკს, თუ გსურთ ფაილების კოპირება თქვენ კომპიუტერსა და Android SD ბარათს შორის."</string>
- <string name="usb_storage_button_mount" msgid="1052259930369508235">"USB მეხსიერების ჩართვა"</string>
- <string name="usb_storage_error_message" product="nosdcard" msgid="3017045217365540658">"USB მასიური მეხსიერებისთვის თქვენი USB მეხსიერების გამოყენება პრობლემას ქმნის."</string>
- <string name="usb_storage_error_message" product="default" msgid="2876018512716970313">"USB მასიური მეხსიერებისთვის თქვენი SD ბარათის გამოყენება პრობლემას ქმნის."</string>
- <string name="usb_storage_notification_title" msgid="8175892554757216525">"USB დაკავშირებულია"</string>
- <string name="usb_storage_notification_message" msgid="939822783828183763">"შეეხეთ ფაილების კოპირებისათვის კომპიუტერში/კომპიუტერიდან."</string>
- <string name="usb_storage_stop_notification_title" msgid="2336058396663516017">"USB მეხსიერების გამორთვა"</string>
- <string name="usb_storage_stop_notification_message" msgid="1656852098555623822">"შეეხეთ USB მეხსიერების გამოსართველად."</string>
- <string name="usb_storage_stop_title" msgid="660129851708775853">"ხდება USB მეხსიერების გამოყენება"</string>
- <string name="usb_storage_stop_message" product="nosdcard" msgid="4264025280777219521">"USB მეხსიერების გამორთვამდე, გამოიღეთ თქვენი Android-ის USB თქვენი კომპიუტერიდან."</string>
- <string name="usb_storage_stop_message" product="default" msgid="8043969782460613114">"USB მეხსიერების გამორთვამდე, გამოაერთეთ თქვენი Android SD ბარათი კომპიუტერიდან."</string>
- <string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"USB მეხსიერების გამორთვა"</string>
- <string name="usb_storage_stop_error_message" msgid="1970374898263063836">"USB-გამორთვისას წარმოიშვა შეცდომა. შეამოწმეთ, რომ გათიშეთ თქვენი USB ჰოსტი, შემდეგ სცადეთ ხელახლა."</string>
- <string name="dlg_confirm_kill_storage_users_title" msgid="963039033470478697">"USB მეხსიერების ჩართვა"</string>
- <string name="dlg_confirm_kill_storage_users_text" msgid="5100428757107469454">"თუ USB მეხსიერებას ჩართავთ, თქვენ მიერ მოხმარებადი რამდენიმე აპი შეწყვეტს მუშაობას და შესაძლოა მიუწვდომელი გახდეს USB მეხსიერების გამორთვამდე."</string>
- <string name="dlg_error_title" msgid="7323658469626514207">"USB ოპერაცია წარუმატებელი იყო"</string>
- <string name="dlg_ok" msgid="7376953167039865701">"OK"</string>
- <string name="usb_mtp_notification_title" msgid="3699913097391550394">"დაკავშირებულია როგორც მედია მოწყობილობა"</string>
- <string name="usb_ptp_notification_title" msgid="1960817192216064833">"დაკავშირებულია როგორც კამერა"</string>
- <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"დაკავშირებულია როგორც დამყენებელი"</string>
- <string name="usb_accessory_notification_title" msgid="7848236974087653666">"დაკავშირებულია USB აქსესუართან"</string>
- <string name="usb_notification_message" msgid="2290859399983720271">"შეეხეთ USB-ის სხვა პარამეტრების სანახავად."</string>
- <string name="extmedia_format_title" product="nosdcard" msgid="9020092196061007262">"დავაფორმატო USB მეხსიერება?"</string>
- <string name="extmedia_format_title" product="default" msgid="3648415921526526069">"გსურთ SD ბარათის დაფორმატება?"</string>
- <string name="extmedia_format_message" product="nosdcard" msgid="3934016853425761078">"თქვენ USB მეხსიერებაში შენახული ყველა ფაილი წაიშლება. ეს მოქმედება ვეღარ შეიცვლება!"</string>
- <string name="extmedia_format_message" product="default" msgid="14131895027543830">"თქვენს ბარათზე ყველა მონაცემი დაიკარგება."</string>
- <string name="extmedia_format_button_format" msgid="4131064560127478695">"დაფორმატება"</string>
- <string name="adb_active_notification_title" msgid="6729044778949189918">"USB გამართვა შეერთებულია"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"შეეხეთ, რათა შეწყვიტოთ USB-ის გამართვა."</string>
- <string name="select_input_method" msgid="4653387336791222978">"აირჩიეთ შეყვანის მეთოდი"</string>
- <string name="configure_input_methods" msgid="9091652157722495116">"შეყვანის მეთოდების დაყენება"</string>
- <string name="use_physical_keyboard" msgid="6203112478095117625">"ფიზიკური კლავიატურა"</string>
- <string name="hardware" msgid="7517821086888990278">"მოწყობილობა"</string>
- <string name="select_keyboard_layout_notification_title" msgid="1407367017263030773">"შეარჩიეთ კლავიატურის განლაგება."</string>
- <string name="select_keyboard_layout_notification_message" msgid="4465907700449257063">"კლავიატურის განლაგების შესარჩევად შეეხეთ."</string>
- <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="candidates_style" msgid="4333913089637062257"><u>"კანდიდატები"</u></string>
- <string name="ext_media_checking_notification_title" product="nosdcard" msgid="3449816005351468560">"USB მეხსიერების მომზადება"</string>
- <string name="ext_media_checking_notification_title" product="default" msgid="5457603418970994050">"SD ბარათის მომზადება"</string>
- <string name="ext_media_checking_notification_message" msgid="8287319882926737053">"შეცდომების შემოწმება"</string>
- <string name="ext_media_nofs_notification_title" product="nosdcard" msgid="7788040745686229307">"ცარიელი USB მეხსიერება"</string>
- <string name="ext_media_nofs_notification_title" product="default" msgid="780477838241212997">"ცარიელი SD ბარათი"</string>
- <string name="ext_media_nofs_notification_message" product="nosdcard" msgid="7840121067427269500">"USB მეხსიერება ცარიელია ან მხარდაუჭერელი ფაილური სისტემა აქვს."</string>
- <string name="ext_media_nofs_notification_message" product="default" msgid="8641065641786923604">"SD ბარათი ცარიელია ან ფაილური სისტემა მხარდაუჭერელია."</string>
- <string name="ext_media_unmountable_notification_title" product="nosdcard" msgid="2090046769532713563">"დაზიანებული USB მეხსიერება"</string>
- <string name="ext_media_unmountable_notification_title" product="default" msgid="6410723906019100189">"დაზიანებული SD ბარათი"</string>
- <string name="ext_media_unmountable_notification_message" product="nosdcard" msgid="1795917578395333280">"USB მეხსიერება დაზიანებულია. სცადეთ მისი ხელახლა დაფორმატება."</string>
- <string name="ext_media_unmountable_notification_message" product="default" msgid="1753898567525568253">"SD ბარათი დაზიანებულია. სცადეთ მისი ხელახლა დაფორმატება."</string>
- <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"USB მეხსიერება მოულოდნელად გამოირთო"</string>
- <string name="ext_media_badremoval_notification_title" product="default" msgid="6872152882604407837">"SD ბარათი მოულოდნელად მოიხსნა"</string>
- <string name="ext_media_badremoval_notification_message" product="nosdcard" msgid="4329848819865594241">"გამოერთებამდე გათიშეთ USB მეხსიერება, რათა თავიდან აიცილოთ მონაცემების დაკარგვა."</string>
- <string name="ext_media_badremoval_notification_message" product="default" msgid="7260183293747448241">"გამოერთებამდე გათიშეთ SD ბარათი, რათა თავიდან აიცილოთ მონაცემების დაკარგვა."</string>
- <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"USB მეხსიერების გამორთვა უსაფრთხოა"</string>
- <string name="ext_media_safe_unmount_notification_title" product="default" msgid="6729801130790616200">"SD ბარათის მოხსნა უსაფრთხოა"</string>
- <string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"შეგიძლიათ უსაფრთხოდ გამოაერთოთ USB მეხსიერება."</string>
- <string name="ext_media_safe_unmount_notification_message" product="default" msgid="568841278138377604">"შეგიძლიათ უსაფრთხოდ გამოაერთოთ SD ბარათი."</string>
- <string name="ext_media_nomedia_notification_title" product="nosdcard" msgid="4486377230140227651">"გამორთული USB მეხსიერება"</string>
- <string name="ext_media_nomedia_notification_title" product="default" msgid="8902518030404381318">"გამოღებულია SD ბარათი."</string>
- <string name="ext_media_nomedia_notification_message" product="nosdcard" msgid="6921126162580574143">"USB მეხსიერება გამოერთებულია. მიუერთეთ ახალი მედია."</string>
- <string name="ext_media_nomedia_notification_message" product="default" msgid="3870120652983659641">"SD ბარათი მოხსნილია. ჩასვით ახალი."</string>
- <string name="activity_list_empty" msgid="1675388330786841066">"შესატყვისი აქტივობები არ არის."</string>
- <string name="permlab_pkgUsageStats" msgid="8787352074326748892">"კომპონენტების გამოყენების სტატისტიკის განახლება"</string>
- <string name="permdesc_pkgUsageStats" msgid="1106612424254277630">"აპს შეეძლება, შეცვალოს კომპონენტის გამოყენების შეგროვებული სტატისტიკა. არ გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_copyProtectedData" msgid="4341036311211406692">"კონტენტის კოპირება"</string>
- <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"აპს შეეძლება კონტენტის კოპირებისთვის კონტეინერის ნაგულისხმევი სერვისის გამოძახება. არ გამოიყენება ჩვეულებრივ აპებში."</string>
- <string name="permlab_route_media_output" msgid="1642024455750414694">"მულტიმედია მონაცემების გადამისამართება"</string>
- <string name="permdesc_route_media_output" msgid="4932818749547244346">"აპლიკაციას შეეძლება გადაამისამართოს მულტიმედია მონაცემები სხვა გარე მოწყობილობებისკენ."</string>
- <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"ღილაკების დამცავის უსაფრთხო საცავზე წვდომა"</string>
- <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"აპლიკაციას ღილაკების დამცავის უსაფრთხო საცავზე წვდომის უფლება ექნება."</string>
- <string name="permlab_control_keyguard" msgid="172195184207828387">"ღილაკების დამცავის გამოჩენისა და დამალვის მართვა"</string>
- <string name="permdesc_control_keyguard" msgid="3043732290518629061">"აპლიკაციას შეეძლება ღილაკების დამცავის კონტროლი."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"მასშტაბის მართვისთვის შეეხეთ ორჯერ."</string>
- <string name="gadget_host_error_inflating" msgid="4882004314906466162">"ვერ დაემატა ვიჯეტი."</string>
- <string name="ime_action_go" msgid="8320845651737369027">"გადასვლა"</string>
- <string name="ime_action_search" msgid="658110271822807811">"ძებნა"</string>
- <string name="ime_action_send" msgid="2316166556349314424">"გაგზავნა"</string>
- <string name="ime_action_next" msgid="3138843904009813834">"მომდევნო"</string>
- <string name="ime_action_done" msgid="8971516117910934605">"დასრულდა"</string>
- <string name="ime_action_previous" msgid="1443550039250105948">"წინა"</string>
- <string name="ime_action_default" msgid="2840921885558045721">"განხორციელება"</string>
- <string name="dial_number_using" msgid="5789176425167573586">"ნომერზე დარეკვა\n<xliff:g id="NUMBER">%s</xliff:g>-ის გამოყენებით"</string>
- <string name="create_contact_using" msgid="4947405226788104538">"კონტაქტის შექმნა\n <xliff:g id="NUMBER">%s</xliff:g>-ის გამოყენებით"</string>
- <string name="grant_credentials_permission_message_header" msgid="2106103817937859662">"მითითებული ერთი ან რამდენიმე აპი ითხოვს თქვენს ანგარიშზე წვდომის უფლებას, ახლა და მომავალში."</string>
- <string name="grant_credentials_permission_message_footer" msgid="3125211343379376561">"გსურთ ამ მოთხოვნის დაკმაყოფილება?"</string>
- <string name="grant_permissions_header_text" msgid="6874497408201826708">"წვდომის მოთხოვნა"</string>
- <string name="allow" msgid="7225948811296386551">"უფლების მიცემა"</string>
- <string name="deny" msgid="2081879885755434506">"აკრძალვა"</string>
- <string name="permission_request_notification_title" msgid="6486759795926237907">"მოთხოვნილია ნებართვა"</string>
- <string name="permission_request_notification_with_subtitle" msgid="8530393139639560189">"მოთხოვნილია ნებრათვა \nანგარიშისთვის: <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
- <string name="input_method_binding_label" msgid="1283557179944992649">"შეყვანის მეთოდი"</string>
- <string name="sync_binding_label" msgid="3687969138375092423">"სინქრონიზაცია"</string>
- <string name="accessibility_binding_label" msgid="4148120742096474641">"წვდომა"</string>
- <string name="wallpaper_binding_label" msgid="1240087844304687662">"ფონი"</string>
- <string name="chooser_wallpaper" msgid="7873476199295190279">"ფონის შეცვლა"</string>
- <string name="notification_listener_binding_label" msgid="2014162835481906429">"შეტყობინებების მსმენელი"</string>
- <string name="vpn_title" msgid="19615213552042827">"VPN გააქტიურებულია"</string>
- <string name="vpn_title_long" msgid="6400714798049252294">"VPN გააქტიურებულია <xliff:g id="APP">%s</xliff:g>-ის მიერ"</string>
- <string name="vpn_text" msgid="3011306607126450322">"შეეხეთ ქსელის სამართავად."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"მიერთებულია <xliff:g id="SESSION">%s</xliff:g>-ზე. შეეხეთ ქსელის სამართავად."</string>
- <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>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"კონფიგურაციისთვის შეეხეთ"</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>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"შეეხეთ მანქანის რეჟიმიდან გამოსასვლელად."</string>
- <string name="tethered_notification_title" msgid="3146694234398202601">"ინტერნეტის მიერთება ან უსადენო ქსელი აქტიურია."</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"შესაქმნელად შეეხეთ"</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>
- <string name="throttle_warning_notification_title" msgid="4890894267454867276">"მობილური ინტერნეტის მაღალი მოხმარება"</string>
- <string name="throttle_warning_notification_message" msgid="3340822228599337743">"შეეხეთ, რათა შეიტყოთ მეტი მობილურის ინტერნეტის გამოყენების შესახებ."</string>
- <string name="throttled_notification_title" msgid="6269541897729781332">"მობილური ინტერნეტის ლიმიტი გადაჭარბებულია"</string>
- <string name="throttled_notification_message" msgid="5443457321354907181">"შეეხეთ, რათა შეიტყოთ მეტი მობილურის ინტერნეტის გამოყენების შესახებ."</string>
- <string name="no_matches" msgid="8129421908915840737">"შესატყვისები არ არის."</string>
- <string name="find_on_page" msgid="1946799233822820384">"გვერდზე ძებნა"</string>
- <plurals name="matches_found">
- <item quantity="one" msgid="8167147081136579439">"1 დამთხვევა"</item>
- <item quantity="other" msgid="4641872797067609177">"<xliff:g id="INDEX">%d</xliff:g> <xliff:g id="TOTAL">%d</xliff:g>-დან"</item>
- </plurals>
- <string name="action_mode_done" msgid="7217581640461922289">"დასრულდა"</string>
- <string name="progress_unmounting" product="nosdcard" msgid="3923810448507612746">"USB მეხსიერების გათიშვა…"</string>
- <string name="progress_unmounting" product="default" msgid="1327894998409537190">"მიმდინარეობს SD ბარათის მოხსნა…"</string>
- <string name="progress_erasing" product="nosdcard" msgid="4521573321524340058">"მიმდინარეობს USB მეხსიერების გასუფთავება…"</string>
- <string name="progress_erasing" product="default" msgid="6596988875507043042">"SD ბარათის წაშლა..."</string>
- <string name="format_error" product="nosdcard" msgid="6299769563624776948">"USB მეხსიერების წაშლა ვერ მოხერხდა."</string>
- <string name="format_error" product="default" msgid="7315248696644510935">"SD ბარათის წაშლა ვერ მოხერხდა."</string>
- <string name="media_bad_removal" msgid="7960864061016603281">"SD ბარათი მანამ მოიხსნა, ვიდრე გამოერთებული იქნებოდა."</string>
- <string name="media_checking" product="nosdcard" msgid="418188720009569693">"USB მეხსიერება ამჟამად შემოწმების პროცესშია."</string>
- <string name="media_checking" product="default" msgid="7334762503904827481">"ამჟამად მიმდინარეობს SD ბარათის შემოწმება."</string>
- <string name="media_removed" msgid="7001526905057952097">"SD ბარათი გამოერთებულია."</string>
- <string name="media_shared" product="nosdcard" msgid="5830814349250834225">"USB მეხსიერებას კომპიუტერი იყენებს ამჟამად."</string>
- <string name="media_shared" product="default" msgid="5706130568133540435">"SD ბარათს კომპიუტერი იყენებს ამჟამად."</string>
- <string name="media_unknown_state" msgid="729192782197290385">"გარე მედია უცნობ მდგომარეობაშია."</string>
- <string name="share" msgid="1778686618230011964">"გაზიარება"</string>
- <string name="find" msgid="4808270900322985960">"ძიება"</string>
- <string name="websearch" msgid="4337157977400211589">"ვებ-ძიება"</string>
- <string name="find_next" msgid="5742124618942193978">"მომდევნოს მოძებნა"</string>
- <string name="find_previous" msgid="2196723669388360506">"წინას პოვნა"</string>
- <string name="gpsNotifTicker" msgid="5622683912616496172">"მდებარეობა მოთხოვნილი იყო <xliff:g id="NAME">%s</xliff:g>-ისგან"</string>
- <string name="gpsNotifTitle" msgid="5446858717157416839">"მდებარეობის მოთხოვნა"</string>
- <string name="gpsNotifMessage" msgid="1374718023224000702">"მოთხოვნილია <xliff:g id="NAME">%1$s</xliff:g>-ის მიერ (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
- <string name="gpsVerifYes" msgid="2346566072867213563">"დიახ"</string>
- <string name="gpsVerifNo" msgid="1146564937346454865">"არა"</string>
- <string name="sync_too_many_deletes" msgid="5296321850662746890">"წაშლის შეზღუდვა გადაჭარბებულია"</string>
- <string name="sync_too_many_deletes_desc" msgid="496551671008694245">"<xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> წაშლილი ერთეულია <xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g>-თვის, ანგარიში <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g>. რისი გაკეთება გსურთ?"</string>
- <string name="sync_really_delete" msgid="2572600103122596243">"ერთეულების წაშლა"</string>
- <string name="sync_undo_deletes" msgid="2941317360600338602">"წაშლების გაუქმება"</string>
- <string name="sync_do_nothing" msgid="3743764740430821845">"ამჟამად არაფერი გააკეთო"</string>
- <string name="choose_account_label" msgid="5655203089746423927">"ანგარიშის არჩევა"</string>
- <string name="add_account_label" msgid="2935267344849993553">"ანგარიშის დამატება"</string>
- <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>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<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>
- <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"საათის მომატება"</string>
- <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"საათით უკან"</string>
- <string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"PM-ის დაყენება"</string>
- <string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"AM-ის დაყენება"</string>
- <string name="date_picker_increment_month_button" msgid="5369998479067934110">"თვის მომატება"</string>
- <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"ერთი თვით უკან"</string>
- <string name="date_picker_increment_day_button" msgid="7130465412308173903">"დღის მომატება"</string>
- <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"დღის მოკლება"</string>
- <string name="date_picker_increment_year_button" msgid="6318697384310808899">"წლის მომატება"</string>
- <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"წლის მოკლება"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"გაუქმება"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"წაშლა"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"დასრულდა"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"რეჟიმის შეცვლა"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift-"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"შეყვანა"</string>
- <string name="activitychooserview_choose_application" msgid="2125168057199941199">"აპის არჩევა"</string>
- <string name="shareactionprovider_share_with" msgid="806688056141131819">"გაზიარება"</string>
- <string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"გაუზიარეთ <xliff:g id="APPLICATION_NAME">%s</xliff:g>-ს"</string>
- <string name="content_description_sliding_handle" msgid="415975056159262248">"გასრიალებით მართვა. შეეხეთ &amp; არ აუშვათ."</string>
- <string name="description_direction_up" msgid="7169032478259485180">"გაასრიალეთ ზემოთ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-თვის."</string>
- <string name="description_direction_down" msgid="5087739728639014595">"გაასრიალეთ ქვემოთ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-თვის."</string>
- <string name="description_direction_left" msgid="7207478719805562165">"გაასრიალეთ მარცხნივ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-თვის."</string>
- <string name="description_direction_right" msgid="8034433242579600980">"გაასრიალეთ მარჯვნივ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-თვის."</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"განბლოკვა"</string>
- <string name="description_target_camera" msgid="969071997552486814">"კამერა"</string>
- <string name="description_target_silent" msgid="893551287746522182">"უხმო"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"ხმის ჩართვა"</string>
- <string name="description_target_search" msgid="3091587249776033139">"ძიება"</string>
- <string name="description_target_unlock_tablet" msgid="3833195335629795055">"განბლოკვისათვის გადაფურცლეთ"</string>
- <string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"შეაერთედ ყურსასმენები, პაროლის ღილაკები რომ გაიგოთ."</string>
- <string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"წერტილი."</string>
- <string name="action_bar_home_description" msgid="5293600496601490216">"მთავარზე ნავიგაცია"</string>
- <string name="action_bar_up_description" msgid="2237496562952152589">"ზემოთ ნავიგაცია"</string>
- <string name="action_menu_overflow_description" msgid="2295659037509008453">"მეტი ვარიანტები"</string>
- <string name="action_bar_home_description_format" msgid="7965984360903693903">"%1$s, %2$s"</string>
- <string name="action_bar_home_subtitle_description_format" msgid="6985546530471780727">"%1$s, %2$s, %3$s"</string>
- <string name="storage_internal" msgid="4891916833657929263">"შიდა მეხსიერება"</string>
- <string name="storage_sd_card" msgid="3282948861378286745">"SD ბარათი"</string>
- <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>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"შეეხეთ მოხმარებისა და პარამეტრების სანახავად."</string>
- <string name="data_usage_3g_limit_title" msgid="7093334419518706686">"2G-3G ინტერნეტი გაითიშა."</string>
- <string name="data_usage_4g_limit_title" msgid="7636489436819470761">"4G მონაცემები გათიშულია"</string>
- <string name="data_usage_mobile_limit_title" msgid="7869402519391631884">"მობილური ინტერნეტი გაითიშა"</string>
- <string name="data_usage_wifi_limit_title" msgid="8992154736441284865">"Wi‑Fi მონაცემთა გამორთვა"</string>
- <string name="data_usage_limit_body" msgid="3317964706973601386">"გასააქტიურებლად შეეხეთ."</string>
- <string name="data_usage_3g_limit_snoozed_title" msgid="7026739121138005231">"გადაჭარბებულია 2G-3G მონაცემების ლიმიტი"</string>
- <string name="data_usage_4g_limit_snoozed_title" msgid="1106562779311209039">"4G ლიმიტი გადაჭარბებულია"</string>
- <string name="data_usage_mobile_limit_snoozed_title" msgid="279240572165412168">"მობილური ინტერნეტის ლიმიტი გადაჭარბებულია."</string>
- <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>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"შეეხეთ შეზღუდვის მოსახსნელად"</string>
- <string name="ssl_certificate" msgid="6510040486049237639">"უსაფრთხოების სერტიფიკატი"</string>
- <string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ეს სერტიფიკატი სწორია."</string>
- <string name="issued_to" msgid="454239480274921032">"მიეცა:"</string>
- <string name="common_name" msgid="2233209299434172646">"სტანდარტული სახელი:"</string>
- <string name="org_name" msgid="6973561190762085236">"ორგანიზაცია:"</string>
- <string name="org_unit" msgid="7265981890422070383">"ორგანიზაციული ერთეული:"</string>
- <string name="issued_by" msgid="2647584988057481566">"გამცემი:"</string>
- <string name="validity_period" msgid="8818886137545983110">"ვალიდურობა:"</string>
- <string name="issued_on" msgid="5895017404361397232">"გაცემული:"</string>
- <string name="expires_on" msgid="3676242949915959821">"ვადა იწურება:"</string>
- <string name="serial_number" msgid="758814067660862493">"სერიული ნომერი:"</string>
- <string name="fingerprints" msgid="4516019619850763049">"ანაბეჭდები:"</string>
- <string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-256 ანაბეჭდი:"</string>
- <string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1 თითის ანაბეჭდი:"</string>
- <string name="activity_chooser_view_see_all" msgid="4292569383976636200">"ყველას ნახვა"</string>
- <string name="activity_chooser_view_dialog_title_default" msgid="4710013864974040615">"აქტივობის არჩევა"</string>
- <string name="share_action_provider_share_with" msgid="5247684435979149216">"გაზიარება"</string>
- <string name="status_bar_device_locked" msgid="3092703448690669768">"მოწყობილობა ჩაკეტილია."</string>
- <string name="list_delimeter" msgid="3975117572185494152">", "</string>
- <string name="sending" msgid="3245653681008218030">"იგზავნება..."</string>
- <string name="launchBrowserDefault" msgid="2057951947297614725">"გსურთ ბრაუზერის გაშვება?"</string>
- <string name="SetupCallDefault" msgid="5834948469253758575">"უპასუხებთ ზარს?"</string>
- <string name="activity_resolver_use_always" msgid="8017770747801494933">"ყოველთვის"</string>
- <string name="activity_resolver_use_once" msgid="2404644797149173758">"მხოლოდ ერთხელ"</string>
- <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"ტაბლეტი"</string>
- <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"ტელეფონი"</string>
- <string name="default_audio_route_name_headphones" msgid="8119971843803439110">"ყურსასმენები"</string>
- <string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"სპიკერების მიმაგრება"</string>
- <string name="default_media_route_name_hdmi" msgid="2450970399023478055">"HDMI"</string>
- <string name="default_audio_route_category_name" msgid="3722811174003886946">"სისტემა"</string>
- <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth აუდიო"</string>
- <string name="wireless_display_route_description" msgid="9070346425023979651">"უსადენო ეკრანი"</string>
- <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"დასრულდა"</string>
- <string name="media_route_button_content_description" msgid="5758553567065145276">"მედია გამომავალი"</string>
- <string name="media_route_status_scanning" msgid="7279908761758293783">"სკანირება..."</string>
- <string name="media_route_status_connecting" msgid="6422571716007825440">"დაკავშირება..."</string>
- <string name="media_route_status_available" msgid="6983258067194649391">"ხელმისაწვდომი"</string>
- <string name="media_route_status_not_available" msgid="6739899962681886401">"მიუწვდომელი"</string>
- <string name="media_route_status_in_use" msgid="4533786031090198063">"გამოიყენება"</string>
- <string name="display_manager_built_in_display_name" msgid="2583134294292563941">"ჩამონტაჟებული ეკრანი"</string>
- <string name="display_manager_hdmi_display_name" msgid="1555264559227470109">"HDMI ეკრანი"</string>
- <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"გადაფარვა #<xliff:g id="ID">%1$d</xliff:g>"</string>
- <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string>
- <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", დაცული"</string>
- <string name="wifi_display_notification_title" msgid="2223050649240326557">"უსადენო ეკრანი დაკავშირებულია"</string>
- <string name="wifi_display_notification_message" msgid="4498802012464170685">"გამოსახულება გადაეცემა სხვა მოწყობილობას"</string>
- <string name="wifi_display_notification_disconnect" msgid="6183754463561153372">"კავშირის გაწყვეტა"</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"გადაუდებელი დახმარების ზარი"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"დაგავიწყდათ ნიმუში"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"არასწორი ნიმუში"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"არასწორი პაროლი"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"არასწორი PIN"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"კიდევ სცადეთ <xliff:g id="NUMBER">%1$d</xliff:g> წამში."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"დახატეთ თქვენი ნიმუში."</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"SIM PIN-ის შეყვანა"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"შეიყვანეთ PIN"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"პაროლის შეყვანა"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM ამჟამად დეაქტივირებულია. გასაგრძელებლად შეიყვანეთ PUK კოდი. დეტალებისთვის მიმართეთ მობილურ ოპერატორს."</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"სასურველი PIN კოდის შეყვანა"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"სასურველი PIN კოდის დადასტურება"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM ბარათის განბლოკვა…"</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"არასწორი PIN კოდი."</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"აკრიფეთ PIN, რომელიც შედგება 4-დან 8 ციფრამდე."</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK კოდი უნდა იყოს რვა ან მეტი ციფრისგან შემდგარი."</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"ხელახლა შეიყვანეთ სწორი PUK კოდი. რამდენიმე წარუმატებელი მცდელობა გამოიწვევს SIM ბარათის დაბლოკვას."</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN კოდები არ ემთხვევა"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"ნახატი ნიმუშის ძალიან ბევრი მცდელობა"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"განბლოკვისთვის გაიარეთ ავტორიზაცია თქვენი Google ანგარიშით."</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"მომხმარებლის სახელი (ელფოსტა)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"პაროლი"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"შესვლა"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"არასწორი სახელი, ან პაროლი."</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"დაგავიწყდათ მომხმარებლის სახელი და პაროლი?\nეწვიეთ "<b>"google.com/accounts/recovery"</b>"."</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"მიმდინარეობს ანგარიშის შემოწმება…"</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"თქვენ <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ არასწორად შეიყვანეთ PIN კოდი. \n\nსცადეთ ხელახლა <xliff:g id="NUMBER_1">%d</xliff:g> წამში."</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"თქვენ <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ არასწორად დაბეჭდეთ თქვენი პაროლი. \n\nხელახლა სცადეთ <xliff:g id="NUMBER_1">%d</xliff:g> წამში."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"თქვენ <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ დახატეთ განბლოკვის ნიმუში. \n\nსცადეთ ხელახლა <xliff:g id="NUMBER_1">%d</xliff:g> წამში."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"თქვენ არასწორად სცადეთ ტაბლეტის განბლოკვა <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ. კიდევ <xliff:g id="NUMBER_1">%d</xliff:g> წარუმატებელი ცდის შემდეგ ტაბლეტზე დაყენდება საწყისი, ქარხნული პარამეტრები და მომხმარებლის ყველა მონაცემი დაიკარგება."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"თქვენ არასწორად სცადეთ ტელეფონის განბლოკვა <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ. კიდევ <xliff:g id="NUMBER_1">%d</xliff:g> წარუმატებელი ცდის შემდეგ ტელეფონზე დაყენდება საწყისი, ქარხნული პარამეტრები და მომხმარებლის ყველა მონაცემი დაიკარგება."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"თქვენ არასწორად სცადეთ ტაბლეტის განბლოკვა <xliff:g id="NUMBER">%d</xliff:g>-ჯერ. ტაბლეტზე დაყენდება საწყისი, ქარხნული პარამეტრები და მომხმარებლის ყველა მონაცემი დაიკარგება."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"თქვენ <xliff:g id="NUMBER">%d</xliff:g>-ჯერ არასწორად სცადეთ ტელეფონის განბლოკვა. ამიტომ ტელეფონზე დადგება საწყისი, ქარხნული პარამეტრები."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"თქვენ არასწორად დახატეთ თქვენი განბლოკვის ნიმუში <xliff:g id="NUMBER_0">%d</xliff:g> ჯერ. კიდევ <xliff:g id="NUMBER_1">%d</xliff:g> წარუმატებელი ცდის შემდეგ მოგთხოვთ ტაბლეტის განბლოკვას ელფოსტის ანგარიშის გამოყენებით.\n\n ხელახლა სცადეთ <xliff:g id="NUMBER_2">%d</xliff:g> წამში."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"თქვენ არასწორად დახატეთ თქვენი განბლოკვის ნიმუში <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ. კიდევ <xliff:g id="NUMBER_1">%d</xliff:g> წარუმატებელი ცდის შემდეგ, დაგჭირდებათ თქვენი ტელეფონის განბლოკვა ელფოსტის ანგარიშის გამოყენებით.\n\n ხელახლა სცადეთ <xliff:g id="NUMBER_2">%d</xliff:g> წამში."</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"ამოშლა"</string>
- <string name="safe_media_volume_warning" product="default" msgid="7324161939475478066">"რეკომენდებულ დონეზე მაღლა გსურთ ხმის აწევა?\nდიდი ხნის განმავლობაში ძალიან ხმამაღლა მოსმენამ შესაძლოა სმენა დაგიზიანოთ."</string>
- <string name="continue_to_enable_accessibility" msgid="1626427372316070258">"გეჭიროთ ორი თითი მარტივი წვდომის ჩასართავად."</string>
- <string name="accessibility_enabled" msgid="1381972048564547685">"მარტივი წვდომა ჩართულია."</string>
- <string name="enable_accessibility_canceled" msgid="3833923257966635673">"მარტივი წვდომა გაუქმდა."</string>
- <string name="user_switched" msgid="3768006783166984410">"ამჟამინდელი მომხმარებელი <xliff:g id="NAME">%1$s</xliff:g>."</string>
- <string name="owner_name" msgid="2716755460376028154">"მფლობელი"</string>
- <string name="error_message_title" msgid="4510373083082500195">"შეცდომა"</string>
- <string name="app_no_restricted_accounts" msgid="5739463249673727736">"ამ აპს შეზღუდული პროფილების ანგარიშების მხარდაჭერა არ აქვს"</string>
- <string name="app_not_found" msgid="3429141853498927379">"ამ მოქმედების შესასრულებლად აპლიკაცია ვერ მოიძებნა"</string>
- <string name="revoke" msgid="5404479185228271586">"გაუქმება"</string>
- <string name="mediaSize_iso_a0" msgid="7875427489420821793">"ISO A0"</string>
- <string name="mediaSize_iso_a1" msgid="3760734499050875356">"ISO A1"</string>
- <string name="mediaSize_iso_a2" msgid="5973266378020144382">"ISO A2"</string>
- <string name="mediaSize_iso_a3" msgid="1373407105687300884">"ISO A3"</string>
- <string name="mediaSize_iso_a4" msgid="6689772807982597254">"ISO A4"</string>
- <string name="mediaSize_iso_a5" msgid="5353549652015741040">"ISO A5"</string>
- <string name="mediaSize_iso_a6" msgid="8585038048674911907">"ISO A6"</string>
- <string name="mediaSize_iso_a7" msgid="6641836716963839119">"ISO A7"</string>
- <string name="mediaSize_iso_a8" msgid="7571139437465693355">"ISO A8"</string>
- <string name="mediaSize_iso_a9" msgid="1378455891957115079">"ISO A9"</string>
- <string name="mediaSize_iso_a10" msgid="2480747457429475344">"ISO A10"</string>
- <string name="mediaSize_iso_b0" msgid="3965935097661108039">"ISO B0"</string>
- <string name="mediaSize_iso_b1" msgid="2505753285010115437">"ISO B1"</string>
- <string name="mediaSize_iso_b2" msgid="8763874709859458453">"ISO B2"</string>
- <string name="mediaSize_iso_b3" msgid="4210506688191764076">"ISO B3"</string>
- <string name="mediaSize_iso_b4" msgid="5749404165888526034">"ISO B4"</string>
- <string name="mediaSize_iso_b5" msgid="7640627414621904733">"ISO B5"</string>
- <string name="mediaSize_iso_b6" msgid="7342988864712748544">"ISO B6"</string>
- <string name="mediaSize_iso_b7" msgid="5069844065235382429">"ISO B7"</string>
- <string name="mediaSize_iso_b8" msgid="7316818922278779774">"ISO B8"</string>
- <string name="mediaSize_iso_b9" msgid="5414727094026532341">"ISO B9"</string>
- <string name="mediaSize_iso_b10" msgid="5251253731832048185">"ISO B10"</string>
- <string name="mediaSize_iso_c0" msgid="4003138342671964217">"ISO C0"</string>
- <string name="mediaSize_iso_c1" msgid="1935188063393553008">"ISO C1"</string>
- <string name="mediaSize_iso_c2" msgid="3197307969712069904">"ISO C2"</string>
- <string name="mediaSize_iso_c3" msgid="4335826087321913508">"ISO C3"</string>
- <string name="mediaSize_iso_c4" msgid="3745639598281015005">"ISO C4"</string>
- <string name="mediaSize_iso_c5" msgid="8269457765822791013">"ISO C5"</string>
- <string name="mediaSize_iso_c6" msgid="566666105260346930">"ISO C6"</string>
- <string name="mediaSize_iso_c7" msgid="8678413180782608498">"ISO C7"</string>
- <string name="mediaSize_iso_c8" msgid="8392376206627041730">"ISO C8"</string>
- <string name="mediaSize_iso_c9" msgid="9191613372324845405">"ISO C9"</string>
- <string name="mediaSize_iso_c10" msgid="7327709699184920822">"ISO C10"</string>
- <string name="mediaSize_na_letter" msgid="4191805615829472953">"Letter"</string>
- <string name="mediaSize_na_gvrnmt_letter" msgid="7853382192649405507">"Government Letter"</string>
- <string name="mediaSize_na_legal" msgid="6697982988283823150">"Legal"</string>
- <string name="mediaSize_na_junior_legal" msgid="3727743969902758948">"Junior Legal"</string>
- <string name="mediaSize_na_ledger" msgid="281871464896601236">"Ledger"</string>
- <string name="mediaSize_na_tabloid" msgid="5775966416333578127">"Tabloid"</string>
- <string name="write_fail_reason_cancelled" msgid="7091258378121627624">"გაუქმებული"</string>
- <string name="write_fail_reason_cannot_write" msgid="8132505417935337724">"შეცდომა კონტენტის ჩაწერისას"</string>
- <string name="restr_pin_enter_pin" msgid="3395953421368476103">"შეიყვანეთ PIN"</string>
- <string name="restr_pin_enter_old_pin" msgid="1462206225512910757">"ამჟამინდელი PIN"</string>
- <string name="restr_pin_enter_new_pin" msgid="5959606691619959184">"ახალი PIN"</string>
- <string name="restr_pin_confirm_pin" msgid="8501523829633146239">"გაიმეორეთ ახალი PIN"</string>
- <string name="restr_pin_create_pin" msgid="8017600000263450337">"შექმენით PIN შეზღუდვების ცვლილებებისათვის"</string>
- <string name="restr_pin_error_doesnt_match" msgid="2224214190906994548">"PIN-ები არ ემთხვევა. სცადეთ ხელახლა."</string>
- <string name="restr_pin_error_too_short" msgid="8173982756265777792">"PIN ძალიან მოკლეა. უნდა შედგებოდეს სულ ცოტა 4 ციფრისგან."</string>
- <plurals name="restr_pin_countdown">
- <item quantity="one" msgid="4835639969503729874">"არასწორი PIN. სცადეთ ისევ 1 წამში."</item>
- <item quantity="other" msgid="8030607343223287654">"არასწორი PIN. სცადეთ ისევ <xliff:g id="COUNT">%d</xliff:g> წამში."</item>
- </plurals>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"გაასრიალეთ ეკრანის კიდეზე ზოლის გამოსაჩენად"</string>
-</resources>
diff --git a/core/res/res/values-km-rKH/strings.xml b/core/res/res/values-km-rKH/strings.xml
index 0a98a0847950..6dace3c4dc37 100644
--- a/core/res/res/values-km-rKH/strings.xml
+++ b/core/res/res/values-km-rKH/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"សូម​ព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈពេល <xliff:g id="COUNT">%d</xliff:g> វិនាទី"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"សូម​ព្យាយាម​ម្ដងទៀត​នៅ​ពេល​ក្រោយ។"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"អូស​​​ចុះក្រោម ដើម្បី​ចេញ​ពី​ការ​បង្ហាញ​ពេញ​អេក្រង់"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"អូស​​​ចុះក្រោម ដើម្បី​ចេញ​ពី​ការ​បង្ហាញ​ពេញ​អេក្រង់"</string>
</resources>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
deleted file mode 100644
index 3d62d1a40868..000000000000
--- a/core/res/res/values-km/strings.xml
+++ /dev/null
@@ -1,1587 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="byteShort" msgid="8340973892742019101">"B"</string>
- <string name="kilobyteShort" msgid="5973789783504771878">"គីឡូបៃ"</string>
- <string name="megabyteShort" msgid="6355851576770428922">"មេកាបៃ"</string>
- <string name="gigabyteShort" msgid="3259882455212193214">"ជីកាបៃ"</string>
- <string name="terabyteShort" msgid="231613018159186962">"តេរ៉ាបៃ"</string>
- <string name="petabyteShort" msgid="5637816680144990219">"PB"</string>
- <string name="fileSizeSuffix" msgid="9164292791500531949">"<xliff:g id="NUMBER">%1$s</xliff:g><xliff:g id="UNIT">%2$s</xliff:g>"</string>
- <string name="untitled" msgid="4638956954852782576">"&lt;គ្មាន​ចំណង​ជើង&gt;"</string>
- <string name="ellipsis" msgid="7899829516048813237">"…"</string>
- <string name="ellipsis_two_dots" msgid="1228078994866030736">"‥"</string>
- <string name="emptyPhoneNumber" msgid="7694063042079676517">"(គ្មាន​លេខ​ទូរស័ព្ទ)"</string>
- <string name="unknownName" msgid="2277556546742746522">"(មិន​ស្គាល់)"</string>
- <string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"សារ​ជា​សំឡេង"</string>
- <string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN1"</string>
- <string name="mmiError" msgid="5154499457739052907">"បញ្ហា​ក្នុង​ការ​តភ្ជាប់​ ឬ​កូដ MMI មិន​ត្រឹមត្រូវ។"</string>
- <string name="mmiFdnError" msgid="5224398216385316471">"ប្រតិបត្តិការ​ត្រូវ​បាន​ដាក់​កម្រិត​​​ចំពោះ​លេខ​ហៅ​ថេរ​តែ​ប៉ុណ្ណោះ។"</string>
- <string name="serviceEnabled" msgid="8147278346414714315">"បាន​បើក​សេវាកម្ម។"</string>
- <string name="serviceEnabledFor" msgid="6856228140453471041">"បាន​បើក​សេវាកម្ម​សម្រាប់៖"</string>
- <string name="serviceDisabled" msgid="1937553226592516411">"បាន​បិទ​សេវាកម្ម។"</string>
- <string name="serviceRegistered" msgid="6275019082598102493">"ការ​ចុះឈ្មោះ​ជោគ​ជ័យ។"</string>
- <string name="serviceErased" msgid="1288584695297200972">"ការ​លុប​បាន​ជោគជ័យ។"</string>
- <string name="passwordIncorrect" msgid="7612208839450128715">"ពាក្យ​សម្ងាត់​មិន​ត្រឹម​ត្រូវ"</string>
- <string name="mmiComplete" msgid="8232527495411698359">"MMI បញ្ចប់​។"</string>
- <string name="badPin" msgid="9015277645546710014">"កូដ PIN ចាស់​ដែល​អ្នក​បាន​បញ្ចូល​មិន​ត្រឹមត្រូវ។"</string>
- <string name="badPuk" msgid="5487257647081132201">"កូដ PUK ដែល​អ្នក​បាន​បញ្ចូល​មិន​ត្រឹមត្រូវ។"</string>
- <string name="mismatchPin" msgid="609379054496863419">"កូដ​ PIN ដែល​អ្នក​បាន​បញ្ចូល​​មិន​ដូច​គ្នា។"</string>
- <string name="invalidPin" msgid="3850018445187475377">"បញ្ចូល​កូដ PIN ដែល​មាន​​​ពី ៤ ដល់ ៨​លេខ"</string>
- <string name="invalidPuk" msgid="8761456210898036513">"បញ្ចូល​កូដ PUK ដែល​មាន​ពី​ ៨ លេខ​ ឬ​វែង​ជាង​នេះ។"</string>
- <string name="needPuk" msgid="919668385956251611">"ស៊ីមកាត​​របស់​អ្នក​ជាប់​កូដ PUK ។ បញ្ចូល​កូដ PUK ដើម្បី​ដោះ​សោ។"</string>
- <string name="needPuk2" msgid="4526033371987193070">"បញ្ចូល​កូដ PUK2 ដើម្បី​ដោះ​សោ​ស៊ីម​កាត។"</string>
- <string name="imei" msgid="2625429890869005782">"IMEI"</string>
- <string name="meid" msgid="4841221237681254195">"MEID"</string>
- <string name="ClipMmi" msgid="6952821216480289285">"លេខ​សម្គាល់​អ្នក​ហៅ​​ចូល"</string>
- <string name="ClirMmi" msgid="7784673673446833091">"លេខ​សម្គាល់​អ្នក​ហៅ​ចេញ"</string>
- <string name="CfMmi" msgid="5123218989141573515">"បញ្ជូន​ការ​ហៅ​បន្ត"</string>
- <string name="CwMmi" msgid="9129678056795016867">"រង់ចាំ​ការ​ហៅ"</string>
- <string name="BaMmi" msgid="455193067926770581">"រារាំង​ការ​ហៅ"</string>
- <string name="PwdMmi" msgid="7043715687905254199">"ប្ដូរ​ពាក្យ​សម្ងាត់"</string>
- <string name="PinMmi" msgid="3113117780361190304">"ប្ដូរ​កូដ PIN"</string>
- <string name="CnipMmi" msgid="3110534680557857162">"បង្ហាញ​ការ​ហៅ​លេខ"</string>
- <string name="CnirMmi" msgid="3062102121430548731">"បាន​ដាក់​កម្រិត​ការ​ហៅ​លេខ"</string>
- <string name="ThreeWCMmi" msgid="9051047170321190368">"ការ​ហៅ​បី​ផ្លូវ"</string>
- <string name="RuacMmi" msgid="7827887459138308886">"បដិសេធ​ការ​ហៅ​រំខាន​ដែល​មិន​ចង់បាន"</string>
- <string name="CndMmi" msgid="3116446237081575808">"ការ​បញ្ជូន​លេខ​ហៅ"</string>
- <string name="DndMmi" msgid="1265478932418334331">"កុំ​រំខាន"</string>
- <string name="CLIRDefaultOnNextCallOn" msgid="429415409145781923">"បាន​ដាក់​កម្រិត​លំនាំដើម​លេខ​សម្គាល់​អ្នក​ហៅ។​​​ ការ​ហៅ​បន្ទាប់៖​ បាន​ដាក់កម្រិត"</string>
- <string name="CLIRDefaultOnNextCallOff" msgid="3092918006077864624">"មិន​បាន​ដាក់កម្រិត​លំនាំដើម​លេខ​សម្គាល់​អ្នក​ហៅ។ ការ​ហៅ​បន្ទាប់៖ មិន​បាន​ដាក់​កម្រិត។"</string>
- <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"មិន​បាន​ដាក់​កម្រិត​លេខ​សម្គាល់​អ្នក​ហៅ​លំនាំ​ដើម។ ការ​ហៅ​បន្ទាប់៖​ បាន​ដាក់កម្រិត"</string>
- <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"មិន​បាន​ដាក់កម្រិត​លំនាំដើម​លេខ​សម្គាល់​អ្នក​ហៅ។ ការ​ហៅ​បន្ទាប់៖ មិន​បាន​ដាក់​កម្រិត។"</string>
- <string name="serviceNotProvisioned" msgid="8614830180508686666">"មិន​បាន​ផ្ដល់​សេវាកម្ម។"</string>
- <string name="CLIRPermanent" msgid="3377371145926835671">"អ្នក​មិន​អាច​ប្ដូរ​ការ​កំណត់​លេខ​សម្គាល់​អ្នក​ហៅ​បានទេ។"</string>
- <string name="RestrictedChangedTitle" msgid="5592189398956187498">"បាន​ប្ដូរ​ការ​ចូល​ដំណើរការ​ដែល​បាន​ដាក់​​កម្រិត"</string>
- <string name="RestrictedOnData" msgid="8653794784690065540">"បាន​ទប់ស្កាត់​សេវាកម្ម​ទិន្នន័យ។"</string>
- <string name="RestrictedOnEmergency" msgid="6581163779072833665">"បាន​ទប់ស្កាត់​សេវាកម្ម​ពេល​អាសន្ន។"</string>
- <string name="RestrictedOnNormal" msgid="4953867011389750673">"សេវាកម្ម​សំឡេង​ត្រូវ​បាន​ទប់ស្កាត់។"</string>
- <string name="RestrictedOnAllVoice" msgid="3396963652108151260">"បាន​ទប់ស្កាត់​សេវាកម្ម​សំឡេង​ទាំងអស់។"</string>
- <string name="RestrictedOnSms" msgid="8314352327461638897">"បាន​ទប់ស្កាត់​សេវាកម្ម​ SMS ។"</string>
- <string name="RestrictedOnVoiceData" msgid="996636487106171320">"បាន​ទប់​ស្កាត់​សេវាកម្ម​សំឡេង/ទិន្នន័យ។"</string>
- <string name="RestrictedOnVoiceSms" msgid="1888588152792023873">"បាន​ទប់ស្កាត់​សេវាកម្ម​សំឡេង/សារ SMS ។"</string>
- <string name="RestrictedOnAll" msgid="5643028264466092821">"សំឡេង/ទិន្នន័យ/សេវាកម្ម SMS ទាំងអស់​ត្រូវ​បាន​ទប់​ស្កាត់។"</string>
- <string name="serviceClassVoice" msgid="1258393812335258019">"សំឡេង"</string>
- <string name="serviceClassData" msgid="872456782077937893">"ទិន្នន័យ"</string>
- <string name="serviceClassFAX" msgid="5566624998840486475">"ទូរសារ"</string>
- <string name="serviceClassSMS" msgid="2015460373701527489">"សារ SMS"</string>
- <string name="serviceClassDataAsync" msgid="4523454783498551468">"អ​សម​កាលកម្ម"</string>
- <string name="serviceClassDataSync" msgid="7530000519646054776">"ធ្វើ​សម​កាល​កម្ម"</string>
- <string name="serviceClassPacket" msgid="6991006557993423453">"កញ្ចប់​ព័ត៌មាន"</string>
- <string name="serviceClassPAD" msgid="3235259085648271037">"PAD"</string>
- <string name="roamingText0" msgid="7170335472198694945">"បើក​ទ្រនិច​បង្ហាញ​រ៉ូមីង"</string>
- <string name="roamingText1" msgid="5314861519752538922">"បិទ​ទ្រនិច​បង្ហាញ​រ៉ូមីង"</string>
- <string name="roamingText2" msgid="8969929049081268115">"ពន្លឺ​​ទ្រនិច​បង្ហាញ​រ៉ូមីង"</string>
- <string name="roamingText3" msgid="5148255027043943317">"ចេញ​ពី​អ្នកជិតខាង"</string>
- <string name="roamingText4" msgid="8808456682550796530">"ក្រៅ​​អាគារ"</string>
- <string name="roamingText5" msgid="7604063252850354350">"រ៉ូមីង - ប្រព័ន្ធ​ពេញចិត្ត"</string>
- <string name="roamingText6" msgid="2059440825782871513">"រ៉ូ​មីង - ប្រព័ន្ធ​​អាច​ប្រើ​បាន"</string>
- <string name="roamingText7" msgid="7112078724097233605">"រ៉ូ​មីង - ​សម្ពន្ធភាព"</string>
- <string name="roamingText8" msgid="5989569778604089291">"រ៉ូ​មីង - ដៃគូ​ពិសេស"</string>
- <string name="roamingText9" msgid="7969296811355152491">"រ៉ូ​មីង - មុខងារ​សេវា​កម្ម​ពេញលេញ"</string>
- <string name="roamingText10" msgid="3992906999815316417">"រ៉ូ​មីង - មុខងារ​សេវា​តាម​​ផ្នែក"</string>
- <string name="roamingText11" msgid="4154476854426920970">"បើក​បដា​រ៉ូមីង"</string>
- <string name="roamingText12" msgid="1189071119992726320">"បិទ​បដា​រ៉ូមីង"</string>
- <string name="roamingTextSearching" msgid="8360141885972279963">"​ស្វែង​រក​សេវាកម្ម"</string>
- <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g> ៖ មិន​បាន​បញ្ជូន​បន្ត"</string>
- <string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string>
- <string name="cfTemplateForwardedTime" msgid="9206251736527085256">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g> បន្ទាប់​ពី <xliff:g id="TIME_DELAY">{2}</xliff:g> វិនាទី"</string>
- <string name="cfTemplateRegistered" msgid="5073237827620166285">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g> ៖ មិន​បាន​បញ្ជូន​បន្ត"</string>
- <string name="cfTemplateRegisteredTime" msgid="6781621964320635172">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g> ៖ មិន​បាន​បញ្ជូន​បន្ត"</string>
- <string name="fcComplete" msgid="3118848230966886575">"កូដ​លក្ខណៈ​ពេញលេញ។"</string>
- <string name="fcError" msgid="3327560126588500777">"បញ្ហា​ការ​តភ្ជាប់​ ឬ​កូដ​លក្ខណៈ​​​មិន​ត្រឹមត្រូវ​។"</string>
- <string name="httpErrorOk" msgid="1191919378083472204">"យល់​ព្រម"</string>
- <string name="httpError" msgid="7956392511146698522">"មាន​កំហុស​បណ្ដាញ។"</string>
- <string name="httpErrorLookup" msgid="4711687456111963163">"រក​មិន​ឃើញ URL ។"</string>
- <string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"គ្រោងការណ៍​ផ្ទៀងផ្ទាត់​តំបន់បណ្ដាញ​មិន​ត្រូវ​បាន​គាំទ្រ។"</string>
- <string name="httpErrorAuth" msgid="1435065629438044534">"មិន​អាច​ផ្ទៀងផ្ទាត់។"</string>
- <string name="httpErrorProxyAuth" msgid="1788207010559081331">"ការ​ផ្ទៀងផ្ទាត់​​តាម​រយៈ​ម៉ាស៊ីន​​មេ​​ប្រូកស៊ី​មិន​បាន​ជោគជ័យ​។"</string>
- <string name="httpErrorConnect" msgid="8714273236364640549">"មិន​អាច​ភ្ជាប់​ម៉ាស៊ីន​មេ។"</string>
- <string name="httpErrorIO" msgid="2340558197489302188">"មិន​អាច​ទាក់ទង​ជា​មួយ​ម៉ាស៊ីន​មេ។ ព្យាយាម​ម្ដង​ទៀត​ពេល​ក្រោយ។"</string>
- <string name="httpErrorTimeout" msgid="4743403703762883954">"អស់​ពេល​តភ្ជាប់​ទៅ​ម៉ាស៊ីន​មេ។"</string>
- <string name="httpErrorRedirectLoop" msgid="8679596090392779516">"ទំព័រ​មាន​ការ​បញ្ជូន​ម៉ាស៊ីន​មេ​បន្ត​ច្រើន​ពេក។"</string>
- <string name="httpErrorUnsupportedScheme" msgid="5015730812906192208">"មិន​បាន​គាំទ្រ​ពិធីការ។"</string>
- <string name="httpErrorFailedSslHandshake" msgid="96549606000658641">"មិន​អាច​បង្កើត​ការ​តភ្ជាប់​មាន​សុវត្ថិភាព។"</string>
- <string name="httpErrorBadUrl" msgid="3636929722728881972">"មិន​អាច​បើក​ទំព័រ​បាន​ទេ ព្រោះ​ URL ត្រឹមត្រូវ។"</string>
- <string name="httpErrorFile" msgid="2170788515052558676">"មិន​អាច​ចូល​ដំណើរការ​ឯកសារ​។"</string>
- <string name="httpErrorFileNotFound" msgid="6203856612042655084">"រក​មិន​ឃើញ​ឯកសារ​បាន​ស្នើ។"</string>
- <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"កំពុង​ដំណើរការ​សំណើ​​​ច្រើន​ពេក។ ព្យាយាម​ម្ដង​ទៀត​ពេល​ក្រោយ។"</string>
- <string name="notification_title" msgid="8967710025036163822">"កំហុស​ក្នុង​ការ​ចូល​សម្រាប់ <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
- <string name="contentServiceSync" msgid="8353523060269335667">"ធ្វើ​សម​កាល​កម្ម"</string>
- <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"ធ្វើ​សម​កាល​កម្ម"</string>
- <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"មាន​ការ​លុប <xliff:g id="CONTENT_TYPE">%s</xliff:g> ច្រើន​ពេក។"</string>
- <string name="low_memory" product="tablet" msgid="6494019234102154896">"ឧបករណ៍​ផ្ទុក​នៃ​​កុំព្យូទ័រ​បន្ទះ​ពេញ។ លុប​ឯកសារ​មួយ​ចំនួន​។"</string>
- <string name="low_memory" product="default" msgid="3475999286680000541">"ឧបករណ៍​ផ្ទុក​ទូរស័ព្ទ​ពេញ! លុប​ឯកសារ​មួយ​ចំនួន​ដើម្បី​បង្កើន​ទំហំ។"</string>
- <string name="me" msgid="6545696007631404292">"ខ្ញុំ"</string>
- <string name="power_dialog" product="tablet" msgid="8545351420865202853">"ជម្រើស​កុំព្យូទ័រ​បន្ទះ"</string>
- <string name="power_dialog" product="default" msgid="1319919075463988638">"ជម្រើស​ទូរស័ព្ទ"</string>
- <string name="silent_mode" msgid="7167703389802618663">"របៀប​ស្ងាត់"</string>
- <string name="turn_on_radio" msgid="3912793092339962371">"បើក​បណ្ដាញ​ឥត​ខ្សែ"</string>
- <string name="turn_off_radio" msgid="8198784949987062346">"បិទ​បណ្ដាញ​ឥតខ្សែ"</string>
- <string name="screen_lock" msgid="799094655496098153">"ចាក់​សោ​អេក្រង់"</string>
- <string name="power_off" msgid="4266614107412865048">"បិទ"</string>
- <string name="silent_mode_silent" msgid="319298163018473078">"បិទ​កម្ម​វិធី​រោទ៍"</string>
- <string name="silent_mode_vibrate" msgid="7072043388581551395">"កម្មវិធី​រោទ៍​ញ័រ"</string>
- <string name="silent_mode_ring" msgid="8592241816194074353">"បើក​កម្មវិធី​រោទ៍"</string>
- <string name="shutdown_progress" msgid="2281079257329981203">"កំពុង​បិទ..."</string>
- <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"កុំព្យូទ័រ​បន្ទះ​របស់​អ្នក​នឹង​បិទ។"</string>
- <string name="shutdown_confirm" product="default" msgid="649792175242821353">"ទូរស័ព្ទ​របស់​អ្នក​នឹង​បិទ។"</string>
- <string name="shutdown_confirm_question" msgid="2906544768881136183">"តើ​អ្នក​ចង់​បិទ​?"</string>
- <string name="reboot_safemode_title" msgid="7054509914500140361">"ចាប់ផ្ដើម​ឡើងវិញ​ដើម្បី​ចូល​របៀប​សុវត្ថិភាព"</string>
- <string name="reboot_safemode_confirm" msgid="55293944502784668">"តើ​អ្នក​ចង់​ចាប់ផ្ដើម​ឡើងវិញ​ចូល​របៀប​សុវត្ថិភាព? វា​នឹង​បិទ​កម្មវិធី​ភាគី​ទី​បី​ដែល​អ្នក​បាន​ដំឡើង។ ពួក​វា​នឹង​ត្រូវ​បាន​ស្ដារ​ឡើងវិញ​ពេល​អ្នក​ចាប់ផ្ដើម​ម្ដង​ទៀត។"</string>
- <string name="recent_tasks_title" msgid="3691764623638127888">"ថ្មី"</string>
- <string name="no_recent_tasks" msgid="8794906658732193473">"គ្មាន​កម្មវិធី​ថ្មី​​ៗ​​។"</string>
- <string name="global_actions" product="tablet" msgid="408477140088053665">"ជម្រើស​កុំព្យូទ័រ​បន្ទះ"</string>
- <string name="global_actions" product="default" msgid="2406416831541615258">"ជម្រើស​ទូរស័ព្ទ"</string>
- <string name="global_action_lock" msgid="2844945191792119712">"ចាក់​សោ​អេក្រង់"</string>
- <string name="global_action_power_off" msgid="4471879440839879722">"បិទ"</string>
- <string name="global_action_bug_report" msgid="7934010578922304799">"របាយការណ៍​កំហុស"</string>
- <string name="bugreport_title" msgid="2667494803742548533">"យក​របាយការណ៍​កំហុស"</string>
- <string name="bugreport_message" msgid="398447048750350456">"វា​នឹង​​ប្រមូល​ព័ត៌មាន​អំពី​ស្ថានភាព​ឧបករណ៍​របស់​អ្នក ដើម្បី​ផ្ញើ​ជា​សារ​អ៊ីមែល។ វា​នឹង​ចំណាយ​ពេល​តិច​ពី​ពេល​ចាប់ផ្ដើម​របាយការណ៍​រហូត​ដល់​ពេល​វា​រួចរាល់​ដើម្បី​ផ្ញើ សូម​អត់ធ្មត់។"</string>
- <string name="global_action_toggle_silent_mode" msgid="8219525344246810925">"របៀប​ស្ងាត់"</string>
- <string name="global_action_silent_mode_on_status" msgid="3289841937003758806">"បិទ​សំឡេង"</string>
- <string name="global_action_silent_mode_off_status" msgid="1506046579177066419">"បើក​សំឡេង"</string>
- <string name="global_actions_toggle_airplane_mode" msgid="5884330306926307456">"របៀប​ជិះ​យន្តហោះ"</string>
- <string name="global_actions_airplane_mode_on_status" msgid="2719557982608919750">"បាន​បើក​របៀប​ពេល​ជិះ​យន្ត​ហោះ"</string>
- <string name="global_actions_airplane_mode_off_status" msgid="5075070442854490296">"បាន​បិទ​របៀប​យន្តហោះ"</string>
- <string name="status_bar_notification_info_overflow" msgid="5301981741705354993">"999+"</string>
- <string name="safeMode" msgid="2788228061547930246">"របៀប​​​សុវត្ថិភាព"</string>
- <string name="android_system_label" msgid="6577375335728551336">"ប្រព័ន្ធ​​ Android"</string>
- <string name="permgrouplab_costMoney" msgid="5429808217861460401">"សេវាកម្ម​ដែល​កាត់​លុយ​របស់​អ្នក"</string>
- <string name="permgroupdesc_costMoney" msgid="3293301903409869495">"ធ្វើ​អ្វី​ដែល​អាច​កាត់​លុយ​របស់​អ្នក។"</string>
- <string name="permgrouplab_messages" msgid="7521249148445456662">"សារ​របស់​អ្នក"</string>
- <string name="permgroupdesc_messages" msgid="7821999071003699236">"អាន និង​សរសេរ​សារ SMS, អ៊ីមែល និង​សារ​ផ្សេងៗ​ទៀត​របស់​អ្នក។"</string>
- <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"ព័ត៌មាន​ផ្ទាល់ខ្លួន​របស់​អ្នក"</string>
- <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"ចូល​ដំណើរការ​ព័ត៌មាន​ដោយ​ផ្ទាល់​អំពី​អ្នក​ ដែល​បា​ន​រក្សាទុក​ក្នុង​កាត​ទំនាក់ទំនង​របស់​អ្នក។"</string>
- <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"ព័ត៌មាន​សង្គម​របស់​អ្នក"</string>
- <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"ចូល​ដំណើរការ​ព័ត៌មាន​ដោយ​ផ្ទាល់​អំពី​ទំនាក់ទំនង និង​ការ​ភ្ជាប់​សង្គម​របស់​អ្នក។"</string>
- <string name="permgrouplab_location" msgid="635149742436692049">"ទីតាំង​របស់​អ្នក"</string>
- <string name="permgroupdesc_location" msgid="5704679763124170100">"តាមដាន​ទីតាំង​ជាក់ស្ដែង​របស់​អ្នក។"</string>
- <string name="permgrouplab_network" msgid="5808983377727109831">"ការ​ទាក់ទង​បណ្ដាញ"</string>
- <string name="permgroupdesc_network" msgid="4478299413241861987">"ចូល​ដំណើរការ​លក្ខណៈ​​បណ្ដាញ​ផ្សេងៗ។"</string>
- <string name="permgrouplab_bluetoothNetwork" msgid="1585403544162128109">"ប៊្លូធូស"</string>
- <string name="permgroupdesc_bluetoothNetwork" msgid="5625288577164282391">"ចូល​ដំណើរការ​ឧបករណ៍ និង​បណ្ដាញ​តាម​ប៊្លូធូស។"</string>
- <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"ការ​កំណត់​អូឌីយ៉ូ"</string>
- <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"ប្ដូរ​ការ​កំណត់​អូឌីយ៉ូ។"</string>
- <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"ប៉ះពាល់​ដល់​ថ្ម"</string>
- <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"ប្រើ​លក្ខណៈ​ដែល​អាច​ប្រើ​ថាមពល​ថ្ម​យ៉ាង​រហ័ស។"</string>
- <string name="permgrouplab_calendar" msgid="5863508437783683902">"ប្រតិទិន"</string>
- <string name="permgroupdesc_calendar" msgid="5777534316982184416">"​ចូល​ដំណើរការ​​ប្រតិទិន​\"និង​ព្រឹត្តិការណ៍​ដោយ​ផ្ទាល់​។"</string>
- <string name="permgrouplab_dictionary" msgid="4148597128843641379">"អាន​វចនានុក្រម​អ្នក​ប្រើ"</string>
- <string name="permgroupdesc_dictionary" msgid="7921166355964764490">"អាន​ពាក្យ​នៅ​ក្នុង​វចនានុក្រម​​អ្នក​ប្រើ​។"</string>
- <string name="permgrouplab_writeDictionary" msgid="8090237702432576788">"សរសេរ​វចនានុក្រម​អ្នក​ប្រើ"</string>
- <string name="permgroupdesc_writeDictionary" msgid="2711561994497361646">"បន្ថែម​ពាក្យ​ទៅ​វចនានុក្រម​អ្នក​ប្រើ។"</string>
- <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"ចំណាំ​ និង​ប្រវត្តិ"</string>
- <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"ចូល​​ដំណើរការ​ចំណាំ និង​ប្រវត្តិ​កម្មវិធី​អ៊ីនធឺណិត​ដោយ​ផ្ទាល់។"</string>
- <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"រោទ៍"</string>
- <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"កំណត់​នាឡិកា​រោទ៍"</string>
- <string name="permgrouplab_voicemail" msgid="4162237145027592133">"សារ​ជា​សំឡេង"</string>
- <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"ចូល​ដំណើរការ​សារ​ជា​សំឡេង​ដោយ​ផ្ទាល់។"</string>
- <string name="permgrouplab_microphone" msgid="171539900250043464">"មីក្រូ​ហ្វូន"</string>
- <string name="permgroupdesc_microphone" msgid="7106618286905738408">"ចូល​ដំណើរការ​​មីក្រូហ្វូន​ដោយ​ផ្ទាល់ ​ដើម្បី​ថត​សំឡេង​។"</string>
- <string name="permgrouplab_camera" msgid="4820372495894586615">"ម៉ាស៊ីន​ថត"</string>
- <string name="permgroupdesc_camera" msgid="2933667372289567714">"ចូល​ដំណើរការ​ម៉ាស៊ីន​ថត​រូប ឬ​វីដេអូ​ដោយ​ផ្ទាល់។"</string>
- <string name="permgrouplab_screenlock" msgid="8275500173330718168">"ចាក់សោ​​អេក្រង់"</string>
- <string name="permgroupdesc_screenlock" msgid="7067497128925499401">"មាន​សមត្ថភាព​ប៉ះពាល់​ឥរិយាបថ​ការ​ចាក់​សោ​អេក្រង់​លើ​ឧបករណ៍​របស់​អ្នក។"</string>
- <string name="permgrouplab_appInfo" msgid="8028789762634147725">"ព័ត៌មាន​កម្មវិធី​របស់​អ្នក"</string>
- <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"លទ្ធភាព​ប៉ះពាល់​ដល់​ឥរិយាបថ​កម្មវិធី​ផ្សេងៗ​លើ​ឧបករណ៍​របស់​អ្នក។"</string>
- <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"ផ្ទាំង​រូបភាព"</string>
- <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"ប្ដូរ​ការ​កំណត់​ផ្ទាំង​រូបភាព​ឧបករណ៍"</string>
- <string name="permgrouplab_systemClock" msgid="406535759236612992">"នាឡិកា"</string>
- <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"ប្ដូរ​ពេលវេលា ឬ​តំបន់​ពេលវេលា​ឧបករណ៍"</string>
- <string name="permgrouplab_statusBar" msgid="2095862568113945398">"របារ​ស្ថានភាព"</string>
- <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"ប្ដូរ​ការ​កំណត់​របារ​ស្ថានភាព​ឧបករណ៍។"</string>
- <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"ការ​កំណត់​​​ធ្វើ​សម​កាល​កម្ម"</string>
- <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"ចូល​ដំណើរការ​ការ​កំណត់​ធ្វើ​សម​កាល​កម្ម។"</string>
- <string name="permgrouplab_accounts" msgid="3359646291125325519">"គណនី​របស់​អ្នក"</string>
- <string name="permgroupdesc_accounts" msgid="4948732641827091312">"ចូល​ដំណើរការ​គណនី​ដែល​មាន។"</string>
- <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"ពិនិត្យ​ផ្នែករឹង"</string>
- <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"ចូល​ដំណើរការ​ផ្នែក​រឹង​ដោយ​ផ្ទាល់​ក្នុង​ទូរស័ព្ទ។"</string>
- <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"ហៅ​ទូរស័ព្ទ"</string>
- <string name="permgroupdesc_phoneCalls" msgid="7489701620446183770">"តាមដាន ថត និង​ដំណើរការ​ការ​ហៅ​ទូរស័ព្ទ។"</string>
- <string name="permgrouplab_systemTools" msgid="4652191644082714048">"ឧបករណ៍​ប្រព័ន្ធ"</string>
- <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"ចូល​ដំណើរការ​កម្រិត​ទាប និង​ពិនិត្យ​ប្រព័ន្ធ។"</string>
- <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"ឧបករណ៍​​អភិវឌ្ឍ"</string>
- <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"លក្ខណៈ​ចាំបាច់​សម្រាប់​តែ​អ្នក​អភិវឌ្ឍ​កម្មវិធី។"</string>
- <string name="permgrouplab_display" msgid="4279909676036402636">"ចំណុច​ប្រទាក់​អ្នក​ប្រើ​កម្មវិធី​ផ្សេងៗ"</string>
- <string name="permgroupdesc_display" msgid="6051002031933013714">"ប្រសិទ្ធ​ភាព​ចំណុច​ប្រទាក់​អ្នក​ប្រើ​នៃ​កម្មវិធី​ផ្សេងៗ។"</string>
- <string name="permgrouplab_storage" msgid="1971118770546336966">"ការ​ផ្ទុក"</string>
- <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"ចូល​ដំណើរការ​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី។"</string>
- <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"ចូល​ដំណើរការ​កាត​អេសឌី"</string>
- <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"លក្ខណៈ​ភាព​ងាយស្រួល"</string>
- <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"លក្ខណៈ​ដែល​ជា​បច្ចេកវិទ្យា​ជំនួយ​អាច​ស្នើ។"</string>
- <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ទៅ​យក​មាតិកា​បង្អួច"</string>
- <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ពិនិត្យ​មាតិកា​បង្អួច​ដែល​អ្នក​កំពុង​ទាក់ទង​ជា​មួយ។"</string>
- <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"បើក​ការ​រក​មើល​​ដោយ​ប៉ះ"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"ធាតុ​បាន​ប៉ះ​នឹង​ត្រូវ​បាន​អាន​ឮ​ៗ អេក្រង់​អាច​ត្រូវ​បាន​ស្វែងរក​ដោយ​ប្រើ​កាយវិការ។"</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>
- <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"រួម​បញ្ចូល​ទិន្នន័យ​ផ្ទាល់​ខ្លួន​ ដូចជា​លេខ​កាត​ឥណទាន និង​ពាក្យ​សម្ងាត់។"</string>
- <string name="permlab_statusBar" msgid="7417192629601890791">"បិទ ឬ​កែ​របារ​ស្ថានភាព"</string>
- <string name="permdesc_statusBar" msgid="8434669549504290975">"ឲ្យ​កម្មវិធី​បិទ​របារ​ស្ថានភាព ឬ​បន្ថែម និង​លុប​រូប​តំណាង​ប្រព័ន្ធ។"</string>
- <string name="permlab_statusBarService" msgid="7247281911387931485">"របារ​ស្ថានភាព"</string>
- <string name="permdesc_statusBarService" msgid="716113660795976060">"ឲ្យ​កម្មវិធី​ក្លាយ​ជា​របារ​ស្ថានភាព។"</string>
- <string name="permlab_expandStatusBar" msgid="1148198785937489264">"ពង្រីក/បង្រួម​របារ​ស្ថាន​ភាព"</string>
- <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"ឲ្យ​កម្មវិធី​ពង្រីក ឬ​បង្រួម​របារ​ស្ថានភាព។"</string>
- <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"នាំ​ផ្លូវ​ការ​ហៅ​ចេញ​ឡើងវិញ"</string>
- <string name="permdesc_processOutgoingCalls" msgid="5331318931937402040">"ឲ្យ​កម្មវិធី​ដំណើរការ​ការ​ហៅ​ចេញ និង​ប្ដូរ​លេខ​ត្រូវ​ហៅ។ សិទ្ធិ​នេះ​អនុញ្ញាត​ឲ្យ​កម្មវិធី​តាមដាន ប្ដូរ​ទិស ឬ​ការពារ​ការ​ហៅ​ចេញ។"</string>
- <string name="permlab_receiveSms" msgid="8673471768947895082">"ទទួល​សារ​អត្ថបទ (សារ SMS​)"</string>
- <string name="permdesc_receiveSms" msgid="6424387754228766939">"ឲ្យ​កម្មវិធី​ទទួល និង​ដំណើរការ​​សារ MMS ។ មាន​ន័យ​ថា កម្មវិធី​អាច​ត្រួតពិនិត្យ​ ឬ​លុប​សារ​ដែល​បាន​ផ្ញើ​ទៅ​ឧបករណ៍​របស់​អ្នក ដោយ​​មិន​បង្ហាញ​អ្នក។"</string>
- <string name="permlab_receiveMms" msgid="1821317344668257098">"ទទួល​សារ​អត្ថបទ (MMS​)"</string>
- <string name="permdesc_receiveMms" msgid="533019437263212260">"ឲ្យ​កម្មវិធី​ទទួល និង​ដំណើរការ​​សារ​ MMS ។ វា​មាន​ន័យ​ថា កម្មវិធី​អាច​តាមដាន​ ឬ​លុប​សារ​ដែល​បាន​ផ្ញើ​ទៅ​ឧបករណ៍​របស់​អ្នក​ដោយ​មិន​បង្ហាញ​ពួកវា។"</string>
- <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"ទទួល​ការ​ប្រកាស​ពេល​​​អាសន្ន"</string>
- <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"ឲ្យ​កម្មវិធី​ទទួល​​ដំណើរការ​សារ​ប្រកាស​ពេល​អាសន្ន។ សិទ្ធិ​នេះ​មាន​តែ​​កម្មវិធី​ប្រព័ន្ធ​ប៉ុណ្ណោះ​​អាច​ប្រើ​បាន​។"</string>
- <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"អាន​សារ​ប្រកាស​ចល័ត"</string>
- <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"ឲ្យ​កម្មវិធី​អាន​សារ​ប្រកាស​ការ​ហៅ​ដែល​ឧបករណ៍​របស់​​អ្នក​បាន​ទទួល។ ការ​ជូន​ដំណឹង​ប្រកាស​ចល័ត​ត្រូវ​បាន​បញ្ជូន​ទៅ​ទីតាំង​មួយ​ចំនួន ដើម្បី​ព្រមាន​អ្នក​អំពី​ស្ថានភាព​អាសន្ន។ កម្មវិធី​ព្យាបាទ​អាច​ជ្រៀតជ្រែក​ការ​អនុវត្ត ឬ​ប្រតិបត្តិការ​ឧបករណ៍​របស់​អ្នក​​ពេល​ទទួល​ការ​ប្រកាស​ចល័ត​ពេល​អាសន្ន។"</string>
- <string name="permlab_sendSms" msgid="5600830612147671529">"ផ្ញើ​សារ SMS"</string>
- <string name="permdesc_sendSms" msgid="7094729298204937667">"ឲ្យ​កម្មវិធី​ផ្ញើ​សារ​ SMS ។ វា​អាច​គិត​ថ្លៃ​សេវាកម្ម​ដែល​មិន​រំពឹង​ទុក។ កម្មវិធី​ព្យាបាទ​អាច​គិត​ថ្លៃ​សេវាកម្ម​ពី​អ្នក​ ដោយ​ផ្ញើ​សារ​ដោយ​គ្មាន​ការ​បញ្ជាក់​របស់​អ្នក។"</string>
- <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"ផ្ញើ​ព្រឹត្តិការណ៍​សារ​តាមរយៈ​ការ​ឆ្លើយតប"</string>
- <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"ឲ្យ​កម្មវិធី​ផ្ញើ​សំណើ​ទៅ​កម្មវិធី​ផ្ញើ​សារ ដើម្បី​គ្រប់គ្រង​ព្រឹត្តិការណ៍​សារ​តាម​រយៈ​ការ​ឆ្លើយតប​សម្រាប់​ការ​ហៅ​ចូល។"</string>
- <string name="permlab_readSms" msgid="8745086572213270480">"អាន​សារ​អត្ថបទ​របស់​អ្នក (SMS ឬ MMS​)"</string>
- <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"ឲ្យ​កម្មវិធី​​អាន​សារ SMS ដែល​មាន​ក្នុង​កុំព្យូទ័រ​បន្ទះ ឬ​ស៊ីម​កាត។ វា​ឲ្យ​កម្មវិធី​អាន​សារ SMS ទាក់ទង​នឹង​មាតិកា ឬ​ព័ត៌មាន​សម្ងាត់។"</string>
- <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"ឲ្យ​​កម្មវិធី​អាន​សារ SMS ដែល​បាន​រក្សាទុក​ក្នុង​ទូរស័ព្ទ ឬ​​ស៊ីម​កាត​។ វា​ឲ្យ​កម្មវិធី​អាន​សារ SMS ទាំង​អស់​ ទាក់ទង​នឹង​មាតិកា​ ឬ​ព័ត៌មាន​សម្ងាត់។"</string>
- <string name="permlab_writeSms" msgid="3216950472636214774">"កែសម្រួល​សារ​អត្ថបទ​របស់​អ្នក (សារ SMS ឬ MMS​)"</string>
- <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"ឲ្យ​កម្មវិធី​សរសេរ​សារ SMS ដែល​​បាន​រក្សាទុក​ក្នុង​កុំព្យូទ័រ​បន្ទះ ឬ​ស៊ីម​កាត​របស់​អ្នក។ កម្មវិធី​ព្យាបាទ​អាច​លុប​សារ​របស់​អ្នក។"</string>
- <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"ឲ្យ​កម្មវិធី​សរសេរ​សារ SMS ដែល​បាន​រក្សាទុក​ក្នុង​ទូរស័ព្ទ ឬ​​ស៊ីម​កាត។ កម្មវិធី​ព្យាបាទ​អាច​លុប​សារ​របស់​អ្នក។"</string>
- <string name="permlab_receiveWapPush" msgid="5991398711936590410">"ទទួល​សារ​អត្ថបទ (WAP​)"</string>
- <string name="permdesc_receiveWapPush" msgid="748232190220583385">"ឲ្យ​កម្មវិធី​ទទួល និង​ដំណើរការ​សារ WAP ។ សិទ្ធិ​នេះ​​មានលទ្ធភាព​តាមដាន ឬ​លុប​សារ​ដែល​បាន​ផ្ញើ​ឲ្យ​អ្នក​ដោយ​មិន​បង្ហា​ញ។"</string>
- <string name="permlab_getTasks" msgid="6466095396623933906">"ទៅ​យក​កម្មវិធី​កំពុង​ដំណើរការ"</string>
- <string name="permdesc_getTasks" msgid="7454215995847658102">"ឲ្យ​កម្មវិធី​ទៅ​យក​ព័ត៌មាន​លម្អិត​អំពី​កិច្ចការ​ដែល​កំពុង​ដំណើរការ​បច្ចុប្បន្ន។ វា​អាច​ឲ្យ​កម្មវិធី​រកមើល​ព័ត៌មាន​ថា​តើ​កម្មវិធី​ណាមួយ​ត្រូវ​បាន​ប្រើ​លើ​ឧបករណ៍។"</string>
- <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"អន្តរកម្ម​តាម​​អ្នក​ប្រើ"</string>
- <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"ឲ្យ​កម្មវិធី​អនុវត្ត​សកម្មភាព​ឆ្លង​អ្នកប្រើ​ផ្សេងៗ​​លើ​ឧបករណ៍។ កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា ដើម្បី​បំពាន​ការ​ការពារ​រវាង​អ្នក​ប្រើ។"</string>
- <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"អាជ្ញាប័ណ្ណ​ពេញលេញ​ ដើម្បី​ទាក់ទង​អ្នក​ប្រើ"</string>
- <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"ឲ្យ​អន្តរកម្ម​ដែល​មាន​ទាំង​អស់​គ្រប់​អ្នក​ប្រើ។"</string>
- <string name="permlab_manageUsers" msgid="1676150911672282428">"គ្រប់គ្រង​អ្នក​ប្រើ"</string>
- <string name="permdesc_manageUsers" msgid="8409306667645355638">"ឲ្យ​កម្មវិធី​គ្រប់គ្រង​អ្នកប្រើ​លើ​ឧបករណ៍ រួមមាន​ការ​ច្រោះ បង្កើត និង​លុប។"</string>
- <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"ទៅ​យក​សេចក្ដី​លម្អិត​កម្មវិធី​កំពុង​ដំណើរការ"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"ឲ្យ​កម្មវិធី​ទៅ​យក​ព័ត៌មាន​លម្អិត​អំពី​កិច្ចការ​ដែល​កំពុង​ដំណើរការ​បច្ចុប្បន្ន។ កម្មវិធី​ព្យាបាទ​អាច​រកមើល​ព័ត៌មាន​ឯកជន​អំពី​កម្មវិធី​ផ្សេងៗ។"</string>
- <string name="permlab_reorderTasks" msgid="2018575526934422779">"តម្រៀប​កម្មវិធី​កំពុង​ដំណើរការ​ឡើងវិញ"</string>
- <string name="permdesc_reorderTasks" msgid="7734217754877439351">"ឲ្យ​កម្មវិធី​ផ្លាស់ទី​ភារកិច្ច​​ទៅ​ផ្ទៃ​ខាង​មុខ។​ កម្មវិធី​អាច​ធ្វើ​វា​ដោយ​គ្មាន​ការ​បញ្ចូល​របស់​អ្នក។"</string>
- <string name="permlab_removeTasks" msgid="6821513401870377403">"បញ្ឈប់​ដំណើរការ​កម្មវិធី"</string>
- <string name="permdesc_removeTasks" msgid="1394714352062635493">"ឲ្យ​កម្មវិធី​លុប​ភារកិច្ច​ និង​បញ្ឈប់​កម្មវិធី​របស់​ពួកវា។ កម្មវិធី​ព្យាបាទ​អាច​រំខាន​ឥរិយាបថ​កម្មវិធី​ផ្សេងៗ។"</string>
- <string name="permlab_manageActivityStacks" msgid="7391191384027303065">"គ្រប់គ្រង​ជង់​សកម្មភាព"</string>
- <string name="permdesc_manageActivityStacks" msgid="1615881933034084440">"ឲ្យ​កម្មវិធី​បន្ថែម, លុប និង​កែ​ជង់​សកម្មភាព​ដែល​កម្មវិធី​ផ្សេង​ដំណើរការ។ កម្មវិធី​ព្យាបាទ​អាច​រំខាន​ឥរិយាបថ​កម្មវិធី។"</string>
- <string name="permlab_startAnyActivity" msgid="2918768238045206456">"ចាប់ផ្ដើម​សកម្មភាព​ណា​មួយ"</string>
- <string name="permdesc_startAnyActivity" msgid="997823695343584001">"ឲ្យ​កម្មវិធី​ចាប់ផ្ដើម​សកម្មភាព​ណា​មួយ ទាក់ទង​នឹង​សិទ្ធិ​ការពារ​ ឬ​ស្ថានភាព​បាន​នាំចេញ។"</string>
- <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"កំណត់​ភាព​ឆប​គ្នា​នៃ​អេក្រង់"</string>
- <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"ឲ្យ​កម្មវិធី​ពិនិត្យ​របៀប​​ត្រូវ​​គ្នា​របស់​​អេក្រង់​នៃ​កម្មវិធី​ផ្សេងៗ។ កម្មវិធី​ព្យាបាទ​អាច​បំផ្លាញ​ឥរិយាបថ​នៃ​កម្មវិធី​ផ្សេងៗ។"</string>
- <string name="permlab_setDebugApp" msgid="3022107198686584052">"បើក​ការ​កែ​កំហុស​កម្មវិធី"</string>
- <string name="permdesc_setDebugApp" msgid="4474512416299013256">"ឲ្យ​កម្មវិធី​បើក​ការ​កែ​កំហុស​សម្រាប់​កម្មវិធី​ផ្សេង​ទៀត។ កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា ដើម្បី​បញ្ឈប់​កម្មវិធី​ផ្សេង។"</string>
- <string name="permlab_changeConfiguration" msgid="4162092185124234480">"ប្ដូរ​ការ​កំណត់​បង្ហាញ​ប្រព័ន្ធ"</string>
- <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"ឲ្យ​កម្មវិធី​ប្ដូរ​ការ​កំណត់​​រចនាសម្ព័ន្ធ​បច្ចុប្បន្ន ដូច​ជា​មូលដ្ឋាន ឬ​ទំហំ​ពុម្ពអក្សរ​ទាំងអស់។"</string>
- <string name="permlab_enableCarMode" msgid="5684504058192921098">"បើក​របៀប​រថយន្ត"</string>
- <string name="permdesc_enableCarMode" msgid="4853187425751419467">"ឲ្យ​កម្មវិធី​បើក​របៀប​រថយន្ត។"</string>
- <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"បិទ​កម្មវិធី​ផ្សេងៗ"</string>
- <string name="permdesc_killBackgroundProcesses" msgid="4593353235959733119">"ឲ្យ​កម្មវិធី​បញ្ឈប់​ដំណើរការ​​ផ្ទៃ​ខាង​ក្រោយ​នៃ​កម្មវិធី​ផ្សេងៗ​។ វា​អាច​ធ្វើ​ឲ្យ​កម្មវិធី​ផ្សេង​ឈប់​ដំណើរការ។"</string>
- <string name="permlab_forceStopPackages" msgid="2329627428832067700">"បង្ខំ​ឲ្យ​បញ្ឈប់​កម្មវិធី​ផ្សេង"</string>
- <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"ឲ្យ​កម្មវិធី​បញ្ឈប់​កម្មវិធី​ផ្សេង​ដោយ​បង្ខំ។"</string>
- <string name="permlab_forceBack" msgid="652935204072584616">"បង្ខំ​ឲ្យ​កម្មវិធី​បិទ"</string>
- <string name="permdesc_forceBack" msgid="3892295830419513623">"ឲ្យ​កម្មវិធី​បង្ខំ​សកម្មភាព​ផ្សេងៗ​ដែល​នៅ​ក្នុង​ផ្ទៃ​ខាង​មុខ​បិទ និង​ទៅ​ក្នុង​ផ្ទៃ​ខាង​ក្រោយ។ មិន​គួរ​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_dump" msgid="1681799862438954752">"ទៅ​យក​ស្ថានភាព​ខាង​ក្នុង​ប្រព័ន្ធ"</string>
- <string name="permdesc_dump" msgid="1778299088692290329">"ឲ្យ​កម្មវិធី​ទៅ​យក​ស្ថានភាព​ខាង​ក្នុង​នៃ​ប្រព័ន្ធ។ កម្មវិធី​ព្យាបាទ​អាច​ទៅ​យក​ព័ត៌មាន​ឯកជន​និង​មាន​សុវត្ថិភាព​ផ្សេងៗ​ដែល​ពួកវា​មិន​គួរ​ត្រូវការ​តាម​ធម្មតា។"</string>
- <string name="permlab_retrieve_window_content" msgid="8022588608994589938">"ទៅ​យក​មាតិកា​អេក្រង់"</string>
- <string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"ឲ្យ​កម្មវិធី​ទៅ​យក​មាតិកា​បង្អួច​សកម្ម។ កម្មវិធី​ព្យាបាទ​អាច​ទៅ​យក​មាតិកា​បង្អួច​ទាំង​មូល និង​ពិនិត្យ​អត្ថបទ​ទាំងអស់ លើកលែង​តែ​ពាក្យ​សម្ងាត់។"</string>
- <string name="permlab_temporary_enable_accessibility" msgid="2312612135127310254">"បើក​មធ្យោបាយ​ងាយស្រួល​ជា​បណ្ដោះ​អាសន្ន"</string>
- <string name="permdesc_temporary_enable_accessibility" msgid="8079456293182975464">"ឲ្យ​កម្មវិធី​បើក​ភាព​ងាយស្រួល​លើ​ឧបករណ៍​ជា​បណ្ដោះអាសន្ន។ កម្មវិធី​ព្យាបាទ​អាច​បើក​ភាព​ងាយស្រួល​ដោយ​មិន​ឲ្យ​អ្នក​ប្រើ​ដឹង។"</string>
- <string name="permlab_retrieve_window_info" msgid="8532295199112519378">"ទៅ​យក​ព័ត៌មាន​បង្អួច"</string>
- <string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"ឲ្យ​កម្មវិធី ទៅ​យក​ព័ត៌មាន​អំពី​បង្អួច​ពី​កម្មវិធី​គ្រប់គ្រង​បង្អួច។ កម្មវិធី​ព្យាបាទ​អាច​ទៅ​យក​ព័ត៌មាន​ដែល​មាន​បំណង​សម្រាប់​ការ​ប្រើ​ប្រព័ន្ធ​ខាង​ក្នុង។"</string>
- <string name="permlab_filter_events" msgid="8675535648807427389">"ច្រោះ​ព្រឹត្តិការណ៍"</string>
- <string name="permdesc_filter_events" msgid="8006236315888347680">"ឲ្យ​កម្មវិធី​ចុះ​ឈ្មោះ​តម្រង​បញ្ចូល​​ដែល​ច្រោះ​​ព្រឹត្តិការណ៍​របស់​អ្នក​ប្រើ​ទាំងអស់​មុន​ពេល​ពួក​វា​ត្រូវ​បាន​ផ្ដាច់។ កម្មវិធី​ព្យាបាទ​អាច​ពិនិត្យ​ចំណុច​ប្រទាក់​ប្រព័ន្ធ​ដោយ​គ្មាន​អំពើ​ពី​អ្នក​ប្រើ។"</string>
- <string name="permlab_magnify_display" msgid="5973626738170618775">"ពង្រីក​ការ​បង្ហាញ"</string>
- <string name="permdesc_magnify_display" msgid="7121235684515003792">"ឲ្យ​កម្មវិធី​ពង្រីក​មាតិកា​នៃ​ការ​បង្ហាញ។ កម្មវិធី​ព្យាបាទ​អាច​ប្ដូរ​មាតិកា​ការ​បង្ហាញ​តាមវិធី​ដែល​បង្ហាញ​ថា​ឧបករណ៍​មិន​អាច​ប្រើ​បាន។"</string>
- <string name="permlab_shutdown" msgid="7185747824038909016">"បិទ​​ដោយ​ផ្នែក"</string>
- <string name="permdesc_shutdown" msgid="7046500838746291775">"ដាក់​កម្មវិធី​គ្រប់គ្រង​​សកម្មភាព​ក្នុង​ស្ថាន​ភាព​បិទ។ មិន​អនុវត្ត​ការ​បិទ​ពេញលេញ​ទេ។"</string>
- <string name="permlab_stopAppSwitches" msgid="4138608610717425573">"ការ​ពារ​​ការ​ប្ដូរ​កម្មវិធី"</string>
- <string name="permdesc_stopAppSwitches" msgid="8262195802582255021">"ការ​ពារ​អ្នក​ប្រើ​មិន​ឲ្យ​ប្ដូរ​​ទៅ​កម្មវិធី​ផ្សេង។"</string>
- <string name="permlab_getTopActivityInfo" msgid="2537922311411546016">"យក​ព័ត៌មាន​កម្មវិធី​បច្ចុប្បន្ន"</string>
- <string name="permdesc_getTopActivityInfo" msgid="8153651434145132505">"អនុញ្ញាត​ឱ្យ​ម្ចាស់ទៅ​យក​ព័​ត៌​មាន​ឯកជន​អំពី​កម្មវិធី​បច្ចុប្បន្ន ​និង​សេវាកម្ម​នៅ​ក្នុង​ផ្ទៃ​ខាងមុខ​របស់​អេក្រង់​។"</string>
- <string name="permlab_runSetActivityWatcher" msgid="892239094867182656">"តាមដាន និង​ពិនិត្យ​ការ​ចាប់ផ្ដើម​កម្មវិធី"</string>
- <string name="permdesc_runSetActivityWatcher" msgid="6003603162578577406">"ឲ្យ​កម្មវិធី​តាមដាន និង​ពិនិត្យ​វិធី​ដែល​ប្រព័ន្ធ​ចាប់ផ្ដើម​​សកម្មភាព។ កម្មវិធី​ព្យាបាទ​អាច​​សម្របសម្រួល​ប្រព័ន្ធ​ទាំង​ស្រុង។ សិទ្ធិ​នេះ​ចាំបាច់​សម្រាប់​តែ​ការ​អភិវឌ្ឍ មិន​សម្រាប់​​ប្រើ​ធម្ម​តា​ទេ។"</string>
- <string name="permlab_broadcastPackageRemoved" msgid="2576333434893532475">"ផ្ញើ​កញ្ចប់​​ការ​ប្រកាស​បាន​យកចេញ"</string>
- <string name="permdesc_broadcastPackageRemoved" msgid="6621901216207931089">"ឲ្យ​កម្មវិធី​ប្រកាស​ការ​ជូន​ដំណឹង​ថា កញ្ចប់​កម្មវិធី​ត្រូវ​បាន​លុប​។ កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា ដើម្បី​​បញ្ឈប់​កម្មវិធី​ដែល​កំពុង​ដំណើរ​ការ​ផ្សេង​ៗ។"</string>
- <string name="permlab_broadcastSmsReceived" msgid="5689095009030336593">"ផ្ញើ​ការ​ប្រកាស​បាន​ទទួល SMS"</string>
- <string name="permdesc_broadcastSmsReceived" msgid="4152037720034365492">"ឲ្យ​កម្មវិធី​ប្រកាស​ការ​ជូន​ដំណឹង​​ការ​ទទួល​សារ​ SMS ។ កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា​​ដើម្បី​​បន្លំ​សារ SMS ចូល។"</string>
- <string name="permlab_broadcastWapPush" msgid="3145347413028582371">"ផ្ញើ​ការ​ប្រកាស​បាន​ទទួល​ WAP-PUSH"</string>
- <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"ឲ្យ​កម្មវិធី​ប្រកាស​ការ​ជូន​ដំណឹង​ថា​បាន​ទទួល​សារ WAP PUSH ។ កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា​ដើម្បី​​ក្លែង​​បង្កាន់ដៃ​សារ MMS ឬ​ជំនួស​មាតិកា​ទំព័រ​បណ្ដាញ​ណាមួយ​ស្ងាត់​ៗ​​​ដោយ​អ្វី​ដែល​ក្លែងក្លាយ។"</string>
- <string name="permlab_setProcessLimit" msgid="2451873664363662666">"កំណត់​ចំនួន​ដំណើរការ​ដែល​កំពុង​ដំណើរការ"</string>
- <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"ឲ្យ​កម្មវិធី​ពិនិត្យ​ចំនួន​ដំណើរការ​អតិបរមា​ដែល​នឹង​ដំណើរការ។ មិន​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"បង្ខំ​​ឲ្យ​បិទ​កម្មវិធី​ក្នុង​ផ្ទៃ​ខាង​ក្រោយ"</string>
- <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"ឲ្យ​កម្មវិធី​ពិនិត្យ​ថា​តើ​សកម្មភាព​​ត្រូវ​បាន​បញ្ចប់​ជា​និច្ច​ដរាប​ណា​ពួកគេ​​ទៅ​ក្នុង​ផ្ទៃ​ខាង​ក្រោយ។ មិន​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_batteryStats" msgid="2789610673514103364">"អាន​ស្ថិតិ​ថ្ម"</string>
- <string name="permdesc_batteryStats" msgid="5897346582882915114">"ឲ្យ​កម្មវិធី​អាន​ទិន្នន័យ​ប្រើ​ថ្ម​កម្រិត​ទាប​បច្ចុប្បន្ន។ អាច​ឲ្យ​កម្មវិធី​ស្វែងយល់​ព័ត៌មាន​លម្អិត​អំពី​កម្មវិធី​ដែល​អ្នក​ប្រើ។"</string>
- <string name="permlab_updateBatteryStats" msgid="3719689764536379557">"កែ​ស្ថិតិ​ថ្ម"</string>
- <string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"ឲ្យ​កម្មវិធី​កែ​ស្ថិតិ​ថ្ម​ដែល​បាន​ប្រមូល។ មិន​សម្រាប់​ប្រើ​ដោយ​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_getAppOpsStats" msgid="1508779687436585744">"ទៅ​យក​ស្ថិតិ​ប្រតិបត្តិការ​កម្មវិធី"</string>
- <string name="permdesc_getAppOpsStats" msgid="6243887041577912877">"ឲ្យ​កម្មវិធី​ទៅ​យក​ស្ថិតិ​ប្រតិបត្តិការ​កម្មវិធី​បាន​ប្រមូល។ មិន​សម្រាប់​ប្រើ​ដោយ​កម្មវិធី​ធម្មតា។"</string>
- <string name="permlab_updateAppOpsStats" msgid="8829097373851521505">"កែ​ស្ថិតិ​ប្រតិបត្តិការ​​កម្មវិធី"</string>
- <string name="permdesc_updateAppOpsStats" msgid="50784596594403483">"ឲ្យ​កម្មវិធី​កែ​ស្ថិតិ​ប្រតិបត្តិការ​កម្មវិធី​បាន​ប្រមូល។ មិន​សម្រាប់​ប្រើ​ដោយ​កម្មវិធី​ធម្មតា។"</string>
- <string name="permlab_backup" msgid="470013022865453920">"ពិនិត្យ​ការ​ស្ដារ និង​បម្រុង​ទុក​ប្រព័ន្ធ"</string>
- <string name="permdesc_backup" msgid="6912230525140589891">"ឲ្យ​កម្មវិធី​ពិនិត្យ​​យន្តការ​​បម្រុងទុក​ និង​ស្ដារ​ឡើងវិញ​របស់​ប្រព័ន្ធ។ មិន​សម្រាប់​ប្រើ​ដោយ​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_confirm_full_backup" msgid="5557071325804469102">"បញ្ជាក់​​ប្រតិបត្តិការ​ស្ដារ​ឡើងវិញ ឬ​បម្រុង​ទុក​ពេញលេញ"</string>
- <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"ឲ្យ​កម្មវិធី​ចាប់ផ្ដើម​ចំណុច​ប្រទាក់​​បញ្ជាក់​ការ​បម្រុង​ទុក​ពេញលេញ។ មិន​សម្រាប់​ប្រើ​ដោយ​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"បង្ហាញ​បង្អួច​គ្មាន​សិទ្ធិ"</string>
- <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"ឲ្យ​កម្មវិធី​បង្កើត​បង្អួច​​សម្រាប់​ប្រើ​ដោយ​ចំណុច​ប្រទាក់​អ្នកប្រើ​ប្រព័ន្ធ​ខាង​ក្នុង។ មិន​សម្រាប់​ប្រើ​ដោយ​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"គូរ​លើ​កម្មវិធី​ផ្សេង"</string>
- <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"ឲ្យ​​កម្មវិធី​គូរ​លើ​ផ្នែក​ខាង​លើ​នៃ​កម្មវិធី​ផ្សេងៗ ឬ​ជា​ផ្នែក​នៃ​ចំណុច​ប្រទាក់។ វា​អាច​រំខាន​ការ​ប្រើ​ចំណុច​ប្រទាក់​របស់​អ្នក​​ក្នុង​កម្មវិធី​ណាមួយ ឬ​ប្ដូរ​អ្វី​ដែល​អ្នក​គិត​ថា​អ្នក​កំពុង​មើល​ក្នុង​កម្មវិធី​ផ្សេងៗ។"</string>
- <string name="permlab_setAnimationScale" msgid="2805103241153907174">"កែ​ល្បឿន​ចលនា​សកល"</string>
- <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"ឲ្យ​កម្មវិធី​ប្ដូរ​ល្បឿន​ចលនា​សកល (ចលនា​លឿន​ ឬ​យឺត) នៅ​ពេលណា​មួយ។"</string>
- <string name="permlab_manageAppTokens" msgid="1286505717050121370">"គ្រប់គ្រង​និមិត្តសញ្ញា​កម្មវិធី"</string>
- <string name="permdesc_manageAppTokens" msgid="8043431713014395671">"ឲ្យ​កម្មវិធី​បង្កើត និង​គ្រប់គ្រង​និមិត្តសញ្ញា​ផ្ទាល់​របស់​ពួក​វា ដោយ​ឆ្លង​កាត់​លំដាប់ Z ធម្មតា​របស់​វា។ មិន​គួរ​​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_freezeScreen" msgid="4708181184441880175">"បង្ក​ក​​អេក្រង់"</string>
- <string name="permdesc_freezeScreen" msgid="8558923789222670064">"ឲ្យ​កម្មវិធី​បង្កក​អេក្រង់​ជា​បណ្ដោះអាសន្ន​សម្រាប់​​ការ​​ផ្លាស់ប្ដូរ​ពេញ​អេក្រង់។"</string>
- <string name="permlab_injectEvents" msgid="1378746584023586600">"ចុច​គ្រាប់ចុច និង​គ្រប់គ្រង​ប៊ូតុង"</string>
- <string name="permdesc_injectEvents" product="tablet" msgid="206352565599968632">"ឲ្យ​កម្មវិធី​ផ្ដល់​ព្រឹត្តិការណ៍​បញ្ចូល​ផ្ទាល់​ខ្លួន​(ចុច​គ្រាប់ចុច ។ល។) ទៅ​កម្មវិធី​ផ្សេង។​ កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា​ដើម្បី​គ្រប់គ្រង​កុំព្យូទ័រ​បន្ទះ។"</string>
- <string name="permdesc_injectEvents" product="default" msgid="653128057572326253">"ឲ្យ​កម្មវិធី​ផ្ដល់​ព្រឹត្តិការណ៍​បញ្ចូល​ផ្ទាល់​ខ្លួន​របស់​វា (ចុច​គ្រាប់​ចុច ។ល។) ចំពោះ​កម្មវិធី​ផ្សេងៗ។ កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា​ដើម្បី​គ្រប់គ្រង​ទូរស័ព្ទ។"</string>
- <string name="permlab_readInputState" msgid="469428900041249234">"កត់ត្រា​នូវ​អ្វី​ដែល​អ្នក​វាយ​ និង​សកម្មភាព​ដែល​អ្នក​បាន​យក"</string>
- <string name="permdesc_readInputState" msgid="8387754901688728043">"ឲ្យ​កម្មវិធី​មើល​គ្រាប់​ចុច​ដែល​អ្នក​ចុច​ពេល​មាន​អន្តរកម្ម​ជា​មួយ​កម្មវិធី​ផ្សេង (ដូចជា បញ្ចូល​ពាក្យ​សម្ងាត់)។ មិន​គួរ​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_bindInputMethod" msgid="3360064620230515776">"ចង​ទៅ​វិធីសាស្ត្រ​បញ្ចូល"</string>
- <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"ឲ្យ​ម្ចាស់​ចង​ចំណុច​ប្រទាក់​កម្រិត​កំពូល​នៃ​វិធី​សាស្ត្រ​បញ្ចូល។ មិន​គួរ​​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"ចង​សេវា​កម្ម​ភាព​មធ្យោបាយ​ងាយស្រួល"</string>
- <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"ឲ្យ​​ម្ចាស់​ចង​ចំណុច​ប្រទាក់​កម្រិត​កំពូល​នៃ​សេវាកម្ម​ភាព​ងាយស្រួល។ មិន​គួរ​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_bindPrintService" msgid="8462815179572748761">"ចង​សេវាកម្ម​​បោះពុម្ព"</string>
- <string name="permdesc_bindPrintService" msgid="7960067623209111135">"ឲ្យ​ម្ចាស់​ចង​ចំណុច​ប្រទាក់​កម្រិត​កំពូល​នៃ​សេវាកម្ម​ធាតុ​ក្រាហ្វិក។ មិន​គួរ​​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_accessAllPrintJobs" msgid="1120792468465711159">"ចូល​ដំណើរការ​​ការងារ​បោះពុម្ព​ទាំងអស់"</string>
- <string name="permdesc_accessAllPrintJobs" msgid="2978185311041864762">"អនុញ្ញាត​ឲ្យ​ម្ចាស់​អាច​បោះពុម្ព​ការងារ​ដែល​បាន​បង្កើត​ដោយ​កម្មវិធី​ផ្សេង។ មិន​គួរ​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_bindNfcService" msgid="2752731300419410724">"ភ្ជាប់​ជាមួយ​សេវាកម្ម NFC"</string>
- <string name="permdesc_bindNfcService" msgid="6120647629174066862">"អនុញ្ញាត​ឲ្យ​​ភ្ជាប់​​​បញ្ជី​ជាមួយ​​កម្មវិធី​ដែល​ត្រូវ​បាន​ត្រាប់​តាម​​កាត NFC ។ មិន​គួរ​ត្រូវ​​ការ​សម្រាប់​កម្មវិធី​ធម្មតា​។"</string>
- <string name="permlab_bindTextService" msgid="7358378401915287938">"ចង​សេវា​កម្ម​អត្ថបទ"</string>
- <string name="permdesc_bindTextService" msgid="8151968910973998670">"ឲ្យ​ម្ចាស់​ចង​ចំណុច​ប្រទាក់​កម្រិត​កំពូល​នៃ​សេវាកម្ម​អត្ថបទ (ឧ. SpellCheckerService) ។ មិន​គួរ​ប្រើ​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_bindVpnService" msgid="4708596021161473255">"ចង​ជា​មួយ​សេវាកម្ម VPN"</string>
- <string name="permdesc_bindVpnService" msgid="2067845564581693905">"ឲ្យ​ម្ចាស់​ចង​ចំណុច​ប្រទាក់​កម្រិត​កំពូល​នៃ​សេវាកម្ម Vpn ។​ មិន​គួរ​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_bindWallpaper" msgid="8716400279937856462">"ចង​ទៅ​ផ្ទាំង​រូបភាព"</string>
- <string name="permdesc_bindWallpaper" msgid="7108428692595491668">"ឲ្យ​ម្ចាស់​ចង​ចំណុចប្រទាក់​កម្រិត​កំពូល​នៃ​ផ្ទាំង​រូបភាព។ មិន​គួរ​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_bindRemoteViews" msgid="5697987759897367099">"ចង​សេវា​កម្ម​ធាតុ​ក្រាហ្វិក"</string>
- <string name="permdesc_bindRemoteViews" msgid="4717987810137692572">"ឲ្យ​ម្ចាស់​ចង​ចំណុច​ប្រទាក់​កម្រិត​កំពូល​នៃ​សេវាកម្ម​ធាតុ​ក្រាហ្វិក។ មិន​គួរ​​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_bindDeviceAdmin" msgid="8704986163711455010">"ទាក់ទង​ជា​មួយ​អ្នកគ្រប់គ្រង​ឧបករណ៍"</string>
- <string name="permdesc_bindDeviceAdmin" msgid="569715419543907930">"ឲ្យ​ម្ចាស់​ផ្ញើ​គោលបំណង​​ទៅ​អ្នក​គ្រប់គ្រង​ឧបករណ៍។ មិន​គួរ​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_manageDeviceAdmins" msgid="4248828900045808722">"បន្ថែម​ ឬ​លុប​កម្មវិធី​គ្រប់គ្រង​​​ឧបករណ៍"</string>
- <string name="permdesc_manageDeviceAdmins" msgid="5025608167709942485">"អនុញ្ញាត​​​ឲ្យ​ម្ចាស់​​​បន្ថែម​ ឬ​លុប​កម្មវិធី​គ្រប់គ្រង​ឧបករណ៍​សកម្ម​ចេញ​។ មិន​គួរ​ប្រើ​សម្រាប់​កម្មវិធី​​ធម្មតា​ទេ​។"</string>
- <string name="permlab_setOrientation" msgid="3365947717163866844">"ប្ដូរ​ទិស​អេក្រង់"</string>
- <string name="permdesc_setOrientation" msgid="3046126619316671476">"ឲ្យ​កម្មវិធី​ប្ដូរ​ការ​បង្វិល​អេក្រង់​នៅ​ពេល​ណា​មួយ។ មិន​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_setPointerSpeed" msgid="9175371613322562934">"ប្ដូរ​ល្បឿន​ទ្រនិច"</string>
- <string name="permdesc_setPointerSpeed" msgid="6866563234274104233">"ឲ្យ​កម្មវិធី​ប្ដូរ​ល្បឿន​ទ្រនិច​​កណ្ដុរ ឬ​បន្ទះ​ប៉ះ​​​នៅ​ពេល​ណា​មួយ។ មិន​គួរ​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_setKeyboardLayout" msgid="4778731703600909340">"ប្ដូរ​ប្លង់​ក្ដារ​ចុច"</string>
- <string name="permdesc_setKeyboardLayout" msgid="8480016771134175879">"ឲ្យ​កម្មវិធី​ប្ដូរ​ប្លង់​ក្ដារ​ចុច។ មិន​គួរ​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_signalPersistentProcesses" msgid="4539002991947376659">"ផ្ញើ​សញ្ញា​លីនុច​ទៅ​កម្មវិធី"</string>
- <string name="permdesc_signalPersistentProcesses" msgid="4896992079182649141">"ឲ្យ​កម្មវិធី​ស្នើ​​សញ្ញា​ដែល​បាន​ផ្ដល់​ត្រូវ​ផ្ញើ​ទៅ​ដំណើរការ​ស្ថិតស្ថេរ​​ទាំង​អស់។"</string>
- <string name="permlab_persistentActivity" msgid="8841113627955563938">"ធ្វើ​ឲ្យ​កម្មវិធី​ដំណើរការ​ជា​និច្ច"</string>
- <string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"ឲ្យ​កម្មវិធី​ធ្វើជា​ផ្នែក​​ស្ថិតស្ថេរ​ដោយ​ខ្លួន​ឯង​ក្នុង​អង្គ​ចងចាំ។ វា​អាច​កំណត់​អង្គ​ចងចាំ​ដែល​អាច​ប្រើ​បាន​ចំពោះ​កម្មវិធី​ផ្សេងៗ​ ដោយ​ធ្វើឲ្យ​កុំព្យូទ័រ​បន្ទះ​យឺត។"</string>
- <string name="permdesc_persistentActivity" product="default" msgid="4384760047508278272">"ឲ្យ​កម្មវិធី ធ្វើជា​ផ្នែក​អចិន្ត្រៃយ៍​នៃ​ខ្លួន​ក្នុង​អង្គ​ចងចាំ។ វា​អាច​កម្រិត​អង្គ​ចងចាំ​អាច​ប្រើ​បាន​ ដើម្បី​ធ្វើ​ឲ្យ​កម្មវិធី​ផ្សេង​ធ្វើ​ឲ្យ​ទូរស័ព្ទ​របស់​អ្នក​យឺត។"</string>
- <string name="permlab_deletePackages" msgid="184385129537705938">"លុប​កម្មវិធី"</string>
- <string name="permdesc_deletePackages" msgid="7411480275167205081">"ឲ្យ​កម្មវិធី​លុប​កញ្ចប់ Android ។ កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា ដើម្បី​លុប​កម្មវិធី​សំខាន់​ៗ។"</string>
- <string name="permlab_clearAppUserData" msgid="274109191845842756">"លុប​ទិន្នន័យ​របស់​​កម្មវិធី​ផ្សេង"</string>
- <string name="permdesc_clearAppUserData" msgid="4625323684125459488">"ឲ្យ​កម្មវិធី​សម្អាត​ទិន្នន័យ​អ្នក​ប្រើ។"</string>
- <string name="permlab_deleteCacheFiles" msgid="3128665571837408675">"លុប​ឃ្លាំង​សម្ងាត់​កម្មវិធី​ផ្សេងៗ"</string>
- <string name="permdesc_deleteCacheFiles" msgid="3812998599006730196">"ឲ្យ​កម្មវិធី​លុប​ឯកសារ​ឃ្លាំង​សម្ងាត់។"</string>
- <string name="permlab_getPackageSize" msgid="7472921768357981986">"វាស់​ទំហំ​ការ​ផ្ទុក​​កម្មវិធី"</string>
- <string name="permdesc_getPackageSize" msgid="3921068154420738296">"ឲ្យ​កម្មវិធី​ទៅ​យក​កូដ ទិន្នន័យ និង​ទំហំ​ឃ្លាំង​សម្ងាត់​របស់​វា"</string>
- <string name="permlab_installPackages" msgid="2199128482820306924">"ដំឡើង​កម្មវិធី​ដោយ​ផ្ទាល់"</string>
- <string name="permdesc_installPackages" msgid="5628530972548071284">"ឲ្យ​កម្មវិធី​ដំឡើង​កញ្ចប់​ Android ដែល​បាន​ធ្វើ​បច្ចុប្បន្ន ឬ​ថ្មី។ កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា ដើម្បី​បន្ថែម​កម្មវិធី​ដែល​មាន​សិទ្ធិ​ដោយ​បំពាន។"</string>
- <string name="permlab_clearAppCache" msgid="7487279391723526815">"លុប​ទិន្នន័យ​ឃ្លាំង​សម្ងាត់​កម្មវិធី​ទាំងអស់"</string>
- <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"ឲ្យ​កម្មវិធី​បង្កើន​ទំហំ​ផ្ទុក​កុំព្យូទ័រ​បន្ទះ ដោយ​លុប​ឯកសារ​ក្នុង​ថត​ឃ្លាំង​សម្ងាត់​នៃ​កម្មវិធី​ផ្សេង។ វា​អាច​ធ្វើ​ឲ្យ​កម្មវិធី​ផ្សេង​ចាប់ផ្ដើម​យឺត​ព្រោះថា​​ពួកវា​ត្រូវ​ទៅ​យក​ទិន្នន័យ​ឡើងវិញ។"</string>
- <string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"ឲ្យ​កម្មវិធី​បង្កើន​ទំហំ​ផ្ទុក​ទូរស័ព្ទ​ ដោយ​លុប​ឯកសារ​ក្នុង​ថត​ឃ្លាំង​សម្ងាត់​កម្មវិធី។ វា​អាច​ធ្វើ​ឲ្យ​កម្មវិធី​ផ្សេង​កាន់​តែ​យឺត ព្រោះ​ថា​ពួកវា​​ត្រូវ​ទៅ​យក​ទិន្នន័យ​របស់​ពួកវា។"</string>
- <string name="permlab_movePackage" msgid="3289890271645921411">"ផ្លាស់ទី​ធនធាន​កម្មវិធី"</string>
- <string name="permdesc_movePackage" msgid="319562217778244524">"ឲ្យ​កម្មវិធី​ផ្លាស់ទី​ប្រភព​កម្មវិធី​ពី​មេឌៀ​ខាង​ក្នុង​ទៅ​ខាង​ក្រៅ​​ និង​ផ្ទុយ​មក​វិញ។"</string>
- <string name="permlab_readLogs" msgid="6615778543198967614">"អាន​ទិន្នន័យ​កំណត់​ហេតុ​ប្រែប្រួល"</string>
- <string name="permdesc_readLogs" product="tablet" msgid="82061313293455151">"ឲ្យ​កម្មវិធី​អាន​ពី​ឯកសារ​កំណត់ហេតុ​ប្រព័ន្ធ។ វា​អនុញ្ញាត​ឲ្យ​រក​មើល​ព័ត៌មាន​ទូទៅ​អំពី​អ្វី​ដែល​អ្នក​កំពុង​ធ្វើជា​មួយ​កុំព្យូទ័រ​បន្ទះ សំខាន់​រួមមាន​ព័ត៌មាន​ផ្ទាល់​ខ្លួន​ ឬ​ឯកជន។"</string>
- <string name="permdesc_readLogs" product="default" msgid="2063438140241560443">"ឲ្យ​កម្មវិធី​អាន​ពី​ឯកសារ​កំណត់ហេតុ​ប្រព័ន្ធ។ វា​អនុញ្ញាត​ឲ្យ​រក​មើល​ព័ត៌មាន​ទូទៅ​អំពី​អ្វី​ដែល​អ្នក​កំពុង​ធ្វើជា​មួយ​កុំព្យូទ័រ​បន្ទះ សំខាន់​រួមមាន​ព័ត៌មាន​ផ្ទាល់​ខ្លួន​ ឬ​ឯកជន។"</string>
- <string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"ប្រើ​កម្មវិធី​ឌិកូដ​​មេឌៀ​ណា​មួយ​សម្រាប់​ចាក់​ឡើងវិញ"</string>
- <string name="permdesc_anyCodecForPlayback" msgid="8283912488433189010">"ឲ្យ​កម្មវិធី​ប្រើ​កម្មវិធី​ឌិកូដ​មេឌៀ​ដែល​បាន​ដំឡើង ដើម្បី​ឌិកូដ​សម្រាប់​ការ​ចាក់​ឡើងវិញ។"</string>
- <!-- no translation found for permlab_manageCaCertificates (1678391896786882014) -->
- <skip />
- <!-- no translation found for permdesc_manageCaCertificates (4015644047196937014) -->
- <skip />
- <string name="permlab_diagnostic" msgid="8076743953908000342">"អាន/សរសេរ​ធនធាន​គ្រប់គ្រង​ប្រអប់"</string>
- <string name="permdesc_diagnostic" msgid="6608295692002452283">"ឲ្យ​កម្មវិធី​អាន និង​សរសេរ​ប្រភព​ណាមួយ​ដែល​គ្រប់គ្រង​ដោយ​ក្រុម​អ្នក​វិនិច្ឆ័យ ឧទាហរណ៍ ឯកសារ​នៅ​ក្នុង /dev ។ វា​អាច​ប៉ះពាល់​យ៉ាង​ខ្លាំង​ដល់​ស្ថេរ​ភាព​ និង​សុវត្ថិភាព​ប្រព័ន្ធ។ វា​គួរ​ត្រូវ​បាន​ប្រើ​សម្រាប់​វិនិច្ឆ័យ​ផ្នែក​រឹង​ជាក់​លាក់​ដោយ​ក្រុមហ៊ុន​ផលិត ឬ​ប្រតិបត្តិ​ករ។"</string>
- <string name="permlab_changeComponentState" msgid="6335576775711095931">"បិទ ឬ​បើក​សមាសធាតុ​កម្មវិធី"</string>
- <string name="permdesc_changeComponentState" product="tablet" msgid="8887435740982237294">"ឲ្យ​កម្មវិធី​ប្ដូរ​ថា​តើ​សមាសធាតុ​កម្មវិធី​ផ្សេង​ត្រូវ​បាន​បើក​​ ឬ​ក៏​អត់។ កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា ដើម្បី​បិទ​សមត្ថភាព​ទូរស័ព្ទ​សំខាន់។ ប្រើ​ដោយ​ប្រុងប្រយ័ត្ន​ជា​មួយ​​សិទ្ធិ​នេះ ព្រោះ​ថា​វា​អាច​ធ្វើ​ឲ្យ​សមាសធាតុ​មិន​អាច​ប្រើ​បាន​ ស្ថិតស្ថេរ ឬ​​មិន​ស្ថិតស្ថេរ។"</string>
- <string name="permdesc_changeComponentState" product="default" msgid="1827232484416505615">"ឲ្យ​កម្មវិធី​ប្ដូរ​ថាតើ​សមាសធាតុ​កម្មវិធី​ផ្សេង​ត្រូវ​បាន​បើក​​ ឬ​ក៏​អត់។ កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា ដើម្បី​បិទ​សមត្ថភាព​ទូរស័ព្ទ​សំខាន់។ ប្រើ​ដោយ​ប្រុងប្រយ័ត្ន​ជា​មួយ​​សិទ្ធិ​នេះ ព្រោះ​ថា​វា​អាច​ធ្វើ​ឲ្យ​សមាសធាតុ​មិន​អាច​ប្រើ​បាន​ ស្ថិតស្ថេរ ឬ​​មិន​ស្ថិតស្ថេរ។"</string>
- <string name="permlab_grantRevokePermissions" msgid="4627315351093508795">"ផ្ដល់ ឬ​ដក​សិទ្ធិ"</string>
- <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"ឲ្យ​កម្មវិធី​ផ្ដល់ ឬ​ដក​សិទ្ធិ​ជាក់លាក់​សម្រាប់​វា ឬ​កម្មវិធី​ផ្សេង។ កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា​ដើម្បី​ចូល​លក្ខណៈ​ដែល​អ្នក​មិន​បាន​ផ្ដល់​ឲ្យ​ពួកវា។"</string>
- <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"កំណត់​កម្មវិធី​ពេញ​ចិត្ត"</string>
- <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"ឲ្យ​កម្មវិធី​កែ​កម្មវិធី​ដែល​អ្នក​ពេញ​ចិត្ត។ កម្មវិធី​ព្យាបាទ​អាច​ប្ដូរ​កម្មវិធី​ដែល​ដំណើរការ​ស្ងាត់​ៗ ដោយ​​​បញ្ឆោត​កម្មវិធី​ដែល​មាន​ស្រាប់​​របស់​អ្នក​ ដើម្បី​ប្រមូល​ទិន្នន័យ​ឯកជន​​ពី​អ្នក។"</string>
- <string name="permlab_writeSettings" msgid="2226195290955224730">"កែ​​ការ​កំណត់​ប្រព័ន្ធ"</string>
- <string name="permdesc_writeSettings" msgid="7775723441558907181">"ឲ្យ​កម្មវិធី​កែ​ទិន្នន័យ​កំណត់​ប្រព័ន្ធ។ កម្មវិធី​ព្យាបាទ​អាច​បង្ខូច​ការ​កំណត់​រចនាសម័្ពន្ធ​នៃ​ប្រព័ន្ធ​របស់​អ្នក។"</string>
- <string name="permlab_writeSecureSettings" msgid="204676251876718288">"កែ​ការ​កំណត់​ប្រព័ន្ធ​សុវត្ថិភាព"</string>
- <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"ឲ្យ​កម្មវិធី​កែ​ទិន្នន័យ​កំណត់​​សុវត្ថិភាព​​របស់​ប្រព័ន្ធ។ មិន​សម្រាប់​ប្រើ​ដោយ​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_writeGservices" msgid="2149426664226152185">"កែ​ផែនទី​សេវាកម្ម​ Google"</string>
- <string name="permdesc_writeGservices" msgid="1287309437638380229">"ឲ្យ​កម្មវិធី​កែ​ផែនទី​សេវាកម្ម​ Google ។ មិន​សម្រាប់​ប្រើ​ដោយ​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"ដំណើរការ​ពេល​ចាប់ផ្ដើម"</string>
- <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"ឲ្យ​កម្មវិធី​ចាប់ផ្ដើម​ដោយ​ខ្លួន​វា​ផ្ទាល់​ដរាប​​ណា​ប្រព័ន្ធ​​បាន​ចាប់ផ្ដើម​​រួចរាល់។ វា​អាច​​ចំណាយ​ពេល​យូរ​ដើម្បី​ចាប់ផ្ដើម​កុំព្យូទ័រ​បន្ទះ និង​ឲ្យ​កម្មវិធី​ធ្វើ​ឲ្យ​កុំព្យូទ័រ​បន្ទះ​យឺត​ដោយ​ដំណើរការ​ជា​និច្ច។"</string>
- <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"ឲ្យ​​កម្មវិធី​​ចាប់ផ្ដើម​ដោយ​ខ្លួន​វា​​ភ្លាម​ៗ​ពេល​ប្រព័ន្ធ​​ចាប់ផ្ដើម​ចប់។ ​វា​អាច​ធ្វើ​ឲ្យ​ចំណាយ​ពេល​យូរ​ដើម្បី​ចាប់ផ្ដើម​ទូរស័ព្ទ ​និង​ឲ្យ​កម្មវិធី​ធ្វើ​ឲ្យ​ទូរស័ព្ទ​យឺត​ដោយ​ដំណើរការ​ជា​និច្ច។"</string>
- <string name="permlab_broadcastSticky" msgid="7919126372606881614">"ផ្ញើ​ការ​ប្រកាស​ទាក់ទាញ"</string>
- <string name="permdesc_broadcastSticky" product="tablet" msgid="7749760494399915651">"ឲ្យ​កម្មវិធី​ផ្ញើ​ការប្រកាស​​ដែល​ទាក់ទាញ ដែល​មាន​បន្ទាប់​ពី​ការ​ប្រកាស​ចប់។ ការ​ប្រើ​លើស​​អាច​ធ្វើឲ្យ​ទូរស័ព្ទ​យឺត ឬ​មិន​ស្ថិតស្ថេរ​ដោយធ្វើ​ឲ្យ​វា​ប្រើ​អង្គ​ចងចាំ​ធំ​ពេក។"</string>
- <string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"ឲ្យ​កម្មវិធី​ផ្ញើ​ការប្រកាស​​ដែល​ទាក់ទាញ ដែល​មាន​បន្ទាប់​ពី​ការ​ប្រកាស​ចប់។ ការ​ប្រើ​លើស​​អាច​ធ្វើឲ្យ​ទូរស័ព្ទ​យឺត ឬ​មិន​ស្ថិតស្ថេរ​ដោយធ្វើ​ឲ្យ​វា​ប្រើ​អង្គ​ចងចាំ​ធំ​ពេក។"</string>
- <string name="permlab_readContacts" msgid="8348481131899886131">"អាន​ទំនាក់ទំនង​របស់​អ្នក"</string>
- <string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"ឲ្យ​កម្មវិធី​អាន​ទិន្នន័យ​អំពី​ទំនាក់ទំនង​របស់​អ្នក​ដែល​មាន​ក្នុង​កុំព្យូទ័រ​បន្ទះ​របស់​អ្នក រួមមាន​ប្រេកង់​ដែល​អ្នក​បាន​ហៅ​ អ៊ីមែល ឬ​ទាក់ទង​តាម​វិធី​ផ្សេងៗ​ជា​មួយ​មនុស្ស​ណា​ម្នាក់។ សិទ្ធិ​នេះ​អនុញ្ញាត​ឲ្យ​កម្មវិធី​រក្សាទុក​ទិន្នន័យ​ទំនាក់ទំនង​របស់​អ្នក ហើយ​កម្មវិធី​ព្យាបាទ​អាច​ចែករំលែក​ទិន្នន័យ​ទំនាក់ទំនង​ដោយ​មិន​ឲ្យ​អ្នក​ដឹង។"</string>
- <string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"ឲ្យ​​កម្មវិធី​អាន​ទិន្នន័យ​អំពី​ទំនាក់ទំនង​របស់​អ្នក​ដែល​បាន​រក្សាទុក​ក្នុង​ទូរស័ព្ទ រួមមាន​ប្រេកង់​ដែល​អ្នក​បាន​ហៅ អ៊ីមែល ឬ​ទាក់ទង​តាម​វិធី​ផ្សេងៗ​ជា​មួយ​​អ្នក​ណា​ម្នាក់។ សិទ្ធិ​នេះ​ឲ្យ​កម្មវិធី​រក្សាទុក​ទិន្នន័យ​ទំនាក់ទំនង​របស់​អ្នក ហើយ​កម្មវិធី​ព្យាបាទ​អាច​ចែករំលែក​ទិន្នន័យ​ទំនាក់ទំនង​​ដោយ​មិន​ឲ្យ​អ្នកដឹង។"</string>
- <string name="permlab_writeContacts" msgid="5107492086416793544">"កែ​ទំនាក់ទំនង​របស់​អ្នក"</string>
- <string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"ឲ្យ​កម្មវិធី​កែ​ទិន្នន័យ​អំពី​ទំនាក់ទំនង​របស់​អ្នក​ដែល​បាន​រក្សាទុក​ក្នុង​កុំព្យូទ័រ​បន្ទះ រួមមាន​ប្រេកង់​​ដែល​អ្នក​បាន​ហៅ អ៊ីមែល ឬ​ទាក់ទង​តាម​វិធី​ផ្សេងៗ​ជា​មួយ​ទំនាក់ទំនង​ជាក់លាក់។ សិទ្ធិ​​នេះ​អនុញ្ញាត​ឲ្យ​​​កម្មវិធី​លុប​ទិន្នន័យ​ទំនាក់ទំនង​របស់​អ្នក។"</string>
- <string name="permdesc_writeContacts" product="default" msgid="589869224625163558">"ឲ្យ​កម្មវិធី​កែ​ទិន្នន័យ​អំពី​ទំនាក់ទំនង​របស់​អ្នក​ដែល​បាន​រក្សាទុក​ក្នុង​ទូរស័ព្ទ​របស់​អ្នក រួមមាន​ប្រេកង់​ដែល​អ្នក​បាន​ហៅ អ៊ីមែល ឬ​បាន​ទាក់ទង​​តាម​វិធី​ផ្សេងៗ​ជា​មួយ​ទំនាក់​ទំនាក់​ជាក់លាក់។ សិទ្ធិ​នេះ​ឲ្យ​កម្មវិធី​លុប​ទិន្នន័យ​ទំនាក់ទំនង។"</string>
- <string name="permlab_readCallLog" msgid="3478133184624102739">"អាន​​កំណត់​ហេតុ​​​ហៅ"</string>
- <string name="permdesc_readCallLog" product="tablet" msgid="3700645184870760285">"ឲ្យ​កម្មវិធី​អាន​បញ្ជី​ហៅ​កុំព្យូទ័រ​បន្ទះ​របស់​អ្នក រួមមាន​ទិន្នន័យ​អំពី​ការ​ហៅ​ចូល និង​ចេញ។ សិទ្ធិ​នេះ​អនុញ្ញាត​ឲ្យ​កម្មវិធី​រក្សាទុក​ទិន្នន័យ​បញ្ជី​ហៅ​របស់​អ្នក ហើយ​កម្មវិធី​ព្យាបាទ​អាច​ចែករំលែក​ទិន្នន័យ​បញ្ជី​ហៅ​ដោយ​មិន​ឲ្យ​អ្នក​ដឹង។"</string>
- <string name="permdesc_readCallLog" product="default" msgid="5777725796813217244">"ឲ្យ​កម្មវិធី​អាន​​​បញ្ជី​ហៅ​ទូរស័ព្ទ​របស់​អ្នក រួមមាន​ទិន្នន័យ​អំពី​ការ​ហៅ​ចូល និង​ចេញ។ សិទ្ធិ​នេះ​អនុញ្ញាត​ឲ្យ​កម្មវិធី​រក្សាទុក​ទិន្នន័យ​បញ្ជី​ហៅ​របស់​អ្នក ហើយ​កម្មវិធី​ព្យាបាទ​អាច​ចែករំលែក​ទិន្នន័យ​បញ្ជី​ហៅ​ដោយ​មិន​ឲ្យ​អ្នកដឹង។"</string>
- <string name="permlab_writeCallLog" msgid="8552045664743499354">"សរសេរ​បញ្ជី​ហៅ"</string>
- <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"ឲ្យ​កម្មវិធី​កែ​បញ្ជី​ហៅ​កុំព្យូទ័រ​បន្ទះ​របស់​អ្នក​រួមមាន​ទិន្នន័យ​អំពី​ការ​ហៅ​ចូល និង​ចេញ។​កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា ដើម្បី​លុប ឬ​កែ​បញ្ជី​ហៅ​របស់​អ្នក។"</string>
- <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"ឲ្យ​កម្មវិធី​កែ​បញ្ជី​ហៅ​នៃ​ទូរស័ព្ទ​របស់​អ្នក រួមមាន​ទិន្នន័យ​អំពី​ការ​ហៅ​ចូល និង​ចេញ។ កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា ដើម្បី​លុប ឬ​កែ​បញ្ជី​ការ​ហៅ​របស់​អ្នក។"</string>
- <string name="permlab_readProfile" msgid="4701889852612716678">"អាន​កាត​ទំនាក់ទំនង​ផ្ទាល់ខ្លួន​​របស់​អ្នក"</string>
- <string name="permdesc_readProfile" product="default" msgid="5462475151849888848">"ឲ្យ​កម្មវិធី​អាន​ព័ត៌មាន​ប្រវត្តិរូប​ផ្ទាល់ខ្លួន​ដែល​មាន​លើ​ឧបករណ៍​របស់​អ្នក ដូច​ជា ឈ្មោះ និង​ព័ត៌មាន​ទំនាក់ទំនង។ វា​មាន​ន័យ​ថា កម្មវិធី​អាច​កំណត់​អ្នក និង​អាច​ផ្ញើ​ព័ត៌មាន​ប្រវត្តិរូប​របស់​អ្នក​ទៅ​អ្នក​ផ្សេង។"</string>
- <string name="permlab_writeProfile" msgid="907793628777397643">"កែ​កាត​ទំនាក់ទំនង​ផ្ទាល់​ខ្លួន​របស់​អ្នក"</string>
- <string name="permdesc_writeProfile" product="default" msgid="5552084294598465899">"ឲ្យ​កម្មវិធី​ប្ដូរ ឬ​បន្ថែម​ព័ត៌មាន​ប្រវត្តិរូប​ផ្ទាល់​ខ្លួន​ដែល​បាន​រក្សាទុក​ក្នុង​ឧបករណ៍​របស់​អ្នក ដូចជា ឈ្មោះ និង​ព័ត៌មាន​ទំនាក់ទំនង​របស់​អ្នក។ នេះ​មាន​ន័យ​ថា​កម្មវិធី​អាច​កំណត់​អ្នក និង​ផ្ញើ​ព័ត៌មាន​ប្រវត្តិរូប​របស់​អ្នក​ទៅ​អ្នក​ផ្សេង។"</string>
- <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"អាន​ចរន្ត​​សង្គម​របស់​អ្នក"</string>
- <string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"ឲ្យ​កម្មវិធី​ចូល​ដំណើរការ និង​ធ្វើ​សម​កាល​កម្ម​បច្ចុប្បន្នភាព​សង្គម​ពី​អ្នក​ និង​មិត្តភ័ក្ដិ។ ប្រយ័ត្ន​ពេល​ចែករំលែក​ព័ត៌មាន វា​អនុញ្ញាត​ឲ្យ​កម្មវិធី​អាន​ការ​ទាក់ទង​រវាង​អ្នក​ និង​មិត្តភ័ក្ដិ​លើ​បណ្ដាញ​សង្គម ទាក់ទង​នឹង​ព័ត៌មាន​សម្ងាត់។ ចំណាំ៖​ សិទ្ធិ​នេះ​មិន​អាច​ត្រូវ​បាន​​អនុវត្ត​លើ​បណ្ដាញ​សង្គម​ទាំង​អស់​បាន​ទេ។"</string>
- <string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"សរសេរ​ទៅ​ចរន្ត​សង្គម​របស់​អ្នក"</string>
- <string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"ឲ្យ​កម្មវិធី​បង្ហាញ​បច្ចុប្បន្នភាព​សង្គម​ពី​មិត្តភ័ក្ដិ​របស់​អ្នក។ ប្រយ័ត្ន​ពេល​ចែករំលែក​ព័ត៌មាន វា​ឲ្យ​កម្មវិធី​បង្កើត​​​សារ​​ដែល​អាច​បង្ហាញ​ថា​មក​ពី​មិត្តភ័ក្ដិ។ ចំណាំ៖ សិទ្ធិ​នេះ​មិន​អាច​ប្រើ​លើ​បណ្ដាញ​សង្គម​បាន​ទេ។"</string>
- <string name="permlab_readCalendar" msgid="5972727560257612398">"អាន​ព្រឹត្តិការណ៍​ប្រតិទិន​​និង​ព័ត៌មាន​សម្ងាត់"</string>
- <string name="permdesc_readCalendar" product="tablet" msgid="4216462049057658723">"ឲ្យ​កម្មវិធី​អាច​​ព្រឹត្តិការណ៍​ប្រតិទិន​ទាំងអស់​ដែល​បាន​រក្សាទុក​ក្នុង​ទូរស័ព្ទ​របស់​អ្នក រួមមាន​មិត្តភ័ក្ដិ និង​មិត្ត​រួម​ការងារ។ វា​អាច​ឲ្យ​កម្មវិធី​ចែករំលែក​ ឬ​រក្សាទុក​ទិន្នន័យ​ប្រតិទិន​របស់​អ្នក​​ដោយ​មិន​គិត​ពី​ការ​សម្ងាត់ ឬ​ការ​យល់​ដឹង។"</string>
- <string name="permdesc_readCalendar" product="default" msgid="7434548682470851583">"ឲ្យ​កម្មវិធី​អាន​ព្រឹត្តិការណ៍​ប្រតិទិន​ទាំងអស់​ដែល​មាន​ក្នុង​កុំព្យូទ័រ​បន្ទះ​របស់​អ្នក រួមមាន​មិត្តភ័ក្ដិ ឬ​មិត្ត​រួម​ការងារ។ វា​អាច​អនុញ្ញាត​ឲ្យ​យ​កម្ម​វិធី​ចែករំលែក ឬ​រក្សាទុក​ទិន្នន័យ​ប្រតិទិន​របស់​អ្នក​ដែល​ទាក់ទង​នឹង​ព័ត៌មាន​សម្ងាត់ ឬ​​ការ​ប្រែប្រួល។"</string>
- <string name="permlab_writeCalendar" msgid="8438874755193825647">"បន្ថែម ឬ​កែ​ព្រឹត្តិការណ៍​ប្រតិទិន​ និង​ផ្ញើ​អ៊ីមែល​ទៅ​ភ្ញៀវ​ដោយ​មិន​ឲ្យ​ម្ចាស់​ដឹង"</string>
- <string name="permdesc_writeCalendar" product="tablet" msgid="6679035520113668528">"ឲ្យ​កម្មវិធី​បន្ថែម លុប ឬ​ប្ដូរ​ព្រឹត្តិការណ៍​ដែល​អ្នក​អាច​កែ​លើ​កុំព្យូទ័រ​បន្ទះ​របស់​អ្នក រួមមាន​មិត្តភ័ក្ដិ ឬ​មិត្ត​រួម​ការងារ។ វា​អាច​ឲ្យ​កម្មវិធី​ផ្ញើ​សារ​ដែល​បង្ហាញ​ថា​មក​ពី​ម្ចាស់​ប្រតិទិន​ ឬ​កែ​ព្រឹត្តិការណ៍​ដោយ​មិន​ឲ្យ​ម្ចាស់​ដឹង។"</string>
- <string name="permdesc_writeCalendar" product="default" msgid="2324469496327249376">"ឲ្យ​កម្មវិធី​បន្ថែម លុប ឬ​ប្ដូរ​ព្រឹត្តិការណ៍​ដែល​អ្នក​អាច​កែប្រែ​លើ​ទូរស័ព្ទ​របស់​អ្នក រួមមាន​មិត្តភ័ក្ដិ ឬ​មិត្ត​រួម​ការងារ។ វា​​អាច​ឲ្យ​កម្មវិធី​ផ្ញើ​សារ​ដែល​បង្ហាញ​ថា​មក​ពី​ម្ចាស់​ប្រតិទិន ឬ​កែ​ព្រឹត្តិការណ៍​ដោយ​មិន​ឲ្យ​​អ្នក​ដឹង។"</string>
- <string name="permlab_accessMockLocation" msgid="8688334974036823330">"ក្លែង​ប្រភព​ទីតាំង​សម្រាប់​សាកល្បង"</string>
- <string name="permdesc_accessMockLocation" msgid="5808711039482051824">"បង្កើត​ប្រភព​ទីតាំង​ក្លែង​ក្លាយ​សម្រាប់​សាកល្បង ឬ​ដំឡើង​ក្រុមហ៊ុន​ផ្ដល់​ទីតាំង​ថ្មី។ វា​អនុញ្ញាត​ឲ្យ​កម្មវិធី​បដិសេធ​ទីតាំង​​ និង/ឬ​ស្ថានភាព​បាន​ត្រឡប់​ដោយ​ប្រភព​ទីតាំង​ផ្សេង​ដូច​ជា GPS ឬ​ក្រុមហ៊ុន​ផ្ដល់​ទីតាំង។"</string>
- <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"ចូល​ដំណើរការ​ពាក្យ​បញ្ជា​ក្រុមហ៊ុន​ផ្ដល់​ទីតាំង"</string>
- <string name="permdesc_accessLocationExtraCommands" msgid="5945166642335800763">"ឲ្យ​កម្មវិធី​ចូល​ពាក្យ​បញ្ជា​ក្រុមហ៊ុន​ផ្ដល់​ទីតាំង​បន្ថែម។ កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា​ដើម្បី​ជ្រៀតជ្រែក​ជា​មួយ​ប្រតិបត្តិការ​ GPS ឬ​ប្រភព​ទីតាំង​ផ្សេង​ទៀត។"</string>
- <string name="permlab_installLocationProvider" msgid="6578101199825193873">"សិទ្ធិ ដើម្បី​ដំឡើង​ក្រុមហ៊ុន​ផ្ដល់​ទីតាំង"</string>
- <string name="permdesc_installLocationProvider" msgid="9066146120470591509">"បង្កើត​ប្រភព​ទីតាំង​ក្លែងក្លាយ​សម្រាប់​សាកល្បង ឬ​ដំឡើង​ក្រុមហ៊ុន​ផ្ដល់​ទីតាំង​ថ្មី។ វា​អនុញ្ញាត​ឲ្យ​កម្មវិធី​បដិសេធ​ទីតាំង​ និង/ឬ​ស្ថានភាព​បាន​ត្រឡប់​ដោយ​ប្រភព​ទីតាំង​ផ្សេងៗ​ដូចជា GPS ឬ​ក្រុមហ៊ុន​ផ្ដល់​ទីតាំង។"</string>
- <string name="permlab_accessFineLocation" msgid="1191898061965273372">"ទីតាំង​ពិតប្រាកដ (GPS និង​មាន​មូលដ្ឋាន​លើ​បណ្ដាញ)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"ឲ្យ​កម្មវិធី​ទទួល​ទីតាំង​ពិតប្រាកដ​របស់​អ្នក ដោយ​ប្រើ​ប្រព័ន្ធ​កំណត់​ទីតាំង​សកម្ម (GPS) ឬ​ប្រភព​ទីតាំង​បណ្ដាញ​ដូច​ជា អង់តែន​ចល័ត និង​វ៉ាយហ្វាយ។ សេវាកម្ម​ទីតាំង​ទាំង​នេះ​ត្រូវតែ​បើក និង​អាច​ប្រើ​ចំពោះ​ឧបករណ៍​របស់​អ្នក​សម្រាប់​កម្មវិធី​ដែល​ប្រើ​ពួក​វា។ កម្មវិធី​អាច​ប្រើ​វា ដើម្បី​កំណត់​​ទីកន្លែង​របស់​អ្នក និង​អាច​ប្រើ​ថាមពល​ថ្ម​បន្ថែម។"</string>
- <string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"ទីតាំង​ប្រហាក់ប្រហែល (​​មាន​មូលដ្ឋាន​លើ​បណ្ដាញ)"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"ឲ្យ​កម្មវិធី​ទទួល​ទីតាំង​ប្រហាក់ប្រហែល។ ទីតាំង​នេះ​ត្រូវ​បាន​ទទួល​តាម​សេវាកម្ម​ទីតាំង​ដោយ​ប្រើ​ប្រភព​ទីតាំង​បណ្ដាញ​ដូច​ជា អង់តែន និង​វ៉ាយហ្វាយ។ សេវាកម្ម​ទីតាំង​ទាំង​នេះ​ត្រូវ​តែ​បើក និង​អាច​ប្រើ​បាន​ចំពោះ​ឧបករណ៍​របស់​អ្នក​សម្រាប់​កម្មវិធី​ដែល​ប្រើ​ពួកវា។ កម្មវិធី​អាច​ប្រើ​វា ដើម្បី​កំណត់កន្លែង​ដែល​អ្នក​នៅ​ប្រហាក់ប្រហែល។"</string>
- <string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"ចូល​ដំណើរការ​ SurfaceFlinger"</string>
- <string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"ឲ្យ​កម្មវិធី​ប្រើ​លក្ខណៈ​កម្រិត​ទាប​របស់ SurfaceFlinger ។"</string>
- <string name="permlab_readFrameBuffer" msgid="6690504248178498136">"អាន​អង្គ​ចងចាំ​បណ្ដោះ​អាសន្ន"</string>
- <string name="permdesc_readFrameBuffer" msgid="4937405521809454680">"ឲ្យ​កម្មវិធី​អាន​មាតិកា​នៃ​អង្គ​ចងចាំ​បណ្ដោះ​អាសន្ន។"</string>
- <string name="permlab_accessInputFlinger" msgid="5348635270689553857">"ចូល​ដំណើរការ InputFlinger"</string>
- <string name="permdesc_accessInputFlinger" msgid="2104864941201226616">"ឲ្យ​កម្មវិធី​ប្រើ​លក្ខណៈ​កម្រិត​ទាប InputFlinger ។"</string>
- <string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"កំណត់​រចនាសម្ព័ន្ធ​ការ​បង្ហាញ​វ៉ាយហ្វាយ"</string>
- <string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"ឲ្យ​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​ និង​ភ្ជាប់​ទៅ​ការ​បង្ហាញ​វ៉ាយហ្វាយ។"</string>
- <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"ពិនិត្យ​ការ​បង្ហាញ​វ៉ាយហ្វាយ"</string>
- <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"ឲ្យ​កម្មវិធី​ពិនិត្យ​លក្ខណៈ​កម្រិត​ទាប​​នៃ​ការ​បង្ហាញ​វ៉ាយហ្វាយ។"</string>
- <string name="permlab_captureAudioOutput" msgid="6857134498402346708">"ចាប់​យក​លទ្ធផល​អូឌីយ៉ូ"</string>
- <string name="permdesc_captureAudioOutput" msgid="6210597754212208853">"​ឱ្យ​កម្មវិធី​ដើម្បី​ចាប់​យក​ និង​​ប្ដូរ​​ទិស​លទ្ធផល​អូឌីយ៉ូ​។"</string>
- <string name="permlab_captureVideoOutput" msgid="2246828773589094023">"ចាប់​យក​លទ្ធផល​វីដេអូ"</string>
- <string name="permdesc_captureVideoOutput" msgid="359481658034149860">"ឲ្យ​កម្មវិធី​ចាប់​យក​ និង​ប្ដូរ​​ទិស​លទ្ធផល​វីដេអូ​។"</string>
- <string name="permlab_captureSecureVideoOutput" msgid="7815398969303382016">"ចាប់​យក​លទ្ធផល​វីដេអូ​សុវត្ថិភាព"</string>
- <string name="permdesc_captureSecureVideoOutput" msgid="2779793064709350289">"ឲ្យ​​កម្មវិធី​​​ចាប់​យក ​និង​ប្ដូរ​ទិស​លទ្ធផល​វីដេអូ​ដែល​មាន​សុវត្ថិភាព​។"</string>
- <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"ប្ដូរ​ការ​កំណត់​អូឌីយូ​របស់​អ្នក"</string>
- <string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"ឲ្យ​កម្មវិធី​កែ​ការ​កំណត់​សំឡេង​សកល ដូច​ជា​កម្រិត​សំឡេង និង​អូប៉ាល័រ​ដែល​បាន​ប្រើ​សម្រាប់​លទ្ធផល។"</string>
- <string name="permlab_recordAudio" msgid="3876049771427466323">"ថត​សំឡេង"</string>
- <string name="permdesc_recordAudio" msgid="4906839301087980680">"​ឱ្យ​កម្មវិធី​ថត​សំឡេង​​ជាមួយ​មីក្រូហ្វូន​​​។ សិទ្ធិ​នេះ​អនុញ្ញាត​ឲ្យ​កម្មវិធី​ថត​សំឡេង​​នៅ​ពេល​ណា​មួយ​ដោយ​គ្មាន​ការ​បញ្ជាក់​របស់​អ្នក។"</string>
- <string name="permlab_camera" msgid="3616391919559751192">"ថត​រូប និងវីដេអូ"</string>
- <string name="permdesc_camera" msgid="8497216524735535009">"ឲ្យ​កម្មវិធី​ថត​រូប និង​វីដេអូ​ដោយ​ប្រើ​ម៉ាស៊ីន​ថត។ វា​ឲ្យ​កម្មវិធី​​ប្រើ​ម៉ាស៊ីន​ថត​នៅ​ពេល​​ណាមួយ​ដោយ​គ្មាន​ការ​បញ្ជាក់​របស់​អ្នក។"</string>
- <string name="permlab_cameraDisableTransmitLed" msgid="2651072630501126222">"បិទ​​ពន្លឺ​បង្ហាញ​ការ​បញ្ជូន​​ពេល​ម៉ាស៊ីន​ថត​កំពុង​ប្រើ"</string>
- <string name="permdesc_cameraDisableTransmitLed" msgid="4764585465480295341">"ឲ្យ​កម្មវិធី​ប្រព័ន្ធ​ដែល​បាន​ដំឡើង​រួច​បិទ​​ LED បង្ហាញ​ការ​ប្រើ​ម៉ាស៊ីន​ថត។"</string>
- <string name="permlab_brick" product="tablet" msgid="2961292205764488304">"បិទ​កុំព្យូទ័រ​បន្ទះ​ជា​អចិន្ត្រៃយ៍"</string>
- <string name="permlab_brick" product="default" msgid="8337817093326370537">"បិទ​ទូរស័ព្ទ​ជា​អចិន្ត្រៃយ៍"</string>
- <string name="permdesc_brick" product="tablet" msgid="4334818808001699530">"ឲ្យ​កម្មវិធី​បិទ​កុំព្យូទ័រ​បន្ទះ​​​ជា​អចិន្ត្រៃយ៍។ វា​មាន​គ្រោះថ្នាក់​ណាស់។"</string>
- <string name="permdesc_brick" product="default" msgid="5788903297627283099">"ឲ្យ​កម្មវិធី​បិទ​ទូរស័ព្ទ​ទាំង​មូល​​ជា​អចិន្ត្រៃយ៍។ វា​មាន​គ្រោះ​ថ្នាក់​ណាស់។"</string>
- <string name="permlab_reboot" product="tablet" msgid="3436634972561795002">"បង្ខំ​ឲ្យ​ចាប់ផ្ដើម​កុំព្យូទ័រ​បន្ទះ​ឡើង​វិញ"</string>
- <string name="permlab_reboot" product="default" msgid="2898560872462638242">"បង្ខំ​ឲ្យ​ទូរស័ព្ទ​ចាប់ផ្ដើម​ឡើងវិញ"</string>
- <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"ឲ្យ​កម្មវិធី​បង្ខំ​ឲ្យ​​កុំព្យូទ័រ​បន្ទះ​ចាប់ផ្ដើម​ឡើងវិញ។"</string>
- <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"ឲ្យ​កម្មវិធី​បង្ខំ​​ឲ្យ​ទូរស័ព្ទ​ចាប់ផ្ដើម​ឡើងវិញ។"</string>
- <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"ការ​ចូល​ដំណើរការ​ប្រព័ន្ធ​ឯកសារ​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី"</string>
- <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"ការ​ចូល​ដំណើរការ​ប្រព័ន្ធ​ឯកសារ​កាត​អេសឌី"</string>
- <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"ឲ្យ​កម្មវិធី​ភ្ជាប់ និង​ផ្ដាច់​ប្រព័ន្ធ​ឯកសារ​សម្រាប់​ឧបករណ៍​ផ្ទុក​ចល័ត។"</string>
- <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"លុប​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី"</string>
- <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"លុប​កាត​អេសឌី"</string>
- <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"ឲ្យ​កម្មវិធី​ធ្វើ​ទ្រង់ទ្រាយ​ឧបករណ៍​ផ្ទុក​ចល័ត។"</string>
- <string name="permlab_asec_access" msgid="3411338632002193846">"យក​​ព័ត៌មាន​នៅ​លើ​ឧបករណ៍​​ផ្ទុក​ខាងក្នុង"</string>
- <string name="permdesc_asec_access" msgid="3094563844593878548">"ឲ្យ​កម្មវិធី​យក​ព័ត៌មាន​លើ​ការ​​ផ្ទុក​ខាង​ក្នុង។"</string>
- <string name="permlab_asec_create" msgid="6414757234789336327">"បង្កើត​​ឧបករណ៍​ផ្ទុក​ខាងក្នុង"</string>
- <string name="permdesc_asec_create" msgid="4558869273585856876">"ឲ្យ​កម្មវិធី​បង្កើត​ឧបករណ៍​ផ្ទុក​ខាង​ក្នុង។"</string>
- <string name="permlab_asec_destroy" msgid="526928328301618022">"បំផ្លាញ​​ឧបករណ៍​​ផ្ទុក​ខាងក្នុង"</string>
- <string name="permdesc_asec_destroy" msgid="7218749286145526537">"ឲ្យ​កម្មវិធី​បំផ្លាញ​ឧបករណ៍​ផ្ទុក​ខាង​ក្នុង។"</string>
- <string name="permlab_asec_mount_unmount" msgid="8877998101944999386">"ភ្ជាប់/ផ្ដាច់​ឧបករណ៍​ផ្ទុក​ខាង​ក្នុង"</string>
- <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"ឲ្យ​កម្មវិធី​ភ្ជាប់/ផ្ដាច់​ឧបករណ៍​ផ្ទុក​ខាង​ក្នុង។"</string>
- <string name="permlab_asec_rename" msgid="7496633954080472417">"ប្ដូរ​ឈ្មោះ​ឧបករណ៍​ផ្ទុក​ខាង​ក្នុង"</string>
- <string name="permdesc_asec_rename" msgid="1794757588472127675">"ឲ្យ​កម្មវិធី​ប្ដូរ​ឈ្មោះ​ឧបករណ៍​ផ្ទុក​ខាង​ក្នុង។"</string>
- <string name="permlab_vibrate" msgid="7696427026057705834">"ពិនិត្យ​ការ​ញ័រ"</string>
- <string name="permdesc_vibrate" msgid="6284989245902300945">"ឲ្យ​កម្មវិធី​គ្រប់គ្រង​កម្មវិធី​ញ័រ។"</string>
- <string name="permlab_flashlight" msgid="2155920810121984215">"ត្រួតពិនិត្យ​ពិល"</string>
- <string name="permdesc_flashlight" msgid="6522284794568368310">"ឲ្យ​កម្មវិធី​ពិនិត្យ​ពិល។"</string>
- <string name="permlab_manageUsb" msgid="1113453430645402723">"គ្រប់គ្រង​ចំណូល​ចិត្ត និង​សិទ្ធិ​សម្រាប់​ឧបករណ៍​យូអេសប៊ី"</string>
- <string name="permdesc_manageUsb" msgid="7776155430218239833">"ឲ្យ​កម្មវិធី​គ្រប់គ្រង​ចំណូល​ចិត្ត និង​សិទ្ធិ​ឧបករណ៍​យូអេសប៊ី។"</string>
- <string name="permlab_accessMtp" msgid="4953468676795917042">"អនុវត្ត​ពិធីការ MTP"</string>
- <string name="permdesc_accessMtp" msgid="6532961200486791570">"ចូល​ដំណើរការ​កម្មវិធី​បញ្ជា kernel MTP ដើម្បី​អនុវត្ត​ពិធីការ​យូអេសប៊ី MTP ។"</string>
- <string name="permlab_hardware_test" msgid="4148290860400659146">"សាកល្បង​ផ្នែក​រឹង"</string>
- <string name="permdesc_hardware_test" msgid="6597964191208016605">"ឲ្យ​កម្មវិធី​ពិនិត្យ​គ្រឿង​ផ្សេងៗ​​សម្រាប់​សាកល្បង​ផ្នែក​រឹង។"</string>
- <string name="permlab_callPhone" msgid="3925836347681847954">"ហៅ​លេខ​ទូរស័ព្ទ​ដោយ​ផ្ទាល់"</string>
- <string name="permdesc_callPhone" msgid="3740797576113760827">"ឲ្យ​កម្មវិធី​ហៅ​លេខ​ទូរស័ព្ទ​ដោយ​គ្មាន​សកម្មភាព​របស់​អ្នក។​ វា​អាច​កាត់​លុយ​ ឬ​ហៅ​ដោយ​មិន​រំពឹង​ទុក។ ចំណាំ​ថា​ វា​មិន​អនុញ្ញាត​ឲ្យ​កម្មវិធី​ហៅ​លេខ​ពេល​អាសន្ន​ទេ។ កម្មវិធី​ព្យាបាទ​អាច​កាត់​លុយ​របស់​អ្នក​ ដោយ​ធ្វើការ​ហៅ​ដោយ​គ្មាន​ការ​បញ្ជាក់​របស់​អ្នក។"</string>
- <string name="permlab_callPrivileged" msgid="4198349211108497879">"ហៅ​លេខ​ទូរស័ព្ទ​ណាមួយ​ដោយ​ផ្ទាល់"</string>
- <string name="permdesc_callPrivileged" msgid="1689024901509996810">"ឲ្យ​កម្មវិធី​ហៅ​លេខ​ទូរស័ព្ទ រួមមាន​លេខ​ពេល​អាសន្ន​ដោយ​គ្មាន​​អំពើ​របស់​អ្នក។ កម្មវិធី​ព្យាបាទ​អាច​ដាក់​ការ​ហៅ​មិន​ត្រឹមត្រូវ និង​ចាំបាច់​ទៅ​សេវាកម្ម​ពេល​អាសន្ន។"</string>
- <string name="permlab_performCdmaProvisioning" product="tablet" msgid="4842576994144604821">"ចាប់ផ្ដើម​រៀបចំ​កុំព្យូទ័រ​បន្ទះ CDMA ដោយ​ផ្ទាល់"</string>
- <string name="permlab_performCdmaProvisioning" product="default" msgid="5604848095315421425">"ចាប់ផ្ដើម​រៀបចំ​កុំព្យូទ័រ​បន្ទះ CDMA ដោយ​ផ្ទាល់"</string>
- <string name="permdesc_performCdmaProvisioning" msgid="1994193538802314186">"ឲ្យ​កម្មវិធី​ចាប់ផ្ដើម​ការ​ផ្ដល់ CDMA ។ កម្មវិធី​ព្យាបាទ​អាច​មិន​ចាំបាច់​ចាប់ផ្ដើម​ការ​ផ្ដល់ CDMA ។"</string>
- <string name="permlab_locationUpdates" msgid="7785408253364335740">"ពិនិត្យ​​ការ​ជូន​ដំណឹង​បច្ចុប្បន្ន​ភាព​ទីតាំង"</string>
- <string name="permdesc_locationUpdates" msgid="1120741557891438876">"ឲ្យ​កម្មវិធី​បិទ/បើក​ការ​ជូន​ដំណឹង​បច្ចុប្បន្នភាព​ទីតាំង​ពី​វិទ្យុ។ មិន​សម្រាប់​ប្រើ​ដោយ​កម្មវិធី​ធម្មតា​ទេ។។"</string>
- <string name="permlab_checkinProperties" msgid="7855259461268734914">"ចូល​ដំណើរការ​លក្ខណៈ​សម្បត្តិ​ពិនិត្យ​មើល"</string>
- <string name="permdesc_checkinProperties" msgid="4024526968630194128">"ឲ្យ​កម្មវិធី​អាន/សរសេរ​លក្ខណសម្បត្តិ​បាន​ផ្ទុក​ឡើង​ដោយ​សេវាកម្ម​ពិនិត្យ​មើល។ មិន​សម្រាប់​ប្រើ​ដោយ​កម្មវិធី​ធម្មតា។"</string>
- <string name="permlab_bindGadget" msgid="776905339015863471">"ជ្រើស​​ធាតុ​ក្រាហ្វិក"</string>
- <string name="permdesc_bindGadget" msgid="8261326938599049290">"ឲ្យ​កម្មវិធី​ប្រាប់​ប្រព័ន្ធ​ថា​ធាតុ​ក្រាហ្វិក​ណាមួយ​​អាច​ត្រូវ​បាន​ប្រើ​ដោយ​​កម្មវិធី​ណា​មួយ។​កម្មវិធី​ដែល​មាន​សិទ្ធិ​នេះ​អាច​ឲ្យ​កម្មវិធី​ផ្សេង​ចូល​ដំណើរការ​ទិន្នន័យ​ផ្ទាល់ខ្លួន។ មិន​សម្រាប់​ប្រើ​ដោយ​កម្មវិធី​ធម្មតា។"</string>
- <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"កែ​ស្ថានភាព​ទូរស័ព្ទ"</string>
- <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"ឲ្យ​កម្មវិធី​ពិនិត្យ​លក្ខណៈ​ទូរស័ព្ទ​នៃ​ឧបករណ៍។ កម្មវិធី​ដែល​មាន​សិទ្ធិ​នេះ​អាច​ប្ដូរ​បណ្ដាញ បិទ និង​បើកវិទ្យុ​ក្នុង​ទូរស័ព្ទ​ដោយ​មិន​ជូន​ដំណឹង​អ្នក។"</string>
- <string name="permlab_readPhoneState" msgid="9178228524507610486">"អាន​ស្ថានភាព និង​អត្តសញ្ញាណ​ទូរស័ព្ទ"</string>
- <string name="permdesc_readPhoneState" msgid="1639212771826125528">"ឲ្យ​កម្មវិធី​ចូល​ដំណើរការ​លក្ខណៈ​ទូរស័ព្ទ​នៃ​ឧបករណ៍។ សិទ្ធិ​នេះ​​ឲ្យ​កម្មវិធី​កំណត់​លេខ​ទូរស័ព្ទ និង​លេខ​សម្គាល់​ឧបករណ៍ ថា​តើ​ការ​ហៅ​សកម្ម និង​លេខ​ពី​ចម្ងាយ​បាន​ភ្ជាប់​ដោយ​ការ​ហៅ។"</string>
- <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"ការពារ​​កុំព្យូទ័រ​បន្ទះ​មិន​ឲ្យ​ដេក"</string>
- <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"ការ​ពារ​ទូរស័ព្ទ​មិន​ឲ្យ​ដេក"</string>
- <string name="permdesc_wakeLock" product="tablet" msgid="7311319824400447868">"ឲ្យ​​កម្មវិធី​ការពារ​កុំព្យូទ័រ​បន្ទះ​មិន​ឲ្យ​ដេក។"</string>
- <string name="permdesc_wakeLock" product="default" msgid="8559100677372928754">"ឲ្យ​កម្មវិធី​ការពារ​ទូរស័ព្ទ​មិន​ឲ្យ​ដេក។"</string>
- <string name="permlab_devicePower" product="tablet" msgid="2787034722616350417">"បិទ/បើក​កុំព្យូទ័រ​បន្ទះ"</string>
- <string name="permlab_devicePower" product="default" msgid="4928622470980943206">"បិទ/បើក​ទូរស័ព្ទ"</string>
- <string name="permdesc_devicePower" product="tablet" msgid="6689862878984631831">"ឲ្យ​កម្មវិធី​បិទ/បើក​កុំព្យូទ័រ​បន្ទះ។"</string>
- <string name="permdesc_devicePower" product="default" msgid="6037057348463131032">"ឲ្យ​កម្មវិធី​បិទ/បើក​ទូរស័ព្ទ។"</string>
- <string name="permlab_factoryTest" msgid="3715225492696416187">"ដំណើរការ​ក្នុង​របៀប​សាកល្បង​ពី​រោងចក្រ"</string>
- <string name="permdesc_factoryTest" product="tablet" msgid="3952059318359653091">"ដំណើរការ​សាកល្បង​ក្រុមហ៊ុន​ផលិត​កម្រិត​ទាប ដោយ​អនុញ្ញាត​ឲ្យ​ចូល​ផ្នែក​រឹង​កុំព្យូទ័រ​បន្ទះ។ អាច​ប្រើ​​បាន​តែ​ពេល​កុំព្យូទ័រ​កំពុង​ដំណើរការ​ក្នុង​របៀប​សាកល្បង​ក្រុមហ៊ុន​ផលិត។"</string>
- <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"ដំណើរ​ការ​ការ​សាកល្បង​ក្រុមហ៊ុន​ផលិត​កម្រិត​ទាប ដោយ​អនុញ្ញាត​ការ​ចូល​ដំណើរការ​ផ្នែក​រឹង​ទូរស័ព្ទ។ អាច​ប្រើ​បាន​តែ​នៅ​ពេល​ទូរស័ព្ទ​កំពុង​ដំណើរការ​របៀប​សាកល្បង​ក្រុមហ៊ុន​ផលិត។"</string>
- <string name="permlab_setWallpaper" msgid="6627192333373465143">"កំណត់​ផ្ទាំង​រូបភាព"</string>
- <string name="permdesc_setWallpaper" msgid="7373447920977624745">"ឲ្យ​កម្មវិធី​កំណត់​ផ្ទាំង​រូបភាព​ប្រព័ន្ធ។"</string>
- <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"កែតម្រូវ​ទំហំ​ផ្ទាំង​រូបភាព​របស់​អ្នក"</string>
- <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"ឲ្យ​កម្មវិធី​កំណត់​ជំនួយ​ទំហំ​ផ្ទាំង​រូបភាព​ប្រព័ន្ធ។"</string>
- <string name="permlab_masterClear" msgid="2315750423139697397">"កំណត់​ប្រព័ន្ធ​ទៅ​លំនាំដើម​រោងចក្រ​ឡើងវិញ"</string>
- <string name="permdesc_masterClear" msgid="3665380492633910226">"ឲ្យ​កម្មវិធី​កំណត់​ប្រព័ន្ធ​​ដូច​ការ​កំណត់​ចេញ​ពី​រោងចក្រ​ឡើងវិញ​ពេញលេញ ដោយ​លុប​ទិន្នន័យ ការ​កំណត់​រចនាសម្ព័ន្ធ និង​កម្មវិធី​បាន​ដំឡើង។"</string>
- <string name="permlab_setTime" msgid="2021614829591775646">"កំណត់​​ម៉ោង"</string>
- <string name="permdesc_setTime" product="tablet" msgid="1896341438151152881">"ឲ្យ​កម្មវិធី​ប្ដូរ​ម៉ោង​កុំព្យូទ័រ​បន្ទះ។"</string>
- <string name="permdesc_setTime" product="default" msgid="1855702730738020">"ឲ្យ​កម្មវិធី​ប្ដូរ​ម៉ោង​ទូរស័ព្ទ។"</string>
- <string name="permlab_setTimeZone" msgid="2945079801013077340">"កំណត់​តំបន់​ពេលវេលា"</string>
- <string name="permdesc_setTimeZone" product="tablet" msgid="1676983712315827645">"ឲ្យ​កម្មវិធី​ប្ដូរ​តំបន់​ពេលវេលា​របស់​កុំព្យូទ័រ​បន្ទះ​នេះ។"</string>
- <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"ឲ្យ​កម្មវិធី​ប្ដូរ​តំបន់​ពេលវេលា​របស់​ទូរស័ព្ទ។"</string>
- <string name="permlab_accountManagerService" msgid="4829262349691386986">"ដើរ​តួ​ជា AccountManagerService"</string>
- <string name="permdesc_accountManagerService" msgid="1948455552333615954">"ឲ្យ​កម្មវិធី​ហៅ​ទៅ​​កម្មវិធី​​ផ្ទៀងផ្ទាត់​គណនី។"</string>
- <string name="permlab_getAccounts" msgid="1086795467760122114">"រក​គណនី​លើ​ឧបករណ៍"</string>
- <string name="permdesc_getAccounts" product="tablet" msgid="2741496534769660027">"ឲ្យ​កម្មវិធី​ទទួល​បញ្ជី​គណនី​ដែល​បាន​ស្គាល់​ដោយ​កុំព្យូទ័រ​បន្ទះ។ វា​អាច​រួម​មាន​គណនី​ណាមួយ​ដែល​បាន​បង្កើត​ដោយ​កម្មវិធី​ដែល​អ្នក​បាន​ដំឡើង។"</string>
- <string name="permdesc_getAccounts" product="default" msgid="3448316822451807382">"ឲ្យ​កម្មវិធី​ទទួល​បញ្ជី​គណនី​ដែល​ទូរស័ព្ទ​​បាន​ស្គាល់​។ វា​អាច​មាន​គណនី​ដែល​បាន​បង្កើត​ដោយ​កម្មវិធី​ដែល​អ្នក​បាន​ដំឡើង។"</string>
- <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"បង្កើត​គណនី និង​កំណត់​ពាក្យ​សម្ងាត់"</string>
- <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"ឲ្យ​កម្មវិធី​ប្រើ​សមត្ថភាព​កម្មវិធី​ផ្ទៀងផ្ទាត់​គណនី​នៃ​កម្មវិធី​គ្រប់គ្រង​គណនី រួមមាន​បង្កើត​គណនី និង​ទទួល ព្រម​ទាំង​កំណត់​ពាក្យ​សម្ងាត់​។"</string>
- <string name="permlab_manageAccounts" msgid="4983126304757177305">"បន្ថែម​ ឬ​លុប​​គណនី"</string>
- <string name="permdesc_manageAccounts" msgid="8698295625488292506">"ឲ្យ​កម្មវិធី​​អនុវត្ត​ប្រតិបត្តិការ​ដូចជា បន្ថែម និង​លុប​គណនី ព្រម​ទាំង​លុប​ពាក្យ​សម្ងាត់។"</string>
- <string name="permlab_useCredentials" msgid="235481396163877642">"ប្រើ​គណនី​​​លើ​ឧបករណ៍"</string>
- <string name="permdesc_useCredentials" msgid="7984227147403346422">"ឲ្យ​កម្មវិធី​ស្នើ​និមិត្តសញ្ញា​ផ្ទៀងផ្ទាត់។"</string>
- <string name="permlab_accessNetworkState" msgid="4951027964348974773">"មើល​ការ​តភ្ជាប់​បណ្ដាញ"</string>
- <string name="permdesc_accessNetworkState" msgid="8318964424675960975">"ឲ្យ​កម្មវិធី​មើល​ព័ត៌មាន​អំពី​ការ​តភ្ជាប់​បណ្ដាញ​ដូចជា​​មាន​បណ្ដាញ​ណាមួយ​ និង​បណ្ដាញ​ត្រូវ​បាន​ភ្ជាប់។"</string>
- <string name="permlab_createNetworkSockets" msgid="8018758136404323658">"ចូល​ដំណើរការ​បណ្ដាញ​ពេញ​លេញ"</string>
- <string name="permdesc_createNetworkSockets" msgid="3403062187779724185">"ឲ្យ​កម្មវិធី​បង្កើត​រន្ធ​បណ្ដាញ​ និង​ប្រើ​ពិធីការ​បណ្ដាញ​តាម​បំណង។ កម្មវិធី​អ៊ីនធឺណិត​ និង​កម្មវិធី​ផ្សេង​ៗ​ផ្ដល់​វិធី​ផ្ញើ​ទិន្នន័យ​ទៅ​អ៊ីនធឺណិត ដូច្នេះ​សិទ្ធិ​នេះ​មិន​ទាមទារ​ឲ្យ​ផ្ញើ​ទិន្នន័យ​ទៅ​អ៊ីនធឺណិត។"</string>
- <string name="permlab_writeApnSettings" msgid="505660159675751896">"ប្ដូរ/បញ្ឈប់​ចរាចរណ៍ និង​ការ​កំណត់​​បណ្ដាញ"</string>
- <string name="permdesc_writeApnSettings" msgid="5333798886412714193">"ឲ្យ​កម្មវិធី​ប្ដូរ​ការ​កំណត់​បណ្ដាញ និង​រារាំង​ និង​តាមដាន​ចរាចរណ៍​បណ្ដាញ ឧទាហរណ៍ ដើម្បី​ប្ដូរ​ប្រូកស៊ី និង​ច្រក APN ។​ កម្មវិធី​ព្យាបាទ​អាច​ពិនិត្យ បញ្ជូន​បន្ត ឬ​កែ​កញ្ចប់​ព័ត៌មាន​បណ្ដាញ​ដោយ​មិន​ឲ្យ​អ្នក​ដឹង។"</string>
- <string name="permlab_changeNetworkState" msgid="958884291454327309">"ប្ដូរ​ការ​តភ្ជាប់​បណ្ដាញ"</string>
- <string name="permdesc_changeNetworkState" msgid="6789123912476416214">"ឲ្យ​កម្មវិធី​ប្ដូរ​ស្ថានភាព​តភ្ជាប់​បណ្ដាញ។"</string>
- <string name="permlab_changeTetherState" msgid="5952584964373017960">"ប្ដូរ​ការ​តភ្ជាប់​ដែល​បាន​​ភ្ជាប់"</string>
- <string name="permdesc_changeTetherState" msgid="1524441344412319780">"ឲ្យ​កម្មវិធី​ប្ដូរ​ស្ថានភាព​ការ​តភ្ជាប់​បណ្ដាញ​ដែល​បាន​ភ្ជាប់។"</string>
- <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"ប្ដូរ​ការ​កំណត់​ប្រើ​ទិន្នន័យ​ផ្ទៃ​ខាង​ក្រោយ"</string>
- <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"ឲ្យ​កម្មវិធី​ប្ដូរ​ការ​កំណត់​ការ​ប្រើ​ទិន្នន័យ​ផ្ទៃ​ខាង​ក្រោយ។"</string>
- <string name="permlab_accessWifiState" msgid="5202012949247040011">"មើល​ការ​តភ្ជាប់​វ៉ាយហ្វាយ"</string>
- <string name="permdesc_accessWifiState" msgid="5002798077387803726">"ឲ្យ​កម្មវិធី​មើល​ព័ត៌មាន​អំពី​បណ្ដាញ​វ៉ាយហ្វាយ ដូច​ជា​ថា​តើ​វ៉ាយហ្វាយ​បាន​បើក​ដែរ​ឬទេ និង​ឈ្មោះ​ឧបករណ៍​វ៉ាយហ្វាយ​ដែល​បាន​តភ្ជាប់។"</string>
- <string name="permlab_changeWifiState" msgid="6550641188749128035">"ភ្ជាប់ និង​ផ្ដាច់​ពី​វ៉ាយហ្វាយ"</string>
- <string name="permdesc_changeWifiState" msgid="7137950297386127533">"ឲ្យ​កម្មវិធី​តភ្ជាប់ និង​ផ្ដាច់​ពី​ចំណុច​ចូល​ដំណើរការ​វ៉ាយហ្វាយ និង​​ធ្វើការ​ផ្លាស់ប្ដូរ​ការ​កំណត់​រចនាសម្ព័ន្ធ​ឧបករណ៍​សម្រាប់​បណ្ដាញ​វ៉ាយហ្វាយ។"</string>
- <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"អនុញ្ញាត​ទទួល​​ម៉ាល់ធីខាស​វ៉ាយហ្វាយ"</string>
- <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"ឲ្យ​កម្មវិធី​ទទួល​កញ្ចប់​ព័ត៌មាន​ដែល​បាន​ផ្ញើ​ទៅ​ឧបករណ៍​ទាំងអស់​លើ​បណ្ដាញ​វ៉ាយ​ហ្វាយ ដោយ​ប្រើ​អាសយដ្ឋាន​ប្រកាស​ច្រើន មិន​គ្រាន់តែ​សម្រាប់​កុំព្យូទ័រ​បន្ទះ​របស់​អ្នក​ទេ។ វា​ប្រើ​ថាមពល​ច្រើន​ជាង​របៀប​មិន​ប្រកាស​ច្រើន។"</string>
- <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"ឲ្យ​កម្មវិធី​ទទួល​កញ្ចប់​ព័ត៌មាន​បាន​ផ្ញើ​ឧបករណ៍​ទាំងអស់​​លើ​បណ្ដាញ​​វ៉ាយហ្វាយ ​ដោយ​ប្រើ​អាសយដ្ឋាន​​ម៉ាល់ធីខាស មិន​សម្រាប់​តែ​ទូរស័ព្ទ​របស់​អ្នក​ទេ។ វា​ប្រើ​ថាមពល​ច្រើន​ជាង​របៀប​មិន​​ម៉ាល់ធីខាស។"</string>
- <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"ចូល​ដំណើរការ​​ការ​កំណត់​ប៊្លូធូស"</string>
- <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"ឲ្យ​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​កុំព្យូទ័រ​បន្ទះ​ប៊្លូធូស​មូលដ្ឋាន និង​រកមើល ព្រម​ទាំង​ផ្គូផ្គង​ជា​មួយ​ឧបករណ៍​ពី​ចម្ងាយ។"</string>
- <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"ឲ្យ​កម្មវិធី​មើល​​ការ​កំណត់​រចនាសម្ព័ន្ធ​ប៊្លូធូស​ក្នុង​ទូរស័ព្ទ ដើម្បី​រកមើល និង​ផ្គូផ្គង​ជា​មួយ​ឧបករណ៍​ពី​ចម្ងាយ។"</string>
- <string name="permlab_accessWimaxState" msgid="4195907010610205703">"ភ្ជាប់ និង​ផ្ដាច់​ពី WiMAX"</string>
- <string name="permdesc_accessWimaxState" msgid="6360102877261978887">"ឲ្យ​កម្មវិធី​កំណត់​ថា​តើ WiMAX ត្រូវ​បាន​បើក និង​ព័ត៌មាន​អំពី​បណ្ដាញ WiMAX ដែល​ត្រូវ​បាន​តភ្ជាប់។"</string>
- <string name="permlab_changeWimaxState" msgid="2405042267131496579">"ប្ដូរ​ស្ថានភាព WiMAX"</string>
- <string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"ឲ្យ​កម្មវិធី​តភ្ជាប់​ និង​ផ្ដាច់​កុំព្យូទ័រ​បន្ទះ​ពី​បណ្ដាញ WiMAX ។"</string>
- <string name="permdesc_changeWimaxState" product="default" msgid="697025043004923798">"ឲ្យ​កម្មវិធី​ភ្ជាប់​ទូរស័ព្ទ​ និង​ផ្ដាច់​ពី​បណ្ដាញ WiMAX ។"</string>
- <string name="permlab_bluetooth" msgid="6127769336339276828">"ផ្គូផ្គង​ជា​មួយ​ឧបករណ៍​ប៊្លូធូស"</string>
- <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"ឲ្យ​កម្មវិធី​មើល​ការ​កំណត់​រចនាសម្ព័ន្ធ​​ប៊្លូធូស​លើ​​កុំព្យូទ័រ​បន្ទះ ព្រម​ទាំង​ធ្វើ​ការ​តភ្ជាប់ និង​ទទួល​​ជា​មួយ​ឧបករណ៍​បាន​ផ្គូផ្គង។"</string>
- <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"ឲ្យ​កម្មវិធី​មើល​​ការ​កំណត់​រចនាសម្ព័ន្ធ​ប៊្លូធូស​ក្នុង​ទូរស័ព្ទ ដើម្បី​ទទួល និង​តភ្ជាប់​ជា​មួយ​ឧបករណ៍​បាន​ផ្គូផ្គង។"</string>
- <string name="permlab_nfc" msgid="4423351274757876953">"ពិនិត្យ​ការ​ទាក់ទង​នៅ​ក្បែរ (NFC)"</string>
- <string name="permdesc_nfc" msgid="7120611819401789907">"ឲ្យ​កម្មវិធី​ទាក់ទង​ជា​មួយ​ស្លាក (NFC) កាត និង​កម្មវិធី​អាន។"</string>
- <string name="permlab_disableKeyguard" msgid="3598496301486439258">"បិទ​ការ​ចាក់​សោ​អេក្រង់​របស់​អ្នក"</string>
- <string name="permdesc_disableKeyguard" msgid="6034203065077122992">"ឲ្យ​កម្មវិធី​បិទ​ការ​ចាក់សោ​សុវត្ថិភាព​ពាក្យ​សម្ងាត់​ដែល​បាន​ភ្ជាប់​ណា​មួយ។ ​ឧទាហរណ៍​ត្រឹមត្រូវ​​​នៃ​ការ​បិទ​ទូរស័ព្ទ​ពេល​ទទួលការ​ហៅ​ចូល បន្ទាប់​ម​បើក​សោ​ពេល​ការ​ហៅ​បាន​បញ្ចប់។"</string>
- <string name="permlab_readSyncSettings" msgid="6201810008230503052">"អាន​ការ​កំណត់​ធ្វើ​សម​កាល​កម្ម"</string>
- <string name="permdesc_readSyncSettings" msgid="2706745674569678644">"ឲ្យ​កម្មវិធី​អាន​ការ​កំណត់​ធ្វើ​សម​កាល​កម្ម​សម្រាប់​គណនី។ ឧទាហរណ៍ វា​អាច​កំណត់​ថា​តើ​​​កម្មវិធី​ត្រូវ​បាន​បើក​ជា​មួយ​គណនី​ដែរ​ឬទេ។"</string>
- <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"បិទ/បើក​ការ​ធ្វើ​សម​កាល​កម្ម"</string>
- <string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"ឲ្យ​កម្មវិធី​កែ​ការ​កំណត់​ធ្វើ​សម​កាល​កម្ម​សម្រាប់​គណនី។ ឧទាហរណ៍ វា​អាច​ត្រូវ​បាន​ប្រើ​ដើម្បី​បើក​ការ​ធ្វើ​សម​កាល​កម្ម​កម្មវិធី​របស់​មនុស្ស​ជា​មួយ​គណនី។"</string>
- <string name="permlab_readSyncStats" msgid="7396577451360202448">"អាន​ស្ថិតិ​ធ្វើ​សម​កាល​កម្ម"</string>
- <string name="permdesc_readSyncStats" msgid="1510143761757606156">"ឲ្យ​កម្មវិធី​អាន​ស្ថានភាព​ធ្វើ​សម​កាល​កម្ម​សម្រាប់​គណនី រួមមាន​ព្រឹត្តិការណ៍​ប្រវត្តិ​ធ្វើ​សម​កាល​កម្ម ​និង​ទំហំ​ទិន្នន័យ​បាន​ធ្វើ​សម​កាល​កម្ម។"</string>
- <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"អាន​អត្ថបទ​ព័ត៌មាន​បាន​ជាវ"</string>
- <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"ឲ្យ​កម្មវិធី​ទទួល​ព័ត៌មាន​លម្អិត​អំពី​អត្ថបទ​ព័ត៌មាន​​បាន​ធ្វើ​សម​កាល​កម្ម​បច្ចុប្បន្ន។"</string>
- <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"សរសេរ​​អត្ថបទ​ព័ត៌មាន​ដែល​​បាន​ជាវ"</string>
- <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"ឲ្យ​កម្មវិធី​កែ​អត្ថបទ​ព័ត៌មាន​បាន​ធ្វើ​សម​កាល​កម្ម​បច្ចុប្បន្ន​របស់​អ្នក។ កម្មវិធី​ព្យាបាទ​អាច​ប្ដូរ​អត្ថបទ​បាន​ធ្វើ​សម​កាល​កម្ម​របស់​អ្នក។"</string>
- <string name="permlab_readDictionary" msgid="4107101525746035718">"អាន​ពាក្យ​ដែល​អ្នក​បាន​បន្ថែម​ទៅ​វចនានុក្រម"</string>
- <string name="permdesc_readDictionary" msgid="659614600338904243">"ឲ្យ​កម្មវិធី​អាន​ពាក្យ ឈ្មោះ និង​ឃ្លា​ទាំងអស់​ដែល​អ្នកប្រើ​អាច​​រក្សាទុក​ក្នុង​វចនានុក្រម​​អ្នកប្រើ។"</string>
- <string name="permlab_writeDictionary" msgid="2183110402314441106">"បន្ថែម​ពាក្យ​ទៅ​វចនានុក្រម​កំណត់​ដោយ​អ្នកប្រើ"</string>
- <string name="permdesc_writeDictionary" msgid="8185385716255065291">"ឲ្យ​កម្មវិធី​សរសេរ​ពាក្យ​ថ្មី​ក្នុង​វចនានុក្រម​អ្នកប្រើ។"</string>
- <string name="permlab_sdcardRead" product="nosdcard" msgid="8235341515605559677">"សាកល្បង​ចូល​ដំណើរការ​ការ​ផ្ទុក​ដែល​បាន​ការពារ"</string>
- <string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"សាកល្បង​ចូល​ដំណើរការ​ការ​ផ្ទុក​ដែល​បាន​ការពារ"</string>
- <string name="permdesc_sdcardRead" product="nosdcard" msgid="3642473292348132072">"ឲ្យ​កម្មវិធី​សាកល្បង​សិទ្ធិ​សម្រាប់​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី ដែល​នឹង​អាច​ប្រើ​បាន​លើ​ឧបករណ៍​​ពេល​អនាគត។"</string>
- <string name="permdesc_sdcardRead" product="default" msgid="5914402684685848828">"ឲ្យ​កម្មវិធី​សាកល្បង​សិទ្ធិ​សម្រាប់​កាត​អេសឌី​ដែល​នឹង​អាច​ប្រើ​បាន​លើ​ឧបករណ៍​នា​ពេល​អនាគត។"</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"កែ​ ឬ​លុប​មាតិកា​នៃ​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី​របស់​អ្នក"</string>
- <string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"កែ ឬ​លុប​មាតិកា​កាត​អេសឌី"</string>
- <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"ឲ្យ​កម្មវិធី​សរសេរ​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី។"</string>
- <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"ឲ្យ​​កម្មវិធី​សរសេរ​ទៅ​កាត​អេសឌី។"</string>
- <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"កែ/លុប​មាតិកា​ឧបករណ៍​ផ្ទុក​មេឌៀ​ខាង​ក្នុង"</string>
- <string name="permdesc_mediaStorageWrite" product="default" msgid="8189160597698529185">"ឲ្យ​កម្មវិធី​កែ​មាតិកា​នៃ​ឧបករណ៍​ផ្ទុក​ខាង​ក្នុង។"</string>
- <string name="permlab_manageDocs" product="default" msgid="5778318598448849829">"គ្រប់គ្រង​ការ​ផ្ទុក​ឯកសារ"</string>
- <string name="permdesc_manageDocs" product="default" msgid="8704323176914121484">"ឲ្យ​កម្មវិធី​គ្រប់គ្រង​ការ​ផ្ទុក​ឯកសារ។"</string>
- <string name="permlab_sdcardAccessAll" msgid="8150613823900460576">"ចូល​ដំណើរការ​ឧបករណ៍​ផ្ទុក​ខាង​ក្រៅ​នៃ​អ្នកប្រើ​ទាំងអស់"</string>
- <string name="permdesc_sdcardAccessAll" msgid="3215208357415891320">"ឲ្យ​កម្មវិធី​ចូល​ដំណើរការ​ឧបករណ៍​ផ្ទុក​ខាង​ក្រៅ​សម្រាប់​អ្នកប្រើ​ទាំងអស់។"</string>
- <string name="permlab_cache_filesystem" msgid="5656487264819669824">"ចូល​ដំណើរការ​ប្រព័ន្ធ​​​ឯកសារ​ឃ្លាំង​សម្ងាត់"</string>
- <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"ឲ្យ​កម្មវិធី​អាន និង​សរសេរ​ប្រព័ន្ធ​ឯកសារ​ឃ្លាំង​សម្ងាត់។"</string>
- <string name="permlab_use_sip" msgid="5986952362795870502">"ធ្វើ​ការ​ហៅ/ទទួល​តាម​អ៊ីនធឺណិត"</string>
- <string name="permdesc_use_sip" msgid="4717632000062674294">"ឲ្យ​កម្មវិធី​ប្រើ​សេវាកម្ម SIP ដើម្បី​​​ហៅ/ទទួល​​​តាម​អ៊ីនធឺណិត។"</string>
- <string name="permlab_readNetworkUsageHistory" msgid="7862593283611493232">"អាន​ការ​ប្រើ​បណ្ដាញ​ពិសេស"</string>
- <string name="permdesc_readNetworkUsageHistory" msgid="7689060749819126472">"ឲ្យ​កម្មវិធី​អាន​ការ​ប្រើ​បណ្ដាញ​ជា​ប្រវត្តិ​សាស្ត្រ​សម្រាប់​បណ្ដាញ និង​កម្មវិធី​ជាក់លាក់។"</string>
- <string name="permlab_manageNetworkPolicy" msgid="2562053592339859990">"គ្រប់គ្រង​គោលនយោបាយ​បណ្ដាញ"</string>
- <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"ឲ្យ​កម្មវិធី​គ្រប់គ្រង​គោលនយោបាយ​បណ្ដាញ និង​កំណត់​ក្បួន​ជាក់លាក់​សម្រាប់​កម្មវិធី។"</string>
- <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"កែ​គណនី​ប្រើ​បណ្ដាញ"</string>
- <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"ឲ្យ​កម្មវិធី​កែ​វិធី​គិត​ថ្លៃ​សេវាកម្ម​ប្រើ​បណ្ដាញ​​តាម​កម្មវិធី។ មិន​សម្រាប់​ប្រើ​ដោយ​កម្មវិធី​ធម្មតា។"</string>
- <string name="permlab_markNetworkSocket" msgid="3658527214914959749">"កែប្រែ​សញ្ញា​រន្ធ"</string>
- <string name="permdesc_markNetworkSocket" msgid="7655568433696356578">"ឲ្យ​កម្មវិធី​កែ​សញ្ញា​រន្ធ​​សម្រាប់​នាំ​ផ្លូវ"</string>
- <string name="permlab_accessNotifications" msgid="7673416487873432268">"ចូល​ដំណើរ​ការ​ការ​ជូន​ដំណឹង"</string>
- <string name="permdesc_accessNotifications" msgid="458457742683431387">"ឲ្យ​កម្មវិធី​ទៅ​យក ពិនិត្យ និង​សម្អាត​ការ​ជូន​ដំណឹង រួមមាន​​ប្រកាស​ដោយ​កម្មវិធី​ផ្សេងៗ។"</string>
- <string name="permlab_bindNotificationListenerService" msgid="7057764742211656654">"ចង​ទៅ​សេវាកម្ម​ស្ដាប់​ការ​ជូន​ដំណឹង"</string>
- <string name="permdesc_bindNotificationListenerService" msgid="985697918576902986">"ឲ្យ​ម្ចាស់​ចង​ចំណុច​ប្រទាក់​កម្រិត​កំពូល​នៃ​សេវាកម្ម​កម្មវិធី​ស្ដាប់​ការ​ជូន​ដំណឹង។ មិន​គួរ​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​​ទេ។"</string>
- <string name="permlab_invokeCarrierSetup" msgid="3699600833975117478">"ដកហូត​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​ដែល​បាន​ផ្ដល់​ដោយ​ក្រុមហ៊ុន​បញ្ជូន"</string>
- <string name="permdesc_invokeCarrierSetup" msgid="4159549152529111920">"អនុញ្ញាត​ឲ្យ​ម្ចាស់​ដក​ហូត​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​ដែល​បាន​ផ្ដល់​ដោយ​ក្រុមហ៊ុន​បញ្ជូន។ មិន​គួរ​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_accessNetworkConditions" msgid="8206077447838909516">"សង្កេត​មើល​លើ​លក្ខខណ្ឌ​បណ្ដាញ"</string>
- <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"ឲ្យ​កម្មវិធី​សង្កេត​មើល​​លើ​លក្ខខណ្ឌ​បណ្ដាញ​។ មិន​គួរ​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="policylab_limitPassword" msgid="4497420728857585791">"កំណត់​ក្បួន​ពាក្យ​សម្ងាត់"</string>
- <string name="policydesc_limitPassword" msgid="3252114203919510394">"ពិនិត្យ​ប្រវែង និង​តួអក្សរ​ដែល​បាន​អនុញ្ញាត​ក្នុង​ពាក្យ​សម្ងាត់​ចាក់​សោ​អេក្រង់។"</string>
- <string name="policylab_watchLogin" msgid="914130646942199503">"ពិនិត្យ​ការ​ព្យាយាម​ដោះ​សោ​អេក្រង់"</string>
- <string name="policydesc_watchLogin" product="tablet" msgid="3215729294215070072">"ពិនិត្យ​ចំនួន​​បញ្ចូល​ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ។ ពេល​ដោះ​សោ​អេក្រង់ និង​ចាក់​សោ​ទូរស័ព្ទ ឬ​លុប​ទិន្នន័យ​ទូរស័ព្ទ​ទាំងអស់​ ប្រសិន​បើ​មាន​ពាក្យ​សម្ងាត់​បញ្ចូល​មិន​ត្រឹមត្រូវ​ច្រើន​ដង​ពេក។"</string>
- <string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"ពិនិត្យ​ចំនួន​​បញ្ចូល​ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ។ ពេល​ដោះ​សោ​អេក្រង់ និង​ចាក់​សោ​ទូរស័ព្ទ ឬ​លុប​ទិន្នន័យ​ទូរស័ព្ទ​ទាំងអស់​ ប្រសិន​បើ​មាន​ពាក្យ​សម្ងាត់​បញ្ចូល​មិន​ត្រឹមត្រូវ​ច្រើន​ដង​ពេក។"</string>
- <string name="policylab_resetPassword" msgid="2620077191242688955">"ប្ដូរ​ពាក្យ​សម្ងាត់​ដោះ​សោ​អេក្រង់"</string>
- <string name="policydesc_resetPassword" msgid="605963962301904458">"ប្ដូរ​ពាក្យ​សម្ងាត់​​ដោះ​សោ​អេក្រង់។"</string>
- <string name="policylab_forceLock" msgid="2274085384704248431">"ចាក់សោ​អេក្រង់"</string>
- <string name="policydesc_forceLock" msgid="1141797588403827138">"ពិនិត្យ​វិធី និង​ពេលវេលា​ចាក់សោ​អេក្រង់។"</string>
- <string name="policylab_wipeData" msgid="3910545446758639713">"លុប​ទិន្នន័យ​ទាំង​អស់"</string>
- <string name="policydesc_wipeData" product="tablet" msgid="4306184096067756876">"លុប​ទិន្នន័យ​កុំព្យូទ័រ​បន្ទះ​ដោយ​មិន​​ព្រមាន​ដោយ​អនុវត្ត​ការ​កំណត់​ទិន្នន័យ​ដូច​ចេញ​ពី​រោងចក្រ។"</string>
- <string name="policydesc_wipeData" product="default" msgid="5096895604574188391">"លុប​ទិន្នន័យ​ទូរស័ព្ទ​ដោយ​មិន​ព្រមាន ដោយ​អនុវត្ត​ការ​កំណត់​ទិន្នន័យ​ដូច​ចេញ​ពី​រោងចក្រ ។"</string>
- <string name="policylab_setGlobalProxy" msgid="2784828293747791446">"កំណត់​ប្រូកស៊ី​សកល​របស់​ឧបករណ៍"</string>
- <string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"កំណត់​ប្រូកស៊ី​សកល​របស់​ឧបករណ៍​ត្រូវ​ប្រើ​ពេល​បាន​បើក​គោលនយោបាយ។ មាន​តែ​អ្នក​គ្រប់គ្រង​ឧបករណ៍​ដំបូង​ប៉ុណ្ណោះ​កំណត់​ប្រូកស៊ី​សកល​ត្រឹមត្រូវ។"</string>
- <string name="policylab_expirePassword" msgid="885279151847254056">"កំណត់​សុពលភាព​ពាក្យ​សម្ងាត់​ចាក់សោ​អេក្រង់"</string>
- <string name="policydesc_expirePassword" msgid="1729725226314691591">"ពិនិត្យ​វិធី​ដែល​ប្ដូរ​ពាក្យ​សម្ងាត់​ចាក់​សោ​អេក្រង់​ញឹកញាប់។"</string>
- <string name="policylab_encryptedStorage" msgid="8901326199909132915">"កំណត់​ការ​ដាក់លេខ​កូដ​ការ​ផ្ទុក"</string>
- <string name="policydesc_encryptedStorage" msgid="2637732115325316992">"តម្រូវ​ឲ្យ​ដាក់​លេខ​កូដ​ទិន្នន័យ​កម្មវិធី​បាន​រក្សាទុក។"</string>
- <string name="policylab_disableCamera" msgid="6395301023152297826">"បិទ​ម៉ាស៊ីន​ថត"</string>
- <string name="policydesc_disableCamera" msgid="2306349042834754597">"ការពារ​ការ​ប្រើ​ម៉ាស៊ីន​ថត​ឧបករណ៍​ទាំងអស់។"</string>
- <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"បិទ​លក្ខណៈ​ក្នុង​ការ​ចាក់សោ"</string>
- <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"ការ​ពារ​មិន​ឲ្យ​ប្រើ​លក្ខណៈ​មួយ​ចំនួន​ក្នុង​ការ​ចាក់សោ។"</string>
- <string-array name="phoneTypes">
- <item msgid="8901098336658710359">"ផ្ទះ"</item>
- <item msgid="869923650527136615">"​ចល័ត"</item>
- <item msgid="7897544654242874543">"កន្លែង​ធ្វើការ"</item>
- <item msgid="1103601433382158155">"ទូរសារ​កន្លែង​ធ្វើ"</item>
- <item msgid="1735177144948329370">"ទូរសារ​ផ្ទះ"</item>
- <item msgid="603878674477207394">"ភេយ័រ"</item>
- <item msgid="1650824275177931637">"ផ្សេងៗ"</item>
- <item msgid="9192514806975898961">"តាម​បំណង"</item>
- </string-array>
- <string-array name="emailAddressTypes">
- <item msgid="8073994352956129127">"ផ្ទះ"</item>
- <item msgid="7084237356602625604">"កន្លែង​ធ្វើការ"</item>
- <item msgid="1112044410659011023">"ផ្សេងៗ"</item>
- <item msgid="2374913952870110618">"តាម​តម្រូវ​ការ"</item>
- </string-array>
- <string-array name="postalAddressTypes">
- <item msgid="6880257626740047286">"ផ្ទះ"</item>
- <item msgid="5629153956045109251">"កន្លែង​ធ្វើការ"</item>
- <item msgid="4966604264500343469">"ផ្សេងៗ"</item>
- <item msgid="4932682847595299369">"តាម​បំណង"</item>
- </string-array>
- <string-array name="imAddressTypes">
- <item msgid="1738585194601476694">"ផ្ទះ"</item>
- <item msgid="1359644565647383708">"កន្លែង​ធ្វើការ"</item>
- <item msgid="7868549401053615677">"ផ្សេងៗ"</item>
- <item msgid="3145118944639869809">"តាម​តម្រូវការ"</item>
- </string-array>
- <string-array name="organizationTypes">
- <item msgid="7546335612189115615">"កន្លែង​ធ្វើការ"</item>
- <item msgid="4378074129049520373">"ផ្សេងៗ"</item>
- <item msgid="3455047468583965104">"តាម​តម្រូវ​ការ"</item>
- </string-array>
- <string-array name="imProtocols">
- <item msgid="8595261363518459565">"AIM"</item>
- <item msgid="7390473628275490700">"Windows Live"</item>
- <item msgid="7882877134931458217">"Yahoo"</item>
- <item msgid="5035376313200585242">"Skype"</item>
- <item msgid="7532363178459444943">"QQ"</item>
- <item msgid="3713441034299660749">"ជជែក​ Google"</item>
- <item msgid="2506857312718630823">"ICQ"</item>
- <item msgid="1648797903785279353">"Jabber"</item>
- </string-array>
- <string name="phoneTypeCustom" msgid="1644738059053355820">"តាម​បំណង"</string>
- <string name="phoneTypeHome" msgid="2570923463033985887">"ផ្ទះ"</string>
- <string name="phoneTypeMobile" msgid="6501463557754751037">"​ចល័ត"</string>
- <string name="phoneTypeWork" msgid="8863939667059911633">"កន្លែង​ធ្វើការ"</string>
- <string name="phoneTypeFaxWork" msgid="3517792160008890912">"ទូរសារ​កន្លែង​ធ្វើការ"</string>
- <string name="phoneTypeFaxHome" msgid="2067265972322971467">"ទូរសារ​ផ្ទះ"</string>
- <string name="phoneTypePager" msgid="7582359955394921732">"ភេយ័រ"</string>
- <string name="phoneTypeOther" msgid="1544425847868765990">"ផ្សេងៗ"</string>
- <string name="phoneTypeCallback" msgid="2712175203065678206">"ហៅ​មក​វិញ"</string>
- <string name="phoneTypeCar" msgid="8738360689616716982">"រថយន្ត"</string>
- <string name="phoneTypeCompanyMain" msgid="540434356461478916">"លេខ​សំខាន់​ក្រុមហ៊ុន"</string>
- <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
- <string name="phoneTypeMain" msgid="6766137010628326916">"លេខ​សំខាន់"</string>
- <string name="phoneTypeOtherFax" msgid="8587657145072446565">"ទូរសារ​ផ្សេង"</string>
- <string name="phoneTypeRadio" msgid="4093738079908667513">"វិទ្យុ"</string>
- <string name="phoneTypeTelex" msgid="3367879952476250512">"ទូរសារ"</string>
- <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
- <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"ទូរស័ព្ទ​​កន្លែងធ្វើការ"</string>
- <string name="phoneTypeWorkPager" msgid="649938731231157056">"ភេយ័រ​កន្លែង​ធ្វើ​ការ"</string>
- <string name="phoneTypeAssistant" msgid="5596772636128562884">"អ្នក​ជំនួយ​ការ"</string>
- <string name="phoneTypeMms" msgid="7254492275502768992">"សារ MMS"</string>
- <string name="eventTypeCustom" msgid="7837586198458073404">"តាម​តម្រូវ​ការ"</string>
- <string name="eventTypeBirthday" msgid="2813379844211390740">"ថ្ងៃ​ខួប​កំណើត"</string>
- <string name="eventTypeAnniversary" msgid="3876779744518284000">"បុណ្យខួប"</string>
- <string name="eventTypeOther" msgid="7388178939010143077">"ផ្សេងៗ"</string>
- <string name="emailTypeCustom" msgid="8525960257804213846">"តាម​តម្រូវ​ការ"</string>
- <string name="emailTypeHome" msgid="449227236140433919">"ផ្ទះ"</string>
- <string name="emailTypeWork" msgid="3548058059601149973">"កន្លែង​ធ្វើការ"</string>
- <string name="emailTypeOther" msgid="2923008695272639549">"ផ្សេងៗ"</string>
- <string name="emailTypeMobile" msgid="119919005321166205">"ចល័ត"</string>
- <string name="postalTypeCustom" msgid="8903206903060479902">"តាម​តម្រូវ​ការ"</string>
- <string name="postalTypeHome" msgid="8165756977184483097">"ផ្ទះ"</string>
- <string name="postalTypeWork" msgid="5268172772387694495">"កន្លែង​ធ្វើការ"</string>
- <string name="postalTypeOther" msgid="2726111966623584341">"ផ្សេងៗ"</string>
- <string name="imTypeCustom" msgid="2074028755527826046">"តាម​បំណង"</string>
- <string name="imTypeHome" msgid="6241181032954263892">"ផ្ទះ"</string>
- <string name="imTypeWork" msgid="1371489290242433090">"កន្លែង​ធ្វើការ"</string>
- <string name="imTypeOther" msgid="5377007495735915478">"ផ្សេងៗ"</string>
- <string name="imProtocolCustom" msgid="6919453836618749992">"តាម​បំណង"</string>
- <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
- <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
- <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
- <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
- <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
- <string name="imProtocolGoogleTalk" msgid="493902321140277304">"ការ​ជជែក"</string>
- <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
- <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
- <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
- <string name="orgTypeWork" msgid="29268870505363872">"កន្លែង​ធ្វើការ"</string>
- <string name="orgTypeOther" msgid="3951781131570124082">"ផ្សេងៗ"</string>
- <string name="orgTypeCustom" msgid="225523415372088322">"តាម​តម្រូវការ"</string>
- <string name="relationTypeCustom" msgid="3542403679827297300">"តាម​បំណង"</string>
- <string name="relationTypeAssistant" msgid="6274334825195379076">"អ្នក​ជំនួយ​ការ"</string>
- <string name="relationTypeBrother" msgid="8757913506784067713">"បងប្អូន​ប្រុស"</string>
- <string name="relationTypeChild" msgid="1890746277276881626">"កូន"</string>
- <string name="relationTypeDomesticPartner" msgid="6904807112121122133">"ដៃគូ​ក្នុងស្រុក"</string>
- <string name="relationTypeFather" msgid="5228034687082050725">"ឪពុក"</string>
- <string name="relationTypeFriend" msgid="7313106762483391262">"មិត្តភ័ក្ដិ"</string>
- <string name="relationTypeManager" msgid="6365677861610137895">"អ្នក​គ្រប់គ្រង"</string>
- <string name="relationTypeMother" msgid="4578571352962758304">"ម្ដាយ"</string>
- <string name="relationTypeParent" msgid="4755635567562925226">"ឪពុកម្ដាយ"</string>
- <string name="relationTypePartner" msgid="7266490285120262781">"ដៃគូ"</string>
- <string name="relationTypeReferredBy" msgid="101573059844135524">"យោង​ដោយ"</string>
- <string name="relationTypeRelative" msgid="1799819930085610271">"សាច់ញាតិ"</string>
- <string name="relationTypeSister" msgid="1735983554479076481">"បងប្អូន​ស្រី"</string>
- <string name="relationTypeSpouse" msgid="394136939428698117">"ប្ដី/​​ប្រពន្ធ"</string>
- <string name="sipAddressTypeCustom" msgid="2473580593111590945">"តាម​បំណង"</string>
- <string name="sipAddressTypeHome" msgid="6093598181069359295">"គេហ​ទំព័រ"</string>
- <string name="sipAddressTypeWork" msgid="6920725730797099047">"កន្លែង​ធ្វើការ"</string>
- <string name="sipAddressTypeOther" msgid="4408436162950119849">"ផ្សេងៗ"</string>
- <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"បញ្ចូល​កូដ PIN"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><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>
- <string name="keyguard_label_text" msgid="861796461028298424">"ដើម្បី​ដោះ​សោ​​ ចុច​ម៉ឺនុយ​ បន្ទាប់មក 0 ។"</string>
- <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"លេខ​ពេល​អាសន្ន"</string>
- <string name="lockscreen_carrier_default" msgid="8963839242565653192">"គ្មាន​សេវា។"</string>
- <string name="lockscreen_screen_locked" msgid="7288443074806832904">"ចាក់​អេក្រង់។"</string>
- <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"ចុច​ម៉ឺនុយ ដើម្បី​ដោះ​សោ​ ឬ​ហៅ​ពេល​អាសន្ន។"</string>
- <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"ចុច​ម៉ឺនុយ ដើម្បី​ដោះ​សោ។"</string>
- <string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"គូរ​លំនាំ ដើម្បី​ដោះ​សោ"</string>
- <string name="lockscreen_emergency_call" msgid="5347633784401285225">"ការ​ហៅ​​ពេល​អាសន្ន"</string>
- <string name="lockscreen_return_to_call" msgid="5244259785500040021">"ត្រឡប់​ទៅ​ការ​ហៅ"</string>
- <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"ត្រឹមត្រូវ!"</string>
- <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"ព្យាយាម​ម្ដង​ទៀត"</string>
- <string name="lockscreen_password_wrong" msgid="5737815393253165301">"ព្យាយាម​ម្ដង​ទៀត"</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"បាន​លើស​ការ​ព្យាយាម​ដោះ​សោ​តាម​ទម្រង់​មុខ"</string>
- <string name="lockscreen_plugged_in" msgid="8057762828355572315">"បញ្ចូល​ថ្ម <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_charged" msgid="321635745684060624">"បាន​បញ្ចូល​ពេញ។"</string>
- <string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_low_battery" msgid="1482873981919249740">"ភ្ជាប់​ឧបករណ៍​បញ្ចូល​ថ្ម។"</string>
- <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"គ្មាន​ស៊ី​ម​កាត"</string>
- <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"គ្មាន​ស៊ីម​កាត​ក្នុង​កុំព្យូទ័រ​បន្ទះ។"</string>
- <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"គ្មាន​ស៊ីម​កាត​ក្នុង​ទូរស័ព្ទ។"</string>
- <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"បញ្ចូល​​ស៊ី​ម​កាត។"</string>
- <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"បាត់​ ឬ​មិន​អាច​អាន​ស៊ីម​កាត។ បញ្ចូល​ស៊ីម​កាត។"</string>
- <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"ស៊ី​ម​កាត​មិន​អាច​ប្រើ​បាន​។"</string>
- <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"ស៊ីម​កាត​របស់​អ្នក​ត្រូវ​បាន​បិទ​ជា​អចិន្ត្រៃយ៍។\n ទាក់ទង​ក្រុមហ៊ុន​ផ្ដល់​សេវាកម្ម​ឥត​ខ្សែ​របស់​អ្នក​សម្រាប់​ស៊ីម​កាត​ផ្សេង។"</string>
- <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"ប៊ូតុង​បទ​មុន"</string>
- <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"ប៊ូតុង​បទ​បន្ទាប់"</string>
- <string name="lockscreen_transport_pause_description" msgid="7659088786780128001">"ប៊ូតុង​​ផ្អាក"</string>
- <string name="lockscreen_transport_play_description" msgid="5888422938351019426">"ប៊ូតុង​ចាក់"</string>
- <string name="lockscreen_transport_stop_description" msgid="4562318378766987601">"ប៊ូតុង​បញ្ឈប់"</string>
- <string name="emergency_calls_only" msgid="6733978304386365407">"សម្រាប់​តែ​ហៅ​ពេល​អាសន្ន​ប៉ុណ្ណោះ"</string>
- <string name="lockscreen_network_locked_message" msgid="143389224986028501">"បណ្ដាញ​ជាប់​សោ"</string>
- <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"ស៊ីម​កាត​ជាប់​សោ PUK។"</string>
- <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"មើល​មគ្គុទ្ទេសក៍​អ្នក​ប្រើ ឬ​ទាក់ទង​សេវា​អតិថិជន។"</string>
- <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"ស៊ីមកាត​​ជាប់​សោ។"</string>
- <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"កំពុង​ដោះ​សោ​ស៊ីមកាត..."</string>
- <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"អ្នក​បាន​គូរ​លំនាំ​ដោះ​សោ​មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER_0">%d</xliff:g> ដង។ \n\nព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER_1">%d</xliff:g> វិនាទី។"</string>
- <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="2725973286239344555">"អ្នក​បាន​បញ្ចូល​ពាក្យ​សម្ងាត់​របស់​អ្នក​មិន​ត្រឹមត្រូវ <xliff:g id="NUMBER_0">%d</xliff:g> ដង។ \n\nព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER_1">%d</xliff:g> វិនាទី។"</string>
- <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"អ្នក​បាន​បញ្ចូល​កូដ​ PIN មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER_0">%d</xliff:g> ដង។ \n\n ព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER_1">%d</xliff:g> វិនាទី។"</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"អ្នក​បាន​គូរ​លំនាំ​ដោះ​សោ​របស់​អ្នក​មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER_0">%d</xliff:g> ដង។ បន្ទាប់​ពី​ការ​ព្យាយាម​មិន​ជោគជ័យ​​ច្រើន​ជាង <xliff:g id="NUMBER_1">%d</xliff:g> ដង អ្នក​នឹង​ត្រូវ​បាន​ស្នើ​ឲ្យ​ដោះ​សោ​​កុំព្យូទ័រ​បន្ទះ​​របស់​អ្នក ដោយ​ប្រើ​ការ​ចូល​ក្នុង​គណនី Google របស់​អ្នក។\n\n សូម​ព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER_2">%d</xliff:g> វិនាទី។"</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"អ្នក​បាន​គូរ​លំនាំ​ដោះ​សោ​របស់​អ្នក​មិន​ត្រឹមត្រូវ <xliff:g id="NUMBER_0">%d</xliff:g> ដង។ បន្ទាប់​ពី​ការ​ព្យាយាម​មិន​ជោគជ័យ <xliff:g id="NUMBER_1">%d</xliff:g> ដង​ទៀត អ្នក​នឹង​ត្រូវ​បាន​ស្នើ​ឲ្យ​ដោះ​សោ​ទូរស័ព្ទ​របស់​អ្នក​ដោយ​ប្រើ​ការ​ចូល​ Google ។\n\n ព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER_2">%d</xliff:g> វិនាទី។"</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"អ្នក​បាន​ព្យាយាម​ដោះ​សោ​កុំព្យូទ័រ​បន្ទះ​មិន​ត្រឹមត្រូវ <xliff:g id="NUMBER_0">%d</xliff:g> ដង។ បន្ទាប់​ពី​ការ​ព្យាយាម​មិន​ជោគជ័យ​ <xliff:g id="NUMBER_1">%d</xliff:g> ដង​ទៀត កុំព្យូទ័រ​បន្ទះ​នឹង​ត្រូវ​បាន​កំណត់​ដូច​ចេញ​ពី​រោងចក្រ​ឡើងវិញ ហើយ​ទិន្នន័យ​អ្នក​ប្រើ​ទាំងអស់​នឹង​បាត់បង់។"</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"អ្នក​បាន​ព្យាយាម​​ដោះ​សោ​​ទូរស័ព្ទ​មិន​ត្រឹមត្រូវ​ <xliff:g id="NUMBER_0">%d</xliff:g> ដង។ បន្ទាប់​ពី​ការ​ព្យាយាម​មិន​ជោគជ័យ <xliff:g id="NUMBER_1">%d</xliff:g> ទូរស័ព្ទ​នឹង​ត្រូវ​បាន​កំណត់​ដូច​ចេញ​ពី​រោងចក្រ​ឡើងវិញ ហើយ​បាត់បង់​ទិន្នន័យ​អ្នក​ប្រើ​ទាំងអស់។"</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"អ្នក​បាន​ព្យាយាម​ដោះ​សោ​កុំព្យូទ័រ​បន្ទះ​មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER">%d</xliff:g> ដង។ ឥឡូវ​កុំព្យូទ័រ​បន្ទះ​នឹង​កំណត់​ទៅ​លំនាំដើម​ដូច​ចេញ​ពី​រោង​ចក្រ។"</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"អ្នក​បាន​ព្យាយាម​ដោះ​សោ​ទូរស័ព្ទ​មិន​ត្រឹមត្រូវ <xliff:g id="NUMBER">%d</xliff:g> ដង។ ឥឡូវ​ទូរស័ព្ទ​ត្រូវ​បាន​កំណត់​ទៅ​លំនាំដើម​​ដូច​ចេញ​ពី​រោងចក្រ។"</string>
- <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"ព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ <xliff:g id="NUMBER">%d</xliff:g> វិនាទី​។"</string>
- <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"ភ្លេច​លំនាំ​?"</string>
- <string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"ដោះ​សោ​គណនី"</string>
- <string name="lockscreen_glogin_too_many_attempts" msgid="2751368605287288808">"ព្យាយាម​លំនាំ​ច្រើន​ពេក"</string>
- <string name="lockscreen_glogin_instructions" msgid="3931816256100707784">"ដើម្បី​ដោះ​សោ ចូល​គណនី Google របស់​អ្នក។"</string>
- <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"ឈ្មោះ​អ្នក​ប្រើ (អ៊ីមែល​)"</string>
- <string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">"ពាក្យសម្ងាត់"</string>
- <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"ចូល"</string>
- <string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"ឈ្មោះ​អ្នកប្រើ ឬ​ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ។"</string>
- <string name="lockscreen_glogin_account_recovery_hint" msgid="1696924763690379073">"ភ្លេច​ឈ្មោះ​អ្នក​ប្រើ ឬ​ពាក្យ​សម្ងាត់​របស់​អ្នក?\nមើល "<b>"google.com/accounts/recovery"</b>" ។"</string>
- <string name="lockscreen_glogin_checking_password" msgid="7114627351286933867">"កំពុង​ពិនិត្យ..."</string>
- <string name="lockscreen_unlock_label" msgid="737440483220667054">"ដោះ​សោ"</string>
- <string name="lockscreen_sound_on_label" msgid="9068877576513425970">"បើក​សំឡេង"</string>
- <string name="lockscreen_sound_off_label" msgid="996822825154319026">"បិទសំឡេង"</string>
- <string name="lockscreen_access_pattern_start" msgid="3941045502933142847">"បាន​ចាប់​ផ្ដើម​លំនាំ"</string>
- <string name="lockscreen_access_pattern_cleared" msgid="5583479721001639579">"បាន​សម្អាត​លំនាំ"</string>
- <string name="lockscreen_access_pattern_cell_added" msgid="6756031208359292487">"បាន​បន្ថែម​ក្រឡា"</string>
- <string name="lockscreen_access_pattern_detected" msgid="4988730895554057058">"បាន​បញ្ចប់​លំនាំ"</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. ធាតុ​ក្រាហ្វិក %2$d នៃ %3$d ។"</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"បន្ថែម​ធាតុ​ក្រាហ្វិក​។"</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"ទទេ"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"បាន​ពង្រីក​ផ្ទៃ​ដោះ​សោ។"</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"បាន​បង្រួម​ផ្ទៃ​ដោះ​សោ។"</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ធាតុ​ក្រាហ្វិក។"</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"ឧបករណ៍​ជ្រើស​អ្នក​ប្រើ"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"ស្ថានភាព"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"ម៉ាស៊ីន​ថត"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"ពិនិត្យ​មេឌៀ"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"បាន​ចាប់ផ្ដើម​តម្រៀប​ធាតុ​ក្រាហ្វិក​ឡើងវិញ។"</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"បាន​បញ្ចប់​ការ​បង្ហាញ​ធាតុ​ក្រាហ្វិក។"</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"បាន​លុប​ធាតុ​ក្រាហ្វិក <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ។"</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"ពង្រីក​តំបន់​ដោះ​សោ។"</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"រុញ​ដោះ​សោ។"</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"លំនាំ​ដោះ​សោ​។"</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"ដោះ​សោ​តាម​​ទម្រង់​មុខ។"</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"កូដ PIN ដោះ​សោ។"</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"ពាក្យ​សម្ងាត់​ដោះ​សោ​។"</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"ផ្ទៃ​លំនាំ។"</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"ផ្ទៃ​រុញ។"</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="granularity_label_character" msgid="7336470535385009523">"តួអក្សរ"</string>
- <string name="granularity_label_word" msgid="7075570328374918660">"ពាក្យ"</string>
- <string name="granularity_label_link" msgid="5815508880782488267">"តំណ"</string>
- <string name="granularity_label_line" msgid="5764267235026120888">"បន្ទាត់"</string>
- <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string>
- <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string>
- <string name="factorytest_failed" msgid="5410270329114212041">"បាន​បរាជ័យ​ក្នុង​ការ​សាកល្បង​រោងចក្រ"</string>
- <string name="factorytest_not_system" msgid="4435201656767276723">"សកម្មភាព FACTORY_TEST ត្រូវ​បាន​គាំទ្រ​សម្រាប់​តែ​កញ្ចប់​បាន​ដំឡើង​ក្នុង /system/app."</string>
- <string name="factorytest_no_action" msgid="872991874799998561">"រក​មិន​ឃើញ​កញ្ចប់​ដែល​ផ្ដល់​សកម្មភាព FACTORY_TEST ។"</string>
- <string name="factorytest_reboot" msgid="6320168203050791643">"ចាប់​ផ្ដើម​ឡើង​វិញ"</string>
- <string name="js_dialog_title" msgid="1987483977834603872">"ទំព័រ​មាន​ចំណងជើង \"<xliff:g id="TITLE">%s</xliff:g>\" សរសេរ៖"</string>
- <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
- <string name="js_dialog_before_unload_title" msgid="2619376555525116593">"បញ្ជាក់​ការ​រុករក"</string>
- <string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"ចាកចេញ​ពី​ទំព័រ​នេះ"</string>
- <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"នៅ​លើ​ទំព័រ​នេះ"</string>
- <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nតើ​អ្នក​ប្រាកដ​ជា​ចង់​ចេញ​ពី​ទំព័រ​នេះ​ឬ?"</string>
- <string name="save_password_label" msgid="6860261758665825069">"បញ្ជាក់"</string>
- <string name="double_tap_toast" msgid="4595046515400268881">"ជំនួយ៖ ប៉ះ​ពីរ​ដង ដើម្បី​ពង្រីក និង​បង្រួម។"</string>
- <string name="autofill_this_form" msgid="4616758841157816676">"បំពេញ​ស្វ័យ​ប្រវត្តិ"</string>
- <string name="setup_autofill" msgid="7103495070180590814">"រៀបចំ​ការ​បំពេញ​ស្វ័យ​ប្រវត្តិ"</string>
- <string name="autofill_address_name_separator" msgid="6350145154779706772">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3268041054899214945">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="7483307893170324129">", "</string>
- <string name="autofill_address_summary_format" msgid="4874459455786827344">"$1$2$3"</string>
- <string name="autofill_province" msgid="2231806553863422300">"ខេត្ត"</string>
- <string name="autofill_postal_code" msgid="4696430407689377108">"លេខ​ប្រៃសណីយ៍"</string>
- <string name="autofill_state" msgid="6988894195520044613">"រដ្ឋ"</string>
- <string name="autofill_zip_code" msgid="8697544592627322946">"កូដ​តំបន់"</string>
- <string name="autofill_county" msgid="237073771020362891">"ប្រទេស"</string>
- <string name="autofill_island" msgid="4020100875984667025">"កោះ"</string>
- <string name="autofill_district" msgid="8400735073392267672">"ស្រុក"</string>
- <string name="autofill_department" msgid="5343279462564453309">"ផ្នែក"</string>
- <string name="autofill_prefecture" msgid="2028499485065800419">"Prefecture"</string>
- <string name="autofill_parish" msgid="8202206105468820057">"Parish"</string>
- <string name="autofill_area" msgid="3547409050889952423">"តំបន់"</string>
- <string name="autofill_emirate" msgid="2893880978835698818">"Emirate"</string>
- <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"អាន​ប្រវត្តិ និង​ចំណាំ​បណ្ដាញ"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="8462378226600439658">"ឲ្យ​កម្មវិធី​អាន​ប្រវត្តិ URLs ទាំង​អស់​ដែល​កម្មវិធី​អ៊ីនធឺណិត​បាន​ទស្សនា ព្រម​ទាំង​ចំណាំ​របស់​​កម្មវិធី​អ៊ីនធឺណិត។ ចំណាំ៖ សិទ្ធិ​នេះ​​មិន​អាច​ត្រូវ​បាន​អនុវត្ត​ដោយ​កម្មវិធី​អ៊ីនធឺណិត​ភាគី​ទីបី ឬ​កម្មវិធី​ដែល​មាន​សមត្ថភាព​រុករក​បណ្ដាញ។"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"សរសេរ​ចំណាំ និង​ប្រវត្តិ​បណ្ដាញ"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="6825527469145760922">"ឲ្យ​កម្មវិធី​កែ​ប្រវត្តិ​កម្មវិធី​អ៊ីនធឺណិត ឬ​ចំណាំ​ដែល​មាន​ក្នុង​កុំព្យូទ័រ​បន្ទះ​របស់​អ្នក។ វា​អាច​ឲ្យ​កម្មវិធី​លុប ឬ​កែ​​ទិន្នន័យ​កម្មវិធី​អ៊ីនធឺណិត។ ចំណាំ៖ សិទ្ធិ​នេះ​​អាច​កត់​សម្គាល់​ថា​ត្រូវ​បាន​អនុវត្ត​ដោយ​កម្មវិធី​អ៊ីនធឺណិត​ភាគី​ទី​បី ឬ​កម្មវិធី​ផ្សេង​ដែល​មាន​សមត្ថភាព​​រុករក​បណ្ដាញ។"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"ឲ្យ​កម្មវិធី​កែ​ប្រវត្តិ ឬ​ចំណាំ​របស់​កម្មវិធី​អ៊ីនធឺណិត​ដែល​បាន​រក្សាទុក​ក្នុង​ទូរស័ព្ទ​​របស់​អ្នក។ កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា​ដើម្បី​លុប ឬ​កែ​ទិន្នន័យ​នៃ​កម្មវិធី​អ៊ីនធឺណិត​របស់​អ្នក។ ចំណាំ៖ សិទ្ធិ​នេះ​អាច​ត្រូវ​បាន​បង្ខំ​ដោយ​កម្មវិធី​អ៊ីនធឺណិត​​ភាគី​ទីបី​ ឬ​​កម្មវិធី​ផ្សេង​ដែល​មាន​សមត្ថភាព​រុករក​បណ្ដាញ។ស"</string>
- <string name="permlab_setAlarm" msgid="1379294556362091814">"កំណត់​សំឡេង​រោទ៍"</string>
- <string name="permdesc_setAlarm" msgid="316392039157473848">"ឲ្យ​កម្មវិធី​កំណត់​​សំឡេង​រោទ៍​ក្នុង​កម្មវិធី​នាឡិកា​រោទ៍​បាន​ដំឡើង។​ កម្មវិធី​នាឡិកា​រោទ៍​មួយ​ចំនួន​អាច​មិន​អនុវត្ត​លក្ខណៈ​នេះ។"</string>
- <string name="permlab_addVoicemail" msgid="5525660026090959044">"បន្ថែម​សារ​ជា​សំឡេង"</string>
- <string name="permdesc_addVoicemail" msgid="6604508651428252437">"ឲ្យ​កម្មវិធី​បន្ថែម​សារ​ទៅ​ប្រអប់​ទទួល​សារ​ជា​សំឡេង​របស់​អ្នក។"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"កែ​សិទ្ធិ​ទីតាំង​ភូមិសាស្ត្រ​របស់​​កម្មវិធី​អ៊ីនធឺណិត"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"ឲ្យ​កម្មវិធី​កែ​​សិទ្ធិ​ទី​តាំង​ភូមិសាស្ត្រ​របស់​កម្មវិធី​អ៊ីនធឺណិត។ កម្មវិធី​ព្យាបាទ​អាច​ប្រើ​វា ដើម្បី​ឲ្យ​ផ្ញើ​ព័ត៌មាន​ទីតាំង​ទៅ​តំបន់បណ្ដាញ​ដោយ​បំពាន។"</string>
- <string name="permlab_packageVerificationAgent" msgid="5568139100645829117">"ផ្ទៀងផ្ទាត់​កញ្ចប់"</string>
- <string name="permdesc_packageVerificationAgent" msgid="8437590190990843381">"ឲ្យ​កម្មវិធី​ផ្ទៀងផ្ទាត់​កញ្ចប់​ដែល​អាច​ដំឡើង​បាន។"</string>
- <string name="permlab_bindPackageVerifier" msgid="4187786793360326654">"ចង​ទៅ​កម្មវិធី​ផ្ទៀងផ្ទាត់​កញ្ចប់"</string>
- <string name="permdesc_bindPackageVerifier" msgid="3180741773233862126">"ឲ្យ​ម្ចាស់​ស្នើ​កម្មវិធី​ផ្ទៀងផ្ទាត់​កញ្ចប់។ មិន​គួរ​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_serialPort" msgid="546083327654631076">"ចូល​ដំណើរការ​ច្រក​ស៊េរី"</string>
- <string name="permdesc_serialPort" msgid="2991639985224598193">"អនុញ្ញាត​ឱ្យ​ចូល​ដំណើរ​ការ​ទៅ​កាន់​ច្រក​សៀរៀល​ដោយ​ប្រើ SerialManager API ។"</string>
- <string name="permlab_accessContentProvidersExternally" msgid="5077774297943409285">"ចូល​ដំណើរការ​ក្រុមហ៊ុន​ផ្ដល់​មាតិកា​ខាង​ក្រៅ"</string>
- <string name="permdesc_accessContentProvidersExternally" msgid="4544346486697853685">"ឲ្យ​ម្ចាស់​ចូល​ដំណើរការ​ក្រុមហ៊ុន​ផ្ដល់​មាតិកា​ពី​សែល។ មិន​គួរ​ចាំបាច់​សម្រាប់​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_updateLock" msgid="3527558366616680889">"ការ​ពារ​បច្ចុប្បន្នភាព​ឧបករណ៍​ស្វ័យ​ប្រវត្តិ"</string>
- <string name="permdesc_updateLock" msgid="1655625832166778492">"ឲ្យ​ម្ចាស់​ផ្ដល់​ព័ត៌មាន​ទៅ​ប្រព័ន្ធ​អំពី​ពេលវេលា​ដែល​ល្អ​សម្រាប់​ចាប់ផ្ដើម​ឡើងវិញ​ដោយ​គ្មាន​អន្តរកម្ម ដើម្បី​ធ្វើ​បច្ចុប្បន្ន​ឧបករណ៍។"</string>
- <string name="save_password_message" msgid="767344687139195790">"តើ​អ្នក​ចង់​ឲ្យ​កម្មវិធី​អ៊ីនធឺណិត​ចងចាំ​ពាក្យ​សម្ងាត់​នេះ?"</string>
- <string name="save_password_notnow" msgid="6389675316706699758">"មិនមែន​ឥឡូវ"</string>
- <string name="save_password_remember" msgid="6491879678996749466">"ចងចាំ"</string>
- <string name="save_password_never" msgid="8274330296785855105">"កុំ"</string>
- <string name="open_permission_deny" msgid="7374036708316629800">"អ្នក​មិន​មាន​សិទ្ធិ ដើម្បី​បើក​ទំព័រ​នេះ។"</string>
- <string name="text_copied" msgid="4985729524670131385">"បាន​ចម្លង​អត្ថបទ​ទៅ​ក្ដារ​តម្បៀត​ខ្ទាស់។"</string>
- <string name="more_item_label" msgid="4650918923083320495">"ច្រើន​ទៀត"</string>
- <string name="prepend_shortcut_label" msgid="2572214461676015642">"ម៉ឺនុយ +"</string>
- <string name="menu_space_shortcut_label" msgid="2410328639272162537">"ដកឃ្លា"</string>
- <string name="menu_enter_shortcut_label" msgid="2743362785111309668">"enter"</string>
- <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"លុប"</string>
- <string name="search_go" msgid="8298016669822141719">"ស្វែងរក"</string>
- <string name="searchview_description_search" msgid="6749826639098512120">"ស្វែងរក"</string>
- <string name="searchview_description_query" msgid="5911778593125355124">"ស្វែងរក​សំណួរ"</string>
- <string name="searchview_description_clear" msgid="1330281990951833033">"សម្អាត​សំណួរ"</string>
- <string name="searchview_description_submit" msgid="2688450133297983542">"ដាក់​​​ស្នើ​សំណួរ"</string>
- <string name="searchview_description_voice" msgid="2453203695674994440">"ការស្វែងរក​សំឡេង"</string>
- <string name="enable_explore_by_touch_warning_title" msgid="7460694070309730149">"បើក​ការ​រក​មើល ដោយ​ប៉ះ?"</string>
- <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="8655887539089910577">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>ចង់​បើក​ការ​រុករ​ក​ដោយ​ប៉ះ។ ពេល​រុករក​ដោយ​ប៉ះ​ត្រូវ​បាន​បើក​​ អ្នក​អាច​ស្ដាប់​ឮ​ ឬ​ឃើញ​ការ​ពណ៌នា​អ្វី​ដែល​នៅ​ក្រោម​ម្រាមដៃ​របស់​អ្នក​​ ឬ​អនុវត្ត​កាយវិការ​ដើម្បី​មាន​អន្តរកម្ម​ជា​មួយ​កុំព្យូទ័រ​បន្ទះ។"</string>
- <string name="enable_explore_by_touch_warning_message" product="default" msgid="2708199672852373195">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> ចង់​បើក​ការ​រុករ​ក​ដោយ​ប៉ះ។ ពេល​រុករក​ដោយ​ប៉ះ​ត្រូវ​បាន​បើក​​ អ្នក​អាច​ស្ដាប់​ឮ​ ឬ​ឃើញ​ការ​ពណ៌នា​អ្វី​ដែល​នៅ​ក្រោម​ម្រាមដៃ​របស់​អ្នក​​ ឬ​អនុវត្ត​កាយវិការ​ដើម្បី​មាន​អន្តរកម្ម​ជា​មួយ​ទូរស័ព្ទ។"</string>
- <string name="oneMonthDurationPast" msgid="7396384508953779925">"1 ខែ​មុន"</string>
- <string name="beforeOneMonthDurationPast" msgid="909134546836499826">"មុន​ពេល ១ ខែ​មុន"</string>
- <plurals name="num_seconds_ago">
- <item quantity="one" msgid="4869870056547896011">"១ វិនាទី​មុន"</item>
- <item quantity="other" msgid="3903706804349556379">"<xliff:g id="COUNT">%d</xliff:g> វិនាទី​មុន"</item>
- </plurals>
- <plurals name="num_minutes_ago">
- <item quantity="one" msgid="3306787433088810191">"១ នាទី​មុន"</item>
- <item quantity="other" msgid="2176942008915455116">"<xliff:g id="COUNT">%d</xliff:g> នាទី​​មុន"</item>
- </plurals>
- <plurals name="num_hours_ago">
- <item quantity="one" msgid="9150797944610821849">"១ ម៉ោង​មុន"</item>
- <item quantity="other" msgid="2467273239587587569">"<xliff:g id="COUNT">%d</xliff:g> ម៉ោង​មុន"</item>
- </plurals>
- <plurals name="last_num_days">
- <item quantity="other" msgid="3069992808164318268">"<xliff:g id="COUNT">%d</xliff:g> ថ្ងៃ​ចុងក្រោយ"</item>
- </plurals>
- <string name="last_month" msgid="3959346739979055432">"ខែ​មុន"</string>
- <string name="older" msgid="5211975022815554840">"ចាស់​ជាង"</string>
- <plurals name="num_days_ago">
- <item quantity="one" msgid="861358534398115820">"ម្សិលមិញ"</item>
- <item quantity="other" msgid="2479586466153314633">"<xliff:g id="COUNT">%d</xliff:g> ថ្ងៃ​មុន"</item>
- </plurals>
- <plurals name="in_num_seconds">
- <item quantity="one" msgid="2729745560954905102">"ក្នុង​រយៈ​ពេល ១ វិនាទី"</item>
- <item quantity="other" msgid="1241926116443974687">"ក្នុង​រយៈ​ពេល <xliff:g id="COUNT">%d</xliff:g> វិនាទី"</item>
- </plurals>
- <plurals name="in_num_minutes">
- <item quantity="one" msgid="8793095251325200395">"ក្នុង​រយៈពេល ១ នាទី"</item>
- <item quantity="other" msgid="3330713936399448749">"រយៈពេល <xliff:g id="COUNT">%d</xliff:g> នាទី"</item>
- </plurals>
- <plurals name="in_num_hours">
- <item quantity="one" msgid="7164353342477769999">"រយៈពេល ១ ម៉ោង"</item>
- <item quantity="other" msgid="547290677353727389">"រយៈពេល <xliff:g id="COUNT">%d</xliff:g> ម៉ោង"</item>
- </plurals>
- <plurals name="in_num_days">
- <item quantity="one" msgid="5413088743009839518">"ថ្ងៃស្អែក"</item>
- <item quantity="other" msgid="5109449375100953247">"រយៈពេល <xliff:g id="COUNT">%d</xliff:g> ថ្ងៃ"</item>
- </plurals>
- <plurals name="abbrev_num_seconds_ago">
- <item quantity="one" msgid="1849036840200069118">"១ វិនាទី​មុន"</item>
- <item quantity="other" msgid="3699169366650930415">"<xliff:g id="COUNT">%d</xliff:g> វិនាទី​មុន"</item>
- </plurals>
- <plurals name="abbrev_num_minutes_ago">
- <item quantity="one" msgid="6361490147113871545">"១ នាទី​មុន"</item>
- <item quantity="other" msgid="851164968597150710">"<xliff:g id="COUNT">%d</xliff:g> នាទី​​មុន"</item>
- </plurals>
- <plurals name="abbrev_num_hours_ago">
- <item quantity="one" msgid="4796212039724722116">"១ ម៉ោង​មុន"</item>
- <item quantity="other" msgid="6889970745748538901">"<xliff:g id="COUNT">%d</xliff:g> ម៉ោង​មុន"</item>
- </plurals>
- <plurals name="abbrev_num_days_ago">
- <item quantity="one" msgid="8463161711492680309">"ម្សិលមិញ"</item>
- <item quantity="other" msgid="3453342639616481191">"<xliff:g id="COUNT">%d</xliff:g> ថ្ងៃ​​មុន"</item>
- </plurals>
- <plurals name="abbrev_in_num_seconds">
- <item quantity="one" msgid="5842225370795066299">"ក្នុង​ពេល​ 1 វិនាទី"</item>
- <item quantity="other" msgid="5495880108825805108">"ក្នុង​ពេល <xliff:g id="COUNT">%d</xliff:g> វិនាទី"</item>
- </plurals>
- <plurals name="abbrev_in_num_minutes">
- <item quantity="one" msgid="562786149928284878">"ក្នុង​ពេល 1 នាទី"</item>
- <item quantity="other" msgid="4216113292706568726">"នៅ​រយៈពេល <xliff:g id="COUNT">%d</xliff:g> នាទី"</item>
- </plurals>
- <plurals name="abbrev_in_num_hours">
- <item quantity="one" msgid="3274708118124045246">"ក្នុង​រយៈ​ពេល ១ ម៉ោង"</item>
- <item quantity="other" msgid="3705373766798013406">"ក្នុង​រយៈ​ពេល <xliff:g id="COUNT">%d</xliff:g> ម៉ោង"</item>
- </plurals>
- <plurals name="abbrev_in_num_days">
- <item quantity="one" msgid="2178576254385739855">"ថ្ងៃស្អែក"</item>
- <item quantity="other" msgid="2973062968038355991">"ក្នុង​រយៈ​ពេល <xliff:g id="COUNT">%d</xliff:g> ថ្ងៃ"</item>
- </plurals>
- <string name="preposition_for_date" msgid="9093949757757445117">"នៅ <xliff:g id="DATE">%s</xliff:g>"</string>
- <string name="preposition_for_time" msgid="5506831244263083793">"នៅ​ម៉ោង <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="preposition_for_year" msgid="5040395640711867177">"ក្នុង​ឆ្នាំ <xliff:g id="YEAR">%s</xliff:g>"</string>
- <string name="day" msgid="8144195776058119424">"ថ្ងៃ"</string>
- <string name="days" msgid="4774547661021344602">"​ថ្ងៃ"</string>
- <string name="hour" msgid="2126771916426189481">"ម៉ោង"</string>
- <string name="hours" msgid="894424005266852993">"ម៉ោង"</string>
- <string name="minute" msgid="9148878657703769868">"នាទី"</string>
- <string name="minutes" msgid="5646001005827034509">"នាទី"</string>
- <string name="second" msgid="3184235808021478">"វិនាទី"</string>
- <string name="seconds" msgid="3161515347216589235">"វិនាទី"</string>
- <string name="week" msgid="5617961537173061583">"សប្ដាហ៍"</string>
- <string name="weeks" msgid="6509623834583944518">"សប្ដាហ៍"</string>
- <string name="year" msgid="4001118221013892076">"ឆ្នាំ"</string>
- <string name="years" msgid="6881577717993213522">"ឆ្នាំ"</string>
- <plurals name="duration_seconds">
- <item quantity="one" msgid="6962015528372969481">"1 វិនាទី"</item>
- <item quantity="other" msgid="1886107766577166786">"<xliff:g id="COUNT">%d</xliff:g> វិនាទី"</item>
- </plurals>
- <plurals name="duration_minutes">
- <item quantity="one" msgid="4915414002546085617">"១ នាទី"</item>
- <item quantity="other" msgid="3165187169224908775">"<xliff:g id="COUNT">%d</xliff:g> នាទី"</item>
- </plurals>
- <plurals name="duration_hours">
- <item quantity="one" msgid="8917467491248809972">"១ ម៉ោង"</item>
- <item quantity="other" msgid="3863962854246773930">"<xliff:g id="COUNT">%d</xliff:g> ម៉ោង"</item>
- </plurals>
- <string name="VideoView_error_title" msgid="3534509135438353077">"បញ្ហា​វីដេអូ"</string>
- <string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"វីដេអូ​នេះ​មិន​ត្រឹមត្រូវ​សម្រាប់​​ចរន្ត​ចូល​ឧបករណ៍​នេះ។"</string>
- <string name="VideoView_error_text_unknown" msgid="3450439155187810085">"មិន​អាច​ចាក់​វីដេអូ​នេះ។"</string>
- <string name="VideoView_error_button" msgid="2822238215100679592">"យល់​ព្រម"</string>
- <string name="relative_time" msgid="1818557177829411417">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
- <string name="noon" msgid="7245353528818587908">"រសៀល"</string>
- <string name="Noon" msgid="3342127745230013127">"រសៀល"</string>
- <string name="midnight" msgid="7166259508850457595">"កណ្ដាលអធ្រាត្រ"</string>
- <string name="Midnight" msgid="5630806906897892201">"កណ្ដាល​អធ្រាត្រ"</string>
- <string name="elapsed_time_short_format_mm_ss" msgid="4431555943828711473">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
- <string name="elapsed_time_short_format_h_mm_ss" msgid="1846071997616654124">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
- <string name="selectAll" msgid="6876518925844129331">"ជ្រើស​ទាំងអស់"</string>
- <string name="cut" msgid="3092569408438626261">"កាត់"</string>
- <string name="copy" msgid="2681946229533511987">"ចម្លង"</string>
- <string name="paste" msgid="5629880836805036433">"បិទ​ភ្ជាប់"</string>
- <string name="replace" msgid="5781686059063148930">"ជំនួស..."</string>
- <string name="delete" msgid="6098684844021697789">"លុប"</string>
- <string name="copyUrl" msgid="2538211579596067402">"ចម្លង URL"</string>
- <string name="selectTextMode" msgid="1018691815143165326">"ជ្រើស​អត្ថបទ"</string>
- <string name="textSelectionCABTitle" msgid="5236850394370820357">"ការ​ជ្រើស​អត្ថបទ"</string>
- <string name="addToDictionary" msgid="4352161534510057874">"បន្ថែម​ទៅ​វចនានុក្រម"</string>
- <string name="deleteText" msgid="6979668428458199034">"លុប"</string>
- <string name="inputMethod" msgid="1653630062304567879">"វិធីសាស្ត្រ​បញ្ចូល"</string>
- <string name="editTextMenuTitle" msgid="4909135564941815494">"សកម្មភាព​អត្ថបទ"</string>
- <string name="low_internal_storage_view_title" msgid="5576272496365684834">"អស់​ទំហំ​ផ្ទុក"</string>
- <string name="low_internal_storage_view_text" msgid="6640505817617414371">"មុខងារ​ប្រព័ន្ធ​មួយ​ចំនួន​អាច​មិន​ដំណើរការ"</string>
- <string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> កំពុង​ដំណើរការ"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"ប៉ះ​ ដើម្បី​មើល​ព័ត៌មាន​បន្ថែម ឬ​បញ្ឈប់​កម្មវិធី។"</string>
- <string name="ok" msgid="5970060430562524910">"យល់​ព្រម"</string>
- <string name="cancel" msgid="6442560571259935130">"បោះ​បង់"</string>
- <string name="yes" msgid="5362982303337969312">"យល់​ព្រម"</string>
- <string name="no" msgid="5141531044935541497">"បោះ​បង់"</string>
- <string name="dialog_alert_title" msgid="2049658708609043103">"ប្រយ័ត្ន"</string>
- <string name="loading" msgid="7933681260296021180">"កំពុង​ផ្ទុក..."</string>
- <string name="capital_on" msgid="1544682755514494298">"បើក"</string>
- <string name="capital_off" msgid="6815870386972805832">"បិទ"</string>
- <string name="whichApplication" msgid="4533185947064773386">"បញ្ចប់​សកម្មភាព​ដោយ​ប្រើ"</string>
- <string name="alwaysUse" msgid="4583018368000610438">"ប្រើ​តាម​លំនាំដើម​សម្រាប់​សកម្មភាព​នេះ។"</string>
- <string name="clearDefaultHintMsg" msgid="3252584689512077257">"សម្អាត​លំនាំដើម​ក្នុង​ការកំណត់​ប្រព័ន្ធ &gt; កម្មវិធី &gt; ទាញ​យក។"</string>
- <string name="chooseActivity" msgid="7486876147751803333">"ជ្រើស​សកម្មភាព"</string>
- <string name="chooseUsbActivity" msgid="6894748416073583509">"ជ្រើស​កម្មវិធី​សម្រាប់​ឧបករណ៍​យូអេសប៊ី"</string>
- <string name="noApplications" msgid="2991814273936504689">"គ្មាន​កម្មវិធី​អាច​អនុវត្ត​សកម្មភាព​នេះ។"</string>
- <string name="aerr_title" msgid="1905800560317137752"></string>
- <string name="aerr_application" msgid="932628488013092776">"ដោយ​បរាជ័យ <xliff:g id="APPLICATION">%1$s</xliff:g> បាន​បញ្ឈប់។"</string>
- <string name="aerr_process" msgid="4507058997035697579">"ជា​អកុសល ដំណើរការ <xliff:g id="PROCESS">%1$s</xliff:g> បាន​បញ្ឈប់។"</string>
- <string name="anr_title" msgid="4351948481459135709"></string>
- <string name="anr_activity_application" msgid="1904477189057199066">"<xliff:g id="APPLICATION">%2$s</xliff:g> មិន​ឆ្លើយតប។\n\nតើ​អ្នក​ចង់​បិទ​វា​ឬ?"</string>
- <string name="anr_activity_process" msgid="5776209883299089767">"សកម្មភាព <xliff:g id="ACTIVITY">%1$s</xliff:g> មិន​ឆ្លើយតប។\n\nតើ​អ្នក​ចង់​បិទ​វា?"</string>
- <string name="anr_application_process" msgid="8941757607340481057">"<xliff:g id="APPLICATION">%1$s</xliff:g> មិន​ឆ្លើយតប។ តើ​អ្នក​ចង់​បិទ​វា?"</string>
- <string name="anr_process" msgid="6513209874880517125">"ដំណើរការ <xliff:g id="PROCESS">%1$s</xliff:g> មិន​ឆ្លើយតប។ \n\nតើ​អ្នក​ចង់​បិទ​វា​ឬ?"</string>
- <string name="force_close" msgid="8346072094521265605">"យល់​ព្រម"</string>
- <string name="report" msgid="4060218260984795706">"របាយការណ៍"</string>
- <string name="wait" msgid="7147118217226317732">"រង់ចាំ"</string>
- <string name="webpage_unresponsive" msgid="3272758351138122503">"ទំព័រ​ក្លាយ​ជា​មិន​ឆ្លើយតប។\n\nតើ​អ្នក​​ចង់​បិទ​វា?"</string>
- <string name="launch_warning_title" msgid="1547997780506713581">"បាន​ប្ដូរ​ទិស​កម្មវិធី"</string>
- <string name="launch_warning_replace" msgid="6202498949970281412">"<xliff:g id="APP_NAME">%1$s</xliff:g> ឥឡូវ​កំពុង​ដំណើរការ។"</string>
- <string name="launch_warning_original" msgid="188102023021668683">"<xliff:g id="APP_NAME">%1$s</xliff:g> ត្រូវ​បាន​ចាប់ផ្ដើម​ពី​ដំបូង។"</string>
- <string name="screen_compat_mode_scale" msgid="3202955667675944499">"មាត្រដ្ឋាន"</string>
- <string name="screen_compat_mode_show" msgid="4013878876486655892">"បង្ហាញ​ជា​និច្ច"</string>
- <string name="screen_compat_mode_hint" msgid="1064524084543304459">"បើក​វា​ឡើងវិញ​ក្នុង​ការ​កំណត់​ប្រព័ន្ធ &gt; កម្មវិធី &gt; ទាញ​យក។"</string>
- <string name="smv_application" msgid="3307209192155442829">"កម្មវិធី <xliff:g id="APPLICATION">%1$s</xliff:g> (ដំណើរការ <xliff:g id="PROCESS">%2$s</xliff:g>) បាន​បំពាន​គោលនយោបាយ​របៀប​តឹងរ៉ឹង​អនុវត្ត​ដោយ​ខ្លួន​​ឯង។"</string>
- <string name="smv_process" msgid="5120397012047462446">"ដំណើរការ <xliff:g id="PROCESS">%1$s</xliff:g> បាន​បំពាន​គោលនយោបាយ​​របៀប​​តឹង​រឹង​​​បង្ខំ​ដោយ​ខ្លួន​ឯង"</string>
- <string name="android_upgrading_title" msgid="1584192285441405746">"Android កំពុង​ធ្វើ​បច្ចុប្បន្នភាព..."</string>
- <string name="android_upgrading_apk" msgid="7904042682111526169">"ធ្វើ​ឲ្យ​កម្មវិធី​ប្រសើរ​ឡើង <xliff:g id="NUMBER_0">%1$d</xliff:g> នៃ <xliff:g id="NUMBER_1">%2$d</xliff:g> ។"</string>
- <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>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"ប៉ះ​ ដើម្បី​ប្ដូរ​​​កម្មវិធី"</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>
- <string name="old_app_description" msgid="2082094275580358049">"កុំ​ចាប់ផ្ដើម​កម្មវិធី​ថ្មី។"</string>
- <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="sendText" msgid="5209874571959469142">"ជ្រើស​សកម្មភាព​សម្រាប់​អត្ថបទ"</string>
- <string name="volume_ringtone" msgid="6885421406845734650">"កម្រិត​សំឡេង​រោទ៍"</string>
- <string name="volume_music" msgid="5421651157138628171">"កម្រិត​សំឡេង​មេឌៀ"</string>
- <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"ចាក់​តាម​ប៊្លូធូស"</string>
- <string name="volume_music_hint_silent_ringtone_selected" msgid="8310739960973156272">"កំណត់​សំឡេង​រោទ៍​ស្ងាត់"</string>
- <string name="volume_call" msgid="3941680041282788711">"កម្រិត​សំឡេង​ហៅ​ចូល"</string>
- <string name="volume_bluetooth_call" msgid="2002891926351151534">"កម្រិត​សំឡេង​ហៅ​ចូល​តាម​ប៊្លូធូស"</string>
- <string name="volume_alarm" msgid="1985191616042689100">"កម្រិត​សំឡេង​រោទ៍"</string>
- <string name="volume_notification" msgid="2422265656744276715">"កម្រិត​សំឡេង​ការ​ជូន​ដំណឹង"</string>
- <string name="volume_unknown" msgid="1400219669770445902">"កម្រិត​សំឡេង"</string>
- <string name="volume_icon_description_bluetooth" msgid="6538894177255964340">"កម្រិត​សំឡេង​ប៊្លូធូស"</string>
- <string name="volume_icon_description_ringer" msgid="3326003847006162496">"កម្រិត​សំឡេង​រោទ៍"</string>
- <string name="volume_icon_description_incall" msgid="8890073218154543397">"កម្រិត​សំឡេង​ហៅ"</string>
- <string name="volume_icon_description_media" msgid="4217311719665194215">"កម្រិត​សំឡេង​មេឌៀ"</string>
- <string name="volume_icon_description_notification" msgid="7044986546477282274">"កម្រិត​សំឡេង​ការ​ជូន​ដំណឹង"</string>
- <string name="ringtone_default" msgid="3789758980357696936">"សំឡេង​រោទ៍​លំនាំដើម"</string>
- <string name="ringtone_default_with_actual" msgid="8129563480895990372">"សំឡេង​រោទ៍​លំនាំដើម (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
- <string name="ringtone_silent" msgid="7937634392408977062">"គ្មាន"</string>
- <string name="ringtone_picker_title" msgid="3515143939175119094">"សំឡេង​រោទ៍"</string>
- <string name="ringtone_unknown" msgid="5477919988701784788">"សំឡេង​រោទ៍​មិន​ស្គាល់"</string>
- <plurals name="wifi_available">
- <item quantity="one" msgid="6654123987418168693">"មាន​បណ្ដាញ​វ៉ាយហ្វាយ"</item>
- <item quantity="other" msgid="4192424489168397386">"មាន​បណ្ដាញ​វ៉ាយហ្វាយ"</item>
- </plurals>
- <plurals name="wifi_available_detailed">
- <item quantity="one" msgid="1634101450343277345">"បើក​បណ្ដាញ​វ៉ាយហ្វាយ​​ដែល​មាន"</item>
- <item quantity="other" msgid="7915895323644292768">"មាន​បណ្ដាញ​វ៉ាយហ្វាយ​បើក"</item>
- </plurals>
- <string name="wifi_available_sign_in" msgid="4029489716605255386">"ចូល​បណ្ដាញ​វ៉ាយហ្វាយ"</string>
- <string name="network_available_sign_in" msgid="8495155593358054676">"ចូល​ក្នុង​បណ្ដាញ"</string>
- <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
- <skip />
- <string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"មិន​​អាច​តភ្ជាប់​វ៉ាយហ្វាយ"</string>
- <string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" មាន​ការ​តភ្ជាប់​អ៊ីនធឺណិត​មិន​ល្អ។"</string>
- <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"វ៉ាយហ្វាយ​ផ្ទាល់"</string>
- <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>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"ប៉ះ​ ដើម្បី​កំណត់"</string>
- <string name="accept" msgid="1645267259272829559">"ទទួល"</string>
- <string name="decline" msgid="2112225451706137894">"បដិសេធ"</string>
- <string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"បា​ន​ផ្ញើ​លិខិត​អញ្ជើញ"</string>
- <string name="wifi_p2p_invitation_to_connect_title" msgid="4958803948658533637">"អញ្ជើញ​ឲ្យ​ភ្ជាប់"</string>
- <string name="wifi_p2p_from_message" msgid="570389174731951769">"ពី៖"</string>
- <string name="wifi_p2p_to_message" msgid="248968974522044099">"ទៅ៖"</string>
- <string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"បញ្ចូល​កូដ PIN ដែល​ទាមទារ៖"</string>
- <string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"កូដ PIN ៖"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="tablet" msgid="8012981257742232475">"កុំព្យូទ័រ​បន្ទះ​នឹង​ផ្ដាច់​ជា​បណ្ដោះអាសន្ន​ពី​វ៉ាយហ្វាយ ខណៈ​ដែល​វា​ភ្ជាប់​ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="default" msgid="7363907213787469151">"ទូរស័ព្ទ​នឹង​​ផ្ដាច់​ពី​វ៉ាយហ្វាយ​ខណៈ​ដែល​វា​ត្រូវ​បាន​តភ្ជាប់​ទៅ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
- <string name="select_character" msgid="3365550120617701745">"បញ្ចូល​តួអក្សរ"</string>
- <string name="sms_control_title" msgid="7296612781128917719">"ផ្ញើ​សារ SMS"</string>
- <string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; កំពុង​ផ្ញើ​សារ​ SMS មួយ​ចំនួន​ធំ។ តើ​អ្នក​ចង់​ឲ្យ​​កម្មវិធី​នេះ​បន្ត​ផ្ញើ​សារ?"</string>
- <string name="sms_control_yes" msgid="3663725993855816807">"អនុញ្ញាត"</string>
- <string name="sms_control_no" msgid="625438561395534982">"បដិសេធ"</string>
- <string name="sms_short_code_confirm_message" msgid="1645436466285310855">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ចង់​ផ្ញើ​សារ​ទៅ &lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;/b&gt; ។"</string>
- <string name="sms_short_code_details" msgid="3492025719868078457"><font fgcolor="#ffffb060">"នេះ​អាច​កាត់​លុយ"</font>" លើ​គណនី​ចល័ត​របស់​អ្នក។"</string>
- <string name="sms_premium_short_code_details" msgid="5523826349105123687"><font fgcolor="#ffffb060">"វា​នឹង​គិត​ថ្លៃ​សេវាកម្ម​លើ​គណនី​ចល័ត​របស់​អ្នក។"</font></string>
- <string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"ផ្ញើ"</string>
- <string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"បោះ​បង់"</string>
- <string name="sms_short_code_remember_choice" msgid="5289538592272218136">"ចងចាំ​ជម្រើស​របស់​ខ្ញុំ"</string>
- <string name="sms_short_code_remember_undo_instruction" msgid="4960944133052287484">"អ្នក​អាច​ប្ដូរ​វា​ពេល​ក្រោយ​ក្នុង​ការ​កំណត់ &gt; កម្មវិធី"</string>
- <string name="sms_short_code_confirm_always_allow" msgid="3241181154869493368">"អនុញ្ញាត​ជា​និច្ច"</string>
- <string name="sms_short_code_confirm_never_allow" msgid="446992765774269673">"កុំ​អនុញ្ញាត"</string>
- <string name="sim_removed_title" msgid="6227712319223226185">"បាន​ដក​ស៊ីម​កាត​ចេញ"</string>
- <string name="sim_removed_message" msgid="2333164559970958645">"បណ្ដាញ​ចល័ត​នឹង​ប្រើ​លែង​បាន​រហូត​ដល់​អ្នក​ចាប់ផ្ដើម​ជា​មួយ​ស៊ីម​កាត​ដែល​បា​បញ្ចូល​ត្រឹមត្រូវ។"</string>
- <string name="sim_done_button" msgid="827949989369963775">"រួចរាល់"</string>
- <string name="sim_added_title" msgid="3719670512889674693">"បាន​បន្ថែម​ស៊ីម​កាត"</string>
- <string name="sim_added_message" msgid="6599945301141050216">"ចាប់ផ្ដើម​ឧបករណ៍​របស់​អ្នក​ឡើង​វិញ ដើម្បី​ចូល​ដំណើរការ​បណ្ដាញ​ចល័ត។"</string>
- <string name="sim_restart_button" msgid="4722407842815232347">"ចាប់ផ្ដើម​ឡើងវិញ"</string>
- <string name="time_picker_dialog_title" msgid="8349362623068819295">"កំណត់​ម៉ោង"</string>
- <string name="date_picker_dialog_title" msgid="5879450659453782278">"កំណត់​កាល​បរិច្ឆេទ"</string>
- <string name="date_time_set" msgid="5777075614321087758">"កំណត់"</string>
- <string name="date_time_done" msgid="2507683751759308828">"រួចរាល់"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"ថ្មី៖ "</font></string>
- <string name="perms_description_app" msgid="5139836143293299417">"បាន​ផ្ដល់​ដោយ <xliff:g id="APP_NAME">%1$s</xliff:g> ។"</string>
- <string name="no_permissions" msgid="7283357728219338112">"មិន​ទាមទារ​សិទ្ធិ"</string>
- <string name="perm_costs_money" msgid="4902470324142151116">"វា​អាច​កាត់​លុយ​​អ្នក"</string>
- <string name="usb_storage_activity_title" msgid="4465055157209648641">"ឧបករណ៍​យូអេសប៊ី"</string>
- <string name="usb_storage_title" msgid="5901459041398751495">"បាន​ភ្ជាប់​យូអេសប៊ី"</string>
- <string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"អ្នក​បាន​ភ្ជាប់​កុំព្យូទ័រ​របស់​អ្នក​តាម​​យូអេសប៊ី។ ប៉ះ ប៊ូតុង​ខាង​ក្រោម បើ​អ្នក​ចង់​ចម្លង​ឯកសារ​រវាង​កុំព្យូទ័រ និង​ឧបករណ៍​ផ្ទុក Android របស់​អ្នក។"</string>
- <string name="usb_storage_message" product="default" msgid="805351000446037811">"អ្នក​បាន​ភ្ជាប់​កុំព្យូទ័រ​របស់​អ្នក​តាម​យូអេសប៊ី។ ប៉ះ ប៊ូតុង​ខាង​ក្រោម​ប្រសិន​បើ​អ្នក​ចង់​ចម្លង​ឯកសារ​រវាង​កុំព្យូទ័រ​របស់​អ្នក និង​កាត​អេសឌី​នៃ Android របស់​អ្នក។"</string>
- <string name="usb_storage_button_mount" msgid="1052259930369508235">"បើក​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី"</string>
- <string name="usb_storage_error_message" product="nosdcard" msgid="3017045217365540658">"មាន​បញ្ហា​ក្នុង​ការ​ផ្អាក​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី​សម្រាប់​ជា​ឧបករណ៍​ផ្ទុក។"</string>
- <string name="usb_storage_error_message" product="default" msgid="2876018512716970313">"មាន​បញ្ហា​ក្នុង​ការ​ប្រើ​កាត​អេសឌី​សម្រាប់​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី។"</string>
- <string name="usb_storage_notification_title" msgid="8175892554757216525">"បាន​ភ្ជាប់​យូអេសប៊ី"</string>
- <string name="usb_storage_notification_message" msgid="939822783828183763">"ប៉ះ ដើម្បី​ចម្លង​ឯកសារ​ទៅ/ពី​កុំព្យូទ័រ​របស់​​អ្នក។"</string>
- <string name="usb_storage_stop_notification_title" msgid="2336058396663516017">"បិទ​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី"</string>
- <string name="usb_storage_stop_notification_message" msgid="1656852098555623822">"ប៉ះ ដើម្បី​បិទ​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី។"</string>
- <string name="usb_storage_stop_title" msgid="660129851708775853">"ឧបករណ៍​ផ្ទុក​យូអេសប៊ី​កំពុង​ប្រើ"</string>
- <string name="usb_storage_stop_message" product="nosdcard" msgid="4264025280777219521">"មុន​ពេល​បិទ​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី ផ្ដាច់ (\"បដិសេធ\") ឧបករណ៍​ផ្ទុក​យូអេសប៊ី Android របស់​អ្នក​ពី​កុំព្យូទ័រ។"</string>
- <string name="usb_storage_stop_message" product="default" msgid="8043969782460613114">"មុន​ពេល​បិទ​​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី ផ្ដាច់ (\"បដិសេធ\") កាត​អេសឌី Android របស់​អ្នក​ពី​កុំព្យូទ័រ។"</string>
- <string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"បិទ​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី"</string>
- <string name="usb_storage_stop_error_message" msgid="1970374898263063836">"មាន​បញ្ហា​ក្នុង​ការ​បិទ​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី។ ពិនិត្យ​ថា​អ្នក​បាន​ផ្ដាច់​យូអេសប៊ី បន្ទាប់​មក​ព្យាយាម​ម្ដង​ទៀត។"</string>
- <string name="dlg_confirm_kill_storage_users_title" msgid="963039033470478697">"បើក​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី"</string>
- <string name="dlg_confirm_kill_storage_users_text" msgid="5100428757107469454">"បើ​អ្នក​បើក​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី កម្មវិធី​មួយ​ចំនួន​ដែល​អ្នក​កំពុង​ប្រើ​នឹង​បញ្ឈប់ ហើយ​អាច​ប្រើ​លែង​បាន​រហូត​ដល់​អ្នក​បិទ​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី។"</string>
- <string name="dlg_error_title" msgid="7323658469626514207">"ប្រតិបត្តិការ​យូអេសប៊ី​​បរាជ័យ"</string>
- <string name="dlg_ok" msgid="7376953167039865701">"យល់ព្រម"</string>
- <string name="usb_mtp_notification_title" msgid="3699913097391550394">"បាន​តភ្ជាប់​ជា​ឧបករណ៍​​ផ្ទុក"</string>
- <string name="usb_ptp_notification_title" msgid="1960817192216064833">"បាន​ភ្ជាប់​ជា​ម៉ាស៊ីន​ថត"</string>
- <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"បាន​ភ្ជាប់​ជា​កម្មវិធី​ដំឡើង"</string>
- <string name="usb_accessory_notification_title" msgid="7848236974087653666">"បាន​ភ្ជាប់​ឧបករណ៍​យូអេសប៊ី"</string>
- <string name="usb_notification_message" msgid="2290859399983720271">"ប៉ះ ដើម្បី​មើល​ជម្រើស​យូអេសប៊ី​ផ្សេង។"</string>
- <string name="extmedia_format_title" product="nosdcard" msgid="9020092196061007262">"ធ្វើ​ទ្រង់ទ្រាយ​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី?"</string>
- <string name="extmedia_format_title" product="default" msgid="3648415921526526069">"ធ្វើ​ទ្រង់ទ្រាយ​កាត​អេសឌី?"</string>
- <string name="extmedia_format_message" product="nosdcard" msgid="3934016853425761078">"ឯកសារ​ទាំងអស់​ដែល​បាន​រក្សាទុក​ក្នុង​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី​នឹង​ត្រូវ​បាន​លុប។ សកម្មភាព​នេះ​មិន​អាច​ត្រឡប់​វិញ​បាន​ទេ!"</string>
- <string name="extmedia_format_message" product="default" msgid="14131895027543830">"ទិន្នន័យ​ទាំងអស់​ក្នុង​កាត​របស់​អ្នក​នឹង​បាត់បង់។"</string>
- <string name="extmedia_format_button_format" msgid="4131064560127478695">"ធ្វើ​ទ្រង់ទ្រាយ"</string>
- <string name="adb_active_notification_title" msgid="6729044778949189918">"បាន​ភ្ជាប់​ការ​កែ​កំហុស​យូអេសប៊ី"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"ប៉ះ ដើម្បី​បិទ​ការ​កែ​កំហុស​យូអេសប៊ី។"</string>
- <string name="select_input_method" msgid="4653387336791222978">"ជ្រើស​វិធីសាស្ត្រ​បញ្ចូល"</string>
- <string name="configure_input_methods" msgid="9091652157722495116">"រៀបចំ​វិធីសាស្ត្រ​បញ្ចូល"</string>
- <string name="use_physical_keyboard" msgid="6203112478095117625">"ក្ដារ​ចុច​​ពិតប្រាកដ"</string>
- <string name="hardware" msgid="7517821086888990278">"ផ្នែក​រឹង"</string>
- <string name="select_keyboard_layout_notification_title" msgid="1407367017263030773">"ជ្រើស​ប្លង់​ក្ដារ​ចុច"</string>
- <string name="select_keyboard_layout_notification_message" msgid="4465907700449257063">"ប៉ះ ​ដើម្បី​ជ្រើស​ប្លង់​​ក្ដារចុច។"</string>
- <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="candidates_style" msgid="4333913089637062257"><u>"បេក្ខជន"</u></string>
- <string name="ext_media_checking_notification_title" product="nosdcard" msgid="3449816005351468560">"រៀបចំ​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី"</string>
- <string name="ext_media_checking_notification_title" product="default" msgid="5457603418970994050">"រៀបចំ​កាត​អេសឌី"</string>
- <string name="ext_media_checking_notification_message" msgid="8287319882926737053">"ពិនិត្យ​រក​កំហុស។"</string>
- <string name="ext_media_nofs_notification_title" product="nosdcard" msgid="7788040745686229307">"ឧបករណ៍​ផ្ទុក​យូអេសប៊ី​ទទេ"</string>
- <string name="ext_media_nofs_notification_title" product="default" msgid="780477838241212997">"ការ​​អេសឌី​ទទេ"</string>
- <string name="ext_media_nofs_notification_message" product="nosdcard" msgid="7840121067427269500">"ឧបករណ៍​ផ្ទុក​យូអេសប៊ី​ទទេ ឬ​មាន​ប្រព័ន្ធ​ឯកសារ​ដែល​មិន​បា​គាំទ្រ។"</string>
- <string name="ext_media_nofs_notification_message" product="default" msgid="8641065641786923604">"កាត​អេសឌី​ទទេ ឬ​មាន​ប្រព័ន្ធ​ឯកសារ​មិន​បាន​គាំទ្រ។"</string>
- <string name="ext_media_unmountable_notification_title" product="nosdcard" msgid="2090046769532713563">"ឧបករណ៍​ផ្ទុក​យូអេសប៊ី​ខូច"</string>
- <string name="ext_media_unmountable_notification_title" product="default" msgid="6410723906019100189">"កាត​អេសឌី​ខូច"</string>
- <string name="ext_media_unmountable_notification_message" product="nosdcard" msgid="1795917578395333280">"ឧបករណ៍​ផ្ទុក​យូអេសប៊ី​ខូច។ ព្យាយាម​ធ្វើ​ទ្រង់ទ្រាយ​វា​ឡើងវិញ។"</string>
- <string name="ext_media_unmountable_notification_message" product="default" msgid="1753898567525568253">"កាត​អេសឌី​ខូច។ ព្យាយាម​ធ្វើ​ទ្រង់ទ្រាយ​វា​ឡើងវិញ។"</string>
- <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"បាន​ដក​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី​ដោយ​មិន​រំពឹង​ទុក"</string>
- <string name="ext_media_badremoval_notification_title" product="default" msgid="6872152882604407837">"បាន​ដក​កាត​អេសឌី​ដោយ​មិន​រំពឹង​ទុក"</string>
- <string name="ext_media_badremoval_notification_message" product="nosdcard" msgid="4329848819865594241">"ផ្ដាច់​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី​មុន​នឹង​​លុប​​​ជៀសវាង​ការ​បាត់​ទិន្នន័យ។"</string>
- <string name="ext_media_badremoval_notification_message" product="default" msgid="7260183293747448241">"ផ្ដាច់​កាត​អេសឌី​មុន​នឹង​ដក់​ចេញ ជៀសវាង​បាត់បង់​ទិន្នន័យ។"</string>
- <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"ឧបករណ៍​យូអេសប៊ី​មាន​សុវត្ថិភាព ដើម្បី​ដក"</string>
- <string name="ext_media_safe_unmount_notification_title" product="default" msgid="6729801130790616200">"មាន​សុវត្ថិភាព​ក្នុង​ការ​ដក​កាត​អេសឌី"</string>
- <string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"អ្នក​អាច​ដក​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី​ដោយ​សុវត្ថិភាព។"</string>
- <string name="ext_media_safe_unmount_notification_message" product="default" msgid="568841278138377604">"អ្នក​អាច​ដក​កាត​អេសឌី​ដោយ​មាន​សុវត្ថិភាព។"</string>
- <string name="ext_media_nomedia_notification_title" product="nosdcard" msgid="4486377230140227651">"បាន​លុប​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី"</string>
- <string name="ext_media_nomedia_notification_title" product="default" msgid="8902518030404381318">"បាន​ដក​កាត​អេសឌី"</string>
- <string name="ext_media_nomedia_notification_message" product="nosdcard" msgid="6921126162580574143">"បាន​ដក​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី។ បញ្ចូល​មេឌៀ​ថ្មី។"</string>
- <string name="ext_media_nomedia_notification_message" product="default" msgid="3870120652983659641">"បាន​ដក​កាត​អេសឌី។ បញ្ចូល​ថ្មី​មួយ។"</string>
- <string name="activity_list_empty" msgid="1675388330786841066">"រក​មិន​ឃើញ​សកម្មភាព​ផ្គូផ្គង។"</string>
- <string name="permlab_pkgUsageStats" msgid="8787352074326748892">"ធ្វើ​បច្ចុប្បន្ន​សមាសធាតុ​ស្ថិតិ​ការ​ប្រើ"</string>
- <string name="permdesc_pkgUsageStats" msgid="1106612424254277630">"ឲ្យ​កម្មវិធី​កែ​ស្ថិតិ​ប្រើ​សមាសភាគ​ដែល​បា​ន​ប្រមូល។​​ មិន​សម្រាប់​ប្រើ​ដោយ​កម្មវិធី​ធម្មតា​ទេ។"</string>
- <string name="permlab_copyProtectedData" msgid="4341036311211406692">"ចម្លង​មាតិកា"</string>
- <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"ឲ្យ​កម្មវិធី​ដក​សេវាកម្ម​នៃ​កម្មវិធី​ផ្ទុក​​លំនាំដើម ដើម្បី​ចម្លង​មាតិកា។​ មិន​សម្រាប់​ប្រើ​ដោយ​កម្មវិធី​លំនាំដើម។"</string>
- <string name="permlab_route_media_output" msgid="1642024455750414694">"នាំ​ផ្លូវ​លទ្ធផល​មេឌៀ"</string>
- <string name="permdesc_route_media_output" msgid="4932818749547244346">"ឲ្យ​កម្មវិធី​នាំ​ផ្លូវ​លទ្ធផល​មេឌៀ​ទៅ​ឧបករណ៍​​ខាង​ក្រៅ​ផ្សេង។"</string>
- <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"ចូល​ដំណើរការ​ឧបករណ៍​ផ្ទុក​សុវត្ថិភាព"</string>
- <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"ឲ្យ​កម្មវិធី​ចូល​​ការ​ផ្ទុក​មាន​សុវត្ថិភាព keguard ។"</string>
- <string name="permlab_control_keyguard" msgid="172195184207828387">"ពិនិត្យ​ការ​បង្ហាញ និង​លាក់​ការ​ការពារ"</string>
- <string name="permdesc_control_keyguard" msgid="3043732290518629061">"ឲ្យ​កម្មវិធី​គ្រប់គ្រង keguard ។"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"ប៉ះ​ពីរ​ដង ​​ដើម្បី​គ្រប់គ្រង​ការ​ពង្រីក"</string>
- <string name="gadget_host_error_inflating" msgid="4882004314906466162">"មិន​អាច​បន្ថែម​ធាតុ​ក្រាហ្វិក។"</string>
- <string name="ime_action_go" msgid="8320845651737369027">"ទៅ"</string>
- <string name="ime_action_search" msgid="658110271822807811">"ស្វែងរក"</string>
- <string name="ime_action_send" msgid="2316166556349314424">"ផ្ញើ"</string>
- <string name="ime_action_next" msgid="3138843904009813834">"បន្ទាប់"</string>
- <string name="ime_action_done" msgid="8971516117910934605">"រួចរាល់"</string>
- <string name="ime_action_previous" msgid="1443550039250105948">"មុន"</string>
- <string name="ime_action_default" msgid="2840921885558045721">"អនុវត្ត"</string>
- <string name="dial_number_using" msgid="5789176425167573586">"ចុច​លេខ​\nដោយ​ប្រើ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="create_contact_using" msgid="4947405226788104538">"បង្កើត​ទំនាក់ទំនង\nដោយ​ប្រើ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="grant_credentials_permission_message_header" msgid="2106103817937859662">"កម្មវិធី​មួយ ឬ​ច្រើន​ដូច​ខាង​ក្រោម​ស្នើ​សិទ្ធិ ដើម្បី​ចូល​គណនី​របស់​អ្នក​ឥឡូវ និង​ពេល​អនាគត។"</string>
- <string name="grant_credentials_permission_message_footer" msgid="3125211343379376561">"តើ​អ្នក​ចង់​អនុញ្ញាត​សំណើ​នេះ?"</string>
- <string name="grant_permissions_header_text" msgid="6874497408201826708">"ស្នើ​ចូល"</string>
- <string name="allow" msgid="7225948811296386551">"អនុញ្ញាត"</string>
- <string name="deny" msgid="2081879885755434506">"បដិសេធ"</string>
- <string name="permission_request_notification_title" msgid="6486759795926237907">"បាន​ស្នើ​សិទ្ធិ"</string>
- <string name="permission_request_notification_with_subtitle" msgid="8530393139639560189">"បាន​ស្នើ​សិទ្ធិ\nសម្រាប់​គណនី <xliff:g id="ACCOUNT">%s</xliff:g> ។"</string>
- <string name="input_method_binding_label" msgid="1283557179944992649">"វិធីសាស្ត្រ​បញ្ចូល"</string>
- <string name="sync_binding_label" msgid="3687969138375092423">"ធ្វើ​សម​កាល​កម្ម"</string>
- <string name="accessibility_binding_label" msgid="4148120742096474641">"ភាព​ងាយស្រួល"</string>
- <string name="wallpaper_binding_label" msgid="1240087844304687662">"ផ្ទាំង​រូបភាព"</string>
- <string name="chooser_wallpaper" msgid="7873476199295190279">"ប្ដូរ​ផ្ទាំង​រូបភាព"</string>
- <string name="notification_listener_binding_label" msgid="2014162835481906429">"កម្មវិធី​ស្ដាប់​ការ​ជូន​ដំណឹង"</string>
- <string name="vpn_title" msgid="19615213552042827">"បាន​ធ្វើ​ឲ្យ VPN សកម្ម"</string>
- <string name="vpn_title_long" msgid="6400714798049252294">"បាន​ធ្វើ​ឲ្យ VPN សកម្ម​ដោយ <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"ប៉ះ ដើម្បី​គ្រប់គ្រង​បណ្ដាញ។"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"បាន​តភ្ជាប់​ទៅ <xliff:g id="SESSION">%s</xliff:g> ។ ប៉ះ ដើម្បី​គ្រប់គ្រង​បណ្ដាញ។"</string>
- <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>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"ប៉ះ ​ដើម្បី​កំណត់​រចនា​សម្ព័ន្ធ"</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>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"ប៉ះ​ ដើម្បី​ចេញ​ពី​របៀប​រថយន្ត​។"</string>
- <string name="tethered_notification_title" msgid="3146694234398202601">"​ភ្ជាប់ ឬ​ hotspot សកម្ម"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"ប៉ះ​ ដើម្បី​រៀបចំ។"</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>
- <string name="throttle_warning_notification_title" msgid="4890894267454867276">"ការ​ប្រើ​ទិន្នន័យ​ចល័ត​ខ្ពស់"</string>
- <string name="throttle_warning_notification_message" msgid="3340822228599337743">"ប៉ះ​ ដើម្បី​​ស្វែងយល់​បន្ថែម​អំពី​ការ​ប្រើ​​​ទិន្នន័យ​ចល័ត​។"</string>
- <string name="throttled_notification_title" msgid="6269541897729781332">"លើក​ដែន​កំណត់​ទិន្នន័យ​ចល័ត"</string>
- <string name="throttled_notification_message" msgid="5443457321354907181">"ប៉ះ ដើម្បី​ស្វែងយល់​បន្ថែម​អំពី​ការ​ប្រើ​ទិន្នន័យ​ចល័ត។"</string>
- <string name="no_matches" msgid="8129421908915840737">"គ្មាន​ការ​ផ្គូផ្គង"</string>
- <string name="find_on_page" msgid="1946799233822820384">"រក​ក្នុង​ទំព័រ"</string>
- <plurals name="matches_found">
- <item quantity="one" msgid="8167147081136579439">"១ ប្រកួត"</item>
- <item quantity="other" msgid="4641872797067609177">"<xliff:g id="INDEX">%d</xliff:g> នៃ <xliff:g id="TOTAL">%d</xliff:g>"</item>
- </plurals>
- <string name="action_mode_done" msgid="7217581640461922289">"រួចរាល់"</string>
- <string name="progress_unmounting" product="nosdcard" msgid="3923810448507612746">"កំពុង​ផ្ដាច់​ឧបករណ៍​យូអេសប៊ី..."</string>
- <string name="progress_unmounting" product="default" msgid="1327894998409537190">"កំពុង​ផ្ដាច់​កាត​អេសឌី..."</string>
- <string name="progress_erasing" product="nosdcard" msgid="4521573321524340058">"កំពុង​លុប​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី..."</string>
- <string name="progress_erasing" product="default" msgid="6596988875507043042">"កំពុង​លុប​កាត​អេសឌី..."</string>
- <string name="format_error" product="nosdcard" msgid="6299769563624776948">"មិន​​អាច​លុប​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី។"</string>
- <string name="format_error" product="default" msgid="7315248696644510935">"មិន​អាច​លុប​កាត​អេសឌី។"</string>
- <string name="media_bad_removal" msgid="7960864061016603281">"បាន​ដក​កាត​អេសឌី​មុន​នឹង​ផ្ដាច់។"</string>
- <string name="media_checking" product="nosdcard" msgid="418188720009569693">"បច្ចុប្បន្ន​កំពុង​ពិនិត្យ​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី។"</string>
- <string name="media_checking" product="default" msgid="7334762503904827481">"បច្ចុប្បន្ន​កំពុង​ពិនិត្យ​មើល​កាត​អេសឌី។"</string>
- <string name="media_removed" msgid="7001526905057952097">"បាន​ដក​កាត​អេសឌី។"</string>
- <string name="media_shared" product="nosdcard" msgid="5830814349250834225">"ឧបករណ៍​ផ្ទុក​យូអេសប៊ី​បច្ចុប្បន្ន​កំពុង​ប្រើ​ដោយ​កុំព្យូទ័រ។"</string>
- <string name="media_shared" product="default" msgid="5706130568133540435">"បច្ចុប្បន្ន​កាត​អេសឌី​កំពុង​ប្រើ​ដោយ​កុំព្យូទ័រ"</string>
- <string name="media_unknown_state" msgid="729192782197290385">"មិន​ស្គាល់​ស្ថានភាព​មេឌៀ​ខាង​ក្រៅ។"</string>
- <string name="share" msgid="1778686618230011964">"ចែក​រំលែក"</string>
- <string name="find" msgid="4808270900322985960">"រក"</string>
- <string name="websearch" msgid="4337157977400211589">"ស្វែងរក​តាម​បណ្ដាញ"</string>
- <string name="find_next" msgid="5742124618942193978">"រក​បន្ទាប់"</string>
- <string name="find_previous" msgid="2196723669388360506">"រក​ពី​មុន"</string>
- <string name="gpsNotifTicker" msgid="5622683912616496172">"ស្នើ​ទីតាំង​ពី <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="gpsNotifTitle" msgid="5446858717157416839">"សំណើ​ទីតាំង"</string>
- <string name="gpsNotifMessage" msgid="1374718023224000702">"បាន​ស្នើ​ដោយ <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
- <string name="gpsVerifYes" msgid="2346566072867213563">"បាទ/ចាស"</string>
- <string name="gpsVerifNo" msgid="1146564937346454865">"ទេ"</string>
- <string name="sync_too_many_deletes" msgid="5296321850662746890">"លុប​​លើស​ដែន​កំណត់"</string>
- <string name="sync_too_many_deletes_desc" msgid="496551671008694245">"មាន​ធាតុ​បាន​លុប <xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> សម្រាប់ <xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g> គណនី <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g> ។ តើ​អ្នក​ចង់​ធ្វើ​អ្វី​ខ្លះ​?"</string>
- <string name="sync_really_delete" msgid="2572600103122596243">"លុប​ធាតុ"</string>
- <string name="sync_undo_deletes" msgid="2941317360600338602">"មិន​ធ្វើ​ការ​លុប​វិញ"</string>
- <string name="sync_do_nothing" msgid="3743764740430821845">"មិន​ធ្វើអ្វី​ទេ​ឥឡូវ"</string>
- <string name="choose_account_label" msgid="5655203089746423927">"ជ្រើស​គណនី"</string>
- <string name="add_account_label" msgid="2935267344849993553">"បន្ថែម​គណនី​ថ្មី"</string>
- <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>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<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>
- <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"បង្កើន​ម៉ោង"</string>
- <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"បន្ថយ​ម៉ោង"</string>
- <string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"កំណត់​ PM"</string>
- <string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"កំណត់ AM"</string>
- <string name="date_picker_increment_month_button" msgid="5369998479067934110">"បង្កើន​ខែ"</string>
- <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"បន្ថយ​ខែ"</string>
- <string name="date_picker_increment_day_button" msgid="7130465412308173903">"បង្កើន​ថ្ងៃ"</string>
- <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"បន្ថយ​ថ្ងៃ"</string>
- <string name="date_picker_increment_year_button" msgid="6318697384310808899">"បង្កើន​​ឆ្នាំ"</string>
- <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"បន្ថយ​ឆ្នាំ"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"បោះ​បង់"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"លុប"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"រួចរាល់"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"ប្ដូរ​របៀប"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string>
- <string name="activitychooserview_choose_application" msgid="2125168057199941199">"ជ្រើស​កម្មវិធី"</string>
- <string name="shareactionprovider_share_with" msgid="806688056141131819">"ចែករំលែក​ជា​មួយ"</string>
- <string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"ចែក​រំលែក​ជា​មួយ <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
- <string name="content_description_sliding_handle" msgid="415975056159262248">"គ្រប់គ្រង​ការ​រុញ។ ប៉ះ &amp; សង្កត់។"</string>
- <string name="description_direction_up" msgid="7169032478259485180">"រុញ​ឡើង​លើ​ដើម្បី <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ។"</string>
- <string name="description_direction_down" msgid="5087739728639014595">"រុញ​ចុះក្រោម​សម្រាប់ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ។"</string>
- <string name="description_direction_left" msgid="7207478719805562165">"រុញ​ទៅ​ឆ្វេង​ដើម្បី <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ។"</string>
- <string name="description_direction_right" msgid="8034433242579600980">"រុញ​​ទៅ​ស្ដាំ​ដើម្បី <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ។"</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"ដោះ​​សោ"</string>
- <string name="description_target_camera" msgid="969071997552486814">"ម៉ាស៊ីន​ថត"</string>
- <string name="description_target_silent" msgid="893551287746522182">"ស្ងាត់"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"បើក​សំឡេង"</string>
- <string name="description_target_search" msgid="3091587249776033139">"ស្វែងរក"</string>
- <string name="description_target_unlock_tablet" msgid="3833195335629795055">"អូស​ ដើម្បី​ដោះ​សោ។"</string>
- <string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"ដោត​កាស​ដើម្បី​ស្ដាប់​ពាក្យ​សម្ងាត់​បាន​និយាយ។"</string>
- <string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Dot."</string>
- <string name="action_bar_home_description" msgid="5293600496601490216">"រកមើល​ទៅ​ដើម"</string>
- <string name="action_bar_up_description" msgid="2237496562952152589">"រកមើល​ឡើងលើ"</string>
- <string name="action_menu_overflow_description" msgid="2295659037509008453">"ជម្រើស​ច្រើន​ទៀត"</string>
- <string name="action_bar_home_description_format" msgid="7965984360903693903">"%1$s, %2$s"</string>
- <string name="action_bar_home_subtitle_description_format" msgid="6985546530471780727">"%1$s, %2$s, %3$s"</string>
- <string name="storage_internal" msgid="4891916833657929263">"ឧបករណ៍​ផ្ទុក​ខាង​ក្នុង"</string>
- <string name="storage_sd_card" msgid="3282948861378286745">"កាត​អេសឌី"</string>
- <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>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"ប៉ះ ដើម្បី​មើល​ការ​ប្រើ និង​ការ​កំណត់។"</string>
- <string name="data_usage_3g_limit_title" msgid="7093334419518706686">"បាន​បិទ​ទិន្នន័យ 2G​-3G"</string>
- <string name="data_usage_4g_limit_title" msgid="7636489436819470761">"បាន​បិទ​ទិន្នន័យ 4G"</string>
- <string name="data_usage_mobile_limit_title" msgid="7869402519391631884">"បាន​បិទ​ទិន្នន័យ​ចល័ត"</string>
- <string name="data_usage_wifi_limit_title" msgid="8992154736441284865">"បាន​បិទ​ទិន្នន័យ​វ៉ាយហ្វាយ"</string>
- <string name="data_usage_limit_body" msgid="3317964706973601386">"ប៉ះ​​ ដើម្បី​បើក​។"</string>
- <string name="data_usage_3g_limit_snoozed_title" msgid="7026739121138005231">"លើស​ដែន​កំណត់​ទិន្នន័យ 2G​-3G"</string>
- <string name="data_usage_4g_limit_snoozed_title" msgid="1106562779311209039">"បាន​លើស​ដែន​កំណត់​ទិន្នន័យ 4G"</string>
- <string name="data_usage_mobile_limit_snoozed_title" msgid="279240572165412168">"បាន​លើស​ដែន​កំណត់​ទិន្នន័យ​ចល័ត"</string>
- <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>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"ប៉ះ ដើម្បី​លុប​ការ​ដាក់កម្រិត។"</string>
- <string name="ssl_certificate" msgid="6510040486049237639">"វិញ្ញាបនបត្រ​សុវត្ថិភាព"</string>
- <string name="ssl_certificate_is_valid" msgid="6825263250774569373">"វិញ្ញាបនបត្រ​នេះ​​​​ត្រឹមត្រូវ​។"</string>
- <string name="issued_to" msgid="454239480274921032">"បាន​ចេញ​ឲ្យ​៖"</string>
- <string name="common_name" msgid="2233209299434172646">"ឈ្មោះ​ទូទៅ៖"</string>
- <string name="org_name" msgid="6973561190762085236">"ស្ថាប័ន៖"</string>
- <string name="org_unit" msgid="7265981890422070383">"ផ្នែក​នៃ​ស្ថាប័ន៖"</string>
- <string name="issued_by" msgid="2647584988057481566">"បាន​ចេញ​ដោយ​៖"</string>
- <string name="validity_period" msgid="8818886137545983110">"សុពលភាព៖"</string>
- <string name="issued_on" msgid="5895017404361397232">"ចេញ​នៅ៖"</string>
- <string name="expires_on" msgid="3676242949915959821">"ផុត​កំណត់​នៅ៖"</string>
- <string name="serial_number" msgid="758814067660862493">"លេខ​ស៊េរី៖"</string>
- <string name="fingerprints" msgid="4516019619850763049">"ស្នាម​ម្រាមដៃ​៖"</string>
- <string name="sha256_fingerprint" msgid="4391271286477279263">"ស្នាម​ម្រាមដៃ SHA​-256 ​៖"</string>
- <string name="sha1_fingerprint" msgid="7930330235269404581">"ស្នាម​ម្រាម​ដៃ SHA-1 ៖"</string>
- <string name="activity_chooser_view_see_all" msgid="4292569383976636200">"មើល​ទាំងអស់"</string>
- <string name="activity_chooser_view_dialog_title_default" msgid="4710013864974040615">"ជ្រើស​សកម្មភាព"</string>
- <string name="share_action_provider_share_with" msgid="5247684435979149216">"ចែករំលែក​ជា​មួយ"</string>
- <string name="status_bar_device_locked" msgid="3092703448690669768">"ឧបករណ៍​ជាប់​សោ​។"</string>
- <string name="list_delimeter" msgid="3975117572185494152">", "</string>
- <string name="sending" msgid="3245653681008218030">"កំពុង​ផ្ញើ..."</string>
- <string name="launchBrowserDefault" msgid="2057951947297614725">"ចាប់ផ្ដើម​កម្មវិធី​អ៊ីនធឺណិត?"</string>
- <string name="SetupCallDefault" msgid="5834948469253758575">"ទទួល​ការ​ហៅ​?"</string>
- <string name="activity_resolver_use_always" msgid="8017770747801494933">"ជា​និច្ច"</string>
- <string name="activity_resolver_use_once" msgid="2404644797149173758">"តែ​ម្ដង"</string>
- <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"កុំព្យូទ័រ​បន្ទះ"</string>
- <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"ទូរស័ព្ទ"</string>
- <string name="default_audio_route_name_headphones" msgid="8119971843803439110">"កាស"</string>
- <string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"ភ្ជាប់​អូប៉ាល័រ"</string>
- <string name="default_media_route_name_hdmi" msgid="2450970399023478055">"HDMI"</string>
- <string name="default_audio_route_category_name" msgid="3722811174003886946">"ប្រព័ន្ធ"</string>
- <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"សំឡេង​ប៊្លូធូស"</string>
- <string name="wireless_display_route_description" msgid="9070346425023979651">"បង្ហាញ​បណ្ដាញ​ឥត​ខ្សែ"</string>
- <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"រួចរាល់"</string>
- <string name="media_route_button_content_description" msgid="5758553567065145276">"លទ្ធផល​មេឌៀ"</string>
- <string name="media_route_status_scanning" msgid="7279908761758293783">"កំពុង​វិភាគ​រក…"</string>
- <string name="media_route_status_connecting" msgid="6422571716007825440">"កំពុង​​​ភ្ជាប់​…"</string>
- <string name="media_route_status_available" msgid="6983258067194649391">"ទំនេរ"</string>
- <string name="media_route_status_not_available" msgid="6739899962681886401">"មិន​ទំនេរ"</string>
- <string name="media_route_status_in_use" msgid="4533786031090198063">"កំពុង​ប្រើ"</string>
- <string name="display_manager_built_in_display_name" msgid="2583134294292563941">"អេក្រង់​ជាប់"</string>
- <string name="display_manager_hdmi_display_name" msgid="1555264559227470109">"អេក្រង់ HDMI"</string>
- <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"#<xliff:g id="ID">%1$d</xliff:g> ត្រួត​គ្នា"</string>
- <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string>
- <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", សុវត្ថិភាព"</string>
- <string name="wifi_display_notification_title" msgid="2223050649240326557">"បាន​ភ្ជាប់​ការ​បង្ហាញ​បណ្ដាញ​ឥត​ខ្សែ"</string>
- <string name="wifi_display_notification_message" msgid="4498802012464170685">"អេក្រង់​នេះ​បង្ហាញ​លើ​ឧបករណ៍​ផ្សេង"</string>
- <string name="wifi_display_notification_disconnect" msgid="6183754463561153372">"ផ្ដាច់"</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"ការ​ហៅ​ពេល​អាសន្ន"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ភ្លេច​​លំនាំ"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"លំនាំ​មិន​ត្រឹមត្រូវ"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"កូដ PIN មិន​ត្រឹមត្រូវ"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"ព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER">%1$d</xliff:g> វិនាទី។"</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"គូរ​លំនាំ​របស់​អ្នក"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"បញ្ចូល​កូដ PIN ស៊ីម​កាត"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"បញ្ចូល​​កូដ PIN"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"បញ្ចូល​ពាក្យ​សម្ងាត់"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"ឥឡូវ​ស៊ីមកាត​ត្រូវ​បាន​បិទ។ បញ្ចូល​កូដ PUK ដើម្បី​បន្ត។ ចំពោះ​ព័ត៌មាន​លម្អិត​ទាក់ទង​ក្រុមហ៊ុន​បញ្ជូន​របស់​អ្នក។"</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"បញ្ចូល​កូដ PIN ដែល​ចង់​បាន"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"បញ្ជាក់​កូដ PIN ដែល​ចង់​បាន"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"កំពុង​ដោះ​សោ​​ស៊ីម​កាត..."</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"កូដ PIN មិន​ត្រឹមត្រូវ។"</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"បញ្ចូល​កូដ PIN ដែល​មាន​ពី ៤ ដល់ ៨ លេខ។"</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"កូដ PUK គួរ​តែ​មាន​​ ៨ លេខ ឬ​​ច្រើន​ជាង​នេះ។"</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"បញ្ចូល​កូដ PUK ម្ដង​ទៀត។ ការ​ព្យាយាម​ដដែល​ច្រើន​ដឹង​នឹង​បិទ​ស៊ីម​កាត​ជា​អចិន្ត្រៃយ៍។"</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"កូដ PIN មិន​ដូច​គ្នា"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"ព្យាយាម​លំនាំ​ច្រើន​ពេក"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"ដើម្បី​ដោះ​សោ ចូល​ក្នុង​គណនី Google ។"</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"ឈ្មោះ​អ្នក​ប្រើ (អ៊ី​ម៉ែ​ល​)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"ពាក្យសម្ងាត់"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"ចូល"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"ឈ្មោះ​អ្នកប្រើ ឬ​ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ។"</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"ភ្លេច​ឈ្មោះ​អ្នកប្រើ ឬ​ពាក្យ​សម្ងាត់​របស់​អ្នក?\nមើល "<b>"google.com/accounts/recovery"</b>" ។"</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"កំពុង​ពិនិត្យ​មើល​គណនី..."</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"អ្នក​បាន​បញ្ចូល​កូដ PIN របស់​អ្នក​មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER_0">%d</xliff:g> ដង។\n\n ព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER_1">%d</xliff:g> វិនាទី។"</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"អ្នក​បាន​បញ្ចូល​ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ <xliff:g id="NUMBER_0">%d</xliff:g> ដង។\n\nព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER_1">%d</xliff:g> វិនាទី។"</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"អ្នក​បាន​​គូរ​លំនាំ​ដោះ​សោ​របស់​អ្នក​មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER_0">%d</xliff:g> ដង។\n\nព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER_1">%d</xliff:g> វិនាទី។"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"អ្នក​បាន​ព្យាយាម​ដោះ​សោ​​កុំព្យូទ័រ​បន្ទះ​​មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER_0">%d</xliff:g> ដង។ បន្ទាប់​ពី​ការ​ព្យាយាម​មិន​ជោគជ័យ​​ច្រើន​ជាង <xliff:g id="NUMBER_1">%d</xliff:g> ដង កុំព្យូទ័រ​បន្ទះ​​នឹង​ត្រូវ​បាន​កំណត់​ទៅ​លំនាំដើម​ដូច​ចេញ​ពី​រោងចក្រ ហើយ​ទិន្នន័យ​អ្នកប្រើ​នឹង​បាត់បង់។"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"អ្នក​បាន​ព្យាយាម​ដោះ​សោ​ទូរស័ព្ទ​មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER_0">%d</xliff:g> ដង។ បន្ទាប់​ពី​ការ​ព្យាយាម​មិន​ជោគជ័យ​​ច្រើន​ជាង <xliff:g id="NUMBER_1">%d</xliff:g> ដង ទូរស័ព្ទ​នឹង​ត្រូវ​បាន​កំណត់​ទៅ​លំនាំដើម​ដូច​ចេញ​ពី​រោងចក្រ ហើយ​ទិន្នន័យ​អ្នកប្រើ​នឹង​បាត់បង់។"</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"អ្នក​បាន​ព្យាយាម​ដោះ​សោ​កុំព្យូទ័រ​បន្ទះ​មិន​ត្រឹមត្រូវ​ចំនួន​ <xliff:g id="NUMBER">%d</xliff:g> ដង។ កុំព្យូទ័រ​បន្ទះ​នឹង​ត្រូវ​បាន​កំណត់​ទៅ​លំនាំដើម​ដូច​ចេញ​ពី​រោងចក្រ"</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"អ្នក​បាន​ព្យាយាម​ដោះ​សោ​ទូរស័ព្ទ​មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER">%d</xliff:g> ដង។ ឥឡូវ​ទូរស័ព្ទ​នឹង​កំណត់​ទៅ​លំនាំ​ដើម​ដូច​ចេញ​ពី​រោងចក្រ។"</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"អ្នក​បាន​គូរ​លំនាំ​ដោះ​សោ​មិន​ត្រឹមត្រូវ <xliff:g id="NUMBER_0">%d</xliff:g> ដង។ បន្ទាប់​ពី​ការ​ព្យាយាម <xliff:g id="NUMBER_1">%d</xliff:g> ដង​មិន​ជោគជ័យ អ្នក​នឹង​ត្រូវ​បាន​ស្នើ​ឲ្យ​ដោះ​សោ​កុំព្យូទ័រ​បន្ទះ​របស់​អ្នក ដោយ​ប្រើ​គណនី​អ៊ីមែល។\n\n ព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER_2">%d</xliff:g> វិនាទី។"</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"អ្នក​បាន​គូរ​លំនាំ​ដោះ​​សោ​របស់​អ្នក​មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER_0">%d</xliff:g> ដង។ បន្ទាប់​ពី​ការ​ព្យាយាម​មិន​ជោគជ័យ​​ច្រើនជាង <xliff:g id="NUMBER_1">%d</xliff:g> ដង អ្នក​នឹង​ត្រូវ​បាន​​ស្នើ​ឲ្យ​ដោះ​សោ​ទូរស័ព្ទ​របស់​អ្នក​ដោយ​ប្រើ​គណនី​អ៊ីមែល។\n\n ព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER_2">%d</xliff:g> វិនាទី។"</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"លុប​ចេញ"</string>
- <string name="safe_media_volume_warning" product="default" msgid="7324161939475478066">"បង្កើន​កម្រិត​សំឡេង​ខាង​លើ​កម្រិត​បាន​​ណែនាំ?\nស្ដាប់​កម្រិត​សំឡេង​ខ្ពស់​រយៈ​ពេល​យូរ​អាច​ឲ្យ​ខូច​ត្រចៀក។"</string>
- <string name="continue_to_enable_accessibility" msgid="1626427372316070258">"សង្កត់​ដោយ​ម្រាមដៃ​ពីរ ដើម្បី​បើក​ភាព​ងាយស្រួល។"</string>
- <string name="accessibility_enabled" msgid="1381972048564547685">"បាន​បើក​មធ្យោបាយ​ងាយស្រួល​។"</string>
- <string name="enable_accessibility_canceled" msgid="3833923257966635673">"បាន​បោះបង់​ភាព​ងាយស្រួល។"</string>
- <string name="user_switched" msgid="3768006783166984410">"អ្នក​ប្រើ​បច្ចុប្បន្ន <xliff:g id="NAME">%1$s</xliff:g> ។"</string>
- <string name="owner_name" msgid="2716755460376028154">"ម្ចាស់"</string>
- <string name="error_message_title" msgid="4510373083082500195">"កំហុស"</string>
- <string name="app_no_restricted_accounts" msgid="5739463249673727736">"កម្មវិធី​នេះ​មិន​គាំទ្រ​គណនី​សម្រាប់​ប្រវត្តិរូប​ដែល​បាន​ដាក់​កម្រិត​ទេ"</string>
- <string name="app_not_found" msgid="3429141853498927379">"រក​មិន​ឃើញ​កម្មវិធី​ ដើម្បី​គ្រប់គ្រង​សកម្មភាព​នេះ"</string>
- <string name="revoke" msgid="5404479185228271586">"ដកហូត"</string>
- <string name="mediaSize_iso_a0" msgid="7875427489420821793">"ISO A0"</string>
- <string name="mediaSize_iso_a1" msgid="3760734499050875356">"ISO A1"</string>
- <string name="mediaSize_iso_a2" msgid="5973266378020144382">"ISO A2"</string>
- <string name="mediaSize_iso_a3" msgid="1373407105687300884">"ISO A3"</string>
- <string name="mediaSize_iso_a4" msgid="6689772807982597254">"ISO A4"</string>
- <string name="mediaSize_iso_a5" msgid="5353549652015741040">"ISO A5"</string>
- <string name="mediaSize_iso_a6" msgid="8585038048674911907">"ISO A6"</string>
- <string name="mediaSize_iso_a7" msgid="6641836716963839119">"ISO A7"</string>
- <string name="mediaSize_iso_a8" msgid="7571139437465693355">"ISO A8"</string>
- <string name="mediaSize_iso_a9" msgid="1378455891957115079">"ISO A9"</string>
- <string name="mediaSize_iso_a10" msgid="2480747457429475344">"ISO A10"</string>
- <string name="mediaSize_iso_b0" msgid="3965935097661108039">"ISO B0"</string>
- <string name="mediaSize_iso_b1" msgid="2505753285010115437">"ISO B1"</string>
- <string name="mediaSize_iso_b2" msgid="8763874709859458453">"ISO B2"</string>
- <string name="mediaSize_iso_b3" msgid="4210506688191764076">"ISO B3"</string>
- <string name="mediaSize_iso_b4" msgid="5749404165888526034">"ISO B4"</string>
- <string name="mediaSize_iso_b5" msgid="7640627414621904733">"ISO B5"</string>
- <string name="mediaSize_iso_b6" msgid="7342988864712748544">"ISO B6"</string>
- <string name="mediaSize_iso_b7" msgid="5069844065235382429">"ISO B7"</string>
- <string name="mediaSize_iso_b8" msgid="7316818922278779774">"ISO B8"</string>
- <string name="mediaSize_iso_b9" msgid="5414727094026532341">"ISO B9"</string>
- <string name="mediaSize_iso_b10" msgid="5251253731832048185">"ISO B10"</string>
- <string name="mediaSize_iso_c0" msgid="4003138342671964217">"ISO C0"</string>
- <string name="mediaSize_iso_c1" msgid="1935188063393553008">"ISO C1"</string>
- <string name="mediaSize_iso_c2" msgid="3197307969712069904">"ISO C2"</string>
- <string name="mediaSize_iso_c3" msgid="4335826087321913508">"ISO C3"</string>
- <string name="mediaSize_iso_c4" msgid="3745639598281015005">"ISO C4"</string>
- <string name="mediaSize_iso_c5" msgid="8269457765822791013">"ISO C5"</string>
- <string name="mediaSize_iso_c6" msgid="566666105260346930">"ISO C6"</string>
- <string name="mediaSize_iso_c7" msgid="8678413180782608498">"ISO C7"</string>
- <string name="mediaSize_iso_c8" msgid="8392376206627041730">"ISO C8"</string>
- <string name="mediaSize_iso_c9" msgid="9191613372324845405">"ISO C9"</string>
- <string name="mediaSize_iso_c10" msgid="7327709699184920822">"ISO C10"</string>
- <string name="mediaSize_na_letter" msgid="4191805615829472953">"Letter"</string>
- <string name="mediaSize_na_gvrnmt_letter" msgid="7853382192649405507">"លិខិត​រដ្ឋាភិបាល"</string>
- <string name="mediaSize_na_legal" msgid="6697982988283823150">"Legal"</string>
- <string name="mediaSize_na_junior_legal" msgid="3727743969902758948">"Junior Legal"</string>
- <string name="mediaSize_na_ledger" msgid="281871464896601236">"Ledger"</string>
- <string name="mediaSize_na_tabloid" msgid="5775966416333578127">"Tabloid"</string>
- <string name="write_fail_reason_cancelled" msgid="7091258378121627624">"បាន​បោះ​បង់"</string>
- <string name="write_fail_reason_cannot_write" msgid="8132505417935337724">"កំហុស​ក្នុង​ការ​សរសេរ​មាតិកា"</string>
- <string name="restr_pin_enter_pin" msgid="3395953421368476103">"បញ្ចូល​​កូដ PIN"</string>
- <string name="restr_pin_enter_old_pin" msgid="1462206225512910757">"កូដ PIN បច្ចុប្បន្ន"</string>
- <string name="restr_pin_enter_new_pin" msgid="5959606691619959184">"កូដ PIN ថ្មី"</string>
- <string name="restr_pin_confirm_pin" msgid="8501523829633146239">"បញ្ជាក់​កូដ PIN ថ្មី"</string>
- <string name="restr_pin_create_pin" msgid="8017600000263450337">"បង្កើត​កូដ PIN សម្រាប់​កែ​ការ​ដាក់​កម្រិត"</string>
- <string name="restr_pin_error_doesnt_match" msgid="2224214190906994548">"កូដ PIN មិន​ដូច​គ្នា។ ព្យាយាម​ម្ដង​ទៀត។"</string>
- <string name="restr_pin_error_too_short" msgid="8173982756265777792">"កូដ​ PIN ខ្លី​ពេក។ ត្រូវ​តែ​មាន​យ៉ាង​ហោច​ណាស់ ៤ តួ។"</string>
- <plurals name="restr_pin_countdown">
- <item quantity="one" msgid="4835639969503729874">"លេខ​កូដ​ PIN មិន​ត្រឹមត្រូវ។ ព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល ១ វិនាទី។"</item>
- <item quantity="other" msgid="8030607343223287654">"លេខ​កូដ​ PIN មិន​ត្រឹមត្រូវ។ ព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="COUNT">%d</xliff:g> វិនាទី​។"</item>
- </plurals>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"អូស​គែម​អេក្រង់ ដើម្បី​បង្ហាញ​របារ"</string>
-</resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 09004468cd12..1a0b2d99c445 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"<xliff:g id="COUNT">%d</xliff:g>초 후에 다시 시도하세요."</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"나중에 다시 시도"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"전체화면을 종료하려면 위에서 아래로 스와이프"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"전체화면을 종료하려면 위에서 아래로 스와이프"</string>
</resources>
diff --git a/core/res/res/values-lo-rLA/strings.xml b/core/res/res/values-lo-rLA/strings.xml
index 46e2fa96ea21..003b3f93fe87 100644
--- a/core/res/res/values-lo-rLA/strings.xml
+++ b/core/res/res/values-lo-rLA/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"ລອງໃໝ່ໃນອີກ <xliff:g id="COUNT">%d</xliff:g> ວິນາທີ"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"ລອງໃໝ່ອີກຄັ້ງໃນພາຍຫລັງ."</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"ປັດລົງຈາກເທິງສຸດເພື່ອອກຈາກໂໝດເຕັມໜ້າຈໍ"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"ປັດລົງມາຈາກທາງເທິງເພື່ອອອກຈາກໂໝດເຕັມໜ້າຈໍ."</string>
</resources>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
deleted file mode 100644
index 68ece0f10270..000000000000
--- a/core/res/res/values-lo/strings.xml
+++ /dev/null
@@ -1,1587 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="byteShort" msgid="8340973892742019101">"B"</string>
- <string name="kilobyteShort" msgid="5973789783504771878">"KB"</string>
- <string name="megabyteShort" msgid="6355851576770428922">"MB"</string>
- <string name="gigabyteShort" msgid="3259882455212193214">"GB"</string>
- <string name="terabyteShort" msgid="231613018159186962">"TB"</string>
- <string name="petabyteShort" msgid="5637816680144990219">"PB"</string>
- <string name="fileSizeSuffix" msgid="9164292791500531949">"<xliff:g id="NUMBER">%1$s</xliff:g><xliff:g id="UNIT">%2$s</xliff:g>"</string>
- <string name="untitled" msgid="4638956954852782576">"&lt;ບໍ່ມີຊື່&gt;"</string>
- <string name="ellipsis" msgid="7899829516048813237">"…"</string>
- <string name="ellipsis_two_dots" msgid="1228078994866030736">"‥"</string>
- <string name="emptyPhoneNumber" msgid="7694063042079676517">"(ບໍ່ມີເບີໂທລະສັບ)"</string>
- <string name="unknownName" msgid="2277556546742746522">"(ບໍ່ຮູ້)"</string>
- <string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"ຂໍ້ຄວາມສຽງ"</string>
- <string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN1"</string>
- <string name="mmiError" msgid="5154499457739052907">"ມີບັນຫາໃນການເຊື່ອມຕໍ່ ຫຼືລະຫັດ MMI ບໍ່ຖືກຕ້ອງ."</string>
- <string name="mmiFdnError" msgid="5224398216385316471">"ການດຳເນີນການຖືກຈຳກັດເປັນ ຈຳກັດໝາຍເລກໂທອອກເທົ່ານັ້ນ."</string>
- <string name="serviceEnabled" msgid="8147278346414714315">"ບໍລິການຖືກເປີດໄວ້ແລ້ວ."</string>
- <string name="serviceEnabledFor" msgid="6856228140453471041">"ບໍລິການຖືກເປີດໃຊ້ສຳລັບ:"</string>
- <string name="serviceDisabled" msgid="1937553226592516411">"ບໍ​ລິ​ການ​ໄດ້​ຖືກ​ປິດແລ້ວ."</string>
- <string name="serviceRegistered" msgid="6275019082598102493">"ການລົງທະບຽນສຳເລັດແລ້ວ."</string>
- <string name="serviceErased" msgid="1288584695297200972">"ການລຶບສົມບູນແລ້ວ."</string>
- <string name="passwordIncorrect" msgid="7612208839450128715">"ລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ"</string>
- <string name="mmiComplete" msgid="8232527495411698359">"MMI ສຳເລັດ."</string>
- <string name="badPin" msgid="9015277645546710014">"ລະຫັດ PIN ເກົ່າທີ່ທ່ານພິມນັ້ນບໍ່ຖືກຕ້ອງ."</string>
- <string name="badPuk" msgid="5487257647081132201">"ລະຫັດ PUK ທີ່ທ່ານພິມນັ້ນບໍ່ຖືກຕ້ອງ."</string>
- <string name="mismatchPin" msgid="609379054496863419">"ລະຫັດ PIN ທີ່ທ່ານພິມໄປນັ້ນບໍ່ກົງກັນ."</string>
- <string name="invalidPin" msgid="3850018445187475377">"ພິມລະຫັດ PIN ທີ່ມີ 4 ຫາ 8 ໂຕເລກ."</string>
- <string name="invalidPuk" msgid="8761456210898036513">"ພິມລະຫັດ PUK ທີ່ມີ 8 ໂຕເລກ ຫຼືຫຼາຍກວ່ານັ້ນ."</string>
- <string name="needPuk" msgid="919668385956251611">"ຊິມກາດຂອງທ່ານຖືກລັອກດ້ວຍລະຫັດ PUK. ໃຫ້ພິມລະຫັດ PUK ເພື່ອປົດລັອກມັນ."</string>
- <string name="needPuk2" msgid="4526033371987193070">"ພິມ PUK2 ເພື່ອປົດລັອກ SIM card."</string>
- <string name="imei" msgid="2625429890869005782">"IMEI"</string>
- <string name="meid" msgid="4841221237681254195">"MEID"</string>
- <string name="ClipMmi" msgid="6952821216480289285">"ໝາຍເລກຜູ່ໂທເຂົ້າ"</string>
- <string name="ClirMmi" msgid="7784673673446833091">"ໝາຍເລກຜູ່ໂທອອກ"</string>
- <string name="CfMmi" msgid="5123218989141573515">"ການໂອນສາຍ"</string>
- <string name="CwMmi" msgid="9129678056795016867">"ສາຍຊ້ອນ"</string>
- <string name="BaMmi" msgid="455193067926770581">"ການລະງັບການໂທ"</string>
- <string name="PwdMmi" msgid="7043715687905254199">"ການປ່ຽນລະຫັດຜ່ານ"</string>
- <string name="PinMmi" msgid="3113117780361190304">"ການປ່ຽນແປງ PIN"</string>
- <string name="CnipMmi" msgid="3110534680557857162">"ສະແດງໝາຍເລກທີ່ໂທ"</string>
- <string name="CnirMmi" msgid="3062102121430548731">"ເບີໂທທີ່ຖືກຈຳກັດ"</string>
- <string name="ThreeWCMmi" msgid="9051047170321190368">"ການໂທສາມສາຍ"</string>
- <string name="RuacMmi" msgid="7827887459138308886">"ປະຕິເສດສາຍທີ່ບໍ່ຕ້ອງການຮັບ"</string>
- <string name="CndMmi" msgid="3116446237081575808">"ການສົ່ງໝາຍເລກທີ່ໂທ"</string>
- <string name="DndMmi" msgid="1265478932418334331">"ຫ້າມລົບກວນ"</string>
- <string name="CLIRDefaultOnNextCallOn" msgid="429415409145781923">"ໝາຍເລກຜູ່ໂທຖືກຕັ້ງຄ່າເລີ່ມຕົ້ນໃຫ້ຖືກຈຳກັດ. ການໂທຄັ້ງຕໍ່ໄປ: ຖືກຈຳກັດ"</string>
- <string name="CLIRDefaultOnNextCallOff" msgid="3092918006077864624">"ໝາຍເລກຜູ່ໂທ ໄດ້ຮັບການຕັ້ງຄ່າເລີ່ມຕົ້ນເປັນ ຖືກຈຳກັດ. ການໂທຄັ້ງຕໍ່ໄປ: ບໍ່ຖືກຈຳກັດ."</string>
- <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"Caller ID ໂດຍເລີ່ມຕົ້ນຖືກປັບໃຫ້ບໍ່ມີການປິດກັ້ນ. ການໂທຕໍ່ໄປ:ປິດກັ້ນ"</string>
- <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"ໝາຍເລກຜູ່ໂທ ໄດ້ຮັບການຕັ້ງຄ່າເລີ່ມຕົ້ນເປັນ ບໍ່ຖືກຈຳກັດ. ການໂທຄັ້ງຕໍ່ໄປ: ບໍ່ຖືກຈຳກັດ."</string>
- <string name="serviceNotProvisioned" msgid="8614830180508686666">"ບໍ່ໄດ້ເປີດໃຊ້ບໍລິການ."</string>
- <string name="CLIRPermanent" msgid="3377371145926835671">"ທ່ານບໍ່ສາມາດປ່ຽນແປງການຕັ້ງຄ່າ Caller ID"</string>
- <string name="RestrictedChangedTitle" msgid="5592189398956187498">"ປ່ຽນການເຂົ້າເຖິງທີ່ຖືກຈຳກັດແລ້ວ"</string>
- <string name="RestrictedOnData" msgid="8653794784690065540">"ບໍລິການຂໍ້ມູນຖືກບລັອກ."</string>
- <string name="RestrictedOnEmergency" msgid="6581163779072833665">"ບໍລິການສຸກເສີນຖືກບລັອກ."</string>
- <string name="RestrictedOnNormal" msgid="4953867011389750673">"ບໍລິການການໂທຖືກປິດກັ້ນໄວ້."</string>
- <string name="RestrictedOnAllVoice" msgid="3396963652108151260">"ບໍລິການສຽງທັງໝົດຖືກບລັອກ."</string>
- <string name="RestrictedOnSms" msgid="8314352327461638897">"ບໍລິການ SMS ຖືກບລັອກ."</string>
- <string name="RestrictedOnVoiceData" msgid="996636487106171320">"ບໍລິການ ຂໍ້ມູນ/ສຽງ ຖືກບລັອກ."</string>
- <string name="RestrictedOnVoiceSms" msgid="1888588152792023873">"ບໍລິການ ສຽງ/SMS ຖືກບລັອກ."</string>
- <string name="RestrictedOnAll" msgid="5643028264466092821">"ບໍລິການ ການໂທ/ອິນເຕີເນັດ/SMS ຖືກປິດກັ້ນໄວ້."</string>
- <string name="serviceClassVoice" msgid="1258393812335258019">"ສຽງ"</string>
- <string name="serviceClassData" msgid="872456782077937893">"ຂໍ້ມູນ"</string>
- <string name="serviceClassFAX" msgid="5566624998840486475">"ແຟັກ"</string>
- <string name="serviceClassSMS" msgid="2015460373701527489">"SMS"</string>
- <string name="serviceClassDataAsync" msgid="4523454783498551468">"ບໍ່ກົງກັນ"</string>
- <string name="serviceClassDataSync" msgid="7530000519646054776">"ຊິ້ງຂໍ້ມູນ"</string>
- <string name="serviceClassPacket" msgid="6991006557993423453">"ແພັກເກັດ"</string>
- <string name="serviceClassPAD" msgid="3235259085648271037">"PAD"</string>
- <string name="roamingText0" msgid="7170335472198694945">"ໂຕບອກການເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍພາຍນອກເປີດຢູ່"</string>
- <string name="roamingText1" msgid="5314861519752538922">"ໂຕບອກການເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍພາຍນອກປິດຢູ່"</string>
- <string name="roamingText2" msgid="8969929049081268115">"ໂຕບອກການເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍພາຍນອກກະພິບ"</string>
- <string name="roamingText3" msgid="5148255027043943317">"ຢູ່ນອກເຂດໃກ້ຄຽງ"</string>
- <string name="roamingText4" msgid="8808456682550796530">"ດ້ານນອກຂອງອາຄານ"</string>
- <string name="roamingText5" msgid="7604063252850354350">"ໂຣມມິງ - ລະບົບທີ່ຕ້ອງການ"</string>
- <string name="roamingText6" msgid="2059440825782871513">"ໂຣມມິງ - ລະບົບທີ່ໃຊ້ໄດ້"</string>
- <string name="roamingText7" msgid="7112078724097233605">"ໂຣມມິງ - ຮຸ້ນສ່ວນພັນທະມິດ"</string>
- <string name="roamingText8" msgid="5989569778604089291">"ໂຣມມິງ - ຮຸ້ນສ່ວນພຣີມຽມ"</string>
- <string name="roamingText9" msgid="7969296811355152491">"ໂຣມມິງ - ຟັງຊັນບໍລິການເຕັມຮູບແບບ"</string>
- <string name="roamingText10" msgid="3992906999815316417">"ໂຣມມິງ - ຟັງຊັນບໍລິການບາງສ່ວນ"</string>
- <string name="roamingText11" msgid="4154476854426920970">"ເປີດໂຣມມິງແບນເນີ"</string>
- <string name="roamingText12" msgid="1189071119992726320">"ປິດໂຣມມິງແບນເນີ"</string>
- <string name="roamingTextSearching" msgid="8360141885972279963">"ຊອກຫາບໍລິການ"</string>
- <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: ບໍ່ຖືກສົ່ງຕໍ່"</string>
- <string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string>
- <string name="cfTemplateForwardedTime" msgid="9206251736527085256">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g> ຫຼັງຈາກ <xliff:g id="TIME_DELAY">{2}</xliff:g> ວິນາທີ"</string>
- <string name="cfTemplateRegistered" msgid="5073237827620166285">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: ບໍ່ຖືກສົ່ງຕໍ່"</string>
- <string name="cfTemplateRegisteredTime" msgid="6781621964320635172">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: ບໍ່ຖືກສົ່ງຕໍ່"</string>
- <string name="fcComplete" msgid="3118848230966886575">"ລະຫັດຄຸນສົມບັດສຳເລັດແລ້ວ."</string>
- <string name="fcError" msgid="3327560126588500777">"ເກີດບັນຫາການເຊື່ອມຕໍ່ ຫຼືລະຫັດການເຮັດວຽກບໍ່ຖືກຕ້ອງ."</string>
- <string name="httpErrorOk" msgid="1191919378083472204">"ຕົກລົງ"</string>
- <string name="httpError" msgid="7956392511146698522">"ມີຂໍ້ຜິດພາດທາງເຄືອຂ່າຍ."</string>
- <string name="httpErrorLookup" msgid="4711687456111963163">"ບໍ່ພົບ URL."</string>
- <string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"ບໍ່ຮອງຮັບຮູບແບບການພິສູດຢືນຢັນຂອງເວັບໄຊ."</string>
- <string name="httpErrorAuth" msgid="1435065629438044534">"ບໍ່ສາມາດພິສູດຢືນຢັນໄດ້."</string>
- <string name="httpErrorProxyAuth" msgid="1788207010559081331">"ການພິສູດຢືນຢັນຜ່ານເຊີບເວີ Proxy ບໍ່ສຳເລັດ."</string>
- <string name="httpErrorConnect" msgid="8714273236364640549">"ບໍ່ສາມາດເຊື່ອມຕໍ່ກັບເຊີບເວີໄດ້."</string>
- <string name="httpErrorIO" msgid="2340558197489302188">"ບໍ່ສາມາດສື່ສານກັບເຊີບເວີໄດ້. ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ."</string>
- <string name="httpErrorTimeout" msgid="4743403703762883954">"ໝົດເວລາການເຊື່ອມຕໍ່ຫາເຊີບເວີ."</string>
- <string name="httpErrorRedirectLoop" msgid="8679596090392779516">"ໜ້ານີ້ມີການປ່ຽນເສັ້ນທາງເຊີບເວີຫຼາຍເກີນໄປ."</string>
- <string name="httpErrorUnsupportedScheme" msgid="5015730812906192208">"ບໍ່ຮອງຮັບໂປຣໂຕຄອນດັ່ງກ່າວ."</string>
- <string name="httpErrorFailedSslHandshake" msgid="96549606000658641">"ບໍ່ສາມາດເປີດໃຊ້ການເຊື່ອມຕໍ່ທີ່ປອດໄພໄດ້."</string>
- <string name="httpErrorBadUrl" msgid="3636929722728881972">"ບໍ່ສາມາດເປີດໜ້າເວັບໄດ້ເນື່ອງຈາກ URL ບໍ່ຖືກຕ້ອງ."</string>
- <string name="httpErrorFile" msgid="2170788515052558676">"ບໍ່ສາມາດເຂົ້າເຖິງໄຟລ໌ໄດ້."</string>
- <string name="httpErrorFileNotFound" msgid="6203856612042655084">"ບໍ່ພົບໄຟລ໌ທີ່ຮ້ອງຂໍ."</string>
- <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"ມີການຮ້ອງຂໍຫຼາຍເກີນໄປ, ກະລຸນາລອງໃໝ່ພາຍຫຼັງ."</string>
- <string name="notification_title" msgid="8967710025036163822">"ການເຂົ້າສູ່ລະບົບຂອງ <xliff:g id="ACCOUNT">%1$s</xliff:g> ຜິດພາດ"</string>
- <string name="contentServiceSync" msgid="8353523060269335667">"ການຊິ້ງຂໍ້ມູນ"</string>
- <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"ຊິ້ງຂໍ້ມູນ"</string>
- <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"ມີການລຶບ <xliff:g id="CONTENT_TYPE">%s</xliff:g> ຫຼາຍເກີນໄປ."</string>
- <string name="low_memory" product="tablet" msgid="6494019234102154896">"ພື້ນທີ່ຈັດເກັບຂໍ້ມູນໃນແທັບເລັດເຕັມ. ລຶບບາງໄຟລ໌ອອກເພື່ອເພີ່ມພື້ນທີ່ຫວ່າງ."</string>
- <string name="low_memory" product="default" msgid="3475999286680000541">"ພື້ນທີ່ໃນໂທລະສັບເຕັມແລ້ວ. ກະລຸນາລຶບບາງໄຟລ໌ອອກເພື່ອເພີ່ມພື້ນທີ່ຫວ່າງ."</string>
- <string name="me" msgid="6545696007631404292">"ຂ້າພະເຈົ້າ"</string>
- <string name="power_dialog" product="tablet" msgid="8545351420865202853">"ໂຕເລືອກແທັບເລັດ"</string>
- <string name="power_dialog" product="default" msgid="1319919075463988638">"ໂຕເລືອກໂທລະສັບ"</string>
- <string name="silent_mode" msgid="7167703389802618663">"ໂໝດປິດສຽງ"</string>
- <string name="turn_on_radio" msgid="3912793092339962371">"ເປີດລະບົບໄຮ້ສາຍ"</string>
- <string name="turn_off_radio" msgid="8198784949987062346">"ປິດ wireless"</string>
- <string name="screen_lock" msgid="799094655496098153">"ລັອກໜ້າຈໍ"</string>
- <string name="power_off" msgid="4266614107412865048">"ປິດເຄື່ອງ"</string>
- <string name="silent_mode_silent" msgid="319298163018473078">"ປິດສຽງຣິງໂທນ"</string>
- <string name="silent_mode_vibrate" msgid="7072043388581551395">"ສັ່ນພ້ອມສຽງຣິງໂທນ"</string>
- <string name="silent_mode_ring" msgid="8592241816194074353">"ເປີດສຽງໂທເຂົ້າແລ້ວ"</string>
- <string name="shutdown_progress" msgid="2281079257329981203">"ກຳລັງປິດລົງ..."</string>
- <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"ແທັບເລັດຂອງທ່ານຈະຖືກປິດ."</string>
- <string name="shutdown_confirm" product="default" msgid="649792175242821353">"ໂທລະສັບຂອງທ່ານຈະຖືກປິດ."</string>
- <string name="shutdown_confirm_question" msgid="2906544768881136183">"ທ່ານຕ້ອງການທີ່ຈະປິດບໍ່?"</string>
- <string name="reboot_safemode_title" msgid="7054509914500140361">"ຣີບູດເຂົ້າ safe mode"</string>
- <string name="reboot_safemode_confirm" msgid="55293944502784668">"ທ່ານຕ້ອງການຣີບູດເຂົ້າ safe mode ຫຼືບໍ່? ນີ້ຈະເປັນການປິດການເຮັດວຽກຂອງແອັບພລິເຄຊັນ ຈາກພາກສ່ວນທີສາມທັງໝົດທີ່ທ່ານໄດ້ຕິດຕັ້ງໄວ້. ແອັບພລິເຄຊັນເຫຼົ່ານັ້ນ ຈະກັບມາເຮັດວຽກໄດ້ອີກຫຼັງຈາກທ່ານຣີບູດອີກຄັ້ງ."</string>
- <string name="recent_tasks_title" msgid="3691764623638127888">"ຫາກໍໃຊ້"</string>
- <string name="no_recent_tasks" msgid="8794906658732193473">"ບໍ່ມີແອັບຯຫຼ້າສຸດ"</string>
- <string name="global_actions" product="tablet" msgid="408477140088053665">"ໂຕເລືອກແທັບເລັດ"</string>
- <string name="global_actions" product="default" msgid="2406416831541615258">"ໂຕເລືອກໂທລະສັບ"</string>
- <string name="global_action_lock" msgid="2844945191792119712">"ລັອກໜ້າຈໍ"</string>
- <string name="global_action_power_off" msgid="4471879440839879722">"ປິດ"</string>
- <string name="global_action_bug_report" msgid="7934010578922304799">"ລາຍງານຂໍ້ຜິດພາດ"</string>
- <string name="bugreport_title" msgid="2667494803742548533">"ໃຊ້ລາຍງານຂໍ້ບົກພ່ອງ"</string>
- <string name="bugreport_message" msgid="398447048750350456">"ນີ້ຈະເປັນການເກັບກຳຂໍ້ມູນກ່ຽວກັບ ສະຖານະປັດຈຸບັນຂອງອຸປະກອນທ່ານ ເພື່ອສົ່ງເປັນຂໍ້ຄວາມທາງອີເມວ. ມັນຈະໃຊ້ເວລາໜ້ອຍນຶ່ງ ໃນການເລີ່ມຕົ້ນການລາຍງານຂໍ້ຜິດພາດ ຈົນກວ່າຈະພ້ອມທີ່ຈະສົ່ງໄດ້, ກະລຸນາລໍຖ້າ."</string>
- <string name="global_action_toggle_silent_mode" msgid="8219525344246810925">"ໂໝດປິດສຽງ"</string>
- <string name="global_action_silent_mode_on_status" msgid="3289841937003758806">"ປິດສຽງແລ້ວ"</string>
- <string name="global_action_silent_mode_off_status" msgid="1506046579177066419">"ເປິດສຽງແລ້ວ"</string>
- <string name="global_actions_toggle_airplane_mode" msgid="5884330306926307456">"ໂໝດໃນຍົນ"</string>
- <string name="global_actions_airplane_mode_on_status" msgid="2719557982608919750">"ເປີດໂໝດຢູ່ໃນຍົນແລ້ວ"</string>
- <string name="global_actions_airplane_mode_off_status" msgid="5075070442854490296">"ປິດໂໝດໃນຍົນແລ້ວ"</string>
- <string name="status_bar_notification_info_overflow" msgid="5301981741705354993">"999+"</string>
- <string name="safeMode" msgid="2788228061547930246">"Safe mode"</string>
- <string name="android_system_label" msgid="6577375335728551336">"ລະບົບ Android"</string>
- <string name="permgrouplab_costMoney" msgid="5429808217861460401">"ບໍລິການທີ່ເຮັດໃຫ້ທ່ານເສຍເງິນ"</string>
- <string name="permgroupdesc_costMoney" msgid="3293301903409869495">"ເຮັດສິ່ງທີ່ທ່ານຕ້ອງເສຍຄ່າໃຊ້ຈ່າຍ."</string>
- <string name="permgrouplab_messages" msgid="7521249148445456662">"ຂໍ້ຄວາມຂອງທ່ານ"</string>
- <string name="permgroupdesc_messages" msgid="7821999071003699236">"ອ່ານ ແລະຂຽນ SMS, ອີເມວ ແລະຂໍ້ຄວາມອື່ນໆຂອງທ່ານ."</string>
- <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"ຂໍ້ມູນສ່ວນໂຕຂອງທ່ານ"</string>
- <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"ເຂົ້າເຖິງຂໍ້ມູນກ່ຽວກັບທ່ານໂດຍກົງ, ບັນທຶກໄວ້ໃນບັດລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານ."</string>
- <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"ຂໍ້ມູນສັງຄົມຂອງທ່ານ"</string>
- <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"ເຂົ້າເຖິງຂໍ້ມູນກ່ຽວກັບລາຍຊື່ຜູ່ຕິດຕໍ່ ແລະການເຊື່ອມຕໍ່ທາງສັງຄົມຂອງທ່ານໂດຍກົງ."</string>
- <string name="permgrouplab_location" msgid="635149742436692049">"ສະຖານທີ່ຂອງທ່ານ"</string>
- <string name="permgroupdesc_location" msgid="5704679763124170100">"ຕິດຕາມສະຖານທີ່ທາງກາຍະພາບຂອງທ່ານ."</string>
- <string name="permgrouplab_network" msgid="5808983377727109831">"ການສື່ສານເຄືອຂ່າຍ"</string>
- <string name="permgroupdesc_network" msgid="4478299413241861987">"ເຂົ້າເຖິງຄຸນສົມບັດຕ່າງໆຂອງເຄືອຂ່າຍ."</string>
- <string name="permgrouplab_bluetoothNetwork" msgid="1585403544162128109">"Bluetooth"</string>
- <string name="permgroupdesc_bluetoothNetwork" msgid="5625288577164282391">"ເຂົ້າເຖິງອຸປະກອນ ແລະເຄືອຂ່າຍຜ່ານ Bluetooth."</string>
- <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"ການຕັ້ງຄ່າສຽງ"</string>
- <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"ປ່ຽນການຕັ້ງຄ່າສຽງ."</string>
- <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"ສົ່ງຜົນຕໍ່ແບັດເຕີຣີ"</string>
- <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"ໃຊ້ຄວາມສາມາດທີ່ເຮັດໃຫ້ພະລັງງານແບັດເຕີຣີຫຼຸດລົງຢ່າງໄວວາ."</string>
- <string name="permgrouplab_calendar" msgid="5863508437783683902">"ປະຕິທິນ"</string>
- <string name="permgroupdesc_calendar" msgid="5777534316982184416">"ເຂົ້າເຖິງປະຕິທິນ ແລະນັດໝາຍໂດຍກົງ."</string>
- <string name="permgrouplab_dictionary" msgid="4148597128843641379">"ອ່ານວັດຈະນານຸກົມຜູ່ໃຊ້"</string>
- <string name="permgroupdesc_dictionary" msgid="7921166355964764490">"ອ່ານຄຳສັບໃນວັດຈະນານຸກົມຜູ່ໃຊ້."</string>
- <string name="permgrouplab_writeDictionary" msgid="8090237702432576788">"ຂຽນວັດຈະນານຸກົມຜູ່ໃຊ້"</string>
- <string name="permgroupdesc_writeDictionary" msgid="2711561994497361646">"ເພີ່ມຄຳສັບໃສ່ວັດຈະນານຸກົມຜູ່ໃຊ້."</string>
- <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"ບຸກມາກ ແລະປະຫວັດເວັບໄຊ"</string>
- <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"ເຂົ້ານຳໃຊ້ບຸກແລະປະຫວັດການທ່ອງເວັບໂດຍກົງ."</string>
- <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"ໂມງປຸກ"</string>
- <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"ຕັ້ງໂມງປຸກ."</string>
- <string name="permgrouplab_voicemail" msgid="4162237145027592133">"ຂໍ້ຄວາມສຽງ"</string>
- <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"ເຂົ້າໃຊ້ຂໍ້ຄວາມສຽງໂດຍກົງ"</string>
- <string name="permgrouplab_microphone" msgid="171539900250043464">"ໄມໂຄຣໂຟນ"</string>
- <string name="permgroupdesc_microphone" msgid="7106618286905738408">"ເຂົ້າເຖິງໄມໂຄຣໂຟນໂດຍກົງເພື່ອບັນທຶກສຽງ."</string>
- <string name="permgrouplab_camera" msgid="4820372495894586615">"ກ້ອງ"</string>
- <string name="permgroupdesc_camera" msgid="2933667372289567714">"ເຂົ້າໃຊ້ກ້ອງຖ່າຍຮູບສຳລັບການຖ່າຍຮູບ ແລະວິດີໂອໂດຍກົງ."</string>
- <string name="permgrouplab_screenlock" msgid="8275500173330718168">"ລັອກໜ້າຈໍ"</string>
- <string name="permgroupdesc_screenlock" msgid="7067497128925499401">"ຄວາມສາມາດໃນການສົ່ງຜົນຕໍ່ພຶດຕິກຳ ຂອງການລັອກໜ້າຈໍໃນອຸປະກອນຂອງທ່ານ."</string>
- <string name="permgrouplab_appInfo" msgid="8028789762634147725">"ເບິ່ງຂໍ້ມູນແອັບພລິເຄຊັນຂອງທ່ານ"</string>
- <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"ສາມາດສົ່ງຜົນຕໍ່ການເຮັດວຽກ ຂອງແອັບພລິເຄຊັນອື່ນໃນອຸປະກອນຂອງທ່ານ."</string>
- <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"ພາບພື້ນຫຼັງ"</string>
- <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"ປ່ຽນການຕັ້ງຄ່າພາບພື້ນຫຼັງຂອງອຸປະກອນ."</string>
- <string name="permgrouplab_systemClock" msgid="406535759236612992">"ໂມງ"</string>
- <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"ປ່ຽນເວລາ ຫຼືເຂດເວລາໃນອຸປະກອນ."</string>
- <string name="permgrouplab_statusBar" msgid="2095862568113945398">"ແຖບສະຖານະ"</string>
- <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"ປ່ຽນການຕັ້ງຄ່າແຖບສະຖານະອຸປະກອນ."</string>
- <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"ຕັ້ງຄ່າການຊິ້ງຂໍ້ມູນ"</string>
- <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"ເຂົ້າໃຊ້ການຕັ້ງຄ່າການຊິ້ງຂໍ້ມູນ"</string>
- <string name="permgrouplab_accounts" msgid="3359646291125325519">"ບັນຊີຂອງທ່ານ"</string>
- <string name="permgroupdesc_accounts" msgid="4948732641827091312">"ເຂົ້າເຖິງບັນຊີທີ່ໃຊ້ໄດ້."</string>
- <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"ການຄວບຄຸມຮາດແວ"</string>
- <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"ເຂົ້າເຖິງຮາດແວຂອງຊຸດຫູຟັງໂດຍກົງ."</string>
- <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"ການໂທ"</string>
- <string name="permgroupdesc_phoneCalls" msgid="7489701620446183770">"ຕິດຕາມ, ເກັບກຳ ແລະປະມວນຜົນການໂທລະສັບ."</string>
- <string name="permgrouplab_systemTools" msgid="4652191644082714048">"ເຄື່ອງມືລະບົບ"</string>
- <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"ການເຂົ້າເຖິງ ແລະການຄວບຄຸມລະບົບໃນລະດັບຕ່ຳ."</string>
- <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"ເຄື່ອງມືການພັດທະນາ"</string>
- <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"ມີພຽງນັກພັດທະນາແອັບຯເທົ່ານັ້ນທີ່ຈະຕ້ອງການຄວາມສາມາດເຫຼົ່ານີ້."</string>
- <string name="permgrouplab_display" msgid="4279909676036402636">"ສ່ວນຕິດຕໍ່ຜູ່ໃຊ້ຂອງແອັບພລິເຄຊັນອື່ນ"</string>
- <string name="permgroupdesc_display" msgid="6051002031933013714">"ສົ່ງຜົນຕໍ່ສ່ວນຕິດຕໍ່ຜູ່ໃຊ້ຂອງແອັບພລິເຄຊັນອື່ນ."</string>
- <string name="permgrouplab_storage" msgid="1971118770546336966">"ພື້ນທີ່ຈັດເກັບຂໍ້ມູນ"</string>
- <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"ການເຂົ້າເຖິງບ່ອນຈັດເກັບຂໍ້ມູນ USB."</string>
- <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"ການເຂົ້າເຖິງ SD card."</string>
- <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"ຄວາມສາມາດການຊ່ວຍເຂົ້າເຖິງ"</string>
- <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"ຄຸນສົມບັດທີ່ເທັກໂນໂລຢີຄວາມຊ່ວຍເຫຼືອສາມາດຮ້ອງຂໍໄດ້."</string>
- <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ດຶງຂໍ້ມູນເນື້ອຫາໃນໜ້າຈໍ"</string>
- <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ກວດກາເນື້ອຫາຂອງໜ້າຈໍທີ່ທ່ານກຳລັງມີປະຕິສຳພັນນຳ."</string>
- <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ເປີດໃຊ້ \"ການສຳຫຼວດໂດຍສຳພັດ\""</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"ລາຍການທີ່ສຳພັດຈະຖືກເວົ້າອອກມາ ແລະສາມາດສຳຫຼວດໜ້າຈໍໄດ້ດ້ວຍທ່າທາງ."</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>
- <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"ຮວມທັງຂໍ້ມູນສ່ວນໂຕເຊັ່ນ: ເລກບັດເຄຣດິດ ແລະລະຫັດຜ່ານ."</string>
- <string name="permlab_statusBar" msgid="7417192629601890791">"ປິດການນນຳໃຊ້ ຫຼື ແກ້ໄຂແຖບສະຖານະ"</string>
- <string name="permdesc_statusBar" msgid="8434669549504290975">"ອະນຸຍາດໃຫ້ແອັບຯປິດການເຮັດວຽກຂອງແຖບສະຖານະ ຫຼືເພີ່ມ ແລະລຶບໄອຄອນລະບົບອອກໄດ້."</string>
- <string name="permlab_statusBarService" msgid="7247281911387931485">"ແຖບສະຖານະ"</string>
- <string name="permdesc_statusBarService" msgid="716113660795976060">"ອະນຸຍາດໃຫ້ແອັບຯເປັນແຖບສະຖານະ."</string>
- <string name="permlab_expandStatusBar" msgid="1148198785937489264">"ຫຍໍ້/ຂະຫຍາຍ ແຖບສະຖານະ"</string>
- <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"ອະນຸຍາດໃຫ້ແອັບຯ ຂະຫຍາຍ ຫຼືຫຍໍ້ແຖບສະຖານະ."</string>
- <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"ປ່ຽນເສັ້ນທາງການໂທອອກ"</string>
- <string name="permdesc_processOutgoingCalls" msgid="5331318931937402040">"ອະນຸຍາດໃຫ້ແອັບຯປະມວນຜົນສາຍທີ່ໂທອອກ ແລະປ່ຽນໝາຍເລກທີ່ຈະໂທອອກ. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດກວດສອບ, ໂອນສາຍ ຫຼືຂັດຂວາງບໍ່ໃຫ້ໂທອອກໄດ້."</string>
- <string name="permlab_receiveSms" msgid="8673471768947895082">"ຮັບຂໍ້ຄວາມສັ້ນ (SMS)"</string>
- <string name="permdesc_receiveSms" msgid="6424387754228766939">"ອະນຸຍາດໃຫ້ແອັບຯຮັບ ແລະປະມວນຜົນຂໍ້ຄວາມ SMS. ນີ້ໝາຍຄວາມວ່າແອັບຯສາມາດຕິດຕາມ ຫຼືລຶບຂໍ້ຄວາມທີ່ສົ່ງເຂົ້າອຸປະກອນຂອງທ່ານ ໂດຍທີ່ບໍ່ສະແດງພວກມັນໃຫ້ທ່ານເຫັນ."</string>
- <string name="permlab_receiveMms" msgid="1821317344668257098">"ຮັບຂໍ້ຄວາມ (MMS)"</string>
- <string name="permdesc_receiveMms" msgid="533019437263212260">"ອະນຸຍາດໃຫ້ແອັບຯ ຮັບແລະປະມວນຜົນຂໍ້ຄວາມ MMS. ນີ້ໝາຍຄວາມວ່າແອັບຯສາມາດຕິດຕາມ ຫຼືລຶບຂໍ້ຄວາມທີ່ສົ່ງເຂົ້າອຸປະກອນຂອງທ່ານ ໂດຍທີ່ບໍ່ສະແດງພວກມັນໃຫ້ທ່ານເຫັນ."</string>
- <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"ຮັບການກະຈາຍສັນຍານສຸກເສີນ"</string>
- <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"ອະນຸຍາດໃຫ້ແອັບຯຮັບ ແລະປະມວນຜົນການກະຈາຍຂໍ້ຄວາມດ່ວນໄດ້. ການອະນຸຍາດນີ້ຈະສາມາດນຳໃຊ້ໄດ້ໂດຍແອັບຯຂອງລະບົບເທົ່ານັ້ນ."</string>
- <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"ອ່ານຂໍ້ຄວາມກະຈາຍສັນຍານຂອງເສົາສັນຍານ"</string>
- <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"ອະນຸຍາດໃຫ້ແອັບຯ ສາມາດອ່ານຂໍ້ຄວາມແຈ້ງເຕືອນເຫດສຸກເສີນ ທີ່ໄດ້ຮັບໂດຍອຸປະກອນຂອງທ່ານ. ການແຈ້ງເຕືອນສຸກເສີນທີ່ມີໃຫ້ບໍລິການໃນບາງພື້ນທີ່ ເພື່ອແຈ້ງເຕືອນໃຫ້ທ່ານຮູ້ເຖິງສະຖານະການສຸກເສີນ. ແອັບພລິເຄຊັນທີ່ເປັນອັນຕະລາຍອາດລົບກວນປະສິດທິພາບ ຫຼືການດຳເນີນງານຂອງອຸປະກອນຂອງທ່ານ ເມື່ອໄດ້ການຮັບແຈ້ງເຕືອນສຸກເສີນຈາກສະຖານີມືຖື."</string>
- <string name="permlab_sendSms" msgid="5600830612147671529">"ສົ່ງຂໍ້ຄວາມ SMS"</string>
- <string name="permdesc_sendSms" msgid="7094729298204937667">"ອະນຸຍາດໃຫ້ແອັບຯສົ່ງຂໍ້ຄວາມ SMS ໄດ້. ນີ້ອາດເຮັດໃຫ້ທ່ານເກີດການຄິດຄ່າບໍລິການທີ່ບໍ່ຄາດຄິດໄດ້. ແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດເຮັດໃຫ້ທ່ານເສຍເງິນຍ້ອນການສົ່ງຂໍ້ຄວາມໂດຍທີ່ທ່ານບໍ່ຮູ້ໂຕໄດ້."</string>
- <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"ສົ່ງກິດຈະກຳການຕອບສະໜອງຜ່ານທາງຂໍ້ຄວາມ"</string>
- <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"ອະນຸຍາດໃຫ້ແອັບຯສົ່ງຄຳຂໍ ໄປຫາແອັບຯຂໍ້ຄວາມອື່ນໆເພື່ອຈັດການ ກໍລະນີການຕອບດ້ວຍຂໍ້ຄວາມ ສຳລັບສາຍທີ່ໂທເຂົ້າມາ."</string>
- <string name="permlab_readSms" msgid="8745086572213270480">"ອ່ານຂໍ້ຄວາມຂອງທ່ານ (SMS ຫຼື MMS)"</string>
- <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"ອະນຸຍາດໃຫ້ແອັບຯອ່ານ SMS ທີ່ບັນທຶກໄວ້ໃນແທັບເລັດ ຫຼື SIM card ຂອງທ່ານ. ຄຸນສົມບັດນີ້ຈະເຮັດໃຫ້ແອັບຯສາມາດອ່ານຂໍ້ຄວາມ SMS ທັງໝົດໄດ້ ບໍ່ເນື້ອຫາຂອງມັນຈະແມ່ນຫຍັງກໍຕາມ."</string>
- <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"ອະນຸຍາດໃຫ້ແອັບຯ ອ່ານຂໍ້ຄວາມ SMS ທີ່ເກັບໄວ້ໃນໂທລະສັບຂອງທ່ານ ຫຼືຊິມກາດ. ນີ້ອະນຸຍາດໃຫ້ແອັບຯ ອ່ານຂໍ້ຄວາມ SMS ທັງໝົດ, ໂດຍບໍ່ຄຳນຶງເຖິງເນື້ອຫາ ຫຼືຄວາມລັບ."</string>
- <string name="permlab_writeSms" msgid="3216950472636214774">"ແກ້ໄຂຂໍ້ຄວາມຂອງທ່ານ (SMS ຫຼື MMS)"</string>
- <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"ອະນຸຍາດໃຫ້ແອັບຯຂຽນຂໍ້ຄວາມ SMS ທີ່ບັນທຶກໄວ້ໃນແທັບເລັດຂອງທ່ານ ຫຼືຊິມກາດຂອງທ່ານ. ແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດລຶບຂໍ້ຄວາມຂອງທ່ານໄດ້."</string>
- <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"ອະນຸຍາດໃຫ້ແອັບຯ ຂຽນລົງໃສ່ຂໍ້ຄວາມ SMS ທີ່ເກັບໄວ້ໃນໂທລະສັບ ຫຼືຊິມກາດຂອງທ່ານ. ແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດລຶບຂໍ້ຄວາມຂອງທ່ານໄດ້."</string>
- <string name="permlab_receiveWapPush" msgid="5991398711936590410">"ຮັບຂໍ້ຄວາມສັ້ນ (WAP)"</string>
- <string name="permdesc_receiveWapPush" msgid="748232190220583385">"ອະນຸຍາດໃຫ້ແອັບຯຮັບ ແລະປະມວນຜົນຂໍ້ຄວາມ WAP. ການອະນຸຍາດນີ້ຮວມເຖິງຄວາມສາມາດໃນການກວດເບິ່ງ ແລະລຶບຂໍ້ຄວາມທີ່ສົ່ງແລ້ວ ໂດຍບໍ່ຕ້ອງສະແດງໃຫ້ທ່ານເຫັນ."</string>
- <string name="permlab_getTasks" msgid="6466095396623933906">"ດຶງແອັບຯທີ່ເຮັດວຽກຢູ່ມາ"</string>
- <string name="permdesc_getTasks" msgid="7454215995847658102">"ອະນຸຍາດໃຫ້ແອັບຯດຶງຂໍ້ມູນກ່ຽວກັບການເຮັດວຽກໃນປັດຈຸບັນ ແລະຫາກໍຜ່ານມາ. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດຄົ້ນພົບຂໍ້ມູນ ກ່ຽວກັບແອັບພລິເຄຊັນທີ່ໃຊ້ຢູ່ໃນອຸປະກອນໄດ້."</string>
- <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"ການຕອບໂຕ້ລະຫວ່າງຜູ່ໃຊ້"</string>
- <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"ອະນຸຍາດໃຫ້ແອັບຯດຳເນີນການ ສັ່ງງານຜ່ານຜູ່ໃຊ້ອື່ນໆໃນອຸປະກອນ. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດໃຊ້ຄວາມສາມາດນີ້ ເພື່ອລະເມີດການປ້ອງກັນລະຫວ່າງຜູ່ໃຊ້."</string>
- <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"ໃບອະນຸຍາດສະບັບເຕັມໃນການໂຕ້ຕອບລະຫວ່າງຜູ່ໃຊ້"</string>
- <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"ອະນຸຍາດທຸກການໂຕ້ຕອບທີ່ເປັນໄປໄດ້ລະຫວ່າງຜູ່ໃຊ້."</string>
- <string name="permlab_manageUsers" msgid="1676150911672282428">"ຈັດການຜູ່ໃຊ້"</string>
- <string name="permdesc_manageUsers" msgid="8409306667645355638">"ອະນຸຍາດໃຫ້ແອັບຯຈັດການຜູ່ໃຊ້ໃນອຸປະກອນ, ຮວມທັງການເອີ້ນ, ການສ້າງ ແລະການລຶບຂໍ້ມູນ."</string>
- <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"ດຶງລາຍລະອຽດຂອງແອັບຯທີ່ກຳລັງເຮັດວຽກຢູ່"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"ອະນຸຍາດໃຫ້ແອັບຯດຶງຂໍ້ມູນຢ່າງລະອຽດ ກ່ຽວກັບການເຮັດວຽກໃນປັດຈຸບັນ ແລະຫາກໍຜ່ານມາ. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດຄົ້ນພົບຂໍ້ມູນສ່ວນໂຕ ກ່ຽວກັບແອັບຯອື່ນໄດ້."</string>
- <string name="permlab_reorderTasks" msgid="2018575526934422779">"ຮຽງລຳດັບແອັບຯທີ່ກຳລັງເຮັດວຽກຄືນໃໝ່"</string>
- <string name="permdesc_reorderTasks" msgid="7734217754877439351">"ອະນຸຍາດໃຫ້ແອັບຯຍ້າຍການເຮັດວຽກໄປໃສ່ດ້ານໜ້າ ແລະພື້ນຫຼັງໄດ້. ແອັບຯອາດຈະດຳເນີນການໂດຍບໍ່ຕ້ອງໃຫ້ທ່ານບອກ."</string>
- <string name="permlab_removeTasks" msgid="6821513401870377403">"ຢຸດແອັບຯທີ່ເຮັດວຽກຢູ່"</string>
- <string name="permdesc_removeTasks" msgid="1394714352062635493">"ອະນຸຍາດໃຫ້ແອັບຯລຶບການເຮັດວຽກ ແລະປິດແອັບຯຂອງວຽກເຫຼົ່ານັ້ນ. ແອັບຯທີ່ເປັນອັນຕະລາຍ ສາມາດລົບກວນການເຮັດວຽກຂອງແອັບຯອື່ນໄດ້."</string>
- <string name="permlab_manageActivityStacks" msgid="7391191384027303065">"ຈັດການສະແຕັກການເຄື່ອນໄຫວ"</string>
- <string name="permdesc_manageActivityStacks" msgid="1615881933034084440">"ອະ​ນຸ​ຍາດ​ໃຫ້ແອັບຯເພື່ອເພີ່ມ, ລຶບ ແລະ ແກ້ໄຂສະແຕັກການເຄື່ອນໄຫວ ທີ່ແອັບຯອື່ນໆເຮັດວຽກ. ແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດລົບກວນການເຮັດວຽກຂອງແອັບຯອື່ນ."</string>
- <string name="permlab_startAnyActivity" msgid="2918768238045206456">"ເລີ່ມການເຮັດວຽກໃດນຶ່ງ"</string>
- <string name="permdesc_startAnyActivity" msgid="997823695343584001">"ອະນຸຍາດໃຫ້ແອັບຯເລີ່ມການເຮັດວຽກໃດກໍໄດ້ ບໍ່ວ່າການອະນຸຍາດ ຫຼືສະຖານະການສົ່ງອອກຈະເປັນແນວໃດກໍຕາມ."</string>
- <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"ຕັ້ງຄວາມເຂົ້າກັນໄດ້ຂອງໜ້າຈໍ"</string>
- <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"ອະນຸຍາດໃຫ້ແອັບຯຄວບຄຸມໂໝດຄວາມເຂົ້າກັນໄດ້ ຂອງໜ້າຈໍແອັບພລິເຄຊັນອື່ນໆ. ແອັບພລິເຄຊັນທີ່ເປັນອັນຕະລາຍ ອາດເຮັດໃຫ້ແອັບພລິເຄຊັນອື່ນເຮັດວຽກຜິດພາດໄດ້."</string>
- <string name="permlab_setDebugApp" msgid="3022107198686584052">"ເປີດການເກັບຂໍ້ມູນເພື່ອແກ້ໄຂບັນຫາ"</string>
- <string name="permdesc_setDebugApp" msgid="4474512416299013256">"ອະນຸຍາດໃຫ້ແອັບຯ ເປີດການເກັບຂໍ້ມູນແກ້ບັນຫາສຳລັບແອັບຯອື່ນ. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດໃຊ້ຄຸນສົມບັດນີ້ເພື່ອປິດແອັບຯອື່ນ."</string>
- <string name="permlab_changeConfiguration" msgid="4162092185124234480">"ປ່ຽນການຕັ້ງຄ່າໜ້າຈໍຂອງລະບົບ"</string>
- <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"ອະນຸຍາດໃຫ້ແອັບຯປ່ຽນແປງການຕັ້ງຄ່າໃນປັດຈຸບັນ ເຊັ່ນ: ການຕັ້ງຄ່າທ້ອງຖິ່ນ ຫຼືຂະໜາດໂຕອັກສອນໂດຍຮວມ."</string>
- <string name="permlab_enableCarMode" msgid="5684504058192921098">"ເປີດນຳໃຊ້ໂຫມດຂັບລົດ"</string>
- <string name="permdesc_enableCarMode" msgid="4853187425751419467">"ອະນຸຍາດໃຫ້ແອັບຯເປີດໃຊ້ໂໝດໃນລົດ."</string>
- <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"ປິດແອັບຯອື່ນໆ"</string>
- <string name="permdesc_killBackgroundProcesses" msgid="4593353235959733119">"ອະນຸຍາດໃຫ້ແອັບຯປິດໂປຣເຊສພື້ນຫຼັງຂອງແອັບຯອື່ນໄດ້. ນີ້ອາດເຮັດໃຫ້ແອັບຯອື່ນນັ້ນຢຸດການເຮັດວຽກໄປນຳ."</string>
- <string name="permlab_forceStopPackages" msgid="2329627428832067700">"ບັງຄັບໃຫ້ແອັບຯອື່ນຢຸດເຮັດວຽກ"</string>
- <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"ອະນຸຍາດໃຫ້ແອັບຯບັງຄັບປິດແອັບຯອື່ນໆໄດ້."</string>
- <string name="permlab_forceBack" msgid="652935204072584616">"ບັງຄັບປິດແອັບຯ"</string>
- <string name="permdesc_forceBack" msgid="3892295830419513623">"ອະນຸຍາດໃຫ້ແອັບຯບັງຄັບການເຮັດວຽກທີ່ຢູ່ດ້ານໜ້າປິດ ແລະກັບຄືນໄດ້. ແອັບພລິເຄຊັນທົ່ວໄປບໍ່ຄວນຈຳເປັນຕ້ອງໃຊ້."</string>
- <string name="permlab_dump" msgid="1681799862438954752">"ດຶງຂໍ້ມູນສະຖານະພາຍໃນຂອງລະບົບ"</string>
- <string name="permdesc_dump" msgid="1778299088692290329">"ອະນຸຍາດໃຫ້ແອັບຯ ດຶງເອົາສະຖານະພາຍໃນຂອງລະບົບ. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດຈະດຶງເອົາຂໍ້ມູນສ່ວນຕົວ ແລະຂໍ້ມູນຄວາມປອດໄພ ຫຼາກຫຼາຍປະເພດທີ່ບໍ່ຈຳເປັນຕໍ່ພວກມັນເລີຍ."</string>
- <string name="permlab_retrieve_window_content" msgid="8022588608994589938">"ດຶງເອົາເນື້ອຫາໜ້າຈໍ"</string>
- <string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"ອະນຸຍາດໃຫ້ແອັບຯດຶງຂໍ້ມູນເນື້ອຫາຂອງໜ້າຈໍທີ່ໃຊ້ຢູ່ໄດ້. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດດຶງຂໍ້ມູນທັງໝົດໃນໜ້າຈໍ ແລະກວດສອບຂໍ້ຄວາມທັງໝົດໃນນັ້ນໄດ້ ຍົກເວັ້ນລະຫັດຜ່ານ."</string>
- <string name="permlab_temporary_enable_accessibility" msgid="2312612135127310254">"ປິດການຊ່ວຍການເຂົ້າເຖິງຊົ່ວຄາວ"</string>
- <string name="permdesc_temporary_enable_accessibility" msgid="8079456293182975464">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນ ເປີດໃຊ້ການຊ່ວຍເຂົ້າເຖິງແບບຊົ່ວຄາວໃນອຸປະກອນ. ແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດເປີດໃຊ້ການຊ່ວຍເຂົ້າເຖິງ ໂດຍບໍ່ໄດ້ຮັບການຍິນຍອມຈາກຜູ່ໃຊ້."</string>
- <string name="permlab_retrieve_window_info" msgid="8532295199112519378">"ດຶງເອົາຂໍ້ມູນໜ້າຈໍ"</string>
- <string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນ ດຶງເອົາຂໍ້ມູນກ່ຽວກັບໜ້າຈໍຈາກໂຕຈັດການໜ້າຈໍ. ແອັບຯທີ່ບໍ່ປອດໄພອາດດຶງເອົາຂໍ້ມູນທີ່ໃຊ້ສຳລັບພາຍໃນລະບົບໄດ້."</string>
- <string name="permlab_filter_events" msgid="8675535648807427389">"ກັ່ນຕອງເຫດການ"</string>
- <string name="permdesc_filter_events" msgid="8006236315888347680">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນ ລົງທະບຽນການກັ່ນຕອງຂາເຂົ້າ ທີ່ກັ່ນຕອງການສົ່ງຂໍ້ມູນເຫດການຜູ່ໃຊ້ທັງໝົດ ກ່ອນທີ່ພວກມັນຈະຖືກເຜີຍແຜ່. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດຄວບຄຸມ UI ຂອງລະບົບໂດຍບໍ່ຕ້ອງໃຫ້ຜູ່ໃຊ້ຈັດການໄດ້."</string>
- <string name="permlab_magnify_display" msgid="5973626738170618775">"ຂະຫຍາຍການສະແດງຜົນ"</string>
- <string name="permdesc_magnify_display" msgid="7121235684515003792">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນ ສາມາດຂະຫຍາຍເນື້ອຫາທີ່ສະແດງຜົນໄດ້. ແອັບພລິເຄຊັນທີ່ເປັນອັນຕະລາຍ ອາດປ່ຽນເນື້ອຫາທີ່ສະແດງໃນລັກສະນະ ທີ່ເຮັດໃຫ້ບໍ່ສາມາດນຳໃຊ້ອຸປະກອນໄດ້."</string>
- <string name="permlab_shutdown" msgid="7185747824038909016">"ປິດລົງບາງສ່ວນ"</string>
- <string name="permdesc_shutdown" msgid="7046500838746291775">"ກຳນົດໃຫ້ໂຕຈັດການກິດຈະກຳຢູ່ໃນສະຖານະປິດລະບົບ ໂດຍບໍ່ໄດ້ປິດລະບົບຢ່າງສົມບູນ."</string>
- <string name="permlab_stopAppSwitches" msgid="4138608610717425573">"ຂັດຂວາງການສະລັບແອັບຯ"</string>
- <string name="permdesc_stopAppSwitches" msgid="8262195802582255021">"ປ້ອງກັນບໍ່ໃຫ້ຜູ່ໃຊ້ສະຫຼັບໄປຫາແອັບຯອື່ນ."</string>
- <string name="permlab_getTopActivityInfo" msgid="2537922311411546016">"ດຶງຂໍ້ມູນແອັບຯໃນປັດຈຸບັນ"</string>
- <string name="permdesc_getTopActivityInfo" msgid="8153651434145132505">"ອະນຸຍາດໃຫ້ເຈົ້າຂອງດຶງຂໍ້ມູນສ່ວນໂຕ ກ່ຽວກັບແອັບພລິເຄຊັນ ແລະ ການບໍລິການປັດຈຸບັນໃນໜ້າຈໍໄດ້."</string>
- <string name="permlab_runSetActivityWatcher" msgid="892239094867182656">"ຕິດຕາມ ແລະຄວບຄຸມການເປີດໂຕຂອງແອັບຯທັງໝົດ"</string>
- <string name="permdesc_runSetActivityWatcher" msgid="6003603162578577406">"ອະນຸຍາດໃຫ້ແອັບຯ ຕິດຕາມ ແລະຄວບຄຸມວິທີທີ່ລະບົບເລີ່ມການເຮັດວຽກຕ່າງໆ. ແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດເຮັດໃຫ້ລະບົບທັງໝົດເກີດອັນຕະລາຍໄດ້. ການກຳນົດສິດນີ້ຈຳເປັນສຳລັບການພັດທະນາເທົ່ານັ້ນ, ບໍ່ແມ່ນສຳລັບການນຳໃຊ້ທົ່ວໄປ."</string>
- <string name="permlab_broadcastPackageRemoved" msgid="2576333434893532475">"ສົ່ງການກະຈ່າຍຂໍ້ມູນທີ່ເອົາແພັກເກດອອກແລ້ວ"</string>
- <string name="permdesc_broadcastPackageRemoved" msgid="6621901216207931089">"ອະນຸຍາດໃຫ້ແອັບຯສົ່ງການແຈ້ງເຕືອນວ່າ ແພັກເກັດຂອງແອັບຯດັ່ງໄດ້ລຶບອອກໄປແລ້ວ. ແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດໃຊ້ຄວາມສາມາດນີ້ ເພື່ອປິດການເຮັດວຽກຂອງແອັບຯອື່ນໆ ທີ່ກຳລັງເຮັດວຽກຢູ່."</string>
- <string name="permlab_broadcastSmsReceived" msgid="5689095009030336593">"ສົ່ງການກະຈາຍ SMS ທີ່ໄດ້ຮັບ"</string>
- <string name="permdesc_broadcastSmsReceived" msgid="4152037720034365492">"ອະນຸຍາດໃຫ້ແອັບຯ ກະຈາຍສັນຍານການແຈ້ງເຕືອນວ່າຂໍ້ຄວາມ SMS ໄດ້ຮັບແລ້ວ. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດຈະໃຊ້ສິ່ງນີ້ໃນການປອມແປງຂໍ້ຄວາມ SMS ຂາເຂົ້າ."</string>
- <string name="permlab_broadcastWapPush" msgid="3145347413028582371">"ສົ່ງການກະຈາຍ WAP-PUSH ທີ່ໄດ້ຮັບ"</string>
- <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"ອະນຸຍາດໃຫ້ແອັບຯສົ່ງການແຈ້ງເຕືອນໃນເວລາທີ່ໄດ້ຮັບຂໍ້ມຄວາມ WAP PUSH. ແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດໃຊ້ການກະທຳນີ້ເພື່ອປອມການໄດ້ຮັບຂໍ້ຄວາມ MMS ຫຼືລັກປ່ຽນເນື້ອຫາຂອງໜ້າເວັບຕ່າງໆ ດ້ວຍສິ່ງອັນຕະລາຍທັງຫຼາຍຢ່າງງຽບໆ."</string>
- <string name="permlab_setProcessLimit" msgid="2451873664363662666">"ຈຳກັດຈຳນວນຂອງໂປຣເຊສທີ່ເຮັດວຽກຢູ່"</string>
- <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"ອະນຸຍາດໃຫ້ແອັບຯຄວບຄຸມຈຳນວນສູງສຸດ ຂອງໂປຣເຊສທີ່ຈະເຮັດວຽກ. ບໍ່ຄວນຖືກໃຊ້ກັບແອັບພລິເຄຊັນທົ່ວໄປ."</string>
- <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"ບັງຄັບໃຫ້ແອັບຯທີ່ເຮັດວຽກຢູ່ພື້ນຫຼັງປິດໂຕລົງ"</string>
- <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"ອະນຸຍາດໃຫ້ແອັບຯຄວບຄຸມວ່າການເຮັດວຽກໃດ ຄວນຈະຖືກປິດລົງ ຫຼັງຈາກທີ່ພວກມັນຖືກປ່ຽນໃຫ້ໄປເຮັດວຽກໃນຫຼັງລະບົບ. ບໍ່ຄວນໃຊ້ກັບແອັບຯທົ່ວໄປ."</string>
- <string name="permlab_batteryStats" msgid="2789610673514103364">"ອ່ານສະຖິຕິແບັດເຕີຣີ"</string>
- <string name="permdesc_batteryStats" msgid="5897346582882915114">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນ ອ່ານຂໍ້ມູນການນຳໃຊ້ປະຈຸບັນຂອງຖ່ານໃນລະດັບຕໍ່າ. ອາດຈະເຮັດໃຫ້ແອັບພລິເຄຊັນ ສາມາດຊອກຫາຂໍ້ມູນລະອຽດ ກ່ຽວກັບແອັບຯທີ່ທ່ານໃຊ້."</string>
- <string name="permlab_updateBatteryStats" msgid="3719689764536379557">"ແກ້ໄຂສະຖິຕິແບັດເຕີຣີ"</string>
- <string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"ອະນຸຍາດໃຫ້ແອັບຯ ແກ້ໄຂສະຖິຕິກ່ຽວກັບແບັດເຕີຣີທີ່ເກັບກຳມາໄດ້. ບໍ່ໃຊ້ສຳລັບແອັບຯທົ່ວໄປ."</string>
- <string name="permlab_getAppOpsStats" msgid="1508779687436585744">"ດຶງຂໍ້ມູນສະຖິຕິການເຮັດວຽກຂອງແອັບຯ"</string>
- <string name="permdesc_getAppOpsStats" msgid="6243887041577912877">"ອະນຸຍາດໃຫ້ແອັບຯດຶງເອົາຂໍ້ມູນ ສະຖິຕິຂອງແອັບພລິເຄຊັນທີ່ໄດ້ເກັບກຳມາ. ບໍ່ໄດ້ໃຊ້ໃນແອັບຯທົ່ວໄປ."</string>
- <string name="permlab_updateAppOpsStats" msgid="8829097373851521505">"ແກ້ໄຂສະຖິຕິການເຮັດວຽກຂອງແອັບຯ"</string>
- <string name="permdesc_updateAppOpsStats" msgid="50784596594403483">"ອະນຸຍາດໃຫ້ແອັບຯແກ້ໄຂສະຖິຕິ ການເຮັດວຽກຂອງແອັບພລິເຄຊັນທີ່ເກັບກຳມາ. ແອັບຯທົ່ວໄປບໍ່ຈຳເປັນຕ້ອງໃຊ້."</string>
- <string name="permlab_backup" msgid="470013022865453920">"ຄວບຄຸມການສຳຮອງ ແລະການກູ້ຂໍ້ມູນລະບົບ"</string>
- <string name="permdesc_backup" msgid="6912230525140589891">"ອະນຸຍາດໃຫ້ແອັບຯຄວບຄຸມກົນໄກການສຳຮອງ ແລະກູ້ຂໍ້ມູນຂອງລະບົບໄດ້. ແອັບຯທຳມະດາບໍ່ໄດ້ໃຊ້."</string>
- <string name="permlab_confirm_full_backup" msgid="5557071325804469102">"ຢືນຢັນການສຳຮອງ ຫຼືການກູ້ຂໍ້ມູນເຕັມຮູບແບບ"</string>
- <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"ອະນຸຍາດໃຫ້ແອັບຯເປີດການເຮັດວຽກ ຂອງສ່ວນຕິດຕໍ່ຜູ່ໃຊ້ສຳລັບຢືນຢັນການສຳຮອງຂໍ້ມູນເຕັມຮູບແບບ. ບໍ່ມີແອັບຯໃດຕ້ອງໃຊ້ຄຸນສົມບັດນີ້."</string>
- <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"ສະແດງໜ້າຈໍທີ່ບໍ່ໄດ້ຮັບອະນຸຍາດ"</string>
- <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"ອະນຸຍາດໃຫ້ແອັບຯສ້າງໜ້າຈໍສຳລັບການນຳໃຊ້ພາຍໃນລະບົບ. ແອັບຯທົ່ວໄປບໍ່ໄດ້ໃຊ້."</string>
- <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"ບັງແອັບຯອື່ນໆ"</string>
- <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"ອະນຸຍາດໃຫ້ແອັບຯເຮັດວຽກເທິງແອັບຯ ຫຼືບ່ອນອື່ນໆຂອງສ່ວນຕິດຕໍ່ຜູ່ໃຊ້ ເຊິ່ງອາດລົບກວນການເຮັດວຽກຂອງສ່ວນຕິດຕໍ່ ໃນແອັບພລິເຄຊັນຕ່າງໆ ຫຼືປ່ຽນສິ່ງທີ່ທ່ານຄິດວ່າທ່ານເຫັນໃນແອັບພລິເຄຊັນອື່ນໆໄດ້."</string>
- <string name="permlab_setAnimationScale" msgid="2805103241153907174">"ແກ້ໄຂຄວາມໄວຂອງອະນິເມຊັນໂດຍຮວມ"</string>
- <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"ອະນຸຍາດໃຫ້ແອັບຯ ປ່ຽນຄວາມໄວອະນິເມຊັນທົ່ວໄປ (ອະນິເມຊັນໄວຂຶ້ນ ຫຼືຊ້າລົງ) ໄດ້ຕະຫຼອດເວລາ."</string>
- <string name="permlab_manageAppTokens" msgid="1286505717050121370">"ຈັດການໂທເຄນຂອງແອັບຯ"</string>
- <string name="permdesc_manageAppTokens" msgid="8043431713014395671">"ອະນຸຍາດໃຫ້ແອັບຯສ້າງ ແລະຈັດການໂທເຄນຂອງຕົນເອງ ໂດຍຂ້າມການຈັດຕາມລຳດັບ Z ປົກກະຕິຂອງພວກມັນໄປ. ແອັບຯທົ່ວໄປບໍ່ຄວນຈຳເປັນຕ້ອງໃຊ້."</string>
- <string name="permlab_freezeScreen" msgid="4708181184441880175">"ຄ້າງໜ້າຈໍ"</string>
- <string name="permdesc_freezeScreen" msgid="8558923789222670064">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນຄ້າງໜ້າຈໍໄວ້ຊົ່ວຄາວ ສຳລັບການປ່ຽນເປັນແບບເຕັມໜ້າຈໍ."</string>
- <string name="permlab_injectEvents" msgid="1378746584023586600">"ກົດປຸ່ມແລະປຸ່ມຄວບຄຸມ"</string>
- <string name="permdesc_injectEvents" product="tablet" msgid="206352565599968632">"ອະນຸຍາດໃຫ້ແອັບຯສົ່ງກິດຈະກຳການປ້ອນຂໍ້ມູນຂອງມັນ (ເຊັ່ນ: ການກົດປຸ່ມ ແລະອື່ນໆ) ຫາແອັບຯອື່ນ. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດໃຊ້ຄຸນສົມບັດນີ້ ເພື່ອຄວບຄຸມແທັບເລັດໄດ້."</string>
- <string name="permdesc_injectEvents" product="default" msgid="653128057572326253">"ອະນຸຍາດໃຫ້ແອັບຯ ສົ່ງການປ້ອນຂໍ້ມູນຂອງຕົນເອງ (ການກົດປຸ່ມ ແລະອື່ນໆ.) ໃຫ້ແອັບຯອື່ນ. ແອັບຯທີ່ເປັນອັນຕະລາຍ ສາມາດໃຊ້ສິ່ງນີ້ເພື່ອຍຶດເອົາການຄວບຄຸມໂທລະສັບທັງໝົດໄດ້."</string>
- <string name="permlab_readInputState" msgid="469428900041249234">"ບັນທຶກສິ່ງທີ່ທ່ານພິມ ແລະການກະທຳທີ່ທ່ານເຮັດ"</string>
- <string name="permdesc_readInputState" msgid="8387754901688728043">"ອະນຸຍາດໃຫ້ແອັບຯເບິ່ງການກົດປຸ່ມຂອງທ່ານ ເມື່ອມີປະຕິສຳພັນກັບແອັບຯອື່ນ (ເຊັ່ນ: ການພິມລະຫັດຜ່ານ). ແອັບຯທົ່ວໄປບໍ່ຄວນຈຳເປັນຕ້ອງໃຊ້."</string>
- <string name="permlab_bindInputMethod" msgid="3360064620230515776">"ເຊື່ອມໂຍງກັບວິທີປ້ອນຂໍ້ມູນ"</string>
- <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"ອະນຸຍາດໃຫ້ຜູ່ຖືຜູກກັບອິນເຕີເຟດລະດັບສູງສຸດ ຂອງຮູບແບບການປ້ອນຂໍ້ມູນ. ບໍ່ຈຳເປັນສຳລັບແອັບຯທົ່ວໄປ."</string>
- <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"ເຊື່ອມໂຍງກັບບໍລິການຊ່ວຍການເຂົ້າເຖິງໃດນຶ່ງ"</string>
- <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"ອະນຸຍາດໃຫ້ເຈົ້າຂອງ ເຊື່ອມໂຍງສ່ວນຕິດຕໍ່ລະດັບເທິງສຸດ ຂອງບໍລິການການເຂົ້າເຖິງ. ແອັບຯທົ່ວໄປບໍ່ຄວນຈຳເປັນຕ້ອງໃຊ້."</string>
- <string name="permlab_bindPrintService" msgid="8462815179572748761">"ຜູກ​ມັດ​ກັບ​ການ​ບໍ​ລິ​ການ​ພິມ"</string>
- <string name="permdesc_bindPrintService" msgid="7960067623209111135">"ອະນຸຍາດໃຫ້ເຈົ້າຂອງຜູກກັບສ່ວນຕິດຕໍ່ຜູ່ໃຊ້ຂອງການບໍລິການການພິມ. ບໍ່ໜ້າຈະຕ້ອງການສຳລັບແອັບຯທົ່ວໄປ."</string>
- <string name="permlab_accessAllPrintJobs" msgid="1120792468465711159">"ເຂົ້າເຖິງວຽກການພິມທັງໝົດ"</string>
- <string name="permdesc_accessAllPrintJobs" msgid="2978185311041864762">"ອະນຸຍາດໃຫ້ເຈົ້າຂອງເຂົ້າເຖິງວຽກການພິມທີ່ຖືກສ້າງໂດຍແອັບຯອື່ນ. ບໍ່ໜ້າຈະຕ້ອງການສຳລັບແອັບຯທົ່ວໄປ."</string>
- <string name="permlab_bindNfcService" msgid="2752731300419410724">"ເຊື່ອມໂຍງກັບບໍລິການ NFC"</string>
- <string name="permdesc_bindNfcService" msgid="6120647629174066862">"ອະນຸຍາດໃຫ້ຜູ່ຖືອຸປະກອນໃຫ້ສາມາດເຊື່ອມໂຍງແອັບພລິເຄຊັນ ທີ່ຄ້າຍກັບບັດ NFC. ມັນບໍ່ຈຳເປັນຕ້ອງໃຊ້ໃນແອັບຯທຳມະດາ."</string>
- <string name="permlab_bindTextService" msgid="7358378401915287938">"ເຊື່ອມໂຍງໄປຫາບໍລິການສົ່ງຂໍ້ຄວາມ"</string>
- <string name="permdesc_bindTextService" msgid="8151968910973998670">"ອະນຸຍາດໃຫ້ຜູ່ຖືຜູກກັບອິນເຕີເຟດລະດັບສູງສຸດ ຂອງບໍລິການຂໍ້ຄວາມ(ຕ.ຢ. SpellCheckerService). ບໍ່ຈຳເປັນສຳລັບແອັບຯທົ່ວໄປ."</string>
- <string name="permlab_bindVpnService" msgid="4708596021161473255">"ເຊື່ອມໂຍງກັບບໍລິການ VPN"</string>
- <string name="permdesc_bindVpnService" msgid="2067845564581693905">"ອະນຸຍາດໃຫ້ເຈົ້າຂອງເຊື່ອມໂຍງກັບສ່ວນຕິດຕໍ່ລະດັບເທິງສຸດ ຂອງບໍລິການ VPN. ແອັບຯທົ່ວໄປບໍ່ຄວນຈຳເປັນຕ້ອງໃຊ້."</string>
- <string name="permlab_bindWallpaper" msgid="8716400279937856462">"ເຊື່ອມໂຍງກັບພາບພື້ນຫຼັງ"</string>
- <string name="permdesc_bindWallpaper" msgid="7108428692595491668">"ອະນຸຍາດໃຫ້ຜູ່ໃຊ້ເຊື່ອມໂຍງກັບສ່ວນຕິດຕໍ່ລະດັບສູງສຸດ ຂອງພາບພື້ນຫຼັງໃດນຶ່ງ. ແອັບຯທຳມະດາບໍ່ຄວນຈຳເປັນຕ້ອງໃຊ້."</string>
- <string name="permlab_bindRemoteViews" msgid="5697987759897367099">"ເຊື່ອມໂຍງໄປຫາບໍລິການວິດເຈັດ"</string>
- <string name="permdesc_bindRemoteViews" msgid="4717987810137692572">"ອະນຸຍາດໃຫ້ຜູ່ຖືຜູກກັບອິນເຕີເຟດລະດັບສູງສຸດ ຂອງບໍລິການວິເຈັດ. ບໍ່ຈຳເປັນສຳລັບແອັບຯທົ່ວໄປ."</string>
- <string name="permlab_bindDeviceAdmin" msgid="8704986163711455010">"ຕິດຕໍ່ກັບຜູ່ເບິ່ງແຍງອຸປະກອນ"</string>
- <string name="permdesc_bindDeviceAdmin" msgid="569715419543907930">"ອະນຸຍາດໃຫ້ເຈົ້າຂອງສົ່ງເຈດຕະນາຫາຜູ່ເບິ່ງແຍງລະບົບອຸປະກອນ. ແອັບຯທົ່ວໄປບໍ່ຄວນຈຳເປັນຕ້ອງໃຊ້."</string>
- <string name="permlab_manageDeviceAdmins" msgid="4248828900045808722">"ເພີ່ມ ຫຼືລຶບຜູ່ເບິ່ງແຍງລະບົບອຸປະກອນ"</string>
- <string name="permdesc_manageDeviceAdmins" msgid="5025608167709942485">"ອະນຸຍາດໃຫ້ເຈົ້າຂອງສາມາດລຶບ ຫຼືລຶບຂໍ້ມູນອຸປະກອນທີ່ນຳໃຊ້ໄດ້. ແອັບຯທົ່ວໄປບໍ່ຈຳເປັນຕ້ອງໃຊ້."</string>
- <string name="permlab_setOrientation" msgid="3365947717163866844">"ປ່ຽນລວງຂອງໜ້າຈໍ"</string>
- <string name="permdesc_setOrientation" msgid="3046126619316671476">"ອະນຸຍາດໃຫ້ແອັບຯປ່ຽນການໝຸນຂອງໜ້າຈໍໄດ້ທຸກເວລາ. ບໍ່ຄວນຖືກໃຊ້ໃນແອັບພລິເຄຊັນທົ່ວໄປ."</string>
- <string name="permlab_setPointerSpeed" msgid="9175371613322562934">"ປ່ຽນຄວາມໄວລູກສອນ"</string>
- <string name="permdesc_setPointerSpeed" msgid="6866563234274104233">"ອະນຸຍາດໃຫ້ແອັບຯປ່ຽນຄວາມໄວເມົ້າ ຫຼືລູກສອນແທຣັກແພດໃນເວລາໃດກໍໄດ້. ແອັບຯທົ່ວໄປບໍ່ຄວນຈຳເປັນຕ້ອງໃຊ້."</string>
- <string name="permlab_setKeyboardLayout" msgid="4778731703600909340">"ປ່ຽນຮູບແບບແປ້ນພິມ"</string>
- <string name="permdesc_setKeyboardLayout" msgid="8480016771134175879">"ອະນຸຍາດໃຫ້ແອັບຯປ່ຽນຮູບແບບຂອງແປ້ນຳພິມ. ບໍ່ຈຳເປັນສຳລັບແອັບຯທົ່ວໄປ."</string>
- <string name="permlab_signalPersistentProcesses" msgid="4539002991947376659">"ສົ່ງສັນຍານ Linux ຫາແອັບຯ"</string>
- <string name="permdesc_signalPersistentProcesses" msgid="4896992079182649141">"ອະນຸຍາດໃຫ້ແອັບຯຮ້ອງຂໍໃຫ້ສົ່ງສັນຍານ ແຈ້ງໄປຫາໂປຣເຊສທີ່ຍັງເຮັດວຽກຢູ່ທັງໝົດ."</string>
- <string name="permlab_persistentActivity" msgid="8841113627955563938">"ເຮັດໃຫ້ແອັບຯເຮັດວຽກຕະຫຼອດເວລາ"</string>
- <string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"ອະນຸຍາດໃຫ້ແອັບຯ ສາມາດເຮັດໃຫ້ບາງພາກສ່ວນຂອງມັນເອັງ ຄົງໂຕໃນໜ່ວຍຄວາມຈຳ. ສິ່ງນີ້ສາມາດຈຳກັດໜ່ວຍຄວາມຈຳທີ່ສາມາດໃຊ້ໄດ້ໂດຍແອັບຯອື່ນ ເຮັດໃຫ້ແທັບເລັດຊ້າລົງ."</string>
- <string name="permdesc_persistentActivity" product="default" msgid="4384760047508278272">"ອະນຸຍາດໃຫ້ແອັບຯເຮັດໃຫ້ສ່ວນນຶ່ງຂອງຕົນເອງ ຄົງຢູ່ຖາວອນໃນໜ່ວຍຄວາມຈຳ ເຊິ່ງອາດສາມາດ ເຮັດໃຫ້ການນຳໃຊ້ໜ່ວຍຄວາມຈຳຂອງແອັບຯ ອື່ນຖືກຈຳກັດ ສົ່ງຜົນເຮັດໃຫ້ມືຖືຂອງທ່ານເຮັດວຽກຊ້າລົງໄດ້."</string>
- <string name="permlab_deletePackages" msgid="184385129537705938">"ລຶບແອັບຯ"</string>
- <string name="permdesc_deletePackages" msgid="7411480275167205081">"ອະນຸຍາດໃຫ້ແອັບຯລຶບແພັກເກັດ Android ຕ່າງໆໄດ້. ແອັບຯອັນຕະລາຍອາດໃຊ້ຄວາມສາມາດນີ້ ເພື່ອລຶບແອັບຯທີ່ສຳຄັນໄດ້."</string>
- <string name="permlab_clearAppUserData" msgid="274109191845842756">"ລຶບຂໍ້ມູນຂອງແອັບຯອື່ນ"</string>
- <string name="permdesc_clearAppUserData" msgid="4625323684125459488">"ອະນຸຍາດໃຫ້ແອັບຯລຶບຂໍ້ມູນຜູ່ໃຊ້."</string>
- <string name="permlab_deleteCacheFiles" msgid="3128665571837408675">"ລຶບ cache ຂອງແອັບຯອື່ນ"</string>
- <string name="permdesc_deleteCacheFiles" msgid="3812998599006730196">"ອະນຸຍາດໃຫ້ແອັບຯລຶບໄຟລ໌ cache ໄດ້."</string>
- <string name="permlab_getPackageSize" msgid="7472921768357981986">"ກວດສອບພື້ນທີ່ຈັດເກັບຂໍ້ມູນແອັບຯ"</string>
- <string name="permdesc_getPackageSize" msgid="3921068154420738296">"ອະນຸຍາດໃຫ້ແອັບຯດຶງໂຄດ, ຂໍ້ມູນ ແລະຂະໜາດ cache ຂອງມັນໄດ້."</string>
- <string name="permlab_installPackages" msgid="2199128482820306924">"ຕິດຕັ້ງແອັບຯໂດຍກົງ"</string>
- <string name="permdesc_installPackages" msgid="5628530972548071284">"ອະນຸຍາດໃຫ້ແອັບຯຕິດຕັ້ງແພັກເກດ Android ໃໝ່ ຫຼືແພັກເກດທີ່ອັບເດດແລ້ວ. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດໃຊ້ຄຸນສົມບັດນີ້ ເພື່ອສ້າງແອັບຯໃໝ່ທີ່ມີສິດອະນຸຍາດສູງກວ່າໄດ້."</string>
- <string name="permlab_clearAppCache" msgid="7487279391723526815">"ລຶບຂໍ້ມູນ cache ຂອງແອັບຯທັງໝົດ"</string>
- <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"ອະນຸຍາດໃຫ້ແອັບຯສ້າງພື້ນທີ່ຫວ່າງໃນແທັບເລັດ ໂດຍການລຶບໄຟລ໌ໃນໄດເຣັກທໍຣີ cache ຂອງແອັບພລິເຄຊັນອື່ນ. ຄຸນສົມບັດນີ້ອາດເຮັດໃຫ້ແອັບພລິເຄຊັນອື່ນ ເລີ່ມເຮັດວຽກຊ້າລົງເພາະຕ້ອງຂຽນຂໍ້ມູນຄືນໃໝ່."</string>
- <string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນເພີ່ມເນື້ອທີ່ຫວ່າງໃຫ້ໂທລະສັບ ໂດຍການລຶບໄຟລ໌ໃນໄດເຣັກທໍຣີ cache ຂອງແອັບພລິເຄຊັນອື່ນໆ. ການກະທຳນີ້ອາດເຮັດໃຫ້ແອັບພລິເຄຊັນອື່ນ ເຮັດວຽກໄດ້ຊ້າລົງເນື່ອງຈາກພວກມັນຕ້ອງໄດ້ດຶງຂໍ້ມູນຄືນໃໝ່."</string>
- <string name="permlab_movePackage" msgid="3289890271645921411">"ຍ້າຍຊັບພະຍາກອນແອັບຯ"</string>
- <string name="permdesc_movePackage" msgid="319562217778244524">"ອະນຸຍາດໃຫ້ແອັບຯຍ້າຍແຫລ່ງຊັບພະຍາກອນແອັບຯ ຈາກບ່ອນຈັດເກັບຂໍ້ມູນພາຍໃນ ສູ່ບ່ອນຈັດເກັບຂໍ້ມູນພາຍນອກ ແລະໃນທາງກັບກັນໄດ້."</string>
- <string name="permlab_readLogs" msgid="6615778543198967614">"ອ່ານຂໍ້ມູນບັນທຶກທີ່ສຳຄັນ"</string>
- <string name="permdesc_readLogs" product="tablet" msgid="82061313293455151">"ອະນຸຍາດໃຫ້ແອັບຯອ່ານໄຟລ໌ບັນທຶກລະບົບຕ່າງໆຂອງລະບົບ. ຄຸນສົມບັດນີ້ຈະອະນຸຍາດໃຫ້ແອັບຯ ສາມາດຄົ້ນພົບຂໍ້ມູນທົ່ວໄປ ກ່ຽວກັບສິ່ງທີ່ທ່ານກຳລັງເຮັດກັບແທັບເລັດ ເຊິ່ງອາດຮວມເຖິງຂໍ້ມູນສ່ວນໂຕນຳໄດ້."</string>
- <string name="permdesc_readLogs" product="default" msgid="2063438140241560443">"ອະນຸຍາດໃຫ້ແອັບຯອ່ານໄຟລ໌ບັນທຶກລະບົບຕ່າງໆຂອງລະບົບ. ຄຸນສົມບັດນີ້ຈະອະນຸຍາດໃຫ້ແອັບຯ ສາມາດຄົ້ນພົບຂໍ້ມູນທົ່ວໄປ ກ່ຽວກັບສິ່ງທີ່ທ່ານກຳລັງເຮັດກັບໂທລະສັບ ເຊິ່ງອາດຮວມເຖິງຂໍ້ມູນສ່ວນໂຕນຳໄດ້."</string>
- <string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"ໃຊ້ຕົວຖອດລະຫັດໃດກໍໄດ້ເພື່ອການຫຼິ້ນ"</string>
- <string name="permdesc_anyCodecForPlayback" msgid="8283912488433189010">"ອະນຸຍາດໃຫ້ແອັບຯໃຊ້ທຸກຕົວຖອດລະຫັດສື່ທີ່ຕິດຕັ້ງໄວ້ແລ້ວ ເພື່ອການຖອດລະຫັດການຫຼິ້ນໄຟລ໌ຕ່າງໆ."</string>
- <!-- no translation found for permlab_manageCaCertificates (1678391896786882014) -->
- <skip />
- <!-- no translation found for permdesc_manageCaCertificates (4015644047196937014) -->
- <skip />
- <string name="permlab_diagnostic" msgid="8076743953908000342">"ອ່ານ/ຂຽນ ໃສ່ຊັບພະຍາກອນທີ່ເປັນຂອງກຸ່ມວິໄຈ"</string>
- <string name="permdesc_diagnostic" msgid="6608295692002452283">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນອ່ານ ແລະຂຽນ ໃສ່ທຸກຊັບພະຍາກອນທີ່ເປັນຂອງກຸ່ມວິນິໄສ; ຕົວຢ່າງ: ໄຟລ໌ໃນ /dev. ສິ່ງນີ້ອາດສົ່ງຜົນກະທົບຕໍ່ຄວາມສະຖຽນ ແລະຄວາມປອດໄພຂອງລະບົບ. ສິ່ງນີ້ຄວນໃຊ້ສຳຫຼັບການວິເຄາະບັນຫາຈຳເພາະ ຂອງບາງຮາດແວໂດຍຜູ່ຜະລິດ ຫຼືຜູ່ປະຕິບັດການເທົ່ານັ້ນ."</string>
- <string name="permlab_changeComponentState" msgid="6335576775711095931">"ເປີດ ຫຼືປິດນຳໃຊ້ອົງປະກອບຂອງແອັບຯ"</string>
- <string name="permdesc_changeComponentState" product="tablet" msgid="8887435740982237294">"ອະນຸຍາດໃຫ້ແອັບຯ ປ່ຽນແປງອົງປະກອບຂອງແອັບຯອື່ນ ວ່າຖືກເປີດນຳໃຊ້ ຫຼືບໍ່. ແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດໃຊ້ຄວາມສາມາດນີ້ ເພື່ອປິດການນຳໃຊ້ຄວາມສາມາດສຳຄັນຂອງແທັບເລັດ. ການກຳນົດສິດນີ້ຄວນຖືກໃຊ້ຢ່າງລະມັດລະວັງ, ເພາະມັນເປັນໄປໄດ້ທີ່ຈະເຮັດໃຫ້ອົງປະກອບຂອງແອັບຯຢູ່ໃນສະຖານະ ໃຊ້ການບໍ່ໄດ້, ບໍ່ແນ່ນອນ ຫຼືບໍ່ສະຖຽນ."</string>
- <string name="permdesc_changeComponentState" product="default" msgid="1827232484416505615">"ອະນຸຍາດໃຫ້ແອັບຯ ປ່ຽນແປງອົງປະກອບຂອງແອັບຯອື່ນ ວ່າຖືກເປີດນຳໃຊ້ ຫຼືບໍ່. ແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດໃຊ້ຄວາມສາມາດນີ້ ເພື່ອປິດການນຳໃຊ້ຄວາມສາມາດສຳຄັນຂອງໂທລະສັບ. ການກຳນົດສິດນີ້ຄວນຖືກໃຊ້ຢ່າງລະມັດລະວັງ, ເພາະມັນເປັນໄປໄດ້ທີ່ຈະເຮັດໃຫ້ອົງປະກອບຂອງແອັບຯຢູ່ໃນສະຖານະ ໃຊ້ການບໍ່ໄດ້, ບໍ່ແນ່ນອນ ຫຼືບໍ່ສະຖຽນ."</string>
- <string name="permlab_grantRevokePermissions" msgid="4627315351093508795">"ອະນຸມັດ ຫຼືຖອດຖານການອະນຸຍາດ"</string>
- <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນອະນຸມັດ ຫຼືຖອນການອະນຸມັດສິດໃດນຶ່ງສຳລັບໂຕມັນເອງ ຫຼືແອັບພລິເຄຊັນອື່ນໆ. ແອັບພລິເຄຊັນທີ່ເປັນອັນຕະລາຍ ອາດໃຊ້ຄວາມສາມາດນີ້ ເພື່ອເຂົ້າເຖິງຄຸນສົມບັດບາງຢ່າງທີ່ທ່ານບໍ່ໄດ້ອະນຸມັດໃຫ້ພວກມັນ."</string>
- <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"ຕັ້ງຄ່າແອັບຯທີ່ຕ້ອງການ"</string>
- <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"ອະນຸຍາດໃຫ້ແອັບຯ ແກ້ໄຂແອັບຯທີ່ທ່ານຕ້ອງການໃຊ້. ແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດປ່ຽນແປງແອັບທີ່ເຮັດວຽກຢູ່ໂດຍບໍ່ແຈ້ງໃຫ້ຮູ້ ໂດຍການປອມແປງວ່າເປັນແອັບຯທີ່ທ່ານຕ້ອງການ ເພື່ອເກັບຂໍ້ມູນສ່ວນໂຕ."</string>
- <string name="permlab_writeSettings" msgid="2226195290955224730">"ແກ້ໄຂການຕັ້ງຄ່າລະບົບ"</string>
- <string name="permdesc_writeSettings" msgid="7775723441558907181">"ອະນຸຍາດໃຫ້ແອັບຯ ແກ້ໄຂຂໍ້ມູນການຕັ້ງຄ່າລະບົບ. ແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດເຮັດໃຫ້ການຕັ້ງຄ່າຂອງລະບົບເສຍຫາຍໄດ້."</string>
- <string name="permlab_writeSecureSettings" msgid="204676251876718288">"ແກ້ໄຂການຕັ້ງຄ່າລະບົບ"</string>
- <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"ອະນຸຍາດໃຫ້ແອັບຯ ແກ້ໄຂຂໍ້ມູນການຕັ້ງຄ່າຄວາມປອດໄພຂອງລະບົບ. ແອັບຯທົ່ວໄປບໍ່ໄດ້ໃຊ້ຄຸນສົມບັດນີ້."</string>
- <string name="permlab_writeGservices" msgid="2149426664226152185">"ແກ້ໄຂແຜນທີ່ບໍລິການ Google"</string>
- <string name="permdesc_writeGservices" msgid="1287309437638380229">"ອະນຸຍາດໃຫ້ແອັບຯ ແກ້ໄຂການວາງແຜນບໍລິການ Google. ບໍ່ໄດ້ໃຊ້ສຳລັບແອັບຯທົ່ວໄປ."</string>
- <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"ເຮັດວຽກໃນຕອນລະບົບເລີ່ມ"</string>
- <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"ອະນຸຍາດໃຫ້ແອັບຯ ເປີດໂຕມັນເອງທັນທີທີ່ເປີດລະບົບຂຶ້ນມາສຳເລັດ. ນີ້ສາມາດເຮັດໃຫ້ການເລີ່ມເປີດຂອງແທັບເລັດໃຊ້ເວລາດົນຂຶ້ນ ແລະເຮັດໃຫ້ການເຮັດວຽກໂດຍຮວມຂອງແທັບເລັດຊ້າລົງ ໂດຍການເຮັດວຽກຕະຫຼອດເວລາ."</string>
- <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"ອະນຸຍາດໃຫ້ແອັບຯ ເປີດໂຕມັນເອງທັນທີທີ່ລະບົບສຳເລັດເປີດເຄື່ອງ. ນີ້ສາມາດເຮັດໃຫ້ການເລີ່ມເປີດຂອງໂທລະສັບໃຊ້ເວລາດົນຂຶ້ນ ແລະປ່ອຍໃຫ້ແອັບຯ ເຮັດໃຫ້ໂທລະສັບໂດຍຮວມຊ້າລົງ ດ້ວຍການເຮັດວຽກຢູ່ຕະຫຼອດເວລາ."</string>
- <string name="permlab_broadcastSticky" msgid="7919126372606881614">"ສົ່ງການກະຈາຍສັນຍານແບບຍຶດຕິດ"</string>
- <string name="permdesc_broadcastSticky" product="tablet" msgid="7749760494399915651">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນສົ່ງການກະຈາຍສັນຍານແບບຍຶດຕິດ, ທີ່ຍັງຄົງເຫຼືອຫຼັງຈາກການກະຈາຍສັນຍານສິ້ນສຸດລົງ. ການນຳໃຊ້ແບບມະຫາສານອາດເຮັດໃຫ້ແທັບເລັດຊ້າ ຫຼືບໍ່ສະຖຽນ ໂດຍການໃຊ້ໜ່ວຍຄວາມຈຳຫຼາຍເກີນໄປ."</string>
- <string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນສົ່ງການກະຈາຍສັນຍານແບບຍຶດຕິດ, ທີ່ຍັງຄົງເຫຼືອຫຼັງຈາກການກະຈາຍສັນຍານສິ້ນສຸດລົງ. ການນຳໃຊ້ແບບມະຫາສານອາດເຮັດໃຫ້ໂທລະສັບຊ້າ ຫຼືບໍ່ສະຖຽນ ໂດຍການໃຊ້ໜ່ວຍຄວາມຈຳຫຼາຍເກີນໄປ."</string>
- <string name="permlab_readContacts" msgid="8348481131899886131">"ອ່ານລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານ"</string>
- <string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"ອະນຸຍາດໃຫ້ແອັບຯອ່ານຂໍ້ມູນກ່ຽວກັບລາຍຊື່ຜູ່ຕິດຕໍ່ໃນແທັບເລັດຂອງທ່ານ, ຮວມເຖິງຂໍ້ມູນການຈຳນວນການຕິດຕໍ່ຕ່າງໆເຊັ່ນ: ການໂທ, ອີເມວ, ຫຼືຕິດຕໍ່ຫາໃນທາງອື່ນໆກັບບຸກຄົນໃດນຶ່ງໄດ້. ການອະນຸຍາດນີ້ເຮັດໃຫ້ແອັບຯ ສາມາດບັນທຶກຂໍ້ມູນຜູ່ຕິດຕໍ່ຂອງທ່ານ ແລະແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດສົ່ງຕໍ່ຂໍ້ມູນເຫຼົ່ານັ້ນໂດຍທີ່ທ່ານບໍ່ຮູ້ໂຕ."</string>
- <string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"ອະນຸຍາດໃຫ້ແອັບຯ ອ່ານຂໍ້ມູນກ່ຽວກັບລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ເກັບໄວ້ໃນໂທລະສັບຂອງທ່ານ ຮວມເຖິງຄວາມຖີ່ການໂທ, ການສົ່ງສົ່ງອີເມວ ຫຼືການສື່ສານໃນຮູບແບບອື່ນກັບບຸກຄົນໃດນຶ່ງ. ການອະນຸຍາດເຮັດໃຫ້ແອັບຯ ສາມາດບັນທຶກຂໍ້ມູນລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານ ແລະແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດເຜີຍແຜ່ຂໍ້ມູນຂອງທ່ານໂດຍທີ່ທ່ານບໍ່ໄດ້ຮັບຮູ້."</string>
- <string name="permlab_writeContacts" msgid="5107492086416793544">"ແກ້ໄຂລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານ"</string>
- <string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"ອະນຸຍາດໃຫ້ແອັບຯ ແກ້ໄຂຂໍ້ມູນກ່ຽວກັບລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານທີ່ເກັບໄວ້ໃນແທັບເລັດ ຮວມທັງຄວາມຖີ່ໃນການໂທ, ການສົ່ງອີເມວ ຫຼືການສື່ສານໃນຮູບແບບອື່ນຂອງທ່ານກັບລາຍຊື່ຜູ່ຕິດຕໍ່ໃດນຶ່ງ. ການກຳນົດສິດນີ້ເຮັດໃຫ້ແອັບຯສາມາດລຶບຂໍ້ມູນລາຍຊື່ຜູ່ຕິດຕໍ່ໄດ້."</string>
- <string name="permdesc_writeContacts" product="default" msgid="589869224625163558">"ອະນຸຍາດໃຫ້ແອັບຯແກ້ໄຂຂໍ້ມູນກ່ຽວກັບລາຍຊື່ຜູ່ຕິດຕໍ່ ທີ່ບັນທຶກໃນໂທລະສັບຂອງທ່ານ ຮວມທັງຄວາມຖີ່ຂອງການໂທ, ການອີເມວ ຫຼືການຕິດຕໍ່ໃນຮູບແບບອື່ນກັບລາຍຊື່ຜູ່ຕິດຕໍ່ໃດນຶ່ງນຳ. ການອະນຸຍາດນີ້ຈະເຮັດໃຫ້ແອັບຯ ສາມາດລຶບຂໍ້ມູນລາຍຊື່ຜູ່ຕິດຕໍ່ໄດ້."</string>
- <string name="permlab_readCallLog" msgid="3478133184624102739">"ອ່ານບັນທຶກການໂທ"</string>
- <string name="permdesc_readCallLog" product="tablet" msgid="3700645184870760285">"ອະນຸຍາດໃຫ້ແອັບຯ ອ່ານບັນທຶກການໂທຂອງແທັບເລັດທ່ານ ຮວມທັງຂໍ້ມູນການໂທເຂົ້າ ແລະການໂທອອກ. ການກຳນົດສິດນີ້ເຮັດໃຫ້ແອັບຯສາມາດ ບັນທຶກຂໍ້ມູນການໂທຂອງທ່ານ ແລະແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດຈະເຜີຍແຜ່ຂໍ້ມູນການໂທໂດຍທີ່ທ່ານບໍ່ຮັບຮູ້."</string>
- <string name="permdesc_readCallLog" product="default" msgid="5777725796813217244">"ອະນຸຍາດໃຫ້ແອັບຯອ່ານບັນທຶກການໂທຂອງໂທລະສັບທ່ານ ຮວມທັງຂໍ້ມູນກ່ຽວກັບສາຍໂທເຂົ້າ ແລະໂທອອກ. ການອະນຸຍາດນີ້ຈະເຮັດໃຫ້ແອັບຯ ສາມາດບັນທຶກຂໍ້ມູນການໂທ ແລະເຮັດໃຫ້ແອັບຯທີ່ເປັນອັນຕະລາຍສາມາດ ສົ່ງຕໍ່ຂໍ້ມູນບັນທຶກການໂທໂດຍບໍ່ໃຫ້ທ່ານຮູ້ໄດ້."</string>
- <string name="permlab_writeCallLog" msgid="8552045664743499354">"ຂຽນຂໍ້ມູນການໂທ"</string>
- <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"ອະນຸຍາດໃຫ້ແອັບຯແກ້ໄຂບັນທຶກການໂທຂອງແທັບເລັດ ຮວມທັງຂໍ້ມູນກ່ຽວກັບການໂທອອກ ແລະໂທເຂົ້ານຳ. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດໃຊ້ຄຸນສົມບັດນີ້ເພື່ອລຶບ ຫຼືແກ້ໄຂບັນທຶກການໂທຂອງທ່ານໄດ້."</string>
- <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"ອະນຸຍາດໃຫ້ແອັບຯ ແກ້ໄຂລາຍການການໂທໃນໂທລະສັບຂອງທ່ານ, ຮວມທັງຂໍ້ມູນກ່ຽວກັບສາຍໂທເຂົ້າ ແລະການໂທອອກ. ແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດໃຊ້ຄວາມສາມາດນີ້ ເພື່ອລຶບ ຫຼືແກ້ໄຂລາຍການການໂທຂອງທ່ານໄດ້."</string>
- <string name="permlab_readProfile" msgid="4701889852612716678">"ອ່ານບັດລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານເອງ"</string>
- <string name="permdesc_readProfile" product="default" msgid="5462475151849888848">"ອະນຸຍາດໃຫ້ແອັບຯ ອ່ານຂໍ້ມູນໂປໄຟລ໌ສ່ວນໂຕໃນອຸປະກອນຂອງທ່ານເຊັ່ນ: ຊື່ຂອງທ່ານ ແລະຂໍ້ມູນການຕິດຕໍ່ຂອງທ່ານ. ນີ້ໝາຍຄວາມວ່າແອັບຯຈະສາມາດລະບຸໂຕຕົນຂອງທ່ານ ແລະສົ່ງຂໍ້ມູນໂປຣໄຟລ໌ຂອງທ່ານໃຫ້ຜູ່ອື່ນໄດ້."</string>
- <string name="permlab_writeProfile" msgid="907793628777397643">"ແກ້ໄຂບັດລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານເອງ"</string>
- <string name="permdesc_writeProfile" product="default" msgid="5552084294598465899">"ອະນຸຍາດໃຫ້ແອັບຯ ປ່ຽນແປງ ຫຼືເພີ່ມຂໍ້ມູນໃສ່ໂປຣໄຟລ໌ສ່ວນບຸກຄົນທີ່ເກັບໄວ້ໃນອຸປະກອນຂອງທ່ານ, ເຊັ່ນ: ຊື່ ແລະຂໍ້ມູນຕິດຕໍ່ທ່ານ. ນີ້ໝາຍຄວາມວ່າແອັບຯສາມາດບົ່ງບອກໂຕທ່ານ ແລະອາດສົ່ງຂໍ້ມູນໂປຣໄຟລ໌ຂອງທ່ານໃຫ້ຜູ່ອື່ນໄດ້."</string>
- <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"ອ່ານການອັບເດດສັງຄົມອອນລາຍຂອງທ່ານ"</string>
- <string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"ອະນຸຍາດໃຫ້ແອັບຯ ເຂົ້າເຖິງ ແລະຊິ້ງຂໍ້ມູນຂ່າວສານສັງຄົມຈາກທ່ານ ແລະໝູ່ຂອງທ່ານ. ຄວນລະມັດລະວັງໃນເວລາທີ່ແລກປ່ຽນຂໍ້ມູນ -- ນີ້ຈະເປັນການອະນຸຍາດໃຫ້ແອັບຯ ອ່ານການສື່ສານລະຫວ່າງທ່ານ ກັບໝູ່ຂອງທ່ານເທິງເຄືອຂ່າຍສັງຄົມ ໂດຍບໍ່ຄຳນຶງເຖິງຄວາມລັບ. ໝາຍເຫດ: ການກຳນົດສິດນີ້ອາດບໍ່ໄດ້ບັງຄັບໃຊ້ໃນທຸກເຄືອຂ່າຍສັງຄົມ."</string>
- <string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"ຂຽນໃສ່ເຄືອຂ່າຍສັງຄົມຂອງທ່ານ"</string>
- <string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"ອະນຸຍາດໃຫ້ແອັບຯສະແດງການອັບເດດຈາກໝູ່ຂອງທ່ານ. ຄວນລະວັງໃນການແປ່ງປັນຂໍ້ມູນ. ມັນຈະໄປອະນຸຍາດໃຫ້ແອັບຯ ສ້າງຂໍ້ຄວາມທີ່ອ້າງວ່າມາຈາກໝູ່ຂອງທ່ານ. ໝາຍເຫດ: ການອະນຸຍາດອາດບໍ່ຖືກບັງຄັບ ໃນບໍລິການເຄືອຂ່າຍສັງຄອມອອນລາຍທຸກອັນ."</string>
- <string name="permlab_readCalendar" msgid="5972727560257612398">"ອ່ານກຳນົດການໃນປະຕິທິນຮວມທັງຂໍ້ມູນຄວາມລັບ"</string>
- <string name="permdesc_readCalendar" product="tablet" msgid="4216462049057658723">"ອະນຸຍາດໃຫ້ແອັບຯ ອ່ານການນັດໝາຍທັງໝົດທີ່ມີບັນທຶກໃນແທັບເລັດຂອງທ່ານ, ຮວມທັງຂອງໝູ່ ຫຼືໝູ່ທີ່ເຮັດວຽກນຳກັນໄດ້ ເຊິ່ງອາດເຮັດໃຫ້ແອັບຯສາມາດສົ່ງຕໍ່ ຫຼືບັນທຶກຂໍ້ມູນປະຕິທິນຂອງທ່ານ ບໍ່ວ່າຈະເປັນເລື່ອງຄວາມລັບ ຫຼືເລື່ອງລະອຽດອ່ອນແບບໃດກໍຕາມ."</string>
- <string name="permdesc_readCalendar" product="default" msgid="7434548682470851583">"ອະນຸຍາດໃຫ້ແອັບຯ ອ່ານກຳນົດການໃນປະຕິທິນທັງໝົດ ທີ່ເກັບໄວ້ໃນໂທລະສັບຂອງທ່ານ, ຮວມເຖິງຂອງໝູ່ຄູ່ ຫຼືເພື່ອນຮ່ວມວຽກ. ນີ້ອາດຈະເຮັດໃຫ້ແອັບຯສາມາດເຜີຍແຜ່ ຫຼືບັນທຶກຂໍ້ມູນປະຕິທິນຂອງທ່ານ, ໂດຍບໍ່ຄຳນຶງເຖິງ ຄວາມລະອຽດອ່ອນ ຫຼືຄວາມລັບໃດໆໄດ້."</string>
- <string name="permlab_writeCalendar" msgid="8438874755193825647">"ເພີ່ມ ຫຼືແກ້ໄຂນັດໝາຍໃນປະຕິທິນ ແລະສົ່ງອີເມວຫາຜູ່ເຂົ້າຮ່ວມໂດຍບໍ່ຕ້ອງໃຫ້ເຈົ້າຂອງຮັບຮູ້"</string>
- <string name="permdesc_writeCalendar" product="tablet" msgid="6679035520113668528">"ອະນຸຍາດໃຫ້ແອັບຯເພີ່ມ, ລຶບ ແລະປ່ຽນກິດຈະກຳທີ່ທ່ານສາມາດແກ້ໄຂ ໃນແທັບເລັດຂອງທ່ານໄດ້ ຮວມທັງກິດຈະກຳຂອງໝູ່ ຫຼືໝູ່ຮ່ວມເຮັດວຽກ ເຊິ່ງອາດອະນຸຍາດໃຫ້ແອັບຯສົ່ງຂໍ້ຄວາມທີ່ຄືກັບວ່າ ມາຈາກເຈົ້າຂອງປະຕິທິນ ຫຼືແກ້ໄຂການນັດໝາຍໄດ້ ໂດຍບໍ່ໃຫ້ເຈົ້າຂອງຮັບຮູ້."</string>
- <string name="permdesc_writeCalendar" product="default" msgid="2324469496327249376">"ອະນຸຍາດໃຫ້ແອັບຯ ເພີ່ມ, ລຶບ, ປ່ຽນແປງນັດໝາຍທີ່ທ່ານສາມາດແກ້ໄຂໄດ້ໃນໂທລະສັບຂອງທ່ານ, ຮວມທັງຂອງໝູ່ຄູ່ ຫຼືເພື່ອນຮ່ວມວຽກ. ນີ້ອາດເຮັດໃຫ້ແອັບຯສາມາດສົ່ງຂໍ້ຄວາມ ທີ່ເບິ່ງຄືວ່າມາຈາກເຈົ້າຂອງປະຕິທິນ ຫຼືແກ້ໄຂນັດໝາຍໂດຍທີ່ທ່ານບໍ່ໄດ້ຮັບຮູ້ໄດ້."</string>
- <string name="permlab_accessMockLocation" msgid="8688334974036823330">"ຈຳລອງແຫລ່ງຂໍ້ມູນສະຖານທີ່ເພື່ອການທົດສອບ"</string>
- <string name="permdesc_accessMockLocation" msgid="5808711039482051824">"ສ້າງແຫລ່ງຂໍ້ມູນຈຳລອງຂອງສະຖານທີ່ ເພື່ອການທົດສອບ ຫຼືຕິດຕັ້ງແຫລ່ງຂໍ້ມູນສະຖານທີ່ໃໝ່. ນີ້ຈະອະນຸຍາດໃຫ້ແອັບຯສາມາດຂຽນທັບຂໍ້ມູນຂອງສະຖານທີ່ ແລະ/ຫຼື ຂໍ້ມູນທີ່ສົ່ງກັບມາຈາກແຫລ່ງຂໍ້ມູນສະຖານທີ່ອື່ນ ເຊັ່ນ: GPS ຫຼືແຫລ່ງຂໍ້ມູນສະຖານທີ່ອື່ນໄດ້."</string>
- <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"ເຂົ້າເຖິງຄຳສັ່ງຜູ່ໃຫ້ບໍລິການພິກັດສະຖານທີ່"</string>
- <string name="permdesc_accessLocationExtraCommands" msgid="5945166642335800763">"ອະນຸຍາດໃຫ້ແອັບຯ ເຂົ້າເຖິງຄຳສັ່ງເພີ່ມເຕີມຂອງຜູ່ໃຫ້ບໍລິການສະຖານທີ່. ນີ້ອາດຈະເປັນການເຮັດໃຫ້ແອັບຯ ລົບກວນການເຮັດວຽກຂອງ GPS ຫຼືແຫລ່ງຂໍ້ມູນສະຖານທີ່ອື່ນໆໄດ້."</string>
- <string name="permlab_installLocationProvider" msgid="6578101199825193873">"ສິດໃນການຕິດຕັ້ງແຫຼ່ງສະໜອງສະຖານທີ່"</string>
- <string name="permdesc_installLocationProvider" msgid="9066146120470591509">"ສ້າງສະຖານທີ່ຈຳລອງເພື່ອການທົດລອງ ຫຼືຕິດຕັ້ງແຫຼ່ງຂໍ້ມູນສະຖານທີ່ໃໝ່. ສິ່ງນີ້ເຮັດໃຫ້ແອັບຯສາມາດຂຽນທັບສະຖານທີ່ ແລະ/ຫຼື ສະຖານະທີ່ໄດ້ຈາກແຫຼ່ງສະຖານທີ່ອື່ນເຊັ່ນ: GPS ຫຼືຜູ່ສະໜອງສະຖານທີ່ຕ່າງໆ."</string>
- <string name="permlab_accessFineLocation" msgid="1191898061965273372">"ສະຖານທີ່ແນ່ນອນ (ອ້າງອີງຈາກ GPS ແລະເຄືອຂ່າຍ)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"ອະນຸຍາດໃຫ້ແອັບຯ ຮັບຕຳແໜ່ງສະຖານທີ່ລະອຽດຂອງທ່ານໂດຍໃຊ້ GPS ຫຼືແຫລ່ງຂໍ້ມູນເຄືອຂ່າຍສະຖານທີ່ເຊັ່ນ: ເສົາສັນຍານມືຖື ແລະ Wi-Fi. ບໍລິການສະຖານທີ່ເຫຼົ່ານີ້ຕ້ອງຖືກເປີດນຳໃຊ້ ແລະແລະມີຂໍ້ມູນໃຫ້ກັບອຸປະກອນຂອງທ່ານ ເພື່ອໃຫ້ແອັບຯໃຊ້ໄດ້. ແອັບຯຕ່າງໆອາດໃຊ້ຂໍ້ມູນນີ້ເພື່ອລະບຸສະຖານທີ່ຢູ່ຂອງທ່ານ ແລະອາດນຳໃຊ້ແບັດເຕີຣີເພີ່ມເຕີມໄດ້."</string>
- <string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"ສະຖານທີ່ໂດຍປະມານ (ອ້າງອີງຈາກເຄືອຂ່າຍ)"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"ອະນຸຍາດໃຫ້ແອັບຯ ລະບຸສະຖານທີ່ໂດຍປະມານຂອງທ່ານ. ສະຖານທີ່ນີ້ໄດ້ຮັບມາຈາກບໍລິການສະຖານທີ່ ໂດຍອາໃສສະຖານທີ່ເຄືອຂ່າຍເຊັ່ນ: ເສົາສັນຍານ ແລະ Wi-Fi. ບໍລິການສະຖານທີ່ເຫຼົ່ານີ້ຕ້ອງຖືກເປີດໃຊ້ ແລະ ມີໃນອຸປະກອນຂອງທ່ານເພື່ອທີ່ແອັບຯຈະສາມາດໃຊ້ພວກມັນໄດ້. ແອັບຯອາດຈະໃຊ້ຄຸນສົມບັດນີ້ ເພື່ອກວດສອບສະຖານທີ່ໂດຍປະມານຂອງທ່ານ."</string>
- <string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"ເຂົ້າເຖິງ SurfaceFlinger"</string>
- <string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"ອະນຸຍາດໃຫ້ແອັບຯນຳໃຊ້ຄວາມສາມາດລະດັບຕ່ຳ SurfaceFlinger"</string>
- <string name="permlab_readFrameBuffer" msgid="6690504248178498136">"ອ່ານເຟຣມບັບເຟີ"</string>
- <string name="permdesc_readFrameBuffer" msgid="4937405521809454680">"ອະນຸຍາດໃຫ້ແອັບຯອ່ານເນື້ອຫາຂອງເຟຣມບັບເຟີ."</string>
- <string name="permlab_accessInputFlinger" msgid="5348635270689553857">"ເຂົ້າເຖິງ InputFlinger"</string>
- <string name="permdesc_accessInputFlinger" msgid="2104864941201226616">"ອະນຸຍາດໃຫ້ແອັບຯນຳໃຊ້ຄວາມສາມາດ InputFlinger ລະດັບຕ່ຳ"</string>
- <string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"ປັບຄ່າການສະແດງຜົນ WiFi"</string>
- <string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"ອະນຸຍາດໃຫ້ແອັບຯຕັ້ງຄ່າ ແລະເຊື່ອມຕໍ່ຈໍສະແດງຜົນ WiFi."</string>
- <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"ຄວບຄຸມການສະແດງ WiFi"</string>
- <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"ອະນຸຍາດໃຫ້ແອັບຯ ຄວບຄຸມຄວາມສາມາດລະດັບຕໍ່າຂອງການສະແດງຜົນ Wifi."</string>
- <string name="permlab_captureAudioOutput" msgid="6857134498402346708">"ບັນທຶກສຽງອອກ"</string>
- <string name="permdesc_captureAudioOutput" msgid="6210597754212208853">"ອະນຸຍາດໃຫ້ແອັບຯບັນທຶກ ແລະປ່ຽນເສັ້ນທາງການປ້ອນຂໍ້ມູນອອກຂອງສຽງ."</string>
- <string name="permlab_captureVideoOutput" msgid="2246828773589094023">"ບັນທຶກວິດີໂອອອກ"</string>
- <string name="permdesc_captureVideoOutput" msgid="359481658034149860">"ອະນຸຍາດໃຫ້ແອັບຯບັນທຶກ ແລະປ່ຽນເສັ້ນທາງການປ້ອນຂໍ້ມູນອອກຂອງວິດີໂອ."</string>
- <string name="permlab_captureSecureVideoOutput" msgid="7815398969303382016">"ບັນທຶກວິດີໂອອອກຢ່າງປອດໄພ"</string>
- <string name="permdesc_captureSecureVideoOutput" msgid="2779793064709350289">"ອະນຸຍາດໃຫ້ແອັບຯບັນທຶກ ແລະປ່ຽນເສັ້ນທາງການປ້ອນຂໍ້ມູນອອກຂອງວິດີໂອທີ່ປອດໄພ."</string>
- <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"ປ່ຽນການຕັ້ງຄ່າສຽງຂອງທ່ານ"</string>
- <string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"ອະນຸຍາດໃຫ້ແອັບຯແກ້ໄຂການຕັ້ງຄ່າສຽງສ່ວນກາງ ເຊັ່ນ: ລະດັບສຽງ ແລະລຳໂພງໃດທີ່ຖືກໃຊ້ສົ່ງສຽງອອກ."</string>
- <string name="permlab_recordAudio" msgid="3876049771427466323">"ບັນທຶກສຽງ"</string>
- <string name="permdesc_recordAudio" msgid="4906839301087980680">"ອະນຸຍາດໃຫ້ແອັບຯບັນທຶກສຽງດ້ວຍໄມໂຄຣໂຟນໄດ້. ການອະນຸຍາດນີ້ຈະເຮັດໃຫ້ແອັບຯ ສາມາດບັນທຶກສຽງໄດ້ຕະຫລອດເວລາ ໂດຍບໍ່ຕ້ອງຖ້າການຢືນຢັນຈາກທ່ານ."</string>
- <string name="permlab_camera" msgid="3616391919559751192">"ຖ່າຍຮູບ ແລະວິດີໂອ"</string>
- <string name="permdesc_camera" msgid="8497216524735535009">"ອະນຸຍາດໃຫ້ແອັບຯຖ່າຍຮູບ ແລະວິດີໂອດ້ວຍກ້ອງຖ່າຍຮູບ. ການອະນຸຍາດນີ້ຈະອານຸຍາດໃຫ້ແອັບຯ ສາມາດໃຊ້ກ້ອງຖ່າຍຮູບໄດ້ຕະຫລອດເວລາ ໂດຍບໍ່ຕ້ອງຖ້າການຢືນຢັນຈາກທ່ານ."</string>
- <string name="permlab_cameraDisableTransmitLed" msgid="2651072630501126222">"ປິດໄຟສັນຍານ LED ເມື່ອນຳໃຊ້ກ້ອງ"</string>
- <string name="permdesc_cameraDisableTransmitLed" msgid="4764585465480295341">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນທີ່ມາກັບໂຕເຄື່ອງ ປິດການນຳໃຊ້ໄຟ LED ໃນກ້ອງຖ່າຍຮູບ."</string>
- <string name="permlab_brick" product="tablet" msgid="2961292205764488304">"ປິດການນຳໃຊ້ແທັບເລັດຖາວອນ"</string>
- <string name="permlab_brick" product="default" msgid="8337817093326370537">"ປິດການເຮັດວຽກຂອງໂທລະສັບຖາວອນ"</string>
- <string name="permdesc_brick" product="tablet" msgid="4334818808001699530">"ອະນຸຍາດໃຫ້ແອັບຯປິດການນຳໃຊ້ແທັບເລັດທັງໝົດໂດຍຖາວອນ. ຄຸນສົມບັດນີ້ເປັນສິ່ງອັນຕະລາຍຫຼາຍ."</string>
- <string name="permdesc_brick" product="default" msgid="5788903297627283099">"ອະນຸຍາດໃຫ້ແອັບຯປິດການນຳໃຊ້ໂທລະສັບທັງໝົດແບບຖາວອນ. ອັນຕະລາຍຫຼາຍ."</string>
- <string name="permlab_reboot" product="tablet" msgid="3436634972561795002">"ບັງຄັບໃຫ້ແທັບເລັດປິດແລ້ວເປີດໃໝ່"</string>
- <string name="permlab_reboot" product="default" msgid="2898560872462638242">"ບັງຄັບໃຫ້ໂທລະສັບປິດແລ້ວເປີດໃໝ່"</string>
- <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"ອະນຸຍາດໃຫ້ແອັບຯ ບັງຄັບແທັບເລັດໃຫ້ປິດເປີດໃໝ່."</string>
- <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"ອະນຸຍາດໃຫ້ແອັບຯ ບັງຄັບໃຫ້ໂທລະສັບປິດເປີດໃໝ່."</string>
- <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"ເຂົ້າເຖິງໄຟລ໌ລະບົບຂອງບ່ອນຈັດເກັບຂໍ້ມູນ USB"</string>
- <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"ເຂົ້າເຖິງໄຟລ໌ລະບົບຂອງ SD card"</string>
- <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"ອະນຸຍາດໃຫ້ແອັບຯ ເຊື່ອມຕໍ່ ແລະຖອນການເຊື່ອມຕໍ່ຈາກລະບົບໄຟລ໌ ຂອງອຸປະກອນເກັບຂໍ້ມູນແບບຖອດອອກໄດ້."</string>
- <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"ລຶບບ່ອນຈັດເກັບຂໍ້ມູນ USB"</string>
- <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"ລຶບ SD card"</string>
- <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"ອະນຸຍາດໃຫ້ແອັບຯ ຟໍແມັດອຸປະກອນເກັບຂໍ້ມູນທີ່ສາມາດຖອດອອກໄດ້."</string>
- <string name="permlab_asec_access" msgid="3411338632002193846">"ດຶງຂໍ້ມູນຈາກບ່ອນຈັດເກັບຂໍ້ມູນພາຍໃນ"</string>
- <string name="permdesc_asec_access" msgid="3094563844593878548">"ອະນຸຍາດໃຫ້ແອັບຯດຶງຂໍ້ມູນໃນບ່ອນຈັດເກັບຂໍ້ມູນພາຍໃນໄດ້."</string>
- <string name="permlab_asec_create" msgid="6414757234789336327">"ສ້າງບ່ອນຈັດເກັບຂໍ້ມູນພາຍໃນ"</string>
- <string name="permdesc_asec_create" msgid="4558869273585856876">"ອະນຸຍາດໃຫ້ແອັບຯສ້າງພື້ນທີ່ຈັດເກັບຂໍ້ມູນພາຍໃນ."</string>
- <string name="permlab_asec_destroy" msgid="526928328301618022">"ທຳລາຍບ່ອນຈັດເກັບຂໍ້ມູນພາຍໃນ"</string>
- <string name="permdesc_asec_destroy" msgid="7218749286145526537">"ອະນຸຍາດໃຫ້ແອັບຯທຳລາຍບ່ອນຈັດເກັບຂໍ້ມູນພາຍໃນ."</string>
- <string name="permlab_asec_mount_unmount" msgid="8877998101944999386">"ເຊື່ອມຕໍ່/ຖອນການເຊື່ອມຕໍ່ ບ່ອນຈັດເກັບຂໍ້ມູນພາຍໃນ"</string>
- <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"ອະນຸຍາດໃຫ້ແອັບຯ ເຊື່ອມຕໍ່/ຖອດການເຊື່ອມຕໍ່ ບ່ອນຈັດເກັບຂໍ້ມູນພາຍໃນ."</string>
- <string name="permlab_asec_rename" msgid="7496633954080472417">"ປ່ຽນຊື່ບ່ອນເກັບຂໍ້ມູນພາຍໃນ"</string>
- <string name="permdesc_asec_rename" msgid="1794757588472127675">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນປ່ຽນຊື່ພື້ນທີ່ເກັບຂໍ້ມູນພາຍໃນ."</string>
- <string name="permlab_vibrate" msgid="7696427026057705834">"ຄວບຄຸມການສັ່ນ"</string>
- <string name="permdesc_vibrate" msgid="6284989245902300945">"ອະນຸຍາດໃຫ້ແອັບຯຄວບຄຸມໂຕສັ່ນ."</string>
- <string name="permlab_flashlight" msgid="2155920810121984215">"ຄວບຄຸມໄຟແຟລດ"</string>
- <string name="permdesc_flashlight" msgid="6522284794568368310">"ອະນຸຍາດໃຫ້ແອັບຯ ຄວບຄຸມໄຟແຟລດ."</string>
- <string name="permlab_manageUsb" msgid="1113453430645402723">"ຈັດການການກຳນົດຄ່າ ແລະການອະນຸຍາດສຳລັບອຸປະກອນ USB"</string>
- <string name="permdesc_manageUsb" msgid="7776155430218239833">"ອະນຸຍາດໃຫ້ແອັບຯ ຈັດການການຕັ້ງຄ່າຄວາມຕ້ອງການ ແລະການກຳນົດສິດສຳລັບອຸປະກອນ USB."</string>
- <string name="permlab_accessMtp" msgid="4953468676795917042">"ໃຊ້ໂປຣໂຕຄອນ MTP"</string>
- <string name="permdesc_accessMtp" msgid="6532961200486791570">"ອະນຸຍາດການເຂົ້າເຖິງ kernel MPT driver ເພື່ອໃຊ້ໂປຣໂຕຄອນ MTP USB."</string>
- <string name="permlab_hardware_test" msgid="4148290860400659146">"ທົດສອບຮາດແວ"</string>
- <string name="permdesc_hardware_test" msgid="6597964191208016605">"ອະນຸຍາດໃຫ້ແອັບຯຄວບຄຸມອຸປະກອນຕໍ່ພ່ວງທັງຫຼາຍ ເພື່ອຈຸດປະສົງການທົດສອບຮາດແວ."</string>
- <string name="permlab_callPhone" msgid="3925836347681847954">"ໂທຫາເບີໂທລະສັບໂດຍກົງ"</string>
- <string name="permdesc_callPhone" msgid="3740797576113760827">"ອະນຸຍາດໃຫ້ແອັບຯໂທຫາເບີໂທລະສັບໄດ້ ໂດຍບໍ່ຕ້ອງຖ້າການດຳເນີນການໃດໆຈາກທ່ານ. ຄຸນສົມບັດນີ້ອາດກໍ່ໃຫ້ເກີດຄ່າໃຊ້ຈ່າຍໃນການໂທທີ່ບໍ່ຄາດຄິດໄດ້. ໝາຍເຫດ: ຄຸນສົມບັດນີ້ບໍ່ໄດ້ເປັນການອະນຸຍາດໃຫ້ແອັບຯ ສາມາດໂທຫາເບີສຸກເສີນ. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດເຮັດໃຫ້ທ່ານ ຕ້ອງເສຍຄ່າໂທໂດຍທີ່ບໍ່ໄດ້ຄາດຄິດ."</string>
- <string name="permlab_callPrivileged" msgid="4198349211108497879">"ໂທໂດຍກົງໄປຫາເບີໂທໃດກໍໄດ້"</string>
- <string name="permdesc_callPrivileged" msgid="1689024901509996810">"ອະນຸຍາດໃຫ້ແອັບຯໂທອອກຫາເບີໂທລະສັບໃດກໍໄດ້, ຮວມທັງເບີສຸກເສີນ, ໂດຍບໍ່ມີການແຊກແຊງຂອງທ່ານ. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດໂທອອກໂດຍບໍ່ຈຳເປັນ ແລະໂທຫາບໍລິການເບີສຸກເສີນແບບຜິດກົດໝາຍ."</string>
- <string name="permlab_performCdmaProvisioning" product="tablet" msgid="4842576994144604821">"ເລີ່ມການຕັ້ງຄ່າແທັບເລັດ CDMA ໂດຍກົງ"</string>
- <string name="permlab_performCdmaProvisioning" product="default" msgid="5604848095315421425">"ເລີ່ມການຕັ້ງຄ່າໂທລະສັບ CDMA ໂດຍກົງ"</string>
- <string name="permdesc_performCdmaProvisioning" msgid="1994193538802314186">"ອະນຸຍາດໃຫ້ແອັບຯເລີ່ມການເຮັດວຽກຂອງ CDMA. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດເລີ່ມການເຮັດວຽກຂອງ CDMA ໂດຍບໍ່ຈຳເປັນ."</string>
- <string name="permlab_locationUpdates" msgid="7785408253364335740">"ຄວບຄຸມການແຈ້ງເຕືອນອັບເດດສະຖານທີ່"</string>
- <string name="permdesc_locationUpdates" msgid="1120741557891438876">"ອະນຸຍາດໃຫ້ແອັບຯ ເປີດ/ປິດ ການເຮັດວຽກຂອງການແຈ້ງເຕືອນອັບເດດສະຖານທີ່ຈາກວິທະຍຸ. ແອັບຯທົ່ວໄປບໍ່ຈຳເປັນຕ້ອງໃຊ້."</string>
- <string name="permlab_checkinProperties" msgid="7855259461268734914">"ເຂົ້າເຖິງຄຸນສົມບັດການເຊັກອິນ"</string>
- <string name="permdesc_checkinProperties" msgid="4024526968630194128">"ອະນຸຍາດໃຫ້ແອັບຯໄດ້ຮັບສິດ ອ່ານ/ຂຽນ ໃສ່ສິ່ງທີ່ອັບໂຫຼດຂຶ້ນໂດຍບໍລິການເຊັກອິນ. ບໍ່ໃຊ້ໃນແອັບຯທົ່ວໄປ."</string>
- <string name="permlab_bindGadget" msgid="776905339015863471">"ເລືອກວິດເຈັດ"</string>
- <string name="permdesc_bindGadget" msgid="8261326938599049290">"ອະນຸຍາດໃຫ້ແອັບຯບອກລະບົບວ່າ ວິດເຈັດໃດສາມາດນຳໃຊ້ໂດຍແອັບຯໃດ. ແອັບຯທີ່ມີການອະນຸຍາດນີ້ຈະມອບການເຂົ້າເຖິງຂໍ້ມູນສ່ວນໂຕ ໃຫ້ກັບແອັບຯອື່ນໄດ້. ບໍ່ໄດ້ໃຊ້ໂດຍແອັບຯທົ່ວໄປ."</string>
- <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"ແກ້ໄຂສະຖານະໂທລະສັບ"</string>
- <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"ອະນຸຍາດໃຫ້ແອັບຯຄວບຄຸມຄວາມສາມາດຂອງໂທລະສັບໃນອຸປະກອນ. ແອັບຯທີ່ມີການອະນຸຍາດນີ້ຈະສາມາດສະລັບເຄືອຂ່າຍ, ເປີດ ຫຼືປິດສັນຍານວິທະຍຸ ແລະຄວາມສາມາດອື່ນທີ່ຄ້າຍກັນ ໂດຍບໍ່ມີການແຈ້ງເຕືອນທ່ານ."</string>
- <string name="permlab_readPhoneState" msgid="9178228524507610486">"ອ່ານສະຖານະ ແລະຂໍ້ມູນລະບຸໂຕຕົນຂອງໂທລະສັບ"</string>
- <string name="permdesc_readPhoneState" msgid="1639212771826125528">"ອະນຸຍາດໃຫ້ແອັບຯ ເຂົ້າເຖິງຄວາມສາມາດການໂທລະສັບຂອງອຸປະກອນ. ການກຳນົດສິດນີ້ເຮັດໃຫ້ແອັບຯສາມາດກວດສອບເບີໂທລະສັບ ແລະ ID ຂອງອຸປະກອນ, ບໍ່ວ່າການໂທຈະຍັງດຳເນີນຢູ່ ແລະເບີປາຍທາງເຊື່ອມຕໍ່ຢູ່ຫຼືບໍ່ກໍຕາມ."</string>
- <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"ຂັດຂວາງບໍ່ໃຫ້ປິດໜ້າຈໍແທັບເລັດ"</string>
- <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"ຂັດຂວາງບໍ່ໃຫ້ໂທລະສັບປິດໜ້າຈໍ"</string>
- <string name="permdesc_wakeLock" product="tablet" msgid="7311319824400447868">"ອະນຸຍາດໃຫ້ແອັບຯ ປ້ອງກັນບໍ່ໃຫ້ປິດໜ້າຈໍແທັບເລັດ."</string>
- <string name="permdesc_wakeLock" product="default" msgid="8559100677372928754">"ອະນຸຍາດໃຫ້ແອັບຯປ້ອງກັນບໍ່ໃຫ້ປິດໜ້າຈໍໂທລະສັບ."</string>
- <string name="permlab_devicePower" product="tablet" msgid="2787034722616350417">"ເປີດ ຫຼືປິດແທັບເລັດ"</string>
- <string name="permlab_devicePower" product="default" msgid="4928622470980943206">"ເປີດ ຫຼືປິດໂທລະສັບ"</string>
- <string name="permdesc_devicePower" product="tablet" msgid="6689862878984631831">"ອະນຸຍາດໃຫ້ແອັບຯເປີດ ຫຼືປິດແທັບເລັດ."</string>
- <string name="permdesc_devicePower" product="default" msgid="6037057348463131032">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນປິດ ຫຼືເປີດແທັບເລັດໄດ້."</string>
- <string name="permlab_factoryTest" msgid="3715225492696416187">"ເຮັດວຽກໃນໂໝດການທົດສອບຂອງໂຮງງານ"</string>
- <string name="permdesc_factoryTest" product="tablet" msgid="3952059318359653091">"ເຮັດວຽກໃນຮູບແບບທົດສອບໃນລະດັບຕໍ່າຂອງຜູ່ຜະລິດ, ອະນຸຍາດການເຂົ້າເຖິງແບບເຕັມຮູບແບບຫາຮາດແວຂອງແທັບເລັດ. ໃຊ້ໄດ້ສະເພາະໃນເວລາທີ່ແທັບເລັດກຳລັງຢູ່ໃນໂໝດ ການທົດສອບຂອງຜູ່ຜະລິດgmqjkoaho."</string>
- <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"ເປີດໃຊ້ໃນແບບການທົດສອບຂອງຜູ່ລະລິດໃນລະດັບຕໍ່າ, ອະນຸຍາດການເຂົ້າເຖິງຮາດແວຂອງໂທລະສັບແບບສົມບູນ. ສະເພາະເມື່ອໂທລະສັບຖືກເປີດໃຊ້ ໃນໂໝດການທົດສອບຂອງຜູ່ຜະລິດເທົ່ານັ້ນ."</string>
- <string name="permlab_setWallpaper" msgid="6627192333373465143">"ຕັ້ງພາບພື້ນຫຼັງ"</string>
- <string name="permdesc_setWallpaper" msgid="7373447920977624745">"ອະນຸຍາດໃຫ້ແອັບຯຕັ້ງຄ່າພາບພື້ນຫຼັງຂອງລະບົບໄດ້."</string>
- <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ປັບຂະໜາດພາບພື້ນຫຼັງຂອງທ່ານ"</string>
- <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"ອະນຸຍາດໃຫ້ແອັບຯ ຕັ້ງຄ່າຄຳແນະນຳຂະໜາດພາບພື້ນຫຼັງ."</string>
- <string name="permlab_masterClear" msgid="2315750423139697397">"ຣີເຊັດລະບົບໃຫ້ເປັນຄ່າເລີ່ມຕົ້ນທີ່ມາຈາກໂຮງງານ"</string>
- <string name="permdesc_masterClear" msgid="3665380492633910226">"ອະນຸຍາດໃຫ້ແອັບຯ ຣີເຊັດຄ່າທັງໝົດຂອງລະບົບໃຫ້ກັບໄປເປັນແບບທີ່ມາຈາກໂຮງງານ, ລຶບຂໍ້ມູນ, ການຕັ້ງຄ່າ ແລະແອັບຯທີ່ໄດ້ຕິດຕັ້ງໄວ້ທັງໝົດ."</string>
- <string name="permlab_setTime" msgid="2021614829591775646">"ຕັ້ງເວລາ"</string>
- <string name="permdesc_setTime" product="tablet" msgid="1896341438151152881">"ອະນຸຍາດໃຫ້ແອັບຯປ່ຽນເວລາຂອງໂມງໃນແທັບເລັດໄດ້."</string>
- <string name="permdesc_setTime" product="default" msgid="1855702730738020">"ອະນຸຍາດໃຫ້ແອັບຯປ່ຽນເວລາຂອງໂມງໃນໂທລະສັບໄດ້."</string>
- <string name="permlab_setTimeZone" msgid="2945079801013077340">"ຕັ້ງເຂດເວລາ"</string>
- <string name="permdesc_setTimeZone" product="tablet" msgid="1676983712315827645">"ອະນຸຍາດໃຫ້ແອັບຯປ່ຽນເຂດເວລາຂອງແທັບເລັດ."</string>
- <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"ອະນຸຍາດໃຫ້ແອັບຯ ປ່ຽນເຂດເວລາຂອງໂທລະສັບ."</string>
- <string name="permlab_accountManagerService" msgid="4829262349691386986">"ເຮັດໜ້າທີ່ເປັນ AccountManagerService"</string>
- <string name="permdesc_accountManagerService" msgid="1948455552333615954">"ອະນຸຍາດໃຫ້ແອັບຯເອີ້ນຫາ AccountAuthenticators."</string>
- <string name="permlab_getAccounts" msgid="1086795467760122114">"ຊອກຫາບັນຊີໃນອຸປະກອນ"</string>
- <string name="permdesc_getAccounts" product="tablet" msgid="2741496534769660027">"ອະນຸຍາດໃຫ້ແອັບຯຮັບເອົາລາຍການຂອງບັນຊີທີ່ຮູ້ຈັກໂດຍແທັບເລັດ. ນີ້ອາດຮວມທັງບັນຊີຕ່າງໆ ທີ່ຖືກສ້າງໂດຍແອັບພລິເຄຊັນທີ່ທ່ານໄດ້ຕິດຕັ້ງໄວ້."</string>
- <string name="permdesc_getAccounts" product="default" msgid="3448316822451807382">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນ ດຶງຂໍ້ມູນລາຍຊື່ຂອງບັນຊີທີ່ໂທລະສັບມີ ເຊິ່ງອາດຮວມເຖິງບັນຊີທີ່ໃດໆທີ່ສ້າງຂຶ້ນ ໂດຍແອັບພລິເຄຊັນທີ່ທ່ານຕິດຕັ້ງໄວ້."</string>
- <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"ສ້າງບັນຊີ ແລະຕັ້ງລະຫັດຜ່ານ"</string>
- <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"ອະນຸຍາດໃຫ້ແອັບຯ ໃຊ້ຄວາມສາມາດຂອງຕົວພິສູດສິດບັນຊີຂອງ AccountManager ຮວມທັງການສ້າງບັນຊີ, ການຂໍເບິ່ງ ແລະຕັ້ງຄ່າລະຫັດຜ່ານ."</string>
- <string name="permlab_manageAccounts" msgid="4983126304757177305">"ສ້າງ ຫຼືລຶບບັນຊີ"</string>
- <string name="permdesc_manageAccounts" msgid="8698295625488292506">"ອະນຸຍາດໃຫ້ແອັບຯດຳເນີນການເຊັ່ນ: ເພີ່ມ ຫຼືລຶບບັນຊີ ແລະລຶບລະຫັດຜ່ານຂອງບັນຊີໄດ້."</string>
- <string name="permlab_useCredentials" msgid="235481396163877642">"ໃຊ້ບັນຊີໃນອຸປະກອນ"</string>
- <string name="permdesc_useCredentials" msgid="7984227147403346422">"ອະນຸຍາດໃຫ້ແອັບຯຮ້ອງຂໍໂທເຄນການພິສູດຢືນຢັນໄດ້."</string>
- <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ເບິ່ງການເຊື່ອມຕໍ່ເຄືອຂ່າຍ"</string>
- <string name="permdesc_accessNetworkState" msgid="8318964424675960975">"ອະນຸຍາດໃຫ້ແອັບຯ ເບິ່ງຂໍ້ມູນກ່ຽວກັບການເຊື່ອມຕໍ່ເຄືອຂ່າຍ ເຊັ່ນວ່າມີເຄືອຂ່າຍໃດແດ່ ແລະໄດ້ເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍໃດ."</string>
- <string name="permlab_createNetworkSockets" msgid="8018758136404323658">"ເຂົ້າເຖິງເຄືອຂ່າຍເຕັມຮູບແບບ"</string>
- <string name="permdesc_createNetworkSockets" msgid="3403062187779724185">"ອະນຸຍາດໃຫ້ແອັບຯສ້າງຊັອກເກັດເຄືອຂ່າຍ ແລະໂປຣໂຕຄອນເຄືອຂ່າຍແບບກຳນົດເອງ. ໂປຣແກຣມທ່ອງເວັບ ແລະແອັບພລິເຄຊັນອື່ນໆຈະສົ່ງຂໍ້ມູນສູ່ອິນເຕີເນັດຢູ່ແລ້ວ ດັ່ງນັ້ນການອະນຸຍາດນີ້ຈຶ່ງບໍ່ຈຳເປັນຕ້ອງໃຊ້ ເພື່ອສົ່ງຂໍ້ມູນສູ່ອິນເຕີເນັດ."</string>
- <string name="permlab_writeApnSettings" msgid="505660159675751896">"ປ່ຽນ/ສະກັດກັ້ນການຕັ້ງຄ່າເຄືອຂ່າຍ ແລະຂໍ້ມູນ"</string>
- <string name="permdesc_writeApnSettings" msgid="5333798886412714193">"ອະນຸຍາດໃຫ້ແອັບຯປ່ຽນການຕັ້ງຄ່າເຄືອຂ່າຍ ແລະສະກັດກັ້ນ ແລະກວດສອບການເດີນທາງຂອງຂໍ້ມູນທັງໝົດ, ຍົກຕົວຢ່າງ: ໃນການປ່ຽນພອດຂອງ Proxy ຂອງ APN ໃດກໍຕາມ. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດຕິດຕາມ, ປ່ຽນແປງ ແລະແກ້ໄຂແພັກເກັດຂອງທ່ານໂດຍທີ່ທ່ານບໍ່ຮູ້ໂຕ."</string>
- <string name="permlab_changeNetworkState" msgid="958884291454327309">"ປ່ຽນການເຊື່ອມຕໍ່ເຄືອຂ່າຍ"</string>
- <string name="permdesc_changeNetworkState" msgid="6789123912476416214">"ອະນຸຍາດໃຫ້ແອັບຯປ່ຽນສະຖານະການເຊື່ອມຕໍ່ຂອງເຄືອຂ່າຍໄດ້."</string>
- <string name="permlab_changeTetherState" msgid="5952584964373017960">"ປ່ຽນການເຊື່ອມຕໍ່ທີ່ປ່ອຍສັນຍານໄວ້"</string>
- <string name="permdesc_changeTetherState" msgid="1524441344412319780">"ອະນຸຍາດໃຫ້ແອັບຯປ່ຽນແປງສະຖານະ ຂອງເຄືອຂ່າຍການເຊື່ອມຕໍ່ອິນເຕີເນັດຜ່ານມືຖື."</string>
- <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"ປ່ຽນການຕັ້ງຄ່າການນຳໃຊ້ຂໍ້ມູນພື້ນຫຼັງ"</string>
- <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"ອະນຸຍາດໃຫ້ແອັບຯປ່ຽນການຕັ້ງຄ່າການໃຊ້ອິນເຕີເນັດ ຂອງແອັບຯທີ່ເຮັດວຽກຢູ່ດ້ານຫຼັງລະບົບ."</string>
- <string name="permlab_accessWifiState" msgid="5202012949247040011">"ເບິ່ງການເຊື່ອມຕໍ່ Wi-Fi"</string>
- <string name="permdesc_accessWifiState" msgid="5002798077387803726">"ອະນຸຍາດໃຫ້ແອັບຯເບິ່ງຂໍ້ມູນກ່ຽວກັບເຄືອຂ່າຍ Wi-Fi ເຊັ່ນວ່າ WiFi ກຳລັງຖືກນຳໃຊ້ຢູ່ບໍ່ ແລະຊື່ຂອງອຸປະກອນ WiFi ທີ່ກຳລັງເຊື່ອມຕໍ່ຢູ່."</string>
- <string name="permlab_changeWifiState" msgid="6550641188749128035">"ເຊື່ອມຕໍ່ ແລະຕັດການເຊື່ອມຕໍ່ຈາກ Wi-Fi"</string>
- <string name="permdesc_changeWifiState" msgid="7137950297386127533">"ອະນຸຍາດໃຫ້ແອັບຯເຊື່ອມຕໍ່ ແລະຕັດການເຊື່ອມຕໍ່ຈາກຈຸດເຊື່ອມຕໍ່ Wi-Fi ແລະໃຫ້ສາມາດປ່ຽນແປງຄ່າຂອງອຸປະກອນສຳລັບເຄືອຂ່າຍ Wi-Fi."</string>
- <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"ອະນຸຍາດການຮັບ Wi-Fi Multicast"</string>
- <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"ອະນຸຍາດໃຫ້ແອັບຯຮັບຂໍ້ມູນແພັກເກັດ ທີ່ຖືກສົ່ງ ໄປຫາທຸກອຸປະກອນໃນເຄືອຂ່າຍ WiFi ໂດຍການນຳໃຊ້ການກະຈາຍຂໍ້ມູນໃນວົງກວ້າງ, ບໍ່ແມ່ນສະເພາະແທັບເລັດຂອງທ່ານ. ມັນໃຊ້ພະລັງງານຫຼາຍກວ່າໂຫມດກະຈາຍຂໍ້ມູນແບບໂດຍກົງ."</string>
- <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"ອະນຸຍາດໃຫ້ແອັບຯ ຮັບຂໍ້ມູນແພັກເກດທີ່ສົ່ງໄປໃຫ້ທຸກອຸປະກອນໃນເຄືອຂ່າຍ Wi-Fi ໂດຍໃຊ້ທີ່ຢູ່ multicast ບໍ່ສະເພາະພຽງໂທລະສັບຂອງທ່ານ, ເຊິ່ງຈະໃຊ້ພະລັງງານຫຼາຍກວ່າໃນໂໝດທີ່ບໍ່ແມ່ນ multicast."</string>
- <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"ເຂົ້າເຖິງການຕັ້ງຄ່າ Bluetooth"</string>
- <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"ອະນຸຍາດໃຫ້ແອັບຯຕັ້ງຄ່າແທັບເລັດ Bluetooth ພາຍໃນ ແລະຊອກຫາ ແລະເຊື່ອມຕໍ່ໄວ້ກັບອຸປະກອນພາຍນອກ."</string>
- <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"ອະນຸຍາດໃຫ້ແອັບຯຕັ້ງຄ່າ Bluetooth ໃນໂທລະສັບ ເພື່ອຊອກຫາ ແລະການເຊື່ອມຕໍ່ກັບອຸປະກອນໄຮ້ສາຍພາຍນອກ."</string>
- <string name="permlab_accessWimaxState" msgid="4195907010610205703">"ເຊື່ອມຕໍ່ ແລະຕັດການເຊື່ອມຕໍ່ຈາກ WiMAX"</string>
- <string name="permdesc_accessWimaxState" msgid="6360102877261978887">"ອະນຸຍາດໃຫ້ແອັບຯກວດເບິ່ງວ່າ WiMAX ຖືກເປີດນຳໃຊ້ຢູ່ບໍ່ ແລະຂໍ້ມູນກ່ຽວກັບເຄືອຂ່າຍ WiMAX ອື່ນໆທີ່ກຳລັງເຊື່ອມຕໍ່ຢູ່."</string>
- <string name="permlab_changeWimaxState" msgid="2405042267131496579">"ປ່ຽນສະຖານະ WiMAX"</string>
- <string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"ອະນຸຍາດໃຫ້ແອັບຯເຊື່ອມຕໍ່ ແລະຕັດການເຊື່ອມຕໍ່ແທັບເລັດຈາກເຄືອຂ່າຍ WiMAX."</string>
- <string name="permdesc_changeWimaxState" product="default" msgid="697025043004923798">"ອະນຸຍາດໃຫ້ແອັບຯເຊື່ອມຕໍ່ ແລະຕັດການເຊື່ອມຕໍ່ຂອງໂທລະສັບຈາກເຄືອຂ່າຍ WiMax ໄດ້."</string>
- <string name="permlab_bluetooth" msgid="6127769336339276828">"ຈັບຄູ່ກັບອຸປະກອນ Bluetooth"</string>
- <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"ອະນຸຍາດໃຫ້ແອັບຯເບິ່ງການຕັ້ງຄ່າຂອງ Bluetooth ໃນແທັບເລັດ ຕະຫຼອດຈົນເຊື່ອມຕໍ່ ແລະຍອມຮັບການເຊື່ອມຕໍ່ກັບອຸປະກອນທີ່ຈັບຄູ່ກັນແລ້ວ."</string>
- <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"ອະນຸຍາດໃຫ້ແອັບຯເບິ່ງການຕັ້ງຄ່າຂອງ Bluetooth ໃນໂທລະສັບ, ຮວມທັງໃຫ້ສ້າງ ແລະຮັບການເຊື່ອມຕໍ່ຈາກອຸປະກອນທີ່ຈັບຄູ່ກັນ."</string>
- <string name="permlab_nfc" msgid="4423351274757876953">"ຄວບຄຸມ Near Field Communication"</string>
- <string name="permdesc_nfc" msgid="7120611819401789907">"ອະນຸຍາດໃຫ້ແອັບຯຕິດຕໍ່ສື່ສານກັບປ້າຍກຳກັບ, ບັດ ແລະໂຕອ່ານຂອງການສື່ສານໄລຍະສັ້ນ (NFC)."</string>
- <string name="permlab_disableKeyguard" msgid="3598496301486439258">"ປິດການລັອກໜ້າຈໍ"</string>
- <string name="permdesc_disableKeyguard" msgid="6034203065077122992">"ອະນຸຍາດໃຫ້ແອັບຯປິດການເຮັດວຽກຂອງປຸ່ມລັອກ ແລະລະບົບຄວາມປອດໄພຂອງລະຫັດຜ່ານທີ່ເຊື່ອມໂຍງກັນ. ໂຕຢ່າງ: ໂທລະສັບຈະປິດການເຮັດວຽກຂອງປຸ່ມລັອກເມື່ອມີສາຍໂທເຂົ້າ ຈາກນັ້ນຈຶ່ງເປີດໃຊ້ໄດ້ອີກເມື່ອວາງສາຍແລ້ວ."</string>
- <string name="permlab_readSyncSettings" msgid="6201810008230503052">"ອ່ານການຕັ້ງຄ່າຊິ້ງຂໍ້ມູນ"</string>
- <string name="permdesc_readSyncSettings" msgid="2706745674569678644">"ອະນຸຍາດໃຫ້ແອັບຯ ອ່ານການຕັ້ງຄ່າການຊິ້ງຂໍ້ມູນຂອງບັນຊີໄດ້. ຕົວຢ່າງເຊັ່ນ: ມັນຈະສາມາດກວດສອບໄດ້ແອັບຯ People ຖືກຊິ້ງຂໍ້ມູນກັບບັນຊີໃດນຶ່ງແລ້ວຫຼືຍັງ."</string>
- <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"ສະລັບການເປີດ ແລະປິດການຊິ້ງຂໍ້ມູນ"</string>
- <string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"ອະນຸຍາດໃຫ້ແອັບຯແກ້ໄຂການຕັ້ງຄ່າການຊິ້ງຂໍ້ມູນສຳລັບບັນຊີ. ຍົກຕົວຢ່າງ: ມັນສາມາດໃຊ້ເພື່ອເປີດນຳໃຊ້ການຊິ້ງຂໍ້ມູນຂອງ People ແອັບຯກັບບັນຊີໃດນຶ່ງໄດ້."</string>
- <string name="permlab_readSyncStats" msgid="7396577451360202448">"ອ່ານສະຖິຕິການຊິ້ງຂໍ້ມູນ"</string>
- <string name="permdesc_readSyncStats" msgid="1510143761757606156">"ອະນຸຍາດໃຫ້ແອັບຯ ອ່ານສະຖິຕິການຊິ້ງຂໍ້ມູນຂອງບັນຊີໃດນຶ່ງ ຮວມທັງປະຫວັດການຊິ້ງຂໍ້ມູນ ແລະຈຳນວນຂໍ້ມູນທີ່ຖືກຊິ້ງ."</string>
- <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"ອ່ານຂໍ້ມູນຟີດທີ່ສະໝັກໄວ້"</string>
- <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"ອະນຸຍາດໃຫ້ແອັບຯ ດຶງລາຍລະອຽດກ່ຽວກັບຂໍ້ມູນທີ່ກຳລັງຊິ້ງຢູ່."</string>
- <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"ຂຽນຂໍ້ມູນຟີດທີ່ສະໝັກໄວ້"</string>
- <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"ອະນຸຍາດໃຫ້ແອັບຯ ແກ້ໄຂຟີດທີ່ຖືກຊິ້ງຂໍ້ມູນເມື່ອໄວໆນີ້ຂອງທ່ານ. ແອັບຯທີ່ເປັນອັນຕະລາຍ ອາດປ່ຽນແປງຟີດຂອງທ່ານທີ່ຊິ້ງມາ."</string>
- <string name="permlab_readDictionary" msgid="4107101525746035718">"ອ່ານຄຳສັບທີ່ທ່ານເພີ່ມໃສ່ວັດຈະນານຸກົມ"</string>
- <string name="permdesc_readDictionary" msgid="659614600338904243">"ອະນຸຍາດແອັບຯອ່ານຄຳສັບ, ຊື່ ແລະປະໂຫຍກທັງໝົດທີ່ຜູ່ໃຊ້ອາດບັນທຶກໄວ້ໃນວັດຈະນານຸກົມຜູ່ໃຊ້."</string>
- <string name="permlab_writeDictionary" msgid="2183110402314441106">"ເພີ່ມຄຳສັບໃສ່ວັດຈະນານຸກົມທີ່ຜູ່ໃຊ້ກຳນົດເອງ"</string>
- <string name="permdesc_writeDictionary" msgid="8185385716255065291">"ອະນຸຍາດໃຫ້ແອັບຯຂຽນຄຳສັບໃໝ່ ໃສ່ວັດຈະນານຸກົມຜູ່ໃຊ້."</string>
- <string name="permlab_sdcardRead" product="nosdcard" msgid="8235341515605559677">"ທົດສອບການເຂົ້າເຖິງບ່ອນຈັດເກັບຂໍ້ມູນທີ່ຖືກປ້ອງກັນໄວ້"</string>
- <string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"ທົດສອບການເຂົ້າເຖິງບ່ອນຈັດເກັບຂໍ້ມູນທີ່ຖືກປ້ອງກັນໄວ້"</string>
- <string name="permdesc_sdcardRead" product="nosdcard" msgid="3642473292348132072">"ອະນຸຍາດໃຫ້ແອັບຯທົດສອບການອະນຸຍາດຂອງ ບ່ອນຈັດເກັບຂໍ້ມູນ USB ເຊິ່ງຈະຖືກໃຊ້ໃນອຸປະກອນໃນອະນາຄົດ."</string>
- <string name="permdesc_sdcardRead" product="default" msgid="5914402684685848828">"ອະນຸຍາດໃຫ້ແອັບຯ ທົດລອງສິດໃດນຶ່ງສຳລັບ SD card ທີ່ຈະມີໃນອຸປະກອນໃນອະນາຄົດ."</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"ແກ້ໄຂ ຫຼືລຶບເນື້ອຫາໃນບ່ອນຈັດເກັບຂໍ້ມູນ USB ຂອງທ່ານ"</string>
- <string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"ແກ້ໄຂ ຫຼືລຶບເນື້ອຫາຂອງ SD card ຂອງທ່ານ"</string>
- <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"ອະນຸຍາດໃຫ້ແອັບຯຂຽນຂໍ້ມູນໃສ່ບ່ອນຈັດເກັບຂໍ້ມູນ USB."</string>
- <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"ອະນຸຍາດໃຫ້ແອັບຯຂຽນຂໍ້ມູນລົງໃນ SD card ໄດ້."</string>
- <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"ແກ້ໄຂ/ລຶບ ເນື້ອຫາບ່ອນຈັດເກັບສື່ພາຍໃນ"</string>
- <string name="permdesc_mediaStorageWrite" product="default" msgid="8189160597698529185">"ອະນຸຍາດໃຫ້ແອັບຯແກ້ໄຂເນື້ອຫາຂອງໂຕເກັບຂໍ້ມູນໃນໂຕເຄື່ອງ."</string>
- <string name="permlab_manageDocs" product="default" msgid="5778318598448849829">"ຈັດການພື້ນທີ່ຈັດເກັບເອກະສານ"</string>
- <string name="permdesc_manageDocs" product="default" msgid="8704323176914121484">"ອະນຸຍາດໃຫ້ແອັບຯຈັດການກັບບ່ອນຈັດເກັບຂໍ້ມູນເອກະສານ."</string>
- <string name="permlab_sdcardAccessAll" msgid="8150613823900460576">"ເຂົ້າເຖິງພື້ນທີ່ຈັດເກັບຂໍ້ມູນພາຍນອກຂອງທຸກຜູ່ໃຊ້"</string>
- <string name="permdesc_sdcardAccessAll" msgid="3215208357415891320">"ອະນຸຍາດໃຫ້ແອັບຯ ເຂົ້າເຖິງພື້ນທີ່ຈັດເກັບຂໍ້ມູນພາຍນອກ ສຳລັບທຸກຜູ່ໃຊ້."</string>
- <string name="permlab_cache_filesystem" msgid="5656487264819669824">"ເຂົ້າເຖິງໄຟລ໌ cache ຂອງລະບົບ"</string>
- <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"ອະນຸຍາດໃຫ້ແອັບຯ ອ່ານ ແລະຂຽນ ລະບົບໄຟລ໌ແຄດ."</string>
- <string name="permlab_use_sip" msgid="5986952362795870502">"ສົ່ງ/ຮັບ ການໂທຜ່ານອິນເຕີເນັດ"</string>
- <string name="permdesc_use_sip" msgid="4717632000062674294">"ອະນຸຍາດໃຫ້ແອັບຯ ໃຊ້ບໍລິການ SIP ເພື່ອ ໂທອອກ/ຮັບສາຍ ການໂທຜ່ານອິນເຕີເນັດ."</string>
- <string name="permlab_readNetworkUsageHistory" msgid="7862593283611493232">"ອ່ານປະຫວັດການນຳໃຊ້ເຄືອຂ່າຍ"</string>
- <string name="permdesc_readNetworkUsageHistory" msgid="7689060749819126472">"ອະນຸຍາດໃຫ້ແອັບຯ ອ່ານປະຫວັດການນຳໃຊ້ເຄືອຂ່າຍຂອງແອັບຯ ແລະເຄືອຂ່າຍໃດນຶ່ງ."</string>
- <string name="permlab_manageNetworkPolicy" msgid="2562053592339859990">"ຈັດການນະໂຍບາຍເຄືອຂ່າຍ"</string>
- <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"ອະນຸຍາດໃຫ້ແອັບຯຈັດການກັບນະໂຍບາຍເຄືອຂ່າຍ ແລະກຳນົດກົດລະບຽບສະເພາະຂອງແອັບຯ."</string>
- <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"ແກ້ໄຂການຄຳນວນການນຳໃຊ້ເຄືອຂ່າຍ"</string>
- <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"ອະນຸຍາດໃຫ້ແອັບຯແກ້ໄຂວິທີການບັນທຶກບັນຊີ ການນຳໃຊ້ເຄືອຂ່າຍຂອງແອັບຯ. ແອັບຯທົ່ວໄປບໍ່ຈຳເປັນຕ້ອງໃຊ້."</string>
- <string name="permlab_markNetworkSocket" msgid="3658527214914959749">"ດັດ​ແປງຊັອກເກັດມາກ"</string>
- <string name="permdesc_markNetworkSocket" msgid="7655568433696356578">"ອະ​ນຸ​ຍາດ​ໃຫ້ແອັບຯແກ້ໄຂຊັອກເກັດທີ່ໝາຍໄວ້ສຳລັບກຳນົດເສັ້ນທາງ"</string>
- <string name="permlab_accessNotifications" msgid="7673416487873432268">"ເຂົ້າເຖິງການແຈ້ງເຕືອນ"</string>
- <string name="permdesc_accessNotifications" msgid="458457742683431387">"ອະນຸຍາດໃຫ້ແອັບຯດຶງຂໍ້ມູນ, ກວດສອບ ແລະລຶບລ້າງການແຈ້ງເຕືອນ ຮວມທັງພວກທີ່ໂພສໂດຍແອັບຯອື່ນໆນຳ."</string>
- <string name="permlab_bindNotificationListenerService" msgid="7057764742211656654">"ເຊື່ອມໂຍງກັບບໍລິການໂຕຟັງການແຈ້ງເຕືອນ"</string>
- <string name="permdesc_bindNotificationListenerService" msgid="985697918576902986">"ອະນຸຍາດໃຫ້ເຈົ້າຂອງເຊື່ອມໂຍງສ່ວນຕິດຕໍ່ລະດັບເທິງສຸດ ຂອງຜູ່ຟັງບໍລິການການແຈ້ງເຕືອນ. ບໍ່ຈຳເປັນສຳລັບແອັບຯທົ່ວໄປ."</string>
- <string name="permlab_invokeCarrierSetup" msgid="3699600833975117478">"ຮ້ອງຂໍແອັບຯປັບຄ່າທີ່ສະໜອງໂດຍຜູ່ໃຫ້ບໍລິການ"</string>
- <string name="permdesc_invokeCarrierSetup" msgid="4159549152529111920">"ອະ​ນຸ​ຍາດ​ໃຫ້​ເຈົ້າຂອງຮ້ອງຂໍແອັບຯປັບຄ່າທີ່ສະໜອງໂດຍຜູ່ໃຫ້ບໍລິການ. ບໍ່ໜ້າຈະຕ້ອງການສຳລັບແອັບຯທົ່ວໄປ."</string>
- <string name="permlab_accessNetworkConditions" msgid="8206077447838909516">"ຕິດຕາມເພື່ອສັງເກດສະພາບຂອງເຄືອຂ່າຍ"</string>
- <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັ່ນຕິດຕາມເພື່ອສັງເກດສະພາບຂອງເຄືອຂ່າຍ. ປົກກະຕິແລ້ວແອັບຯທຳມະດາຈະບໍ່ຕ້ອງການໃຊ້."</string>
- <string name="policylab_limitPassword" msgid="4497420728857585791">"ຕັ້ງຄ່າກົດຂອງລະຫັດຜ່ານ"</string>
- <string name="policydesc_limitPassword" msgid="3252114203919510394">"ຄວບຄຸມຄວາມຍາວຂອງໂຕອັກສອນທີ່ສາມາດໃຊ້ກັບລະຫັດປົດລັອກໜ້າຈໍ"</string>
- <string name="policylab_watchLogin" msgid="914130646942199503">"ຕິດຕາມການພະຍາຍາມປົດລັອກໜ້າຈໍ"</string>
- <string name="policydesc_watchLogin" product="tablet" msgid="3215729294215070072">"ຕິດຕາມເບິ່ງຈຳນວນການພິມລະຫັດຜ່ານທີ່ບໍ່ຖືກຕ້ອງ ໃນເວລາປົດລັອກໜ້າຈໍ ແລະລັອກແທັບເລັດ ຫຼືລຶບຂໍ້ມູນທັງໝົດຂອງແທັບເລັດ ຖ້າມີການພິມລະຫັດຜ່ານບໍ່ຖືກຕ້ອງຫຼາຍເທື່ອເກີນໄປ."</string>
- <string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"ຕິດຕາມເບິ່ງຈຳນວນການພິມລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ ໃນເວລາປົດລັອກໜ້າຈໍ ແລະລັອກໂທລະສັບ ຫຼືລຶບຂໍ້ມູນທັງໝົດຂອງໂປລະສັບ ຖ້າມີການພິມລະຫັດຜ່ານບໍ່ຖືກຕ້ອງຫຼາຍເທື່ອເກີນໄປ."</string>
- <string name="policylab_resetPassword" msgid="2620077191242688955">"ປ່ຽນລະຫັດລັອກໜ້າຈໍ"</string>
- <string name="policydesc_resetPassword" msgid="605963962301904458">"ປ່ຽນລະຫັດປົດລັອກໜ້າຈໍ"</string>
- <string name="policylab_forceLock" msgid="2274085384704248431">"ລັອກໜ້າຈໍ"</string>
- <string name="policydesc_forceLock" msgid="1141797588403827138">"ຄວບຄຸມວ່າໜ້າຈໍຄວນຈະຖືກລັອກເມື່ອໃດ ແລະແນວໃດ"</string>
- <string name="policylab_wipeData" msgid="3910545446758639713">"ລຶບຂໍ້ມູນທັງໝົດ"</string>
- <string name="policydesc_wipeData" product="tablet" msgid="4306184096067756876">"ລຶບຂໍ້ມູນຂອງແທັບເລັດໂດຍບໍ່ມີການເຕືອນ ໂດຍການຣີເຊັດກັບຄືນໃຫ້ເປັນແບບທີ່ມາຈາກໂຮງງານ."</string>
- <string name="policydesc_wipeData" product="default" msgid="5096895604574188391">"ລຶບຂໍ້ມູນຂອງໂທລະສັບໂດຍບໍ່ມີການເຕືອນ ໂດຍການຣີເຊັດກັບຄືນໃຫ້ເປັນແບບທີ່ມາຈາກໂຮງງານ."</string>
- <string name="policylab_setGlobalProxy" msgid="2784828293747791446">"ປ່ຽນ proxy ຮວມຂອງອຸປະກອນ"</string>
- <string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"ຕັ້ງໃຫ້ພຣັອກຊີສ່ວນກາງຂອງອຸປະກອນ ທີ່ຈະໃຊ້ໃນຂະນະທີ່ເປີດນຳໃຊ້ນະໂຍບາຍ. ສະເເພາະຜູ່ເບິ່ງແຍງອຸປະກອນຄົນທຳອິດເທົ່ານັ້ນ ທີ່ຈະຕັ້ງຄ່າພຣັອກຊີສ່ວນກາງທີ່ມີຜົນນຳໃຊ້ໄດ້."</string>
- <string name="policylab_expirePassword" msgid="885279151847254056">"ຕັ້ງວັນໝົດກຳນົດຂອງລະຫັດລັອກໜ້າຈໍ"</string>
- <string name="policydesc_expirePassword" msgid="1729725226314691591">"ຄວບຄຸມຄວາມຖີ່ໃນການປ່ຽນລະຫັດໜ້າຈໍລັອກ."</string>
- <string name="policylab_encryptedStorage" msgid="8901326199909132915">"ຕັ້ງຄ່າການເຂົ້າລະຫັດທີ່ເກັບຂໍ້ມູນ"</string>
- <string name="policydesc_encryptedStorage" msgid="2637732115325316992">"ຮຽກຮ້ອງໃຫ້ມີການເຂົ້າລະຫັດຂໍ້ມູນທີ່ຈັດເກັບໃນແອັບຯ"</string>
- <string name="policylab_disableCamera" msgid="6395301023152297826">"ປິດການໃຊ້ກ້ອງ"</string>
- <string name="policydesc_disableCamera" msgid="2306349042834754597">"ຫ້າມການໃຊ້ກ້ອງຈາກທຸກອຸປະກອນ."</string>
- <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"ປິດການນຳໃຊ້ການລັອກປຸ່ມ"</string>
- <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"ປ້ອງກັນການໃຊ້ຄວາມສາມາດບາງສ່ວນໃນການລັອກປຸ່ມ."</string>
- <string-array name="phoneTypes">
- <item msgid="8901098336658710359">"ເຮືອນ"</item>
- <item msgid="869923650527136615">"ມືຖື"</item>
- <item msgid="7897544654242874543">"ວຽກ"</item>
- <item msgid="1103601433382158155">"ແຟັກບ່ອນເຮັດວຽກ"</item>
- <item msgid="1735177144948329370">"ແຟັກເຮືອນ"</item>
- <item msgid="603878674477207394">"ເພກເຈີ"</item>
- <item msgid="1650824275177931637">"ອື່ນໆ"</item>
- <item msgid="9192514806975898961">"ກຳນົດເອງ"</item>
- </string-array>
- <string-array name="emailAddressTypes">
- <item msgid="8073994352956129127">"ເຮືອນ"</item>
- <item msgid="7084237356602625604">"ວຽກ"</item>
- <item msgid="1112044410659011023">"ອື່ນໆ"</item>
- <item msgid="2374913952870110618">"ກຳນົດເອງ"</item>
- </string-array>
- <string-array name="postalAddressTypes">
- <item msgid="6880257626740047286">"ເຮືອນ"</item>
- <item msgid="5629153956045109251">"ວຽກ"</item>
- <item msgid="4966604264500343469">"ອື່ນໆ"</item>
- <item msgid="4932682847595299369">"ກຳນົດເອງ"</item>
- </string-array>
- <string-array name="imAddressTypes">
- <item msgid="1738585194601476694">"ເຮືອນ"</item>
- <item msgid="1359644565647383708">"ບ່ອນເຮັດວຽກ"</item>
- <item msgid="7868549401053615677">"ອື່ນໆ"</item>
- <item msgid="3145118944639869809">"ກຳນົດເອງ"</item>
- </string-array>
- <string-array name="organizationTypes">
- <item msgid="7546335612189115615">"ບ່ອນເຮັດວຽກ"</item>
- <item msgid="4378074129049520373">"ອື່ນໆ"</item>
- <item msgid="3455047468583965104">"ກຳນົດເອງ"</item>
- </string-array>
- <string-array name="imProtocols">
- <item msgid="8595261363518459565">"AIM"</item>
- <item msgid="7390473628275490700">"Windows Live"</item>
- <item msgid="7882877134931458217">"Yahoo"</item>
- <item msgid="5035376313200585242">"Skype"</item>
- <item msgid="7532363178459444943">"QQ"</item>
- <item msgid="3713441034299660749">"Google Talk"</item>
- <item msgid="2506857312718630823">"ICQ"</item>
- <item msgid="1648797903785279353">"Jabber"</item>
- </string-array>
- <string name="phoneTypeCustom" msgid="1644738059053355820">"ກຳນົດເອງ"</string>
- <string name="phoneTypeHome" msgid="2570923463033985887">"ເຮືອນ"</string>
- <string name="phoneTypeMobile" msgid="6501463557754751037">"ມືຖື"</string>
- <string name="phoneTypeWork" msgid="8863939667059911633">"ບ່ອນເຮັດວຽກ"</string>
- <string name="phoneTypeFaxWork" msgid="3517792160008890912">"ແຟັກບ່ອນເຮັດວຽກ"</string>
- <string name="phoneTypeFaxHome" msgid="2067265972322971467">"ແຟັກເຮືອນ"</string>
- <string name="phoneTypePager" msgid="7582359955394921732">"ເພກເຈີ"</string>
- <string name="phoneTypeOther" msgid="1544425847868765990">"ອື່ນໆ"</string>
- <string name="phoneTypeCallback" msgid="2712175203065678206">"ໂທກັບ"</string>
- <string name="phoneTypeCar" msgid="8738360689616716982">"ລົດ"</string>
- <string name="phoneTypeCompanyMain" msgid="540434356461478916">"ເບີໂທຫຼັກບໍລິສັດ"</string>
- <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
- <string name="phoneTypeMain" msgid="6766137010628326916">"ຫຼັກ"</string>
- <string name="phoneTypeOtherFax" msgid="8587657145072446565">"ແຟັກອື່ນໆ"</string>
- <string name="phoneTypeRadio" msgid="4093738079908667513">"ວິທະຍຸ"</string>
- <string name="phoneTypeTelex" msgid="3367879952476250512">"ໂທລະສານ"</string>
- <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
- <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"ໂທລະສັບມືຖືບ່ອນເຮັດວຽກ"</string>
- <string name="phoneTypeWorkPager" msgid="649938731231157056">"ເພກເຈີບ່ອນເຮັດວຽກ"</string>
- <string name="phoneTypeAssistant" msgid="5596772636128562884">"ຜູ່ຊ່ວຍ"</string>
- <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
- <string name="eventTypeCustom" msgid="7837586198458073404">"ກຳນົດເອງ"</string>
- <string name="eventTypeBirthday" msgid="2813379844211390740">"ວັນເດືອນປີເກີດ"</string>
- <string name="eventTypeAnniversary" msgid="3876779744518284000">"ວັນຄົບຮອບ"</string>
- <string name="eventTypeOther" msgid="7388178939010143077">"ອື່ນໆ"</string>
- <string name="emailTypeCustom" msgid="8525960257804213846">"ກຳນົດເອງ"</string>
- <string name="emailTypeHome" msgid="449227236140433919">"ເຮືອນ"</string>
- <string name="emailTypeWork" msgid="3548058059601149973">"ວຽກ"</string>
- <string name="emailTypeOther" msgid="2923008695272639549">"ອື່ນໆ"</string>
- <string name="emailTypeMobile" msgid="119919005321166205">"ມືຖື"</string>
- <string name="postalTypeCustom" msgid="8903206903060479902">"ກຳນົດເອງ"</string>
- <string name="postalTypeHome" msgid="8165756977184483097">"ເຮືອນ"</string>
- <string name="postalTypeWork" msgid="5268172772387694495">"ຫ້ອງການ"</string>
- <string name="postalTypeOther" msgid="2726111966623584341">"ອື່ນໆ"</string>
- <string name="imTypeCustom" msgid="2074028755527826046">"ກຳນົດເອງ"</string>
- <string name="imTypeHome" msgid="6241181032954263892">"ເຮືອນ"</string>
- <string name="imTypeWork" msgid="1371489290242433090">"ວຽກ"</string>
- <string name="imTypeOther" msgid="5377007495735915478">"ອື່ນໆ"</string>
- <string name="imProtocolCustom" msgid="6919453836618749992">"ກຳນົດເອງ"</string>
- <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
- <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
- <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
- <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
- <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
- <string name="imProtocolGoogleTalk" msgid="493902321140277304">"Hangouts"</string>
- <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
- <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
- <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
- <string name="orgTypeWork" msgid="29268870505363872">"ວຽກ"</string>
- <string name="orgTypeOther" msgid="3951781131570124082">"ອື່ນໆ"</string>
- <string name="orgTypeCustom" msgid="225523415372088322">"ກຳນົດເອງ"</string>
- <string name="relationTypeCustom" msgid="3542403679827297300">"ກຳນົດເອງ"</string>
- <string name="relationTypeAssistant" msgid="6274334825195379076">"ຜູ່ຊ່ວຍ"</string>
- <string name="relationTypeBrother" msgid="8757913506784067713">"ອ້າຍ-ນ້ອງ"</string>
- <string name="relationTypeChild" msgid="1890746277276881626">"ລູກ"</string>
- <string name="relationTypeDomesticPartner" msgid="6904807112121122133">"ຮຸ້ນສ່ວນພາຍໃນ"</string>
- <string name="relationTypeFather" msgid="5228034687082050725">"ພໍ່"</string>
- <string name="relationTypeFriend" msgid="7313106762483391262">"ໝູ່ເພື່ອນ"</string>
- <string name="relationTypeManager" msgid="6365677861610137895">"ຜູ່ຈັດການ"</string>
- <string name="relationTypeMother" msgid="4578571352962758304">"ແມ່"</string>
- <string name="relationTypeParent" msgid="4755635567562925226">"ພໍ່ແມ່"</string>
- <string name="relationTypePartner" msgid="7266490285120262781">"ຮຸ້ນສ່ວນ"</string>
- <string name="relationTypeReferredBy" msgid="101573059844135524">"ແນະນຳໂດຍ"</string>
- <string name="relationTypeRelative" msgid="1799819930085610271">"ຍາດຕິພີ່ນ້ອງ"</string>
- <string name="relationTypeSister" msgid="1735983554479076481">"ເອື້ອຍ-ນ້ອງ"</string>
- <string name="relationTypeSpouse" msgid="394136939428698117">"ຜົວເມຍ"</string>
- <string name="sipAddressTypeCustom" msgid="2473580593111590945">"ກຳນົດເອງ"</string>
- <string name="sipAddressTypeHome" msgid="6093598181069359295">"ເຮືອນ"</string>
- <string name="sipAddressTypeWork" msgid="6920725730797099047">"ບ່ອນເຮັດວຽກ"</string>
- <string name="sipAddressTypeOther" msgid="4408436162950119849">"ອື່ນໆ"</string>
- <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"ພິມລະຫັດ PIN"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><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>
- <string name="keyguard_label_text" msgid="861796461028298424">"ເພື່ອປົດລັອກ, ໃຫ້ກົດເມນູ ແລ້ວກົດ 0."</string>
- <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"ເບີໂທສຸກເສີນ"</string>
- <string name="lockscreen_carrier_default" msgid="8963839242565653192">"ບໍ່ມີບໍລິການ."</string>
- <string name="lockscreen_screen_locked" msgid="7288443074806832904">"ລັອກໜ້າຈໍແລ້ວ."</string>
- <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"ກົດ ເມນູ ເພື່ອປົດລັອກ ຫຼື ໂທອອກຫາເບີສຸກເສີນ."</string>
- <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"ກົດ \"ເມນູ\" ເພື່ອປົດລັອກ."</string>
- <string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"ແຕ້ມຮູບແບບເພື່ອປົດລັອກ"</string>
- <string name="lockscreen_emergency_call" msgid="5347633784401285225">"ໂທສຸກເສີນ"</string>
- <string name="lockscreen_return_to_call" msgid="5244259785500040021">"ກັບໄປຫາການໂທ"</string>
- <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"ຖືກຕ້ອງ!"</string>
- <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"ລອງໃໝ່ອີກຄັ້ງ"</string>
- <string name="lockscreen_password_wrong" msgid="5737815393253165301">"ທົດລອງອີກຄັ້ງ"</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"ຄວາມພະຍາຍາມປົດລັອກດ້ວຍໜ້ານັ້ນ ເກີນຈຳນວນທີ່ກຳນົດແລ້ວ"</string>
- <string name="lockscreen_plugged_in" msgid="8057762828355572315">"ກຳລັງສາກ <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_charged" msgid="321635745684060624">"ສາກເຕັມແລ້ວ."</string>
- <string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_low_battery" msgid="1482873981919249740">"ເຊື່ອມຕໍ່ສາຍສາກຂອງທ່ານ."</string>
- <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"ບໍ່ມີ SIM card."</string>
- <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ບໍ່ມີຊິມກາດໃນແທັບເລັດ."</string>
- <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"ບໍ່ມີ SIM card ໃນໂທລະສັບ."</string>
- <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"ໃສ່ຊິມກາດ."</string>
- <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"ບໍ່ມີຊິມກາດ ຫຼືອ່ານຊິມກາດບໍ່ໄດ້. ໃສ່ຊິມກາດ."</string>
- <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"SIM card ບໍ່ສາມາດໃຊ້ໄດ້."</string>
- <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"ຊິມກາດຂອງທ່ານຖືກປິດການນຳໃຊ້ຢ່າງຖາວອນແລ້ວ.\n ກະລຸນາຕິດຕໍ່ຜູ່ໃຫ້ບໍລິການໂທລະສັບຂອງທ່ານ ເພື່ອຂໍເອົາຊິມກາດໃໝ່."</string>
- <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"ປຸ່ມເພງກ່ອນໜ້ານີ້"</string>
- <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"ປຸ່ມເພງຕໍ່ໄປ"</string>
- <string name="lockscreen_transport_pause_description" msgid="7659088786780128001">"ປຸ່ມຢຸດຊົ່ວຄາວ"</string>
- <string name="lockscreen_transport_play_description" msgid="5888422938351019426">"ປຸ່ມຫຼິ້ນ"</string>
- <string name="lockscreen_transport_stop_description" msgid="4562318378766987601">"ປຸ່ມຢຸດ"</string>
- <string name="emergency_calls_only" msgid="6733978304386365407">"ສຳລັບການໂທສຸກເສີນເທົ່ານັ້ນ"</string>
- <string name="lockscreen_network_locked_message" msgid="143389224986028501">"ເຄືອຂ່າຍຖືກລັອກ"</string>
- <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM card ຖືກລັອກດ້ວຍລະຫັດ PUK."</string>
- <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"ເບິ່ງຄູ່ມືຜູ່ໃຊ້ ຫຼືຕິດຕໍ່ສູນບໍລິການລູກຄ້າ."</string>
- <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"SIM card ຖືກລັອກ."</string>
- <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"ກຳລັງປົດລັອກຊິມກາດ..."</string>
- <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"ທ່ານແຕ້ມຮູບແບບປົດລັອກບໍ່ຖືກ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. \n\nລອງໃໝ່ໃນອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ວິນາທີ."</string>
- <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="2725973286239344555">"ທ່ານພິມລະຫັດຜ່ານຜິດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. \n\nໃຫ້ລອງໃໝ່ອີກຄັ້ງໃນອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ວິນາທີ."</string>
- <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"ທ່ານພິມລະຫັດ PIN ຂອງທ່ານຜິດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. \n\nລອງໃໝ່ໃນອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ວິນາທີ."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"ທ່ານແຕ້ມຮູບແບບປົດລັອກຂອງທ່ານຜິດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. ຫຼັງຈາກຄວາມພະຍາຍາມອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ເທື່ອ ທ່ານຈະຖືກຖາມໃຫ້ປົດລັອກແທັບເລັດຂອງທ່ານ ດ້ວຍການເຂົ້າສູ່ລະບົບຂອງ Google.\n\n ລອງໃໝ່ອີກຄັ້ງໃນ <xliff:g id="NUMBER_2">%d</xliff:g> ວິນາທີ."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"ທ່ານແຕ້ມຮູບແບບປົດລັອກຜິດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. ຫຼັງຈາກແຕ້ມຜິດອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ເທື່ອ, ທ່ານຈະຖືກຖາມໃຫ້ປົດລັອກໂທລະສັບຂອງທ່ານ ດ້ວຍການເຂົ້າສູ່ລະບົບ Google.\n\n ລອງໃໝ່ໃນອີກ <xliff:g id="NUMBER_2">%d</xliff:g> ວິນາທີ."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"ທ່ານພະຍາຍາມປັດລັອກແທັບເລັດຜິດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. ຫຼັງຈາກຜິດອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ເທື່ອ, ແທັບເລັດຈະຖືກຣີເຊັດໃຫ້ເປັນແບບທີ່ມາຈາກໂຮງງານ ແລະຂໍ້ມູນທັງໝົດຈະຖືກຫາຍໄປ."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"ທ່ານໄດ້ພະຍາຍາມປົດລັອກໂທລະສັບເປັນຈຳນວນ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. ຫຼັງຈາກການພະຍາຍາມອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ເທື່ອແລ້ວບໍ່ສຳເລັດຜົນ, ໂທລະສັບຈະຖືກຕັ້ງຄ່າໃຫ້ເປັນຄ່າຈາກໂຮງງານ ແລະຂໍ້ມູນທັງໝົດຈະສູນຫາຍໄປ."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"ທ່ານພະຍາຍາມປົດລັອກແທັບເລັດຜິດ <xliff:g id="NUMBER">%d</xliff:g> ເທື່ອແລ້ວ. ຕອນນີ້ແທັບເລັດຈະຖືກຣີເຊັດເປັນຄ່າຈາກໂຮງງານ."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"ທ່ານໄດ້ພະຍາຍາມປົດລັອກໂທລະສັບຜິດ <xliff:g id="NUMBER">%d</xliff:g> ເທື່ອແລ້ວ. ໂທລະສັບຈະຖືກຣີເຊັດໃຫ້ເປັນຄ່າທີ່ມາຈາກໂຮງງານ."</string>
- <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"ທົດລອງອີກຄັ້ງໃນອີກ <xliff:g id="NUMBER">%d</xliff:g> ວິນາທີ."</string>
- <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"ລືມຮູບແບບປົດລັອກ?"</string>
- <string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"ປົດລັອກບັນຊີ"</string>
- <string name="lockscreen_glogin_too_many_attempts" msgid="2751368605287288808">"ພະຍາຍາມໃຊ້ຮູບແບບປົດລັອກຜິດຫຼາຍເທື່ອເກີນໄປ"</string>
- <string name="lockscreen_glogin_instructions" msgid="3931816256100707784">"ເພື່ອປົດລັອກ, ໃຫ້ເຂົ້າສູ່ລະບົບດ້ວຍບັນຊີ Google ຂອງທ່ານ."</string>
- <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"ຊື່ຜູ່ໃຊ້ (ອີເມວ)"</string>
- <string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">"ລະຫັດຜ່ານ"</string>
- <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"ເຂົ້າສູ່ລະບົບ"</string>
- <string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"ຊື່ຜູ່ໃຊ້ ຫຼືລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ"</string>
- <string name="lockscreen_glogin_account_recovery_hint" msgid="1696924763690379073">"ລືມຊື່ຜູ່ໃຊ້ ຫຼືລະຫັດຜ່ານຂອງທ່ານບໍ?\nໄປທີ່ "<b>"google.com/accounts/recovery"</b>"."</string>
- <string name="lockscreen_glogin_checking_password" msgid="7114627351286933867">"ກຳລັງກວດສອບ..."</string>
- <string name="lockscreen_unlock_label" msgid="737440483220667054">"ປົດລັອກ"</string>
- <string name="lockscreen_sound_on_label" msgid="9068877576513425970">"ເປີດສຽງແລ້ວ"</string>
- <string name="lockscreen_sound_off_label" msgid="996822825154319026">"ປິດສຽງ"</string>
- <string name="lockscreen_access_pattern_start" msgid="3941045502933142847">"ຮູບແບບເລີ່ມຕົ້ນແລ້ວ"</string>
- <string name="lockscreen_access_pattern_cleared" msgid="5583479721001639579">"ລຶບລ້າງຮູບແບບແລ້ວ"</string>
- <string name="lockscreen_access_pattern_cell_added" msgid="6756031208359292487">"ຕາລາງຖືກເພີ່ມແລ້ວ"</string>
- <string name="lockscreen_access_pattern_detected" msgid="4988730895554057058">"ຮູບແບບສຳເລັດແລ້ວ"</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. ວິດເຈັດ %2$d ຈາກທັງໝົດ %3$d."</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"ເພີ່ມວິດເຈັດ"</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"ຫວ່າງເປົ່າ"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"ຂະຫຍາຍພື້ນທີ່ປົດລັອກແລ້ວ."</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"ຫຍໍ້ພື້ນທີ່ປົດລັອກແລ້ວ."</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ວິດເຈັດ."</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"ໂຕເລືອກຂອງຜູ່ໃຊ້"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"ສະຖານະ"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"ກ້ອງ"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"ການຄວບຄຸມສື່"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"ການຈັດຮຽງວິເຈັດໃໝ່ເລີ່ມຕົ້ນແລ້ວ."</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"ການຈັດຮຽງວິດເຈັດຄືນໃໝ່ສຳເລັດແລ້ວ."</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"ລຶບວິດເຈັດ <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ແລ້ວ."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"ຂະຫຍາຍຂອບເຂດປົດລັອກ."</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"ການປົດລັອກດ້ວຍການເລື່ອນ."</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"ປົດລັອກດ້ວຍຮູບແບບ."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"ປົດລັອກດ້ວຍໜ້າ."</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"ປົດລັອກດ້ວຍ PIN."</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"ການປົດລັອກດ້ວຍລະຫັດຜ່ານ."</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"ພື້ນທີ່ຮູບແບບ."</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"ເລື່ອນພື້ນທີ່."</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="granularity_label_character" msgid="7336470535385009523">"ໂຕອັກສອນ"</string>
- <string name="granularity_label_word" msgid="7075570328374918660">"ຄຳສັບ"</string>
- <string name="granularity_label_link" msgid="5815508880782488267">"ລິ້ງ"</string>
- <string name="granularity_label_line" msgid="5764267235026120888">"ເສັ້ນ"</string>
- <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string>
- <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string>
- <string name="factorytest_failed" msgid="5410270329114212041">"ການທົດສອບຈາກໂຮງງານລົ້ມເຫລວ"</string>
- <string name="factorytest_not_system" msgid="4435201656767276723">"ການເຮັດ FACTORY_TEST ຮອງຮັບສະເພາະແພັກເກດທີ່ຖືກຕິດຕັ້ງໃນ /system/app ເທົ່ານັ້ນ."</string>
- <string name="factorytest_no_action" msgid="872991874799998561">"ບໍ່ພົບແພັກເກດທີ່ມີການເຮັດວຽກ FACTORY_TEST."</string>
- <string name="factorytest_reboot" msgid="6320168203050791643">"ຣີບູດ"</string>
- <string name="js_dialog_title" msgid="1987483977834603872">"ໜ້າທີ່ຢູ່ທີ່ \"<xliff:g id="TITLE">%s</xliff:g>\" ເວົ້າວ່າ:"</string>
- <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
- <string name="js_dialog_before_unload_title" msgid="2619376555525116593">"ຢືນຢັນການນຳທາງ"</string>
- <string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"ອອກຈາກໜ້ານີ້"</string>
- <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"ຢູ່ທີ່ໜ້ານີ້ຕໍ່ໄປ"</string>
- <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nທ່ານແນ່ໃຈບໍ່ວ່າຕ້ອງການອອກໄປຈາກໜ້ານີ້?"</string>
- <string name="save_password_label" msgid="6860261758665825069">"ຢືນຢັນ"</string>
- <string name="double_tap_toast" msgid="4595046515400268881">"ເຄັດລັບ: ແຕະສອງຄັ້ງເພື່ອຊູມເຂົ້າ ແລະຊູມອອກ."</string>
- <string name="autofill_this_form" msgid="4616758841157816676">"ຕື່ມຂໍ້ມູນອັດຕະໂນມັດ"</string>
- <string name="setup_autofill" msgid="7103495070180590814">"ຕັ້ງການຕື່ມຂໍ້ມູນອັດຕະໂນມັດ"</string>
- <string name="autofill_address_name_separator" msgid="6350145154779706772">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3268041054899214945">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="7483307893170324129">", "</string>
- <string name="autofill_address_summary_format" msgid="4874459455786827344">"$1$2$3"</string>
- <string name="autofill_province" msgid="2231806553863422300">"ແຂວງ"</string>
- <string name="autofill_postal_code" msgid="4696430407689377108">"ລະຫັດໄປສະນີ"</string>
- <string name="autofill_state" msgid="6988894195520044613">"ລັດ"</string>
- <string name="autofill_zip_code" msgid="8697544592627322946">"ລະຫັດ ZIP"</string>
- <string name="autofill_county" msgid="237073771020362891">"ປະເທດ"</string>
- <string name="autofill_island" msgid="4020100875984667025">"ເກາະ"</string>
- <string name="autofill_district" msgid="8400735073392267672">"ເມືອງ"</string>
- <string name="autofill_department" msgid="5343279462564453309">"ພະແນກ"</string>
- <string name="autofill_prefecture" msgid="2028499485065800419">"ເຂດປົກຄອງ"</string>
- <string name="autofill_parish" msgid="8202206105468820057">"ເຂດການປົກຄອງທ້ອງຖິ່ນ"</string>
- <string name="autofill_area" msgid="3547409050889952423">"ພື້ນທີ່"</string>
- <string name="autofill_emirate" msgid="2893880978835698818">"ອີມິເຣດ"</string>
- <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"ອ່ານບຸກມາກ ແລະປະຫວັດເວັບໄຊຂອງທ່ານ"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="8462378226600439658">"ອະນຸຍາດໃຫ້ແອັບຯ ອ່ານປະຫວັດຂອງ URL ທັງໝົດທີ່ໂປຣແກຣມທ່ອງເວັບເຄີຍເຂົ້າເບິ່ງ ຮວມທັງ ບຸກມາກທັງໝົດຂອງໂປຣແກຣມທ່ອງເວັບນຳ. ໝາຍເຫດ: ການກຳນົດສິດນີ້ ອາດບໍ່ໄດ້ບັງຄັບໃຊ້ໃນໂປຣແກຣມທ່ອງເວັບພາກສ່ວນທີສາມ ຫຼືແອັບພລິເຄຊັນອື່ນທີ່ມີຄວາມສາມາດທ່ອງເວັບ."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"ຂຽນຂໍ້ມູນບຸກມາກ ແລະປະຫວັດເວັບໄຊ"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="6825527469145760922">"ອະນຸຍາດໃຫ້ແອັບຯແກ້ໄຂປະຫວັດໃນການທ່ອງເວັບ ຫຼືບຸກມາກທີ່ບັນທຶກໃນແທັບເລັດຂອງທ່ານ. ນີ້ອາດອະນຸຍາດໃຫ້ແອັບຯລຶບ ຫຼືແກ້ໄຂຂໍ້ມູນໂປຣແກຣມທ່ອງເວັບໄດ້. ໝາຍເຫດ: ການອະນຸຍາດນີ້ອາດເປັນຜົນບັງຄັບໃຊ້ ຈາກໂປຣແກຣມທ່ອງເວັບພາຍນອກ ຫຼືແອັບພລິເຄຊັນອື່ນທີ່ສາມາດເຂົ້າເວັບໄດ້."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"ອະນຸຍາດໃຫ້ແອັບຯ ແກ້ໄຂປະຫວັດໂປຣແກຣມທ່ອງເວັບ ຫຼືບຸກມາກທີ່ເກັບໄວ້ໃນໂທລະສັບຂອງທ່ານ. ນີ້ອາດອະນຸຍາດໃຫ້ແອັບຯລຶບ ຫຼືແກ້ໄຂຂໍ້ມູນໂປຣແກຣມທ່ອງເວັບ. ໝາຍເຫດ: ການກຳນົດສິດນີ້ ອາດບໍ່ໄດ້ຖືກບັງຄັບໃຊ້ໃນໂປຣແກຣມທ່ອງເວັບພາກສ່ວນທີສາມ ຫຼືແອັບພລິເຄຊັນອື່ນທີ່ມີຄວາມສາມາດທ່ອງເວັບ."</string>
- <string name="permlab_setAlarm" msgid="1379294556362091814">"ຕັ້ງການແຈ້ງເຕືອນ"</string>
- <string name="permdesc_setAlarm" msgid="316392039157473848">"ອະນຸຍາດໃຫ້ແອັບຯຕັ້ງໂມງປຸກໃນແອັບຯໂມງປຸກທີ່ຕິດຕັ້ງໄວ້. ບາງແອັບຯໂມງປຸກອາດບໍ່ມີຄຸນສົມບັດແບບນີ້ເທື່ອ."</string>
- <string name="permlab_addVoicemail" msgid="5525660026090959044">"ເພີ່ມຂໍ້ຄວາມສຽງ"</string>
- <string name="permdesc_addVoicemail" msgid="6604508651428252437">"ອະນຸຍາດໃຫ້ແອັບຯ ສາມາດເພີ່ມຂໍ້ຄວາມໃສ່ອິນບັອກຂໍ້ຄວາມສຽງຂອງທ່ານໄດ້."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"ແກ້ໄຂສິດທາງສະຖານທີ່ພູມສາດຂອງໂປຣແກຣມທ່ອງເວັບ"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"ອະນຸຍາດໃຫ້ແອັບຯແກ້ໄຂ ການອະນຸຍາດຕຳແໜ່ງທາງພູມສາດ ຂອງໂປຣແກຣມທ່ອງເວັບ. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດໃຊ້ຄຸນສົມບັດນີ້ ເພື່ອສົ່ງຂໍ້ມູນສະຖານທີ່ໄປໃຫ້ເວັບໄຊຕ່າງໆໄດ້."</string>
- <string name="permlab_packageVerificationAgent" msgid="5568139100645829117">"ຢັ້ງຢືນແພັກເກດ"</string>
- <string name="permdesc_packageVerificationAgent" msgid="8437590190990843381">"ອະນຸຍາດໃຫ້ແອັບຯຢືນຢັນວ່າແພັກເກດໃດນຶ່ງ ສາມາດຕິດຕັ້ງໄດ້."</string>
- <string name="permlab_bindPackageVerifier" msgid="4187786793360326654">"ເຊື່ອມໂຍງກັບໂຕຢືນຢັນແພັກເກດ"</string>
- <string name="permdesc_bindPackageVerifier" msgid="3180741773233862126">"ອະນຸຍາດໃຫ້ເຈົ້າຂອງເຮັດການຮ້ອງຂໍໂຕຢືນຢັນແພັກເກັດ. ບໍ່ຈຳເປັນສຳລັບແອັບຯທົ່ວໄປ."</string>
- <string name="permlab_serialPort" msgid="546083327654631076">"ເຂົ້າເຖິງພອດຊີຣຽວ"</string>
- <string name="permdesc_serialPort" msgid="2991639985224598193">"ອະນຸຍາດໃຫ້ເຈົ້າຂອງສາມາດເຂົ້າເບິ່ງ serial ports ໂດຍການນຳໃຊ້ SerialManager API."</string>
- <string name="permlab_accessContentProvidersExternally" msgid="5077774297943409285">"ເຂົ້າເຖິງຜູ່ສະໜອງເນື້ອຫາພາຍນອກ"</string>
- <string name="permdesc_accessContentProvidersExternally" msgid="4544346486697853685">"ຊ່ວຍໃຫ້ເຈົ້າຂອງສາມາດ ເຂົ້າເຖິງຜູ່ໃຫ້ບໍລິການເນື້ອຫາຈາກໜ້າ shell ໄດ້. ແອັບພລິເຄຊັນທົ່ວໄປບໍ່ຄວນຈຳເປັນຕ້ອງໃຊ້."</string>
- <string name="permlab_updateLock" msgid="3527558366616680889">"ປ້ອງກັນການອັບເດດອຸປະກອນໂດຍອັດຕະໂນມັດ"</string>
- <string name="permdesc_updateLock" msgid="1655625832166778492">"ອະນຸຍາດໃຫ້ເຈົ້າຂອງກຳນົດຂໍ້ມູນໃນລະບົບ ກ່ຽວກັບເວລາທີ່ເໝາະສົມໃນການຣີບູດແບບບໍ່ໂຕ້ຕອບ ເພື່ອອັບເກຣດອຸປະກອນ."</string>
- <string name="save_password_message" msgid="767344687139195790">"ທ່ານຕ້ອງການໃຫ້ໂປຣແກຣມທ່ອງເວັບນີ້ຈື່ລະຫັດຜ່ານນີ້ບໍ່?"</string>
- <string name="save_password_notnow" msgid="6389675316706699758">"ບໍ່ແມ່ນຕອນນີ້"</string>
- <string name="save_password_remember" msgid="6491879678996749466">"ຈື່ໄວ້"</string>
- <string name="save_password_never" msgid="8274330296785855105">"ບໍ່ຕ້ອງຈື່"</string>
- <string name="open_permission_deny" msgid="7374036708316629800">"ທ່ານບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ເປີດໜ້ານີ້."</string>
- <string name="text_copied" msgid="4985729524670131385">"ສຳເນົາຂໍ້ຄວາມໃສ່ຄລິບບອດແລ້ວ."</string>
- <string name="more_item_label" msgid="4650918923083320495">"ເພີ່ມເຕີມ"</string>
- <string name="prepend_shortcut_label" msgid="2572214461676015642">"ເມນູ+"</string>
- <string name="menu_space_shortcut_label" msgid="2410328639272162537">"Space"</string>
- <string name="menu_enter_shortcut_label" msgid="2743362785111309668">"enter"</string>
- <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"ລຶບ"</string>
- <string name="search_go" msgid="8298016669822141719">"ຊອກຫາ"</string>
- <string name="searchview_description_search" msgid="6749826639098512120">"ຊອກຫາ"</string>
- <string name="searchview_description_query" msgid="5911778593125355124">"ຊອກຫາ"</string>
- <string name="searchview_description_clear" msgid="1330281990951833033">"ລຶບຂໍ້ຄວາມຊອກຫາ"</string>
- <string name="searchview_description_submit" msgid="2688450133297983542">"ສົ່ງການຊອກຫາ"</string>
- <string name="searchview_description_voice" msgid="2453203695674994440">"ຊອກຫາດ້ວຍສຽງ"</string>
- <string name="enable_explore_by_touch_warning_title" msgid="7460694070309730149">"ເປີດນຳໃຊ້ \"ການສຳຫຼວດໂດຍສຳພັດ\" ບໍ່?"</string>
- <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="8655887539089910577">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> ຕ້ອງການເປີດນຳໃຊ້ \"ການສຳຫຼວດໂດຍສຳພັດ\". ເມື່ອເປີດ \"ການສຳຫຼວດໂດຍສຳພັດ\" ແລ້ວ ທ່ານຈະສາມາດໄດ້ຍິນ ຫຼືເຫັນຄຳບັນຍາຍວ່າມີຫຍັງຢູ່ກ້ອງນິ້ວມືຂອງທ່ານ ຫຼືໃຊ້ຮູບແບບການເຄື່ອນໄຫວເພື່ອໂຕ້ຕອບກັບແທັບເລັດ."</string>
- <string name="enable_explore_by_touch_warning_message" product="default" msgid="2708199672852373195">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> ຕ້ອງການເປີດນຳໃຊ້ \"ການສຳຫຼວດໂດຍສຳພັດ\". ເມື່ອເປີດ \"ການສຳຫຼວດໂດຍສຳພັດ\" ແລ້ວ ທ່ານຈະສາມາດໄດ້ຍິນ ຫຼືເຫັນຄຳບັນຍາຍວ່າມີຫຍັງຢູ່ກ້ອງນິ້ວມືຂອງທ່ານ ຫຼືໃຊ້ຮູບແບບການເຄື່ອນໄຫວເພື່ອໂຕ້ຕອບກັບໂທລະສັບ."</string>
- <string name="oneMonthDurationPast" msgid="7396384508953779925">"1 ເດືອນກ່ອນຫນ້ານີ້"</string>
- <string name="beforeOneMonthDurationPast" msgid="909134546836499826">"ຫຼາຍກວ່າ 1 ເດືອນກ່ອນ"</string>
- <plurals name="num_seconds_ago">
- <item quantity="one" msgid="4869870056547896011">"1 ວິນາທີກ່ອນ"</item>
- <item quantity="other" msgid="3903706804349556379">"<xliff:g id="COUNT">%d</xliff:g> ວິນາທີກ່ອນໜ້ານີ້"</item>
- </plurals>
- <plurals name="num_minutes_ago">
- <item quantity="one" msgid="3306787433088810191">"1 ນາທີກ່ອນໜ້ານີ້"</item>
- <item quantity="other" msgid="2176942008915455116">"<xliff:g id="COUNT">%d</xliff:g> ນາ​ທີ​ທີ່ຜ່ານມາ"</item>
- </plurals>
- <plurals name="num_hours_ago">
- <item quantity="one" msgid="9150797944610821849">"1 ຊົ່ວໂມງກ່ອນໜ້ານີ້"</item>
- <item quantity="other" msgid="2467273239587587569">"<xliff:g id="COUNT">%d</xliff:g> ຊົ່ວໂມງທີ່ຜ່ານມາ"</item>
- </plurals>
- <plurals name="last_num_days">
- <item quantity="other" msgid="3069992808164318268">"<xliff:g id="COUNT">%d</xliff:g> ມື້ທີ່ຜ່ານມາ"</item>
- </plurals>
- <string name="last_month" msgid="3959346739979055432">"ເດືອນແລ້ວ"</string>
- <string name="older" msgid="5211975022815554840">"ເກົ່າກວ່າ"</string>
- <plurals name="num_days_ago">
- <item quantity="one" msgid="861358534398115820">"ມື້​ວານ​ນີ້"</item>
- <item quantity="other" msgid="2479586466153314633">"<xliff:g id="COUNT">%d</xliff:g> ມື້​ກ່ອນ"</item>
- </plurals>
- <plurals name="in_num_seconds">
- <item quantity="one" msgid="2729745560954905102">"ໃນອີກ 1 ວິນາທີ"</item>
- <item quantity="other" msgid="1241926116443974687">"ໃນ <xliff:g id="COUNT">%d</xliff:g> ວິ​ນາ​ທີ"</item>
- </plurals>
- <plurals name="in_num_minutes">
- <item quantity="one" msgid="8793095251325200395">"ໃນ 1 ນາທີ"</item>
- <item quantity="other" msgid="3330713936399448749">"ໃນ <xliff:g id="COUNT">%d</xliff:g> ນາທີ"</item>
- </plurals>
- <plurals name="in_num_hours">
- <item quantity="one" msgid="7164353342477769999">"ໃນ 1 ຊົ່ວໂມງ"</item>
- <item quantity="other" msgid="547290677353727389">"ໃນ <xliff:g id="COUNT">%d</xliff:g> ຊົ່ວໂມງ"</item>
- </plurals>
- <plurals name="in_num_days">
- <item quantity="one" msgid="5413088743009839518">"ມື້ອື່ນ"</item>
- <item quantity="other" msgid="5109449375100953247">"ໃນ <xliff:g id="COUNT">%d</xliff:g> ມື້"</item>
- </plurals>
- <plurals name="abbrev_num_seconds_ago">
- <item quantity="one" msgid="1849036840200069118">"1 ວິນາທີກ່ອນ"</item>
- <item quantity="other" msgid="3699169366650930415">"<xliff:g id="COUNT">%d</xliff:g> ວິ ກ່ອນໜ້ານີ້"</item>
- </plurals>
- <plurals name="abbrev_num_minutes_ago">
- <item quantity="one" msgid="6361490147113871545">"1 ນທ ກ່ອນ"</item>
- <item quantity="other" msgid="851164968597150710">"<xliff:g id="COUNT">%d</xliff:g> ນທ ກ່ອນໜ້ານີ້"</item>
- </plurals>
- <plurals name="abbrev_num_hours_ago">
- <item quantity="one" msgid="4796212039724722116">"1 ຊົ່ວໂມງກ່ອນ"</item>
- <item quantity="other" msgid="6889970745748538901">"<xliff:g id="COUNT">%d</xliff:g> ຊົ່ວໂມງກ່ອນໜ້ານີ້"</item>
- </plurals>
- <plurals name="abbrev_num_days_ago">
- <item quantity="one" msgid="8463161711492680309">"ມື້ວານນີ້"</item>
- <item quantity="other" msgid="3453342639616481191">"<xliff:g id="COUNT">%d</xliff:g> ມື້ກ່ອນໜ້ານີ້"</item>
- </plurals>
- <plurals name="abbrev_in_num_seconds">
- <item quantity="one" msgid="5842225370795066299">"ໃນ 1 ວິ"</item>
- <item quantity="other" msgid="5495880108825805108">"ໃນ <xliff:g id="COUNT">%d</xliff:g> ວິ"</item>
- </plurals>
- <plurals name="abbrev_in_num_minutes">
- <item quantity="one" msgid="562786149928284878">"ໃນ 1 ນາທີ"</item>
- <item quantity="other" msgid="4216113292706568726">"ໃນ <xliff:g id="COUNT">%d</xliff:g> ນທ"</item>
- </plurals>
- <plurals name="abbrev_in_num_hours">
- <item quantity="one" msgid="3274708118124045246">"ໃນ 1 ຊົ່ວໂມງ"</item>
- <item quantity="other" msgid="3705373766798013406">"ໃນ <xliff:g id="COUNT">%d</xliff:g> ຊົ່ວໂມງ"</item>
- </plurals>
- <plurals name="abbrev_in_num_days">
- <item quantity="one" msgid="2178576254385739855">"ມື້ອື່ນ"</item>
- <item quantity="other" msgid="2973062968038355991">"ໃນ <xliff:g id="COUNT">%d</xliff:g> ມື້"</item>
- </plurals>
- <string name="preposition_for_date" msgid="9093949757757445117">"ວັນທີ <xliff:g id="DATE">%s</xliff:g>"</string>
- <string name="preposition_for_time" msgid="5506831244263083793">"ເວລາ <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="preposition_for_year" msgid="5040395640711867177">"ໃນ <xliff:g id="YEAR">%s</xliff:g>"</string>
- <string name="day" msgid="8144195776058119424">"ມື້"</string>
- <string name="days" msgid="4774547661021344602">"ມື້"</string>
- <string name="hour" msgid="2126771916426189481">"ຊົ່ວໂມງ"</string>
- <string name="hours" msgid="894424005266852993">"ຊົ່ວໂມງ"</string>
- <string name="minute" msgid="9148878657703769868">"ນາທີ"</string>
- <string name="minutes" msgid="5646001005827034509">"ນທ"</string>
- <string name="second" msgid="3184235808021478">"ວິ"</string>
- <string name="seconds" msgid="3161515347216589235">"ວິ"</string>
- <string name="week" msgid="5617961537173061583">"ອາທິດ"</string>
- <string name="weeks" msgid="6509623834583944518">"ອາທິດ"</string>
- <string name="year" msgid="4001118221013892076">"ປີ"</string>
- <string name="years" msgid="6881577717993213522">"ປິ"</string>
- <plurals name="duration_seconds">
- <item quantity="one" msgid="6962015528372969481">"1 ວິນາທີ"</item>
- <item quantity="other" msgid="1886107766577166786">"<xliff:g id="COUNT">%d</xliff:g> ວິນາທີ"</item>
- </plurals>
- <plurals name="duration_minutes">
- <item quantity="one" msgid="4915414002546085617">"1 ນາ​ທີ"</item>
- <item quantity="other" msgid="3165187169224908775">"<xliff:g id="COUNT">%d</xliff:g> ນາທີ"</item>
- </plurals>
- <plurals name="duration_hours">
- <item quantity="one" msgid="8917467491248809972">"1 ຊົ່ວ​ໂມງ"</item>
- <item quantity="other" msgid="3863962854246773930">"<xliff:g id="COUNT">%d</xliff:g> ຊົ່ວໂມງ"</item>
- </plurals>
- <string name="VideoView_error_title" msgid="3534509135438353077">"ບັນຫາວິດີໂອ"</string>
- <string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"ວິດີໂອນີ້ບໍ່ຖືກຕ້ອງສຳລັບການສະແດງໃນອຸປະກອນນີ້."</string>
- <string name="VideoView_error_text_unknown" msgid="3450439155187810085">"ບໍ່ສາມາດຫຼິ້ນວິດີໂອນີ້ໄດ້."</string>
- <string name="VideoView_error_button" msgid="2822238215100679592">"ຕົກລົງ"</string>
- <string name="relative_time" msgid="1818557177829411417">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
- <string name="noon" msgid="7245353528818587908">"ທ່ຽງ"</string>
- <string name="Noon" msgid="3342127745230013127">"ທ່ຽງ"</string>
- <string name="midnight" msgid="7166259508850457595">"ທ່ຽງຄືນ"</string>
- <string name="Midnight" msgid="5630806906897892201">"ທ່ຽງຄືນ"</string>
- <string name="elapsed_time_short_format_mm_ss" msgid="4431555943828711473">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
- <string name="elapsed_time_short_format_h_mm_ss" msgid="1846071997616654124">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
- <string name="selectAll" msgid="6876518925844129331">"ເລືອກທັງໝົດ"</string>
- <string name="cut" msgid="3092569408438626261">"ຕັດ"</string>
- <string name="copy" msgid="2681946229533511987">"ສຳເນົາ"</string>
- <string name="paste" msgid="5629880836805036433">"ວາງ"</string>
- <string name="replace" msgid="5781686059063148930">"ແທນທີ່…"</string>
- <string name="delete" msgid="6098684844021697789">"ລຶບ"</string>
- <string name="copyUrl" msgid="2538211579596067402">"ສຳເນົາ URL"</string>
- <string name="selectTextMode" msgid="1018691815143165326">"ເລືອກຂໍ້ຄວາມ"</string>
- <string name="textSelectionCABTitle" msgid="5236850394370820357">"ການເລືອກຂໍ້ຄວາມ"</string>
- <string name="addToDictionary" msgid="4352161534510057874">"ເພີ່ມໄປທີ່ວັດຈະນານຸກົມ"</string>
- <string name="deleteText" msgid="6979668428458199034">"ລຶບ"</string>
- <string name="inputMethod" msgid="1653630062304567879">"ຮູບແບບການປ້ອນຂໍ້ມູນ"</string>
- <string name="editTextMenuTitle" msgid="4909135564941815494">"ການເຮັດວຽກຂອງຂໍ້ຄວາມ"</string>
- <string name="low_internal_storage_view_title" msgid="5576272496365684834">"ພື້ນທີ່ຈັດເກັບຂໍ້ມູນກຳລັງຈະເຕັມ"</string>
- <string name="low_internal_storage_view_text" msgid="6640505817617414371">"ການເຮັດວຽກບາງຢ່າງຂອງລະບົບບາງອາດຈະໃຊ້ບໍ່ໄດ້"</string>
- <string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ກຳລັງເຮັດວຽກຢູ່"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"ແຕະເພື່ອເບິ່ງຂໍ້ມູນເພີ່ມເຕີມ ຫຼືເພື່ອຢຸດການເຮັດວຽກຂອງແອັບຯນີ້."</string>
- <string name="ok" msgid="5970060430562524910">"ຕົກລົງ"</string>
- <string name="cancel" msgid="6442560571259935130">"ຍົກເລີກ"</string>
- <string name="yes" msgid="5362982303337969312">"ຕົກລົງ"</string>
- <string name="no" msgid="5141531044935541497">"ຍົກເລີກ"</string>
- <string name="dialog_alert_title" msgid="2049658708609043103">"ກະລຸນາຮັບຊາບ"</string>
- <string name="loading" msgid="7933681260296021180">"ກຳລັງໂຫລດ..."</string>
- <string name="capital_on" msgid="1544682755514494298">"ເປີດ"</string>
- <string name="capital_off" msgid="6815870386972805832">"ປິດ"</string>
- <string name="whichApplication" msgid="4533185947064773386">"ເຮັດວຽກໃຫ້ສຳເລັດໂດຍໃຊ້"</string>
- <string name="alwaysUse" msgid="4583018368000610438">"ໃຊ້ໂດຍຄ່າເລີ່ມຕົນສຳລັບການເຮັດວຽກນີ້."</string>
- <string name="clearDefaultHintMsg" msgid="3252584689512077257">"ລຶບລ້າງຄ່າເລີ່ມຕົ້ນ ໃນ ການຕັ້ງຄ່າລະບົບ &gt; ແອັບຯ &gt; ດາວໂຫລດແລ້ວ."</string>
- <string name="chooseActivity" msgid="7486876147751803333">"ເລືອກການປະຕິບັດ"</string>
- <string name="chooseUsbActivity" msgid="6894748416073583509">"ເລືອກແອັບຯສໍາລັບອຸປະກອນ USB"</string>
- <string name="noApplications" msgid="2991814273936504689">"ບໍ່ມີແອັບຯໃດສາມາດເຮັດວຽກນີ້ໄດ້."</string>
- <string name="aerr_title" msgid="1905800560317137752"></string>
- <string name="aerr_application" msgid="932628488013092776">"ຂໍອະໄພ, <xliff:g id="APPLICATION">%1$s</xliff:g> ຢຸດການເຮັດວຽກແລ້ວ."</string>
- <string name="aerr_process" msgid="4507058997035697579">"ຂໍອະໄພ, ໂປຣເຊສ <xliff:g id="PROCESS">%1$s</xliff:g> ໄດ້ຢຸດການເຮັດວຽກແລ້ວ."</string>
- <string name="anr_title" msgid="4351948481459135709"></string>
- <string name="anr_activity_application" msgid="1904477189057199066">"<xliff:g id="APPLICATION">%2$s</xliff:g> ບໍ່ຕອບສະໜອງ. \n\nທ່ານຕ້ອງການປິດມັນບໍ່?"</string>
- <string name="anr_activity_process" msgid="5776209883299089767">"ການເຮັດວຽກ <xliff:g id="ACTIVITY">%1$s</xliff:g> ບໍ່ຕອບສະໜອງ. \n\n ທ່ານຕ້ອງການທີ່ຈະປິດມັນບໍ່?"</string>
- <string name="anr_application_process" msgid="8941757607340481057">"<xliff:g id="APPLICATION">%1$s</xliff:g> ບໍ່ຕອບສະໜອງ. ທ່ານຕ້ອງການປິດມັນບໍ່?"</string>
- <string name="anr_process" msgid="6513209874880517125">"ໂປຣເຊສ <xliff:g id="PROCESS">%1$s</xliff:g> ບໍ່ຕອບສະໜອງ. \n\n ທ່ານຕ້ອງການປິດມັນບໍ່?"</string>
- <string name="force_close" msgid="8346072094521265605">"ຕົກລົງ"</string>
- <string name="report" msgid="4060218260984795706">"ລາຍງານ"</string>
- <string name="wait" msgid="7147118217226317732">"ລໍ​ຖ້າ"</string>
- <string name="webpage_unresponsive" msgid="3272758351138122503">"ໜ້າເວັບບໍ່ຕອບສະໜອງ.\n\nທ່ານຕ້ອງການທີ່ຈະປິດມັນບໍ່?"</string>
- <string name="launch_warning_title" msgid="1547997780506713581">"ແອັບຯຖືກປ່ຽນເສັ້ນທາງ"</string>
- <string name="launch_warning_replace" msgid="6202498949970281412">"<xliff:g id="APP_NAME">%1$s</xliff:g> ກຳລັງເຮັດວຽກຢູ່."</string>
- <string name="launch_warning_original" msgid="188102023021668683">"<xliff:g id="APP_NAME">%1$s</xliff:g> ເປີດໃຊ້ໄວ້ແລ້ວ."</string>
- <string name="screen_compat_mode_scale" msgid="3202955667675944499">"ຂະໜາດ"</string>
- <string name="screen_compat_mode_show" msgid="4013878876486655892">"ສະແດງຕະຫຼອດເວລາ"</string>
- <string name="screen_compat_mode_hint" msgid="1064524084543304459">"ເປີດການເຮັດວຽກນີ້ຄືນໄດ້ໃນ ການຕັ້ງຄ່າລະບົບ &gt; ແອັບຯ &gt; ດາວໂຫລດແລ້ວ"</string>
- <string name="smv_application" msgid="3307209192155442829">"ແອັບຯ <xliff:g id="APPLICATION">%1$s</xliff:g> (ໂປຣເຊສ <xliff:g id="PROCESS">%2$s</xliff:g>) ໄດ້ລະເມີດນະໂຍບາຍ StrictMode ທີ່ບັງຄັບໃຊ້ດ້ວຍໂຕເອງ."</string>
- <string name="smv_process" msgid="5120397012047462446">"ໂປຣເຊສ <xliff:g id="PROCESS">%1$s</xliff:g> ລະເມີດນະໂຍບາຍບັງຄັບໃຊ້ເອງ StrictMode."</string>
- <string name="android_upgrading_title" msgid="1584192285441405746">"ກຳລັງອັບເກຣດ Android..."</string>
- <string name="android_upgrading_apk" msgid="7904042682111526169">"ກຳລັງປັບປຸງປະສິດຕິພາບແອັບຯທີ <xliff:g id="NUMBER_0">%1$d</xliff:g> ຈາກທັງໝົດ <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
- <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>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"ແຕະເພື່ອສະລັບກັບໄປຫາແອັບຯ"</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>
- <string name="old_app_description" msgid="2082094275580358049">"ຫ້າມເປີດແອັບຯໃໝ່."</string>
- <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="sendText" msgid="5209874571959469142">"ເລືອກການເຮັດວຽກຂອງຂໍ້ຄວາມ"</string>
- <string name="volume_ringtone" msgid="6885421406845734650">"ລະດັບສຽງເອີ້ນເຂົ້າ"</string>
- <string name="volume_music" msgid="5421651157138628171">"ລະດັບສຽງຂອງສື່"</string>
- <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"ກຳລັງຫຼິ້ນຜ່ານ Bluetooth"</string>
- <string name="volume_music_hint_silent_ringtone_selected" msgid="8310739960973156272">"ຕັ້ງໃຫ້ບໍ່ມີສຽງເອີ້ນເຂົ້າ"</string>
- <string name="volume_call" msgid="3941680041282788711">"ລະດັບສຽງໃນການໂທ"</string>
- <string name="volume_bluetooth_call" msgid="2002891926351151534">"ລະດັບບສຽງ Bluetooth ໃນຂະນະໂທ"</string>
- <string name="volume_alarm" msgid="1985191616042689100">"ລະດັບສຽງແຈ້ງເຕືອນ"</string>
- <string name="volume_notification" msgid="2422265656744276715">"ລະດັບສຽງແຈ້ງເຕືອນ"</string>
- <string name="volume_unknown" msgid="1400219669770445902">"ລະດັບສຽງ"</string>
- <string name="volume_icon_description_bluetooth" msgid="6538894177255964340">"ສຽງຂອງ Bluetooth"</string>
- <string name="volume_icon_description_ringer" msgid="3326003847006162496">"ລະດັບສຽງເອີ້ນເຂົ້າ"</string>
- <string name="volume_icon_description_incall" msgid="8890073218154543397">"ລະດັບສຽງການໂທ"</string>
- <string name="volume_icon_description_media" msgid="4217311719665194215">"ລະດັບສຽງຂອງສື່"</string>
- <string name="volume_icon_description_notification" msgid="7044986546477282274">"ລະດັບສຽງການແຈ້ງເຕືອນ"</string>
- <string name="ringtone_default" msgid="3789758980357696936">"ຣິງໂທນເລີ່ມຕົ້ນ"</string>
- <string name="ringtone_default_with_actual" msgid="8129563480895990372">"ຣິງໂທນເລີ່ມຕົ້ນ (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
- <string name="ringtone_silent" msgid="7937634392408977062">"ບໍ່ມີ"</string>
- <string name="ringtone_picker_title" msgid="3515143939175119094">"ຣິງໂທນ"</string>
- <string name="ringtone_unknown" msgid="5477919988701784788">"ຣິງໂທນທີ່ບໍ່ຮູ້ຈັກ"</string>
- <plurals name="wifi_available">
- <item quantity="one" msgid="6654123987418168693">"ເຄືອຂ່າຍ Wi-Fi ທີ່ພົບ"</item>
- <item quantity="other" msgid="4192424489168397386">"ມີເຄືອຂ່າຍ Wi​-Fi ໃຫ້ໃຊ້"</item>
- </plurals>
- <plurals name="wifi_available_detailed">
- <item quantity="one" msgid="1634101450343277345">"ເປີດ Wi-Fi ເຄືອຂ່າຍທີ່ມີ"</item>
- <item quantity="other" msgid="7915895323644292768">"ເຄືອຂ່າຍ Wi-Fi ແບບເປີດທີ່ພົບ"</item>
- </plurals>
- <string name="wifi_available_sign_in" msgid="4029489716605255386">"ເຂົ້າສູ່ລະບົບເຄືອຂ່າຍ Wi-Fi"</string>
- <string name="network_available_sign_in" msgid="8495155593358054676">"ເຂົ້າສູ່ລະບົບເຄືອຂ່າຍ"</string>
- <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
- <skip />
- <string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"ບໍ່ສາມາດເຊື່ອມຕໍ່ Wi-Fi ໄດ້"</string>
- <string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ມີສັນຍານອິນເຕີເນັດທີ່ບໍ່ດີ."</string>
- <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"Wi-Fi Direct"</string>
- <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>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"ແຕະເພື່ອຕັ້ງຄ່າ"</string>
- <string name="accept" msgid="1645267259272829559">"ຍອມຮັບ"</string>
- <string name="decline" msgid="2112225451706137894">"ປະຕິເສດ"</string>
- <string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ການ​ເຊື້ອ​ເຊີນ​ຖືກສົ່ງໄປແລ້ວ"</string>
- <string name="wifi_p2p_invitation_to_connect_title" msgid="4958803948658533637">"ການເຊີນຊວນເພື່ອເຊື່ອມຕໍ່"</string>
- <string name="wifi_p2p_from_message" msgid="570389174731951769">"ຈາກ:"</string>
- <string name="wifi_p2p_to_message" msgid="248968974522044099">"ຈາກ:"</string>
- <string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"ພິມລະຫັດ PIN:"</string>
- <string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="tablet" msgid="8012981257742232475">"ແທັບເລັດຈະຖືກຕັດການເຊື່ອມຕໍ່ຈາກ Wi-Fi ເປັນການຊົ່ວຄາວ ໃນຂະນະທີ່ມັນເຊື່ອມຕໍ່ກັບ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ຢູ່."</string>
- <string name="wifi_p2p_frequency_conflict_message" product="default" msgid="7363907213787469151">"ໂທລະສັບຈະຖືກຢຸດການເຊື່ອມຕໍ່ຊົ່ວຄາວຈາກ Wi-Fi ໃນຂະນະທີ່ມັນເຊື່ອມຕໍ່ກັບ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
- <string name="select_character" msgid="3365550120617701745">"ໃສ່ໂຕອັກສອນ"</string>
- <string name="sms_control_title" msgid="7296612781128917719">"ກຳລັງສົ່ງຂໍ້ຄວາມ SMS"</string>
- <string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ກຳລັງສົ່ງຂໍ້ຄວາມ SMS ຈຳນວນຫຼາຍ. ທ່ານຕ້ອງການອະນຸຍາດໃຫ້ແອັບຯສືບຕໍ່ການສົ່ງຂໍ້ຄວາມບໍ່?"</string>
- <string name="sms_control_yes" msgid="3663725993855816807">"ອະນຸຍາດ"</string>
- <string name="sms_control_no" msgid="625438561395534982">"ປະຕິເສດ"</string>
- <string name="sms_short_code_confirm_message" msgid="1645436466285310855">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ຕ້ອງການສົ່ງຂໍ້ຄວາມຫາ &lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;/b&gt;."</string>
- <string name="sms_short_code_details" msgid="3492025719868078457">"ນີ້ "<font fgcolor="#ffffb060">"ອາດເຮັດໃຫ້ເກີດຄ່າໃຊ້ຈ່າຍ"</font>" ໃນບັນຊີມືຖືຂອງທ່ານໄດ້."</string>
- <string name="sms_premium_short_code_details" msgid="5523826349105123687"><font fgcolor="#ffffb060">"ມັນຈະເຮັດໃຫ້ທ່ານເສຍຄ່າບໍລິການໃນບັນຊີຂອງທ່ານ."</font></string>
- <string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"ສົ່ງ"</string>
- <string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"ຍົກເລີກ"</string>
- <string name="sms_short_code_remember_choice" msgid="5289538592272218136">"ຈື່ການເລືອກຂອງຂ້ອຍ"</string>
- <string name="sms_short_code_remember_undo_instruction" msgid="4960944133052287484">"ທ່ານສາມາດປ່ຽນແປງໂຕເລືອກນີ້ໃນພາຍຫຼັງໄດ້ໃນ ການຕັ້ງຄ່າ &gt; ແອັບຯ"</string>
- <string name="sms_short_code_confirm_always_allow" msgid="3241181154869493368">"ອະນຸຍາດທຸກຄັ້ງ"</string>
- <string name="sms_short_code_confirm_never_allow" msgid="446992765774269673">"ບໍ່ອະນຸຍາດເດັດຂາດ"</string>
- <string name="sim_removed_title" msgid="6227712319223226185">"ຖອດ SIM card ອອກແລ້ວ"</string>
- <string name="sim_removed_message" msgid="2333164559970958645">"ເຄືອຂ່າຍມືຖືຈະບໍ່ສາມາດໃຊ້ໄດ້ ຈົນກວ່າທ່ານຈະປິດແລ້ວເປີດໃໝ່ພ້ອມກັບໃສ່ SIM card ທີ່ຖືກຕ້ອງ."</string>
- <string name="sim_done_button" msgid="827949989369963775">"ແລ້ວໆ"</string>
- <string name="sim_added_title" msgid="3719670512889674693">"ເພີ່ມຊິມກາດແລ້ວ"</string>
- <string name="sim_added_message" msgid="6599945301141050216">"ປິດແລ້ວເປີດອຸປະກອນຂອງທ່ານ ເພື່ອເຂົ້າເຖິງເຄືອຂ່າຍມືຖື."</string>
- <string name="sim_restart_button" msgid="4722407842815232347">"ຣີສະຕາດ"</string>
- <string name="time_picker_dialog_title" msgid="8349362623068819295">"ຕັ້ງເວລາ"</string>
- <string name="date_picker_dialog_title" msgid="5879450659453782278">"ກໍານົດວັນທີ"</string>
- <string name="date_time_set" msgid="5777075614321087758">"ຕັ້ງຄ່າ"</string>
- <string name="date_time_done" msgid="2507683751759308828">"ແລ້ວໆ"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"ໃໝ່: "</font></string>
- <string name="perms_description_app" msgid="5139836143293299417">"ສະໜອງໂດຍ <xliff:g id="APP_NAME">%1$s</xliff:g> ."</string>
- <string name="no_permissions" msgid="7283357728219338112">"ບໍ່ຕ້ອງການການອະນຸຍາດ"</string>
- <string name="perm_costs_money" msgid="4902470324142151116">"ລາຍການນີ້ອາດມີການເກັບເງິນ"</string>
- <string name="usb_storage_activity_title" msgid="4465055157209648641">"ບ່ອນຈັດເກັບຂໍ້ມູນ USB"</string>
- <string name="usb_storage_title" msgid="5901459041398751495">"ເຊື່ອມຕໍ່ USB ແລ້ວ"</string>
- <string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"ທ່ານໄດ້ເຊື່ອມຕໍ່ກັບຄອມພິວເຕີຂອງທ່ານຜ່ານ USB ແລ້ວ. ໃຫ້ແຕະປຸ່ມຂ້າງລຸ່ມຖ້າທ່ານຕ້ອງການສຳເນົາໄຟລ໌ ລະຫວ່າງຄອມພິວເຕີ ແລະບ່ອນຈັດເກັບຂໍ້ມູນ USB ຂອງ Android ທ່ານ."</string>
- <string name="usb_storage_message" product="default" msgid="805351000446037811">"ທ່ານໄດ້ເຊື່ອມຕໍ່ກັບຄອມພິວເຕີຂອງທ່ານດ້ວຍ USB ແລ້ວ. ໃຫ້ປຸ່ມທາງດ້ານລຸ່ມນີ້ຫາກທ່ານຕ້ອງການ ທີ່ຈະສຳເນົາໄຟລ໌ຂໍ້ມູນລະຫວ່າງຄອມພິວເຕີ ແລະ SD card ຂອງ Android ຂອງທ່ານ."</string>
- <string name="usb_storage_button_mount" msgid="1052259930369508235">"ເປີດ ບ່ອນຈັດເກັບຂໍ້ມູນ USB"</string>
- <string name="usb_storage_error_message" product="nosdcard" msgid="3017045217365540658">"ມີບັນຫາໃນການໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນ USB ຂອງທ່ານເປັນບ່ອນຈັດເກັບຂໍ້ມູນຈຳນວນຫຼາຍດ້ວຍ USB."</string>
- <string name="usb_storage_error_message" product="default" msgid="2876018512716970313">"ມີບັນຫາໃນການໃຊ້ SD card ຂອງທ່ານເປັນບ່ອນຈັດເກັບຂໍ້ມູນຈຳນວນຫຼາຍດ້ວຍ USB."</string>
- <string name="usb_storage_notification_title" msgid="8175892554757216525">"ເຊື່ອມຕໍ່ USB ແລ້ວ"</string>
- <string name="usb_storage_notification_message" msgid="939822783828183763">"ແຕະເພື່ອສຳເນົາໄຟລ໌ ໃສ່/ຈາກ ຄອມພິວເຕີຂອງທ່ານ."</string>
- <string name="usb_storage_stop_notification_title" msgid="2336058396663516017">"ປິດບ່ອນຈັດເກັບຂໍ້ມູນ USB"</string>
- <string name="usb_storage_stop_notification_message" msgid="1656852098555623822">"ແຕະເພື່ອປິດ ບ່ອນຈັດເກັບຂໍ້ມູນ USB ."</string>
- <string name="usb_storage_stop_title" msgid="660129851708775853">"ບ່ອນຈັດເກັບຂໍ້ມູນ USB ກຳລັງຖືກນຳໃຊ້ຢູ່"</string>
- <string name="usb_storage_stop_message" product="nosdcard" msgid="4264025280777219521">"ກ່ອນປິດບ່ອນຈັດເກັບຂໍ້ມູນ USB, ຖອນ (\"eject\") ບ່ອນຈັດເກັບຂໍ້ມູນ USB ຂອງ Android ຂອງທ່ານຈາກຄອມພິວເຕີຂອງທ່ານ."</string>
- <string name="usb_storage_stop_message" product="default" msgid="8043969782460613114">"ກ່ອນການປິດບ່ອນຈັດເກັບຂໍ້ມູນ USB, ໃຫ້ຖອນການເຊື່ອມຕໍ່ (eject) SD card ຂອງ Android ທ່ານອອກຈາກຄອມພິວເຕີກ່ອນ."</string>
- <string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"ປິດບ່ອນຈັດເກັບຂໍ້ມູນ USB"</string>
- <string name="usb_storage_stop_error_message" msgid="1970374898263063836">"ເກີດບັນຫາໃນການປິດບ່ອນຈັດເກັບຂໍ້ມູນ USB. ໃຫ້ກວດສອບວ່າທ່ານໄດ້ຖອນການເຊື່ອມຕໍ່ USB host ແລ້ວຫຼືຍັງ ຈາກນັ້ນຈຶ່ງລອງອີກຄັ້ງ."</string>
- <string name="dlg_confirm_kill_storage_users_title" msgid="963039033470478697">"ເປີດໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນ USB"</string>
- <string name="dlg_confirm_kill_storage_users_text" msgid="5100428757107469454">"ຫາກທ່ານເປີດນຳໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນ USB ຈະເຮັດໃຫ້ບາງແອັບຯທີ່ທ່ານເຮັດວຽກຢູ່ນັ້ນ ຢຸດເຮັດວຽກ ແລະອາດຈະບໍ່ສາມາດໃຊ້ໄດ້ຈົນກວ່າທ່ານປິດບ່ອນຈັດເກັບຂໍ້ມູນ USB ກ່ອນ."</string>
- <string name="dlg_error_title" msgid="7323658469626514207">"ປະຕິບັດການ USB ບໍ່ສຳເລັດ"</string>
- <string name="dlg_ok" msgid="7376953167039865701">"ຕົກລົງ"</string>
- <string name="usb_mtp_notification_title" msgid="3699913097391550394">"ເຊື່ອມຕໍ່ເປັນອຸປະກອນສື່"</string>
- <string name="usb_ptp_notification_title" msgid="1960817192216064833">"ເຊື່ອມຕໍ່ເປັນກ້ອງຖ່າຍຮູບແລ້ວ"</string>
- <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"ເຊື່ອມຕໍ່ໃນນາມຕົວຕິດຕັ້ງ"</string>
- <string name="usb_accessory_notification_title" msgid="7848236974087653666">"ເຊື່ອມຕໍ່ກັບອຸປະກອນເສີມ USB ແລ້ວ"</string>
- <string name="usb_notification_message" msgid="2290859399983720271">"ແຕະເພື່ອເບິ່ງໂຕເລືອກເລືອກ USB ອື່ນໆ."</string>
- <string name="extmedia_format_title" product="nosdcard" msgid="9020092196061007262">"ຟໍແມັດ ບ່ອນຈັດເກັບຂໍ້ມູນ USB?"</string>
- <string name="extmedia_format_title" product="default" msgid="3648415921526526069">"ຟໍແມັດ SD card?"</string>
- <string name="extmedia_format_message" product="nosdcard" msgid="3934016853425761078">"ໄຟລ໌ທັງໝົດທີ່ຢູ່ໃນບ່ອນຈັດເກັບຂໍ້ມູນ USB ຂອງທ່ານຈະຖືກລຶບອອກໝົດ. ການກະທຳຈະບໍ່ສາມາດຍົກເລີກໄດ້!"</string>
- <string name="extmedia_format_message" product="default" msgid="14131895027543830">"ຂໍ້ມູນທັງໝົດໃນກາດຂອງທ່ານຈະຫາຍໄປ."</string>
- <string name="extmedia_format_button_format" msgid="4131064560127478695">"ຟໍແມັດ"</string>
- <string name="adb_active_notification_title" msgid="6729044778949189918">"ເຊື່ອມຕໍ່ການດີບັ໊ກຜ່ານ USB ແລ້ວ"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"ແຕະເພື່ອປິດການດີບັ໊ກຜ່ານ USB."</string>
- <string name="select_input_method" msgid="4653387336791222978">"ເລືອກຮູບແບບການປ້ອນ"</string>
- <string name="configure_input_methods" msgid="9091652157722495116">"ຕັ້ງຄ່າວິທີການປ້ອນຂໍ້ມູນ"</string>
- <string name="use_physical_keyboard" msgid="6203112478095117625">"ແປ້ນພິມແທ້"</string>
- <string name="hardware" msgid="7517821086888990278">"ຮາດແວ"</string>
- <string name="select_keyboard_layout_notification_title" msgid="1407367017263030773">"ເລືອກຮູບແບບແປ້ນພິມ"</string>
- <string name="select_keyboard_layout_notification_message" msgid="4465907700449257063">"ກົດເພື່ອເລືອກຮູບແບບແປ້ນພິມ."</string>
- <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="candidates_style" msgid="4333913089637062257"><u>"ຕົວເລືອກ"</u></string>
- <string name="ext_media_checking_notification_title" product="nosdcard" msgid="3449816005351468560">"ກຳລັງກຽມບ່ອນຈັດເກັບຂໍ້ມູນ USB"</string>
- <string name="ext_media_checking_notification_title" product="default" msgid="5457603418970994050">"ກຳລັງກະກຽມ SD card"</string>
- <string name="ext_media_checking_notification_message" msgid="8287319882926737053">"ກຳລັງກວດຫາຂໍ້ຜິດພາດ."</string>
- <string name="ext_media_nofs_notification_title" product="nosdcard" msgid="7788040745686229307">"ບ່ອນຈັດເກັບຂໍ້ມູນ USB ເປົ່າຫວ່າງ"</string>
- <string name="ext_media_nofs_notification_title" product="default" msgid="780477838241212997">"SD card ຫວ່າງເປົ່າ"</string>
- <string name="ext_media_nofs_notification_message" product="nosdcard" msgid="7840121067427269500">"ບ່ອນຈັດເກັບຂໍ້ມູນ USB ຫວ່າງເປົ່າ ຫຼືມີໄຟລ໌ລະບົບທີ່ບໍ່ຮອງຮັບ."</string>
- <string name="ext_media_nofs_notification_message" product="default" msgid="8641065641786923604">"SD card ຫວ່າງເປົ່າ ຫຼືມີລະບົບໄຟລ໌ທີ່ບໍ່ຮອງຮັບ."</string>
- <string name="ext_media_unmountable_notification_title" product="nosdcard" msgid="2090046769532713563">"ບ່ອນຈັດເກັບຂໍ້ມູນ USB ທີ່ເສຍຫາຍ."</string>
- <string name="ext_media_unmountable_notification_title" product="default" msgid="6410723906019100189">"SD card ທີ່ເສຍຫາຍ."</string>
- <string name="ext_media_unmountable_notification_message" product="nosdcard" msgid="1795917578395333280">"ບ່ອນຈັດເກັບຂໍ້ມູນ USB ເສຍຫາຍ. ລອງຟໍແມັດມັນອີກຄັ້ງເບິ່ງ."</string>
- <string name="ext_media_unmountable_notification_message" product="default" msgid="1753898567525568253">"SD card ເສຍຫາຍ. ລອງຟໍແມັດມັນອີກຄັ້ງເບິ່ງ."</string>
- <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"ບ່ອນຈັດເກັບຂໍ້ມູນ USB ຖືກຖອດອອກແບບບໍ່ປອດໄພ"</string>
- <string name="ext_media_badremoval_notification_title" product="default" msgid="6872152882604407837">"SD card ຖືກຖອດອອກໂດຍບໍ່ຄາດຄິດ"</string>
- <string name="ext_media_badremoval_notification_message" product="nosdcard" msgid="4329848819865594241">"ຖອດການເຊື່ອມຕໍ່ບ່ອນຈັດເກັບຂໍ້ມູນ USB ກ່ອນທີ່ຈະຖອດອອກ ເພື່ອປ້ອງກັນການສູນເສຍຂໍ້ມູນ."</string>
- <string name="ext_media_badremoval_notification_message" product="default" msgid="7260183293747448241">"ຖອນການເຊື່ອມຕໍ່ SD card ກ່ອນຈະຖອດອອກເພື່ອປ້ອງກັນການສູນເສຍຂໍ້ມູນ."</string>
- <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"ບ່ອນຈັດເກັບຂໍ້ມູນ USB ສາມາດຖອດອອກໄດ້ຢ່າງປອດໄພ"</string>
- <string name="ext_media_safe_unmount_notification_title" product="default" msgid="6729801130790616200">"ສາມາດຖອດ SD card ອອກໄດ້ປອດໄພແລ້ວ"</string>
- <string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"ທ່ານສາມາດຖອດບ່ອນຈັດເກັບຂໍ້ມູນ USB ອອກໄດ້ຢ່າງປອດໄພ."</string>
- <string name="ext_media_safe_unmount_notification_message" product="default" msgid="568841278138377604">"ທ່ານສາມາດຖອດ SD card ອອກໄດ້ຢ່າງປອດໄພ."</string>
- <string name="ext_media_nomedia_notification_title" product="nosdcard" msgid="4486377230140227651">"ບ່ອນຈັດເກັບຂໍ້ມູນ USB ຖືກຖອດອອກແລ້ວ"</string>
- <string name="ext_media_nomedia_notification_title" product="default" msgid="8902518030404381318">"SD card ຖືກຖອດອອກ"</string>
- <string name="ext_media_nomedia_notification_message" product="nosdcard" msgid="6921126162580574143">"ບ່ອນຈັດເກບັຂໍ້ມູນ USB ຖືກຖອດອອກແລ້ວ. ໃຫ້ໃສ່ອັນໃໝ່ເຂົ້າໄປ."</string>
- <string name="ext_media_nomedia_notification_message" product="default" msgid="3870120652983659641">"SD card ຖືກຖອດອອກແລ້ວ. ກະລຸນາໃສ່ອັນໃໝ່."</string>
- <string name="activity_list_empty" msgid="1675388330786841066">"ບໍ່ພົບກິດຈະກຳທີ່ກົງກັນ."</string>
- <string name="permlab_pkgUsageStats" msgid="8787352074326748892">"ອັບເດດສະຖິຕິການນຳໃຊ້ອົງປະກອບ"</string>
- <string name="permdesc_pkgUsageStats" msgid="1106612424254277630">"ອະນຸຍາດໃຫ້ແອັບຯແກ້ໄຂສະຖິຕິ ການນຳໃຊ້ຂໍ້ມູນສ່ວນປະກອບທີ່ເກັບກຳມາ. ແອັບຯທົ່ວໄປບໍ່ຈຳເປັນຕ້ອງໃຊ້."</string>
- <string name="permlab_copyProtectedData" msgid="4341036311211406692">"ສຳເນົາເນື້ອຫາ"</string>
- <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"ອະນຸຍາດໃຫ້ຮ້ອງຂໍບໍລິການຄອນເທັນເນີຫຼັກ ໃນການສຳເນົາເນື້ອຫາ. ບໍ່ໃຊ້ໃນແອັບຯທົ່ວໄປ."</string>
- <string name="permlab_route_media_output" msgid="1642024455750414694">"ກຳນົດເສັ້ນທາງເອົ້າພຸດຂອງສື່"</string>
- <string name="permdesc_route_media_output" msgid="4932818749547244346">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນ ກຳນົດເສັ້ນທາງເອົ້າພຸດຂອງສື່ໄປຫາອຸປະກອນພາຍນອກອື່ນໆ."</string>
- <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"ເຂົ້າໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນຄວາມປອດໄພຄີກາດ"</string>
- <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນ ເຂົ້າເຖິງບ່ອນຈັດເກັບຂໍ້ມູນຄວາມປອດໄພດ້ວຍຄີກາດ."</string>
- <string name="permlab_control_keyguard" msgid="172195184207828387">"ຄວບຄຸມການສະແດງ ແລະການເຊື່ອງໂຕລັອກປຸ່ມກົດ"</string>
- <string name="permdesc_control_keyguard" msgid="3043732290518629061">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນສາມາດຄວບຄຸມຄີກາດໄດ້."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"ແຕະສອງເທື່ອສຳລັບການຄວບຄຸມການຊູມ"</string>
- <string name="gadget_host_error_inflating" msgid="4882004314906466162">"ບໍ່ສາມາດເພີ່ມວິດເຈັດໄດ້."</string>
- <string name="ime_action_go" msgid="8320845651737369027">"ໄປ"</string>
- <string name="ime_action_search" msgid="658110271822807811">"ຊອກຫາ"</string>
- <string name="ime_action_send" msgid="2316166556349314424">"ສົ່ງ"</string>
- <string name="ime_action_next" msgid="3138843904009813834">"ຕໍ່ໄປ"</string>
- <string name="ime_action_done" msgid="8971516117910934605">"ແລ້ວໆ"</string>
- <string name="ime_action_previous" msgid="1443550039250105948">"ກ່ອນໜ້າ"</string>
- <string name="ime_action_default" msgid="2840921885558045721">"ດຳເນີນການ"</string>
- <string name="dial_number_using" msgid="5789176425167573586">"ກົດເລກໝາຍ\nໂດຍໃຊ້ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="create_contact_using" msgid="4947405226788104538">"ສ້າງລາຍຊື່ຜູ່ຕິດຕໍ່\nໂດຍການໃຊ້ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="grant_credentials_permission_message_header" msgid="2106103817937859662">"ມີນຶ່ງແອັບຯ ຫຼືຫຼາຍກວ່ານັ້ນກຳລັງຮ້ອງຂໍການອະນຸຍາດ ເພື່ອເຂົ້າເຖິງບັນຊີຂອງທ່ານໃນຕອນນີ້ ແລະອະນາຄົດ."</string>
- <string name="grant_credentials_permission_message_footer" msgid="3125211343379376561">"ທ່ານຕ້ອງການອະນຸມັດຄຳຮ້ອງຂໍນີ້ບໍ່?"</string>
- <string name="grant_permissions_header_text" msgid="6874497408201826708">"ຄໍາຮ້ອງຂໍການເຂົ້າເຖິງ"</string>
- <string name="allow" msgid="7225948811296386551">"ອະນຸຍາດ"</string>
- <string name="deny" msgid="2081879885755434506">"ປະ​ຕິ​ເສດ"</string>
- <string name="permission_request_notification_title" msgid="6486759795926237907">"ຕ້ອງການການອະນຸຍາດ"</string>
- <string name="permission_request_notification_with_subtitle" msgid="8530393139639560189">"ຮ້ອງຂໍການກຳນົດສິດ\nສຳລັບບັນຊີ <xliff:g id="ACCOUNT">%s</xliff:g> ແລ້ວ."</string>
- <string name="input_method_binding_label" msgid="1283557179944992649">"ວິທີການປ້ອນຂໍ້ມູນ"</string>
- <string name="sync_binding_label" msgid="3687969138375092423">"ຊິ້ງຂໍ້ມູນ"</string>
- <string name="accessibility_binding_label" msgid="4148120742096474641">"ການຊ່ວຍເຂົ້າເຖິງ"</string>
- <string name="wallpaper_binding_label" msgid="1240087844304687662">"ພາບພື້ນຫຼັງ"</string>
- <string name="chooser_wallpaper" msgid="7873476199295190279">"ປ່ຽນພາບພື້ນຫຼັງ"</string>
- <string name="notification_listener_binding_label" msgid="2014162835481906429">"ໂຕຟັງການແຈ້ງເຕືອນ"</string>
- <string name="vpn_title" msgid="19615213552042827">"ເປີດນຳໃຊ້ VPN ແລ້ວ"</string>
- <string name="vpn_title_long" msgid="6400714798049252294">"ເປີດໃຊ້ VPN ໂດຍ <xliff:g id="APP">%s</xliff:g>"</string>
- <string name="vpn_text" msgid="3011306607126450322">"ແຕະເພື່ອຈັດການເຄືອຂ່າຍ."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"ເຊື່ອມຕໍ່ຢູ່ກັບ <xliff:g id="SESSION">%s</xliff:g>. ແຕະເພື່ອຈັດການເຄືອຂ່າຍ."</string>
- <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>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"ແຕະເພື່ອປັບຄ່າ"</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>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"ກົດເພື່ອປິດໂຫມດຂັບລົດ."</string>
- <string name="tethered_notification_title" msgid="3146694234398202601">"ການປ່ອຍສັນຍານ ຫຼືຮັອດສະປອດທີ່ເຮັດວຽກຢູ່"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"ແຕະເພື່ອຕິດຕັ້ງ."</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>
- <string name="throttle_warning_notification_title" msgid="4890894267454867276">"ມີການໃຊ້ອິນເຕີເນັດຫຼາຍ"</string>
- <string name="throttle_warning_notification_message" msgid="3340822228599337743">"ແຕະເພື່ອສຶກສາເພີ່ມເຕີມກ່ຽວກັບການໃຊ້ຂໍ້ມູນມືຖື."</string>
- <string name="throttled_notification_title" msgid="6269541897729781332">"ການນຳໃຊ້ອິນເຕີເນັດຮອດຂີດຈຳກັດແລ້ວ"</string>
- <string name="throttled_notification_message" msgid="5443457321354907181">"ແຕະເພື່ອສຶກສາເພີ່ມເຕີມກ່ຽວກັບການນຳໃຊ້ຂໍ້ມູນມືຖື."</string>
- <string name="no_matches" msgid="8129421908915840737">"ບໍ່ພົບຜົນການຊອກຫາ"</string>
- <string name="find_on_page" msgid="1946799233822820384">"ຊອກໃນໜ້າ"</string>
- <plurals name="matches_found">
- <item quantity="one" msgid="8167147081136579439">"1 ກົງກັນ"</item>
- <item quantity="other" msgid="4641872797067609177">"<xliff:g id="INDEX">%d</xliff:g> ຈາກທັງໝົດ <xliff:g id="TOTAL">%d</xliff:g>"</item>
- </plurals>
- <string name="action_mode_done" msgid="7217581640461922289">"ແລ້ວໆ"</string>
- <string name="progress_unmounting" product="nosdcard" msgid="3923810448507612746">"ກຳລັງຖອນການເຊື່ອມຕໍ່ບ່ອນຈັດເກັບຂໍ້ມູນ USB …"</string>
- <string name="progress_unmounting" product="default" msgid="1327894998409537190">"ຖອນການເຊື່ອມຕໍ່ SD card..."</string>
- <string name="progress_erasing" product="nosdcard" msgid="4521573321524340058">"ກຳລັງລຶບ ບ່ອນຈັດເກັບຂໍ້ມູນ USB …"</string>
- <string name="progress_erasing" product="default" msgid="6596988875507043042">"ກຳລັງລຶບ​ SD card..."</string>
- <string name="format_error" product="nosdcard" msgid="6299769563624776948">"ບໍ່ສາມາດລຶບບ່ອນຈັດເກັບຂໍ້ມູນ USB ໄດ້."</string>
- <string name="format_error" product="default" msgid="7315248696644510935">"ບໍ່ສາມາດລຶບ SD card ໄດ້."</string>
- <string name="media_bad_removal" msgid="7960864061016603281">"SD card ຖືກຖອດອອກກ່ອນການຖອນການເຊື່ອມຕໍ່."</string>
- <string name="media_checking" product="nosdcard" msgid="418188720009569693">"ບ່ອນຈັດເກັບຂໍ້ມູນກຳລັງຢູ່ໃນລະຫວ່າງການກວດສອບ."</string>
- <string name="media_checking" product="default" msgid="7334762503904827481">"ກຳລັງກວດສອບ SD card ຢູ່ໃນຂະນະນີ້."</string>
- <string name="media_removed" msgid="7001526905057952097">"SD card ຖືກຖອດອອກແລ້ວ."</string>
- <string name="media_shared" product="nosdcard" msgid="5830814349250834225">"ບ່ອນຈັດເກັບຂໍ້ມູນ USB ກຳລັງຖືກນຳໃຊ້ໂດຍຄອມພິວເຕີ."</string>
- <string name="media_shared" product="default" msgid="5706130568133540435">"SD card ກຳລັງຖືກນຳໃຊ້ໂດຍຄອມພິວເຕີຢູ່."</string>
- <string name="media_unknown_state" msgid="729192782197290385">"ຂໍ້ມູນພາຍນອກຢູ່ໃນສະຖານະທີ່ບໍ່ຮູ້ຈັກ."</string>
- <string name="share" msgid="1778686618230011964">"ແບ່ງປັນ"</string>
- <string name="find" msgid="4808270900322985960">"ຊອກຫາ"</string>
- <string name="websearch" msgid="4337157977400211589">"ຊອກຫາເວັບ"</string>
- <string name="find_next" msgid="5742124618942193978">"ຊອກຫາຕໍ່ໄປ"</string>
- <string name="find_previous" msgid="2196723669388360506">"ຊອກກ່ອນໜ້ານີ້"</string>
- <string name="gpsNotifTicker" msgid="5622683912616496172">"ຄຳຮ້ອງຂໍສະຖານທີ່ຈາກ <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="gpsNotifTitle" msgid="5446858717157416839">"ຮ້ອງຂໍສະຖານທີ່"</string>
- <string name="gpsNotifMessage" msgid="1374718023224000702">"ຮ້ອງຂໍໂດຍ <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
- <string name="gpsVerifYes" msgid="2346566072867213563">"ຕົກລົງ"</string>
- <string name="gpsVerifNo" msgid="1146564937346454865">"ບໍ່"</string>
- <string name="sync_too_many_deletes" msgid="5296321850662746890">"ກາຍເຂດກຳນົດການລຶບ"</string>
- <string name="sync_too_many_deletes_desc" msgid="496551671008694245">"ມີ <xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> ລາຍການທີ່ຖືກລຶບສຳລັບ <xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g>, ບັນຊີ <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g>. ທ່ານຕ້ອງການຈະເຮັດແນວໃດ?"</string>
- <string name="sync_really_delete" msgid="2572600103122596243">"ລຶບລາຍການ"</string>
- <string name="sync_undo_deletes" msgid="2941317360600338602">"ຍົກເລີກການລຶບ"</string>
- <string name="sync_do_nothing" msgid="3743764740430821845">"ບໍ່ເຮັດຫຍັງໃນຕອນນີ້"</string>
- <string name="choose_account_label" msgid="5655203089746423927">"ເລືອກບັນຊີ"</string>
- <string name="add_account_label" msgid="2935267344849993553">"ເພີ່ມບັນຊີ"</string>
- <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>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<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>
- <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"ເພີ່ມຊົ່ວໂມງ"</string>
- <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"ຫຼຸດຊົ່ວໂມງ"</string>
- <string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"ຕັ້ງ PM"</string>
- <string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"ຕັ້ງ AM"</string>
- <string name="date_picker_increment_month_button" msgid="5369998479067934110">"ເພີ່ມຈຳນວນເດືອນ"</string>
- <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"ຫຼຸດເດືອນ"</string>
- <string name="date_picker_increment_day_button" msgid="7130465412308173903">"ເພີ່ມຈຳນວນມື້"</string>
- <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"ຫຼຸດຈຳນວນມື້"</string>
- <string name="date_picker_increment_year_button" msgid="6318697384310808899">"ເພີ່ມປີຂຶ້ນ"</string>
- <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"ຫຼຸດຈຳນວນປີ"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"ຍົກເລີກ"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"ລຶບ"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"ແລ້ວໆ"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"ປ່ຽນຮູບແບບ"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string>
- <string name="activitychooserview_choose_application" msgid="2125168057199941199">"ເລືອກແອັບຯ"</string>
- <string name="shareactionprovider_share_with" msgid="806688056141131819">"ແບ່ງປັນກັບ"</string>
- <string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"ແບ່ງປັນໃຫ້ <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
- <string name="content_description_sliding_handle" msgid="415975056159262248">"ເລື່ອນບ່ອນຖື ແລ້ວແຕະຄ້າງໄວ້."</string>
- <string name="description_direction_up" msgid="7169032478259485180">"ເລື່ອນຂຶ້ນເພື່ອ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_direction_down" msgid="5087739728639014595">"ເລື່ອນລົງເພື່ອ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_direction_left" msgid="7207478719805562165">"ເລື່ອນໄປທາງຊ້າຍເພື່ອ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_direction_right" msgid="8034433242579600980">"ເລື່ອນໄປທາງຂວາເພື່ອ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"ປົດລັອກ"</string>
- <string name="description_target_camera" msgid="969071997552486814">"ກ້ອງ"</string>
- <string name="description_target_silent" msgid="893551287746522182">"ປິດສຽງ"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"ເປີດສຽງ"</string>
- <string name="description_target_search" msgid="3091587249776033139">"ຊອກຫາ"</string>
- <string name="description_target_unlock_tablet" msgid="3833195335629795055">"ປັດເພື່ອປົດລັອກ."</string>
- <string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"ສຽບສາຍຫູຟັງເພື່ອຟັງລະຫັດຜ່ານ."</string>
- <string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"ຈໍ້າເມັດ."</string>
- <string name="action_bar_home_description" msgid="5293600496601490216">"ກັບໄປໜ້າຫຼັກ"</string>
- <string name="action_bar_up_description" msgid="2237496562952152589">"ຂຶ້ນເທິງ"</string>
- <string name="action_menu_overflow_description" msgid="2295659037509008453">"ໂຕເລືອກອື່ນ"</string>
- <string name="action_bar_home_description_format" msgid="7965984360903693903">"%1$s, %2$s"</string>
- <string name="action_bar_home_subtitle_description_format" msgid="6985546530471780727">"%1$s, %2$s, %3$s"</string>
- <string name="storage_internal" msgid="4891916833657929263">"ບ່ອນຈັດເກັບຂໍ້ມູນພາຍໃນ"</string>
- <string name="storage_sd_card" msgid="3282948861378286745">"SD card"</string>
- <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>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"ແຕະເພື່ອເບິ່ງການນຳໃຊ້ ແລະການຕັ້ງຄ່າ."</string>
- <string name="data_usage_3g_limit_title" msgid="7093334419518706686">"ປິດການນຳໃຊ້ຂໍ້ມູນ 2G-3G"</string>
- <string name="data_usage_4g_limit_title" msgid="7636489436819470761">"ການນຳໃຊ້ຂໍ້ມູນ 4G ຖືກປິດແລ້ວ"</string>
- <string name="data_usage_mobile_limit_title" msgid="7869402519391631884">"ຂໍ້ມູນມືຖືຖືກປິດໄວ້"</string>
- <string name="data_usage_wifi_limit_title" msgid="8992154736441284865">"ປິດຂໍ້ມູນ Wi-Fi ແລ້ວ"</string>
- <string name="data_usage_limit_body" msgid="3317964706973601386">"ແຕະເພື່ອເປີດໃຊ້."</string>
- <string name="data_usage_3g_limit_snoozed_title" msgid="7026739121138005231">"ຂໍ້ມູນ 2G-3G ຮອດຂີດຈຳກັດແລ້ວ"</string>
- <string name="data_usage_4g_limit_snoozed_title" msgid="1106562779311209039">"ໝົດກຳນົດການນຳໃຊ້ຂໍ້ມູນ 4G"</string>
- <string name="data_usage_mobile_limit_snoozed_title" msgid="279240572165412168">"ໝົດກຳນົດການນຳໃຊ້ຂໍ້ມູນໃນມືຖື"</string>
- <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>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"ແຕະເພື່ອເອົາການຈຳກັດອອກ"</string>
- <string name="ssl_certificate" msgid="6510040486049237639">"ໃບຮັບຮອງຄວາມປອດໄພ"</string>
- <string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ໃບຮັບຮອງບໍ່ຖືກຕ້ອງ."</string>
- <string name="issued_to" msgid="454239480274921032">"ອອກໃຫ້ແກ່:"</string>
- <string name="common_name" msgid="2233209299434172646">"ຊື່ສາມັນ:"</string>
- <string name="org_name" msgid="6973561190762085236">"ອົງກອນ:"</string>
- <string name="org_unit" msgid="7265981890422070383">"ໜ່ວຍອົງກອນ:"</string>
- <string name="issued_by" msgid="2647584988057481566">"ອອກໃຫ້ໂດຍ:"</string>
- <string name="validity_period" msgid="8818886137545983110">"ອາຍຸການນຳໃຊ້:"</string>
- <string name="issued_on" msgid="5895017404361397232">"ອອກໃຫ້ເມື່ອ:"</string>
- <string name="expires_on" msgid="3676242949915959821">"ໝົດອາຍຸໃນ:"</string>
- <string name="serial_number" msgid="758814067660862493">"ໝາຍເລກຊີຣຽວ:"</string>
- <string name="fingerprints" msgid="4516019619850763049">"ລາຍນິ້ວມື:"</string>
- <string name="sha256_fingerprint" msgid="4391271286477279263">"ພິມລາຍນິ້ວມື SHA-256:"</string>
- <string name="sha1_fingerprint" msgid="7930330235269404581">"ລາຍນິ້ວມື SHA-1:"</string>
- <string name="activity_chooser_view_see_all" msgid="4292569383976636200">"ເບິ່ງທັງຫມົດ"</string>
- <string name="activity_chooser_view_dialog_title_default" msgid="4710013864974040615">"ເລືອກກິດຈະກຳ"</string>
- <string name="share_action_provider_share_with" msgid="5247684435979149216">"ແບ່ງປັນກັບ"</string>
- <string name="status_bar_device_locked" msgid="3092703448690669768">"ອຸປະກອນລັອກ."</string>
- <string name="list_delimeter" msgid="3975117572185494152">", "</string>
- <string name="sending" msgid="3245653681008218030">"ກຳລັງສົ່ງ..."</string>
- <string name="launchBrowserDefault" msgid="2057951947297614725">"ເປີດໂປຣແກຣມທ່ອງເວັບ?"</string>
- <string name="SetupCallDefault" msgid="5834948469253758575">"ຮັບການໂທບໍ່?"</string>
- <string name="activity_resolver_use_always" msgid="8017770747801494933">"ທຸກຄັ້ງ"</string>
- <string name="activity_resolver_use_once" msgid="2404644797149173758">"ຄັ້ງດຽວ"</string>
- <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"ແທັບເລັດ"</string>
- <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"ໂທລະສັບ"</string>
- <string name="default_audio_route_name_headphones" msgid="8119971843803439110">"ຫູຟັງ"</string>
- <string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"ບ່ອນຕັ້ງລຳໂພງ"</string>
- <string name="default_media_route_name_hdmi" msgid="2450970399023478055">"HDMI"</string>
- <string name="default_audio_route_category_name" msgid="3722811174003886946">"ລະບົບ"</string>
- <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"ສຽງ Bluetooth"</string>
- <string name="wireless_display_route_description" msgid="9070346425023979651">"ການສະແດງຜົນໄຮ້ສາຍ"</string>
- <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"ແລ້ວໆ"</string>
- <string name="media_route_button_content_description" msgid="5758553567065145276">"ມີເດຍເອົ້າພຸດ"</string>
- <string name="media_route_status_scanning" msgid="7279908761758293783">"ກຳລັງສະແກນ..."</string>
- <string name="media_route_status_connecting" msgid="6422571716007825440">"ກຳລັງເຊື່ອມຕໍ່..."</string>
- <string name="media_route_status_available" msgid="6983258067194649391">"ສາມາດໃຊ້ໄດ້"</string>
- <string name="media_route_status_not_available" msgid="6739899962681886401">"ບໍ່ສາມາດໃຊ້ໄດ້"</string>
- <string name="media_route_status_in_use" msgid="4533786031090198063">"ກຳລັງໃຊ້ຢູ່"</string>
- <string name="display_manager_built_in_display_name" msgid="2583134294292563941">"ໜ້າຈໍທີ່ຕິດມານຳ"</string>
- <string name="display_manager_hdmi_display_name" msgid="1555264559227470109">"ຈໍ HDMI"</string>
- <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"ການວາງຊ້ອນ #<xliff:g id="ID">%1$d</xliff:g>"</string>
- <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string>
- <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", ປອດໄພ"</string>
- <string name="wifi_display_notification_title" msgid="2223050649240326557">"ເຊື່ອມຕໍ່ການສະແດງຜົນໄຮ້ສາຍແລ້ວ"</string>
- <string name="wifi_display_notification_message" msgid="4498802012464170685">"ຈໍນີ້ກຳລັງສະແດງຢູ່ໃນອຸປະກອນອື່ນ"</string>
- <string name="wifi_display_notification_disconnect" msgid="6183754463561153372">"ຢຸດການເຊື່ອມຕໍ່"</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"ການໂທສຸກເສີນ"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ລືມຮູບແບບປົດລັອກ?"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"ຮູບແບບຜິດ"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"ລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"ລະຫັດ PIN ຜິດ"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"ລອງໃໝ່ໃນອີກ <xliff:g id="NUMBER">%1$d</xliff:g> ວິນາທີ."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"ແຕ້ມຮູບແບບປົດລັອກຂອງທ່ານ"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"ໃສ່ລະຫັດ PIN ຂອງຊິມ"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"ໃສ່ລະຫັດ PIN"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"ໃສ່ລະຫັດຜ່ານ"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"ຊິມຖືກປິດການນຳໃຊ້ແລ້ວ. ປ້ອນລະຫັດ PUK ເພື່ອດຳເນີນການຕໍ່. ຕິດຕໍ່ຜູ່ໃຫ້ບໍລິການສຳລັບລາຍລະອຽດ."</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"ໃສ່ລະຫັດ PIN ທີ່ຕ້ອງການ."</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"ຢືນຢັນລະຫັດ PIN ທີ່ຕ້ອງການ"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"ປົດລັອກ SIM card..."</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"ລະຫັດ PIN ບໍ່ຖືກຕ້ອງ."</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"ພິມລະຫັດ PIN ຄວາມຍາວ 4 ເຖິງ 8 ໂຕເລກ."</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"ລະຫັດ PUK ຄວນມີຢ່າງໜ້ອຍ 8 ໂຕເລກ."</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"ປ້ອນລະຫັດ PUK ທີ່ຖືກຕ້ອງຄືນໃໝ່. ການພະຍາຍາມໃສ່ຫຼາຍເທື່ອຈະເຮັດໃຫ້ຊິມກາດໃຊ້ບໍ່ໄດ້ຖາວອນ."</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"ລະຫັດ PIN ບໍ່ກົງກັນ"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"ແຕ້ມຮູບແບບປົດລັອກຫຼາຍເກີນໄປ"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"ເພື່ອປົດລັອກ, ເຂົ້າສູ່ລະບົບດ້ວຍບັນຊີ Google ຂອງທ່ານ."</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"ຊື່ຜູ່ໃຊ້ (ອີເມວ)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"ລະຫັດຜ່ານ"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"ເຂົ້າສູ່ລະບົບ"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"ຊື່ຜູ່ໃຊ້ ຫຼືລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ."</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"ລືມຊື່ຜູ່ໃຊ້ ຫຼືລະຫັດຜ່ານຂອງທ່ານບໍ່?\nໄປທີ່ "<b>"google.com/accounts/recovery"</b>"."</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"ກຳລັງກວດສອບບັນຊີ..."</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"ທ່ານພິມລະຫັດ PIN​ ຂອງທ່ານຜິດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. \n\nກະລຸນາລອງໃໝ່ໃນອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ວິນາທີ."</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"ທ່ານພິມລະຫັດຜິດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. \n\nລອງໃໝ່ໃນອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ວິນາທີ."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"ທ່ານແຕ້ມຮູບແບບປົດລັອກຂອງທ່ານຜິດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. \n\nກະລຸນາລອງໃໝ່ໃນອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ວິນາທີ."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"ທ່ານໄດ້ພະຍາຍາມປົດລັອກແທັບເລັດບໍ່ສຳເລັດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. ຫຼັງຈາກຄວາມພະຍາຍາມອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ເທື່ອ ແທັບເລັດຂອງທ່ານຈະຖືກຕັ້ງ ໃຫ້ກັບໄປໃຊ້ຄ່າເລີ່ມຕົ້ນຈາກໂຮງງານຄືນໃໝ່ ແລະຂໍ້ມູນຜູ່ໃຊ້ທັງໝົດຈະສູນຫາຍໄປ."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"ທ່ານໄດ້ພະຍາຍາມປົດລັອກໂທລະສັບບໍ່ສຳເລັດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. ຫຼັງຈາກຄວາມພະຍາຍາມອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ເທື່ອ ໂທລະສັບຂອງທ່ານຈະຖືກຕັ້ງ ໃຫ້ກັບໄປໃຊ້ຄ່າເລີ່ມຕົ້ນຈາກໂຮງງານຄືນໃໝ່ ແລະຂໍ້ມູນຜູ່ໃຊ້ທັງໝົດຈະສູນຫາຍໄປ."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"ທ່ານໄດ້ພະຍາຍາມປົດລັອກແທັບເລັດບໍ່ສຳເລັດ <xliff:g id="NUMBER">%d</xliff:g> ເທື່ອແລ້ວ. ຕອນນີ້ແທັບເລັດຈະຖືກຕັ້ງໃຫ້ກັບໄປໃຊ້ຄ່າເລີ່ມຕົ້ນຈາກໂຮງງານ."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"ທ່ານໄດ້ພະຍາຍາມປົດລັອກໂທລະສັບບໍ່ຖືກ <xliff:g id="NUMBER">%d</xliff:g> ເທື່ອແລ້ວ. ຕອນນີ້ໂທລະສັບຈະຖືກຣີເຊັດເປັນຄ່າຈາກໂຮງງານ."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"ທ່ານແຕ້ມຮູບແບບປົດລັອກຜິດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. ຫຼັງຈາກແຕ້ມຜິດອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ເທື່ອ, ທ່ານຈະຖືກຖາມໃຫ້ປົດລັອກແທັບເລັດຂອງທ່ານ ດ້ວຍການເຂົ້າສູ່ລະບົບໂດຍໃຊ້ອີເມວຂອງທ່ານ.\n\n ກະລຸນາລອງໃໝ່ອີກຄັ້ງໃນອີກ <xliff:g id="NUMBER_2">%d</xliff:g> ວິນາທີ."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"ທ່ານແຕ້ມຮູບແບບປົດລັອກຂອງທ່ານຜິດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. ຫຼັງຈາກຄວາມພະຍາຍາມອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ເທື່ອ ທ່ານຈະຖືກຖາມໃຫ້ປົດລັອກໂທລະສັບຂອງທ່ານດ້ວຍບັນຊີອີເມວ.\n\n ລອງໃໝ່ອີກຄັ້ງໃນ <xliff:g id="NUMBER_2">%d</xliff:g> ວິນາທີ."</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"ລຶບອອກ"</string>
- <string name="safe_media_volume_warning" product="default" msgid="7324161939475478066">"ຕ້ອງການເພີ່ມລະດັບສຽງຈົນເກີນລະດັບທີ່ແນະນຳ?\nການຟັງໃນລະດັບສຽງດັງເປັນເວລາດົນ ອາດທຳລາຍການໄດ້ຍິນສຽງຂອງທ່ານໄດ້."</string>
- <string name="continue_to_enable_accessibility" msgid="1626427372316070258">"ກົດສອງນິ້ວຄ້າງໄວ້ເພື່ອເປີດໃຊ້ການຊ່ວຍເຂົ້າເຖິງ"</string>
- <string name="accessibility_enabled" msgid="1381972048564547685">"ເປີດການຊ່ວຍເຂົ້າເຖິງແລ້ວ."</string>
- <string name="enable_accessibility_canceled" msgid="3833923257966635673">"ຍົກເລີກໂຕຊ່ວຍການເຂົ້າເຖິງແລ້ວ."</string>
- <string name="user_switched" msgid="3768006783166984410">"ຜູ່ໃຊ້ປັດຈຸບັນ <xliff:g id="NAME">%1$s</xliff:g> ."</string>
- <string name="owner_name" msgid="2716755460376028154">"ເຈົ້າຂອງ"</string>
- <string name="error_message_title" msgid="4510373083082500195">"ຜິດພາດ"</string>
- <string name="app_no_restricted_accounts" msgid="5739463249673727736">"ແອັບພລິເຄຊັນນີ້ບໍ່ຮອງຮັບບັນຊີຂອງໂປຣໄຟລ໌ທີ່ຖືກຈຳກັດ."</string>
- <string name="app_not_found" msgid="3429141853498927379">"ບໍ່ພົບແອັບພລິເຄຊັນເພື່ອຈັດການເຮັດວຽກນີ້."</string>
- <string name="revoke" msgid="5404479185228271586">"ຖອນ"</string>
- <string name="mediaSize_iso_a0" msgid="7875427489420821793">"ISO A0"</string>
- <string name="mediaSize_iso_a1" msgid="3760734499050875356">"ISO A1"</string>
- <string name="mediaSize_iso_a2" msgid="5973266378020144382">"ISO A2"</string>
- <string name="mediaSize_iso_a3" msgid="1373407105687300884">"ISO A3"</string>
- <string name="mediaSize_iso_a4" msgid="6689772807982597254">"ISO A4"</string>
- <string name="mediaSize_iso_a5" msgid="5353549652015741040">"ISO A5"</string>
- <string name="mediaSize_iso_a6" msgid="8585038048674911907">"ISO A6"</string>
- <string name="mediaSize_iso_a7" msgid="6641836716963839119">"ISO A7"</string>
- <string name="mediaSize_iso_a8" msgid="7571139437465693355">"ISO A8"</string>
- <string name="mediaSize_iso_a9" msgid="1378455891957115079">"ISO A9"</string>
- <string name="mediaSize_iso_a10" msgid="2480747457429475344">"ISO A10"</string>
- <string name="mediaSize_iso_b0" msgid="3965935097661108039">"ISO B0"</string>
- <string name="mediaSize_iso_b1" msgid="2505753285010115437">"ISO B1"</string>
- <string name="mediaSize_iso_b2" msgid="8763874709859458453">"ISO B2"</string>
- <string name="mediaSize_iso_b3" msgid="4210506688191764076">"ISO B3"</string>
- <string name="mediaSize_iso_b4" msgid="5749404165888526034">"ISO B4"</string>
- <string name="mediaSize_iso_b5" msgid="7640627414621904733">"ISO B5"</string>
- <string name="mediaSize_iso_b6" msgid="7342988864712748544">"ISO B6"</string>
- <string name="mediaSize_iso_b7" msgid="5069844065235382429">"ISO B7"</string>
- <string name="mediaSize_iso_b8" msgid="7316818922278779774">"ISO B8"</string>
- <string name="mediaSize_iso_b9" msgid="5414727094026532341">"ISO B9"</string>
- <string name="mediaSize_iso_b10" msgid="5251253731832048185">"ISO B10"</string>
- <string name="mediaSize_iso_c0" msgid="4003138342671964217">"ISO C0"</string>
- <string name="mediaSize_iso_c1" msgid="1935188063393553008">"ISO C1"</string>
- <string name="mediaSize_iso_c2" msgid="3197307969712069904">"ISO C2"</string>
- <string name="mediaSize_iso_c3" msgid="4335826087321913508">"ISO C3"</string>
- <string name="mediaSize_iso_c4" msgid="3745639598281015005">"ISO C4"</string>
- <string name="mediaSize_iso_c5" msgid="8269457765822791013">"ISO C5"</string>
- <string name="mediaSize_iso_c6" msgid="566666105260346930">"ISO C6"</string>
- <string name="mediaSize_iso_c7" msgid="8678413180782608498">"ISO C7"</string>
- <string name="mediaSize_iso_c8" msgid="8392376206627041730">"ISO C8"</string>
- <string name="mediaSize_iso_c9" msgid="9191613372324845405">"ISO C9"</string>
- <string name="mediaSize_iso_c10" msgid="7327709699184920822">"ISO C10"</string>
- <string name="mediaSize_na_letter" msgid="4191805615829472953">"ຈົດໝາຍ"</string>
- <string name="mediaSize_na_gvrnmt_letter" msgid="7853382192649405507">"ຈົດ​ຫມາຍທາງ​ລັດ​ຖະ​ບານ"</string>
- <string name="mediaSize_na_legal" msgid="6697982988283823150">"ກົດຫມາຍ"</string>
- <string name="mediaSize_na_junior_legal" msgid="3727743969902758948">"ກົດໝາຍຂັ້ນຕ່ຳ"</string>
- <string name="mediaSize_na_ledger" msgid="281871464896601236">"ບັນ​ຊີ"</string>
- <string name="mediaSize_na_tabloid" msgid="5775966416333578127">"ແຖບບລອຍ"</string>
- <string name="write_fail_reason_cancelled" msgid="7091258378121627624">"ຍົກເລີກແລ້ວ"</string>
- <string name="write_fail_reason_cannot_write" msgid="8132505417935337724">"ເນື້ອ​ໃນ​ການຂຽນຜິດພາດ"</string>
- <string name="restr_pin_enter_pin" msgid="3395953421368476103">"ໃສ່ລະຫັດ PIN"</string>
- <string name="restr_pin_enter_old_pin" msgid="1462206225512910757">"PIN ປະ​ຈຸ​ບັນ"</string>
- <string name="restr_pin_enter_new_pin" msgid="5959606691619959184">"ລະຫັດ PIN ໃໝ່"</string>
- <string name="restr_pin_confirm_pin" msgid="8501523829633146239">"ຢືນຢັນລະຫັດ PIN ໃໝ່"</string>
- <string name="restr_pin_create_pin" msgid="8017600000263450337">"ສ້າງ PIN ສໍາ​ລັບ​ການ​ປັບ​ປຸງ​ຂໍ້ຈໍາ​ກັດ"</string>
- <string name="restr_pin_error_doesnt_match" msgid="2224214190906994548">"PIN ບໍ່​ກົງກັນ. ລອງໃໝ່ອີກຄັ້ງ​."</string>
- <string name="restr_pin_error_too_short" msgid="8173982756265777792">"PIN ​ສັ້ນ​ເກີນ​ໄປ​. ຕ້ອງມີຢ່າງໜ້ອຍ 4 ຫຼັກ​."</string>
- <plurals name="restr_pin_countdown">
- <item quantity="one" msgid="4835639969503729874">"PIN ​ບໍ່​ຖືກ​ຕ້ອງ​. ລອງໃໝ່ໃນອີກ 1 ວິນາທີ."</item>
- <item quantity="other" msgid="8030607343223287654">"PIN ບໍ່​ຖືກ​ຕ້ອງ​. ລອງໃໝ່ໃນອີກ <xliff:g id="COUNT">%d</xliff:g> ວິ​ນາ​ທີ​."</item>
- </plurals>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"ປັດຢູ່ຂອບຂອງໜ້າຈໍເພື່ອສະແດງແຖບ"</string>
-</resources>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 52113113a97c..9fa41c900175 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Band. dar po <xliff:g id="COUNT">%d</xliff:g> s"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Vėliau bandykite dar kartą"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Perbr. žemyn, kad išeit. iš viso ekr. rež."</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Perbraukite nuo viršaus žemyn, kad išeitumėte iš viso ekrano režimo"</string>
</resources>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 0fb18ddf8e3b..036d5d635cf9 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Mēģ. vēl pēc <xliff:g id="COUNT">%d</xliff:g> s"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Vēlāk mēģiniet vēlreiz."</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Lai izietu no pilnekr., velc. no augšas lejup."</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Lai izietu no pilnekrāna režīma, velciet no augšas uz leju."</string>
</resources>
diff --git a/core/res/res/values-mn-rMN/strings.xml b/core/res/res/values-mn-rMN/strings.xml
index 2639d432ecfa..fe3d78bdab47 100644
--- a/core/res/res/values-mn-rMN/strings.xml
+++ b/core/res/res/values-mn-rMN/strings.xml
@@ -609,7 +609,7 @@
<string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Блютүүт тохиргоонд хандах"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Апп нь дотоод блютүүт таблетын тохиргоог харах боломжтой ба хос болох төхөөрөмжтэй холболтыг зөвшөөрөх болон хийх боломжтой"</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Апп нь утасны дотоод блютүүтыг тохируулах боломжтой ба гадаад төхөөрөмжийг олох болон хос үүсгэх боломжтой."</string>
- <string name="permlab_bluetoothPriv" msgid="4009494246009513828">"Аппликешнд Блютүүт хоallow Bluetooth pairing by Application"</string>
+ <string name="permlab_bluetoothPriv" msgid="4009494246009513828">"Аппликешнд bluetooth хослол хийхийг зөвшөөрнө"</string>
<string name="permdesc_bluetoothPriv" product="tablet" msgid="8045735193417468857">"Апп-д хэрэглэгчтэй харьцахгүйгээр зайны төхөөрөмжүүдтэй хослох боломж олгоно."</string>
<string name="permdesc_bluetoothPriv" product="default" msgid="8045735193417468857">"Апп-д хэрэглэгчтэй харьцахгүйгээр зайны төхөөрөмжүүдтэй хослох боломж олгоно."</string>
<string name="permlab_accessWimaxState" msgid="4195907010610205703">"WiMAX-д холбогдох болон салах"</string>
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"<xliff:g id="COUNT">%d</xliff:g> секундын дараа дахин оролдоно уу"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Дараа дахин оролдоно уу"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Бүтэн дэлгэцээс гарахын тулд дээрээс нь эхлэн доош шудрана уу"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Бүтэн дэлгэцээс гарахын тулд дээрээс нь эхлэн доош шудрана уу."</string>
</resources>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
deleted file mode 100644
index e18732045426..000000000000
--- a/core/res/res/values-mn/strings.xml
+++ /dev/null
@@ -1,1583 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="byteShort" msgid="8340973892742019101">"B"</string>
- <string name="kilobyteShort" msgid="5973789783504771878">"КБ"</string>
- <string name="megabyteShort" msgid="6355851576770428922">"МБ"</string>
- <string name="gigabyteShort" msgid="3259882455212193214">"ГБ"</string>
- <string name="terabyteShort" msgid="231613018159186962">"TБ"</string>
- <string name="petabyteShort" msgid="5637816680144990219">"ПБ"</string>
- <string name="fileSizeSuffix" msgid="9164292791500531949">"<xliff:g id="NUMBER">%1$s</xliff:g><xliff:g id="UNIT">%2$s</xliff:g>"</string>
- <string name="untitled" msgid="4638956954852782576">"&lt;Гарчиггүй&gt;"</string>
- <string name="ellipsis" msgid="7899829516048813237">"…"</string>
- <string name="ellipsis_two_dots" msgid="1228078994866030736">"‥"</string>
- <string name="emptyPhoneNumber" msgid="7694063042079676517">"(Утасны дугаар байхгүй)"</string>
- <string name="unknownName" msgid="2277556546742746522">"(Тодорхойгүй)"</string>
- <string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"дуут шуудан"</string>
- <string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN1"</string>
- <string name="mmiError" msgid="5154499457739052907">"Холболтын асуудал эсвэл буруу MMI код."</string>
- <string name="mmiFdnError" msgid="5224398216385316471">"Ажиллагаа зөвөх тогтсон дугаараар хязгаарлагдсан."</string>
- <string name="serviceEnabled" msgid="8147278346414714315">"Үйлчилгээ идэвхжсэн."</string>
- <string name="serviceEnabledFor" msgid="6856228140453471041">"Дараах үйлчилгээ идэвхтэй болсон:"</string>
- <string name="serviceDisabled" msgid="1937553226592516411">"Үйлчилгээ идэвхгүй болсон."</string>
- <string name="serviceRegistered" msgid="6275019082598102493">"Амжилттай бүртгэв."</string>
- <string name="serviceErased" msgid="1288584695297200972">"Амжилттай арилгалаа."</string>
- <string name="passwordIncorrect" msgid="7612208839450128715">"Буруу нууц үг"</string>
- <string name="mmiComplete" msgid="8232527495411698359">"MMI дууссан."</string>
- <string name="badPin" msgid="9015277645546710014">"Таны бичсэн хуучин PIN буруу байна."</string>
- <string name="badPuk" msgid="5487257647081132201">"Таны бичсэн PUК буруу байна."</string>
- <string name="mismatchPin" msgid="609379054496863419">"Таны оруулсан PIN таарахгүй байна."</string>
- <string name="invalidPin" msgid="3850018445187475377">"4-8 тооноос бүтэх PIN-г бичнэ үү."</string>
- <string name="invalidPuk" msgid="8761456210898036513">"8-с цөөнгүй тооноос бүтэх PUK-г бичнэ үү."</string>
- <string name="needPuk" msgid="919668385956251611">"SIM картны PUK-түгжигдсэн. Тайлах бол PUK кодыг бичнэ үү."</string>
- <string name="needPuk2" msgid="4526033371987193070">"SIM картын хаалтыг болиулах бол PUK2-г бичнэ үү."</string>
- <string name="imei" msgid="2625429890869005782">"IMEI"</string>
- <string name="meid" msgid="4841221237681254195">"MEID"</string>
- <string name="ClipMmi" msgid="6952821216480289285">"Дуудлага хийгчийн ID"</string>
- <string name="ClirMmi" msgid="7784673673446833091">"Гарч байгаа дуудлага хийгчийн ID"</string>
- <string name="CfMmi" msgid="5123218989141573515">"Дуудлага дамжуулах"</string>
- <string name="CwMmi" msgid="9129678056795016867">"дуудлага хүлээлгэх"</string>
- <string name="BaMmi" msgid="455193067926770581">"Дуудлага хориглох"</string>
- <string name="PwdMmi" msgid="7043715687905254199">"Нууц үг солих"</string>
- <string name="PinMmi" msgid="3113117780361190304">"PIN солих"</string>
- <string name="CnipMmi" msgid="3110534680557857162">"Дуудсан дугаар харуулах"</string>
- <string name="CnirMmi" msgid="3062102121430548731">"Дуудлага хийгчийн дугаар хязгаарлагдсан"</string>
- <string name="ThreeWCMmi" msgid="9051047170321190368">"Гурван чиглэлт дуудлага"</string>
- <string name="RuacMmi" msgid="7827887459138308886">"Хүсээгүй тааламжгүй дуудлагаас татгалзах"</string>
- <string name="CndMmi" msgid="3116446237081575808">"Дуудлага хийгчийн дугаарыг дамжуулах"</string>
- <string name="DndMmi" msgid="1265478932418334331">"Бүү саад бол"</string>
- <string name="CLIRDefaultOnNextCallOn" msgid="429415409145781923">"Дуудлага хийгчийн ID хязгаарлагдсан. Дараагийн дуудлага: Хязгаарлагдсан"</string>
- <string name="CLIRDefaultOnNextCallOff" msgid="3092918006077864624">"Дуудлага хийгчийн ID хязгаарлагдсан. Дараагийн дуудлага: Хязгаарлагдаагүй"</string>
- <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"Дуудлага хийгчийн ID хязгаарлагдаагүй. Дараагийн дуудлага: Хязгаарлагдсан"</string>
- <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"Дуудлага хийгчийн ID хязгаарлагдсан. Дараагийн дуудлага: Хязгаарлагдсан"</string>
- <string name="serviceNotProvisioned" msgid="8614830180508686666">"Үйлчилгээ провишн хийгдээгүй ."</string>
- <string name="CLIRPermanent" msgid="3377371145926835671">"Та дуудлага хийгчийн ID тохиргоог солиж чадахгүй."</string>
- <string name="RestrictedChangedTitle" msgid="5592189398956187498">"Хязгаарлагдсан хандалт өөрчлөгдөв"</string>
- <string name="RestrictedOnData" msgid="8653794784690065540">"Дата үйлчилгээ хаагдсан."</string>
- <string name="RestrictedOnEmergency" msgid="6581163779072833665">"Яаралтай үйлчилгээ хаагдсан."</string>
- <string name="RestrictedOnNormal" msgid="4953867011389750673">"Дуут үйлчилгээ хориглогдсон."</string>
- <string name="RestrictedOnAllVoice" msgid="3396963652108151260">"Бүх дуут үйлчилгээнүүд хориглогдсон."</string>
- <string name="RestrictedOnSms" msgid="8314352327461638897">"SMS үйлчилгээ хаагдсан."</string>
- <string name="RestrictedOnVoiceData" msgid="996636487106171320">"Дуут/дата үйлчилгээ хаагдсан."</string>
- <string name="RestrictedOnVoiceSms" msgid="1888588152792023873">"Дуут/SMS үйлчилгээнүүд хориглогдсон."</string>
- <string name="RestrictedOnAll" msgid="5643028264466092821">"Бүх дуут/дата/SMS үйлчилгээнүүд хориглогдсон."</string>
- <string name="serviceClassVoice" msgid="1258393812335258019">"Дуу"</string>
- <string name="serviceClassData" msgid="872456782077937893">"Дата"</string>
- <string name="serviceClassFAX" msgid="5566624998840486475">"Факс"</string>
- <string name="serviceClassSMS" msgid="2015460373701527489">"SMS"</string>
- <string name="serviceClassDataAsync" msgid="4523454783498551468">"Синхрон бус"</string>
- <string name="serviceClassDataSync" msgid="7530000519646054776">"Синк"</string>
- <string name="serviceClassPacket" msgid="6991006557993423453">"Пакет"</string>
- <string name="serviceClassPAD" msgid="3235259085648271037">"PAD"</string>
- <string name="roamingText0" msgid="7170335472198694945">"Роуминг заагч ассан"</string>
- <string name="roamingText1" msgid="5314861519752538922">"Роуминг заагч унтарсан"</string>
- <string name="roamingText2" msgid="8969929049081268115">"Роуминг заагч анивчиж байна"</string>
- <string name="roamingText3" msgid="5148255027043943317">"Хөрш дотор"</string>
- <string name="roamingText4" msgid="8808456682550796530">"Барилгын гадна"</string>
- <string name="roamingText5" msgid="7604063252850354350">"Роуминг - Сонгогдсон Систем"</string>
- <string name="roamingText6" msgid="2059440825782871513">"Роуминг- Боломжтой Систем"</string>
- <string name="roamingText7" msgid="7112078724097233605">"Роуминг- Холбоотон Түнш"</string>
- <string name="roamingText8" msgid="5989569778604089291">"Роуминг- Урамшууллын Түнш"</string>
- <string name="roamingText9" msgid="7969296811355152491">"Рүүминг - Үйлчилгээний Ажиллагаа Бүрэн"</string>
- <string name="roamingText10" msgid="3992906999815316417">"Рүүминг - Хэсэгчилсэн үйлчилгээний функционал"</string>
- <string name="roamingText11" msgid="4154476854426920970">"Рүүминг Баннер Асаалттай"</string>
- <string name="roamingText12" msgid="1189071119992726320">"Баннергүй рүүминг"</string>
- <string name="roamingTextSearching" msgid="8360141885972279963">"Үйлчилгээг хайж байна…"</string>
- <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: дамжуулагдаагүй"</string>
- <string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string>
- <string name="cfTemplateForwardedTime" msgid="9206251736527085256">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g> <xliff:g id="TIME_DELAY">{2}</xliff:g> секундын дараа"</string>
- <string name="cfTemplateRegistered" msgid="5073237827620166285">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: дамжуулагдаагүй"</string>
- <string name="cfTemplateRegisteredTime" msgid="6781621964320635172">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: дамжуулагдаагүй"</string>
- <string name="fcComplete" msgid="3118848230966886575">"Онцлог код дуусав."</string>
- <string name="fcError" msgid="3327560126588500777">"Холболтын асуудал эсвэл буруу функцын код."</string>
- <string name="httpErrorOk" msgid="1191919378083472204">"Тийм"</string>
- <string name="httpError" msgid="7956392511146698522">"Сүлжээний алдаа гарав."</string>
- <string name="httpErrorLookup" msgid="4711687456111963163">"URL олдсонгүй."</string>
- <string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"Сайт гэрчлэлийн схем дэмжигдэхгүй."</string>
- <string name="httpErrorAuth" msgid="1435065629438044534">"Гэрчлэж чадсангүй."</string>
- <string name="httpErrorProxyAuth" msgid="1788207010559081331">"Прокси сервер гэрчлэл бүтэлгүйтэв."</string>
- <string name="httpErrorConnect" msgid="8714273236364640549">"Сервертэй холбогдож чадсангүй."</string>
- <string name="httpErrorIO" msgid="2340558197489302188">"Сервертэй холбогдож чадсангүй. Дараа дахин оролдоно уу."</string>
- <string name="httpErrorTimeout" msgid="4743403703762883954">"Сервер холболтын хугацаа хэтрэв."</string>
- <string name="httpErrorRedirectLoop" msgid="8679596090392779516">"Хуудас хэт олон сервер дахин чиглүүлэл агуулж байна."</string>
- <string name="httpErrorUnsupportedScheme" msgid="5015730812906192208">"Протокол дэмжигдэхгүй байна."</string>
- <string name="httpErrorFailedSslHandshake" msgid="96549606000658641">"Аюулгүй холбоог үүсгэж чадсангүй."</string>
- <string name="httpErrorBadUrl" msgid="3636929722728881972">"URL буруу тул хуудсыг нээж чадсангүй."</string>
- <string name="httpErrorFile" msgid="2170788515052558676">"Файлд хандаж чадсангүй."</string>
- <string name="httpErrorFileNotFound" msgid="6203856612042655084">"Дуудсан файл олдсонгүй."</string>
- <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Хэт олон хүсэлтийг боловсруулж байна. Дараа дахин оролдоно уу."</string>
- <string name="notification_title" msgid="8967710025036163822">"<xliff:g id="ACCOUNT">%1$s</xliff:g>-н нэвтрэлтийн алдаа"</string>
- <string name="contentServiceSync" msgid="8353523060269335667">"Синк"</string>
- <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Синк"</string>
- <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Хэт олон <xliff:g id="CONTENT_TYPE">%s</xliff:g> устгах."</string>
- <string name="low_memory" product="tablet" msgid="6494019234102154896">"Таблетийн сан дүүрсэн. Зай чөлөөлөх бол зарим файлыг устгана уу."</string>
- <string name="low_memory" product="default" msgid="3475999286680000541">"Утасны сан дүүрсэн. Зай чөлөөлөх бол зарим файлыг устгана уу."</string>
- <string name="me" msgid="6545696007631404292">"Би"</string>
- <string name="power_dialog" product="tablet" msgid="8545351420865202853">"Таблетын сонголтууд"</string>
- <string name="power_dialog" product="default" msgid="1319919075463988638">"Утасны сонголт"</string>
- <string name="silent_mode" msgid="7167703389802618663">"Чимээгүй горим"</string>
- <string name="turn_on_radio" msgid="3912793092339962371">"Утасгүй холбоог асаах"</string>
- <string name="turn_off_radio" msgid="8198784949987062346">"Утасгүй сүлжээг унтраах уу"</string>
- <string name="screen_lock" msgid="799094655496098153">"Дэлгэцний түгжээ"</string>
- <string name="power_off" msgid="4266614107412865048">"Унтраах"</string>
- <string name="silent_mode_silent" msgid="319298163018473078">"Хонх унтраах"</string>
- <string name="silent_mode_vibrate" msgid="7072043388581551395">"Хонхны чичиргээ."</string>
- <string name="silent_mode_ring" msgid="8592241816194074353">"Хонх ассан"</string>
- <string name="shutdown_progress" msgid="2281079257329981203">"Унтрааж байна…"</string>
- <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Таны таблет унтрах болно."</string>
- <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Таны утас унтрах болно."</string>
- <string name="shutdown_confirm_question" msgid="2906544768881136183">"Та унтраах уу?"</string>
- <string name="reboot_safemode_title" msgid="7054509914500140361">"Аюулгүй горимоор дахин асаах"</string>
- <string name="reboot_safemode_confirm" msgid="55293944502784668">"Та аюулгүй горимоор дахин асаах уу? Энэ нь таны суулгасан гуравдагч талын бүх аппликешныг идэвхгүй болгоно. Та дахин асаах үед тэдгээр нь сэргээгдэнэ."</string>
- <string name="recent_tasks_title" msgid="3691764623638127888">"Сүүлийн"</string>
- <string name="no_recent_tasks" msgid="8794906658732193473">"Сүүлийн апп хоосон."</string>
- <string name="global_actions" product="tablet" msgid="408477140088053665">"Таблет сонголт"</string>
- <string name="global_actions" product="default" msgid="2406416831541615258">"Утасны сонголтууд"</string>
- <string name="global_action_lock" msgid="2844945191792119712">"Дэлгэцний түгжээ"</string>
- <string name="global_action_power_off" msgid="4471879440839879722">"Унтраах"</string>
- <string name="global_action_bug_report" msgid="7934010578922304799">"Алдаа мэдээллэх"</string>
- <string name="bugreport_title" msgid="2667494803742548533">"Согог репорт авах"</string>
- <string name="bugreport_message" msgid="398447048750350456">"Энэ таны төхөөрөмжийн одоогийн статусын талаарх мэдээллийг цуглуулах ба имэйл мессеж болгон илгээнэ. Алдааны мэдэгдлээс эхэлж илгээхэд бэлэн болоход хэсэг хугацаа зарцуулагдана тэвчээртэй байна уу."</string>
- <string name="global_action_toggle_silent_mode" msgid="8219525344246810925">"Чимээгүй горим"</string>
- <string name="global_action_silent_mode_on_status" msgid="3289841937003758806">"Дуу хаагдсан"</string>
- <string name="global_action_silent_mode_off_status" msgid="1506046579177066419">"Дуу асав"</string>
- <string name="global_actions_toggle_airplane_mode" msgid="5884330306926307456">"Нислэгийн горим"</string>
- <string name="global_actions_airplane_mode_on_status" msgid="2719557982608919750">"Нислэгийн горим асав"</string>
- <string name="global_actions_airplane_mode_off_status" msgid="5075070442854490296">"Нислэгийн горим унтарсан"</string>
- <string name="status_bar_notification_info_overflow" msgid="5301981741705354993">"999+"</string>
- <string name="safeMode" msgid="2788228061547930246">"Аюулгүй горим"</string>
- <string name="android_system_label" msgid="6577375335728551336">"Андройд систем"</string>
- <string name="permgrouplab_costMoney" msgid="5429808217861460401">"Танаас төлбөр авдаг үйлчилгээнүүд"</string>
- <string name="permgroupdesc_costMoney" msgid="3293301903409869495">"Таны төлбөрт оруулах зүйлийг хийх."</string>
- <string name="permgrouplab_messages" msgid="7521249148445456662">"Таны мессеж"</string>
- <string name="permgroupdesc_messages" msgid="7821999071003699236">"Таны SMS, и-мэйл ба бусад мессежийг унших болон бичих."</string>
- <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Таны хувийн мэдээлэл"</string>
- <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Таны харилцагчдын картанд хадгалагдсан таны мэдээлэлд шууд хандах."</string>
- <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Таны нийтийн мэдээлэл"</string>
- <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Таны харилцагчид болон нийтийн холбооны тухай мэдээлэлд шууд хандах."</string>
- <string name="permgrouplab_location" msgid="635149742436692049">"Таны байршил"</string>
- <string name="permgroupdesc_location" msgid="5704679763124170100">"Таны бодит байршлыг хянах."</string>
- <string name="permgrouplab_network" msgid="5808983377727109831">"Сүлжээний холбоо"</string>
- <string name="permgroupdesc_network" msgid="4478299413241861987">"Төрөл бүрийн сүлжээний функцүүдэд хандах"</string>
- <string name="permgrouplab_bluetoothNetwork" msgid="1585403544162128109">"Блютүүт"</string>
- <string name="permgroupdesc_bluetoothNetwork" msgid="5625288577164282391">"Блютүүтээр төхөөрөмж болон сүлжээнд хандах."</string>
- <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Аудио тохиргоо"</string>
- <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Аудио тохиргоо солих."</string>
- <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Батерейд нөлөөлөх"</string>
- <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Батерей хурдан дуусгах функцийг ашиглах."</string>
- <string name="permgrouplab_calendar" msgid="5863508437783683902">"Календарь"</string>
- <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Календар болон үйл явдалд шууд хандах."</string>
- <string name="permgrouplab_dictionary" msgid="4148597128843641379">"Хэрэглэгчийн толиос унших"</string>
- <string name="permgroupdesc_dictionary" msgid="7921166355964764490">"Хэрэглэгчийн толь бичгээс үг унших."</string>
- <string name="permgrouplab_writeDictionary" msgid="8090237702432576788">"Хэрэглэгчийн тольд бичих"</string>
- <string name="permgroupdesc_writeDictionary" msgid="2711561994497361646">"Хэрэглэгчийн толь бичигт үг нэмэх."</string>
- <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Хавчуурга болон түүх"</string>
- <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Хавчуурга болон хөтчийн түүхрүү шууд хандах."</string>
- <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Сэрүүлэг"</string>
- <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Сэрүүлэг тохируулах."</string>
- <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Дуут шуудан"</string>
- <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Дуут шууданд шууд хандах."</string>
- <string name="permgrouplab_microphone" msgid="171539900250043464">"Микрофон"</string>
- <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Аудио бичихийн тулд микрофонд шууд хандах."</string>
- <string name="permgrouplab_camera" msgid="4820372495894586615">"Камер"</string>
- <string name="permgroupdesc_camera" msgid="2933667372289567714">"Зураг эвсэл бичлэг хийхээр камерт шууд хандах."</string>
- <string name="permgrouplab_screenlock" msgid="8275500173330718168">"Дэлгэц түгжих"</string>
- <string name="permgroupdesc_screenlock" msgid="7067497128925499401">"Таны төхөөрөмжийн дэлгэцийн түгжээнд нөлөөлөх чадвар."</string>
- <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Таны аппликешны мэдээлэл"</string>
- <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Таны төхөөрөмжийн бусад аппликешнд нөлөөлөх чадвар."</string>
- <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Ханын зураг"</string>
- <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Төхөөрөмжийн ханын зургийн тохиргоог солих."</string>
- <string name="permgrouplab_systemClock" msgid="406535759236612992">"Цаг"</string>
- <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Төхөөрөмжийн цаг эсвэл цагийн бүсийг солих."</string>
- <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Статус самбар"</string>
- <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Төхөөрөмжийн статус самбарын тохиргоог солих."</string>
- <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Синк тохиргоо"</string>
- <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Синк тохиргоонд хандах."</string>
- <string name="permgrouplab_accounts" msgid="3359646291125325519">"Таны акаунт"</string>
- <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Боломжит акаунтад хандах."</string>
- <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Хардвер контрол"</string>
- <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Гар төхөөрөмжийн хардверт шууд хандах."</string>
- <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Утсаар ярих"</string>
- <string name="permgroupdesc_phoneCalls" msgid="7489701620446183770">"Утасны дуудлагыг хянах, бичих болон боловсруулах."</string>
- <string name="permgrouplab_systemTools" msgid="4652191644082714048">"Системийн багаж"</string>
- <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Системрүү доод төвшиний хандах болон удирдах."</string>
- <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Хөгжүүлэх багаж"</string>
- <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Зөвхөн аппликешн хөгжүүлэгчдэд хэрэгтэй функц."</string>
- <string name="permgrouplab_display" msgid="4279909676036402636">"Бусад аппликешн UI"</string>
- <string name="permgroupdesc_display" msgid="6051002031933013714">"Бусад аппликешны UI-д нөлөөлөх."</string>
- <string name="permgrouplab_storage" msgid="1971118770546336966">"Сан"</string>
- <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USB санд хандах."</string>
- <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD картад хандах."</string>
- <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Хялбар хандах функц"</string>
- <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Туслах технологиос хүсэлт илгээх боломжтой функц"</string>
- <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Цонхны контентыг авах"</string>
- <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Таны харилцан үйлчлэх цонхны контентоос шалгах."</string>
- <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Хүрч танихыг асаах"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Хүрсэн зүйлсийг чангаар дуудах ба дохио ашиглан дэлгэцийг таньж болно."</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>
- <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Кредит картын дугаар болон нууц үг зэрэг хувийн датаг агуулж байна."</string>
- <string name="permlab_statusBar" msgid="7417192629601890791">"статус самбарыг идэвхгүй болгох болон өөрчлөх"</string>
- <string name="permdesc_statusBar" msgid="8434669549504290975">"Апп нь статус самбарыг идэвхгүй болгох эсвэл систем дүрсийг нэмэх, хасах боломжтой."</string>
- <string name="permlab_statusBarService" msgid="7247281911387931485">"статус самбар"</string>
- <string name="permdesc_statusBarService" msgid="716113660795976060">"Апп нь статус самбар болох боломжтой."</string>
- <string name="permlab_expandStatusBar" msgid="1148198785937489264">"статус самбарыг нээх/хаах"</string>
- <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Апп нь статус самбарыг дэлгэх болон хаах боломжтой."</string>
- <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"гарсан дуудлагыг чиглэлийг өөрчлөх"</string>
- <string name="permdesc_processOutgoingCalls" msgid="5331318931937402040">"Апп нь дуудлага хийх болон залгаж байгаа дугаарыг өөрчлөх боломжтой. Энэ зөвшөөрөл нь апп-г залгасан дуудлагыг хаах, хянах болон дахин чиглүүлэх боломжтой болгодог."</string>
- <string name="permlab_receiveSms" msgid="8673471768947895082">"текст мессеж(SMS) хүлээж авах"</string>
- <string name="permdesc_receiveSms" msgid="6424387754228766939">"Апп нь SMS мессежийг хүлээн авах болон гүйцэтгэх боломжтой. Ингэснээр апп нь таны төхөөрөмжрүү илгээсэн мессежийг танд үзүүлэхгүйгээр хянах болон устгаж чадна."</string>
- <string name="permlab_receiveMms" msgid="1821317344668257098">"текст мессеж(МMS) хүлээж авах"</string>
- <string name="permdesc_receiveMms" msgid="533019437263212260">"Апп нь MMS мессежийг хүлээн авах болон гүйцэтгэх боломжтой. Ингэснээр апп нь таны төхөөрөмжрүү илгээсэн мессежийг танд үзүүлэхгүйгээр хянах болон устгаж чадна."</string>
- <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"Яаралтай өргөн дамжууллыг хүлээн авах"</string>
- <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Апп нь яаралтай өргөн дамжууллын мессежийг хүлээн авах болон гүйцэтгэх боломжтой. Энэ зөвшөөрөл нь зөвхөн систем аппликешнд л боломжтой."</string>
- <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"үүрэн өргөн дамжууллын мессеж унших"</string>
- <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"Апп нь таны төхөөрөмжийн хүлээн авсан үүрэн өргөн дамжуулах мессежийг унших боломжтой. Үүрэн өргөн дамжууллын мэдэгдэл нь яаралтай нөхцөл байдлыг анхааруулах зорилгоор зарим байршлуудад хүрдэг. Хортой апп нь яаралтай үүрэн өргөн дамжууллыг хүлээн авсан үед таны төхөөрөмжийн ажиллагаа болон чадамжид нөлөөлөх боломжтой."</string>
- <string name="permlab_sendSms" msgid="5600830612147671529">"SMS мессеж илгээх"</string>
- <string name="permdesc_sendSms" msgid="7094729298204937667">"Апп нь SMS мессеж илгээх боломжтой. Энэ нь санаандгүй төлбөрт оруулж болзошгүй. Хортой апп нь таны зөвшөөрөлгүйгээр мессеж илгээн таныг төлбөрт оруулж болзошгүй."</string>
- <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"мессежээр хариулах үйл явдалыг илгээх"</string>
- <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"Апп нь дуудлага ирэх үед мессежээр хариу өгөх үйл явдлыг зохицуулахын тулд бусад мессежийн апп-д хүсэлт илгээх боломжтой."</string>
- <string name="permlab_readSms" msgid="8745086572213270480">"таны текст мессежийг унших(SMS эсвэл MMS)"</string>
- <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Апп нь таны утас эсвэл SIM картанд хадгалагдсан SMS мессежийг унших боломжтой. Энэ нь апп-д бүх мессежийг контент эсвэл нууц эсэхээс нь үл хамааран унших боломжийг олгоно."</string>
- <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Апп нь таны утас эсвэл SIM картанд хадгалагдсан SMS мессежийг унших боломжтой. Энэ нь апп-д бүх мессежийг контент эсвэл нууц эсэхээс нь үл хамааран унших боломжийг олгоно."</string>
- <string name="permlab_writeSms" msgid="3216950472636214774">"Текст мессежийг засах (SMS эсвэл MMS)"</string>
- <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Апп нь таны таблет эсвэл SIM картанд хадгалагдсан SMS мессежрүү бичих боломжтой. Хортой апп нь таны мессежүүдийг устгах боломжтой."</string>
- <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Апп нь таны утас эсвэл SIM картанд хадгалагдсан SMS мессежрүү бичих боломжтой. Хортой апп нь таны мессежүүдийг устгах боломжтой."</string>
- <string name="permlab_receiveWapPush" msgid="5991398711936590410">"текст мессеж(WAP) хүлээн авах"</string>
- <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Апп нь WAP мессежийг хүлээн авах болон биелүүлэх боломжтой. Энэ зөвшөөрөл нь танд илгээсэн мессежийг танд харуулалгүйгээр хянах эсвэл устгах боломжийг агуулна."</string>
- <string name="permlab_getTasks" msgid="6466095396623933906">"ажиллаж байгаа апп-г дуудах"</string>
- <string name="permdesc_getTasks" msgid="7454215995847658102">"Апп нь одоо ажиллаж байгаа болон сүүлд ажилласан даалгаврын талаарх мэдээллийг авах боломжтой. Ингэснээр апп нь төхөөмж дээрх ямар аппликешнүүд ашиглагдсан талаарх мэдээлийг олох боломжтой."</string>
- <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"хэрэглэгчидтэй харилцан үйлчлэлцэх"</string>
- <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Апп нь төхөөрөмж дээрх ялгаатай хэрэглэгчдэд үйлдэл гүйцэтгэх боломжтой. Хортой апп нь энийг ашиглан хэрэглэгч хоорондын хамгаалалтыг зөрчих боломжтой."</string>
- <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"хэрэглэгчидтэй харилцан үйлчлэлцэх бүрэн зөвшөөрөл"</string>
- <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Бүх хэрэглэгчдэд боломжит бүх харилцан үйлдлийг зөвшөөрнө."</string>
- <string name="permlab_manageUsers" msgid="1676150911672282428">"хэрэгчлэгч удирдах"</string>
- <string name="permdesc_manageUsers" msgid="8409306667645355638">"Апп нь төхөөрөмж дээр асуулга, үүсгэлт болон устгалт зэргийг багтаасан хэрэглэгч удирдах боломжтой."</string>
- <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"ажиллаж байгаа апп-н дэлгэрэнгүйг авах"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Апп нь одоо ажиллаж байгаа болон сүүлд ажилласан даалгаврын талаарх дэлгэрэнгүй мэдээллийг авах боломжтой. Хортой апп нь бусад апп-н хувийн мэдээлийг олох боломжтой."</string>
- <string name="permlab_reorderTasks" msgid="2018575526934422779">"ажиллаж байгаа апп-уудыг дахин эрэмбэлэх"</string>
- <string name="permdesc_reorderTasks" msgid="7734217754877439351">"Апп нь даалгавруудыг нүүрлүү болон арлуу зөөх боломжтой. Апп нь энийг таны оролцоогүйгээр хийж болзошгүй"</string>
- <string name="permlab_removeTasks" msgid="6821513401870377403">"ажиллаж байгаа апп-г зогсоох"</string>
- <string name="permdesc_removeTasks" msgid="1394714352062635493">"Апп нь даалгаврууд устгах болон тэдгээрийн апп-г зогсоох боломжтой. Хортой апп нь бусад апп-н ажиллагааг тасалдуулж болзошгүй."</string>
- <string name="permlab_manageActivityStacks" msgid="7391191384027303065">"идэвхжилтийн стекүүдийг удирдах"</string>
- <string name="permdesc_manageActivityStacks" msgid="1615881933034084440">"Апп-д бусад апп-уудын ажилладаг идэвхжилтийн стекүүдийг нэмэх, хасах буюу өөрчлөх боломж олгоно. Хорлонтой апп-ууд бусад апп-уудын авирт нөлөөлөх боломжтой."</string>
- <string name="permlab_startAnyActivity" msgid="2918768238045206456">"ямарч активитиг эхлүүлэх"</string>
- <string name="permdesc_startAnyActivity" msgid="997823695343584001">"Апп нь зөвшөөрөл хамгаалалтай эсвэл экспорт хийсэн статусаас үл хамааран ямарч активитиг эхлүүлэх боломжтой."</string>
- <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"дэлгэцний зохицолыг тохируулах"</string>
- <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Апп нь бусад аппликешны дэлгэцний тохиромжит горимыг удирдах боломжтой. Хортой аппликешн нь бусад аппликешны чадамжийг эвдэх боломжтой."</string>
- <string name="permlab_setDebugApp" msgid="3022107198686584052">"апп дебагыг идэвхжүүлэх"</string>
- <string name="permdesc_setDebugApp" msgid="4474512416299013256">"Апп нь бусад апп-г дебаг хийхийг асаах боломжтой. Хортой апп нь энийг ашиглан бусад апп-г зогсоох боломжтой."</string>
- <string name="permlab_changeConfiguration" msgid="4162092185124234480">"системийн дэлгэцний тохиргоог солих"</string>
- <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Апп нь нутагшил эсвэл фонтын хэмжээ зэрэг одоогийн тохиргоог солих боломжтой."</string>
- <string name="permlab_enableCarMode" msgid="5684504058192921098">"машины горимыг идэвхжүүлэх"</string>
- <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Апп нь машины горимыг идэвхжүүлэх боломжтой."</string>
- <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"бусад апп-г хаах"</string>
- <string name="permdesc_killBackgroundProcesses" msgid="4593353235959733119">"Апп нь бусад апп-н арын процессыг дуусгах боломжтой. Энэ бусад апп-г зогсоох боломжийг олгоно."</string>
- <string name="permlab_forceStopPackages" msgid="2329627428832067700">"бусад апп-г хүчээр зогсоох"</string>
- <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Апп нь бусад апп-г хүчээр зогсоох боломжтой."</string>
- <string name="permlab_forceBack" msgid="652935204072584616">"апп-г хүчээр унтраах"</string>
- <string name="permdesc_forceBack" msgid="3892295830419513623">"Апп нь нүүрэнд ажиллаж байгаа активитиг хүчээр зогсоох болгон арлуу явуулах боломжтой. Энгийн апп-д хэрэглэхгүй."</string>
- <string name="permlab_dump" msgid="1681799862438954752">"системийн дотоод статусыг дуудах"</string>
- <string name="permdesc_dump" msgid="1778299088692290329">"Апп нь системийн дотоод статусыг дуудах боломжтой. Хортой апп нь энийг ашиглах шаардлагагүй аюулгүй байдлын болон хувийн мэдээллийг дуудах боломжтой."</string>
- <string name="permlab_retrieve_window_content" msgid="8022588608994589938">"Дэлгэцийн контентыг унших"</string>
- <string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Апп нь идэвхтэй цонхны контентыг авах боломжтой. Хортой апп нь цонхны контентыг бүхэлд авах болон нууц үгнээс бусад бүх текстийг шалгаж болзошгүй"</string>
- <string name="permlab_temporary_enable_accessibility" msgid="2312612135127310254">"Хялбар байдлыг түр идэвхтэй болгох"</string>
- <string name="permdesc_temporary_enable_accessibility" msgid="8079456293182975464">"Аппликешн нь төхөөрөмжийн хялбар байдлыг түр зуур идэвхжүүлэх боломжтой. Хортой апп нь хэрэглэгчийн зөвшөөрөлгүйгээр хялбар байдлыг идэвхжүүлж болзошгүй."</string>
- <string name="permlab_retrieve_window_info" msgid="8532295199112519378">"цонхны мэдээллийг унших"</string>
- <string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"Аппликешн нь цонхны менежерээс цонхны талаар мэдээллийг дуудах боломжтой. Хортой апп нь дотоод системийн хэрэглээнд зориулагдсан мэдээллийг дуудаж болзошгүй."</string>
- <string name="permlab_filter_events" msgid="8675535648807427389">"үйл явдлыг шүүх"</string>
- <string name="permdesc_filter_events" msgid="8006236315888347680">"Аппликешн нь хэрэглэгчийн бүх үйл явдалын илгээгдэхээс өмнөх урсгалыг шүүж байгаа оролтын шүүлтйиг бүртгэх боломжтой. Хортой апп нь хэрэглэгчийн интервэшнгүйгээр системийн UI-г удирдах боломжтой."</string>
- <string name="permlab_magnify_display" msgid="5973626738170618775">"дэлгэц томруулах"</string>
- <string name="permdesc_magnify_display" msgid="7121235684515003792">"Аппликешн нь дэлгэцний контентийг өсгөх боломжтой. Хортой апп нь дэлгэцийн контентыг төхөөрөмжнөөс ашиглаж болохгүй болгон хувиргах боломжтой."</string>
- <string name="permlab_shutdown" msgid="7185747824038909016">"хэсэгчилсэн унтраалт"</string>
- <string name="permdesc_shutdown" msgid="7046500838746291775">"Активити менежерийг унтраана. Бүрэн унтраалтыг хийхгүй."</string>
- <string name="permlab_stopAppSwitches" msgid="4138608610717425573">"апп шилжүүлэхийг хориглох"</string>
- <string name="permdesc_stopAppSwitches" msgid="8262195802582255021">"Хэрэглэгч бусад апп-руу сэлгэхийг хориглох."</string>
- <string name="permlab_getTopActivityInfo" msgid="2537922311411546016">"одоогийн апп-н мэдээллийг авах"</string>
- <string name="permdesc_getTopActivityInfo" msgid="8153651434145132505">"Эзэмшигч нь дэлгэцний нүүрэнд байгаа одоогийн аппликешн болон үйлчилгээний талаарх хувийн мэдээллийг унших боломжтой."</string>
- <string name="permlab_runSetActivityWatcher" msgid="892239094867182656">"бүх апп-ын эхлэлийг хянах болон удирдах"</string>
- <string name="permdesc_runSetActivityWatcher" msgid="6003603162578577406">"Апп нь систем активитиг яаж эхлүүлж байгааг хянах болон удирдан боломжтой. Хортой апп нь системд бүрэн нөлөөлж болзошгүй. Энэ эрх нь зөвхөн хөгжүүлэлтийн үед л хэрэгтэй ба энгийн хэрэглээнд огт хэрэггүй."</string>
- <string name="permlab_broadcastPackageRemoved" msgid="2576333434893532475">"багц хасагдсан өргөн дамжууллыг илгээх"</string>
- <string name="permdesc_broadcastPackageRemoved" msgid="6621901216207931089">"Апп нь апп багц устгагдсан талаарх мэдэгдлийг өргөн дамжуулах боломжтой. Хортой апп энийг ашиглан бусад ажиллаж байгаа апп-г зогсоох боломжтой."</string>
- <string name="permlab_broadcastSmsReceived" msgid="5689095009030336593">"SMS-хүлээн авав өргөн дамжууллыг илгээх"</string>
- <string name="permdesc_broadcastSmsReceived" msgid="4152037720034365492">"Апп нь SMS мессеж хүлээн авсан талаарх мэдэгдлийг өргөн дамжуулах боломжтой. Хортой апп энийг ашиглан ирсэн SMS мессежийг хуурамчаар хийх боломжтой."</string>
- <string name="permlab_broadcastWapPush" msgid="3145347413028582371">"WAP-PUSH-хүлээн авав өргөн дамжууллыг илгээх"</string>
- <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Аппликешн нь WAP PUSH мессеж хүлээж авсан мэдэгдлийг өргөн дамжуулах боломжтой. Хортой апп нь энийг ашиглан MMS мессеж хүлээн авсан гэж хуурамчаар мэдэгдэх эсвэл хортой хувьсагч агуулсан веб хуудасны контентыг чимээгүй орлуулах боломжтой."</string>
- <string name="permlab_setProcessLimit" msgid="2451873664363662666">"ажиллаж байгаа процессийн тоог хязгаарлах"</string>
- <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Апп нь нэг зэрэг ажиллах процессийн тооны дээд утгыг удирдах боломжтой. Энгийн апп-д хэзээ ч ашиглагдахгүй."</string>
- <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"арын апп-г хүчээр хаах"</string>
- <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Апп нь активитинүүд арын болонгуутаа дуусах эсэхийг удирдах боломжтой. Энгийн апп-д хэрэглэгдэхгүй."</string>
- <string name="permlab_batteryStats" msgid="2789610673514103364">"батерейны статистикийг унших"</string>
- <string name="permdesc_batteryStats" msgid="5897346582882915114">"Аппликешн нь батерей хэрэглээний доод-төвшиний одоогийн датаг унших боломжтой. Аппликешнд таны ашиглаж байгаа апп-н талаарх дэлгэрэнгүй мэдээллийг олох боломжийг олгоно."</string>
- <string name="permlab_updateBatteryStats" msgid="3719689764536379557">"батерейн статистикийг өөрчлөх"</string>
- <string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"Апп нь батерейн цуглуулагдсан статистикийг өөрчлөх боломжтой. Энгийн апп-д шаардлагагүй."</string>
- <string name="permlab_getAppOpsStats" msgid="1508779687436585744">"апп-н ажиллагааны статистикийг авах"</string>
- <string name="permdesc_getAppOpsStats" msgid="6243887041577912877">"Апп нь аппликешны ажиллагааны цуглуулсан статистикийг дуудах боломжтой. Энгийн апп-д ашиглагдахгүй."</string>
- <string name="permlab_updateAppOpsStats" msgid="8829097373851521505">"апп ажиллагааны статистикийг өөрчлөх"</string>
- <string name="permdesc_updateAppOpsStats" msgid="50784596594403483">"Апп нь аппликешны ажиллагааны цуглуулсан статистикийг өөрчлөх боломжтой. Энгийн апп-д ашиглагдахгүй."</string>
- <string name="permlab_backup" msgid="470013022865453920">"систем нөөшлөлт болон сэргээлтийг удирдах"</string>
- <string name="permdesc_backup" msgid="6912230525140589891">"Апп нь системийн нөөшлөх болон сэргээх тогтолцоог удирдах боломжтой. Энгийн апп-уудад хэрэглэгдэхгүй."</string>
- <string name="permlab_confirm_full_backup" msgid="5557071325804469102">"бүтэн нөөшлөлтийг бататгах эсвэл ажиллагааг сэргээх"</string>
- <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Апп нь бүрэн нөөшлөлтийг баталгаажуулах UI-г эхлүүлэх боломжтой. Энгийн апп-д ашиглагдахгүй."</string>
- <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"эрхжүүлэгдээгүй цонхыг үзүүлэх"</string>
- <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Апп нь дотоод системийн хэрэглэгчийн интерфейст ашиглагдах цонхыг үүсгэх боломжтой. Энгийн апп-д ашиглагдахгүй."</string>
- <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"бусад апп-р зурах"</string>
- <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"Апп нь бусад аппликешн эсвэл хэрэглэгчийн интерфейсын дээд талд зурах боломжтой. Эдгээр нь бүх аппликешны интерфейсыг ашиглахад саад болох эсвэл бусад аппликешн дээр таны харж байгааг солих боломжтой."</string>
- <string name="permlab_setAnimationScale" msgid="2805103241153907174">"глобал энимешн хурдыг өөрчлөх"</string>
- <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Апп нь ямар ч үед глобал энимешн хурдыг(хурдан удаан энимешн) солих боломжтой."</string>
- <string name="permlab_manageAppTokens" msgid="1286505717050121370">"апп бүтвэрийг удирдах"</string>
- <string name="permdesc_manageAppTokens" msgid="8043431713014395671">"Апп нь өөрийн нормал Z эрэмбийг дамжуулах замаар өөрсдийн бүтвэрийг үүсгэх болон удирдах боломжтой. Энгийн апп-д хэрэглэгдэхгүй"</string>
- <string name="permlab_freezeScreen" msgid="4708181184441880175">"дэлгэцийг хөдөлгөөнгүй болгох"</string>
- <string name="permdesc_freezeScreen" msgid="8558923789222670064">"Аппликешн нь бүтэн дэлгэцрүү шилжихэд дэлгэцийг хөдөлгөөнгүй болгох боломжтой."</string>
- <string name="permlab_injectEvents" msgid="1378746584023586600">"товч болон контрол товч дарах"</string>
- <string name="permdesc_injectEvents" product="tablet" msgid="206352565599968632">"Алл нь өөрийн оролтын үйл явдлыг(товч дарагдах г.м) бусад апп-д дамжуулах боломжтой. Хортой апп нь энийг ашиглан таблетыг удирдах боломжтой."</string>
- <string name="permdesc_injectEvents" product="default" msgid="653128057572326253">"Алл нь өөрийн оролтын үйл явдлыг(товч дарагдах г.м) бусад апп-д дамжуулах боломжтой. Хортой апп нь энийг ашиглан утсыг удирдах боломжтой."</string>
- <string name="permlab_readInputState" msgid="469428900041249234">"таны хийж байгаа үйлдэл болон бичиж байгааг бичлэг хийх"</string>
- <string name="permdesc_readInputState" msgid="8387754901688728043">"Апп нь бусад апп-тай харилцан үйлчилж(нууц үг оруулах) таны дарсан товчийг ажиглах боломжтой. Энгийн апп-д хэрэглэгдэхгүй."</string>
- <string name="permlab_bindInputMethod" msgid="3360064620230515776">"оролтын аргатай холбох"</string>
- <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Эзэмшигч нь оруулах аргын дээд-төвшиний интерфейстэй холбох боломжтой. Энгийн апп-д хэрэглэгдэхгүй."</string>
- <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"хандалтын үйлчилгээнд холбогдох"</string>
- <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Эзэмшигч нь хандах үйлчилгээний дээд-төвшиний интерфейстэй холбох боломжтой. Энгийн апп-д шаардлагагүй."</string>
- <string name="permlab_bindPrintService" msgid="8462815179572748761">"хэвлэх үйлчилгээтэй холбох"</string>
- <string name="permdesc_bindPrintService" msgid="7960067623209111135">"Эзэмшигчид хэвлэх үйлчилгээний дээд-түвшний интерфейстэй холбох боломж олгоно. Энгийн апп-уудад хэзээ ч ашиглагдахгүй."</string>
- <string name="permlab_accessAllPrintJobs" msgid="1120792468465711159">"бүх хэвлэх ажилд хандалт хийх"</string>
- <string name="permdesc_accessAllPrintJobs" msgid="2978185311041864762">"Эзэмшигчид өөр апп-аас үүсгэсэн хэвлэх ажилд хандалт хийх боломж олгоно. Энгийн апп-уудад хэзээ ч ашиглагдахгүй."</string>
- <string name="permlab_bindNfcService" msgid="2752731300419410724">"NFC үйлчилгээтэй холбох"</string>
- <string name="permdesc_bindNfcService" msgid="6120647629174066862">"Эзэмшигчид NFC картуудыг дуурайлгадаг аппликешнүүдийг холбох боломж олгоно. Энгийн апп-уудад хэзээ ч шаардагдахгүй."</string>
- <string name="permlab_bindTextService" msgid="7358378401915287938">"текст үйлчилгээтэй холбох"</string>
- <string name="permdesc_bindTextService" msgid="8151968910973998670">"Эзэмшигч нь текст үйлчилгээний(ж.нь. SpellCheckerService) дээд-төвшиний интерфейстэй холбох боломжтой. Энгийн апп-д хэрэглэгдэхгүй."</string>
- <string name="permlab_bindVpnService" msgid="4708596021161473255">"VPN үйлчилгээтэй холбох"</string>
- <string name="permdesc_bindVpnService" msgid="2067845564581693905">"Эзэмшигч нь VPN үйлчилгээний дээд-төвшиний интерфейстэй холбох боломжтой. Энгийн апп-д шаардлагагүй."</string>
- <string name="permlab_bindWallpaper" msgid="8716400279937856462">"ханын зурагтай холбох"</string>
- <string name="permdesc_bindWallpaper" msgid="7108428692595491668">"Эзэмшигч нь ханын зурагны дээд-төвшиний интерфейстэй холбох боломжтой. Энгийн апп-уудад шаардлагагүй."</string>
- <string name="permlab_bindRemoteViews" msgid="5697987759897367099">"виджет үйлчилгээтэй холбох"</string>
- <string name="permdesc_bindRemoteViews" msgid="4717987810137692572">"Эзэмшигч нь виджет үйлчилгээний дээд-төвшиний интерфейстэй холбох боломжтой. Энгийн апп-д шаардлагагүй."</string>
- <string name="permlab_bindDeviceAdmin" msgid="8704986163711455010">"төхөөрөмжийн админтай харилцан үйлчлэх"</string>
- <string name="permdesc_bindDeviceAdmin" msgid="569715419543907930">"Эзэмшигч нь төхөөрөмжийн админруу интент илгээх боломжтой. Энгийн апп-д шаардлагагүй."</string>
- <string name="permlab_manageDeviceAdmins" msgid="4248828900045808722">"төхөөрөмжийн админ нэмэх, хасах"</string>
- <string name="permdesc_manageDeviceAdmins" msgid="5025608167709942485">"Эзэмшигч нь идэвхтэй төхөөрөмжийн администраторыг нэмэх, хасах боломжтой. Энгийн апп-д шаардлагагүй."</string>
- <string name="permlab_setOrientation" msgid="3365947717163866844">"дэлгэцний чиглэлийг солих"</string>
- <string name="permdesc_setOrientation" msgid="3046126619316671476">"Апп нь ямар ч үед дэлгэцний эргэлтийг солих боломжтой. Энгийн аппликешнд хэзээ ч ашиглахгүй."</string>
- <string name="permlab_setPointerSpeed" msgid="9175371613322562934">"заагчийн хурдыг солих"</string>
- <string name="permdesc_setPointerSpeed" msgid="6866563234274104233">"Апп нь хулгана эсвэл хөдлөх самбарын заагчийн хурдыг ямарч үед солих боломжтой. Энгийн апп-д хэрэглэгдэхгүй."</string>
- <string name="permlab_setKeyboardLayout" msgid="4778731703600909340">"гарын схемийг солих"</string>
- <string name="permdesc_setKeyboardLayout" msgid="8480016771134175879">"Апп нь гарын схемыг солих боломжтой. Энгийн апп-д хэрэглэгдэхгүй."</string>
- <string name="permlab_signalPersistentProcesses" msgid="4539002991947376659">"аппруу Linux дохио илгээх"</string>
- <string name="permdesc_signalPersistentProcesses" msgid="4896992079182649141">"Апп нь бүх байнгын процессруу хангамжийн дохиог илгээх хүсэлтийг хийх боломжтой."</string>
- <string name="permlab_persistentActivity" msgid="8841113627955563938">"апп-г байнга ажиллуулах"</string>
- <string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"Апп нь өөрийн хэсгийн санах ойд байнга байлгах боломжтой. Энэ нь бусад апп-уудын ашиглах санах ойг хязгаарлан таблетыг удаашруулах болно."</string>
- <string name="permdesc_persistentActivity" product="default" msgid="4384760047508278272">"Апп нь өөрийн хэсгийг санах ойд байнга байлгах боломжтой. Энэ нь бусад апп-уудын ашиглах санах ойг хязгаарлан утсыг удаашруулах болно."</string>
- <string name="permlab_deletePackages" msgid="184385129537705938">"апп устгах"</string>
- <string name="permdesc_deletePackages" msgid="7411480275167205081">"Апп нь Андройд багцийг устгах боломжтой. Хортой апп нь энийг ашиглан чухал апп-г устгах боломжтой."</string>
- <string name="permlab_clearAppUserData" msgid="274109191845842756">"бусад апп-н датаг устгах"</string>
- <string name="permdesc_clearAppUserData" msgid="4625323684125459488">"Апп нь хэрэглэгчийн датаг арилгах боломжтой."</string>
- <string name="permlab_deleteCacheFiles" msgid="3128665571837408675">"бусад апп-н кешээс устгах"</string>
- <string name="permdesc_deleteCacheFiles" msgid="3812998599006730196">"Апп нь кеш файлаас устгах боломжтой."</string>
- <string name="permlab_getPackageSize" msgid="7472921768357981986">"апп сангийн хэмжээг хэмжих"</string>
- <string name="permdesc_getPackageSize" msgid="3921068154420738296">"Апп нь өөрийн код, дата болон кеш хэмжээг унших боломжтой"</string>
- <string name="permlab_installPackages" msgid="2199128482820306924">"апп-г шууд суулгах"</string>
- <string name="permdesc_installPackages" msgid="5628530972548071284">"Апп нь шинэ эсвэл шинэчлэгдсэн Андройд багцийг суулгах боломжтой. Хортой апп нь энийг ашиглан дурын эрхтэй шинэ апп-г суулгах боломжтой."</string>
- <string name="permlab_clearAppCache" msgid="7487279391723526815">"бүх апп-н кеш датаг устгах"</string>
- <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"Апп нь бусад аппликешны кеш директороос файл устган таблетын санг чөлөөлөх боломжтой. Энэ нь бусад аппликешнд нөлөөлж, тэдгээр нь эхлэхдээ шаардлагатай датагаа дахин дуудах тул удааширч болзошгүй."</string>
- <string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"Апп нь бусад аппликешны кеш директороос файл устган утасны санг чөлөөлөх боломжтой. Энэ нь бусад аппликешнд нөлөөлж, тэдгээр нь эхлэхдээ шаардлагатай датагаа дахин дуудах тул удааширч болзошгүй."</string>
- <string name="permlab_movePackage" msgid="3289890271645921411">"апп нөөцийг шилжүүлэх"</string>
- <string name="permdesc_movePackage" msgid="319562217778244524">"Апп нь апп нөөцийг дотроос гадна медиаруу болон эсрэгээр нь зөөх боломжтой."</string>
- <string name="permlab_readLogs" msgid="6615778543198967614">"нууц лог дата унших"</string>
- <string name="permdesc_readLogs" product="tablet" msgid="82061313293455151">"Апп нь системийн төрөл бүрийн лог файлыг унших боломжтой. Энэ нь та таблет дээрээ юу хийсэн талаарх хувийн болон нууц мэдээллийг олох боломжтой болгоно."</string>
- <string name="permdesc_readLogs" product="default" msgid="2063438140241560443">"Апп нь системийн төрөл бүрийн лог файлыг унших боломжтой. Энэ нь та утсан дээрээ юу хийсэн талаарх хувийн болон нууц мэдээллийг олох боломжтой болгоно."</string>
- <string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"тоглуулахын тулд дурын медиа шифрлэгчийг ашиглах"</string>
- <string name="permdesc_anyCodecForPlayback" msgid="8283912488433189010">"Апп нь тоглуулах үедээ код тайлахдаа суулгагдсан ямарч медиа код тайлагчийг ашиглах боломжтой."</string>
- <string name="permlab_manageCaCertificates" msgid="1678391896786882014">"итгэмжлэгдсэн жуухуудыг удирдах"</string>
- <string name="permdesc_manageCaCertificates" msgid="4015644047196937014">"Апп-д CA сертификатуудыг итгэмжлэгдсэн жуух байдлаар суулгах болон устгахыг зөвшөөрнө."</string>
- <string name="permlab_diagnostic" msgid="8076743953908000342">"оношлох грүпийн эзэмшдэг нөөцрүү унших/бичих"</string>
- <string name="permdesc_diagnostic" msgid="6608295692002452283">"Апп нь оношлох грүпийн эзэмшдэг, жишээ нь /dev доторх файлууд, дурын нөөцийг унших бичих боломжтой.Энэ нь системийн тогвортой байдал болон аюулгүй байдалд бодитоор нөлөөлнө. Энэ нь үйлдвэрлэгч болон операторын хардверт-зориулсан оношлогоонд ашиглагдана."</string>
- <string name="permlab_changeComponentState" msgid="6335576775711095931">"апп компонентыг идэвхжүүлэх эсвэл идэвхгүй болгох"</string>
- <string name="permdesc_changeComponentState" product="tablet" msgid="8887435740982237294">"Апп нь өөр апп-н компонент идэвхтэй эсэхийг солих боломжтой. Хортой апп нь энийг ашиглан таблетын чухал чадамжийг идэвхгүй болгож болзошгүй. Зөвшөөрөл нь аппликешн компонентыг тогтворгүй, ашиглаж болохгүй, тохиромжгүй төлөвт оруулах боломжтой тул ашиглахдаа болгоомжтой байх шаардлагатай."</string>
- <string name="permdesc_changeComponentState" product="default" msgid="1827232484416505615">"Апп нь өөр апп-н компонент идэвхтэй эсэхийг солих боломжтой. Хортой апп нь энийг ашиглан утасны чухал чадамжийг идэвхгүй болгож болзошгүй. Зөвшөөрөл нь аппликешн компонентыг тогтворгүй, ашиглаж болохгүй, тохиромжгүй төлөвт оруулах боломжтой тул ашиглахдаа болгоомжтой байх шаардлагатай."</string>
- <string name="permlab_grantRevokePermissions" msgid="4627315351093508795">"зөвшөөрөл олгох эсвэл цуцлах"</string>
- <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Аппликешн нь өөртэй болон бусад аппликешнд тусгай зөвшөөрлийг олгох болон цуцлах боломжтой. Хортой аппликешн нь энийг ашиглан таны олгоогүй эрхэнд хандах боломжтой."</string>
- <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"үндсэн апп-г тохируулах"</string>
- <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Апп нь таны тусгай апп-уудыг өөрчлөх боломжтой. Хортой апп нь ажиллаж байгаа апп-г нууцаар өөрчлөн, таны хуучин апп-г таны хувийн датаг цуглуулагч болгон хуурах боломжтой."</string>
- <string name="permlab_writeSettings" msgid="2226195290955224730">"систем тохиргоог өөрчлөх"</string>
- <string name="permdesc_writeSettings" msgid="7775723441558907181">"Апп нь системийн тохиргооны датаг өөрчлөх боломжтой. Хортой апп нь таны системийн тохиргоог сүйтгэх боломжтой."</string>
- <string name="permlab_writeSecureSettings" msgid="204676251876718288">"аюулгүй систем тохиргоог өөрчлөх"</string>
- <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Апп нь системийн аюулгүй байдлын тохиргооны датаг өөрчлөх боломжтой. Энгийн апп-д ашиглагдахгүй."</string>
- <string name="permlab_writeGservices" msgid="2149426664226152185">"Google газрын зургийн үйлчилгээг өөрчлөх"</string>
- <string name="permdesc_writeGservices" msgid="1287309437638380229">"Апп нь Google-н газрын зургийн үйлчилгээг өөрчлөх боломжтой. Энгийн апп-д ашиглагдахгүй."</string>
- <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"Эхлэхэд ажиллуулах"</string>
- <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Апп нь систем асаж дуусахад шууд өөрийгөө асаах боломжтой. Ингэснээр таблетыг асахад их хугацаа орох болон байнга ажилладаг апп нь таблетийг бүхэлд нь удаашруулах боломжтой."</string>
- <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Апп нь систем асаж дуусахад шууд өөрийгөө асаах боломжтой. Ингэснээр утсыг асахад их хугацаа орох болон байнга ажилладаг апп нь утсыг бүхэлд нь удаашруулах боломжтой."</string>
- <string name="permlab_broadcastSticky" msgid="7919126372606881614">"тасардаггүй өргөн дамжууллыг илгээх"</string>
- <string name="permdesc_broadcastSticky" product="tablet" msgid="7749760494399915651">"Апп нь өргөн дамжуулал дууссаны дараа үлдсэн өргөн дамжуулалыг илгээх боломжтой. Ихээр ашиглах нь хэт их санах ой ашиглан таблетыг удаашруулах болон тогтворгүй болгох боломжтой."</string>
- <string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"Апп нь өргөн дамжуулал дууссаны дараа үлдсэн өргөн дамжуулалыг илгээх боломжтой. Ихээр ашиглах нь хэт их санах ой ашиглан утсыг удаашруулах болон тогтворгүй болгох боломжтой."</string>
- <string name="permlab_readContacts" msgid="8348481131899886131">"өөрийн харилцагчдыг унших"</string>
- <string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"Апп нь таны утсаар ярьсан, имэйл илгээсэн давтамж эсвэл тусгай харилцагдчидтайгаа өөр аргаар холбоо барьсан байдал зэргийг агуулсан таблет дээр хадгалагдсан харилцагчдын талаарх датаг унших боломжтой. Энэ зөвшөөрөл нь апп-д таны харилцагчийн датаг хадгалах боломжийг олгох ба хортой апп нь танд мэдэгдэлгүйгээр харилцагчийн датаг хуваалцах боломжтой."</string>
- <string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"Апп нь таны утсаар ярьсан, имэйл илгээсэн давтамж эсвэл тусгай харилцагчидтайгаа өөр аргаар холбоо барьсан байдал зэргийг агуулсан таны утсан дээр хадгалагдсан харилцагчдын талаарх датаг унших боломжтой. Энэ зөвшөөрөл нь апп-д таны харилцагчийн датаг хадгалах боломжийг олгох ба хортой апп нь танд мэдэгдэлгүйгээр харилцагчийн датаг хуваалцах боломжтой."</string>
- <string name="permlab_writeContacts" msgid="5107492086416793544">"таны харилцагчдыг өөрчлөх"</string>
- <string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"Апп нь таны утсаар ярьсан, имэйл илгээсэн давтамж эсвэл тусгай харилцагчидтайгаа өөр аргаар холбоо барьсан байдал зэргийг агуулсан таны таблет дээр хадгалагдсан харилцагчдын талаарх датаг өөрчлөх боломжтой. Энэ зөвшөөрөл нь апп-д харилцагчийн датаг устгах боломжийг олгоно."</string>
- <string name="permdesc_writeContacts" product="default" msgid="589869224625163558">"Апп нь таны утсаар ярьсан, имэйл илгээсэн давтамж эсвэл харилцагдчидтайгаа өөр аргаар холбоо барьсан байдал зэргийг агуулсан утсан дээр хадгалагдсан харилцагчдын талаарх датаг өөрчлөх боломжтой. Энэ зөвшөөрөл нь апп-д харилцагчийн датаг устгах боломжийг олгоно."</string>
- <string name="permlab_readCallLog" msgid="3478133184624102739">"дуудлагын логийг унших"</string>
- <string name="permdesc_readCallLog" product="tablet" msgid="3700645184870760285">"Апп нь таны таблетын ирсэн гарсан дуудлага зэргийг агуулсан дуудлагын логыг унших боломжтой. Энэ зөвшөөрөл нь апп-д таны дуудлагын логын датаг хадгалах боломжийг олгох ба хортой апп нь танд мэдэгдэлгүйгээр дуудлагын лог датаг хуваалцах боломжтой."</string>
- <string name="permdesc_readCallLog" product="default" msgid="5777725796813217244">"Апп нь таны утасны ирсэн гарсан дуудлага зэргийг агуулсан дуудлагын логыг унших боломжтой. Энэ зөвшөөрөл нь апп-д таны дуудлагын логын датаг хадгалах боломжийг олгох ба хортой апп нь танд мэдэгдэлгүйгээр дуудлагын лог датаг хуваалцах боломжтой."</string>
- <string name="permlab_writeCallLog" msgid="8552045664743499354">"дуудлагын логруу бичих"</string>
- <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Апп нь таны таблетын ирсэн гарсан дуудлага зэргийг агуулсан дуудлагын логыг унших боломжтой. Хортой апп нь энийг ашиглан таны дуудлагын логыг өөрчлөх болон арилгах боломжтой."</string>
- <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Апп нь таны утасны ирсэн гарсан дуудлага зэргийг агуулсан дуудлагын логыг өөрчлөх боломжтой. Хортой апп нь энийг ашиглан таны дуудлагын логыг өөрчлөх болон арилгах боломжтой."</string>
- <string name="permlab_readProfile" msgid="4701889852612716678">"та өөрийн харилцагчийн картыг унших"</string>
- <string name="permdesc_readProfile" product="default" msgid="5462475151849888848">"Апп нь таны нэр болон холбоо барих мэдээлэл зэрэг таны утсан дээр хадгалагдсан хувийн профайл мэдээллийг унших боломжтой. Ингэснээр апп нь танийг таньж чадах ба таны профайл мэдээллийг бусдад илгээх боломжтой."</string>
- <string name="permlab_writeProfile" msgid="907793628777397643">"та өөрийн харилцагчийн картыг өөрчлөх"</string>
- <string name="permdesc_writeProfile" product="default" msgid="5552084294598465899">"Апп нь таны нэр болон холбоо барих мэдээлэл зэрэг таны төхөөрөмж дээр хадгалагдсан хувийн профайл мэдээллийг солих эсвэл нэмэх боломжтой. Ингэснээр апп нь танийг таньж чадах ба таны профайл мэдээллийг бусдад илгээх боломжтой."</string>
- <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"таны нийтийн урсгалаас унших"</string>
- <string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"Апп нь та болон таны найзуудын нийтийн шинэчлэлтэд хандах болон синк хийх боломжтой. Мэдээлэл хуваалцахдаа болгоомжтой байна уу - энэ нь апп-д нийтийн сүлжээндэх та болон таны найзууд хоорондын холбоог нууц эсэхээс үл хамааран унших боломжтой. Анхаар: энэ зөвшөөрөл нь бүх нийтийн сүлжээнд ашиглаж боломжгүй."</string>
- <string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"Таны нийтийн урсгалруу бичих"</string>
- <string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"Апп нь таны найзуудын нийтийн шинэчлэлтийг дүрслэх боломжтой.Мэдээлэл хуваалцахдаа болгоомжтой байна уу - энэ нь апп-д таны найзаас ирсэн мэт харагдах мессеж хийх боломжийг олгоно. Анхаар: энэ зөвшөөрөл нь бүх нийтийн сүлжээнд ашиглаж боломжгүй."</string>
- <string name="permlab_readCalendar" msgid="5972727560257612398">"календарийн хуваарийн нууц мэдээллийг унших"</string>
- <string name="permdesc_readCalendar" product="tablet" msgid="4216462049057658723">"Апп нь таны таблет дээр хадгалагдсан найзууд болон хамтран ажиллагсдын календарийн бүх хуваарийг унших боломжтой. Энэ нь апп-д таны календарийн датаг нууц эсвэл эмзэг эсэхээс нь үл хамааран хуваалцах эсвэл хадгалах боломжийг олгоно."</string>
- <string name="permdesc_readCalendar" product="default" msgid="7434548682470851583">"Allows the app to read all calendar events stored on your phone, including those of friends or co-workers. This may allow the app to share or save your calendar data, regardless of confidentiality or sensitivity. Апп нь таны утсан дээр хадгалагдсан найзууд болон хамтран ажиллагсдын календарийн бүх хуваарийг унших боломжтой. Энэ нь апп-д таны календарийн датаг нууц эсвэл эмзэг эсэхээс нь үл хамааран хуваалцах эсвэл хадгалах боломжийг олгоно."</string>
- <string name="permlab_writeCalendar" msgid="8438874755193825647">"календарын хуваарийг нэмэх эсвэл өөрчлөх болон эзэмшигчид мэдэгдэлгүйгээр зочидруу имэйл илгээх"</string>
- <string name="permdesc_writeCalendar" product="tablet" msgid="6679035520113668528">"Апп нь таблет дээр та болон таны найзууд, хамтран ажиллагсдын өөрчилж чадах үйл явдлуудыг нэмэх, хасах болон солих боломжтой. Энэ нь апп-д, календарь эзэмшигчээс ирсэн мэт харагдах мессежийг илгээх эсвэл эзэмшигчд нь мэдэгдэлгүйгээр үйл явдлуудыг өөрчлөх боломжийг олгоно."</string>
- <string name="permdesc_writeCalendar" product="default" msgid="2324469496327249376">"Апп нь утсан дээр та болон таны найзууд, хамтран ажиллагсдын өөрчилж чадах үйл явдлуудыг нэмэх, хасах болон солих боломжтой. Энэ нь апп-д, календарь эзэмшигчээс ирсэн мэт харагдах мессежийг илгээх эсвэл эзэмшигчид нь мэдэгдэлгүйгээр үйл явдлуудыг өөрчлөх боломжийг олгоно."</string>
- <string name="permlab_accessMockLocation" msgid="8688334974036823330">"тест хийх байршлын эх үүсвэрийг үүсгэх"</string>
- <string name="permdesc_accessMockLocation" msgid="5808711039482051824">"Тестэд ашиглах хуурамч байршлын эх үүсвэрийг үүсгэх болон шинэ байршил өгөгчийг суулгах боломжтой. Ингэснээр апп нь GPS эсвэл байршил өгөгч зэрэг бусад байршлын эх үүсвэрээс ирсэн байршил болон статусыг өөрчлөх боломжтой."</string>
- <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"байршил нийлүүлэгчийн нэмэлт тушаалд хандах"</string>
- <string name="permdesc_accessLocationExtraCommands" msgid="5945166642335800763">"Апп нь байршил нийлүүлэгчийн нэмэлт тушаалд хандах боломжтой. Энэ нь апп-д GPS эсвэл бусад байршлын үйлчилгээний ажиллагаанд нөлөөлөх боломжийг олгоно."</string>
- <string name="permlab_installLocationProvider" msgid="6578101199825193873">"байршил нийлүүлэгчийг суулгах зөвшөөрөх"</string>
- <string name="permdesc_installLocationProvider" msgid="9066146120470591509">"Тестэд ашиглах хуурамч байршлын эх үүсвэрийг үүсгэх болон шинэ байршил өгөгчийг суулгах боломжтой. Ингэснээр апп нь GPS эсвэл байршил өгөгч зэрэг бусад байршлын эх үүсвэрээс ирсэн байршил болон статусыг өөрчлөх боломжтой."</string>
- <string name="permlab_accessFineLocation" msgid="1191898061965273372">"Тодорхой байршил(GPS болон сүлжээнд суурилсан)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"Апп нь GPS эсвэл үүрэн цамхаг болон Wi-Fi зэрэг сүлжээний байршлын эх үүсвэрийг ашиглан таны тодорхой байршлыг авах боломжтой. Эдгээр байршлын үйлчилгээнүүд нь асаалттай байх шаардлагатай ба таны төхөөрөмж дээрх апп-ууд ашиглах боломжтой байх шаардлагатай. Апп-ууд энийг ашиглан таныг хаана байгааг тогтоох боломжтой ба батерей зарцуулалт нэмэгдэнэ."</string>
- <string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"ойролцоох байршил(сүлжээнд суурилсан)"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"Апп нь таны ойролцоох байршлыг оло боломжтой. Энэ байршил нь үүрэн цамхаг болон Wi-Fi зэрэг сүлжээний байршлын эх сурвалжийг ашигладаг байршлын үйлчилгээнээс олдоно. Эдгээр байршлын үйлчилгээнүүд нь таны төхөөрөмж дээр асаалттай байх шаардлагатай ба апп-д тэдгээрийг ашиглах боломжтой байх шаардлагатай. Апп-д тэдгээрийг ашиглан таны байршлыг ойролцоогоор олох боломжтой."</string>
- <string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"SurfaceFlinger-т хандах"</string>
- <string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"Апп нь SurfaceFlinger доод-төвшиний функцийг ашиглах боломжтой."</string>
- <string name="permlab_readFrameBuffer" msgid="6690504248178498136">"Фрэйм буферээс унших"</string>
- <string name="permdesc_readFrameBuffer" msgid="4937405521809454680">"Апп нь фрэйм буферын контентыг унших боломжтой."</string>
- <string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"Wifi дэлгэцийг тохируулах"</string>
- <string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"Апп нь Wifi дэлгэцийг тохируулах болон холбогдох боломжтой."</string>
- <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"Wifi дэлгэцийг удирдах"</string>
- <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"Апп нь Wifi дэлгэцний доод-төвшиний функцийг удирдах боломжтой."</string>
- <string name="permlab_captureAudioOutput" msgid="6857134498402346708">"аудио гаралтыг барих"</string>
- <string name="permdesc_captureAudioOutput" msgid="6210597754212208853">"Апп-т аудио гаралтыг барих, дахин чиглүүлэхийг зөвшөөрнө."</string>
- <string name="permlab_captureVideoOutput" msgid="2246828773589094023">"видео гаралтыг барих"</string>
- <string name="permdesc_captureVideoOutput" msgid="359481658034149860">"Апп-т видео гаралтыг барих, дахин чиглүүлэхийг зөвшөөрнө."</string>
- <string name="permlab_captureSecureVideoOutput" msgid="7815398969303382016">"найдвартай видео гаралтыг барих"</string>
- <string name="permdesc_captureSecureVideoOutput" msgid="2779793064709350289">"Апп-т найдвартай видео гаралтыг барих, дахин чиглүүлэхийг зөвшөөрнө."</string>
- <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"Аудио тохиргоо солих"</string>
- <string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"Апп нь дууны хэмжээ, спикерын гаралтад ашиглагдах глобал аудио тохиргоог өөрчлөх боломжтой."</string>
- <string name="permlab_recordAudio" msgid="3876049771427466323">"аудио бичих"</string>
- <string name="permdesc_recordAudio" msgid="4906839301087980680">"Апп нь микрофоноор аудио бичих боломжтой. Энэ зөвшөөрөл нь апп-д ямар ч үед таны зөвшөөрөлгүйгээр аудио бичих боломжийг олгоно."</string>
- <string name="permlab_camera" msgid="3616391919559751192">"зураг авах болон видео бичих"</string>
- <string name="permdesc_camera" msgid="8497216524735535009">"Апп нь камераар зураг авах болон видео бичих боломжтой. Энэ зөвшөөрөл нь апп-д ямар ч үед таны зөвшөөрөлгүйгээр камер ашиглах боломжийг олгоно."</string>
- <string name="permlab_cameraDisableTransmitLed" msgid="2651072630501126222">"камер ашиглаж байх үед дамжууллыг заагч LED-г идэвхгүй болгох"</string>
- <string name="permdesc_cameraDisableTransmitLed" msgid="4764585465480295341">"Урьдчилан суусан систем аппликешн нь камер ашиглалтыг заасан LED-г идэвхгүй болгох боломжтой."</string>
- <string name="permlab_brick" product="tablet" msgid="2961292205764488304">"таблетыг бүрмөсөн идэвхгүй болгох"</string>
- <string name="permlab_brick" product="default" msgid="8337817093326370537">"утсыг бүрмөсөн идэвхгүй болгох"</string>
- <string name="permdesc_brick" product="tablet" msgid="4334818808001699530">"Апп нь таблетыг бүхэлд нь бүрмөсөн идэвхгүй болгох боломжтой. Энэ маш аюултайэ"</string>
- <string name="permdesc_brick" product="default" msgid="5788903297627283099">"Апп нь утсыг бүхэлд нь бүрмөсөн идэвхгүй болгох боломжтой. Энэ маш аюултай."</string>
- <string name="permlab_reboot" product="tablet" msgid="3436634972561795002">"таблет хүчээр дахин асаах"</string>
- <string name="permlab_reboot" product="default" msgid="2898560872462638242">"утсыг хүчээр дахин асаах"</string>
- <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Апп нь таблетыг хүчээр дахин асаах боломжтой."</string>
- <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Апп нь утсыг хүчээр дахин асаах боломжтой."</string>
- <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"USB сан файл системд хандах"</string>
- <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"SD карт файл системд хандах"</string>
- <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Апп нь сугалдаг санг файл системд залгах болон салгах боломжтой."</string>
- <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB санг арилгах"</string>
- <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD картыг арилгах"</string>
- <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Апп нь зөөврийн санг форматлах боломжтой."</string>
- <string name="permlab_asec_access" msgid="3411338632002193846">"дотоод сангийн мэдээллийг авах"</string>
- <string name="permdesc_asec_access" msgid="3094563844593878548">"Апп нь дотоод сангаас мэдээллийг авах боломжтой"</string>
- <string name="permlab_asec_create" msgid="6414757234789336327">"дотоод санд үүсгэх"</string>
- <string name="permdesc_asec_create" msgid="4558869273585856876">"Апп нь дотоод сан үүсгэх боломжтой."</string>
- <string name="permlab_asec_destroy" msgid="526928328301618022">"дотоод сангаас устгах"</string>
- <string name="permdesc_asec_destroy" msgid="7218749286145526537">"Апп нь дотоод сангаас устгах боломжтой."</string>
- <string name="permlab_asec_mount_unmount" msgid="8877998101944999386">"дотоод санг залгах/салгах"</string>
- <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Апп нь дотоод санг залгах/салгах боломжтой."</string>
- <string name="permlab_asec_rename" msgid="7496633954080472417">"дотоод сангийн нэрийг өөрчлөх"</string>
- <string name="permdesc_asec_rename" msgid="1794757588472127675">"Апп нь дотоод сангийн нэрийг өөрчлөх боломжтой."</string>
- <string name="permlab_vibrate" msgid="7696427026057705834">"чичиргээг удирдах"</string>
- <string name="permdesc_vibrate" msgid="6284989245902300945">"Апп нь чичиргээг удирдах боломжтой."</string>
- <string name="permlab_flashlight" msgid="2155920810121984215">"гар чийдэн удирдах"</string>
- <string name="permdesc_flashlight" msgid="6522284794568368310">"Апп нь гар чийдэнг удирдах боломжтой."</string>
- <string name="permlab_manageUsb" msgid="1113453430645402723">"USB төхөөрөмжийн тохиргоо болон зөвшөөрлийг удирдах"</string>
- <string name="permdesc_manageUsb" msgid="7776155430218239833">"Апп нь USB төхөөрөмжийн зөвшөөрөл болон тохируулгыг удирдах боломжтой."</string>
- <string name="permlab_accessMtp" msgid="4953468676795917042">"MTP протоколыг гүйцэтгэх"</string>
- <string name="permdesc_accessMtp" msgid="6532961200486791570">"MTP USB протокол биелүүлэхээр MTP цөм драйверт хандах боломжтой."</string>
- <string name="permlab_hardware_test" msgid="4148290860400659146">"хардвер теслэх"</string>
- <string name="permdesc_hardware_test" msgid="6597964191208016605">"Апп нь хардверийг тестлэх зорилгоор олон төрлийн туслах төхөөрөмжийг удирдах боломжтой."</string>
- <string name="permlab_callPhone" msgid="3925836347681847954">"утасны дугаарт шууд дуудлага хийх"</string>
- <string name="permdesc_callPhone" msgid="3740797576113760827">"Апп нь таны оролцоогүйгээр дуудлага хийх боломжтой. Энэ нь төлөвлөгдөөгүй төлбөрт оруулах эсвэл дуудлага хийнэ. Энэ нь апп-г яаралтай дугаарт дуудлага хийхйг зөвшөөрөхгүй. Хортой апп нь таны зөвшөөрөлгүйгээр дуудлага хийж таныг төлбөрт оруулж болзошгүй"</string>
- <string name="permlab_callPrivileged" msgid="4198349211108497879">"дурны утасны дугаарт шууд дуудлага хийх"</string>
- <string name="permdesc_callPrivileged" msgid="1689024901509996810">"Апп нь таны оролцоогүйгээр яаралтай тусламжийн дугааруудыг оруулаад ямарч дугаарлуу дуудлага хийх боломжтой. Хортой апп нь шаардлагагүй, хууль бус дуудлагыг яаралтай тусламжийн үйлчилгээрүү хийж болзошгүй."</string>
- <string name="permlab_performCdmaProvisioning" product="tablet" msgid="4842576994144604821">"CDMA таблет тохиргоог шууд эхлүүлэх"</string>
- <string name="permlab_performCdmaProvisioning" product="default" msgid="5604848095315421425">"CDMA утасны тохиргоог шууд эхлүүлэх"</string>
- <string name="permdesc_performCdmaProvisioning" msgid="1994193538802314186">"Апп нь CDMA провишныг эхлүүлэх боломжтой. Хортой апп нь шаардлагагүй байхад CDMA провишныг эхлүүлж болзошгүй."</string>
- <string name="permlab_locationUpdates" msgid="7785408253364335740">"байршил шинэчлэх мэдэгдлийг удирдах"</string>
- <string name="permdesc_locationUpdates" msgid="1120741557891438876">"Апп нь радиогоос ирсэн байршил шинэчлэх мэдэгдлийг идэвхтэй/идэвхгүй болгох боломжтой. Энгийн апп-д хэрэглэглэхгүй."</string>
- <string name="permlab_checkinProperties" msgid="7855259461268734914">"бүртгэх пропертид хандах"</string>
- <string name="permdesc_checkinProperties" msgid="4024526968630194128">"Апп нь бүртгэл үйлчилгээгээр байршуулагдсан пропертиг унших/бичих боломжтой. Энгийн апп-д хэрэглэгдэхгүй."</string>
- <string name="permlab_bindGadget" msgid="776905339015863471">"виджет сонгох"</string>
- <string name="permdesc_bindGadget" msgid="8261326938599049290">"Апп нь аль апп ямар виджетийг ашиглаж байгаа тухай системд мэдэгдэх боломжтой. Энэ зөвшөөрөлтэй апп нь бусад апп-д хувийн датад хандах эрхийг өгөх боломжтой. Энгийн апп-д ашиглагдахгүй."</string>
- <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"утасны статусыг өөрчлөх"</string>
- <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Апп-н төхөөрөмжийн утасны функцийг удирдах боломжтой. Энэ зөвшөөрөлтэй апп нь танд анхааруулахгүйгээр сүлжээг сэлгэх, утасны радиог асаах, унтраах боломжтой."</string>
- <string name="permlab_readPhoneState" msgid="9178228524507610486">"утасны статус ба таниулбарыг унших"</string>
- <string name="permdesc_readPhoneState" msgid="1639212771826125528">"Апп нь төхөөрөмжийн утасны функцд хандах боломжтой. Энэ зөвшөөрөл нь апп-д утасны дугаар болон төхөөрөмжийн ID-г, дуудлага идэвхтэй эсэх, холын дугаар дуудлагаар холбогдсон байгаа эсэхийг тогтоох боломжийг олгоно,"</string>
- <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"таблетыг унтуулахгүй байлгах"</string>
- <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"утсыг унтуулахгүй байлгах"</string>
- <string name="permdesc_wakeLock" product="tablet" msgid="7311319824400447868">"Апп нь таблетыг унтахаас сэргийлэх боломжтой"</string>
- <string name="permdesc_wakeLock" product="default" msgid="8559100677372928754">"Апп нь утсыг унтахаас сэргийлэх боломжтой"</string>
- <string name="permlab_devicePower" product="tablet" msgid="2787034722616350417">"таблетыг унтраах эсвэл асаах"</string>
- <string name="permlab_devicePower" product="default" msgid="4928622470980943206">"утсыг унтраах эсвэл асаах"</string>
- <string name="permdesc_devicePower" product="tablet" msgid="6689862878984631831">"Апп нь таблетыг асаах, унтраах боломжтой."</string>
- <string name="permdesc_devicePower" product="default" msgid="6037057348463131032">"Апп нь утсыг асаах, унтраах боломжтой."</string>
- <string name="permlab_factoryTest" msgid="3715225492696416187">"үйлдвэрийн тест горимд ажиллуулах"</string>
- <string name="permdesc_factoryTest" product="tablet" msgid="3952059318359653091">"Доод төвшиний үйлдвэрийн тестийг ажиллуулан таблетын хардверт бүрэн хандах боломжтой. Таблет нь үйлдвэрийн тестийн горимд ажиллах үед л боломжтой."</string>
- <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Доод төвшиний үйлдвэрийн тестийг ажиллуулан утасны хардверт бүрэн хандах боломжтой. Утас үйлдвэрийн тестийн горимд ажиллах үед л боломжтой."</string>
- <string name="permlab_setWallpaper" msgid="6627192333373465143">"ханын зургийг тохируулах"</string>
- <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Апп нь системийн ханын зургийг тохируулах боломжтой."</string>
- <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"Таны ханын зурагны хэмжээг тохируулах"</string>
- <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Апп нь системийн ханын зургийн хэмжээний саналыг тохируулах боломжтой"</string>
- <string name="permlab_masterClear" msgid="2315750423139697397">"системийг үйлдвэрийн үндсэн утгаар тохируулах"</string>
- <string name="permdesc_masterClear" msgid="3665380492633910226">"Апп нь бүх датаг арилгах болон бүх суулгасан апп-г арилган системийг бүхэлд үйлдвэрийн тохиргоогоор бүрэн тохируулах боломжтой"</string>
- <string name="permlab_setTime" msgid="2021614829591775646">"цагийн тохиргоо"</string>
- <string name="permdesc_setTime" product="tablet" msgid="1896341438151152881">"Апп нь таблетын цагийг солих боломжтой."</string>
- <string name="permdesc_setTime" product="default" msgid="1855702730738020">"Апп нь утасны цагийг солих боломжтой."</string>
- <string name="permlab_setTimeZone" msgid="2945079801013077340">"цагийн бүсийн тохиргоо"</string>
- <string name="permdesc_setTimeZone" product="tablet" msgid="1676983712315827645">"Апп нь таблетын цагийн бүсийг солих боломжтой."</string>
- <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Апп нь утасны цагийн бүсийг өөрчлөх боломжтой."</string>
- <string name="permlab_accountManagerService" msgid="4829262349691386986">"AccountManagerService болж ажиллах"</string>
- <string name="permdesc_accountManagerService" msgid="1948455552333615954">"Апп нь Акаунт гэрчлэгчрүү дуудлага хийх боломжтой."</string>
- <string name="permlab_getAccounts" msgid="1086795467760122114">"төхөөрөмж дээрх акаунтыг олох"</string>
- <string name="permdesc_getAccounts" product="tablet" msgid="2741496534769660027">"Апп нь таблетэд мэдэгдэж байгаа акаунтын жагсаалтыг авах боломжтой. Энд таны суулгасан аппликешнүүдийн үүсгэсэн бүх акаунтууд хамрагдана."</string>
- <string name="permdesc_getAccounts" product="default" msgid="3448316822451807382">"Апп нь утсанд мэдэгдэж байгаа акаунтын жагсаалтыг авах боломжтой. Энд таны суулгасан аппликешнүүдийн үүсгэсэн бүх акаунтууд хамрагдана."</string>
- <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"акаунт үүсгэх болон нууц үг тохируулах"</string>
- <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Апп нь акаунт үүсгэх, тэдгээрийн нууц үгийг тохируулах зэрэг акаунт удирдагчийн акаунт гэрчлэгчийн функцийг ашиглах боломжтой."</string>
- <string name="permlab_manageAccounts" msgid="4983126304757177305">"акаунт нэмэх эсвэл хасах"</string>
- <string name="permdesc_manageAccounts" msgid="8698295625488292506">"Апп нь акаунт нэмэх, устгах ба тэдний нууц үгийг устгах зэрэг үйлдлийг гүйцэтгэх боломжтой."</string>
- <string name="permlab_useCredentials" msgid="235481396163877642">"төхөөрөмж дээрх акаунтыг ашиглах"</string>
- <string name="permdesc_useCredentials" msgid="7984227147403346422">"Апп нь гэрчлэлийн бүтвэрийг хүсэх боломжтой."</string>
- <string name="permlab_accessNetworkState" msgid="4951027964348974773">"сүлжээний холболтыг үзэх"</string>
- <string name="permdesc_accessNetworkState" msgid="8318964424675960975">"Апп нь сүлжээ байгаа болон холбогдсон эсэх зэрэг сүлжээний холболтын талаарх мэдээллийг харах боломжтой."</string>
- <string name="permlab_createNetworkSockets" msgid="8018758136404323658">"сүлжээнд бүрэн хандах"</string>
- <string name="permdesc_createNetworkSockets" msgid="3403062187779724185">"Апп нь сүлжээний сокетыг үүсгэх болон тусгай сүлжээний протокол ашиглах боломжтой. Хөтөч болон бусад аппликешнүүд Интернетээр дата илгээх боломжтой тул энэ зөвшөөрөл нь Интернетээр дата илгээхэд шаардлагагүй."</string>
- <string name="permlab_writeApnSettings" msgid="505660159675751896">"сүлжээний тохиргоо болон урсгалыг солих/таслах"</string>
- <string name="permdesc_writeApnSettings" msgid="5333798886412714193">"Апп нь сүлжээний тохиргоог солих болон сүлжээний бүх урсгалыг APN-н прокси болон портыг солих замаар таслах, хянах боломжтой. Хортой апп нь танд мэдэгдэлгүйгээр сүлжээний пакетыг хянах, дахин чиглүүлэх болон өөрчлөх боломжтой."</string>
- <string name="permlab_changeNetworkState" msgid="958884291454327309">"сүлжээний холболтыг солих"</string>
- <string name="permdesc_changeNetworkState" msgid="6789123912476416214">"Апп нь сүлжээний холболтын статусыг солих боломжтой."</string>
- <string name="permlab_changeTetherState" msgid="5952584964373017960">"модем болгосон холболтыг солих"</string>
- <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Апп нь холбогдсон сүлжээний холболтын статусыг солих боломжтой."</string>
- <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"арын дата ашиглалтын тохиргоог солих"</string>
- <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Апп нь арын дата хэрэглээний тохиргоог солих боломжтой."</string>
- <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi холболтыг үзэх"</string>
- <string name="permdesc_accessWifiState" msgid="5002798077387803726">"Апп нь Wi-Fi идэвхтэй эсэх болон холбогдсон Wi-Fi төхөөрөмжийн нэр зэрэг Wi-Fi сүлжээний талаарх мэдээллийг харах боломжтой."</string>
- <string name="permlab_changeWifiState" msgid="6550641188749128035">"Wi-Fi -тай холбогдох болон салах"</string>
- <string name="permdesc_changeWifiState" msgid="7137950297386127533">"Апп нь Wi-Fi холболтын цэгтэй холбогдох буюу салах боломжтой ба тохируулсан Wi-Fi сүлжээнд өөрчлөлт хийх боломжтой."</string>
- <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fi олон дамжуулалт хүлээн авахыг зөвшөөрөх"</string>
- <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"Апп нь олон дамжуулал ашиглан Wi-Fi сүлжээн дэх бүх төхөөрөмжрүү пакет илгээх болон хүлээн авах боломжтой. Энэ нь олон дамжуулал ашиглахгүй горимоос илүү их тэжээл зарцуулна."</string>
- <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"Апп нь олон дамжуулал ашиглан Wi-Fi сүлжээн дэх бүх төхөөрөмжрүү пакет илгээх болон хүлээн авах боломжтой. Энэ нь олон дамжуулал ашиглахгүй горимоос илүү их тэжээл зарцуулна."</string>
- <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Блютүүт тохиргоонд хандах"</string>
- <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Апп нь дотоод блютүүт таблетын тохиргоог харах боломжтой ба хос болох төхөөрөмжтэй холболтыг зөвшөөрөх болон хийх боломжтой"</string>
- <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Апп нь утасны дотоод блютүүтыг тохируулах боломжтой ба гадаад төхөөрөмжийг олох болон хос үүсгэх боломжтой."</string>
- <string name="permlab_accessWimaxState" msgid="4195907010610205703">"WiMAX-д холбогдох болон салах"</string>
- <string name="permdesc_accessWimaxState" msgid="6360102877261978887">"Апп нь WiMAX идэвхтэй эсэх болон холбогдсон WiMAX сүлжээний талаар мэдээллийг тодорхойлох боломжтой."</string>
- <string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX статусыг өөрчлөх"</string>
- <string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"Апп нь WiMAX сүлжээнд таблетыг холбох болон салгах боломжтой."</string>
- <string name="permdesc_changeWimaxState" product="default" msgid="697025043004923798">"Апп нь WiMAX сүлжээнд утсыг холбох болон салгах боломжтой."</string>
- <string name="permlab_bluetooth" msgid="6127769336339276828">"Блютүүт төхөөрөмжтэй хос үүсгэх"</string>
- <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"Апп нь таблет дээрх блютүүт тохиргоог харах боломжтой ба хос болох төхөөрөмжтэй холболтыг зөвшөөрөх болон хийх боломжтой."</string>
- <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"Апп нь утсан дээрх Блютүүт тохиргоог харах боломжтой ба хос болох төхөөрөмжтэй холболтыг зөвшөөрөх болон хийх боломжтой."</string>
- <string name="permlab_nfc" msgid="4423351274757876953">"ойролцоо талбарын холбоог удирдах"</string>
- <string name="permdesc_nfc" msgid="7120611819401789907">"Апп нь Ойролцоо Талбарын Холболт(NFC) таг, карт, болон уншигчтай холбогдох боломжтой."</string>
- <string name="permlab_disableKeyguard" msgid="3598496301486439258">"дэлгэцний түгжээг идэвхгүй болгох"</string>
- <string name="permdesc_disableKeyguard" msgid="6034203065077122992">"Апп нь түгжээ болон бусад холбоотой нууц үгийн аюулгүй байдлыг идэвхгүй болгох боломжтой. Жишээ нь бол утас нь дуудлага ирэх үед түгжээг идэвхгүй болгох ба дуудлага дуусахад буцаан идэвхтэй болгодог."</string>
- <string name="permlab_readSyncSettings" msgid="6201810008230503052">"синк тохиргоог унших"</string>
- <string name="permdesc_readSyncSettings" msgid="2706745674569678644">"Апп нь акаунтын синк тохиргоог унших боломжтой. Жишээ нь энэ нь Хүмүүс апп акаунттай синк хийгдсэн эсэхийг тодорхойлох боломжтой."</string>
- <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"синкийг унтрааж асаах тохиргоо"</string>
- <string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"Апп нь акаунтын синк тохиргоог өөрчлөх боломжтой. Жишээ нь энэ нь Хүмүүс апп акаунттай синк хийхийг идэвхжүүлэх боломжтой."</string>
- <string name="permlab_readSyncStats" msgid="7396577451360202448">"синк статистикийг унших"</string>
- <string name="permdesc_readSyncStats" msgid="1510143761757606156">"Апп нь синк үйлдэлийн түүх болон хэр их дата синк хийгдсэн зэрэг акаунтын синк статусыг унших боломжтой."</string>
- <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"бүртгүүлсэн хангамжийг унших"</string>
- <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Апп нь одоогийн синк хийгдсэн хангамжийн талаарх мэдээллийг авах боломжтой."</string>
- <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"бүртгүүлсэн хангамжруу бичих"</string>
- <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Апп нь таны одоогийн синк хийгдсэн хангамжийг өөрчлөх боломжтой. Хортой апп нь таны синк хийгдсэн хангамжийг өөрчлөх боломжтой."</string>
- <string name="permlab_readDictionary" msgid="4107101525746035718">"таны толь бичигт нэмсэн нөхцөлийг унших"</string>
- <string name="permdesc_readDictionary" msgid="659614600338904243">"Апп нь хэрэглэгч хэрэглэгчийн толь бичигт хадгалсан бүх үгс, нэрс болон хэлцийг унших боломжтой."</string>
- <string name="permlab_writeDictionary" msgid="2183110402314441106">"хэрэглэгчийн толь бичигт үгс нэмэх"</string>
- <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Апп нь хэрэглэгчийн толь бичигт шинэ үг бичих боломжтой."</string>
- <string name="permlab_sdcardRead" product="nosdcard" msgid="8235341515605559677">"хамгаалагдсан санд хандах тест хийх"</string>
- <string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"хамгаалагдсан санд хандах тест хийх"</string>
- <string name="permdesc_sdcardRead" product="nosdcard" msgid="3642473292348132072">"Апп нь дараагийн төхөөрөмжүүдэд ашиглах боломжтой болох SD карт зөвшөөрлийг тестлэх боломжтой."</string>
- <string name="permdesc_sdcardRead" product="default" msgid="5914402684685848828">"Апп нь дараагийн төхөөрөмжүүдэд ашиглах боломжтой болох SD карт эрхийг тестлэх боломжтой."</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USB сангийн контентыг өөрчлөх эсвэл устгах"</string>
- <string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"SD картны контентыг өөрчлөх болон устгах"</string>
- <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Апп нь USB санруу бичих боломжтой."</string>
- <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Апп нь SD картруу бичих боломжтой."</string>
- <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"дотоод медиа сангийн контентыг өөрчлөх/устгах"</string>
- <string name="permdesc_mediaStorageWrite" product="default" msgid="8189160597698529185">"Апп нь дотоод медиа сангийн контентыг өөрчлөх боломжтой."</string>
- <string name="permlab_manageDocs" product="default" msgid="5778318598448849829">"документ санг удирдах"</string>
- <string name="permdesc_manageDocs" product="default" msgid="8704323176914121484">"Апп нь документ санг удирдах боломжтой."</string>
- <string name="permlab_sdcardAccessAll" msgid="8150613823900460576">"бүх хэрэглэгчдийн гадаар санд хандах"</string>
- <string name="permdesc_sdcardAccessAll" msgid="3215208357415891320">"Апп нь бүх хэрэглэгчдийн гадаад санд хандах боломжтой."</string>
- <string name="permlab_cache_filesystem" msgid="5656487264819669824">"кеш файлсистемд хандах"</string>
- <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Апп нь кеш файлсистемийг унших бичих боломжтой."</string>
- <string name="permlab_use_sip" msgid="5986952362795870502">"Интернет дуудлага хийх/хүлээн авах"</string>
- <string name="permdesc_use_sip" msgid="4717632000062674294">"Апп нь Интернет дуудлага хийх/хүлээн авахын тулд SIP үйлчилгээг ашиглах боломжтой."</string>
- <string name="permlab_readNetworkUsageHistory" msgid="7862593283611493232">"сүлжээний ашиглалтын түүхийг унших"</string>
- <string name="permdesc_readNetworkUsageHistory" msgid="7689060749819126472">"Апп нь тусгай сүлжээ болон апп-н сүлжээ ашиглалтын түүхийг унших боломжтой."</string>
- <string name="permlab_manageNetworkPolicy" msgid="2562053592339859990">"сүлжээний бодлогыг удирдах"</string>
- <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"Апп нь сүлжээний бодлогыг удирдах болон апп-д зориулсан дүрмийг тогтоох боломжтой."</string>
- <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"сүлжээний хэрэглээний тайланг өөрчлөх"</string>
- <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Апп нь апп-уудын сүлжээ ашиглалтын талаарх тооцоог өөрчлөх боломжтой. Энгийн апп-д ашиглагдахгүй."</string>
- <string name="permlab_markNetworkSocket" msgid="3658527214914959749">"соккетын тэмдгүүдийг өөрчлөх"</string>
- <string name="permdesc_markNetworkSocket" msgid="7655568433696356578">"Апп-д чиглэлийн соккетын тэмдгийг өөрчлөх боломж олгоно"</string>
- <string name="permlab_accessNotifications" msgid="7673416487873432268">"мэдэгдэлд хандах"</string>
- <string name="permdesc_accessNotifications" msgid="458457742683431387">"Апп нь бусад апп-уудын илгээсэн мэдэгдлүүдийг дуудах, шалгах, болон цэвэрлэх боломжтой."</string>
- <string name="permlab_bindNotificationListenerService" msgid="7057764742211656654">"мэдэгдэл сонсогч үйлчилгээтэй холбох"</string>
- <string name="permdesc_bindNotificationListenerService" msgid="985697918576902986">"Эзэмшигч нь мэдэгдэл сонсох үйлчилгээний дээд-төвшиний интерфейстэй холбох боломжтой. Энгийн апп-д шаардлагагүй."</string>
- <string name="permlab_invokeCarrierSetup" msgid="3699600833975117478">"үүрэн компанийн нийлүүлсэн тохируулгын апп-г өдөөх"</string>
- <string name="permdesc_invokeCarrierSetup" msgid="4159549152529111920">"Эзэмшигчид үүрэн компанийн нийлүүлсэн тохируулах апп-г өдөөх боломж олгоно. Энгийн апп-уудад хэзээ ч ашиглагдахгүй."</string>
- <string name="permlab_accessNetworkConditions" msgid="8206077447838909516">"Сүлжээний байдлын талаар ажиглалтуудыг хүлээн авах"</string>
- <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"Аппликешнд сүлжээний байдлын талаар ажиглалтуудыг хүлээн авахыг зөвшөөрнө. Энгийн апп-уудад хэзээ ч ашиглагдахгүй."</string>
- <string name="policylab_limitPassword" msgid="4497420728857585791">"Нууц үгний дүрмийг тохируулах"</string>
- <string name="policydesc_limitPassword" msgid="3252114203919510394">"Дэлгэц түгжих нууц үгэнд зөвшөөрөгдсөн тэмдэгт болон уртыг удирдах"</string>
- <string name="policylab_watchLogin" msgid="914130646942199503">"Дэлгэц тайлах оролдлогыг хянах"</string>
- <string name="policydesc_watchLogin" product="tablet" msgid="3215729294215070072">"Дэлгэц түгжигдсэн үед нууц үг буруу оруулалтын тоог хянах ба хэрэв хэт олон удаа нууц үгийг буруу оруулбал таблетыг түгжих болон таблетын бүх датаг арилгана"</string>
- <string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"Дэлгэц түгжигдсэн үед нууц үг буруу оруулалтын тоог хянах, ба хэрэв хэт олон удаа нууц үгийг буруу оруулбал утсыг түгжих болон утасны бүх датаг арилгана"</string>
- <string name="policylab_resetPassword" msgid="2620077191242688955">"Дэлгэц түгжих нууц үгийг солих"</string>
- <string name="policydesc_resetPassword" msgid="605963962301904458">"Дэлгэц түгжих нууц үгийг солих"</string>
- <string name="policylab_forceLock" msgid="2274085384704248431">"Дэлгэц түгжих"</string>
- <string name="policydesc_forceLock" msgid="1141797588403827138">"Дэлгэц хэзээ яаж түгжихийг удирдах"</string>
- <string name="policylab_wipeData" msgid="3910545446758639713">"Бүх датаг арилгах"</string>
- <string name="policydesc_wipeData" product="tablet" msgid="4306184096067756876">"Үйлдвэрийн дата утгыг өгсөнөөр таблетын дата шууд арилгагдана."</string>
- <string name="policydesc_wipeData" product="default" msgid="5096895604574188391">"Үйлдвэрийн дата утгыг өгсөнөөр утасны дата шууд арилгагдана."</string>
- <string name="policylab_setGlobalProxy" msgid="2784828293747791446">"Төхөрөөмжийн глобал проксиг тохируулах"</string>
- <string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"Бодлого идэвхтэй үед төхөөрөмжийн глобал проксиг ашиглахаар тохируулсан. Зөвхөн эхний төхөөрөмжийн админ л үр дүнтэй глобал проксиг тохируулна."</string>
- <string name="policylab_expirePassword" msgid="885279151847254056">"Дэлгэц түгжих нууц үгний хүчинтэй хугацааг тохируулах"</string>
- <string name="policydesc_expirePassword" msgid="1729725226314691591">"Дэлгэцний түгжих нууц үг хэр давтамжтай солигдохыг удирдах."</string>
- <string name="policylab_encryptedStorage" msgid="8901326199909132915">"Сангийн шифрлэхийг тохируулах"</string>
- <string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Хадгалагдсан апп дата шифрлэгдэх шаардлагатай"</string>
- <string name="policylab_disableCamera" msgid="6395301023152297826">"Камер идэвхгүй болгох"</string>
- <string name="policydesc_disableCamera" msgid="2306349042834754597">"Төхөөрөмжийн бүх камерийг ашиглахгүй."</string>
- <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"Түлхүүр хамгаалтын функцийг унтраах"</string>
- <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"Түлхүүр хамгаалалтын зарим функцийг ашиглахыг хориглох."</string>
- <string-array name="phoneTypes">
- <item msgid="8901098336658710359">"Гэрийн"</item>
- <item msgid="869923650527136615">"Мобайл"</item>
- <item msgid="7897544654242874543">"Ажлын"</item>
- <item msgid="1103601433382158155">"Ажлын факс"</item>
- <item msgid="1735177144948329370">"Гэрийн Факс"</item>
- <item msgid="603878674477207394">"Пэйжер"</item>
- <item msgid="1650824275177931637">"Бусад"</item>
- <item msgid="9192514806975898961">"Тусгай"</item>
- </string-array>
- <string-array name="emailAddressTypes">
- <item msgid="8073994352956129127">"Гэрийн"</item>
- <item msgid="7084237356602625604">"Ажлын"</item>
- <item msgid="1112044410659011023">"Бусад"</item>
- <item msgid="2374913952870110618">"Тусгай"</item>
- </string-array>
- <string-array name="postalAddressTypes">
- <item msgid="6880257626740047286">"Гэрийн"</item>
- <item msgid="5629153956045109251">"Ажлын"</item>
- <item msgid="4966604264500343469">"Бусад"</item>
- <item msgid="4932682847595299369">"Тусгай"</item>
- </string-array>
- <string-array name="imAddressTypes">
- <item msgid="1738585194601476694">"Гэрийн"</item>
- <item msgid="1359644565647383708">"Ажлын"</item>
- <item msgid="7868549401053615677">"Бусад"</item>
- <item msgid="3145118944639869809">"Тусгай"</item>
- </string-array>
- <string-array name="organizationTypes">
- <item msgid="7546335612189115615">"Ажлын"</item>
- <item msgid="4378074129049520373">"Бусад"</item>
- <item msgid="3455047468583965104">"Тусгай"</item>
- </string-array>
- <string-array name="imProtocols">
- <item msgid="8595261363518459565">"AIM"</item>
- <item msgid="7390473628275490700">"Windows Live"</item>
- <item msgid="7882877134931458217">"Yahoo"</item>
- <item msgid="5035376313200585242">"Skype"</item>
- <item msgid="7532363178459444943">"QQ"</item>
- <item msgid="3713441034299660749">"Google Talk"</item>
- <item msgid="2506857312718630823">"ICQ"</item>
- <item msgid="1648797903785279353">"Jabber"</item>
- </string-array>
- <string name="phoneTypeCustom" msgid="1644738059053355820">"Тусгай"</string>
- <string name="phoneTypeHome" msgid="2570923463033985887">"Гэрийн"</string>
- <string name="phoneTypeMobile" msgid="6501463557754751037">"Мобайл"</string>
- <string name="phoneTypeWork" msgid="8863939667059911633">"Ажлын"</string>
- <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Ажлын факс"</string>
- <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Гэрийн Факс"</string>
- <string name="phoneTypePager" msgid="7582359955394921732">"Пэйжер"</string>
- <string name="phoneTypeOther" msgid="1544425847868765990">"Бусад"</string>
- <string name="phoneTypeCallback" msgid="2712175203065678206">"Буцаж холбоо барих"</string>
- <string name="phoneTypeCar" msgid="8738360689616716982">"Машин"</string>
- <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Байгууллагын үндсэн"</string>
- <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
- <string name="phoneTypeMain" msgid="6766137010628326916">"Үндсэн"</string>
- <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Бусад факс"</string>
- <string name="phoneTypeRadio" msgid="4093738079908667513">"Радио"</string>
- <string name="phoneTypeTelex" msgid="3367879952476250512">"Tелекс"</string>
- <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
- <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Ажлын утас"</string>
- <string name="phoneTypeWorkPager" msgid="649938731231157056">"Ажлын пейжер"</string>
- <string name="phoneTypeAssistant" msgid="5596772636128562884">"Туслагч"</string>
- <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
- <string name="eventTypeCustom" msgid="7837586198458073404">"Тусгай"</string>
- <string name="eventTypeBirthday" msgid="2813379844211390740">"Төрсөн огноо"</string>
- <string name="eventTypeAnniversary" msgid="3876779744518284000">"Түүхэн ой"</string>
- <string name="eventTypeOther" msgid="7388178939010143077">"Бусад"</string>
- <string name="emailTypeCustom" msgid="8525960257804213846">"Тусгай"</string>
- <string name="emailTypeHome" msgid="449227236140433919">"Гэрийн"</string>
- <string name="emailTypeWork" msgid="3548058059601149973">"Ажлын"</string>
- <string name="emailTypeOther" msgid="2923008695272639549">"Бусад"</string>
- <string name="emailTypeMobile" msgid="119919005321166205">"Мобайл"</string>
- <string name="postalTypeCustom" msgid="8903206903060479902">"Тусгай"</string>
- <string name="postalTypeHome" msgid="8165756977184483097">"Гэрийн"</string>
- <string name="postalTypeWork" msgid="5268172772387694495">"Ажлын"</string>
- <string name="postalTypeOther" msgid="2726111966623584341">"Бусад"</string>
- <string name="imTypeCustom" msgid="2074028755527826046">"Тусгай"</string>
- <string name="imTypeHome" msgid="6241181032954263892">"Гэрийн"</string>
- <string name="imTypeWork" msgid="1371489290242433090">"Ажлын"</string>
- <string name="imTypeOther" msgid="5377007495735915478">"Бусад"</string>
- <string name="imProtocolCustom" msgid="6919453836618749992">"Тусгай"</string>
- <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
- <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
- <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
- <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
- <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
- <string name="imProtocolGoogleTalk" msgid="493902321140277304">"Цугларалт"</string>
- <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
- <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
- <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
- <string name="orgTypeWork" msgid="29268870505363872">"Ажлын"</string>
- <string name="orgTypeOther" msgid="3951781131570124082">"Бусад"</string>
- <string name="orgTypeCustom" msgid="225523415372088322">"Тусгай"</string>
- <string name="relationTypeCustom" msgid="3542403679827297300">"Тусгай"</string>
- <string name="relationTypeAssistant" msgid="6274334825195379076">"Туслагч"</string>
- <string name="relationTypeBrother" msgid="8757913506784067713">"Ах"</string>
- <string name="relationTypeChild" msgid="1890746277276881626">"Хүүхэд"</string>
- <string name="relationTypeDomesticPartner" msgid="6904807112121122133">"Дотоод Түнш"</string>
- <string name="relationTypeFather" msgid="5228034687082050725">"Эцэг"</string>
- <string name="relationTypeFriend" msgid="7313106762483391262">"Найз"</string>
- <string name="relationTypeManager" msgid="6365677861610137895">"Менежер"</string>
- <string name="relationTypeMother" msgid="4578571352962758304">"Эх"</string>
- <string name="relationTypeParent" msgid="4755635567562925226">"Эцэг эх"</string>
- <string name="relationTypePartner" msgid="7266490285120262781">"Түнш"</string>
- <string name="relationTypeReferredBy" msgid="101573059844135524">"Дурдагдсан"</string>
- <string name="relationTypeRelative" msgid="1799819930085610271">"Хамаатан"</string>
- <string name="relationTypeSister" msgid="1735983554479076481">"Эгч"</string>
- <string name="relationTypeSpouse" msgid="394136939428698117">"Хань"</string>
- <string name="sipAddressTypeCustom" msgid="2473580593111590945">"Тусгай"</string>
- <string name="sipAddressTypeHome" msgid="6093598181069359295">"Гэрийн"</string>
- <string name="sipAddressTypeWork" msgid="6920725730797099047">"Ажлын"</string>
- <string name="sipAddressTypeOther" msgid="4408436162950119849">"Бусад"</string>
- <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"PIN кодыг бичнэ үү"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><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>
- <string name="keyguard_label_text" msgid="861796461028298424">"Тайлах бол Цэсийг дараад 0."</string>
- <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"Яаралтай дугаар"</string>
- <string name="lockscreen_carrier_default" msgid="8963839242565653192">"Үйлчилгээ байхгүй."</string>
- <string name="lockscreen_screen_locked" msgid="7288443074806832904">"Дэлгэц түгжигдсэн."</string>
- <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"Яаралтай дуудлага хийх буюу эсвэл түгжээг тайлах бол цэсийг дарна уу."</string>
- <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"Тайлах бол цэсийг дарна уу."</string>
- <string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"Тайлах хээгээ зурна уу"</string>
- <string name="lockscreen_emergency_call" msgid="5347633784401285225">"Яаралтай дуудлага"</string>
- <string name="lockscreen_return_to_call" msgid="5244259785500040021">"Дуудлагаруу буцах"</string>
- <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"Зөв!"</string>
- <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Дахин оролдох"</string>
- <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Дахин оролдох"</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Нүүрээр түгжээ тайлах оролдлогын тоо дээд хэмжээнээс хэтэрсэн"</string>
- <string name="lockscreen_plugged_in" msgid="8057762828355572315">"Цэнэглэж байна, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_charged" msgid="321635745684060624">"Цэнэглэгдэв"</string>
- <string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_low_battery" msgid="1482873981919249740">"Цэнэглэгчээ холбоно уу."</string>
- <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM карт байхгүй"</string>
- <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Таблет SIM картгүй."</string>
- <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Утсанд SIM карт байхгүй."</string>
- <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"SIM картыг оруулна уу."</string>
- <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM карт байхгүй эсвэл унших боломжгүй. SIM карт оруулна уу."</string>
- <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Ашиглах боломжгүй SIM карт."</string>
- <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Таны SIM карт бүрмөсөн идэвхгүй болов.\n Өөр SIM карт авах бол өөрийн утасгүй үйлчилгээний нийлүүлэгчтэй холбогдоно уу."</string>
- <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Өмнөх бичлэг товч"</string>
- <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Дараагийн бичлэг товч"</string>
- <string name="lockscreen_transport_pause_description" msgid="7659088786780128001">"Түр зогсоох товч"</string>
- <string name="lockscreen_transport_play_description" msgid="5888422938351019426">"Тоглуулах товч"</string>
- <string name="lockscreen_transport_stop_description" msgid="4562318378766987601">"Зогсоох товч"</string>
- <string name="emergency_calls_only" msgid="6733978304386365407">"Зөвхөн яаралтай дуудлага"</string>
- <string name="lockscreen_network_locked_message" msgid="143389224986028501">"Сүлжээ түгжигдсэн"</string>
- <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM карт нь PUK түгжээтэй."</string>
- <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"Хэрэглэгчийн зааврыг харах эсвэл Хэрэглэгчдэд Туслах төвтэй холбоо барина уу."</string>
- <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"SIM карт түгжигдсэн."</string>
- <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"SIM картны түгжээг гаргаж байна…"</string>
- <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"Та тайлах хээг <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу зурлаа. \n\n<xliff:g id="NUMBER_1">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="2725973286239344555">"Та нууц үгээ <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу бичив. \n\n<xliff:g id="NUMBER_1">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"Та PIN кодоо <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу бичив. \n\n<xliff:g id="NUMBER_1">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"Та тайлах хээг <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу зурлаа. <xliff:g id="NUMBER_1">%d</xliff:g> удаа дахин буруу оруулбал, та таблетаа тайлахын тулд Google нэвтрэлтээ ашиглах шаардлагатай болно.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"Та тайлах хээг <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу зурлаа. <xliff:g id="NUMBER_1">%d</xliff:g> удаа дахин буруу оролдвол, та таблетаа тайлахын тулд Google нэвтрэлтээ ашиглах шаардлагатай болно.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"Та таблетыг тайлах гэж <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу оролдлоо. <xliff:g id="NUMBER_1">%d</xliff:g> удаа дахин буруу оролдвол таблет үйлдвэрийн үндсэн утгаараа тохируулагдах ба хэрэглэгчийн дата бүхэлдээ устана."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"Та утсыг тайлах гэж <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу оролдлоо. <xliff:g id="NUMBER_1">%d</xliff:g> удаа дахин буруу оролдвол утас үйлдвэрийн үндсэн утгаараа тохируулагдах ба хэрэглэгчийн дата бүхэлдээ устана."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"Та таблетыг <xliff:g id="NUMBER">%d</xliff:g> удаа тайлах гэж буруу оролдлоо. Таблет одоо үйлдвэрийн үндсэн утгаараа тохируулагдах болно."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"Та утсыг тайлах гэж <xliff:g id="NUMBER">%d</xliff:g> удаа буруу оролдлоо. Утас одоо үйлдвэрийн үндсэн утгаараа тохируулагдах болно."</string>
- <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"<xliff:g id="NUMBER">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"Хээг мартсан уу?"</string>
- <string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"Акаунт тайлах"</string>
- <string name="lockscreen_glogin_too_many_attempts" msgid="2751368605287288808">"Хээ оруулах оролдлого хэт олон"</string>
- <string name="lockscreen_glogin_instructions" msgid="3931816256100707784">"Түгжээг тайлах бол Google акаунтаараа нэвтэрнэ үү."</string>
- <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"Хэрэглэгч (имэйл)"</string>
- <string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">"Нууц үг"</string>
- <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"Нэвтрэх"</string>
- <string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"Хэрэглэгчийн нэр эсвэл нууц үг буруу."</string>
- <string name="lockscreen_glogin_account_recovery_hint" msgid="1696924763690379073">"Хэрэглэгчийн нэр нууц үгээ мартсан уу?\n"<b>"google.com/accounts/recovery"</b>"-д зочилно уу."</string>
- <string name="lockscreen_glogin_checking_password" msgid="7114627351286933867">"Шалгаж байна..."</string>
- <string name="lockscreen_unlock_label" msgid="737440483220667054">"Тайлах"</string>
- <string name="lockscreen_sound_on_label" msgid="9068877576513425970">"Дуу идэвхтэй"</string>
- <string name="lockscreen_sound_off_label" msgid="996822825154319026">"Дууг хаагдсан"</string>
- <string name="lockscreen_access_pattern_start" msgid="3941045502933142847">"Хээ эхэлж байна"</string>
- <string name="lockscreen_access_pattern_cleared" msgid="5583479721001639579">"Хээ цэвэрлэгдэв"</string>
- <string name="lockscreen_access_pattern_cell_added" msgid="6756031208359292487">"Нүд нэмэгдсэн"</string>
- <string name="lockscreen_access_pattern_detected" msgid="4988730895554057058">"Хээ дуусав"</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. %3$d. -н %2$d виджет"</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Виджет нэмэх."</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Хоосон"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Тайлах хэсэг нээгдсэн."</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Тайлах хэсэг хаагдсан."</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> виджет."</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Хэрэглэгч сонгоч"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Статус"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Камер"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Медиа контрол"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Виджет дахин эрэмбэлж эхлэв."</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Виджетийг дахин эрэмбэлж дуусав."</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> виджет устсан."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Түгжээгүй хэсгийг өргөсгөх."</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Тайлах гулсуулалт."</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Тайлах хээ."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Нүүрээр тайлах"</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Тайлах пин."</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Тайлах нууц үг."</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Хээний хэсэг."</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Гулсуулах хэсэг."</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"АБВ"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="granularity_label_character" msgid="7336470535385009523">"тэмдэгт"</string>
- <string name="granularity_label_word" msgid="7075570328374918660">"үг"</string>
- <string name="granularity_label_link" msgid="5815508880782488267">"холбоос"</string>
- <string name="granularity_label_line" msgid="5764267235026120888">"Мөр"</string>
- <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string>
- <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string>
- <string name="factorytest_failed" msgid="5410270329114212041">"Үйлдлвэрийн тест бүтэлгүйтэв"</string>
- <string name="factorytest_not_system" msgid="4435201656767276723">"FACTORY_TEST үйлдэл нь зөвхөн /system/app-д суусан багцуудад дэмжигдэнэ."</string>
- <string name="factorytest_no_action" msgid="872991874799998561">"FACTORY_TEST үйлдлийг хангах багц олдсонгүй."</string>
- <string name="factorytest_reboot" msgid="6320168203050791643">"Дахин асаах"</string>
- <string name="js_dialog_title" msgid="1987483977834603872">"\"<xliff:g id="TITLE">%s</xliff:g>\" хуудас:"</string>
- <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
- <string name="js_dialog_before_unload_title" msgid="2619376555525116593">"Шилжүүлэлтийг бататгах"</string>
- <string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"Энэ хуудсыг орхих"</string>
- <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"Энэ хуудсанд үлдэх"</string>
- <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nТа үнэхээр энэ хуудаснаас гармаар байна уу?"</string>
- <string name="save_password_label" msgid="6860261758665825069">"Баталгаажуулах"</string>
- <string name="double_tap_toast" msgid="4595046515400268881">"Зөвлөмж: Өсгөх бол давхар товшино уу."</string>
- <string name="autofill_this_form" msgid="4616758841157816676">"Автомат бичих"</string>
- <string name="setup_autofill" msgid="7103495070180590814">"Автомат дүүргэлтийг тохируулах"</string>
- <string name="autofill_address_name_separator" msgid="6350145154779706772">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3268041054899214945">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="7483307893170324129">", "</string>
- <string name="autofill_address_summary_format" msgid="4874459455786827344">"$1$2$3"</string>
- <string name="autofill_province" msgid="2231806553863422300">"Муж"</string>
- <string name="autofill_postal_code" msgid="4696430407689377108">"Шуудангийн код"</string>
- <string name="autofill_state" msgid="6988894195520044613">"Муж"</string>
- <string name="autofill_zip_code" msgid="8697544592627322946">"ZIP код"</string>
- <string name="autofill_county" msgid="237073771020362891">"Муж"</string>
- <string name="autofill_island" msgid="4020100875984667025">"Арал"</string>
- <string name="autofill_district" msgid="8400735073392267672">"Дүүрэг"</string>
- <string name="autofill_department" msgid="5343279462564453309">"Хэлтэс"</string>
- <string name="autofill_prefecture" msgid="2028499485065800419">"Муж"</string>
- <string name="autofill_parish" msgid="8202206105468820057">"Мөргөлч"</string>
- <string name="autofill_area" msgid="3547409050889952423">"Хэсэг"</string>
- <string name="autofill_emirate" msgid="2893880978835698818">"Эмират"</string>
- <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"өөрийн Веб хавчуурга болон түүхийг унших"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="8462378226600439658">"Апп нь Хөтчийн зочилж байсан бүх URL-н түүх болон Хөтчийн бүх хавчуургыг унших боломжтой. Анхаар: Энэ зөвшөөрөл нь гуравдагч талын хөтөч эсвэл вебээр хөтөчлөх чадавхтай аппликешнүүдэд ашиглагдахгүй байх боломжтой."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"веб хавчуурга болон түүхийг бичих"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="6825527469145760922">"Апп нь таны таблет дээр хадгалагдсан Хөтчийн түүх эсвэл хавчуургыг өөрчлөх боломжтой. Энэ нь апп-д Хөтчийн датаг арилгах эсвэл өөрчлөх боломжийг олгоно. Анхаар: Энэ зөвшөөрөл нь гуравдагч талын хөтөч эсвэл вебээр хөтөчлөх чадвартай аппликешнд ажиллахгүй байх боломжтой."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"Апп нь таны утсан дээр хадгалагдсан Хөтчийн түүх эсвэл хавчуургыг өөрчлөх боломжтой. Энэ нь апп-д Хөтчийн датаг арилгах эсвэл өөрчлөх боломжийг олгоно. Анхаар: Энэ зөвшөөрөл нь гуравдагч талын хөтөч эсвэл вебээр хөтөчлөх чадвартай аппликешнд ажиллахгүй байх боломжтой."</string>
- <string name="permlab_setAlarm" msgid="1379294556362091814">"сэрүүлэг тохируулах"</string>
- <string name="permdesc_setAlarm" msgid="316392039157473848">"Апп нь суулгагдсан сэрүүлэгний апп дээр сэрүүлэг тохируулах боломжтой. Зарим сэрүүлэгний апп нь энэ функцийг дэмжихгүй байж болзошгүй."</string>
- <string name="permlab_addVoicemail" msgid="5525660026090959044">"дуут шуудан нэмэх"</string>
- <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Апп нь таны дуут шуудангийн ирсэн мэйлд мессеж нэмэх боломжтой."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"Хөтчийн геобайршлын зөвшөөрлийг өөрчлөх"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"Апп нь Хөтчийн гео байршлын зөвшөөрлийг өөрчлөх боломжтой. Хортой апп нь энийг ашиглан дурын веб хуудасруу байршлын мэдээллийг илгээх боломжтой."</string>
- <string name="permlab_packageVerificationAgent" msgid="5568139100645829117">"багцийг тулгах"</string>
- <string name="permdesc_packageVerificationAgent" msgid="8437590190990843381">"Апп нь багцыг суулгаж болох эсэхийг шалгах боломжтой."</string>
- <string name="permlab_bindPackageVerifier" msgid="4187786793360326654">"багц тулгагчтэй холбох"</string>
- <string name="permdesc_bindPackageVerifier" msgid="3180741773233862126">"Эзэмшигч нь багц тулгагчдад хүсэлт тавих боломжтой. Энгийн апп-д хэрэглэгдэхгүй."</string>
- <string name="permlab_serialPort" msgid="546083327654631076">"сериал портруу хандах"</string>
- <string name="permdesc_serialPort" msgid="2991639985224598193">"Эзэмшигч нь SerialManager API ашиглан сериал портод хандах боломжтой."</string>
- <string name="permlab_accessContentProvidersExternally" msgid="5077774297943409285">"контент нийлүүлэгчид гаднаас хандах"</string>
- <string name="permdesc_accessContentProvidersExternally" msgid="4544346486697853685">"Эзэмшигч нь шелээс контент нийлүүлэгчид хандах боломжтой. Энгийн апп-с хэрэглэхгүй."</string>
- <string name="permlab_updateLock" msgid="3527558366616680889">"төхөөрөмжийн автомат шинэчлэлтийг хориглох"</string>
- <string name="permdesc_updateLock" msgid="1655625832166778492">"Эзэмшигч нь төхөөрөмжийг дэвшүүлэхээр хэзээ дахин асаавал тохирох тухай системд мэдээлэл санал болгох боломжтой."</string>
- <string name="save_password_message" msgid="767344687139195790">"Та хөтчид энэ нууц үгийг сануулах уу?"</string>
- <string name="save_password_notnow" msgid="6389675316706699758">"Одоо биш"</string>
- <string name="save_password_remember" msgid="6491879678996749466">"Санах"</string>
- <string name="save_password_never" msgid="8274330296785855105">"Хэзээ ч үгүй"</string>
- <string name="open_permission_deny" msgid="7374036708316629800">"Танд энэ хуудсыг нээх зөвшөөрөл байхгүй."</string>
- <string name="text_copied" msgid="4985729524670131385">"Текст хуулагдав."</string>
- <string name="more_item_label" msgid="4650918923083320495">"Илүү"</string>
- <string name="prepend_shortcut_label" msgid="2572214461676015642">"Цэс+"</string>
- <string name="menu_space_shortcut_label" msgid="2410328639272162537">"зай"</string>
- <string name="menu_enter_shortcut_label" msgid="2743362785111309668">"оруулах"</string>
- <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"устгах"</string>
- <string name="search_go" msgid="8298016669822141719">"Хайх"</string>
- <string name="searchview_description_search" msgid="6749826639098512120">"Хайх"</string>
- <string name="searchview_description_query" msgid="5911778593125355124">"Хайх асуулга"</string>
- <string name="searchview_description_clear" msgid="1330281990951833033">"Асуулгыг цэвэрлэх"</string>
- <string name="searchview_description_submit" msgid="2688450133297983542">"Асуулгыг илгээх"</string>
- <string name="searchview_description_voice" msgid="2453203695674994440">"Дуут хайлт"</string>
- <string name="enable_explore_by_touch_warning_title" msgid="7460694070309730149">"Хүрч хайх функцийг идэвхтэй болгох уу?"</string>
- <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="8655887539089910577">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> нь Хүрч танихыг идэвхжүүлэхийг шаардаж байна. Хүрч таних идэвхжсэн үед та хуруун доороо юу байгааг сонсох, тайлбарыг харах боломжтой ба таблеттайгаа дохиогоор харилцах боломжтой."</string>
- <string name="enable_explore_by_touch_warning_message" product="default" msgid="2708199672852373195">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> нь Хүрч танихыг идэвхжүүлэхийг шаардаж байна. Хүрч таних идэвхжсэн тохиолдолд та хуруун доороо юу байгааг сонсох, тайлбарыг харах боломжтой ба утастайгаа дохиогоор харилцах боломжтой."</string>
- <string name="oneMonthDurationPast" msgid="7396384508953779925">"1 сарын өмнө"</string>
- <string name="beforeOneMonthDurationPast" msgid="909134546836499826">"1 сарын өмнө"</string>
- <plurals name="num_seconds_ago">
- <item quantity="one" msgid="4869870056547896011">"1 секундын өмнө"</item>
- <item quantity="other" msgid="3903706804349556379">"<xliff:g id="COUNT">%d</xliff:g> секундын өмнө"</item>
- </plurals>
- <plurals name="num_minutes_ago">
- <item quantity="one" msgid="3306787433088810191">"1 минутын өмнө"</item>
- <item quantity="other" msgid="2176942008915455116">"<xliff:g id="COUNT">%d</xliff:g> минутын өмнө"</item>
- </plurals>
- <plurals name="num_hours_ago">
- <item quantity="one" msgid="9150797944610821849">"1 цагийн өмнө"</item>
- <item quantity="other" msgid="2467273239587587569">"<xliff:g id="COUNT">%d</xliff:g> цагийн өмнө"</item>
- </plurals>
- <plurals name="last_num_days">
- <item quantity="other" msgid="3069992808164318268">"Сүүлийн <xliff:g id="COUNT">%d</xliff:g> өдөр"</item>
- </plurals>
- <string name="last_month" msgid="3959346739979055432">"Сүүлийн сар"</string>
- <string name="older" msgid="5211975022815554840">"Хуучин"</string>
- <plurals name="num_days_ago">
- <item quantity="one" msgid="861358534398115820">"өчигдөр"</item>
- <item quantity="other" msgid="2479586466153314633">"<xliff:g id="COUNT">%d</xliff:g> өдрийн өмнө"</item>
- </plurals>
- <plurals name="in_num_seconds">
- <item quantity="one" msgid="2729745560954905102">"1 секундын дараа"</item>
- <item quantity="other" msgid="1241926116443974687">"<xliff:g id="COUNT">%d</xliff:g> секундын дараа"</item>
- </plurals>
- <plurals name="in_num_minutes">
- <item quantity="one" msgid="8793095251325200395">"1 минутын дараа"</item>
- <item quantity="other" msgid="3330713936399448749">"<xliff:g id="COUNT">%d</xliff:g> минутын дараа"</item>
- </plurals>
- <plurals name="in_num_hours">
- <item quantity="one" msgid="7164353342477769999">"1 цагийн дараа"</item>
- <item quantity="other" msgid="547290677353727389">"<xliff:g id="COUNT">%d</xliff:g> цагийн дараа"</item>
- </plurals>
- <plurals name="in_num_days">
- <item quantity="one" msgid="5413088743009839518">"маргааш"</item>
- <item quantity="other" msgid="5109449375100953247">"<xliff:g id="COUNT">%d</xliff:g> өдрийн дараа"</item>
- </plurals>
- <plurals name="abbrev_num_seconds_ago">
- <item quantity="one" msgid="1849036840200069118">"1 секундын өмнө"</item>
- <item quantity="other" msgid="3699169366650930415">"<xliff:g id="COUNT">%d</xliff:g> сек дараа"</item>
- </plurals>
- <plurals name="abbrev_num_minutes_ago">
- <item quantity="one" msgid="6361490147113871545">"1 мин өмнө"</item>
- <item quantity="other" msgid="851164968597150710">"<xliff:g id="COUNT">%d</xliff:g> минутын өмнө"</item>
- </plurals>
- <plurals name="abbrev_num_hours_ago">
- <item quantity="one" msgid="4796212039724722116">"1 цагийн өмнө"</item>
- <item quantity="other" msgid="6889970745748538901">"<xliff:g id="COUNT">%d</xliff:g> цагийн өмнө"</item>
- </plurals>
- <plurals name="abbrev_num_days_ago">
- <item quantity="one" msgid="8463161711492680309">"өчигдөр"</item>
- <item quantity="other" msgid="3453342639616481191">"<xliff:g id="COUNT">%d</xliff:g> өдрийн өмнө"</item>
- </plurals>
- <plurals name="abbrev_in_num_seconds">
- <item quantity="one" msgid="5842225370795066299">"1 сек дараа"</item>
- <item quantity="other" msgid="5495880108825805108">"<xliff:g id="COUNT">%d</xliff:g> сек дараа"</item>
- </plurals>
- <plurals name="abbrev_in_num_minutes">
- <item quantity="one" msgid="562786149928284878">"1 мин дараа"</item>
- <item quantity="other" msgid="4216113292706568726">"<xliff:g id="COUNT">%d</xliff:g> минутын дараа"</item>
- </plurals>
- <plurals name="abbrev_in_num_hours">
- <item quantity="one" msgid="3274708118124045246">"1 цагийн дараа"</item>
- <item quantity="other" msgid="3705373766798013406">"<xliff:g id="COUNT">%d</xliff:g> цагийн дараа"</item>
- </plurals>
- <plurals name="abbrev_in_num_days">
- <item quantity="one" msgid="2178576254385739855">"маргааш"</item>
- <item quantity="other" msgid="2973062968038355991">"<xliff:g id="COUNT">%d</xliff:g> өдрийн дараа"</item>
- </plurals>
- <string name="preposition_for_date" msgid="9093949757757445117">"<xliff:g id="DATE">%s</xliff:g>"</string>
- <string name="preposition_for_time" msgid="5506831244263083793">"<xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="preposition_for_year" msgid="5040395640711867177">"<xliff:g id="YEAR">%s</xliff:g>"</string>
- <string name="day" msgid="8144195776058119424">"өдөр"</string>
- <string name="days" msgid="4774547661021344602">"өдөр"</string>
- <string name="hour" msgid="2126771916426189481">"цаг"</string>
- <string name="hours" msgid="894424005266852993">"цаг"</string>
- <string name="minute" msgid="9148878657703769868">"мин"</string>
- <string name="minutes" msgid="5646001005827034509">"минут"</string>
- <string name="second" msgid="3184235808021478">"сек"</string>
- <string name="seconds" msgid="3161515347216589235">"сек"</string>
- <string name="week" msgid="5617961537173061583">"7 хоног"</string>
- <string name="weeks" msgid="6509623834583944518">"7 хоног"</string>
- <string name="year" msgid="4001118221013892076">"жил"</string>
- <string name="years" msgid="6881577717993213522">"жил"</string>
- <plurals name="duration_seconds">
- <item quantity="one" msgid="6962015528372969481">"1 секунд"</item>
- <item quantity="other" msgid="1886107766577166786">"<xliff:g id="COUNT">%d</xliff:g> секунд"</item>
- </plurals>
- <plurals name="duration_minutes">
- <item quantity="one" msgid="4915414002546085617">"1 минут"</item>
- <item quantity="other" msgid="3165187169224908775">"<xliff:g id="COUNT">%d</xliff:g> минут"</item>
- </plurals>
- <plurals name="duration_hours">
- <item quantity="one" msgid="8917467491248809972">"1 цаг"</item>
- <item quantity="other" msgid="3863962854246773930">"<xliff:g id="COUNT">%d</xliff:g> цаг"</item>
- </plurals>
- <string name="VideoView_error_title" msgid="3534509135438353077">"Видео алдаа"</string>
- <string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Энэ видео энэ төхөөрөмж дээр урсгалаар гарч чадахгүй."</string>
- <string name="VideoView_error_text_unknown" msgid="3450439155187810085">"Энэ видеог тоглуулах боломжгүй."</string>
- <string name="VideoView_error_button" msgid="2822238215100679592">"Тийм"</string>
- <string name="relative_time" msgid="1818557177829411417">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
- <string name="noon" msgid="7245353528818587908">"үд"</string>
- <string name="Noon" msgid="3342127745230013127">"Үд"</string>
- <string name="midnight" msgid="7166259508850457595">"шөнө дунд"</string>
- <string name="Midnight" msgid="5630806906897892201">"Шөнө дунд"</string>
- <string name="elapsed_time_short_format_mm_ss" msgid="4431555943828711473">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
- <string name="elapsed_time_short_format_h_mm_ss" msgid="1846071997616654124">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
- <string name="selectAll" msgid="6876518925844129331">"Бүгдийг сонгох"</string>
- <string name="cut" msgid="3092569408438626261">"Таслах"</string>
- <string name="copy" msgid="2681946229533511987">"Хуулах"</string>
- <string name="paste" msgid="5629880836805036433">"Буулгах"</string>
- <string name="replace" msgid="5781686059063148930">"Орлуулах…"</string>
- <string name="delete" msgid="6098684844021697789">"Устгах"</string>
- <string name="copyUrl" msgid="2538211579596067402">"URL хуулах"</string>
- <string name="selectTextMode" msgid="1018691815143165326">"Текст сонгох"</string>
- <string name="textSelectionCABTitle" msgid="5236850394370820357">"Текст сонгох"</string>
- <string name="addToDictionary" msgid="4352161534510057874">"Толь бичигт нэмэх"</string>
- <string name="deleteText" msgid="6979668428458199034">"Устгах"</string>
- <string name="inputMethod" msgid="1653630062304567879">"Оруулах арга"</string>
- <string name="editTextMenuTitle" msgid="4909135564941815494">"Текст үйлдэл"</string>
- <string name="low_internal_storage_view_title" msgid="5576272496365684834">"Сангийн хэмжээ дутагдаж байна"</string>
- <string name="low_internal_storage_view_text" msgid="6640505817617414371">"Зарим систем функц ажиллахгүй байна"</string>
- <string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ажиллаж байна"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"Илүү мэдээлэл авах бол хүрэх эсвэл апп-г зогсооно уу ."</string>
- <string name="ok" msgid="5970060430562524910">"Тийм"</string>
- <string name="cancel" msgid="6442560571259935130">"Цуцлах"</string>
- <string name="yes" msgid="5362982303337969312">"Тийм"</string>
- <string name="no" msgid="5141531044935541497">"Цуцлах"</string>
- <string name="dialog_alert_title" msgid="2049658708609043103">"Анхаар"</string>
- <string name="loading" msgid="7933681260296021180">"Ачааллаж байна..."</string>
- <string name="capital_on" msgid="1544682755514494298">"Идэвхтэй"</string>
- <string name="capital_off" msgid="6815870386972805832">"Идэвхгүй"</string>
- <string name="whichApplication" msgid="4533185947064773386">"Үйлдлийг дуусгах"</string>
- <string name="alwaysUse" msgid="4583018368000610438">"Энэ ажиллагааг үндсэн болгох."</string>
- <string name="clearDefaultHintMsg" msgid="3252584689512077257">"Систем тохиргоо &gt; Апп &gt; Татаж авсан хэсгийн үндсэн утгуудыг цэвэрлэх"</string>
- <string name="chooseActivity" msgid="7486876147751803333">"Үйлдэл сонгох"</string>
- <string name="chooseUsbActivity" msgid="6894748416073583509">"USB төхөөрөмжийн апп-г сонгох"</string>
- <string name="noApplications" msgid="2991814273936504689">"Энэ ажиллагааг гүйцэтгэх апп байхгүй."</string>
- <string name="aerr_title" msgid="1905800560317137752"></string>
- <string name="aerr_application" msgid="932628488013092776">"Харамсалтай, <xliff:g id="APPLICATION">%1$s</xliff:g> зогссон."</string>
- <string name="aerr_process" msgid="4507058997035697579">"Харамсалтай нь <xliff:g id="PROCESS">%1$s</xliff:g> процесс зогссон."</string>
- <string name="anr_title" msgid="4351948481459135709"></string>
- <string name="anr_activity_application" msgid="1904477189057199066">"<xliff:g id="APPLICATION">%2$s</xliff:g> хариу өгөхгүй байна.\n\nТа хаамаар байна уу?"</string>
- <string name="anr_activity_process" msgid="5776209883299089767">"<xliff:g id="ACTIVITY">%1$s</xliff:g> активити хариу өгөхгүй байна.\n\nТа энийг хаах уу?"</string>
- <string name="anr_application_process" msgid="8941757607340481057">"<xliff:g id="APPLICATION">%1$s</xliff:g> хариу өгөхгүй байна. Та энийг хаамаар байна уу?"</string>
- <string name="anr_process" msgid="6513209874880517125">"<xliff:g id="PROCESS">%1$s</xliff:g> процесс хариу өгөхгүй байн.\n\nТа хаамаар байна уу?"</string>
- <string name="force_close" msgid="8346072094521265605">"Тийм"</string>
- <string name="report" msgid="4060218260984795706">"Мэдэгдэх"</string>
- <string name="wait" msgid="7147118217226317732">"Хүлээх"</string>
- <string name="webpage_unresponsive" msgid="3272758351138122503">"Хуудас хариу өгөхгүй байна.\n\nТа энийг хаах уу?"</string>
- <string name="launch_warning_title" msgid="1547997780506713581">"Aпп дахин чиглүүлэгдэв"</string>
- <string name="launch_warning_replace" msgid="6202498949970281412">"<xliff:g id="APP_NAME">%1$s</xliff:g> одоо ажиллаж байна."</string>
- <string name="launch_warning_original" msgid="188102023021668683">"<xliff:g id="APP_NAME">%1$s</xliff:g> ажиллав."</string>
- <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Цар хэмжээ"</string>
- <string name="screen_compat_mode_show" msgid="4013878876486655892">"Байнга харуулах"</string>
- <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Энийг Системийн тохиргоо &gt; Апп &gt; Татаж авсан дотроос дахин идэвхтэй болгох боломжтой."</string>
- <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> апп (<xliff:g id="PROCESS">%2$s</xliff:g> процесс) өөрийнхөө StrictMode бодлогыг зөрчив."</string>
- <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> процесс өөрийнхөө StrictMode бодлогыг зөрчив."</string>
- <string name="android_upgrading_title" msgid="1584192285441405746">"Андройдыг дэвшүүлж байна…"</string>
- <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>-н <xliff:g id="NUMBER_0">%1$d</xliff:g> апп-г тохируулж байна."</string>
- <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>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Апп сэлгэх бол хүрнэ үү"</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>
- <string name="old_app_description" msgid="2082094275580358049">"Шинэ апп-г эхлүүлж болохгүй."</string>
- <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="sendText" msgid="5209874571959469142">"Текст илгээх үйлдлийг сонгох"</string>
- <string name="volume_ringtone" msgid="6885421406845734650">"Хонхны аяны хэмжээ"</string>
- <string name="volume_music" msgid="5421651157138628171">"Медиа дууны хэмжээ"</string>
- <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"Блютүүтээр тоглож байна"</string>
- <string name="volume_music_hint_silent_ringtone_selected" msgid="8310739960973156272">"Хонхны дууг чимээгүй болгов"</string>
- <string name="volume_call" msgid="3941680041282788711">"Ирсэн дуудлагын дууны хэмжээ"</string>
- <string name="volume_bluetooth_call" msgid="2002891926351151534">"Блютүүт ирсэн дуудлагын дууны хэмжээ"</string>
- <string name="volume_alarm" msgid="1985191616042689100">"Сэрүүлгийн дууны хэмжээ"</string>
- <string name="volume_notification" msgid="2422265656744276715">"Мэдэгдлийн дууны хэмжээ"</string>
- <string name="volume_unknown" msgid="1400219669770445902">"Дууны хэмжээ"</string>
- <string name="volume_icon_description_bluetooth" msgid="6538894177255964340">"Блютүүтын хэмжээ"</string>
- <string name="volume_icon_description_ringer" msgid="3326003847006162496">"Хонхны дууны хэмжээ"</string>
- <string name="volume_icon_description_incall" msgid="8890073218154543397">"Дуудлагын дууны хэмжээ"</string>
- <string name="volume_icon_description_media" msgid="4217311719665194215">"Медиа дууны хэмжээ"</string>
- <string name="volume_icon_description_notification" msgid="7044986546477282274">"Мэдэгдлийн дууны хэмжээ"</string>
- <string name="ringtone_default" msgid="3789758980357696936">"Үндсэн хонхны ая"</string>
- <string name="ringtone_default_with_actual" msgid="8129563480895990372">"Үндсэн хонхны ая (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
- <string name="ringtone_silent" msgid="7937634392408977062">"Алийг нь ч биш"</string>
- <string name="ringtone_picker_title" msgid="3515143939175119094">"Хонхны ая"</string>
- <string name="ringtone_unknown" msgid="5477919988701784788">"Үл мэдэгдэх хонхны ая"</string>
- <plurals name="wifi_available">
- <item quantity="one" msgid="6654123987418168693">"Wi-Fi сүлжээ ашиглах боломжтой"</item>
- <item quantity="other" msgid="4192424489168397386">"Wi-Fi сүлжээ ашиглах боломжгүй"</item>
- </plurals>
- <plurals name="wifi_available_detailed">
- <item quantity="one" msgid="1634101450343277345">"Нээллтэй Wi-Fi сүлжээ ашиглах боломжтой"</item>
- <item quantity="other" msgid="7915895323644292768">"Нээлттэй Wi-Fi сүлжээ ашиглах боломжтой"</item>
- </plurals>
- <string name="wifi_available_sign_in" msgid="4029489716605255386">"Wi-Fi сүлжээнд нэвтэрнэ үү"</string>
- <string name="network_available_sign_in" msgid="8495155593358054676">"Сүлжээнд нэвтрэх"</string>
- <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
- <skip />
- <string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi-д холбогдож чадсангүй"</string>
- <string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" Интернет холболт муу байна."</string>
- <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"Wi-Fi Шууд"</string>
- <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>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"Тохируулах бол хүрнэ үү"</string>
- <string name="accept" msgid="1645267259272829559">"Зөвшөөрөх"</string>
- <string name="decline" msgid="2112225451706137894">"Татгалзах"</string>
- <string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Урилга илгээгдсэн"</string>
- <string name="wifi_p2p_invitation_to_connect_title" msgid="4958803948658533637">"Холбох урилга"</string>
- <string name="wifi_p2p_from_message" msgid="570389174731951769">"Хэнээс:"</string>
- <string name="wifi_p2p_to_message" msgid="248968974522044099">"Хэнд:"</string>
- <string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"Шаардлагатай PIN-г бичнэ үү:"</string>
- <string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="tablet" msgid="8012981257742232475">"Таблет <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-тэй холбогдох үедээ түр зуур Wi-Fi-с салах болно."</string>
- <string name="wifi_p2p_frequency_conflict_message" product="default" msgid="7363907213787469151">"Утас <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-тай холбогдох үедээ түр зуур Wi-Fi-с салах болно."</string>
- <string name="select_character" msgid="3365550120617701745">"Тэмдэгт оруулах"</string>
- <string name="sms_control_title" msgid="7296612781128917719">"SMS мессеж илгээж байна"</string>
- <string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; их хэмжээний SMS мессежийг илгээж байна. Та энэ апп-д үргэлжлүүлэн мессеж илгээхийг зөвшөөрөх үү?"</string>
- <string name="sms_control_yes" msgid="3663725993855816807">"Зөвшөөрөх"</string>
- <string name="sms_control_no" msgid="625438561395534982">"Татгалзах"</string>
- <string name="sms_short_code_confirm_message" msgid="1645436466285310855">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; нь &lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;/b&gt; уруу мессеж илгээх гэж байна."</string>
- <string name="sms_short_code_details" msgid="3492025719868078457">"Энэ таны мобайл акаунтад "<font fgcolor="#ffffb060">"төлбөр гаргаж"</font>" болзошгүй."</string>
- <string name="sms_premium_short_code_details" msgid="5523826349105123687"><font fgcolor="#ffffb060">"Энэ таны мобайл акаунтад төлбөр гаргах болно."</font></string>
- <string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"Илгээх"</string>
- <string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"Цуцлах"</string>
- <string name="sms_short_code_remember_choice" msgid="5289538592272218136">"Миний сонголтыг санах"</string>
- <string name="sms_short_code_remember_undo_instruction" msgid="4960944133052287484">"Та дараа энийг Тохиргоо &gt; Апп дотроос солих боломжтой"</string>
- <string name="sms_short_code_confirm_always_allow" msgid="3241181154869493368">"Байнга зөвшөөрөх"</string>
- <string name="sms_short_code_confirm_never_allow" msgid="446992765774269673">"Хэзээ ч зөвшөөрөхгүй"</string>
- <string name="sim_removed_title" msgid="6227712319223226185">"SIM карт хасагдсан"</string>
- <string name="sim_removed_message" msgid="2333164559970958645">"Зөв SIM карт хийгээд дахин асаатал та мобайл сүлжээг ашиглах боломжгүй."</string>
- <string name="sim_done_button" msgid="827949989369963775">"Дуусгах"</string>
- <string name="sim_added_title" msgid="3719670512889674693">"SIM карт нэмэгдсэн"</string>
- <string name="sim_added_message" msgid="6599945301141050216">"Мобайл сүлжээнд хандах бол төхөөрөмжөө дахин асаан уу."</string>
- <string name="sim_restart_button" msgid="4722407842815232347">"Дахин эхлүүлэх"</string>
- <string name="time_picker_dialog_title" msgid="8349362623068819295">"Цагийн тохируулах"</string>
- <string name="date_picker_dialog_title" msgid="5879450659453782278">"Огноо оруулах"</string>
- <string name="date_time_set" msgid="5777075614321087758">"Тохируулах"</string>
- <string name="date_time_done" msgid="2507683751759308828">"Дуусгах"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"ШИНЭ: "</font></string>
- <string name="perms_description_app" msgid="5139836143293299417">"<xliff:g id="APP_NAME">%1$s</xliff:g> өгсөн."</string>
- <string name="no_permissions" msgid="7283357728219338112">"Зөвшөөрөл шаардахгүй"</string>
- <string name="perm_costs_money" msgid="4902470324142151116">"Энэ таныг төлбөрт оруулж болзошгүй"</string>
- <string name="usb_storage_activity_title" msgid="4465055157209648641">"USB масс сан"</string>
- <string name="usb_storage_title" msgid="5901459041398751495">"USB холбогдсон"</string>
- <string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Та өөрийн компьютертээ USB-р холбогдсон байна. Хэрэв та өөрийн компьютер болон өөрийн Андройдын USB сан хооронд файл хуулах бол доорх товчинд хүрнэ үү."</string>
- <string name="usb_storage_message" product="default" msgid="805351000446037811">"Та өөрийн компьютертээ USB-р холбогдсон байна. Хэрэв та өөрийн компьютер болон өөрийн Андройдын USB сан хооронд файл хуулах бол доорх товчинд хүрнэ үү."</string>
- <string name="usb_storage_button_mount" msgid="1052259930369508235">"USB санг асаах"</string>
- <string name="usb_storage_error_message" product="nosdcard" msgid="3017045217365540658">"USB санг USB масс сан болгон ашиглахад алдаа гарав."</string>
- <string name="usb_storage_error_message" product="default" msgid="2876018512716970313">"SD картыг USB масс сан болгон ашиглахад алдаа гарав."</string>
- <string name="usb_storage_notification_title" msgid="8175892554757216525">"USB холбогдсон"</string>
- <string name="usb_storage_notification_message" msgid="939822783828183763">"Өөрийн компьютер- ээс/луу файл хуулах бол хүрнэ үү"</string>
- <string name="usb_storage_stop_notification_title" msgid="2336058396663516017">"USB санг унтраах"</string>
- <string name="usb_storage_stop_notification_message" msgid="1656852098555623822">"USB санг унтраах бол хүрнэ үү."</string>
- <string name="usb_storage_stop_title" msgid="660129851708775853">"USB сан ашиглагдаж байна"</string>
- <string name="usb_storage_stop_message" product="nosdcard" msgid="4264025280777219521">"USB санг унтраахаас өмнө өөрийн Андройдын SD картыг компьютерээсээ салгана(\"гаргана\") уу."</string>
- <string name="usb_storage_stop_message" product="default" msgid="8043969782460613114">"USB санг унтраахаас өмнө өөрийн Андройдын SD картыг компьютерээсээ салгана(\"гаргана\") уу."</string>
- <string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"USB санг унтраах"</string>
- <string name="usb_storage_stop_error_message" msgid="1970374898263063836">"USB санг унтраахад алдаа гарав. USB хостоо салгасан эсэхээ шалгаад дахин оролдоно уу."</string>
- <string name="dlg_confirm_kill_storage_users_title" msgid="963039033470478697">"USB санг асаах"</string>
- <string name="dlg_confirm_kill_storage_users_text" msgid="5100428757107469454">"Хэрэв та USB санг асуувал таны ашиглаж байга зарим апп зогсох ба та USB сангаа унтраатал ашиглах боломжгүй байж болзошгүй."</string>
- <string name="dlg_error_title" msgid="7323658469626514207">"USB ажиллагаа бүтэлгүйтэв"</string>
- <string name="dlg_ok" msgid="7376953167039865701">"Тийм"</string>
- <string name="usb_mtp_notification_title" msgid="3699913097391550394">"Медиа төхөөрөмж болон холбогдов"</string>
- <string name="usb_ptp_notification_title" msgid="1960817192216064833">"Камер болгон холбов"</string>
- <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Суулгагч болгон холбогдсон"</string>
- <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB төхөөрөмжид холбогдов"</string>
- <string name="usb_notification_message" msgid="2290859399983720271">"Бусад USB сонголт хийх бол хүрнэ үү."</string>
- <string name="extmedia_format_title" product="nosdcard" msgid="9020092196061007262">"USB санг форматлах уу?"</string>
- <string name="extmedia_format_title" product="default" msgid="3648415921526526069">"SD картыг форматлах уу?"</string>
- <string name="extmedia_format_message" product="nosdcard" msgid="3934016853425761078">"Таны USB санд хадгалагдсан бүх файл арилгагдана. Энэ үйлдлийг буцаах боломжгүй!"</string>
- <string name="extmedia_format_message" product="default" msgid="14131895027543830">"Таны картан дээрх бүх дата устах болно."</string>
- <string name="extmedia_format_button_format" msgid="4131064560127478695">"Форматлах"</string>
- <string name="adb_active_notification_title" msgid="6729044778949189918">"USB дебаг холбогдсон"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB дебаг хийхийг идэвхгүй болгох бол хүрнэ үү."</string>
- <string name="select_input_method" msgid="4653387336791222978">"Оруулах аргыг сонгоно уу"</string>
- <string name="configure_input_methods" msgid="9091652157722495116">"Оруулах аргыг тохируулах"</string>
- <string name="use_physical_keyboard" msgid="6203112478095117625">"Бодит гар"</string>
- <string name="hardware" msgid="7517821086888990278">"Хардвер"</string>
- <string name="select_keyboard_layout_notification_title" msgid="1407367017263030773">"Гарын схемийг сонгох"</string>
- <string name="select_keyboard_layout_notification_message" msgid="4465907700449257063">"Гарын схемийг сонгох бол хүрнэ үү."</string>
- <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="candidates_style" msgid="4333913089637062257"><u>"нэр дэвшигч"</u></string>
- <string name="ext_media_checking_notification_title" product="nosdcard" msgid="3449816005351468560">"USB санг бэлдэж байна"</string>
- <string name="ext_media_checking_notification_title" product="default" msgid="5457603418970994050">"SD карт бэлдэж байна"</string>
- <string name="ext_media_checking_notification_message" msgid="8287319882926737053">"Алдааг шалгаж байна."</string>
- <string name="ext_media_nofs_notification_title" product="nosdcard" msgid="7788040745686229307">"Хоосон USB сан"</string>
- <string name="ext_media_nofs_notification_title" product="default" msgid="780477838241212997">"Хоосон SD карт"</string>
- <string name="ext_media_nofs_notification_message" product="nosdcard" msgid="7840121067427269500">"USB сан хоосон эсвэл дэмжигдэхгүй файл системтэй."</string>
- <string name="ext_media_nofs_notification_message" product="default" msgid="8641065641786923604">"SD карт хоосон эсвэл дэмжигдэхгүй файл систем."</string>
- <string name="ext_media_unmountable_notification_title" product="nosdcard" msgid="2090046769532713563">"Гэмтсэн USB сан"</string>
- <string name="ext_media_unmountable_notification_title" product="default" msgid="6410723906019100189">"Гэмтсэн SD карт"</string>
- <string name="ext_media_unmountable_notification_message" product="nosdcard" msgid="1795917578395333280">"USB сан гэмтсэн байна. Дахин форматлаж үзнэ үү."</string>
- <string name="ext_media_unmountable_notification_message" product="default" msgid="1753898567525568253">"SD карт гэмтсэн байна. Дахин форматлаж үзнэ үү."</string>
- <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"USB санг санамсаргүй хасагдав"</string>
- <string name="ext_media_badremoval_notification_title" product="default" msgid="6872152882604407837">"SD карт санамсаргүй хасагдав"</string>
- <string name="ext_media_badremoval_notification_message" product="nosdcard" msgid="4329848819865594241">"Дата хохирлоос сэргийлж USB санг сугалахаасаа өмнө салгаж байна уу."</string>
- <string name="ext_media_badremoval_notification_message" product="default" msgid="7260183293747448241">"Дата хохирлоос сэргийлж SD картыг хасахаасаа өмнө салгаж байна уу."</string>
- <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"USB санг салгаж авахад аюулгүй."</string>
- <string name="ext_media_safe_unmount_notification_title" product="default" msgid="6729801130790616200">"SD картыг хасахад аюулгүй"</string>
- <string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"USB санг сугалахад аюулгүй."</string>
- <string name="ext_media_safe_unmount_notification_message" product="default" msgid="568841278138377604">"SD картаа салгаж авах аюулгүй."</string>
- <string name="ext_media_nomedia_notification_title" product="nosdcard" msgid="4486377230140227651">"Хасагдсан USB сан"</string>
- <string name="ext_media_nomedia_notification_title" product="default" msgid="8902518030404381318">"Сугалсан SD карт"</string>
- <string name="ext_media_nomedia_notification_message" product="nosdcard" msgid="6921126162580574143">"USB сан сугалагдав. Шинэ медиаг хийнэ үү."</string>
- <string name="ext_media_nomedia_notification_message" product="default" msgid="3870120652983659641">"SD карт хасагдав. Шинийг хийнэ үү."</string>
- <string name="activity_list_empty" msgid="1675388330786841066">"Таарах активити олдсонгүй."</string>
- <string name="permlab_pkgUsageStats" msgid="8787352074326748892">"компонент ашиглалтын статистикийг шинэчлэх"</string>
- <string name="permdesc_pkgUsageStats" msgid="1106612424254277630">"Апп нь компонент хэрэглээний цуглуулагдсан статистикийг өөрчлөх боломжтой. Энгийн апп-д шаардлагагүй."</string>
- <string name="permlab_copyProtectedData" msgid="4341036311211406692">"контент хуулах"</string>
- <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Апп нь контентыг хуулах үндсэн контейнер үйлчилгээг дуудах боломжтой. Энгийн апп-д ашиглах боломжгүй."</string>
- <string name="permlab_route_media_output" msgid="1642024455750414694">"Медиа гаралтыг чиглүүлэх"</string>
- <string name="permdesc_route_media_output" msgid="4932818749547244346">"Аппликешн нь медиа гаралтыг бусад гадаад төхөөрөмжрүү чиглүүлэх боломжтой."</string>
- <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Түлхүүр хамгаалах аюулгүй санд хандах"</string>
- <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Аппликешн нь хамгаалалттай аюулгүй санд хандах боломжтой."</string>
- <string name="permlab_control_keyguard" msgid="172195184207828387">"Түлхүүр хамгаалалтын харуулах болон далдлахыг удирдах"</string>
- <string name="permdesc_control_keyguard" msgid="3043732290518629061">"Аппликешн нь түлхүүр хамгаалагчыг удирдах боломжтой."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Өсгөх контрол дээр хоёр удаа товшино уу"</string>
- <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Виджет нэмж чадсангүй."</string>
- <string name="ime_action_go" msgid="8320845651737369027">"Очих"</string>
- <string name="ime_action_search" msgid="658110271822807811">"Хайх"</string>
- <string name="ime_action_send" msgid="2316166556349314424">"Илгээх"</string>
- <string name="ime_action_next" msgid="3138843904009813834">"Дараах"</string>
- <string name="ime_action_done" msgid="8971516117910934605">"Дуусгах"</string>
- <string name="ime_action_previous" msgid="1443550039250105948">"Өмнөх"</string>
- <string name="ime_action_default" msgid="2840921885558045721">"Ажиллуулах"</string>
- <string name="dial_number_using" msgid="5789176425167573586">"<xliff:g id="NUMBER">%s</xliff:g> ашиглан \n залгах"</string>
- <string name="create_contact_using" msgid="4947405226788104538">"<xliff:g id="NUMBER">%s</xliff:g> дугаар ашиглан \n харилцагч үүсгэх"</string>
- <string name="grant_credentials_permission_message_header" msgid="2106103817937859662">"Дараах нэг буюу түүнээс дээш апп таны акаунтад одоо болон дараа хандах зөвшөөрлийг хүсэж байна."</string>
- <string name="grant_credentials_permission_message_footer" msgid="3125211343379376561">"Та энэ хүсэлтийг зөвшөөрөх үү?"</string>
- <string name="grant_permissions_header_text" msgid="6874497408201826708">"Хандах хүсэлт"</string>
- <string name="allow" msgid="7225948811296386551">"Зөвшөөрөх"</string>
- <string name="deny" msgid="2081879885755434506">"Татгалзах"</string>
- <string name="permission_request_notification_title" msgid="6486759795926237907">"Зөвшөөрөл хүсэв"</string>
- <string name="permission_request_notification_with_subtitle" msgid="8530393139639560189">"<xliff:g id="ACCOUNT">%s</xliff:g> акаунт зөвшөөрөл \n хүссэн"</string>
- <string name="input_method_binding_label" msgid="1283557179944992649">"Оруулах арга"</string>
- <string name="sync_binding_label" msgid="3687969138375092423">"Синк"</string>
- <string name="accessibility_binding_label" msgid="4148120742096474641">"Хандалт"</string>
- <string name="wallpaper_binding_label" msgid="1240087844304687662">"Ханын зураг"</string>
- <string name="chooser_wallpaper" msgid="7873476199295190279">"Ханын зураг солих"</string>
- <string name="notification_listener_binding_label" msgid="2014162835481906429">"Мэдэгдэл сонсогч"</string>
- <string name="vpn_title" msgid="19615213552042827">"VPN идэвхтэй болов"</string>
- <string name="vpn_title_long" msgid="6400714798049252294">"VPN-г <xliff:g id="APP">%s</xliff:g> идэвхтэй болгов"</string>
- <string name="vpn_text" msgid="3011306607126450322">"Сүлжээг удирдах бол хүрнэ үү."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g>-д холбогдов. Сүлжээг удирдах бол хүрнэ үү."</string>
- <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>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"Тохируулах бол хүрнэ үү"</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>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Машины горимоос гарах бол хүрнэ үү."</string>
- <string name="tethered_notification_title" msgid="3146694234398202601">"Модем болгох эсвэл идэвхтэй цэг болгох"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"Тохируулах бол хүрнэ үү."</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>
- <string name="throttle_warning_notification_title" msgid="4890894267454867276">"Мобайл дата хэрэглээ өндөр"</string>
- <string name="throttle_warning_notification_message" msgid="3340822228599337743">"Мобайл дата хэрэглээний талаар дэлгэрэнгүй үзэх бол хүрнэ үү"</string>
- <string name="throttled_notification_title" msgid="6269541897729781332">"Мобайл дата хязгаар хэтрэв"</string>
- <string name="throttled_notification_message" msgid="5443457321354907181">"Мобайл дата хэрэглээний талаар дэлгэрэнгүй үзэх бол хүрнэ үү"</string>
- <string name="no_matches" msgid="8129421908915840737">"Илэрц алга"</string>
- <string name="find_on_page" msgid="1946799233822820384">"Хуудаснаас олох"</string>
- <plurals name="matches_found">
- <item quantity="one" msgid="8167147081136579439">"1 утга"</item>
- <item quantity="other" msgid="4641872797067609177">"<xliff:g id="TOTAL">%d</xliff:g>-н <xliff:g id="INDEX">%d</xliff:g>"</item>
- </plurals>
- <string name="action_mode_done" msgid="7217581640461922289">"Дуусгах"</string>
- <string name="progress_unmounting" product="nosdcard" msgid="3923810448507612746">"USB санг салгаж байна…"</string>
- <string name="progress_unmounting" product="default" msgid="1327894998409537190">"SD картыг салгаж байна…"</string>
- <string name="progress_erasing" product="nosdcard" msgid="4521573321524340058">"USB санг арилгаж байна…"</string>
- <string name="progress_erasing" product="default" msgid="6596988875507043042">"SD картыг цэвэрлэж байна…"</string>
- <string name="format_error" product="nosdcard" msgid="6299769563624776948">"USB санг арилгаж чадсангүй."</string>
- <string name="format_error" product="default" msgid="7315248696644510935">"SD картыг арилгаж чадсангүй."</string>
- <string name="media_bad_removal" msgid="7960864061016603281">"SD картыг салгалгүйгээр хассан байна."</string>
- <string name="media_checking" product="nosdcard" msgid="418188720009569693">"USB санг одоо шалгаж байна."</string>
- <string name="media_checking" product="default" msgid="7334762503904827481">"SD картыг одоо шалгаж байна."</string>
- <string name="media_removed" msgid="7001526905057952097">"SD картыг сугалсан байна."</string>
- <string name="media_shared" product="nosdcard" msgid="5830814349250834225">"USB санг одоо компьютерээс ашиглаж байна."</string>
- <string name="media_shared" product="default" msgid="5706130568133540435">"USB санг одоо компьютерээс ашиглаж байна."</string>
- <string name="media_unknown_state" msgid="729192782197290385">"Гадаад медиа үл мэдэгдэх статустай байна."</string>
- <string name="share" msgid="1778686618230011964">"Хуваалцах"</string>
- <string name="find" msgid="4808270900322985960">"Олох"</string>
- <string name="websearch" msgid="4337157977400211589">"Веб хайлт"</string>
- <string name="find_next" msgid="5742124618942193978">"Дараагийнхыг хайх"</string>
- <string name="find_previous" msgid="2196723669388360506">"Өмнөхөөс олох"</string>
- <string name="gpsNotifTicker" msgid="5622683912616496172">"<xliff:g id="NAME">%s</xliff:g>-н байршлын хүсэлт"</string>
- <string name="gpsNotifTitle" msgid="5446858717157416839">"Байршлын хүсэлт"</string>
- <string name="gpsNotifMessage" msgid="1374718023224000702">"<xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>) хүсэлт илгээсэн"</string>
- <string name="gpsVerifYes" msgid="2346566072867213563">"Тийм"</string>
- <string name="gpsVerifNo" msgid="1146564937346454865">"Үгүй"</string>
- <string name="sync_too_many_deletes" msgid="5296321850662746890">"Устгах хязгаар хэтрэв"</string>
- <string name="sync_too_many_deletes_desc" msgid="496551671008694245">"<xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g>-р <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g> акаунтын <xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> зүйл устсан . Та юу хиймээр байна?"</string>
- <string name="sync_really_delete" msgid="2572600103122596243">"Устгах"</string>
- <string name="sync_undo_deletes" msgid="2941317360600338602">"Устгасныг буцаах"</string>
- <string name="sync_do_nothing" msgid="3743764740430821845">"Одоо юу ч хийхгүй"</string>
- <string name="choose_account_label" msgid="5655203089746423927">"Акаунт сонгох"</string>
- <string name="add_account_label" msgid="2935267344849993553">"Акаунт нэмэх"</string>
- <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>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<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>
- <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Цаг өсгөх"</string>
- <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Цаг бууруулах"</string>
- <string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"PM тохируулах"</string>
- <string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"AM тохируулах"</string>
- <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Сар өсгөх"</string>
- <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Сарыг бууруулах"</string>
- <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Өдөр өсгөх"</string>
- <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Өдрийг бууруулах"</string>
- <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Жилийг өсгөх"</string>
- <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Жил бууруулах"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Цуцлах"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Устгах"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Дуусгах"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Горим өөрчлөх"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Шифт"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Оруулах"</string>
- <string name="activitychooserview_choose_application" msgid="2125168057199941199">"Апп сонгох"</string>
- <string name="shareactionprovider_share_with" msgid="806688056141131819">"Хуваалцах"</string>
- <string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>-тай хуваалцана уу"</string>
- <string name="content_description_sliding_handle" msgid="415975056159262248">"Бариулыг гулсуулна. Хүрээд хүлээнэ."</string>
- <string name="description_direction_up" msgid="7169032478259485180">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-г гулсуулах."</string>
- <string name="description_direction_down" msgid="5087739728639014595">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> хийх бол доош гулсуулах."</string>
- <string name="description_direction_left" msgid="7207478719805562165">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> хийх зүүнлүү гулсуулах."</string>
- <string name="description_direction_right" msgid="8034433242579600980">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> хийх бол баруунлуу гулсуулах."</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"Тайлах"</string>
- <string name="description_target_camera" msgid="969071997552486814">"Камер"</string>
- <string name="description_target_silent" msgid="893551287746522182">"Чимээгүй"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"Дуунууд идэвхтэй"</string>
- <string name="description_target_search" msgid="3091587249776033139">"Хайх"</string>
- <string name="description_target_unlock_tablet" msgid="3833195335629795055">"Түгжээг тайлах бол татна уу"</string>
- <string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Нууц үгний дуудлагыг сонсох бол чихэвчийг залгана уу."</string>
- <string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Цэг."</string>
- <string name="action_bar_home_description" msgid="5293600496601490216">"Нүүр хуудасруу шилжих"</string>
- <string name="action_bar_up_description" msgid="2237496562952152589">"Дээш шилжих"</string>
- <string name="action_menu_overflow_description" msgid="2295659037509008453">"Нэмэлт сонголтууд"</string>
- <string name="action_bar_home_description_format" msgid="7965984360903693903">"%1$s, %2$s"</string>
- <string name="action_bar_home_subtitle_description_format" msgid="6985546530471780727">"%1$s, %2$s, %3$s"</string>
- <string name="storage_internal" msgid="4891916833657929263">"Дотоод сан"</string>
- <string name="storage_sd_card" msgid="3282948861378286745">"SD карт"</string>
- <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>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"Ашиглалт болон тохиргоог харах бол хүрнэ үү."</string>
- <string name="data_usage_3g_limit_title" msgid="7093334419518706686">"2G-3G дата идэвхгүй болов"</string>
- <string name="data_usage_4g_limit_title" msgid="7636489436819470761">"4G дата идэвхгүй байна"</string>
- <string name="data_usage_mobile_limit_title" msgid="7869402519391631884">"Мобайл дата идэвхгүй"</string>
- <string name="data_usage_wifi_limit_title" msgid="8992154736441284865">"Wi-Fi дата идэвхгүй"</string>
- <string name="data_usage_limit_body" msgid="3317964706973601386">"Идэвхжүүлэх бол хүрнэ үү."</string>
- <string name="data_usage_3g_limit_snoozed_title" msgid="7026739121138005231">"2G-3G дата хязгаар хэтрэв"</string>
- <string name="data_usage_4g_limit_snoozed_title" msgid="1106562779311209039">"4G дата хязгаар хэтрэв"</string>
- <string name="data_usage_mobile_limit_snoozed_title" msgid="279240572165412168">"Мобайл дата хязгаар хэтрэв"</string>
- <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>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"Хязгаарлалтыг хасах бол хүрнэ үү."</string>
- <string name="ssl_certificate" msgid="6510040486049237639">"Аюулгүй сертификат"</string>
- <string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Сертификат хүчинтэй."</string>
- <string name="issued_to" msgid="454239480274921032">"Гаргуулсан:"</string>
- <string name="common_name" msgid="2233209299434172646">"Ерөнхий нэр:"</string>
- <string name="org_name" msgid="6973561190762085236">"Байгууллага:"</string>
- <string name="org_unit" msgid="7265981890422070383">"Байгууллагын нэгж:"</string>
- <string name="issued_by" msgid="2647584988057481566">"Гаргасан:"</string>
- <string name="validity_period" msgid="8818886137545983110">"Хүчинтэй байх:"</string>
- <string name="issued_on" msgid="5895017404361397232">"Гаргасан:"</string>
- <string name="expires_on" msgid="3676242949915959821">"Хүртэл хүчинтэй:"</string>
- <string name="serial_number" msgid="758814067660862493">"Сериал дугаар:"</string>
- <string name="fingerprints" msgid="4516019619850763049">"Хурууны хээ:"</string>
- <string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-256 хурууны хээ:"</string>
- <string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1 хурууны хээ:"</string>
- <string name="activity_chooser_view_see_all" msgid="4292569383976636200">"Бүгдийг харах"</string>
- <string name="activity_chooser_view_dialog_title_default" msgid="4710013864974040615">"Активити сонгох"</string>
- <string name="share_action_provider_share_with" msgid="5247684435979149216">"Хуваалцах"</string>
- <string name="status_bar_device_locked" msgid="3092703448690669768">"Төхөөрөмж түгжигдсэн."</string>
- <string name="list_delimeter" msgid="3975117572185494152">", "</string>
- <string name="sending" msgid="3245653681008218030">"Илгээж байна ..."</string>
- <string name="launchBrowserDefault" msgid="2057951947297614725">"Хөтөч ажиллуулах уу?"</string>
- <string name="SetupCallDefault" msgid="5834948469253758575">"Дуудлагыг зөвшөөрөх үү?"</string>
- <string name="activity_resolver_use_always" msgid="8017770747801494933">"Байнга"</string>
- <string name="activity_resolver_use_once" msgid="2404644797149173758">"Нэг удаа"</string>
- <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Таблет"</string>
- <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Утас"</string>
- <string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Чихэвч"</string>
- <string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Чанга яригчийг суулгах"</string>
- <string name="default_media_route_name_hdmi" msgid="2450970399023478055">"HDMI"</string>
- <string name="default_audio_route_category_name" msgid="3722811174003886946">"Систем"</string>
- <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Блютүүт аудио"</string>
- <string name="wireless_display_route_description" msgid="9070346425023979651">"Утасгүй дэлгэц"</string>
- <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Дууссан"</string>
- <string name="media_route_button_content_description" msgid="5758553567065145276">"Медиа гаралт"</string>
- <string name="media_route_status_scanning" msgid="7279908761758293783">"Скан хийж байна..."</string>
- <string name="media_route_status_connecting" msgid="6422571716007825440">"Холбогдож байна..."</string>
- <string name="media_route_status_available" msgid="6983258067194649391">"Боломжтой"</string>
- <string name="media_route_status_not_available" msgid="6739899962681886401">"Боломжгүй"</string>
- <string name="media_route_status_in_use" msgid="4533786031090198063">"Ашиглаж байгаа"</string>
- <string name="display_manager_built_in_display_name" msgid="2583134294292563941">"Үндсэн дэлгэц"</string>
- <string name="display_manager_hdmi_display_name" msgid="1555264559227470109">"HDMI Дэлгэц"</string>
- <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Давхарга #<xliff:g id="ID">%1$d</xliff:g>"</string>
- <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string>
- <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", найдвартай"</string>
- <string name="wifi_display_notification_title" msgid="2223050649240326557">"Утасгүй дэлгэц холбогдов"</string>
- <string name="wifi_display_notification_message" msgid="4498802012464170685">"Энэ дэлгэц өөр төхөөрөмжийг харуулж байна"</string>
- <string name="wifi_display_notification_disconnect" msgid="6183754463561153372">"Салгах"</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"Яаралтай дуудлага"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Хээг мартсан"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"Буруу хээ"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"Нууц үг буруу"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN буруу"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"<xliff:g id="NUMBER">%1$d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"Хээг зурах"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"SIM PIN оруулна уу"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"PIN оруулна уу"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"Нууц үгээ оруулна уу"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM идэвхгүй байна. Үргэлжлүүлэх бол PUK кодыг оруулна уу. Дэлгэрэнгүй мэдээллийг оператороос асууна ууу"</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Хүссэн PIN кодоо оруулна уу"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Хүссэн PIN кодоо дахин оруулна уу"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM картны түгжээг гаргаж байна…"</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Буруу PIN код."</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"4-8 тооноос бүтэх PIN-г бичнэ үү."</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK код 8-с цөөнгүй тооноос бүтнэ."</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"Зөв PUK кодыг дахин оруулна уу. Давтан оролдвол SIM нь бүрмөсөн идэвхгүй болгоно."</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN кодууд таарахгүй байна"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Хээ оруулах оролдлого хэт олон"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"Түгжээг тайлах бол Google акаунтаараа нэвтэрнэ үү."</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"Хэрэглэгчийн нэр (имэйл)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"Нууц үг"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"Нэвтрэх"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"Хэрэглэгчийн нэр эсвэл нууц үг буруу."</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Хэрэглэгчийн нэр нууц үгээ мартсан уу?\n"<b>"google.com/accounts/recovery"</b>"-д зочилно уу."</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"Акаунт шалгаж байна…"</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Та PIN кодоо <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу бичив. \n\n<xliff:g id="NUMBER_1">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Та PIN кодоо <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу бичив. \n\n<xliff:g id="NUMBER_1">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Та тайлах хээг <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу зурлаа. \n\n<xliff:g id="NUMBER_1">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Та таблетыг тайлах гэж <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу оролдлоо. <xliff:g id="NUMBER_1">%d</xliff:g> удаа дахин буруу оролдвол таблет үйлдвэрийн үндсэн утгаараа тохируулагдах ба хэрэглэгчийн дата бүхэлдээ устана."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Та утсыг тайлах гэж <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу оролдлоо. <xliff:g id="NUMBER_1">%d</xliff:g> удаа дахин буруу оролдвол утас үйлдвэрийн үндсэн утгаараа тохируулагдах ба хэрэглэгчийн дата бүхэлдээ устана."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Та таблетыг тайлах гэж <xliff:g id="NUMBER">%d</xliff:g> удаа буруу оролдлоо. Таблет одоо үйлдвэрийн үндсэн утгаараа тохируулагдах болно."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Та утсыг тайлах гэж <xliff:g id="NUMBER">%d</xliff:g> удаа буруу оролдлоо. Утас одоо үйлдвэрийн үндсэн утгаараа тохируулагдах болно."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Та тайлах хээг <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу зурлаа. <xliff:g id="NUMBER_1">%d</xliff:g> удаа дахин буруу оруулбал, та таблетаа тайлахын тулд имэйл акаунт шаардлагатай болно.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Та тайлах хээг <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу зурлаа. <xliff:g id="NUMBER_1">%d</xliff:g> удаа дахин буруу оруулбал, та утсаа тайлахын тулд имэйл акаунтаа ашиглах шаардлагатай болно.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Устгах"</string>
- <string name="safe_media_volume_warning" product="default" msgid="7324161939475478066">"Дууг санал болгосон дээд төвшинөөс өсгөх үү. \n Өндөр дуугаар урт хугацаанд сонсох нь таны сонсголд хортой."</string>
- <string name="continue_to_enable_accessibility" msgid="1626427372316070258">"Хялбар горимыг идэвхжүүлэх бол хоёр хуруугаараа доошлуулаад хүлээнэ үү."</string>
- <string name="accessibility_enabled" msgid="1381972048564547685">"Хялбаршуулсан горим идэвхжив."</string>
- <string name="enable_accessibility_canceled" msgid="3833923257966635673">"Хандалт цуцлагдсан."</string>
- <string name="user_switched" msgid="3768006783166984410">"Одоогийн хэрэглэгч <xliff:g id="NAME">%1$s</xliff:g>."</string>
- <string name="owner_name" msgid="2716755460376028154">"Эзэмшигч"</string>
- <string name="error_message_title" msgid="4510373083082500195">"Алдаа"</string>
- <string name="app_no_restricted_accounts" msgid="5739463249673727736">"Энэ аппликешн хязгаарлагдсан профайлын акаунтыг дэмжихгүй."</string>
- <string name="app_not_found" msgid="3429141853498927379">"Энэ ажиллагааг зохицуулах аппликешн олдсонгүй."</string>
- <string name="revoke" msgid="5404479185228271586">"Цуцлах"</string>
- <string name="mediaSize_iso_a0" msgid="7875427489420821793">"ISO A0"</string>
- <string name="mediaSize_iso_a1" msgid="3760734499050875356">"ISO A1"</string>
- <string name="mediaSize_iso_a2" msgid="5973266378020144382">"ISO A2"</string>
- <string name="mediaSize_iso_a3" msgid="1373407105687300884">"ISO A3"</string>
- <string name="mediaSize_iso_a4" msgid="6689772807982597254">"ISO A4"</string>
- <string name="mediaSize_iso_a5" msgid="5353549652015741040">"ISO A5"</string>
- <string name="mediaSize_iso_a6" msgid="8585038048674911907">"ISO A6"</string>
- <string name="mediaSize_iso_a7" msgid="6641836716963839119">"ISO A7"</string>
- <string name="mediaSize_iso_a8" msgid="7571139437465693355">"ISO A8"</string>
- <string name="mediaSize_iso_a9" msgid="1378455891957115079">"ISO A9"</string>
- <string name="mediaSize_iso_a10" msgid="2480747457429475344">"ISO A10"</string>
- <string name="mediaSize_iso_b0" msgid="3965935097661108039">"ISO B0"</string>
- <string name="mediaSize_iso_b1" msgid="2505753285010115437">"ISO B1"</string>
- <string name="mediaSize_iso_b2" msgid="8763874709859458453">"ISO B2"</string>
- <string name="mediaSize_iso_b3" msgid="4210506688191764076">"ISO B3"</string>
- <string name="mediaSize_iso_b4" msgid="5749404165888526034">"ISO B4"</string>
- <string name="mediaSize_iso_b5" msgid="7640627414621904733">"ISO B5"</string>
- <string name="mediaSize_iso_b6" msgid="7342988864712748544">"ISO B6"</string>
- <string name="mediaSize_iso_b7" msgid="5069844065235382429">"ISO B7"</string>
- <string name="mediaSize_iso_b8" msgid="7316818922278779774">"ISO B8"</string>
- <string name="mediaSize_iso_b9" msgid="5414727094026532341">"ISO B9"</string>
- <string name="mediaSize_iso_b10" msgid="5251253731832048185">"ISO B10"</string>
- <string name="mediaSize_iso_c0" msgid="4003138342671964217">"ISO C0"</string>
- <string name="mediaSize_iso_c1" msgid="1935188063393553008">"ISO C1"</string>
- <string name="mediaSize_iso_c2" msgid="3197307969712069904">"ISO C2"</string>
- <string name="mediaSize_iso_c3" msgid="4335826087321913508">"ISO C3"</string>
- <string name="mediaSize_iso_c4" msgid="3745639598281015005">"ISO C4"</string>
- <string name="mediaSize_iso_c5" msgid="8269457765822791013">"ISO C5"</string>
- <string name="mediaSize_iso_c6" msgid="566666105260346930">"ISO C6"</string>
- <string name="mediaSize_iso_c7" msgid="8678413180782608498">"ISO C7"</string>
- <string name="mediaSize_iso_c8" msgid="8392376206627041730">"ISO C8"</string>
- <string name="mediaSize_iso_c9" msgid="9191613372324845405">"ISO C9"</string>
- <string name="mediaSize_iso_c10" msgid="7327709699184920822">"ISO C10"</string>
- <string name="mediaSize_na_letter" msgid="4191805615829472953">"Letter"</string>
- <string name="mediaSize_na_gvrnmt_letter" msgid="7853382192649405507">"Government Letter"</string>
- <string name="mediaSize_na_legal" msgid="6697982988283823150">"Legal"</string>
- <string name="mediaSize_na_junior_legal" msgid="3727743969902758948">"Junior Legal"</string>
- <string name="mediaSize_na_ledger" msgid="281871464896601236">"Ledger"</string>
- <string name="mediaSize_na_tabloid" msgid="5775966416333578127">"Tabloid"</string>
- <string name="write_fail_reason_cancelled" msgid="7091258378121627624">"Цуцлагдсан"</string>
- <string name="write_fail_reason_cannot_write" msgid="8132505417935337724">"Контентыг бичих явцад алдаа гарсан"</string>
- <string name="restr_pin_enter_pin" msgid="3395953421368476103">"PIN оруулна уу"</string>
- <string name="restr_pin_enter_old_pin" msgid="1462206225512910757">"Одоогийн PIN"</string>
- <string name="restr_pin_enter_new_pin" msgid="5959606691619959184">"Шинэ PIN"</string>
- <string name="restr_pin_confirm_pin" msgid="8501523829633146239">"Шинэ PIN-г баталгаажуулах"</string>
- <string name="restr_pin_create_pin" msgid="8017600000263450337">"Өөрчлөлтийг хязгаарлахад зориулан PIN үүсгэх"</string>
- <string name="restr_pin_error_doesnt_match" msgid="2224214190906994548">"PIN таарахгүй байна. Дахин оролдоно уу."</string>
- <string name="restr_pin_error_too_short" msgid="8173982756265777792">"PIN хэт богино байна. Хамгийн багадаа 4 цифртэй байх ёстой."</string>
- <plurals name="restr_pin_countdown">
- <item quantity="one" msgid="4835639969503729874">"Буруу PIN. 1 секундын дараа дахин оролдоно уу."</item>
- <item quantity="other" msgid="8030607343223287654">"Буруу PIN. <xliff:g id="COUNT">%d</xliff:g> секундын дараа дахин оролдоно уу."</item>
- </plurals>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Баганыг харуулахын тулд дэлгэцийн ирмэгийг шудрана уу"</string>
-</resources>
diff --git a/core/res/res/values-ms-rMY/strings.xml b/core/res/res/values-ms-rMY/strings.xml
index 7a46b0c27d36..88d76e748c7b 100644
--- a/core/res/res/values-ms-rMY/strings.xml
+++ b/core/res/res/values-ms-rMY/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Cuba <xliff:g id="COUNT">%d</xliff:g> saat lagi"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Cuba sebentar lagi"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Leret ke bawah untuk keluar dari skrin penuh"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Leret ke bawah untuk keluar dari skrin penuh"</string>
</resources>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index f522a4890d04..a9fe93024244 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -314,7 +314,7 @@
<string name="permlab_stopAppSwitches" msgid="4138608610717425573">"halang pertukaran apl"</string>
<string name="permdesc_stopAppSwitches" msgid="8262195802582255021">"Menghalang pengguna daripada bertukar kepada apl lain."</string>
<string name="permlab_getTopActivityInfo" msgid="2537922311411546016">"dapatkan maklumat apl semasa"</string>
- <string name="permdesc_getTopActivityInfo" msgid="8153651434145132505">"Membenarkan pemegang mendapatkan maklumat peribadi tentang aplikasi dan perkhidmatan semasa di latar hadapan skrin."</string>
+ <string name="permdesc_getTopActivityInfo" msgid="2512448855496067131">"Membenarkan pemegang mendapatkan maklumat peribadi tentang permohonan semasa di latar hadapan skrin"</string>
<string name="permlab_runSetActivityWatcher" msgid="892239094867182656">"pantau dan kawal semua pelancaran apl"</string>
<string name="permdesc_runSetActivityWatcher" msgid="6003603162578577406">"Membenarkan apl untuk memantau dan mengawal cara sistem melancarkan aktiviti. Apl hasad boleh menjejaskan sistem sepenuhnya. Kebenaran ini hanya diperlukan untuk pembangunan, tidak sekali-kali untuk penggunaan biasa."</string>
<string name="permlab_broadcastPackageRemoved" msgid="2576333434893532475">"hantar siaran bahawa pakej telah dialih keluar"</string>
@@ -362,8 +362,10 @@
<string name="permdesc_bindPrintService" msgid="7960067623209111135">"Membenarkan pemegang terikat dengan antara muka peringkat tertinggi bagi perkhidmatan cetakan. Tidak sekali-kali diperlukan untuk apl biasa."</string>
<string name="permlab_accessAllPrintJobs" msgid="1120792468465711159">"akses semua kerja cetakan"</string>
<string name="permdesc_accessAllPrintJobs" msgid="2978185311041864762">"Membenarkan pemegang mengakses kerja cetakan yang dibuat oleh apl lain. Tidak sekali-kali diperlukan untuk apl biasa."</string>
- <string name="permlab_bindNfcService" msgid="2752731300419410724">"terikat kepada perkhidmatan NFC"</string>
- <string name="permdesc_bindNfcService" msgid="6120647629174066862">"Membenarkan pemegang untuk terikat kepada aplikasi yang mengikut kad NFC. Tidak sekali-kali diperlukan untuk apl normal."</string>
+ <!-- no translation found for permlab_bindNfcService (2752731300419410724) -->
+ <skip />
+ <!-- no translation found for permdesc_bindNfcService (6120647629174066862) -->
+ <skip />
<string name="permlab_bindTextService" msgid="7358378401915287938">"terikat kepada perkhidmatan teks"</string>
<string name="permdesc_bindTextService" msgid="8151968910973998670">"Membenarkan pemegang mengikat kepada antara muka peringkat atasan perkhidmatan teks(mis. PerkhidmatanPenyemakEjaan). Tidak seharusnya diperlukan untuk apl biasa."</string>
<string name="permlab_bindVpnService" msgid="4708596021161473255">"terikat kepada perkhidmatan VPN"</string>
@@ -407,10 +409,6 @@
<string name="permdesc_readLogs" product="default" msgid="2063438140241560443">"Membenarkan apl membaca daripada pelbagai fail log sistem. Hal ini membenarkannya menemui maklumat umum mengenai perkara yang anda lakukan dengan telefon, juga berpotensi menyertakan maklumat persendirian dan peribadi."</string>
<string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"gunakan mana-mana penyahkod media untuk main semula"</string>
<string name="permdesc_anyCodecForPlayback" msgid="8283912488433189010">"Membenarkan apl untuk menggunakan sebarang penyahkod media yang dipasangkan untuk menyahkod main semula."</string>
- <!-- no translation found for permlab_manageCaCertificates (1678391896786882014) -->
- <skip />
- <!-- no translation found for permdesc_manageCaCertificates (4015644047196937014) -->
- <skip />
<string name="permlab_diagnostic" msgid="8076743953908000342">"baca/tulis ke sumber yang dimiliki oleh diag"</string>
<string name="permdesc_diagnostic" msgid="6608295692002452283">"Membenarkan apl membaca dan menulis ke sebarang sumber yang dimiliki oleh kumpulan diag; contohnya, fail dalam /dev. Hal ini berpotensi menjejaskan kestabilan dan keselamatan sistem. Perkara ini seharusnya HANYA digunakan untuk diagnosis khusus perkakasan oleh pengilang atau pengendali."</string>
<string name="permlab_changeComponentState" msgid="6335576775711095931">"dayakan atau lumpuhkan komponen apl"</string>
@@ -476,14 +474,18 @@
<string name="permdesc_accessInputFlinger" msgid="2104864941201226616">"Membenarkan apl menggunakan ciri peringkat rendah InputFlinger."</string>
<string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"konfigurasikan paparan Wifi"</string>
<string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"Membenarkan apl mengkonfigurasi dan menyambung ke paparan Wifi."</string>
- <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"kawal paparan Wifi"</string>
- <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"Membenarkan apl mengawal ciri tahap rendah paparan Wifi."</string>
- <string name="permlab_captureAudioOutput" msgid="6857134498402346708">"tangkap output audio"</string>
- <string name="permdesc_captureAudioOutput" msgid="6210597754212208853">"Membenarkan apl menangkap dan mengubah hala output audio."</string>
- <string name="permlab_captureVideoOutput" msgid="2246828773589094023">"tangkap output video"</string>
- <string name="permdesc_captureVideoOutput" msgid="359481658034149860">"Membenarkan apl menangkap dan mengubah hala output video."</string>
- <string name="permlab_captureSecureVideoOutput" msgid="7815398969303382016">"tangkap output video selamat"</string>
- <string name="permdesc_captureSecureVideoOutput" msgid="2779793064709350289">"Membenarkan apl menangkap dan mengubah hala output video selamat."</string>
+ <!-- no translation found for permlab_captureAudioOutput (6857134498402346708) -->
+ <skip />
+ <!-- no translation found for permdesc_captureAudioOutput (6210597754212208853) -->
+ <skip />
+ <!-- no translation found for permlab_captureVideoOutput (2246828773589094023) -->
+ <skip />
+ <!-- no translation found for permdesc_captureVideoOutput (359481658034149860) -->
+ <skip />
+ <!-- no translation found for permlab_captureSecureVideoOutput (7815398969303382016) -->
+ <skip />
+ <!-- no translation found for permdesc_captureSecureVideoOutput (2779793064709350289) -->
+ <skip />
<string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"tukar tetapan audio anda"</string>
<string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"Membenarkan apl untuk mengubah suai tetapan audio global seperti kelantangan dan pembesar suara mana digunakan untuk output."</string>
<string name="permlab_recordAudio" msgid="3876049771427466323">"rakam audio"</string>
@@ -657,8 +659,6 @@
<string name="permdesc_bindNotificationListenerService" msgid="985697918576902986">"Membenarkan pemegang terikat dengan antara muka peringkat tertinggi bagi perkhidmatan pendengar pemberitahuan. Tidak sekali-kali diperlukan untuk apl biasa."</string>
<string name="permlab_invokeCarrierSetup" msgid="3699600833975117478">"gunakan apl konfigurasi yang disediakan oleh pembawa"</string>
<string name="permdesc_invokeCarrierSetup" msgid="4159549152529111920">"Membenarkan pemegang menggunakan apl konfigurasi yang diberikan oleh pembawa. Tidak sekali-kali diperlukan untuk apl biasa."</string>
- <string name="permlab_accessNetworkConditions" msgid="8206077447838909516">"dengar pemerhatian mengenai keadaan rangkaian"</string>
- <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"Membenarkan aplikasi mendengar pemerhatian tentang keadaan rangkaian. Tidak sekali-kali diperlukan untuk apl biasa."</string>
<string name="policylab_limitPassword" msgid="4497420728857585791">"Tetapkan peraturan kata laluan"</string>
<string name="policydesc_limitPassword" msgid="3252114203919510394">"Mengawal panjang dan aksara yang dibenarkan dalam kata laluan buka kunci skrin."</string>
<string name="policylab_watchLogin" msgid="914130646942199503">"Memantau percubaan buka kunci skrin"</string>
@@ -1479,7 +1479,8 @@
<string name="display_manager_hdmi_display_name" msgid="1555264559227470109">"Skrin HDMI"</string>
<string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Tindih #<xliff:g id="ID">%1$d</xliff:g>"</string>
<string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string>
- <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", selamat"</string>
+ <!-- no translation found for display_manager_overlay_display_secure_suffix (6022119702628572080) -->
+ <skip />
<string name="wifi_display_notification_title" msgid="2223050649240326557">"Paparan wayarles disambungkan"</string>
<string name="wifi_display_notification_message" msgid="4498802012464170685">"Skrin ini ditunjukkan pada peranti lain"</string>
<string name="wifi_display_notification_disconnect" msgid="6183754463561153372">"Putus sambungan"</string>
@@ -1583,5 +1584,4 @@
<item quantity="one" msgid="4835639969503729874">"PIN salah. Cuba lagi dalam masa 1 saat."</item>
<item quantity="other" msgid="8030607343223287654">"PIN salah. Cuba lagi dalam masa <xliff:g id="COUNT">%d</xliff:g> saat."</item>
</plurals>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Leret bhg tepi skrin utk serlah bar"</string>
</resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 0df98b1f56dd..3be8817957b3 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Prøv på nytt om <xliff:g id="COUNT">%d</xliff:g> sekunder"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Prøv på nytt senere"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Sveip ned for å avslutte fullskjermvisning"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Sveip ned fra toppen av skjermen for å gå ut av fullskjermvisningen."</string>
</resources>
diff --git a/core/res/res/values-ne-rNP/strings.xml b/core/res/res/values-ne-rNP/strings.xml
deleted file mode 100644
index fe6b669e3c09..000000000000
--- a/core/res/res/values-ne-rNP/strings.xml
+++ /dev/null
@@ -1,1588 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="byteShort" msgid="8340973892742019101">"B"</string>
- <string name="kilobyteShort" msgid="5973789783504771878">"KB"</string>
- <string name="megabyteShort" msgid="6355851576770428922">"MB"</string>
- <string name="gigabyteShort" msgid="3259882455212193214">"GB"</string>
- <string name="terabyteShort" msgid="231613018159186962">"TB"</string>
- <string name="petabyteShort" msgid="5637816680144990219">"PB"</string>
- <string name="fileSizeSuffix" msgid="9164292791500531949">"<xliff:g id="NUMBER">%1$s</xliff:g><xliff:g id="UNIT">%2$s</xliff:g>"</string>
- <string name="untitled" msgid="4638956954852782576">"&lt;बिना शीर्षक&gt;"</string>
- <string name="ellipsis" msgid="7899829516048813237">"…"</string>
- <string name="ellipsis_two_dots" msgid="1228078994866030736">"‥"</string>
- <string name="emptyPhoneNumber" msgid="7694063042079676517">"(कुनै फोन नम्बर छैन)"</string>
- <string name="unknownName" msgid="2277556546742746522">"(अज्ञात)"</string>
- <string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"भ्वाइस मेल"</string>
- <string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN१"</string>
- <string name="mmiError" msgid="5154499457739052907">"जडान समस्या वा अमान्य MMI कोड।"</string>
- <string name="mmiFdnError" msgid="5224398216385316471">"अपरेशन निश्चित डायल नम्बरहरूको लागि मात्र प्रतिबन्धित छ।"</string>
- <string name="serviceEnabled" msgid="8147278346414714315">"सेवा सक्षम पारियो।"</string>
- <string name="serviceEnabledFor" msgid="6856228140453471041">"निम्न उल्लेखितको लागि सेवा सक्षम पारियो:"</string>
- <string name="serviceDisabled" msgid="1937553226592516411">"सेवा असक्षम पारिएको छ।"</string>
- <string name="serviceRegistered" msgid="6275019082598102493">"दर्ता सफल भयो।"</string>
- <string name="serviceErased" msgid="1288584695297200972">"मेटाइ सफल थियो।"</string>
- <string name="passwordIncorrect" msgid="7612208839450128715">"गलत पासवर्ड।"</string>
- <string name="mmiComplete" msgid="8232527495411698359">"MMI पुरा भयो।"</string>
- <string name="badPin" msgid="9015277645546710014">"तपाईंले टाइप गर्नुभएको पुरानो PIN सही छैन।"</string>
- <string name="badPuk" msgid="5487257647081132201">"तपाईंले टाइप गर्नुभएको PUK सही छैन।"</string>
- <string name="mismatchPin" msgid="609379054496863419">"तपाईंले टाइप गर्नुभएको PIN मेल खाँदैन।"</string>
- <string name="invalidPin" msgid="3850018445187475377">"४ देखि ८ वटा नम्बर भएको एउटा PIN टाइप गर्नुहोस्।"</string>
- <string name="invalidPuk" msgid="8761456210898036513">"८ वटा नम्बरहरू वा सो भन्दा लामो एउटा PUK टाइप गर्नुहोस्।"</string>
- <string name="needPuk" msgid="919668385956251611">"तपाईंको SIM कार्ड PUK-लक छ। यसलाई अनलक गर्न PUK कोड टाइप गर्नुहोस्।"</string>
- <string name="needPuk2" msgid="4526033371987193070">"SIM कार्ड अनलक गर्न PUK2 टाइप गर्नुहोस्।"</string>
- <string name="imei" msgid="2625429890869005782">"IMEI"</string>
- <string name="meid" msgid="4841221237681254195">"MEID"</string>
- <string name="ClipMmi" msgid="6952821216480289285">"आगमन कलर ID"</string>
- <string name="ClirMmi" msgid="7784673673446833091">"बाहिरिने कलर ID"</string>
- <string name="CfMmi" msgid="5123218989141573515">"कल अगाडि बढाउँदै"</string>
- <string name="CwMmi" msgid="9129678056795016867">"कल प्रतिक्षा"</string>
- <string name="BaMmi" msgid="455193067926770581">"कल ब्यारिङ"</string>
- <string name="PwdMmi" msgid="7043715687905254199">"पासवर्ड परिवर्तन"</string>
- <string name="PinMmi" msgid="3113117780361190304">"PIN परिवर्तन"</string>
- <string name="CnipMmi" msgid="3110534680557857162">"प्रस्तुत नम्बरमा कल गर्दै"</string>
- <string name="CnirMmi" msgid="3062102121430548731">"कल गर्ने अंक रोकेको छ।"</string>
- <string name="ThreeWCMmi" msgid="9051047170321190368">"कल गर्ने तिन तरिका"</string>
- <string name="RuacMmi" msgid="7827887459138308886">"नचाहिएका रिसउठ्दा कलहरूको अस्वीकार"</string>
- <string name="CndMmi" msgid="3116446237081575808">"कलिङ नम्बर प्रदान गर्ने"</string>
- <string name="DndMmi" msgid="1265478932418334331">"बाधा नगर्नुहोस्"</string>
- <string name="CLIRDefaultOnNextCallOn" msgid="429415409145781923">"सीमति गर्न पूर्वनिर्धारित कलर ID, अर्को कल: सीमति गरिएको"</string>
- <string name="CLIRDefaultOnNextCallOff" msgid="3092918006077864624">"कलर ID पूर्वनिर्धारितको लागि रोकावट छ। अर्को कल: रोकावट छैन"</string>
- <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"कलर ID पूर्वनिर्धारितदेखि प्रतिबन्धित छैन। अर्को कल: प्रतिबन्धित छ"</string>
- <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"कलर ID पूर्वनिर्धारितको लागि रोकावट छैन। अर्को कल: रोकावट छैन"</string>
- <string name="serviceNotProvisioned" msgid="8614830180508686666">"सेवाको व्यवस्था छैन।"</string>
- <string name="CLIRPermanent" msgid="3377371145926835671">"तपाईं कलर ID सेटिङ परिवर्तन गर्न सक्नुहुन्न।"</string>
- <string name="RestrictedChangedTitle" msgid="5592189398956187498">"प्रतिबन्धित पहुँच परिवर्तन भएको छ"</string>
- <string name="RestrictedOnData" msgid="8653794784690065540">"डेटा सेवा रोकिएको छ।"</string>
- <string name="RestrictedOnEmergency" msgid="6581163779072833665">"आपतकालीन सेवा रोकिएको छ।"</string>
- <string name="RestrictedOnNormal" msgid="4953867011389750673">"भ्वाइस सेवा ब्लक भएको छ।"</string>
- <string name="RestrictedOnAllVoice" msgid="3396963652108151260">"सबै आवाज सेवाहरू बन्द छन्।"</string>
- <string name="RestrictedOnSms" msgid="8314352327461638897">"SMS सेवा रोकिएको छ।"</string>
- <string name="RestrictedOnVoiceData" msgid="996636487106171320">"भ्वाइस/डेटा सेवाहरू रोकिएका छन्।"</string>
- <string name="RestrictedOnVoiceSms" msgid="1888588152792023873">"आवाज/SMS सेवाहरू बन्द छन्।"</string>
- <string name="RestrictedOnAll" msgid="5643028264466092821">"सबै भ्वाइस/डेटा/SMS सेवाहरू ब्लक भएका छन्।"</string>
- <string name="serviceClassVoice" msgid="1258393812335258019">"आवाज"</string>
- <string name="serviceClassData" msgid="872456782077937893">"डेटा"</string>
- <string name="serviceClassFAX" msgid="5566624998840486475">"फ्याक्स"</string>
- <string name="serviceClassSMS" msgid="2015460373701527489">"SMS"</string>
- <string name="serviceClassDataAsync" msgid="4523454783498551468">"Async"</string>
- <string name="serviceClassDataSync" msgid="7530000519646054776">"सिङ्क गर्नुहोस्"</string>
- <string name="serviceClassPacket" msgid="6991006557993423453">"प्याकेट"</string>
- <string name="serviceClassPAD" msgid="3235259085648271037">"PAD"</string>
- <string name="roamingText0" msgid="7170335472198694945">"रोमिङ सूचक खुला"</string>
- <string name="roamingText1" msgid="5314861519752538922">"रोमिङ सूचक बन्द"</string>
- <string name="roamingText2" msgid="8969929049081268115">"रोमिङ सूचक फ्ल्यास गर्दै"</string>
- <string name="roamingText3" msgid="5148255027043943317">"छिमेकबाट बाहिर"</string>
- <string name="roamingText4" msgid="8808456682550796530">"बिल्डिङको बाहिर"</string>
- <string name="roamingText5" msgid="7604063252850354350">"रोमिङ - उपयुक्त प्रणाली"</string>
- <string name="roamingText6" msgid="2059440825782871513">"रोमिङ - उपलब्ध प्रणाली"</string>
- <string name="roamingText7" msgid="7112078724097233605">"रोमिङ - एलियन्सर पार्टनर"</string>
- <string name="roamingText8" msgid="5989569778604089291">"रोमिङ - प्रिमियम पार्टनर"</string>
- <string name="roamingText9" msgid="7969296811355152491">"रोमिङ - पूर्ण सेवा कार्यक्षमता अवस्था"</string>
- <string name="roamingText10" msgid="3992906999815316417">"रोमिङ - आङ्शिक सेवा प्रकार्यता"</string>
- <string name="roamingText11" msgid="4154476854426920970">"रोमिङ ध्वजा चालु छ"</string>
- <string name="roamingText12" msgid="1189071119992726320">"रोमिङ ब्यानर बन्द छ"</string>
- <string name="roamingTextSearching" msgid="8360141885972279963">"सेवाको खोजी गर्दै…"</string>
- <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: अगाडि पठाइएको छैन"</string>
- <string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string>
- <string name="cfTemplateForwardedTime" msgid="9206251736527085256">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g> पछि <xliff:g id="TIME_DELAY">{2}</xliff:g> सेकेन्ड"</string>
- <string name="cfTemplateRegistered" msgid="5073237827620166285">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: अगाडि बढाइएको छैन"</string>
- <string name="cfTemplateRegisteredTime" msgid="6781621964320635172">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: अगाडि बढाइएको छैन"</string>
- <string name="fcComplete" msgid="3118848230966886575">"विशेषता कोड पुरा भयो।"</string>
- <string name="fcError" msgid="3327560126588500777">"जडान समस्या वा अमान्य सुविधा कोड।"</string>
- <string name="httpErrorOk" msgid="1191919378083472204">"ठिक छ"</string>
- <string name="httpError" msgid="7956392511146698522">"एउटा नेटवर्क त्रुटि थियो।"</string>
- <string name="httpErrorLookup" msgid="4711687456111963163">"URL भेटाउन सकेन।"</string>
- <string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"साइटको आधिकारिकता योजना समर्थित छैन।"</string>
- <string name="httpErrorAuth" msgid="1435065629438044534">"प्रमाणीकरण गर्न सकेन।"</string>
- <string name="httpErrorProxyAuth" msgid="1788207010559081331">"प्रोक्सी सर्भरको माध्यमद्वारा प्रमाणिकरण असफल भएको छ।"</string>
- <string name="httpErrorConnect" msgid="8714273236364640549">"सर्भरसँग जोड्न सकेन।"</string>
- <string name="httpErrorIO" msgid="2340558197489302188">"सर्भरसँग संचार गर्न सकेन। फेरि पछि कोसिस गर्नुहोस्।"</string>
- <string name="httpErrorTimeout" msgid="4743403703762883954">"सर्भर संगको सम्पर्क प्रक्रिया समय सकियो।"</string>
- <string name="httpErrorRedirectLoop" msgid="8679596090392779516">"पृष्टमा धेरै सर्भरहरूतिर पुनः निर्देशनहरू छन्।"</string>
- <string name="httpErrorUnsupportedScheme" msgid="5015730812906192208">"प्रोटोकल समर्थित छैन।"</string>
- <string name="httpErrorFailedSslHandshake" msgid="96549606000658641">"एउटा सुरक्षित जडान स्थापना गर्न सकेन।"</string>
- <string name="httpErrorBadUrl" msgid="3636929722728881972">"पृष्ठ खोल्न सकिँदैन किनभने URL अमान्य छ।"</string>
- <string name="httpErrorFile" msgid="2170788515052558676">"फाइल भेटाउन सकेन।"</string>
- <string name="httpErrorFileNotFound" msgid="6203856612042655084">"अनुरोध गरिएको फाइल भेटाउन सकेन।"</string>
- <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"धेरै नै अनुरोधहरू प्रक्रियामा छन्। पछि फेरि प्रयास गर्नुहोस्।"</string>
- <string name="notification_title" msgid="8967710025036163822">"<xliff:g id="ACCOUNT">%1$s</xliff:g>को लागि साइन इन त्रुटि"</string>
- <string name="contentServiceSync" msgid="8353523060269335667">"सिङक गर्नुहोस्"</string>
- <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"सिङ्क गर्नुहोस्"</string>
- <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"अति धेरै <xliff:g id="CONTENT_TYPE">%s</xliff:g> मेट्नुहोस्।"</string>
- <string name="low_memory" product="tablet" msgid="6494019234102154896">"ट्याब्लेट भण्डारण खाली छैन! ठाउँ खाली गर्नको लागि केही फाइलहरू मेटाउनुहोस्।"</string>
- <string name="low_memory" product="default" msgid="3475999286680000541">"फोन भण्डारण भरिएको छ! ठाउँ खाली गर्नको लागि केही फाइलहरू मेटाउनुहोस्।"</string>
- <string name="me" msgid="6545696007631404292">"मलाई"</string>
- <string name="power_dialog" product="tablet" msgid="8545351420865202853">"ट्याब्लेट विकल्पहरू"</string>
- <string name="power_dialog" product="default" msgid="1319919075463988638">"फोन विकल्पहरू"</string>
- <string name="silent_mode" msgid="7167703389802618663">"मौन मोड"</string>
- <string name="turn_on_radio" msgid="3912793092339962371">"वायरलेस अन गर्नुहोस्"</string>
- <string name="turn_off_radio" msgid="8198784949987062346">"ताररहित बन्द गर्नुहोस्"</string>
- <string name="screen_lock" msgid="799094655496098153">"स्क्रिन लक गर्नुहोस्"</string>
- <string name="power_off" msgid="4266614107412865048">"पावर बन्द"</string>
- <string name="silent_mode_silent" msgid="319298163018473078">"घन्टी बन्द भयो"</string>
- <string name="silent_mode_vibrate" msgid="7072043388581551395">"घन्टी कम्पन गर्छ"</string>
- <string name="silent_mode_ring" msgid="8592241816194074353">"घन्टि चालु छ"</string>
- <string name="shutdown_progress" msgid="2281079257329981203">"बन्द गर्दै..."</string>
- <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"तपाईँको ट्याब्लेट बन्द हुने छ।"</string>
- <string name="shutdown_confirm" product="default" msgid="649792175242821353">"तपाईँको फोन बन्द हुने छ।"</string>
- <string name="shutdown_confirm_question" msgid="2906544768881136183">"के तपाईं बन्द गर्न चाहनुहुन्छ?"</string>
- <string name="reboot_safemode_title" msgid="7054509914500140361">"सुरक्षित मोडमा पुनःबुट गर्नुहोस्"</string>
- <string name="reboot_safemode_confirm" msgid="55293944502784668">"सुरक्षित मोडमा तपाईँ पुनःबुट गर्न चाहनु हुन्छ? तपाईँले स्थापना गरेका सबै तेस्रो पक्षका अनुप्रयोगहरूलाई असक्षम गराउने छ।"</string>
- <string name="recent_tasks_title" msgid="3691764623638127888">"नयाँ"</string>
- <string name="no_recent_tasks" msgid="8794906658732193473">"कुनै नयाँ अनुप्रयोगहरू छैनन्।"</string>
- <string name="global_actions" product="tablet" msgid="408477140088053665">"ट्याब्लेट विकल्पहरू"</string>
- <string name="global_actions" product="default" msgid="2406416831541615258">"फोन विकल्पहरू"</string>
- <string name="global_action_lock" msgid="2844945191792119712">"स्क्रिन बन्द"</string>
- <string name="global_action_power_off" msgid="4471879440839879722">"शक्ति बन्द"</string>
- <string name="global_action_bug_report" msgid="7934010578922304799">"बग रिपोर्ट"</string>
- <string name="bugreport_title" msgid="2667494803742548533">"बग रिपोर्ट लिनुहोस्"</string>
- <string name="bugreport_message" msgid="398447048750350456">"एउटा इमेल सन्देशको रूपमा पठाउनलाई यसले तपाईँको हालैको उपकरणको अवस्थाको बारेमा सूचना जम्मा गर्ने छ। बग रिपोर्ट सुरु गरेदेखि पठाउन तयार नभएसम्म यसले केही समय लिन्छ; कृपया धैर्य गर्नुहोस्।"</string>
- <string name="global_action_toggle_silent_mode" msgid="8219525344246810925">"मौन मोड"</string>
- <string name="global_action_silent_mode_on_status" msgid="3289841937003758806">"आवाज बन्द छ"</string>
- <string name="global_action_silent_mode_off_status" msgid="1506046579177066419">"ध्वनि खुल्ला छ"</string>
- <string name="global_actions_toggle_airplane_mode" msgid="5884330306926307456">"हवाइजहाज मोड"</string>
- <string name="global_actions_airplane_mode_on_status" msgid="2719557982608919750">"हवाइजहाज मोड खुला छ"</string>
- <string name="global_actions_airplane_mode_off_status" msgid="5075070442854490296">"हवाइजहाज मोड बन्द छ"</string>
- <string name="status_bar_notification_info_overflow" msgid="5301981741705354993">"९९९+"</string>
- <string name="safeMode" msgid="2788228061547930246">"सुरक्षित मोड"</string>
- <string name="android_system_label" msgid="6577375335728551336">"एन्ड्रोइड प्रणाली"</string>
- <string name="permgrouplab_costMoney" msgid="5429808217861460401">"तपाईँले तिर्नु पर्ने सेवाहरू"</string>
- <string name="permgroupdesc_costMoney" msgid="3293301903409869495">"तपाईँलाई महँगो पर्न सक्ने कामहरू गर्नुहोस्।"</string>
- <string name="permgrouplab_messages" msgid="7521249148445456662">"तपाईंका सन्देशहरू"</string>
- <string name="permgroupdesc_messages" msgid="7821999071003699236">"तपाईँका SMS, इमेल र अन्य सन्देशहरू पढ्नुहोस् र लेख्नुहोस्।"</string>
- <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"तपाईँको निजी सूचना"</string>
- <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"तपाईँको सम्पर्क कार्डमा भण्डारण भएका तपाईँको बारेको जानकारीमा सिधा पहुँच पुर्‍याउनुहोस्।"</string>
- <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"तपाईँको सामाजिक सूचना"</string>
- <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"तपाईँको सम्पर्कहरू र सामाजिक जडानहरूको बारेको जानकारीमा सिधा पहुँच पुर्‍याउनुहोस्।"</string>
- <string name="permgrouplab_location" msgid="635149742436692049">"तपाईँको स्थान"</string>
- <string name="permgroupdesc_location" msgid="5704679763124170100">"तपाईँको भौतिक स्थान निरीक्षण गर्नुहोस्।"</string>
- <string name="permgrouplab_network" msgid="5808983377727109831">"नेटवर्क संचार"</string>
- <string name="permgroupdesc_network" msgid="4478299413241861987">"विभिन्न नेटवर्क सुविधाहरूमा पहुँच राख्नुहोस्।"</string>
- <string name="permgrouplab_bluetoothNetwork" msgid="1585403544162128109">"ब्लुटुथ"</string>
- <string name="permgroupdesc_bluetoothNetwork" msgid="5625288577164282391">"ब्लुटुथको माध्यमद्वारा उपकरणहरू र नेटवर्कहरूमाथि पहुँच राख्नुहोस्।"</string>
- <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"अडियो सेटिङहरू"</string>
- <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"अडियो सेटिङहरू बदल्नुहोस्।"</string>
- <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"ब्यट्रिलाई प्रभाव पार्छ"</string>
- <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"छिट्टै ब्याट्रि सकाउन सक्ने ती विशेषताहरू प्रयोग गर्नुहोस्।"</string>
- <string name="permgrouplab_calendar" msgid="5863508437783683902">"पात्रो"</string>
- <string name="permgroupdesc_calendar" msgid="5777534316982184416">"पात्रो तथा घटनाहरूमा प्रत्यक्ष पहुँच"</string>
- <string name="permgrouplab_dictionary" msgid="4148597128843641379">"प्रयोगकर्ता शब्दकोश पढ्नुहोस्"</string>
- <string name="permgroupdesc_dictionary" msgid="7921166355964764490">"प्रयोगकर्ता शब्दकोशमा शब्दहरू पढ्नुहोस्।"</string>
- <string name="permgrouplab_writeDictionary" msgid="8090237702432576788">"प्रयोगकर्ता शब्दकोश लेख्नुहोस्"</string>
- <string name="permgroupdesc_writeDictionary" msgid="2711561994497361646">"प्रयोगकर्ता शब्दकोशमा शब्दहरू थप्नुहोस्।"</string>
- <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"बुकमार्कहरू र इतिहास"</string>
- <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"बुकमार्कहरू र ब्राउजर इतिहासमा सिधा पहुँच।"</string>
- <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"अलार्म"</string>
- <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"अलार्म घडी सेट गर्नुहोस्।"</string>
- <string name="permgrouplab_voicemail" msgid="4162237145027592133">"भ्वाइस मेल"</string>
- <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"भ्वाइसमेलमा सिधा पहुँच।"</string>
- <string name="permgrouplab_microphone" msgid="171539900250043464">"माइक्रोफोन"</string>
- <string name="permgroupdesc_microphone" msgid="7106618286905738408">"मा[क्रोफोनबाट रेकर्ड अडियोमा सिधा पहुँच पुर्‍याउनुहोस्।"</string>
- <string name="permgrouplab_camera" msgid="4820372495894586615">"क्यामेरा"</string>
- <string name="permgroupdesc_camera" msgid="2933667372289567714">"तस्बिर वा भिडियो क्याप्चरको लागि क्यामेरामा सिधा पहुँच।"</string>
- <string name="permgrouplab_screenlock" msgid="8275500173330718168">"स्क्रिन लक गर्नुहोस्"</string>
- <string name="permgroupdesc_screenlock" msgid="7067497128925499401">"तपाईँको उपकरणमा लक स्क्रिनको व्यवहारलाई प्रभावित गर्ने क्षमता।"</string>
- <string name="permgrouplab_appInfo" msgid="8028789762634147725">"तपाईँका अनुप्रयोगहरूको सूचना"</string>
- <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"तपाईँको उपकरणमा अन्य अनुप्रयोगहरूको व्यवहारमा प्रभाव पार्ने क्षमता।"</string>
- <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"वालपेपर"</string>
- <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"उपकरण वालपेपर सेटिङहरू बदल्नुहोस्।"</string>
- <string name="permgrouplab_systemClock" msgid="406535759236612992">"घडी"</string>
- <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"उपकरण समय वा समय क्षेत्र परिवर्तन गर्नुहोस्।"</string>
- <string name="permgrouplab_statusBar" msgid="2095862568113945398">"स्थिति पट्टी"</string>
- <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"उपकरण स्थिति सेटिङहरू परिवर्तन गर्नुहोस्।"</string>
- <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"सिङ्क सेटिङहरू"</string>
- <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"सिङ्क सेटिङहरूमा पहुँच गर्नुहोस्।"</string>
- <string name="permgrouplab_accounts" msgid="3359646291125325519">"तपाईँका खाताहरू"</string>
- <string name="permgroupdesc_accounts" msgid="4948732641827091312">"उपलब्ध खाताहरू पहुँच गर्नुहोस्।"</string>
- <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"हार्डवेयर नियन्त्रणहरू"</string>
- <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"ह्यान्डसेटको हार्डवेयरमा प्रत्यक्ष पहुँच।"</string>
- <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"फोन कलहरू"</string>
- <string name="permgroupdesc_phoneCalls" msgid="7489701620446183770">"अनुगमन, रेकर्ड र फोन कलहरूको प्रसोधन गर्नुहोस।"</string>
- <string name="permgrouplab_systemTools" msgid="4652191644082714048">"प्रणाली औजारहरू"</string>
- <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"निम्न-स्तर पहुँच र प्रणालीको नियन्त्रण"</string>
- <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"विकसित टुलहरू"</string>
- <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"अनुप्रयोग विकासकर्ताहरूको लागि मात्र सुविधाहरूको आवश्यकता।"</string>
- <string name="permgrouplab_display" msgid="4279909676036402636">"अन्य अनुप्रयोग UI"</string>
- <string name="permgroupdesc_display" msgid="6051002031933013714">"अन्य अनुप्रयोगहरूको UI लाई असर पार्नुहोस्"</string>
- <string name="permgrouplab_storage" msgid="1971118770546336966">"भण्डारण"</string>
- <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USB भण्डारणमाथि पहुँच गर्नुहोस्।"</string>
- <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD कार्डमाथि पहुँच गर्नुहोस्।"</string>
- <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"पहुँचीकरण विशेषताहरू"</string>
- <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"सहयोगी प्रविधि भएको विशेषताहरूले अनुरोध गर्न सक्छन्।"</string>
- <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"विन्डो सामग्रीको पुनःबहाली गर्नुहोस्।"</string>
- <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"तपाईँको अन्तरक्रिया भइरहेको विन्डोको सामग्रीको निरीक्षण गर्नुहोस्।"</string>
- <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"छोएर गरिने खोजलाई सुचारु गर्नुहोस्"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"छोइएका आइटमहरू चर्को स्वरमा बोलिने छ र स्क्रिन इशाराहरूको प्रयोगले अन्वेषण गर्न सकिन्छ।"</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>
- <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"व्यक्तिगत डेटा जस्तै क्रेडिट कार्ड नम्बरहरू र पासवर्डहरू समावेश गर्दछ।"</string>
- <string name="permlab_statusBar" msgid="7417192629601890791">"स्थिति पट्टिलाई अक्षम वा संशोधित गर्नुहोस्"</string>
- <string name="permdesc_statusBar" msgid="8434669549504290975">"स्थिति पट्टि असक्षम पार्न वा प्रणाली आइकनहरू थप्न र हटाउन अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_statusBarService" msgid="7247281911387931485">"स्थिति पट्टि"</string>
- <string name="permdesc_statusBarService" msgid="716113660795976060">"अनुप्रयोगलाई स्थिति पट्टि हुन अनुमति दिन्छ।"</string>
- <string name="permlab_expandStatusBar" msgid="1148198785937489264">"स्थिति पट्टिलाई विस्तृत/सङ्कुचित गर्नुहोस्"</string>
- <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"अनुप्रयोगलाई स्थिति पट्टि विस्तार वा संकुचन गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"बहिर्गमन कलहरूलाई अर्को मार्ग दिनुहोस्"</string>
- <string name="permdesc_processOutgoingCalls" msgid="5331318931937402040">"बहिर्गमन कलहरूको प्रशोधन गर्न र डायल गरिने नम्बर परिवर्तन गर्न अनुप्रयोगलाई अनुमति दिन्छ। यो अनुमतिले अनुप्रयोगलाई मोनिटर गर्न, अन्यत्र पठाउन वा बाहिर जाने कलहरूलाई रोक्न दिन्छ।"</string>
- <string name="permlab_receiveSms" msgid="8673471768947895082">"पाठ सन्देशहरू (SMS) प्राप्त गर्नुहोस्"</string>
- <string name="permdesc_receiveSms" msgid="6424387754228766939">"अनुप्रयोगलाई SMS सन्देशहरू प्राप्त गर्न र प्रक्रिया गर्न अनुमति दिन्छ। यसको मतलब अनुप्रयोगले तपाईंको उपकरणमा पठाइएको सन्देशहरू तपाईंलाई नदेखाईनै मोनिटर गर्न वा मेटाउन सक्दछ।"</string>
- <string name="permlab_receiveMms" msgid="1821317344668257098">"पाठ सन्देश (MMS) प्राप्त गर्नुहोस्"</string>
- <string name="permdesc_receiveMms" msgid="533019437263212260">"अनुप्रयोगलाई MMS सन्देशहरू प्राप्त गर्न र प्रकृया गर्न अनुमति दिन्छ। यसको मतलब अनुप्रयोगले तपाईंको उपकरणमा पठाइएको सन्देशहरू तपाईंलाई नदेखाईनै मोनिटर गर्न वा मेटाउन सक्दछ।"</string>
- <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"आकस्मिक प्रसारणहरू प्राप्त गर्नुहोस्"</string>
- <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"अनुप्रयोगलाई आपतकालीन प्रसारण सन्देशहरू प्राप्त गर्न र प्रक्रिया गर्न अनुमति दिन्छ। यो अनुमति प्रणाली अनुप्रयोगहरूमा मात्र उपलब्ध छ।"</string>
- <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"सेल प्रसारित सन्देशहरू पढ्नुहोस्"</string>
- <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"तपाईंको उपकरणद्वारा प्राप्त सेल प्रसारण सन्देशहरू अनुप्रयोगलाई पढ्न अनुमति दिन्छ। सेल प्रसारण चेतावनीहरू केही स्थानहरूमा तपाईंलाई आपतकालीन गतिविधिहरूको बारेमा सचेत गराउन गरिएका छन्। खराब अनुप्रयोगहरूले एउटा आपतकालीन सेल प्रसारण प्राप्त गर्दछ जब तपाईंको उपकरणको प्रदर्शन वा अपरेशनको साथ हस्तक्षेप गर्न सक्दछन्।"</string>
- <string name="permlab_sendSms" msgid="5600830612147671529">"SMS सन्देशहरू पठाउनुहोस्"</string>
- <string name="permdesc_sendSms" msgid="7094729298204937667">"अनुप्रयोगलाई SMS सन्देशहरू पठाउन अनुमति दिन्छ। यसले अप्रत्यासित चार्जहरूको परिणाम दिन सक्दछ। खराब अनुप्रयोगहरूले तपाईंको पुष्टि बिना सन्देशहरू पठाएर तपाईंको पैसा खर्च गराउन सक्दछ।"</string>
- <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"प्रतिक्रिया-मार्फत-सन्देश घटनाहरू पठाउनुहोस्"</string>
- <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"अनुप्रयोगलाई आगत कलहरूको लागि प्रतिक्रिया-मार्फत-सन्देश घटनाहरूलाई अन्य सन्देश पठाउने अनुप्रयोगहरूमा अनुरोधहरू पठाउन अनुमति दिन्छ।"</string>
- <string name="permlab_readSms" msgid="8745086572213270480">"तपाईंका पाठ सन्देशहरू (SMS वा MMS) पढ्नुहोस्"</string>
- <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"तपाईँको ट्याब्लेट वा SIM कार्डमा भण्डारण भएका SMS सन्देशहरूलाई पढ्न अनुप्रयोगलाई अनुमति दिन्छ। यसले अनुप्रयोगलाई विषयवस्तु वा गोपनीयतालाई वेवास्ता गर्दै सबै SMS सन्देशहरू पढ्ने अनुमति दिन्छ।"</string>
- <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"तपाईँको फोन वा SIM कार्डमा भण्डारण भएका SMS सन्देशहरूलाई पढ्न अनुप्रयोगलाई अनुमति दिन्छ। यसले सबै SMS सन्देशहरूलाई पढ्नको लागि सामग्री वा विश्वसनियता बिना नै अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_writeSms" msgid="3216950472636214774">"तपाईँका पाठ सन्देशहरू सम्पादन गर्नुहोस् (SMS वा MMS)"</string>
- <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"अनुप्रयोगलाई तपाईंको ट्याब्लेट वा SIM कार्डमा भण्डार गरिएका SMS सन्देशहरू लेख्न अनुमति दिन्छ। खराब अनुप्रयोगहरूले तपाईंको सन्देशहरू मेटाउन सक्दछ।"</string>
- <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"तपाईँको फोन वा SIM कार्डमा भण्डारण भएका SMS सन्देशहरूलाई लेख्‍नको लागि अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले सायद तपाईँको सन्देशहरू मेटाउन सक्छन्।"</string>
- <string name="permlab_receiveWapPush" msgid="5991398711936590410">"पाठ सन्देशहरू (WAP) प्राप्त गर्नुहोस्"</string>
- <string name="permdesc_receiveWapPush" msgid="748232190220583385">"WAP सन्देशहरू प्राप्त गर्न र प्रशोधन गर्न अनुप्रयोगलाई अनुमति दिन्छ। यो अनुमतिमा मोनिटर गर्ने वा तपाईँलाई पठाइएका सन्देशहरू तपाईँलाई नदेखाई मेट्ने क्षमता समावेश हुन्छ।"</string>
- <string name="permlab_getTasks" msgid="6466095396623933906">"चलिरहेका अनुप्रयोगहरू पुनःबहाली गर्नुहोस्"</string>
- <string name="permdesc_getTasks" msgid="7454215995847658102">"वर्तमानमा र भरखरै चलिरहेका कार्यहरू बारेको सूचना पुनःबहाली गर्न अनुप्रयोगलाई अनुमित दिन्छ। यसले उपकरणमा प्रयोग भएका अनुप्रयोगहरूको बारेमा सूचना पत्ता लगाउन अनुप्रयोगलाई अनुमति दिन सक्छ।"</string>
- <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"प्रयोगकर्ताहरू तर्फ अन्तर्क्रिया गर्नुहोस्"</string>
- <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"अनुप्रयोगलाई उपकरणमा विभिन्न प्रयोगकर्ताहरू मार्फत कार्यहरू गर्न अनुमति दिन्छ। खराब अनुप्रयोगहरूले यो प्रयोगकर्ताहरू बिच सुरक्षा बिथोल्न प्रयोग गर्न सक्ने छन्।"</string>
- <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"कुराकानी प्रयोगकर्ताहरू बिच अन्तर्क्रिया गर्न पूर्ण अनुमति"</string>
- <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"प्रयोगकर्तासँगको कुराकानी सबै सम्भावनालाई अनुमति दिन्छ।"</string>
- <string name="permlab_manageUsers" msgid="1676150911672282428">"प्रयोगकर्ताहरू व्यवस्थापन गर्नुहोस्"</string>
- <string name="permdesc_manageUsers" msgid="8409306667645355638">"अनुप्रयोगलाई उपकरणमा, प्रश्न, सिर्जना र मेटाइसहित प्रयोगकर्ताहरूको प्रबन्ध गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"चलिरहेका अनुप्रयोगहरूको विवरण पुनःबहाली गर्नुहोस्"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"वर्तमानमा र भरखरै चलिरहेका कार्यहरूको बारेमा विस्तृत सूचना पुनःबहाली गर्न अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले अन्य अनुप्रयोगहरू बारेको निजी सूचना पत्ता लगाउन सक्छ।"</string>
- <string name="permlab_reorderTasks" msgid="2018575526934422779">"चलिरहेका अनुप्रयोगहरूलाई पुनःक्रम गराउनुहोस्"</string>
- <string name="permdesc_reorderTasks" msgid="7734217754877439351">"कामहरूलाई अग्रभाग र पृष्ठभूमिमा सार्न अनुप्रयोगलाई अनुमति दिन्छ। अनुप्रयोगले यो तपाईँको इनपुट बिना नै गर्न सक्छ।"</string>
- <string name="permlab_removeTasks" msgid="6821513401870377403">"चालु भइरहेका अनुप्रयोगहरू रोक्नुहोस्"</string>
- <string name="permdesc_removeTasks" msgid="1394714352062635493">"कामहरू हटाउन र उनीहरूको अनुप्रयोगहरूलाई बन्द गर्न अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले अन्य अनुप्रयोगहरूको व्यवहारलाई अबरोध गर्न सक्छन्।"</string>
- <string name="permlab_manageActivityStacks" msgid="7391191384027303065">"activity stacks को प्रबन्ध गर्नुहोस्"</string>
- <string name="permdesc_manageActivityStacks" msgid="1615881933034084440">"अनुप्रयोगलाई अन्य अनुप्रयोगहरू चल्ने activity stacks लाई थप्न, हटाउन र परिवर्तन गर्न अनुमति दिन्छ। खराब अनुप्रयोगहरूले अन्य अनुप्रयोगहरूको व्यवहारलाई विघटन गर्न सक्छन्।"</string>
- <string name="permlab_startAnyActivity" msgid="2918768238045206456">"कुनै गतिविधि सुरु गर्नुहोस्"</string>
- <string name="permdesc_startAnyActivity" msgid="997823695343584001">"अनुमति सुरक्षा वा निर्यात अवस्थालाई वास्ता नगरिकन कुनै पनि कार्य सुरु गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"स्क्रिन अनुकूलता सेट गर्नुहोस्"</string>
- <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"अन्य अनुप्रयोहरूको स्क्रिन मिल्दो मोडलाई नियन्त्रण गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। अन्य अनुप्रयोहरूको व्यवहार खराब अनुप्रयोगहरूले टुटाउन सक्छन्।"</string>
- <string name="permlab_setDebugApp" msgid="3022107198686584052">"अनुप्रयोग डिबग गर्ने सक्षम गर्नुहोस्"</string>
- <string name="permdesc_setDebugApp" msgid="4474512416299013256">"अनुप्रयोगलाई अन्य अनुप्रयोगको लागि डिबग गर्ने प्रक्रिया चालु गर्ने अनुमति दिन्छ। खराब अनुप्रयोगले अरू अनुप्रयोगहरू समाप्त गर्न यसको उपयोग गर्न सक्दछ।"</string>
- <string name="permlab_changeConfiguration" msgid="4162092185124234480">"प्रणाली प्रदर्शन सेटिङहरू परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"वर्तमान कन्फिगरेसन जस्तै लोक्याल वा सबैतिर फन्ट आकार बदल्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_enableCarMode" msgid="5684504058192921098">"कार मोड सक्षम गर्नुहोस्"</string>
- <string name="permdesc_enableCarMode" msgid="4853187425751419467">"कार मोडलाई सक्षम पार्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"अनुप्रयोगहरू बन्द गर्नुहोस्"</string>
- <string name="permdesc_killBackgroundProcesses" msgid="4593353235959733119">"अनुप्रयोगलाई अन्य अनुप्रयोगहरूको पृष्ठभूमि प्रक्रियाहरू बन्द गर्न अनुमति दिन्छ। यसले अन्य अनुप्रयोगहरूलाई चल्नबाट रोक्न सक्दछ।"</string>
- <string name="permlab_forceStopPackages" msgid="2329627428832067700">"अन्य अनुप्रयोगहरू दबाबमा रोक्नुहोस्"</string>
- <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"अन्य अनुप्रयोगहरूलाई बलपूर्वक बन्द गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_forceBack" msgid="652935204072584616">"अनुप्रयोग बन्द गर्न बल गर्नुहोस्"</string>
- <string name="permdesc_forceBack" msgid="3892295830419513623">"अग्रभागमा भएको कुनै गतिविधिलाई जबरजस्ती बन्द गर्न र फर्केर जानका लागि अनुप्रयोगलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूलाइ कहिल्यै आवश्यकता पर्दैन।"</string>
- <string name="permlab_dump" msgid="1681799862438954752">"प्रणालीको आन्तरिक स्थिति प्राप्त गर्नुहोस्"</string>
- <string name="permdesc_dump" msgid="1778299088692290329">"प्रणालीको आन्तरिक स्थिति पुनःबहाली गर्न अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले उनीहरूलाई सामान्यतः कहिल्यै नचाहिने व्यापक विविधताको निजी र सुरक्षित सूचना पुनःबहाली गर्न सक्छन्।"</string>
- <string name="permlab_retrieve_window_content" msgid="8022588608994589938">"स्क्रिन सामग्री बहाली गर्नुहोस्"</string>
- <string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"सक्रिय विन्डोको विषयवस्तुलाई पुनःबहाली गर्न अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले पुरै विन्डोको विषयवस्तु पुनःबहाली गर्न सक्छन् र पासवर्डहरूबाहेक यसका सबै पाठको जाँच गर्न सक्छन्।"</string>
- <string name="permlab_temporary_enable_accessibility" msgid="2312612135127310254">"पहुँचतालाई अस्थायी सक्षम गर्नुहोस्"</string>
- <string name="permdesc_temporary_enable_accessibility" msgid="8079456293182975464">"अनुप्रयोगलाई अस्थायी रूपमा उपकरणमाथि पहुँच राख्न अनुमति दिन्छ। खराब अनुप्रयोगले उपयोगकर्ताको सहमति बिना नै पहुँचलाई सक्षम गर्न सक्दछ।"</string>
- <string name="permlab_retrieve_window_info" msgid="8532295199112519378">"विन्डो जानकारी बहाली गर्नुहोस्"</string>
- <string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"अनुप्रयोगलाई विन्डो व्यवस्थापकबाट विन्डोहरूको बारेमा जानकारी प्राप्त गर्न अनुमति दिन्छ। खराब अनुप्रयोगले आन्तरिक प्रणाली उपयोगको लागि निमित्त जानकारी पनि प्राप्त गर्न सक्दछ।"</string>
- <string name="permlab_filter_events" msgid="8675535648807427389">"घटनाहरू छान्नुहोस्"</string>
- <string name="permdesc_filter_events" msgid="8006236315888347680">"इन्पुट फिल्टर जुन सबै प्रयोगकर्ता घटनाहरू पठाइनुभन्दा पहिले फिल्टर गर्नेलाई दर्ता गर्न अनुप्रयोगलाई अनुमति दिन्छ। प्रयोगकर्ताको हस्तक्षेप बिना नै UI प्रणाली खराब अनुप्रयोगले नियन्त्रण गर्न सक्छन्।"</string>
- <string name="permlab_magnify_display" msgid="5973626738170618775">"प्रदर्शन बढाउनुहोस्"</string>
- <string name="permdesc_magnify_display" msgid="7121235684515003792">"अनुप्रयोगलाई प्रदर्शनको सामग्री आवर्धन गर्न अनुमति दिन्छ। खराब अनुप्रयोगहरूले प्रदर्शन सामग्री संक्रमण गर्न सक्दछन् जसले उपकरणलाई अनुपयोगी बनाउँदछ।"</string>
- <string name="permlab_shutdown" msgid="7185747824038909016">"आंशिक बन्द"</string>
- <string name="permdesc_shutdown" msgid="7046500838746291775">"गतिविधि व्यवस्थापकलाई बन्द गर्ने अवस्थामा राख्छ। पूर्ण बन्द गर्ने काम गर्दैन।"</string>
- <string name="permlab_stopAppSwitches" msgid="4138608610717425573">"अनुप्रयोग स्विचहरू जोगाउनुहोस्"</string>
- <string name="permdesc_stopAppSwitches" msgid="8262195802582255021">"अन्य अनुप्रयोगमा स्विच गर्नबाट प्रयोगकर्ताहरूलाई रोक्छ।"</string>
- <string name="permlab_getTopActivityInfo" msgid="2537922311411546016">"वर्तमान अनुप्रयोगको जानकारी प्राप्त गर्नुहोस्"</string>
- <string name="permdesc_getTopActivityInfo" msgid="2512448855496067131">"होल्डरलाई स्क्रिनको पृष्ठभूमिमा वर्तमान अनुप्रयोगको बारेमा व्यक्तिगत जानकारी पुनःप्राप्त गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_runSetActivityWatcher" msgid="892239094867182656">"सबै अनुप्रयोग सुरुवात गर्ने निरीक्षण र नियन्त्रण गर्नुहोस्"</string>
- <string name="permdesc_runSetActivityWatcher" msgid="6003603162578577406">"अनुप्रयोगलाई कसरी प्रणाली सुरुवात गतिहरू मोनिटर गर्न र नियन्त्रण गर्न अनुमति दिन्छ। खराब अनुप्रयोगहरूले प्रणालीमा पूर्ण सहमत गर्न सक्दछ। यो अनुमति केवल विकासको लागि आवश्यक छ, साधारण प्रयोगको लागि कहिले होइन।"</string>
- <string name="permlab_broadcastPackageRemoved" msgid="2576333434893532475">"प्याकेज हटाइएको प्रसारणलाई पठाउनुहोस्"</string>
- <string name="permdesc_broadcastPackageRemoved" msgid="6621901216207931089">"अनुप्रयोगलाई सूचना प्रसारण गर्न अनुमति दिन्छ जुन अनुप्रयोग प्याकेज हटाइएको छ। खराब अनु्प्रयोगहरूले यो कुनै अन्य चालु अनु्प्रयोग बन्द गर्न प्रयोग गर्न सक्दछन्।"</string>
- <string name="permlab_broadcastSmsReceived" msgid="5689095009030336593">"SMS-प्राप्त प्रसारण पठाउनुहोस्"</string>
- <string name="permdesc_broadcastSmsReceived" msgid="4152037720034365492">"त्यो एउटा SMS सन्देशबाट प्राप्त भएको सूचनालाई प्रसारण गर्न अनुप्रयोगलाई अनुमति दिन्छ। आउँदै गरेको SMS सन्देशहरूलाई जालसाजी गर्न सायद खराब भएका अनुप्रयोगहरूले यसलाई प्रयोग गर्न सक्छन्।"</string>
- <string name="permlab_broadcastWapPush" msgid="3145347413028582371">"WAP-PUSH-प्राप्त प्रसारण पठाउनुहोस्"</string>
- <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"अनुप्रयोगलाई सूचना प्रसारण गर्न अनुमति दिन्छ जुन एउटा WAP PUSH सन्देश प्राप्त भएको छ। खराब अनुप्रयोगहरूले यो MMS सन्देश बिगार्न वा मौन तरिकाले कुनै पनि वेबपृष्ठको सामग्री खराब विभेदहरूसँग बदल्न प्रयोग गर्न सक्दछन्।"</string>
- <string name="permlab_setProcessLimit" msgid="2451873664363662666">"चालु प्रशोधनहरूको सङ्ख्या सीमति गर्नुहोस्"</string>
- <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"अनुप्रयोगलाई चालु हुने प्रक्रियाहरूको अधिकतम संख्या नियन्त्रण गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूको लागि कहिले पनि आवश्यक नपर्न सक्दछ।"</string>
- <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"पृष्ठभूमि अनुप्रयोगहरू बन्द गर्न दबाब दिनुहोस्"</string>
- <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"अनुप्रयोगलाई गतिविधिहरू सधैँ समाप्त भयो कि भएन जब कि जति सक्दो तिनीहरू पृष्ठभूमिमा जान्छन् भन्ने नियन्त्रण गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूको लागि कहिले पनि आवश्यक नपर्न सक्दछ।"</string>
- <string name="permlab_batteryStats" msgid="2789610673514103364">"ब्याट्रि तथ्याङ्हरू पढ्नुहोस्"</string>
- <string name="permdesc_batteryStats" msgid="5897346582882915114">"वर्तमान थोरै ब्याट्री प्रयोग डेटा पढ्नको लागि एक अनुप्रयोगले अनुमति दिन्छ। जुन अनुप्रयोग तपाईँले प्रयोग गरीरहनुभएको छ त्यस्को बारेका पुर्ण जानकारी प्राप्त गर्न सायद अनुप्रयोगले अनुमति दिन्छ।"</string>
- <string name="permlab_updateBatteryStats" msgid="3719689764536379557">"ब्याट्रि तथ्याङ्कलाई परिमार्जन गर्नुहोस्"</string>
- <string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"अनुप्रयोगलाई संकलित ब्याट्रि तथ्याङ्कहरू परिमार्जन गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूको प्रयोगको लागि होइन।"</string>
- <string name="permlab_getAppOpsStats" msgid="1508779687436585744">"अनुप्रयोग संचालनका तथ्याङ्कहरू पुनःबहाली गर्नुहोस्"</string>
- <string name="permdesc_getAppOpsStats" msgid="6243887041577912877">"सङ्कलन गरिएका अनुप्रयोग संचालन तथ्याङ्लाई पुनः प्राप्त गर्न अनुप्रयोगलाई अनुमति दिन्छ। सामान्य अनुप्रयोगबाट प्रयोगको लागि होइन।"</string>
- <string name="permlab_updateAppOpsStats" msgid="8829097373851521505">"अनुप्रयोग संचलान तथ्याङ्कहरूलाई परिमार्जन गर्नुहोस्"</string>
- <string name="permdesc_updateAppOpsStats" msgid="50784596594403483">"सङ्कलन गरिएका अनुप्रयोग संचालन तथ्याङ्लाई परिमार्जन गर्न अनुप्रयोगलाई अनुमति दिन्छ। सामान्य अनुप्रयोगबाट प्रयोगको लागि होइन।"</string>
- <string name="permlab_backup" msgid="470013022865453920">"प्रणाली ब्यकअप नियन्त्रण गर्नुहोस् र पुनः बहाली गर्नुहोस्"</string>
- <string name="permdesc_backup" msgid="6912230525140589891">"प्रणालीको जगेडा नियन्त्रण गर्न र पुनःप्राप्तिको संयोजन गर्न अनुप्रयोगलाई अनुमित दिन्छ। सामान्य अनुप्रयोगद्वारा प्रयोगको लागि होइन।"</string>
- <string name="permlab_confirm_full_backup" msgid="5557071325804469102">"पूर्ण जगेडा गर्न वा प्रक्रिया पुनःबहाली गर्न निश्चित गर्नुहोस्"</string>
- <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"UI को पूर्ण जगेडा निश्चिन्तता सुरु गर्नका लागि अनुप्रयोगलाई अनुमति दिन्छ। कुनै अनुप्रयोगबाट प्रयोग नगरिने।"</string>
- <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"अनधिकृत बिन्डोहरू प्रदर्शन गर्नुहोस्"</string>
- <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"अनुप्रयोगलाई विन्डोहरू सिर्जना गर्न अनुमति दिन्छ जुन आन्तरिक प्रणाली प्रयोगकर्ता इन्टरफेसद्वारा प्रयोग गर्न अभिप्रेरित छ। साधारण अनुप्रयोगहरूद्वारा प्रयोगको लागि होइन।"</string>
- <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"अन्य अनुप्रयोगहरूमा चित्र कोर्नुहोस्"</string>
- <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"अरू अनुप्रयोगहरूमाथि वा प्रयोगकर्ता इन्टरफेसका भागहरूमा चित्र कोर्न अनुप्रयोगलाई अनुमति दिन्छ। तिनीहरूले कुनै अनुप्रयोगमा इन्टरफेको तपाईँको प्रयोगसँग हस्तक्षेप गर्न वा तपाईँ अन्य अनुप्रयोगहरूमा के देखिरहनु भएको छ भन्ने सोच्न हुन्छ भन्ने बदल्न सक्छन्।"</string>
- <string name="permlab_setAnimationScale" msgid="2805103241153907174">"ग्लोबल सजीविकरण गति परिमार्जन गर्नुहोस्"</string>
- <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"विश्वब्यापि सजीविकरण(द्रुत वा ढिला सजीविकरणहरू) लाई कुनै पनि समय परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_manageAppTokens" msgid="1286505717050121370">"अनुप्रयोग टोकनहरू प्रबन्ध गर्नुहोस्"</string>
- <string name="permdesc_manageAppTokens" msgid="8043431713014395671">"अनुप्रयोगलाई आफ्ना टोकनहरू सिर्जना गर्न र उनीहरूको साधारण Z-क्रमाङ्कन बाइपास गरेर प्रबन्ध गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूको लागि कहिल्यै पनि आवश्यक नहुन सक्दछ।"</string>
- <string name="permlab_freezeScreen" msgid="4708181184441880175">"स्क्रिन फ्रिज गर्नुहोस्"</string>
- <string name="permdesc_freezeScreen" msgid="8558923789222670064">"अनुप्रयोगलाई पूर्ण-स्क्रिन संक्रमणको लागि अस्थायी रूपमा स्क्रिन स्थिर गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_injectEvents" msgid="1378746584023586600">"कुञ्जीहरू र नियन्त्रण बटनहरू थिच्नुहोस्"</string>
- <string name="permdesc_injectEvents" product="tablet" msgid="206352565599968632">"यसका आफ्ना इनपुट घटनाहरू (कि थिचाइहरू, आदि) अन्य अनुप्रयोगहरूलाई वितरण गर्न अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले यसलाई ट्याब्लेटसम्म लैजान प्रयोग गर्न सक्छन्।"</string>
- <string name="permdesc_injectEvents" product="default" msgid="653128057572326253">"यस्को आफ्नै निवेश घटनाहरू (कि थिचाइहरू, आदि.) अन्य अनुप्रोयगहरूलाई पु्र्‍याउन अनुप्रयोगलाई अनुमति दिन्छ। फोनलाई हस्तक्षेप गर्न यसको प्रयोग खराब अनुप्रयोगहरूले गर्न सक्छन्।"</string>
- <string name="permlab_readInputState" msgid="469428900041249234">"तपाईंले के टाइप गर्नुहुन्छ र के कार्यहरू लिनुहुन्छ रेकर्ड गर्नुहोस्"</string>
- <string name="permdesc_readInputState" msgid="8387754901688728043">"अर्को अनुप्रयोग(जस्तै पासवर्ड टाइप गराइ)सँग अन्तर्क्रिया गरेको बेला पनि तपाईँले थिचेका किहरूलाइ हेर्न अनुप्रयोगलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूलाई कहिल्यै आवश्यक हुँदैन।"</string>
- <string name="permlab_bindInputMethod" msgid="3360064620230515776">"एउटा निवेश तरिकामा बाँध्नुहोस्"</string>
- <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"एउटा निवेश तरिकाको उच्च स्तरको इन्टरफेसलाई पक्का गर्नको लागि समाती राख्नेलाई अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"एउटा पहुँच सेवासँग जोड्नुहोस्"</string>
- <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"एक पहुँच सेवाको उच्च स्तरको कुराकानीलाई पक्का गर्नको लागि समाती राख्नेले अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_bindPrintService" msgid="8462815179572748761">"एउटा प्रिन्ट सेवासँग जोड्नुहोस्"</string>
- <string name="permdesc_bindPrintService" msgid="7960067623209111135">"एउटा प्रिन्ट सेवाको उच्च स्तरको इन्टरफेसलाई पक्का गर्नको लागि प्रयोगकर्तालाई अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_bindPrintSpoolerService" msgid="6807762783744125954">"प्रिन्ट स्पुलर सेवासँग बाध्नुहोस्"</string>
- <string name="permdesc_bindPrintSpoolerService" msgid="3680552285933318372">"प्रिन्ट स्पुलर सेवाको शीर्ष तह इन्टर्फेसलाई बाहकसँग बाँध्न अनुमति दिन्छ। सामान्य अनुप्रयोगलाई कहिल्यै पनि आवाश्यक नपर्न सक्छ।"</string>
- <string name="permlab_bindNfcService" msgid="2752731300419410724">"NFC सेवामा बाँध्नुहोस्"</string>
- <string name="permdesc_bindNfcService" msgid="6120647629174066862">"NFC कार्डहरू इमुलेट गर्ने अनुप्रयोगहरूलाई बाँध्नका लागि होल्डरलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूका लागि कहिल्यै पनि आवश्यक पर्दैन।"</string>
- <string name="permlab_bindTextService" msgid="7358378401915287938">"एउटा पाठ सेवासँग संगठित हुनुहोस्"</string>
- <string name="permdesc_bindTextService" msgid="8151968910973998670">"एउटा पाठ सेवाको (उदाहरण शब्द परीक्षणसेवा) उच्च स्तरको इन्टरफेसलाई पक्का गर्नको लागि समाती राख्नेलाई अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_bindVpnService" msgid="4708596021161473255">"VPN सेवासँग बाँध्नुहोस्।"</string>
- <string name="permdesc_bindVpnService" msgid="2067845564581693905">"एक Vpn सेवाको उच्च स्तरको कुराकानीलाई पक्का गर्नको लागि समाती राख्नेले अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_bindWallpaper" msgid="8716400279937856462">"एउटा वालपेपरमा बाँध्नुहोस्"</string>
- <string name="permdesc_bindWallpaper" msgid="7108428692595491668">"वालपेपरको माथिल्लो स्तरको इन्टरफेसमा बाँध्न धारकलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्दैन।"</string>
- <string name="permlab_bindRemoteViews" msgid="5697987759897367099">"एउटा विजेट सेवासँग संगठित हुनुहोस्"</string>
- <string name="permdesc_bindRemoteViews" msgid="4717987810137692572">"एउटा विजेट सेवाको उच्च स्तरको इन्टरफेसलाई पक्का गर्नको लागि समाती राख्नेलाई अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_bindDeviceAdmin" msgid="8704986163711455010">"उपकरणको प्रबन्धसँग अन्तरक्रिया गर्नुहोस्"</string>
- <string name="permdesc_bindDeviceAdmin" msgid="569715419543907930">"उपकरण प्रशासक लाई आशय पठाउन समाती राख्‍नेलाई अनुमति दिन्छ। साधारण अनुप्रयोहरूको लागि कहिल्यै पनी आवश्यक पर्दैन।"</string>
- <string name="permlab_manageDeviceAdmins" msgid="4248828900045808722">"एउटा उपकरण व्यवस्थापक थप गर्नुहोस् वा हटाउनुहोस्"</string>
- <string name="permdesc_manageDeviceAdmins" msgid="5025608167709942485">"होल्डरलाई सक्रिय उपकरण व्यवस्थापकहरू थप गर्न वा हटाउन अनुमति दिन्छ। साधारण अनुप्रयोगहरूको लागि कहिल्यै पनि आवश्यक नहुन सक्दछ।"</string>
- <string name="permlab_setOrientation" msgid="3365947717163866844">"स्क्रिन अभिमुखिकरण परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_setOrientation" msgid="3046126619316671476">"अनुप्रयोगलाई कुनै पनि समयमा स्क्रिनको परिक्रमण परिवर्तन गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूको लागि कहिले पनि आवश्यक नपर्न सक्दछ।"</string>
- <string name="permlab_setPointerSpeed" msgid="9175371613322562934">"सङ्केतक गति बदल्नुहोस्"</string>
- <string name="permdesc_setPointerSpeed" msgid="6866563234274104233">"कुनै पनि समयमा माउस परिवर्तन गर्न वा ट्राकप्याड संकेतकको गति बदल्न अनुप्रयोगलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूको लागि कहिल्यै नचाहिन सक्छ।"</string>
- <string name="permlab_setKeyboardLayout" msgid="4778731703600909340">"किबोर्ड लेआउट परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_setKeyboardLayout" msgid="8480016771134175879">"किबोर्ड लेआउटलाई परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई सायद कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_signalPersistentProcesses" msgid="4539002991947376659">"Linux संकेतहरू अनुप्रयोगलाई पठाउनुहोस्"</string>
- <string name="permdesc_signalPersistentProcesses" msgid="4896992079182649141">"सबै चलिरहेका प्रक्रियाहरूमा पठाइएका संकेतलाई अनुरोध गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_persistentActivity" msgid="8841113627955563938">"अनुप्रयोगहरू जहिले पनि चल्ने बनाउनुहोस्"</string>
- <string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"यसको आफ्नै मेमोरीमा दृढ भएकोको अंश बनाउनको लागि अनुप्रयोगलाई अनुमति दिन्छ। ट्याब्लेटलाई ढिलो गराउँदै गरेका अन्य अनुप्रयोगहरूलाई सीमित मात्रामा यसले मेमोरी उपलब्ध गराउन सक्छ।"</string>
- <string name="permdesc_persistentActivity" product="default" msgid="4384760047508278272">"अनुप्रयोगलाई मेमोरीमा आफैंको निरन्तरको अंश बनाउन अनुमति दिन्छ। यसले फोनलाई ढिला बनाएर अन्य अनुप्रयोगहरूमा मेमोरी SIMित गर्न सक्दछन्।"</string>
- <string name="permlab_deletePackages" msgid="184385129537705938">"अनुप्रयोगहरू मेटाउनुहोस्"</string>
- <string name="permdesc_deletePackages" msgid="7411480275167205081">"अनुप्रयोगलाई एन्ड्रोइड प्याकेजहरू मेटाउन अनुमति दिन्छ। खराब अनुप्रयोगहरूले यसलाई महत्त्वपूर्ण अनुप्रयोगहरू मेटाउन प्रयोग गर्न सक्दछन्।"</string>
- <string name="permlab_clearAppUserData" msgid="274109191845842756">"अन्य अनुप्रयोगहरूको डेटा मेटाउनुहोस्"</string>
- <string name="permdesc_clearAppUserData" msgid="4625323684125459488">"प्रयगकर्ता डेटा हटाउन अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_deleteCacheFiles" msgid="3128665571837408675">"अन्य अनुप्रयोगहरूको क्यासहरू मेटाउनुहोस्"</string>
- <string name="permdesc_deleteCacheFiles" msgid="3812998599006730196">"अनुप्रयोगलाई क्यास फाइलहरू मेटाउन अनुमति दिन्छ।"</string>
- <string name="permlab_getPackageSize" msgid="7472921768357981986">"अनुप्रयोग भण्डारण ठाउँको मापन गर्नुहोस्"</string>
- <string name="permdesc_getPackageSize" msgid="3921068154420738296">"अनुप्रयोगलाई यसको कोड, डेटा, र क्यास आकारहरू पुनःप्राप्त गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_installPackages" msgid="2199128482820306924">"अनुप्रयोगहरू सिधै स्थापना गर्नुहोस्"</string>
- <string name="permdesc_installPackages" msgid="5628530972548071284">"नयाँ स्थापना गर्न वा एन्ड्रोइड प्याकेजहरू अद्यावधिक गर्न अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले यसलाई मनपरी रूपमा शक्तिशाली अनुमतिहरू भएका नयाँ अनुप्रयोगहरू थप्न प्रयोग गर्न सक्छन्।"</string>
- <string name="permlab_clearAppCache" msgid="7487279391723526815">"सबै अनुप्रयोग क्यास डेटा मेटाउनुहोस्"</string>
- <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"अन्य अनुप्रयोगहरूको क्यास डाइरेक्टरीहरूमा फाइलहरू हटाएर ट्याब्लेटको भण्डारण खाली गर्न अनुप्रयोगहरूलाई अनुमति दिन्छ। उनीहरूले आफ्नो डेटा पुनःबहाली गर्न पर्ने हुनाले यसले अन्य अनुप्रयोगहरूलाई स्टार्ट हुन निकै ढिलो गराउन सक्छ।"</string>
- <string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"अनुप्रयोगलाई अन्य अनुप्रयोगहरूको क्यास डाइरेक्टरीमा फाइलहरू मेटाएर फोन भण्डारण खाली गर्न अनुमति दिन्छ। यसले अन्य अनुप्रयोगहरूलाई बढी ढिला सुरु गराउँछ किनकि तिनीहरूले आफ्नो डेटा पुनःप्राप्ति गर्न आवश्यक पर्ने हुन्छ।"</string>
- <string name="permlab_movePackage" msgid="3289890271645921411">"अनुप्रयोग स्रोतहरू सार्नुहोस्"</string>
- <string name="permdesc_movePackage" msgid="319562217778244524">"अनुप्रयोग स्रोतहरू आन्तरिकबाट बाह्य मेडियामा र विपरितमा लैजान अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_readLogs" msgid="6615778543198967614">"संवेनशील लग डेटा पढ्नुहोस्"</string>
- <string name="permdesc_readLogs" product="tablet" msgid="82061313293455151">"प्रणालीका विभिन्न फाइलहरूबाट पढ्न अनुप्रयोगलाई अनुमति दिन्छ। सम्भाव्य रूपमा व्यक्तिगत र निजी सूचनासहित तपाईँ ट्याब्लेटसँग के गरिरहनु भएको छ भन्ने बारेको साधारण सूचना पत्ता लगाउन यसलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_readLogs" product="default" msgid="2063438140241560443">"प्रणालीका विभिन्न फाइलहरूबाट पढ्न अनुप्रयोगलाई अनुमति दिन्छ। सम्भाव्य रूपमा व्यक्तिगत र निजी सूचनासहित तपाईँ फोनसँग के गरिरहनु भएको छ भन्ने बारेको साधारण सूचना पत्ता लगाउन यसलाई अनुमति दिन्छ।"</string>
- <string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"पछाडि बजाउनको लागि कुनै मिडिया प्रयोग गर्नुहोस्"</string>
- <string name="permdesc_anyCodecForPlayback" msgid="8283912488433189010">"अनुप्रयोगलाई प्लेब्याक डिकोड गर्न कुनै पनि स्थापित मिडिया डिकोडर प्रयोगको लागि अनुमति दिन्छ।"</string>
- <string name="permlab_manageCaCertificates" msgid="1678391896786882014">"विश्वसनीय प्रमाणहरू प्रबन्ध गर्नुहोस्"</string>
- <string name="permdesc_manageCaCertificates" msgid="4015644047196937014">"अनुप्रयोगलाई CA प्रमाणपत्रहरू विश्वसनीय प्रमाणहरूका रूपमा स्थापना गर्न र हटाउन अनुमति दिन्छ।"</string>
- <string name="permlab_diagnostic" msgid="8076743953908000342">"diag को स्वामित्वमा रहेको संसाधनहरूमा पढ्नुहोस्/लेख्नुहोस्"</string>
- <string name="permdesc_diagnostic" msgid="6608295692002452283">"अनुप्रयोगलाई diag समूहद्वारा स्वामित्व प्राप्त कुनै पनि स्रोतहरूमा पढ्न र लेख्न अनुमति दिन्छ; उदाहरणको लागि, /dev मा फाइलहरू। यसले सम्भवतः प्रणाली स्थिरता र सुरक्षामा प्रभाव पार्न सक्दछ। यो केवल निर्माता वा संचालकद्वारा हार्डवेयर-निर्दिष्टको लागि प्रयोग हुन सक्दछ।"</string>
- <string name="permlab_changeComponentState" msgid="6335576775711095931">"अनुप्रयोग अंशहरू सक्षम वा अक्षम गर्नुहोस्"</string>
- <string name="permdesc_changeComponentState" product="tablet" msgid="8887435740982237294">"अन्य अनुप्रयोग सक्षम छ वा छैन भन्ने कुराको परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। महत्त्वपूर्ण फोन सक्षमता खराब अनुप्रोगहरूले असक्षम पार्न प्रयोग गर्न सक्छन्। यो अनुमतिसँगै होसियारी अपनाउनु पर्छ, अनुप्रयोग विषय सूचीमा प्रयोग नहुने, असंगत, अस्थिर अवस्था भएको प्राप्त हुने सम्भावना हुन्छ।"</string>
- <string name="permdesc_changeComponentState" product="default" msgid="1827232484416505615">"अन्य अनुप्रयोगको अंश सक्षम छ वा छैन भन्नेमा परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। महत्त्वपूर्ण फोन सक्षमता खराब अनुप्रोगहरूले असक्षम पार्न प्रयोग गर्न सक्छन्। यो अनुमतिसँगै होसियारी अपनाउनु पर्छ, अनुप्रयोग विषय सूचीमा प्रयोग नहुने, असंगत, अस्थिर अवस्था भएको प्राप्त हुने सम्भावना हुन्छ।"</string>
- <string name="permlab_grantRevokePermissions" msgid="4627315351093508795">"अनुमतिहरू प्रदान गर्नुहोस् वा रद्द गर्नुहोस्"</string>
- <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"अनुप्रयोगलाई यो वा अन्य अनुप्रयोगहरूको लागि निर्दिष्ट स्वीकृतिहरू प्रदान गर्न वा रद्द गर्न अनुमति दिन्छ। खराब अनुप्रयोगहरूले यो तपाईंले अनुमति प्रदान नगर्नुभएका सुविधाहरूमा पहुँच गर्न सक्दछन्।"</string>
- <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"विशेष रूपमा मान्य अनुप्रयोगहरू सेट गर्नुहोस"</string>
- <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"तपाईँको मनपर्ने अनुप्रयोगलाई परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले चलिरहेका ती अनुप्रयोहरूलाई चुपचाप रूपमा परिवर्तन गर्न सक्छन्, तपाईँबाट निजी डेटा संकलन गर्नको लागि भइरहेको अनुप्रयोगलाई स्पुफ गर्न सक्छन्।"</string>
- <string name="permlab_writeSettings" msgid="2226195290955224730">"प्रणाली सेटिङहरू परिमार्जन गर्नुहोस्"</string>
- <string name="permdesc_writeSettings" msgid="7775723441558907181">"प्रणालीका सेटिङ डेटालाई परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले सायद तपाईँको प्रणालीको कन्फिगरेसनलाई क्षति पुर्‍याउन सक्छन्।"</string>
- <string name="permlab_writeSecureSettings" msgid="204676251876718288">"सुरक्षित प्रणाली सेटिङहरू परिमार्जन गर्नुहोस्"</string>
- <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"प्रणालीको सुरक्षित सेटिङ डेटा परिमार्जन गर्न अनुप्रयोगलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूको प्रयोगको लागि होइन्।"</string>
- <string name="permlab_writeGservices" msgid="2149426664226152185">"Google सेवा नक्सा परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_writeGservices" msgid="1287309437638380229">"अनुप्रयोगलाई Google सेवा नक्साहरू परिमार्जन गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूद्वाराको प्रयोगको लागि होइन।"</string>
- <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"स्टार्टअपमा चलाउनुहोस्"</string>
- <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"आनुप्रयोगलाई प्रणाली बुट प्रक्रिया पूर्ण हुने बितिकै आफैलाई सुरु गर्ने अनुमति दिन्छ। यसले ट्याब्लेट सुरु गर्नमा ढिला गर्न सक्दछ र अनुप्रयोगलाई समग्रमा ट्याब्लेट सधैँ चालु गरेर ढिला बनाउँदछ।"</string>
- <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"अनुप्रयोगलाई प्रणाली बुट गरी सकेपछि जति सक्दो चाँडो आफैंमा सुरु गर्न अनुमति दिन्छ। यसले फोन सुरु गर्नमा ढिला गर्न सक्दछ र अनप्रयोगलाई समग्रमा फोन सधैँ चालु गरेर ढिला बनाउँदछ।"</string>
- <string name="permlab_broadcastSticky" msgid="7919126372606881614">"स्टिकि प्रसारण पठाउनुहोस्"</string>
- <string name="permdesc_broadcastSticky" product="tablet" msgid="7749760494399915651">"औपचारिक प्रसारणलाई पठाउनको लागि एउटा अनुप्रयोगलाई अनुमति दिन्छ, जुन प्रसारण समाप्त भएपछि बाँकी रहन्छ। अत्याधिक प्रयोगले धेरै मेमोरी प्रयोग गरेको कारणले ट्याब्लेटलाई ढिलो र अस्थिर बनाउन सक्छ।"</string>
- <string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"औपचारिक प्रसारणलाई पठाउनको लागि एक अनुप्रयोगलाई अनुमति दिन्छ, जुन प्रसारण समाप्त भएपछि बाँकी रहन्छ। अत्याधिक प्रयोगले धेरै मेमोरी प्रयोग गरेको कारणले फोनलाई ढिलो र अस्थिर बनाउन सक्छ।"</string>
- <string name="permlab_readContacts" msgid="8348481131899886131">"तपाईँका सम्पर्कहरू पढ्नुहोस्"</string>
- <string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"अनुप्रयोगलाई निर्दिष्ट व्यक्तिगतसँग अन्य तरिकाहरूबाट कल गर्नु भएका, इमेल गर्नु भएका वा अन्तर्क्रिया गर्नुभएका आवृतिसहितको तपाईंको ट्याब्लेटमा भण्डारण गरिएका सम्पर्कहरूको डेटा पढ्न अनुमति दिन्छ। यो अनुमतिले तपाईंको सम्पर्क डेटा बचत गर्न अनुमति दिन्छ, र खराब अनुप्रयोगहरूले तपाईंको जानकारी बिना सम्पर्क डेटा साझेदारी गर्न सक्दछन्।"</string>
- <string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"तपाईँले विशेष व्यक्तिहरूसँग अर्को तरिकाबाट कल गर्नुभएका, इमेल गर्नुभएका वा संचार गर्नुभएका आवृतिसहित तपाईँको फोनमा भण्डारण भएका डेटाको बारेमा पढ्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। यो अनुमतिले अनुप्रयोगलाई तपाईँको सम्पर्क डेटा बचत गर्नको लागि अनुमति दिन्छ, र तपाईँको ज्ञान बिना नै खराब अनुप्रयोगहरूले सायद सम्पर्क डेटा साझेदारी गर्न सक्छन्।"</string>
- <string name="permlab_writeContacts" msgid="5107492086416793544">"तपाईँका सम्पर्कहरू परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"अन्य तरिकाका आवृतिहरूसँग जुन तपाईँले कल, इमेल, वा विशेष सम्पर्क गर्नुभएकासहित तपाईँको ट्याब्लेटमा भण्डारण भएका सम्पर्कहरूको बारेको डेटालाई परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। यस अनुमतिले सम्पर्क डेटालाई मेटाउनको लागि अनुमति दिन्छ।"</string>
- <string name="permdesc_writeContacts" product="default" msgid="589869224625163558">"तपाईँले बारम्बार कल गरेका, इमेल गरेका, वा विशेष सम्पर्कहरूसँग सञ्चार गरेका सहित तपाईँको फोनमा भण्डारण गरेका तपाईँका सम्पर्कहरू परिमार्जन गर्न अनुप्रयोगलाई अनुमति दिन्छ। यो अनुमतिले अनुप्रयोगलाई सम्पर्क डेटा मेटाउन दिन्छ।"</string>
- <string name="permlab_readCallLog" msgid="3478133184624102739">"कल लग पढ्नुहोस्"</string>
- <string name="permdesc_readCallLog" product="tablet" msgid="3700645184870760285">"अनुप्रयोगलाई तपाईँको ट्याब्लेटको कल लग, आगमन र बहिर्गमन कलहरू बारे डेटा सहितको कल लग पढ्न अनुमति दिन्छ। यस अनुमतिले अनुप्रयोगहरूलाई तपाईँको कल लग डेटाहरूको बचत गर्न अनुमति दिन्छ, र खराब अनुप्रयोगहरूले तपाईँको जानकारी बिना नै यो कल लग डेटालाई अरूसँग साझेदार गर्न सक्छन्।"</string>
- <string name="permdesc_readCallLog" product="default" msgid="5777725796813217244">"भित्र आउने र बाहिर जाने कलहरूसहित तपाईँको फनको कल लग पढ्न अनुप्रयोगलाई अनुमति दिन्छ। यो अनुमतिले अनुप्रयोगहरूलाई तपाईँका कल लग डेटा बचत गर्न दिन्छ र खराब अनुप्रयोगहरूले तपाईँले थाहै नपाई कल लग डेटालाई साझेदारी गर्न सक्छन्।"</string>
- <string name="permlab_writeCallLog" msgid="8552045664743499354">"कल लग लेख्‍नुहोस्"</string>
- <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"आगमन तथा बहर्गमन डेटासहित तपाईँको ट्याब्लेटको कल लगको परिमार्जन गर्न अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले यसलाई तपाईँको कल लग परिमार्जन गर्न वा मेटाउन प्रयोग गर्न सक्छन्।"</string>
- <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"अनुप्रयोगलाई तपाईंको फोनको आउने र बाहिर जाने कलहरूको बारेको डेटा सहित कल लग परिमार्जन गर्न अनुमति दिन्छ। खराब अनुप्रयोगहरूले यसलाई तपाईंको कल लग मेटाउन वा परिमार्जन गर्न प्रयोग गर्न सक्दछ।"</string>
- <string name="permlab_readProfile" msgid="4701889852612716678">"तपाईँको आफ्नै सम्पर्क कार्ड पढ्नुहोस्"</string>
- <string name="permdesc_readProfile" product="default" msgid="5462475151849888848">"अनुप्रयोगलाई तपाईंको उपकरणमा भण्डारण गरिएका व्यक्तिगत प्रोफाइल जानकारी पढ्न अनुमति दिन्छ, जस्तै तपाईंको नाम र सम्पर्क जानकारी। यसको मतलब अनुप्रयोगले तपाईंलाई पहिचान गर्न सक्दछ र तपाईंको प्रोफाइल जानकारी अरूलाई पठाउन सक्दछ।"</string>
- <string name="permlab_writeProfile" msgid="907793628777397643">"तपाईँको आफ्नै सम्पर्क कार्ड परिमार्जन गर्नुहोस्"</string>
- <string name="permdesc_writeProfile" product="default" msgid="5552084294598465899">"तपाईँको उपकरणमा भण्डार भएको व्याक्तिगत प्रोफाइल जानकारी, जस्तै तपाईँको नाम वा सम्पर्क जानकारीलाई परिवर्तन गर्न वा थप्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। यसको मतलब अन्य अनुप्रयोगले तपाईँलाई चिन्न सक्छन् र सायद अन्यलाई तपाईँको प्रोफाइल जानकारी पठाउन सक्छन्।"</string>
- <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"तपाईंको सामाजिक स्ट्रिम पढ्नुहोस्"</string>
- <string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"तपाईँ र तपाईँका साथीहरूबाट सामाजिक अपडेटलाई पहुँच र सिंक गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। जानकारी साझेदारी गर्दा सावधान रहनुहोस् -- समाजिक नेटवर्कहरूमा तपाईँ र तपाईँको साथीको बिचमा भएका संचारलाई पढ्न विश्वासनीयता बेगरै यसले अनुप्रयोगलाई अनुमति दिन्छ। नोट: यो अनुमति बलपूर्वक सबै सामाजिक नेटवर्कहरूमा सायद नगर्न सकिन्छ।"</string>
- <string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"तपाईँको सामाजिक प्रवाहमा लेख्‍नुहोस्"</string>
- <string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"अनुप्रयोगलाई तपाईंको साथीहरूबाट सामाजिक अपडेटहरू प्रदर्शन गर्न अनुमति दिन्छ। जानकारी साझेदारी गर्ने बेलामा होशियार रहनुहोस् -- यसले अनुप्रयोगलाई सन्देशहरू निर्माण गर्न अनुमति दिन्छ जुन साथीबाट आएको देखिन्छ। टिप्पणी: यो अनुमति सबै सामाजिक सञ्जालहरूमा लागू नहुन सक्दछ।"</string>
- <string name="permlab_readCalendar" msgid="5972727560257612398">"गोप्य जानकारी र पात्रो घटनाहरू पढ्नुहोस्"</string>
- <string name="permdesc_readCalendar" product="tablet" msgid="4216462049057658723">"अनुप्रयोगलाई तपाईंको ट्याब्लेटमा भण्डारण गरिएका ती साथीहरू वा सहयोगीहरू सहितको पात्राका कार्यक्रमहरू पढ्न अनुमति दिन्छ। यसले गोपनीयता वा संवेदनशीलता बिना पनि अनुप्रयोगलाई तपाईंको पात्राका डेटा साझेदारी गर्न वा बचत गर्न अनुमति दिन्छ।"</string>
- <string name="permdesc_readCalendar" product="default" msgid="7434548682470851583">"ती साथीहरू वा सहकर्मीहरूसहित सबै पात्रो घटनाहरू तपाईँको ट्याब्लेटमा भण्डारण भएकालाई पढ्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। तपाईँको पात्रो डेटा यसले सायद सेयर गर्न वा सुरक्षित गर्नको लागि विश्वासनियता वा सम्वेदनशीलता बिना नै अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_writeCalendar" msgid="8438874755193825647">"पात्रो घटनाहरू थप्नुहोस् वा परिमार्जन गर्नुहोस् र मालिकको ज्ञान बिना नै पाहुनाहरूलाई इमेल पठाउनुहोस्"</string>
- <string name="permdesc_writeCalendar" product="tablet" msgid="6679035520113668528">"ती साथीहरू वा सहकर्मीहरूसहितका घटनाहरू जसलाई तपाईँले आफ्नो ट्याब्लेटमा परिमार्जन गर्न सक्ने अनुमति अनुप्रयोगलाई दिन्छ। यसले अनुप्रयोगलाई सन्देशहरू जुन पात्राको मालिकहरूबाट आएका देखिनेलाई पठाउने वा मालिकहरूको ज्ञान बेगर घटनालाई परिमार्जन गर्ने अनुमित दिन्छ।"</string>
- <string name="permdesc_writeCalendar" product="default" msgid="2324469496327249376">"ती साथीहरू वा सहकर्मीहरूसहित तपाईँको फोनका घटनाहरू जसलाई थप्न, हटाउन र परिवर्तन गर्न अनुप्रयोगलाई अनुमति दिन्छ। पात्रो मालिकबाट देखा परेका वा मालिकको ज्ञान बिना परिवर्तन भएका घटनाहरू सन्देश पठाउन यसले अनुप्रयोगलाई अनुमति दिन सक्छ।"</string>
- <string name="permlab_accessMockLocation" msgid="8688334974036823330">"परीक्षणको लागि स्थान स्रोतहरू मक गर्नुहोस्"</string>
- <string name="permdesc_accessMockLocation" msgid="5808711039482051824">"परीक्षणको लागि मक स्थान स्रोतहरू सिर्जना गर्नुहोस् वा नयाँ स्थान प्रदायक स्थापना गर्नुहोस्। यसले अनुप्रयोगलाई स्थानमा ओभरराइड गर्दछ र/वा स्थिति अन्य स्थान स्रोतहरू जस्तै GPS वा स्थान प्रदायकबाट फर्काइएका।"</string>
- <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"अधिक स्थान प्रदायक आदेशहरू पहुँच गर्नुहोस्"</string>
- <string name="permdesc_accessLocationExtraCommands" msgid="5945166642335800763">"थप स्थान प्रदायक कमाण्डहरू सम्म पहुँच पुर्‍याउन अनुप्रयोगले अनुमति दिन्छ। यसले अनुप्रयोगलाई सायद जीपीएसको वा अन्य स्थान सेवाहरूको कार्य सँग हस्तक्षेप गर्नको लागि यसलाई अनुमति दिन्छ।"</string>
- <string name="permlab_installLocationProvider" msgid="6578101199825193873">"एउटा स्थान प्रदाता स्थापित गर्न अनुमति"</string>
- <string name="permdesc_installLocationProvider" msgid="9066146120470591509">"परीक्षणको लागि मक स्थान स्रोतहरू सिर्जना गर्नुहोस् वा नयाँ स्थान प्रदायक स्थापना गर्नुहोस्। यसले अनुप्रयोगलाई स्थानमा ओभरराइड गर्दछ र/वा स्थिति अन्य स्थान स्रोतहरू जस्तै GPS वा स्थान प्रदायकबाट फर्काइएका।"</string>
- <string name="permlab_accessFineLocation" msgid="1191898061965273372">"सटिक स्थान (GPS र नेटवर्क आधारित)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"अनुप्रयोगले विश्वव्यापी स्थान प्रणाली (GPS) वा सेल टावरहरू र वाइ-फाइ जस्ता नेटवर्क स्थान स्रोतहरूको प्रयोग गरेर तपाईँको सही स्थान प्राप्त गर्न अनुमति दिन्छ। यी स्थान सेवाहरू खोल्नु पर्छ र अनुप्रयोगहरूका लागि प्रयोग गर्न तपाईँको उपकरणमा उपलब्ध हुनु पर्छ। अनुप्रयोगहरूले तपाईँ कहाँ हुनु हुन्छ भन्ने निर्धारण गर्न यसलाई प्रयोग गर्न सक्छ र यसले अतिरिक्त ब्याट्रि उर्जा खतप गर्न सक्छ।"</string>
- <string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"अनुमानित स्थान (नेटवर्क-आधारित)"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"अनुप्रयोगलाई तपाईँको अनुमानित स्थान प्राप्त गर्न अनुमति दिन्छ। यो स्थान सेल टावर र वाइ-फाइजस्ता नेटवर्क स्थान स्रोतहरूको प्रोग गरी स्थान सेवाहरूबाट उत्पन्न गरिएको हो। अनुप्रयोगले यी स्थान सेवाहरूको उपयोग गर्नको लागि यी सेवाहरू तपाईँको उपकरणमा चालु र उपलब्ध हुनु आवश्यक छ। अनुप्रयोगहरूले अनुमानित रूपमा तपाईँ कहाँ हुनुहुन्छ भन्ने निर्धारण गर्न यसको प्रयोग गर्न सक्छन्।"</string>
- <string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"SurfaceFlinger पहुँच गर्नुहोस्।"</string>
- <string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"SurfaceFlinger कम-स्तर सुविधाहरू प्रयोग गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_readFrameBuffer" msgid="6690504248178498136">"फ्रेम बफर पढ्नुहोस्"</string>
- <string name="permdesc_readFrameBuffer" msgid="4937405521809454680">"अनुप्रयोगलाई फ्रेम बफरको सामग्री पढ्न अनुमति दिन्छ।"</string>
- <string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"वाइफाइ प्रदर्शनहरूलाई विन्यास गर्नुहोस"</string>
- <string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"अनुप्रयोगलाई कन्फिगर गर्न र वाइफाइ प्रदर्शनहरूसँग जोड्न अनुमति दिन्छ।"</string>
- <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"वाइफाइ प्रदर्शनहरू नियन्त्रण गर्नुहोस्"</string>
- <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"वाइफाइ प्रदर्शनीका तल्लो तह विषेशताहरू नियन्त्रण गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_captureAudioOutput" msgid="6857134498402346708">"अडियो आउटपुट कैद गर्नुहोस्"</string>
- <string name="permdesc_captureAudioOutput" msgid="6210597754212208853">"अनुप्रयोगलाई अडियो आउटपुट कैद गर्न र रिडाइरेक्ट गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_captureVideoOutput" msgid="2246828773589094023">"भिडियो आउटपुट कैद गर्नुहोस्"</string>
- <string name="permdesc_captureVideoOutput" msgid="359481658034149860">"अनुप्रयोगलाई भिडियो आउटपुट कैद गर्न र रिडाइरेक्ट गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_captureSecureVideoOutput" msgid="7815398969303382016">"सुरक्षित भिडियो आउटपुट कैद गर्नुहोस्"</string>
- <string name="permdesc_captureSecureVideoOutput" msgid="2779793064709350289">"अनुप्रयोगलाई सुरक्षित भिडियो आउटपुट कैद गर्न र रिडाइरेक्ट गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"तपाईँका अडियो सेटिङहरू परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"अनुप्रयोगलाई ग्लोबल अडियो सेटिङ्हरू परिमार्जन गर्न अनुमति दिन्छ, जस्तै आवाजको मात्रा र आउटपुटको लागि कुन स्पिकर प्रयोग गर्ने।"</string>
- <string name="permlab_recordAudio" msgid="3876049771427466323">"अडियो रेकर्ड गर्नुहोस्"</string>
- <string name="permdesc_recordAudio" msgid="4906839301087980680">"अनुप्रयोगलाई माइक्रोफोनको साथ अडियो रेकर्ड गर्न अनुमति दिन्छ। यस अनुमतिले तपाईंको पुष्टिकरण बिना कुनै पनि समयमा अडियो रेकर्ड गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_camera" msgid="3616391919559751192">"तस्बिरहरू र भिडियोहरू लिनुहोस्।"</string>
- <string name="permdesc_camera" msgid="8497216524735535009">"अनुप्रयोगलाई क्यामेरासँग तस्बिर र भिडियोहरू लिन अनुमति दिन्छ। यस अनुमतिले अनुप्रयोगलाई तपाईंको पुष्टिकरण बिना कुनै पनि समयमा क्यामेरा प्रयोग गर्न स्वीकृति दिन्छ।"</string>
- <string name="permlab_cameraDisableTransmitLed" msgid="2651072630501126222">"क्यामेरा प्रयोगमा हुँदा सूचक LED प्रसारण असक्षम गर्नुहोस्"</string>
- <string name="permdesc_cameraDisableTransmitLed" msgid="4764585465480295341">"पूर्व-स्थापित प्रणाली अनुप्रयोगलाई क्यामेरा उपयोग सूचक LED अक्षम गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_brick" product="tablet" msgid="2961292205764488304">"स्थायी रूपमा ट्याब्लेट अक्षम पार्नुहोस्"</string>
- <string name="permlab_brick" product="default" msgid="8337817093326370537">"फोनलाई स्थायी रूपमा असक्षम पार्नहोस्"</string>
- <string name="permdesc_brick" product="tablet" msgid="4334818808001699530">"पुरै ट्याब्लेटलाई स्थायी रूपमा असक्षम पार्न अनुप्रयोगलाई अनुमति दिन्छ। यो निकै खतरनाक हुन्छ।"</string>
- <string name="permdesc_brick" product="default" msgid="5788903297627283099">"सम्पूर्ण फोनलाई स्थायी रूपमा असक्षम पार्न अनुप्रयोगलाई अनुमति दिन्छ। यो धेरै खतरनाक हुन्छ।"</string>
- <string name="permlab_reboot" product="tablet" msgid="3436634972561795002">"ट्याब्लेट पुनःबुट गर्न जोड गर्नुहोस्"</string>
- <string name="permlab_reboot" product="default" msgid="2898560872462638242">"फोन पुनःबुट गर्नु जोड गर्नुहोस्"</string>
- <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"ट्याब्लेटलाई बलपूर्वक पुनःबुट गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"फोनलाई बलपुर्वक पुनःबुट गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"USB भण्डारण फाइल प्रणाली पहुँच गर्नुहोस्"</string>
- <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"SD कार्ड फाइल प्रणाली पहुँच गर्नुहोस्"</string>
- <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"हटाउन मिल्ने भण्डारणको लागि फाइल प्रणालीहरू माउन्ट र अनमाउन्ट गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB भण्डारण मेट्नुहोस्"</string>
- <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD कार्ड मेटाउनुहोस्"</string>
- <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"हटाउन मिल्ने भण्डारण फर्म्याट गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_asec_access" msgid="3411338632002193846">"आन्तरिक भण्डारणको सूचना प्राप्त गर्नुहोस्"</string>
- <string name="permdesc_asec_access" msgid="3094563844593878548">"आन्तरिक भण्डारणमा सूचना प्राप्त गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_asec_create" msgid="6414757234789336327">"आन्तरिक भण्डारण सिर्जना गर्नुहोस्"</string>
- <string name="permdesc_asec_create" msgid="4558869273585856876">"आन्तरिक भण्डारण सिर्जना गर्नको लागि अनुप्रयोगले अनुमति दिन्छ।"</string>
- <string name="permlab_asec_destroy" msgid="526928328301618022">"आन्तरिक भण्डारण ध्वस्त पार्नुहोस्"</string>
- <string name="permdesc_asec_destroy" msgid="7218749286145526537">"अनुप्रयोगलाई आन्तरिक भण्डारण ध्वस्त पार्न अनुमति दिन्छ।"</string>
- <string name="permlab_asec_mount_unmount" msgid="8877998101944999386">"आन्तरिक भण्डारणलाई माउन्ट/अनमाउन्ट गर्नुहोस्"</string>
- <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"अनुप्रयोगलाई आन्तरिक भण्डारण माउन्ट/अनमाउन्ट गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_asec_rename" msgid="7496633954080472417">"आन्तरिक भण्डारणको पुन:नामाकरण गर्नुहोस्"</string>
- <string name="permdesc_asec_rename" msgid="1794757588472127675">"आन्तरीक भण्डारणको पुननामाकरण गर्नको लागि अनुप्रयोगले अनुमति दिन्छ।"</string>
- <string name="permlab_vibrate" msgid="7696427026057705834">"कम्पन नियन्त्रण गर्नुहोस्"</string>
- <string name="permdesc_vibrate" msgid="6284989245902300945">"अनुप्रयोगलाई भाइब्रेटर नियन्त्रण गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_flashlight" msgid="2155920810121984215">"फ्ल्यासलाईट नियन्त्रण गर्नुहोस्"</string>
- <string name="permdesc_flashlight" msgid="6522284794568368310">"फ्ल्यास प्रकाशलाई नियन्त्रण गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_manageUsb" msgid="1113453430645402723">"USB उपकरणहरूको लागि प्राथमिकताहरू र अनुमतिहरू प्रबन्ध गर्नुहोस्"</string>
- <string name="permdesc_manageUsb" msgid="7776155430218239833">"USB उपकरणहरूको लागि प्राथमिकताहरू र अनुमतिहरूलाई व्यवस्थापन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_accessMtp" msgid="4953468676795917042">"MTP प्रोटोकल कार्यान्वयन गर्नुहोस्"</string>
- <string name="permdesc_accessMtp" msgid="6532961200486791570">"MTP USB प्रोटोकल कार्यान्वयन गर्न केर्नल MTP ड्राइभरको पहुँचको अनुमति दिन्छ।"</string>
- <string name="permlab_hardware_test" msgid="4148290860400659146">"हार्डवेयर परीक्षण गर्नुहोस्"</string>
- <string name="permdesc_hardware_test" msgid="6597964191208016605">"हार्डवेयर परीक्षणको उद्देश्यका लागि विभिन्न परिधीयहरूलाई नियन्त्रण गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_callPhone" msgid="3925836347681847954">"फोन नम्बरहरूमा सिधै कल गर्नुहोस्"</string>
- <string name="permdesc_callPhone" msgid="3740797576113760827">"तपाईँको हस्तक्षेप बेगरै फोन नम्बर कल गर्न अनुप्रयोगलाई अनुमति दिन्छ। यसले अनपेक्षित शुल्क वा कलहरू गराउन सक्छ। यसले अनुप्रयोगलाई आपतकालीन नम्बरहरू कल गर्न अनुमति दिँदैन विचार गर्नुहोस्। खराब अनुप्रयोगहरूले तपाईँको स्वीकार बिना कलहरू गरेर तपाईँलाई बढी पैसा तिराउन सक्छ।"</string>
- <string name="permlab_callPrivileged" msgid="4198349211108497879">"कुनै पनि फोन नम्बरहरू सिधै कल गर्नुहोस्"</string>
- <string name="permdesc_callPrivileged" msgid="1689024901509996810">"कुनै पनि फोन नम्बरमा, आकस्मिक नम्बर सहित, तपाईँको हस्तक्षेप बिना कल गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले अनावश्यक र गैर कानुनी कलहरूलाई आकस्मिकमा स्थानान्तरण गर्न सक्छन्।"</string>
- <string name="permlab_performCdmaProvisioning" product="tablet" msgid="4842576994144604821">"CDMA ट्याब्लेट सेटअफ सिधै सुरु गर्नुहोस्"</string>
- <string name="permlab_performCdmaProvisioning" product="default" msgid="5604848095315421425">"CDMA फोन सेटअप सिधै सुरु गर्नुहोस्"</string>
- <string name="permdesc_performCdmaProvisioning" msgid="1994193538802314186">"अनुप्रयोगलाई CDMA प्रावधान सुरu गर्न अनुमति दिन्छ। खराब अनुप्रयोगहरूले अनावश्यक रूपमा CDMA प्रावधान सुरु गर्न सक्छन्।"</string>
- <string name="permlab_locationUpdates" msgid="7785408253364335740">"स्थान अपडेट सूचनाहरू नियन्त्रण गर्नुहोस्"</string>
- <string name="permdesc_locationUpdates" msgid="1120741557891438876">"रेडियोबाट स्थान अद्यावधिक सूचनाहरूलाई सक्षम/असक्षम गर्न अनुप्रयोगलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूबाट प्रयोग नहुने।"</string>
- <string name="permlab_checkinProperties" msgid="7855259461268734914">"परीक्षण विशेषताहरू पहुँच गर्नुहोस्"</string>
- <string name="permdesc_checkinProperties" msgid="4024526968630194128">"परीक्षण सेवाद्वारा विशेषता अपलोड भएको पहुँच पढ्न/लेख्‍न अनुप्रयोगलाई अनुमति दिन्छ। साधारण अनुप्रयोगद्वारा प्रयोगको लागि होइन।"</string>
- <string name="permlab_bindGadget" msgid="776905339015863471">"विजेटहरूको चयन गर्नुहोस्"</string>
- <string name="permdesc_bindGadget" msgid="8261326938599049290">"अनुप्रयोगलाई प्रणालीलाई कुन विजेट कुन अनुप्रयोगद्वारा प्रयोग गर्न सकिन्छ भनेर अनुमति दिन्छ। यस अनुमतिसहितको अनुप्रयोगले अन्य अनुप्रयोगहरूलाई व्यक्तिगत डेटाको पहुँच दिन सक्दछ। सामान्य अनुप्रयोगहरूको प्रयोगको लागि होइन।"</string>
- <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"फोनको स्थिति परिमार्जन गर्नुहोस्"</string>
- <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"उपकरणका फोन विशेषताहरूलाई नियन्त्रण गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। यस अनुमतिले एउटा अनुप्रयोगले नेटवर्क स्विच गर्न, फोन रेडियो बन्द गर्न र खोल्न र जस्तै तपाईँ सधै सूचित नगरी गर्न सक्छ।"</string>
- <string name="permlab_readPhoneState" msgid="9178228524507610486">"फोन स्थिति र पहिचान पढ्नुहोस्"</string>
- <string name="permdesc_readPhoneState" msgid="1639212771826125528">"उपकरणको फोन विशेषताहरूको पहुँच गर्न अनुप्रयोगलाई अनुमति दिन्छ। यस अनुमतिले फोन नम्बर र उपकरणको IDs, कल सक्षम छ कि छैन र कलद्वारा जोडिएको टाढाको नम्बर निर्धारण गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"ट्याब्लेटलाई निन्द्रामा जानबाट रोक्नुहोस्"</string>
- <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"फोनलाई निदाउनबाट रोक्नुहोस्"</string>
- <string name="permdesc_wakeLock" product="tablet" msgid="7311319824400447868">"ट्याब्लेटलाई निस्क्रिय हुनबाट रोक्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_wakeLock" product="default" msgid="8559100677372928754">"फोनलाई निस्क्रिय हुनबाट रोक्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_devicePower" product="tablet" msgid="2787034722616350417">"ट्याब्लेट पावर खोल्न र बन्द गर्नुहोस्"</string>
- <string name="permlab_devicePower" product="default" msgid="4928622470980943206">"फोन खोल्न वा बन्द गर्न उर्जा प्रदान गर्नुहोस"</string>
- <string name="permdesc_devicePower" product="tablet" msgid="6689862878984631831">"ट्याब्लेटलाई खोल्न र बन्द गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_devicePower" product="default" msgid="6037057348463131032">"अनुप्रयोगलाई फोन खोल्न र बन्द गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_factoryTest" msgid="3715225492696416187">"फ्याक्ट्रि परीक्षण मोडमा चालु गर्नुहोस्"</string>
- <string name="permdesc_factoryTest" product="tablet" msgid="3952059318359653091">"ट्याब्लेट हार्डवेयरलाई पुरा पहुँच गर्न दिँदै तल्लो स्तर उत्त्पादक परीक्षणको रूपमा चलाउनुहोस्। ट्याब्लेट उत्त्पादक परीक्षण मोडमा चलिरहेको बेला मात्र उपलब्ध हुन्छ।"</string>
- <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"तल्लो स्तर उत्त्पादक जस्तै चलाउनुहोस्, पुरा पहुँच दिन फोन हार्डवेयरलाई अनुमति हुन्छ। फोन उत्पादक परीक्षण मोडमा चलिरहेको बेला मात्र उपलब्ध हुन्छ।"</string>
- <string name="permlab_setWallpaper" msgid="6627192333373465143">"वालपेपर सेट गर्नुहोस्"</string>
- <string name="permdesc_setWallpaper" msgid="7373447920977624745">"अनुप्रयोगलाई प्रणाली वालपेपर सेट गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"तपाईंको वालपेपर आकार समायोजन गर्नुहोस्"</string>
- <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"प्रणाली वालपेपरको आकार सङ्केतहरू मिलाउन अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_masterClear" msgid="2315750423139697397">"कार्यशाला पूर्वनिर्धारणको लागि प्रणाली पुनःसेट गर्नुहोस्"</string>
- <string name="permdesc_masterClear" msgid="3665380492633910226">"यसका फ्याक्ट्रि सेटिङहरू, कन्फिगरेसन र स्थापित अनुप्रयोगहरूलाई प्रणालीमा पुरै पुनःसेट गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_setTime" msgid="2021614829591775646">"समय सेट गर्नुहोस्"</string>
- <string name="permdesc_setTime" product="tablet" msgid="1896341438151152881">"ट्याब्लेटको घडीको समय बदल्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_setTime" product="default" msgid="1855702730738020">"फोनको घडीको समय बदल्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_setTimeZone" msgid="2945079801013077340">"समय क्षेत्र सेट गर्नुहोस्"</string>
- <string name="permdesc_setTimeZone" product="tablet" msgid="1676983712315827645">"अनुप्रयोगलाई ट्याब्लेटको समय क्षेत्र परिवर्तन गर्न अनुमति दिन्छ।"</string>
- <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"अनुप्रयोगलाई फोनको समय क्षेत्र परिवर्तन गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_accountManagerService" msgid="4829262349691386986">"AccountManagerService को रूपमा कार्य गर्नुहोस्"</string>
- <string name="permdesc_accountManagerService" msgid="1948455552333615954">"खाता अधिकारीहरूलाई कल गर्नको लागि अनुप्रयोगले अनुमति दिन्छ।"</string>
- <string name="permlab_getAccounts" msgid="1086795467760122114">"उपकरणमा खाताहरू भेट्टाउनुहोस्"</string>
- <string name="permdesc_getAccounts" product="tablet" msgid="2741496534769660027">"अनुप्रयोगलाई ट्याब्लेटद्वारा ज्ञात खाताहरूको सूची पाउन अनुमति दिन्छ। यसले अनुप्रयोगद्वारा तपाईंले स्थापित गर्नुभएको कुनै पनि खाताहरू समावेश गर्न सक्दछ।"</string>
- <string name="permdesc_getAccounts" product="default" msgid="3448316822451807382">"फोनलाई थाहा भएका खाताहरूको सूची प्राप्त गर्न अनुप्रयोगलाई अनुमति दिन्छ। यसले तपाईँले स्थापना गर्नु भएका अनुप्रयोगहरूबाट सृजित कुनै खाताहरू समावेश हुन सक्छ।"</string>
- <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"खाता सिर्जना गर्नुहोस् र पासवर्ड सेट गर्नुहोस्"</string>
- <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"खाताहरूको सिर्जना गर्ने र प्राप्त गर्ने र उनीहरूको पासवर्डहरूको सेटिङ गर्ने सहित खाता प्रबन्धकको खाता आधिकारी सक्षमताहरू प्रयोग गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_manageAccounts" msgid="4983126304757177305">"खाताहरू थप्नुहोस् वा हटाउनुहोस्"</string>
- <string name="permdesc_manageAccounts" msgid="8698295625488292506">"खाताहरू थप्ने र हटाउने जस्ता प्रक्रियाहरू सम्पन्न गर्न, र उनीहरूको पासवर्ड मेटाउन अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_useCredentials" msgid="235481396163877642">"उपकरणमा खाताहरूको प्रयोग गर्नुहोस्"</string>
- <string name="permdesc_useCredentials" msgid="7984227147403346422">"अनुप्रयोगलाई प्रमाणीकरण टोकनहरू अनुरोध गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_accessNetworkState" msgid="4951027964348974773">"नेटवर्क जडानहरू हेर्नहोस्"</string>
- <string name="permdesc_accessNetworkState" msgid="8318964424675960975">"अनुप्रयोगलाई नेटवर्क जडानहरू जस्तै कुन नेटवर्कहरू अवस्थित हुन्छन् र जडित छन् जसले हेर्नलाई अनुमति दिन्छ।"</string>
- <string name="permlab_createNetworkSockets" msgid="8018758136404323658">"पूर्ण नेटवर्क पहुँच"</string>
- <string name="permdesc_createNetworkSockets" msgid="3403062187779724185">"नेटवर्क सकेटहरू सिर्जना गर्न र कस्टम नेटवर्क प्रोटोकल प्रयोग गर्न अनुप्रयोगलाई अनुमति दिन्छ। ब्राउजर र अन्य अनुप्रयोगहरूले इन्टरनेटमा डेटा पठाउने माध्यम प्रदान गर्छन्, त्यसैले इन्टरनेटमा डेटा पठाउन यो अनुमतिको आवश्यकता पर्दैन।"</string>
- <string name="permlab_writeApnSettings" msgid="505660159675751896">"नेटवर्क सेटिङहरू र ट्राफिक परिवर्तन गर्नुहोस् / रोक्नुहोस्"</string>
- <string name="permdesc_writeApnSettings" msgid="5333798886412714193">"अनुप्रयोगलाई नेटवर्क सेटिङहरू परिवर्तन गर्न र सबै नेटवर्क ट्राफिक रोक्न र परीक्षण गर्न अनुमति दिन्छ, उदाहरणको लागि कुनै पनि APN को प्रोक्सी र पोर्ट परिवर्तन गर्न। खराब अनुप्रयोगहरूले तपाईंको ज्ञान बिना नेटवर्क प्याकेटहरू मोनिटर गर्न, पुन:निर्देशित गर्न, वा परिमार्जन गर्न सक्दछ।"</string>
- <string name="permlab_changeNetworkState" msgid="958884291454327309">"नेटवर्क जडान परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_changeNetworkState" msgid="6789123912476416214">"अनुप्रयोगलाई नेटवर्क जडानको स्थिति परिवर्तन गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_changeTetherState" msgid="5952584964373017960">"टेथर्ड नेटवर्क जडान परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_changeTetherState" msgid="1524441344412319780">"टिथर गरेको नेटवर्क जडानको स्थिति बदल्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"पृष्ठभूमि डेटा प्रयोग सेटिङहरू परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"अनुप्रयोगलाई पृष्ठभूमि डेटा उपयोग सेटिङ परिवर्तन गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_accessWifiState" msgid="5202012949247040011">"वाइ-फाइ जडानहरू हेर्नुहोस्"</string>
- <string name="permdesc_accessWifiState" msgid="5002798077387803726">"अनुप्रयोगलाई वाइ-फाइ नेटवर्कको बारेमा जानकारी हेर्न अनुमति दिन्छ, जस्तै कि वाइ-फाइ सक्षम छ कि छैन र जडान गरिएको वाइ-फाइ उपकरणहरूको नाम।"</string>
- <string name="permlab_changeWifiState" msgid="6550641188749128035">"वाइ-फाइसँग जोड्नुहोस् वा छुटाउनुहोस्"</string>
- <string name="permdesc_changeWifiState" msgid="7137950297386127533">"अनुप्रयोगलाई वाइ-फाइ पहुँच बिन्दुबाट जडान गर्न र विच्छेदन गर्न र वाइ-फाइ नेटवर्कहरूको लागि उपकरण कन्फिगरेसनमा परिवर्तनहरू गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"वाइ-फाइ Multicast स्विकृतिलाई अनुमति दिनुहोस्"</string>
- <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"अनुप्रयोगलाई मल्टिकाष्ट ठेगानाहरू प्रयोग गरेर वाइ-फाइ नेटवर्कमा पठाइएको प्याकेटहरू प्राप्त गर्न अनुमति दिन्छ, केवल तपाईंको ट्याब्लेट मात्र होइन। यसले गैर-मल्टिकाष्ट मोड भन्दा बढी उर्जा प्रयोग गर्दछ।"</string>
- <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"तपाईँको फोन मात्र होइन, मल्टिकास्ट ठेगानाहरूको प्रयोग गरे वाइ-फाइ नेटवर्कका सबै उपकरणहरूमा पठाइएका प्याकेटहरू प्राप्त गर्न अनुप्रयोगलाई अनुमति दिन्छ। यसले गैर-मल्टिकास्ट मोडभन्दा बढी उर्जा प्रयोग गर्छ।"</string>
- <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"ब्लुटुथ सेटिङहरूमा पहुँच गर्नुहोस्"</string>
- <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"स्थानीय ब्लुटुथ ट्याब्लेटलाई कन्फिगर गर्नको लागि र टाढाका उपकरणहरूलाई पत्ता लगाउन र जोड्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"अनुप्रयोगलाई स्थानीय ब्लुटुथ फोन कन्फिगर गर्न र टाढाका उपकरणहरूसँग खोज गर्न र जोडी गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_accessWimaxState" msgid="4195907010610205703">"WiMAXसँग जोड्नुहोस् वा छुटाउनुहोस्"</string>
- <string name="permdesc_accessWimaxState" msgid="6360102877261978887">"अनुप्रयोगलाई वाइम्याक्स सक्षम छ कि छैन र जडान भएको कुनै पनि वाइम्याक्स नेटवर्कहरूको बारेमा जानकारी निर्धारिण गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_changeWimaxState" msgid="2405042267131496579">"वाइम्याक्स स्थिति परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"अनुप्रयोगलाई वाइम्याक्स नेटवर्कहरूबाट ट्याब्लेट जडान गर्न र ट्याब्लेट विच्छेदन गर्न अनुमति दिन्छ।"</string>
- <string name="permdesc_changeWimaxState" product="default" msgid="697025043004923798">"वाइम्याक्स नेटवर्कहरूसँग फोन जोड्न र छुटाउन अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_bluetooth" msgid="6127769336339276828">"ब्लुटुथ उपकरणहरूसँग जोडी मिलाउनुहोस्"</string>
- <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"ट्याब्लेटमा ब्लुटुथको कन्फिगुरेसनलाई हेर्न र बनाउन र जोडी उपकरणहरूसँग जडानहरूलाई स्वीकार गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"अनुप्रयोगलाई फोनमा ब्लुटुथको कन्फिगरेसन हेर्न र जोडी भएका उपकरणहरूसँग जडानहरू बनाउन र स्वीकार गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_nfc" msgid="4423351274757876953">"नजिक क्षेत्र संचार नियन्त्रणहरू"</string>
- <string name="permdesc_nfc" msgid="7120611819401789907">"अनुप्रयोगलाई नयाँ क्षेत्र संचार (NFC) ट्यागहरू, कार्डहरू र पाठकहरूसँग अन्तर्क्रिया गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_disableKeyguard" msgid="3598496301486439258">"स्क्रिन लक असक्षम पार्नुहोस्"</string>
- <string name="permdesc_disableKeyguard" msgid="6034203065077122992">"कुनै सम्बन्धित पासवर्ड सुरक्षा र किलकलाई असक्षम पार्न अनुप्रयोगलाई अनुमति दिन्छ। उदाहरणको लागि, अन्तर्गमन फोन कल प्राप्त गर्दा फोनले किलकलाई असक्षम पार्छ, त्यसपछि कल सकिएको बेला किलक पुनःसक्षम पार्छ।"</string>
- <string name="permlab_readSyncSettings" msgid="6201810008230503052">"समीकरण सेटिङहरू पढ्नुहोस्"</string>
- <string name="permdesc_readSyncSettings" msgid="2706745674569678644">"अनुप्रयोगलाई खाताको लागि सिङ्क सेटिङहरू पढ्न अनुमति दिन्छ। उदाहरणको लागि यसले व्यक्तिहरको अनुप्रयोग खातासँग सिङ्क भएको नभएको निर्धारण गर्न सक्दछ।"</string>
- <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"टगल सिङ्क खुला र बन्द"</string>
- <string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"अनुप्रयोगहरूलाई खाताको लागि सिङ्क सेटिङहरू परिमार्जन गर्न अनुमति दिन्छ। उदाहरणको लागि, यो खातासँग व्यक्ति अनुप्रयोगको सिङ्क सक्षम गर्न प्रयोग गर्न सकिन्छ।"</string>
- <string name="permlab_readSyncStats" msgid="7396577451360202448">"सिङ्क तथ्याङ्कहरू पढ्नुहोस्"</string>
- <string name="permdesc_readSyncStats" msgid="1510143761757606156">"अनुप्रयोगलाई खाताको लागि समीकरणको आँकडा समीकरण घटनाहरूको इतिहास र समीकरण गरिएको डेटाको मापन समेत, पढ्न अनुमति दिन्छ।"</string>
- <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"सदस्य बनाइका फिडहरू पढ्नुहोस्"</string>
- <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"अनुप्रयोगलाई अहिलेको समीकरण गरिएका सूचकहरू बारे विवरणहरू लिने अनुमति दिन्छ।"</string>
- <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"सदस्य बनाइका फिडहरू लेख्नुहोस्"</string>
- <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"तपाईँका भर्खरै सिङ्क फिडहरूलाई परिमार्जन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। तपाईँको सिङ्क फिडहरूलाई परिवर्तन गर्नको लागि यसले खराब अनुप्रयोगलाई अनुमति दिन सक्छ।"</string>
- <string name="permlab_readDictionary" msgid="4107101525746035718">"तपाईँले शब्दकोशमा थपेका शब्दहरू पढ्नुहोस्"</string>
- <string name="permdesc_readDictionary" msgid="659614600338904243">"अनुप्रयोगलाई प्रयोगकर्ताले प्रयोगकर्ता शब्दकोशमा भण्डारण गरेका हुन सक्ने सबै शब्दहरू, नामहरू र पदावलीहरू पढ्न अनुमति दिन्छ।"</string>
- <string name="permlab_writeDictionary" msgid="2183110402314441106">"प्रयोगकर्ता-परिभाषित शब्दकोशमा शब्दहरू थप्नुहोस्।"</string>
- <string name="permdesc_writeDictionary" msgid="8185385716255065291">"प्रयोगकर्ता शब्दकोशमा नयाँ शब्द लेख्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_sdcardRead" product="nosdcard" msgid="8235341515605559677">"सुरक्षित गरिएका भण्डारण पहुँचको परीक्षण गर्नुहोस्"</string>
- <string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"सुरक्षित गरिएका भण्डारण पहुँचको परीक्षण गर्नुहोस्"</string>
- <string name="permdesc_sdcardRead" product="nosdcard" msgid="3642473292348132072">"भविष्य उपकरणहरूमा उपलब्ध हुने USB भण्डारणको लागि अनुमति परीक्षण गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_sdcardRead" product="default" msgid="5914402684685848828">"भविष्य उपकरणहरूमा उपलब्ध हुने SD कार्डको लागि अनुमति परीक्षण गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"तपाईँको USB भण्डारणको विषयवस्तुहरूलाई परिमार्जन गर्नुहोस् वा मेटाउनुहोस्"</string>
- <string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"तपाईँको SD कार्डको विषयसूची परिमार्जन गर्नुहोस् वा मेट्नुहोस्"</string>
- <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"USB भण्डारणमा लेख्‍नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"अनुप्रयोगलाई SD कार्डमा लेख्न अनुमति दिन्छ।"</string>
- <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"आन्तरिक मिडिया भण्डारण सामग्रीहरू परिमार्जन गर्नुहोस्/मेटाउनुहोस्"</string>
- <string name="permdesc_mediaStorageWrite" product="default" msgid="8189160597698529185">"अनुप्रयोगलाई आन्तरिक मिडिया भण्डारणको सामग्रीहरू परिमार्जन गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_manageDocs" product="default" msgid="5778318598448849829">"कागजात भण्डारण प्रबन्ध गर्नुहोस्"</string>
- <string name="permdesc_manageDocs" product="default" msgid="8704323176914121484">"अनुप्रयोगलाई कागजात भण्डारण समायोजन गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_sdcardAccessAll" msgid="8150613823900460576">"सबै उपयोगकर्ताहरूको बाह्य भण्डारणको पहुँच राख्नुहोस्"</string>
- <string name="permdesc_sdcardAccessAll" msgid="3215208357415891320">"अनुप्रयोगलाई सबै उपयोगकर्ताहरूको लागि बाह्य भण्डारणमाथि पहुँच राख्न अनुमति दिन्छ।"</string>
- <string name="permlab_cache_filesystem" msgid="5656487264819669824">"क्यास फाइल प्रणाली पहुँच गर्नुहोस्।"</string>
- <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"केस फाइल प्रणालीलाई पढ्न र लेख्‍नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_use_sip" msgid="5986952362795870502">"इन्टरनेट कलहरू गर्नुहोस् वा प्राप्त गर्नुहोस्"</string>
- <string name="permdesc_use_sip" msgid="4717632000062674294">"इन्टरनेट कल गर्न/प्राप्त गर्न SIP सेवालाई प्रयोग गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_readNetworkUsageHistory" msgid="7862593283611493232">"नेटवर्क उपयोगको इतिहास पढ्नुहोस्"</string>
- <string name="permdesc_readNetworkUsageHistory" msgid="7689060749819126472">"निश्चित नेटवर्कहरू र अनुप्रयोगहरूको लागि ऐतिहासिक नेटवर्क उपयोग पढ्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_manageNetworkPolicy" msgid="2562053592339859990">"नेटवर्क नीति प्रबन्ध गर्नुहोस्"</string>
- <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"नेटवर्क नीतिहरू व्यवस्थापन गर्न र अनुप्रयोग-विशेष नियमहरू परिभाषित गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"नेटवर्क उपयोग लेखालाई परिमार्जन गर्नुहोस्"</string>
- <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"अनुप्रयोगलाई कसरी अनुप्रयोगहरूको विरूद्धमा कसरी नेटवर्क उपयोगी अकाउन्टेड छ भनेर परिमार्जन गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूद्वारा प्रयोगको लागि होइन।"</string>
- <string name="permlab_markNetworkSocket" msgid="3658527214914959749">"सकेटको निशानहरू परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_markNetworkSocket" msgid="7655568433696356578">"मार्ग दर्शनको लागि अनुप्रयोगलाई सकेटको निशानहरू परिवर्तन गर्न अनुमति दिन्छ"</string>
- <string name="permlab_accessNotifications" msgid="7673416487873432268">"सूचनाहरू पहुँच गर्नुहोस्"</string>
- <string name="permdesc_accessNotifications" msgid="458457742683431387">"अन्य अनुप्रयोगहरूबाट पोस्ट गरिएकासहित पुनःप्राप्त गर्न, परीक्षण गर्न र सूचनाहरू हटाउन अनुप्रयोगहरूलाई अनुमति दिन्छ।"</string>
- <string name="permlab_bindNotificationListenerService" msgid="7057764742211656654">"जानकारी श्रोता सेवामा बाँध्नुहोस्"</string>
- <string name="permdesc_bindNotificationListenerService" msgid="985697918576902986">"होल्डरलाई सूचना श्रोता सेवाको शीर्ष-स्तरको इन्टरफेस बाँध्न अनुमति दिन्छ। सामान्य अनुप्रयोगहरूलाई कहिले पनि आवश्यक नपर्न सक्दछ।"</string>
- <string name="permlab_invokeCarrierSetup" msgid="3699600833975117478">"वाहक-प्रदान विन्यास अनुप्रयोग सुरु गर्नुहोस्"</string>
- <string name="permdesc_invokeCarrierSetup" msgid="4159549152529111920">"प्रयोगकर्तालाई वाहक-प्रदान विन्यास अनुप्रयोग सुरु गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_accessNetworkConditions" msgid="8206077447838909516">"सञ्जाल अवस्थाका पर्यवेक्षणका लागि सुन्नुहोस्"</string>
- <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"सञ्जाल अवस्थाका पर्यवेक्षण सुन्नका लागि अनुप्रयोगलाई अनुमति दिन्छ।सामान्य अनुप्रयोगलाई चाँहिदै नचाँहिन सक्छ।"</string>
- <string name="permlab_hotwordRecognition" msgid="3225080408746361313">"जल्दोबल्दो शब्द पहिचानका लागि अनुरोध गर्नुहोस्"</string>
- <string name="permdesc_hotwordRecognition" msgid="3716741260195364252">"जल्दाबल्दा शब्द पहिचानका लागि अनुरोध पठाउन अनुप्रयोगलाई अनुमति दिन्छ।सामान्य अनुप्रयोगका लागि यो कहिल्यै नचाहिन सक्छ।"</string>
- <string name="policylab_limitPassword" msgid="4497420728857585791">"पासवर्ड नियमहरू मिलाउनुहोस्"</string>
- <string name="policydesc_limitPassword" msgid="3252114203919510394">"स्क्रिन-अनलक पासवर्डहरूमा अनुमति दिइएको लम्बाइ र अक्षरहरू नियन्त्रण गर्नुहोस्।"</string>
- <string name="policylab_watchLogin" msgid="914130646942199503">"मोनिटर स्क्रिन-अनलक प्रयत्नहरू"</string>
- <string name="policydesc_watchLogin" product="tablet" msgid="3215729294215070072">"स्क्रिन अनलक गर्दा गलत पासवर्ड टाइप भएको संख्या निरीक्षण गर्नुहोस् र यदि निकै धेरै गलत पासवर्डहरू टाइप भएका छन भने ट्याब्लेट लक गर्नुहोस् वा ट्याब्लेटका सबै डेटा मेट्नुहोस्।"</string>
- <string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"स्क्रिनअनलक गर्दा गलत पासवर्ड टाइप भएको संख्या निरीक्षण गर्नुहोस् र यदि निकै धेरै गलत पासवर्डहरू टाइप भएका छन भने फोन लक गर्नुहोस् वा फोनका सबै डेटा मेट्नुहोस्।"</string>
- <string name="policylab_resetPassword" msgid="2620077191242688955">"स्क्रिन-अनलक पासवर्ड बदल्नुहोस्"</string>
- <string name="policydesc_resetPassword" msgid="605963962301904458">"स्क्रिन-अनलक पासवर्ड परिवर्तन गर्नुहोस्।"</string>
- <string name="policylab_forceLock" msgid="2274085384704248431">"स्क्रिन लक गर्नुहोस्।"</string>
- <string name="policydesc_forceLock" msgid="1141797588403827138">"कसरी र कहिले स्क्रिन लक गर्ने नियन्त्रण गर्नुहोस्।"</string>
- <string name="policylab_wipeData" msgid="3910545446758639713">"सबै डेटा मेट्नुहोस्"</string>
- <string name="policydesc_wipeData" product="tablet" msgid="4306184096067756876">"एउटा फ्याक्ट्रि डेटा पुनःसेट गरेर चेतावनी नआउँदै ट्याबल्टको डेटा मेट्नुहोस्।"</string>
- <string name="policydesc_wipeData" product="default" msgid="5096895604574188391">"एउटा फ्याक्ट्रि डेटा पुनःसेट गरेर चेतावनी नआउँदै फोनको डेटा मेट्नुहोस्।"</string>
- <string name="policylab_setGlobalProxy" msgid="2784828293747791446">"उपकरण विश्वव्यापी प्रोक्सी मिलाउनुहोस्"</string>
- <string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"नीति सक्षम हुँदा प्रयोग हुने उपकरण विश्वव्यापी प्रोक्सी सेट गर्नुहोस्। प्रथम उपकरण प्रशासशनले मात्र प्रभावकारी विश्वव्यापी प्रोक्सी सेट गर्छ।"</string>
- <string name="policylab_expirePassword" msgid="885279151847254056">"लक-स्क्रिन पासवर्ड अन्त सेट गर्नुहोस्"</string>
- <string name="policydesc_expirePassword" msgid="1729725226314691591">"प्रायः कति छिटो लक-स्क्रिन पासवर्ड बदल्नु पर्छ यसलाई नियन्त्रण गर्नुहोस्।"</string>
- <string name="policylab_encryptedStorage" msgid="8901326199909132915">"भण्डारण इन्क्रिप्सन मिलाउनुहोस्"</string>
- <string name="policydesc_encryptedStorage" msgid="2637732115325316992">"भण्डार गरिएको डेटा इन्क्रिप्ट हुनु आवश्यक छ।"</string>
- <string name="policylab_disableCamera" msgid="6395301023152297826">"क्यामेरालाई असक्षम गराउनुहोस्"</string>
- <string name="policydesc_disableCamera" msgid="2306349042834754597">"सबै उपकरण क्यामराहरूको प्रयोग रोक्नुहोस्"</string>
- <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"किगार्डमा भएका विशेषताहरू असक्षम पार्नुहोस्"</string>
- <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"केही किगार्ड विशेषताहरूको प्रयोग रोक्नुहोस्।"</string>
- <string-array name="phoneTypes">
- <item msgid="8901098336658710359">"गृह"</item>
- <item msgid="869923650527136615">"मोबाइल"</item>
- <item msgid="7897544654242874543">"काम गर्नुहोस्"</item>
- <item msgid="1103601433382158155">"कार्य फ्याक्स"</item>
- <item msgid="1735177144948329370">"घरको फ्याक्स"</item>
- <item msgid="603878674477207394">"पेजर"</item>
- <item msgid="1650824275177931637">"अन्य"</item>
- <item msgid="9192514806975898961">"अनुकूलन"</item>
- </string-array>
- <string-array name="emailAddressTypes">
- <item msgid="8073994352956129127">"गृह"</item>
- <item msgid="7084237356602625604">"काम"</item>
- <item msgid="1112044410659011023">"अन्य"</item>
- <item msgid="2374913952870110618">"अनुकूलन"</item>
- </string-array>
- <string-array name="postalAddressTypes">
- <item msgid="6880257626740047286">"गृह"</item>
- <item msgid="5629153956045109251">"काम"</item>
- <item msgid="4966604264500343469">"अन्य"</item>
- <item msgid="4932682847595299369">"अनुकूलन"</item>
- </string-array>
- <string-array name="imAddressTypes">
- <item msgid="1738585194601476694">"गृह"</item>
- <item msgid="1359644565647383708">"काम"</item>
- <item msgid="7868549401053615677">"अन्य"</item>
- <item msgid="3145118944639869809">"अनुकूलन"</item>
- </string-array>
- <string-array name="organizationTypes">
- <item msgid="7546335612189115615">"काम गर्नुहोस्"</item>
- <item msgid="4378074129049520373">"अन्य"</item>
- <item msgid="3455047468583965104">"अनुकूलन"</item>
- </string-array>
- <string-array name="imProtocols">
- <item msgid="8595261363518459565">"AIM"</item>
- <item msgid="7390473628275490700">"Windows Live"</item>
- <item msgid="7882877134931458217">"Yahoo"</item>
- <item msgid="5035376313200585242">"स्काइप"</item>
- <item msgid="7532363178459444943">"QQ"</item>
- <item msgid="3713441034299660749">"Google Talk"</item>
- <item msgid="2506857312718630823">"ICQ"</item>
- <item msgid="1648797903785279353">"Jabber"</item>
- </string-array>
- <string name="phoneTypeCustom" msgid="1644738059053355820">"अनुकूलन"</string>
- <string name="phoneTypeHome" msgid="2570923463033985887">"गृह"</string>
- <string name="phoneTypeMobile" msgid="6501463557754751037">"मोबाइल"</string>
- <string name="phoneTypeWork" msgid="8863939667059911633">"काम"</string>
- <string name="phoneTypeFaxWork" msgid="3517792160008890912">"कार्य फ्याक्स"</string>
- <string name="phoneTypeFaxHome" msgid="2067265972322971467">"घरको फ्याक्स"</string>
- <string name="phoneTypePager" msgid="7582359955394921732">"पेजर"</string>
- <string name="phoneTypeOther" msgid="1544425847868765990">"अन्य"</string>
- <string name="phoneTypeCallback" msgid="2712175203065678206">"कलब्याक"</string>
- <string name="phoneTypeCar" msgid="8738360689616716982">"कार"</string>
- <string name="phoneTypeCompanyMain" msgid="540434356461478916">"कम्पनी मुख्य"</string>
- <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
- <string name="phoneTypeMain" msgid="6766137010628326916">"मुख्य"</string>
- <string name="phoneTypeOtherFax" msgid="8587657145072446565">"अन्य फ्याक्स"</string>
- <string name="phoneTypeRadio" msgid="4093738079908667513">"रेडियो"</string>
- <string name="phoneTypeTelex" msgid="3367879952476250512">"टेलेक्स"</string>
- <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
- <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"कार्य मोबाइल"</string>
- <string name="phoneTypeWorkPager" msgid="649938731231157056">"कार्य पेजर"</string>
- <string name="phoneTypeAssistant" msgid="5596772636128562884">"सहायक"</string>
- <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
- <string name="eventTypeCustom" msgid="7837586198458073404">"अनुकूलन"</string>
- <string name="eventTypeBirthday" msgid="2813379844211390740">"जन्मदिन"</string>
- <string name="eventTypeAnniversary" msgid="3876779744518284000">"वार्षिक समारोह"</string>
- <string name="eventTypeOther" msgid="7388178939010143077">"अन्य"</string>
- <string name="emailTypeCustom" msgid="8525960257804213846">"अनुकूलन"</string>
- <string name="emailTypeHome" msgid="449227236140433919">"गृह"</string>
- <string name="emailTypeWork" msgid="3548058059601149973">"काम"</string>
- <string name="emailTypeOther" msgid="2923008695272639549">"अन्य"</string>
- <string name="emailTypeMobile" msgid="119919005321166205">"मोबाइल"</string>
- <string name="postalTypeCustom" msgid="8903206903060479902">"अनुकूलन"</string>
- <string name="postalTypeHome" msgid="8165756977184483097">"गृह"</string>
- <string name="postalTypeWork" msgid="5268172772387694495">"काम"</string>
- <string name="postalTypeOther" msgid="2726111966623584341">"अन्य"</string>
- <string name="imTypeCustom" msgid="2074028755527826046">"अनुकूलन"</string>
- <string name="imTypeHome" msgid="6241181032954263892">"गृह"</string>
- <string name="imTypeWork" msgid="1371489290242433090">"काम"</string>
- <string name="imTypeOther" msgid="5377007495735915478">"अन्य"</string>
- <string name="imProtocolCustom" msgid="6919453836618749992">"अनुकूलन"</string>
- <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
- <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
- <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
- <string name="imProtocolSkype" msgid="9019296744622832951">"स्काइप"</string>
- <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
- <string name="imProtocolGoogleTalk" msgid="493902321140277304">"ह्याङआउटहरू"</string>
- <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
- <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
- <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
- <string name="orgTypeWork" msgid="29268870505363872">"काम"</string>
- <string name="orgTypeOther" msgid="3951781131570124082">"अन्य"</string>
- <string name="orgTypeCustom" msgid="225523415372088322">"अनुकूलन"</string>
- <string name="relationTypeCustom" msgid="3542403679827297300">"अनुकूलन"</string>
- <string name="relationTypeAssistant" msgid="6274334825195379076">"सहायक"</string>
- <string name="relationTypeBrother" msgid="8757913506784067713">"भाइ"</string>
- <string name="relationTypeChild" msgid="1890746277276881626">"बच्चो"</string>
- <string name="relationTypeDomesticPartner" msgid="6904807112121122133">"आन्तरिक साझेदार"</string>
- <string name="relationTypeFather" msgid="5228034687082050725">"बुबा"</string>
- <string name="relationTypeFriend" msgid="7313106762483391262">"मित्र"</string>
- <string name="relationTypeManager" msgid="6365677861610137895">"ब्यवस्थापक"</string>
- <string name="relationTypeMother" msgid="4578571352962758304">"आमा"</string>
- <string name="relationTypeParent" msgid="4755635567562925226">"अभिभावक"</string>
- <string name="relationTypePartner" msgid="7266490285120262781">"पार्टनर"</string>
- <string name="relationTypeReferredBy" msgid="101573059844135524">"द्वारा उल्लिखित"</string>
- <string name="relationTypeRelative" msgid="1799819930085610271">"आफन्त"</string>
- <string name="relationTypeSister" msgid="1735983554479076481">"बहिनी"</string>
- <string name="relationTypeSpouse" msgid="394136939428698117">"पति-पत्नि"</string>
- <string name="sipAddressTypeCustom" msgid="2473580593111590945">"अनुकूलन"</string>
- <string name="sipAddressTypeHome" msgid="6093598181069359295">"गृह"</string>
- <string name="sipAddressTypeWork" msgid="6920725730797099047">"काम गर्नुहोस्"</string>
- <string name="sipAddressTypeOther" msgid="4408436162950119849">"अन्य"</string>
- <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"PIN कोड टाइप गर्नुहोस्"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><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>
- <string name="keyguard_label_text" msgid="861796461028298424">"अनलक गर्न मेनु थिच्नुहोस् र त्यसपछि ० थिच्नुहोस्।"</string>
- <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"आपतकालीन नम्बर"</string>
- <string name="lockscreen_carrier_default" msgid="8963839242565653192">"सेवा छैन।"</string>
- <string name="lockscreen_screen_locked" msgid="7288443074806832904">"स्क्रिन लक गरिएको।"</string>
- <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"अनलक वा आपतकालीन कल गर्न मेनु थिच्नुहोस्।"</string>
- <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"अनलक गर्न मेनु थिच्नुहोस्।"</string>
- <string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"अनलक गर्नु ढाँचा खिच्नुहोस्"</string>
- <string name="lockscreen_emergency_call" msgid="5347633784401285225">"आपतकालीन कलहरू"</string>
- <string name="lockscreen_return_to_call" msgid="5244259785500040021">"कलमा फर्किनुहोस्"</string>
- <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"सही!"</string>
- <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"फेरि प्रयास गर्नुहोस्"</string>
- <string name="lockscreen_password_wrong" msgid="5737815393253165301">"फेरि प्रयास गर्नुहोस्"</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"अत्याधिक मोहडा खोल्ने प्रयासहरू बढी भए।"</string>
- <string name="lockscreen_plugged_in" msgid="8057762828355572315">"चार्ज हुँदै, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_charged" msgid="321635745684060624">"चार्ज भयो"</string>
- <string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_low_battery" msgid="1482873981919249740">"तपाईँको चार्जर जोड्नुहोस्।"</string>
- <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM कार्ड छैन"</string>
- <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ट्याब्लेटमा SIM कार्ड छैन।"</string>
- <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"फोनमा SIM कार्ड छैन।"</string>
- <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"SIM कार्ड घुसाउनुहोस्"</string>
- <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM कार्ड छैन वा पढ्न मिल्दैन। SIM कार्ड हाल्नुहोस्।"</string>
- <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"प्रयोग गर्न अयोग्य SIM कार्ड"</string>
- <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"तपाईंको SIM कार्ड स्थायी रूपमा अक्षम भयो।\n अर्को SIM कार्डको लागि आफनो ताररहित सेवा प्रदायकसँग सम्पर्क गर्नुहोस्।"</string>
- <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"अघिल्लो ट्रयाक बटन"</string>
- <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"अर्को ट्रयाक बटन"</string>
- <string name="lockscreen_transport_pause_description" msgid="7659088786780128001">"रोक्ने बटन"</string>
- <string name="lockscreen_transport_play_description" msgid="5888422938351019426">"बजाउने बटन"</string>
- <string name="lockscreen_transport_stop_description" msgid="4562318378766987601">"बटन रोक्नुहोस्"</string>
- <string name="emergency_calls_only" msgid="6733978304386365407">"आपतकालीन कलहरू मात्र"</string>
- <string name="lockscreen_network_locked_message" msgid="143389224986028501">"नेटवर्क लक छ"</string>
- <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM कार्ड PUK-लक गरिएको छ।"</string>
- <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"प्रयोगकर्ता निर्देशक वा ग्राहक सेवा सम्पर्क हर्नुहोस्।"</string>
- <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"SIM कार्ड लक गरिएको छ।"</string>
- <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"SIM कार्ड अनलक गरिँदै..."</string>
- <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"तपाईँले तपाईँको अनलक ढाँचा गलत तरिकाले <xliff:g id="NUMBER_0">%d</xliff:g> पटक खिच्नु भएको छ। \n\n <xliff:g id="NUMBER_1">%d</xliff:g> सेकेन्डमा फेरि कोसिस गर्नुहोस्।"</string>
- <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="2725973286239344555">"तपाईंले गलत तरिकाले आफ्नो पासवर्ड <xliff:g id="NUMBER_0">%d</xliff:g> पटक टाइप गर्नुभयो। \n\n<xliff:g id="NUMBER_1">%d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
- <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"तपाईँले गलत तरिकाले तपाईँको PIN <xliff:g id="NUMBER_0">%d</xliff:g> पटक टाइप गर्नु भएको छ। \n\n<xliff:g id="NUMBER_1">%d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"तपाईँले तपाईँको अनलक ढाँचा गलत तरिकाले <xliff:g id="NUMBER_0">%d</xliff:g> पटक खिच्नु भएको छ। पछि <xliff:g id="NUMBER_1">%d</xliff:g> थप असफल कोसिसहरू, तपाईँको Google साइन इन प्रयोग गरी तपाईँको ट्याब्लेट अनलक गर्न भनिने छ।\n\n <xliff:g id="NUMBER_2">%d</xliff:g> सेकेन्डमा फरि प्रयास गर्नुहोस्।"</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"तपाईँले <xliff:g id="NUMBER_0">%d</xliff:g> पटक गलत तरिकाले तपाईँको अनलक ढाँचालाई कोर्नु भएको छ। पछि <xliff:g id="NUMBER_1">%d</xliff:g> अरू धेरै असफल कोसिसहरूपछि, तपाईँलाई तपाईँको फोन Google साइन इन प्रयोग गरेर अनलक गर्नको लागि सोधिने छ। \n\n <xliff:g id="NUMBER_2">%d</xliff:g> सेकेन्डमा पुनः प्रयास गर्नुहोस्।"</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"तपाईँले <xliff:g id="NUMBER_0">%d</xliff:g> पटक ट्याब्लेटलाई अनलक गर्नको लागि गलत तरिकाले कोशिस गर्नुभएको छ। <xliff:g id="NUMBER_1">%d</xliff:g> अरू धेरै असफल कोसिसहरूपछि, ट्याब्लेट फ्याट्रि पूर्वनिर्धारितमा पुनःसेट हुने छ र सबै प्रयोगकर्ता डेटा हराउने छन्।"</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"तपाईंले गलत तरिकाले <xliff:g id="NUMBER_0">%d</xliff:g> पटक फोन अनलक गर्ने प्रयत्न गर्नुभयो। <xliff:g id="NUMBER_1">%d</xliff:g> बढी असफल प्रयत्नहरू पछि, फोन फ्याक्ट्रि पूर्वनिर्धारितमा पुनःसेट हुने छ र सबै प्रयोगकर्ता डेटा हराउने छन्।"</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"तपाईँले ट्यब्लेटलाई अनलक गर्न गलत तरिकाले <xliff:g id="NUMBER">%d</xliff:g> पटक प्रयास गर्नु भएको छ। अब ट्याब्लेटलाई पूर्वनिर्धारित कार्यशालामा पुनःसेट गरिने छ।"</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"तपाईंले गलत तरिकाले फोन <xliff:g id="NUMBER">%d</xliff:g> पटक अनलक गर्ने प्रयत्न गर्नुभयो। अब फोन फ्याक्ट्रि पूर्वनिर्धारितमा पुनःसेट हुने छ।"</string>
- <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"<xliff:g id="NUMBER">%d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
- <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"ढाँचा बिर्सनु भयो?"</string>
- <string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"खाता अनलक"</string>
- <string name="lockscreen_glogin_too_many_attempts" msgid="2751368605287288808">"निकै धेरै कोसिसहरू"</string>
- <string name="lockscreen_glogin_instructions" msgid="3931816256100707784">"अनलक गर्नको लागि, तपाईँको Google खातासँग साइन इन गर्नुहोस्।"</string>
- <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"प्रयोगकर्तानाम (इमेल)"</string>
- <string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">"पासवर्ड:"</string>
- <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"साइन इन गर्नुहोस्"</string>
- <string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"अमान्य प्रयोगकर्तानाम वा पासवर्ड"</string>
- <string name="lockscreen_glogin_account_recovery_hint" msgid="1696924763690379073">"तपाईँको प्रयोगकर्ता नाम वा पासवर्ड बिर्सनुभयो?\n भ्रमण गर्नुहोस"<b>"google.com/accounts/recovery"</b></string>
- <string name="lockscreen_glogin_checking_password" msgid="7114627351286933867">"जाँच गर्दै..."</string>
- <string name="lockscreen_unlock_label" msgid="737440483220667054">"खोल्नुहोस्"</string>
- <string name="lockscreen_sound_on_label" msgid="9068877576513425970">"आवाज चालु छ।"</string>
- <string name="lockscreen_sound_off_label" msgid="996822825154319026">"ध्वनि बन्द"</string>
- <string name="lockscreen_access_pattern_start" msgid="3941045502933142847">"ढाँचा सुरु भयो"</string>
- <string name="lockscreen_access_pattern_cleared" msgid="5583479721001639579">"ढाँचा हटाइएको"</string>
- <string name="lockscreen_access_pattern_cell_added" msgid="6756031208359292487">"सेल थप गरियो"</string>
- <string name="lockscreen_access_pattern_detected" msgid="4988730895554057058">"ढाँचा पुरा भयो"</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. विजेट %2$d of %3$d।"</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"विजेट थप गर्नुहोस्।"</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"खाली"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"अनलक क्षेत्र विस्तार भयो।"</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"अनलक क्षेत्र भत्कियो।"</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> विजेट।"</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"प्रयोगकर्ता छनौटकर्ता"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"स्थिति"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"क्यामेरा"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"मिडिया नियन्त्रणहरू"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"विजेट पुनःक्रम गर्ने सुरु भयो।"</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"विजेट पुनःक्रम समाप्त भएको छ।"</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"विजेट <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> मेटाइयो।"</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"अनलक क्षेत्र बढाउनुहोस्।"</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"स्लाइड अनलक।"</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"ढाँचा अनलक।"</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"फेस अनलक"</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Pin अनलक"</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"पासवर्ड अनलक।"</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"ढाँचा क्षेत्र।"</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"स्लाइड क्षेत्र।"</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?१२३"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="granularity_label_character" msgid="7336470535385009523">"अक्षर"</string>
- <string name="granularity_label_word" msgid="7075570328374918660">"शब्द"</string>
- <string name="granularity_label_link" msgid="5815508880782488267">"लिङ्क"</string>
- <string name="granularity_label_line" msgid="5764267235026120888">"लाइन"</string>
- <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string>
- <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string>
- <string name="factorytest_failed" msgid="5410270329114212041">"कार्यशाला परीक्षण असफल भयो।"</string>
- <string name="factorytest_not_system" msgid="4435201656767276723">"FACTORY_TEST कार्रवाइले /system/app मा स्थापित प्याकेजहरूको लागि मात्र समर्थन गर्छ।"</string>
- <string name="factorytest_no_action" msgid="872991874799998561">"कुनै प्याकेज फेला पार्न सकिएन जसले FACTORY_TEST कार्य प्रदान गर्दछ।"</string>
- <string name="factorytest_reboot" msgid="6320168203050791643">"पुनःबुट गर्नुहोस्"</string>
- <string name="js_dialog_title" msgid="1987483977834603872">"यस \"<xliff:g id="TITLE">%s</xliff:g>\" मा भएको पृष्ठले बताउँछ:"</string>
- <string name="js_dialog_title_default" msgid="6961903213729667573">"जाभास्क्रिप्ट"</string>
- <string name="js_dialog_before_unload_title" msgid="2619376555525116593">"मार्गनिर्देशन पक्का गर्नुहोस्"</string>
- <string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"यस पृष्ठलाई छोड्नुहोस्"</string>
- <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"यही पृष्ठमा रहनुहोस्"</string>
- <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nके तपाईँ यो पेजबाट नेभिगेट गर्न चाहनु हुन्छ भन्ने निश्चत छ?"</string>
- <string name="save_password_label" msgid="6860261758665825069">"निश्चित गर्नुहोस्"</string>
- <string name="double_tap_toast" msgid="4595046515400268881">"जुक्ति: जुमलाई ठूलो र सानो पार्न दुई पटक हान्नुहोस्।"</string>
- <string name="autofill_this_form" msgid="4616758841157816676">"स्वतः भर्ने"</string>
- <string name="setup_autofill" msgid="7103495070180590814">"अटोफिल सेटअप गर्नुहोस्"</string>
- <string name="autofill_address_name_separator" msgid="6350145154779706772">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3268041054899214945">"$१$२$३"</string>
- <string name="autofill_address_summary_separator" msgid="7483307893170324129">", "</string>
- <string name="autofill_address_summary_format" msgid="4874459455786827344">"$1$2$3"</string>
- <string name="autofill_province" msgid="2231806553863422300">"प्रान्त"</string>
- <string name="autofill_postal_code" msgid="4696430407689377108">"हुलाकी कोड"</string>
- <string name="autofill_state" msgid="6988894195520044613">"राज्य"</string>
- <string name="autofill_zip_code" msgid="8697544592627322946">"ZIP कोड"</string>
- <string name="autofill_county" msgid="237073771020362891">"काउन्टी"</string>
- <string name="autofill_island" msgid="4020100875984667025">"टापु"</string>
- <string name="autofill_district" msgid="8400735073392267672">"जिल्ला"</string>
- <string name="autofill_department" msgid="5343279462564453309">"विभाग"</string>
- <string name="autofill_prefecture" msgid="2028499485065800419">"प्रशासकीय क्षेत्र"</string>
- <string name="autofill_parish" msgid="8202206105468820057">"पेरिस"</string>
- <string name="autofill_area" msgid="3547409050889952423">"क्षेत्र"</string>
- <string name="autofill_emirate" msgid="2893880978835698818">"इमिरेट"</string>
- <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"तपाईँका बुकमार्कहरू र इतिहास पढ्नुहोस्"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="8462378226600439658">"ब्राउजरले भ्रमण गरेको सबै URL हरूको इतिहास र ब्राउजरका सबै बुकमार्कहरू पढ्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। नोट: यो अनुमतिलाई तेस्रो पक्ष ब्राउजरहरूद्वारा वा वेब ब्राउज गर्ने क्षमताद्वारा बलपूर्वक गराउन सकिँदैन।"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"वेब बुकमार्कहरू र इतिहास लेख्नुहोस्"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="6825527469145760922">"अनुप्रयोगलाई तपाईंको ट्याब्लेटमा भण्डार गरिएको ब्राउजरको इतिहास वा बुकमार्कहरू परिमार्जन गर्न अनुमति दिन्छ। यसले अनुप्रयोगलाई ब्राजर डेटा मेटाउन वा परिमार्जन गर्न अनुमति दिन सक्दछ। टिप्पणी: यो अनुमति वेब ब्राउज गर्ने क्षमताहरूको साथ तेस्रो-पार्टी ब्राउजर वा अन्य अनुप्रयोगहरूद्वारा लागू गरिएको होइन।"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"तपाईँको फोनमा भण्डारण भएको ब्राउजरको इतिहास वा बुकमार्कहरू परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। यसले सायद ब्राउजर डेटालाई मेट्न वा परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। नोट: वेब ब्राउज गर्ने क्षमतासहितका अन्य अनुप्रयोगहरू वा तेस्रो- पक्ष ब्राउजरद्वारा सायद यस अनुमतिलाई लागु गर्न सकिंदैन।"</string>
- <string name="permlab_setAlarm" msgid="1379294556362091814">"एउटा आलर्म सेट गर्नुहोस्"</string>
- <string name="permdesc_setAlarm" msgid="316392039157473848">"स्थापना गरिएको सङ्केत घडी अनुप्रयोगमा सङ्केत समय मिलाउन अनुप्रयोगलाई अनुमति दिन्छ। केही सङ्केत घडी अनुप्रयोगहरूले यो सुविधा कार्यान्वयन नगर्न सक्छन्।"</string>
- <string name="permlab_addVoicemail" msgid="5525660026090959044">"भ्वाइसमेल थप गर्नुहोस्"</string>
- <string name="permdesc_addVoicemail" msgid="6604508651428252437">"तपाईँको भ्वाइसमेल इनबक्समा सन्देश थप्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"भूस्थान अनुमतिहरू ब्राउजर परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"ब्राउजरको भू-स्थान अनुमतिहरू परिमार्जन गर्न अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले स्थान सूचना मनपरी वेब साइटहरूमा पठाउने अनुमतिको लागि यसलाई प्रयोग गर्न सक्छन्।"</string>
- <string name="permlab_packageVerificationAgent" msgid="5568139100645829117">"प्यकेजहरूको निरीक्षण गर्नुहोस्"</string>
- <string name="permdesc_packageVerificationAgent" msgid="8437590190990843381">"प्याकेज स्थापना योग्य छ कि भनेर रुजु गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_bindPackageVerifier" msgid="4187786793360326654">"एउटा प्याकेज रुजुकर्तामा बाँध्नुहोस्"</string>
- <string name="permdesc_bindPackageVerifier" msgid="3180741773233862126">"होल्डरलाई प्याकेज प्रमाणितकर्ताहरूको अनुरोधहरू बनाउन अनुमति दिन्छ। सामान्य अनुप्रयोगहरूलाई कहिले पनि आवश्यक नपर्न सक्दछ।"</string>
- <string name="permlab_serialPort" msgid="546083327654631076">"पहुँच सिरियल पोर्टहरू"</string>
- <string name="permdesc_serialPort" msgid="2991639985224598193">"होल्डरलाई SerialManager API प्रयोग गरेर सिरियल पोर्टहरू पहुँच गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_accessContentProvidersExternally" msgid="5077774297943409285">"विषयसूची प्रदातालाई बाह्य रूपमा पहुँच गर्नुहोस्"</string>
- <string name="permdesc_accessContentProvidersExternally" msgid="4544346486697853685">"सेलबाट धारकले विषयवस्तु प्रदायकहरूसम्मको पहुँच पाउन अनुमति दिन्छ। सामान्य अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्दैन।"</string>
- <string name="permlab_updateLock" msgid="3527558366616680889">"स्वचालित उपकरण अपडेटहरू हतोत्साहित गर्नुहोस्"</string>
- <string name="permdesc_updateLock" msgid="1655625832166778492">"होल्डरलाई उपकरण अपग्रेड गर्न गैर पारस्परिक पुनःबुटको लागि उचित समयको बारेमा प्रणालीमा जानाकारी प्रस्तावको लागि अनुमति दिन्छ।"</string>
- <string name="save_password_message" msgid="767344687139195790">"के तपाईं ब्राउजरले यो पासवर्ड सम्झेको चाहनुहुन्छ?"</string>
- <string name="save_password_notnow" msgid="6389675316706699758">"अहिले होइन"</string>
- <string name="save_password_remember" msgid="6491879678996749466">"सम्झनुहोस्"</string>
- <string name="save_password_never" msgid="8274330296785855105">"कहिल्यै पनि होइन"</string>
- <string name="open_permission_deny" msgid="7374036708316629800">"यो पृष्ठ खोल्न तपाईँलाई अनुमति छैन।"</string>
- <string name="text_copied" msgid="4985729524670131385">"क्लिपबोर्डमा प्रतिलिप गरिएको पाठ।"</string>
- <string name="more_item_label" msgid="4650918923083320495">"बढी"</string>
- <string name="prepend_shortcut_label" msgid="2572214461676015642">"मेनु+"</string>
- <string name="menu_space_shortcut_label" msgid="2410328639272162537">"ठाउँ"</string>
- <string name="menu_enter_shortcut_label" msgid="2743362785111309668">"प्रविष्टि गर्नुहोस्"</string>
- <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"मेटाउनुहोस्"</string>
- <string name="search_go" msgid="8298016669822141719">"खोज्नुहोस्"</string>
- <string name="searchview_description_search" msgid="6749826639098512120">"खोज्नुहोस्"</string>
- <string name="searchview_description_query" msgid="5911778593125355124">"जिज्ञासा खोज गर्नुहोस्"</string>
- <string name="searchview_description_clear" msgid="1330281990951833033">"प्रश्‍न हटाउनुहोस्"</string>
- <string name="searchview_description_submit" msgid="2688450133297983542">"जिज्ञासा पेस गर्नुहोस्"</string>
- <string name="searchview_description_voice" msgid="2453203695674994440">"भ्वाइस खोजी"</string>
- <string name="enable_explore_by_touch_warning_title" msgid="7460694070309730149">"छोएर अन्वेषण गर्ने सक्षम पार्न चाहनु हुन्छ?"</string>
- <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="8655887539089910577">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>ले स्पर्षद्वारा अन्वेषण सक्षम गर्न चाहन्छ। स्पर्षद्वारा अन्वेषण सक्षम भएको बेला, तपाईँ आफ्नो औँलाको मुनि भएका विषयवस्तुहरू बारे सुन्न वा विवरण हेर्न सक्नुहुन्छ वा ट्याब्लेटसँग अन्तर्क्रिया गर्न इशारा गर्नुहोस्।"</string>
- <string name="enable_explore_by_touch_warning_message" product="default" msgid="2708199672852373195">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>ले स्पर्षद्वारा अन्वेषण सक्षम गर्न चाहन्छ। स्पर्षद्वारा अन्वेषण सक्षम भएको बेला तपाईँ आफ्नो औँलाको मुनि भएका विषयवस्तुहरू बारे सुन्न वा विवरण हेर्न सक्नुहुन्छ वा फोनसँग अन्तर्क्रिया गर्न इशारा गर्नुहोस्।"</string>
- <string name="oneMonthDurationPast" msgid="7396384508953779925">"१ महिना अघि"</string>
- <string name="beforeOneMonthDurationPast" msgid="909134546836499826">"१ महिना अघि"</string>
- <plurals name="num_seconds_ago">
- <item quantity="one" msgid="4869870056547896011">"१ सेकेन्ड अघि"</item>
- <item quantity="other" msgid="3903706804349556379">"<xliff:g id="COUNT">%d</xliff:g> सेकेन्ड अघि"</item>
- </plurals>
- <plurals name="num_minutes_ago">
- <item quantity="one" msgid="3306787433088810191">"१ मिनेट अघि"</item>
- <item quantity="other" msgid="2176942008915455116">"<xliff:g id="COUNT">%d</xliff:g> मिनेट अघि"</item>
- </plurals>
- <plurals name="num_hours_ago">
- <item quantity="one" msgid="9150797944610821849">"१ घन्टा अघि"</item>
- <item quantity="other" msgid="2467273239587587569">"<xliff:g id="COUNT">%d</xliff:g> घन्टा अघि"</item>
- </plurals>
- <plurals name="last_num_days">
- <item quantity="other" msgid="3069992808164318268">"अन्तिम <xliff:g id="COUNT">%d</xliff:g> दिन"</item>
- </plurals>
- <string name="last_month" msgid="3959346739979055432">"अन्तिम महिना"</string>
- <string name="older" msgid="5211975022815554840">"पुरानो"</string>
- <plurals name="num_days_ago">
- <item quantity="one" msgid="861358534398115820">"हिजो"</item>
- <item quantity="other" msgid="2479586466153314633">"<xliff:g id="COUNT">%d</xliff:g> दिन अघि"</item>
- </plurals>
- <plurals name="in_num_seconds">
- <item quantity="one" msgid="2729745560954905102">"१ सेकेन्डमा"</item>
- <item quantity="other" msgid="1241926116443974687">"<xliff:g id="COUNT">%d</xliff:g> सेकेन्डमा"</item>
- </plurals>
- <plurals name="in_num_minutes">
- <item quantity="one" msgid="8793095251325200395">"१ मिनेटमा"</item>
- <item quantity="other" msgid="3330713936399448749">"<xliff:g id="COUNT">%d</xliff:g>मिनेटमा"</item>
- </plurals>
- <plurals name="in_num_hours">
- <item quantity="one" msgid="7164353342477769999">"१ घन्टामा"</item>
- <item quantity="other" msgid="547290677353727389">"<xliff:g id="COUNT">%d</xliff:g> घन्टामा"</item>
- </plurals>
- <plurals name="in_num_days">
- <item quantity="one" msgid="5413088743009839518">"भोलि"</item>
- <item quantity="other" msgid="5109449375100953247">"<xliff:g id="COUNT">%d</xliff:g> दिनमा"</item>
- </plurals>
- <plurals name="abbrev_num_seconds_ago">
- <item quantity="one" msgid="1849036840200069118">"१ सेकेन्ड अघि"</item>
- <item quantity="other" msgid="3699169366650930415">"<xliff:g id="COUNT">%d</xliff:g> सेकेन्ड अगाडि"</item>
- </plurals>
- <plurals name="abbrev_num_minutes_ago">
- <item quantity="one" msgid="6361490147113871545">"१ मिनेट अघि"</item>
- <item quantity="other" msgid="851164968597150710">"<xliff:g id="COUNT">%d</xliff:g> मिनेट अघि"</item>
- </plurals>
- <plurals name="abbrev_num_hours_ago">
- <item quantity="one" msgid="4796212039724722116">"१ घन्टा अघि"</item>
- <item quantity="other" msgid="6889970745748538901">"<xliff:g id="COUNT">%d</xliff:g> घन्टा अघि"</item>
- </plurals>
- <plurals name="abbrev_num_days_ago">
- <item quantity="one" msgid="8463161711492680309">"हिजो"</item>
- <item quantity="other" msgid="3453342639616481191">"<xliff:g id="COUNT">%d</xliff:g> दिन अघि"</item>
- </plurals>
- <plurals name="abbrev_in_num_seconds">
- <item quantity="one" msgid="5842225370795066299">"१ सेकन्ड"</item>
- <item quantity="other" msgid="5495880108825805108">"<xliff:g id="COUNT">%d</xliff:g> सेकेन्डमा"</item>
- </plurals>
- <plurals name="abbrev_in_num_minutes">
- <item quantity="one" msgid="562786149928284878">"१ मिनेटमा"</item>
- <item quantity="other" msgid="4216113292706568726">"<xliff:g id="COUNT">%d</xliff:g> मिनेटमा"</item>
- </plurals>
- <plurals name="abbrev_in_num_hours">
- <item quantity="one" msgid="3274708118124045246">"१ घन्टामा"</item>
- <item quantity="other" msgid="3705373766798013406">"<xliff:g id="COUNT">%d</xliff:g> घन्टामा"</item>
- </plurals>
- <plurals name="abbrev_in_num_days">
- <item quantity="one" msgid="2178576254385739855">"भोलि"</item>
- <item quantity="other" msgid="2973062968038355991">"दिन<xliff:g id="COUNT">%d</xliff:g> मा"</item>
- </plurals>
- <string name="preposition_for_date" msgid="9093949757757445117">"<xliff:g id="DATE">%s</xliff:g> मा"</string>
- <string name="preposition_for_time" msgid="5506831244263083793">"<xliff:g id="TIME">%s</xliff:g> मा"</string>
- <string name="preposition_for_year" msgid="5040395640711867177">"<xliff:g id="YEAR">%s</xliff:g> मा"</string>
- <string name="day" msgid="8144195776058119424">"दिन"</string>
- <string name="days" msgid="4774547661021344602">"दिन"</string>
- <string name="hour" msgid="2126771916426189481">"घन्टा"</string>
- <string name="hours" msgid="894424005266852993">"घन्टा"</string>
- <string name="minute" msgid="9148878657703769868">"मिनेट"</string>
- <string name="minutes" msgid="5646001005827034509">"मिनेट"</string>
- <string name="second" msgid="3184235808021478">"सेकेन्ड"</string>
- <string name="seconds" msgid="3161515347216589235">"सेकेन्ड"</string>
- <string name="week" msgid="5617961537173061583">"हप्ता"</string>
- <string name="weeks" msgid="6509623834583944518">"हप्ताहरू"</string>
- <string name="year" msgid="4001118221013892076">"वर्ष"</string>
- <string name="years" msgid="6881577717993213522">"वर्षहरू"</string>
- <plurals name="duration_seconds">
- <item quantity="one" msgid="6962015528372969481">"१ सेकेन्ड"</item>
- <item quantity="other" msgid="1886107766577166786">"<xliff:g id="COUNT">%d</xliff:g> सेकेन्ड"</item>
- </plurals>
- <plurals name="duration_minutes">
- <item quantity="one" msgid="4915414002546085617">"१ मिनेट"</item>
- <item quantity="other" msgid="3165187169224908775">"<xliff:g id="COUNT">%d</xliff:g> मिनेट"</item>
- </plurals>
- <plurals name="duration_hours">
- <item quantity="one" msgid="8917467491248809972">"१ घन्टा"</item>
- <item quantity="other" msgid="3863962854246773930">"<xliff:g id="COUNT">%d</xliff:g> घन्टा"</item>
- </plurals>
- <string name="VideoView_error_title" msgid="3534509135438353077">"भिडियो समस्या"</string>
- <string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"यो भिडियो यस उपकरणको लागि स्ट्रिमिङ गर्न मान्य छैन।"</string>
- <string name="VideoView_error_text_unknown" msgid="3450439155187810085">"यो भिडियो चलाउन सक्दैन।"</string>
- <string name="VideoView_error_button" msgid="2822238215100679592">"ठीक छ"</string>
- <string name="relative_time" msgid="1818557177829411417">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
- <string name="noon" msgid="7245353528818587908">"मध्यान्न"</string>
- <string name="Noon" msgid="3342127745230013127">"मध्यान्ह"</string>
- <string name="midnight" msgid="7166259508850457595">"मध्यरात"</string>
- <string name="Midnight" msgid="5630806906897892201">"मध्यरात"</string>
- <string name="elapsed_time_short_format_mm_ss" msgid="4431555943828711473">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
- <string name="elapsed_time_short_format_h_mm_ss" msgid="1846071997616654124">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
- <string name="selectAll" msgid="6876518925844129331">"सबैलाई चयन गर्नुहोस्"</string>
- <string name="cut" msgid="3092569408438626261">"काट्नुहोस्"</string>
- <string name="copy" msgid="2681946229533511987">"प्रतिलिपि बनाउनुहोस्"</string>
- <string name="paste" msgid="5629880836805036433">"टाँस्नुहोस्"</string>
- <string name="replace" msgid="5781686059063148930">"विस्थापन गर्नुहोस्…"</string>
- <string name="delete" msgid="6098684844021697789">"मेट्नुहोस्"</string>
- <string name="copyUrl" msgid="2538211579596067402">"URL को प्रतिलिप गर्नुहोस्"</string>
- <string name="selectTextMode" msgid="1018691815143165326">"पाठ चयन गर्नुहोस्"</string>
- <string name="textSelectionCABTitle" msgid="5236850394370820357">"पाठ चयनता"</string>
- <string name="addToDictionary" msgid="4352161534510057874">"शब्दकोशमा थप्नुहोस्"</string>
- <string name="deleteText" msgid="6979668428458199034">"मेट्नुहोस्"</string>
- <string name="inputMethod" msgid="1653630062304567879">"निवेश विधि"</string>
- <string name="editTextMenuTitle" msgid="4909135564941815494">"पाठ कार्यहरू"</string>
- <string name="low_internal_storage_view_title" msgid="5576272496365684834">"भण्डारण ठाउँ सकिँदै छ"</string>
- <string name="low_internal_storage_view_text" msgid="6640505817617414371">"सायद केही प्रणाली कार्यक्रमहरूले काम गर्दैनन्"</string>
- <string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> चलिरहेको छ"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"थप सूचनाको लागि छुनुहोस् वा अनुप्रयोग बन्द गर्नुहोस्।"</string>
- <string name="ok" msgid="5970060430562524910">"ठिक छ"</string>
- <string name="cancel" msgid="6442560571259935130">"रद्द गर्नुहोस्"</string>
- <string name="yes" msgid="5362982303337969312">"ठिक छ"</string>
- <string name="no" msgid="5141531044935541497">"रद्द गर्नुहोस्"</string>
- <string name="dialog_alert_title" msgid="2049658708609043103">"सावधानी"</string>
- <string name="loading" msgid="7933681260296021180">"लोड हुँदै..."</string>
- <string name="capital_on" msgid="1544682755514494298">"चालु"</string>
- <string name="capital_off" msgid="6815870386972805832">"बन्द"</string>
- <string name="whichApplication" msgid="4533185947064773386">"प्रयोग गरेर कारबाही पुरा गर्नुहोस्"</string>
- <string name="alwaysUse" msgid="4583018368000610438">"यस कार्यको लागि पूर्वनिर्धारितबाट प्रयोग गर्नुहोस्।"</string>
- <string name="clearDefaultHintMsg" msgid="3252584689512077257">"प्रणाली सेटिङहरूमा पूर्वनिर्धारितलाई हटाउनुहोस् &gt; अनुप्रयोगहरू &gt; डाउनलोड।"</string>
- <string name="chooseActivity" msgid="7486876147751803333">"एउटा कार्यको चयन गर्नुहोस्"</string>
- <string name="chooseUsbActivity" msgid="6894748416073583509">"USB उपकरणको लागि एउटा अनुप्रयोग छान्नुहोस्"</string>
- <string name="noApplications" msgid="2991814273936504689">"कुनै पनि अनुप्रयोगहरूले यो कार्य गर्न सक्दैनन्।"</string>
- <string name="aerr_title" msgid="1905800560317137752"></string>
- <string name="aerr_application" msgid="932628488013092776">"दुर्भाग्यवश, <xliff:g id="APPLICATION">%1$s</xliff:g>ले रोकेको छ।"</string>
- <string name="aerr_process" msgid="4507058997035697579">"दुर्भाग्यवश, प्रक्रिया <xliff:g id="PROCESS">%1$s</xliff:g> बन्द भयो।"</string>
- <string name="anr_title" msgid="4351948481459135709"></string>
- <string name="anr_activity_application" msgid="1904477189057199066">"<xliff:g id="APPLICATION">%2$s</xliff:g>ले कार्य गरिरहेको छैन।\n\nके तपाईँ यसलाई बन्द गर्न चाहनु हुन्छ?"</string>
- <string name="anr_activity_process" msgid="5776209883299089767">"गतिविधि <xliff:g id="ACTIVITY">%1$s</xliff:g> ले प्रतिक्रिया देखाइरहेको छैन।\n\nके तपाईं यसलाई बन्द गर्न चाहनु हुन्छ?"</string>
- <string name="anr_application_process" msgid="8941757607340481057">"<xliff:g id="APPLICATION">%1$s</xliff:g> जवाफ दिइरहेको छैन। के तपाईँ यसलाई बन्द गर्न चाहनु हुन्छ?"</string>
- <string name="anr_process" msgid="6513209874880517125">"प्रक्रिया <xliff:g id="PROCESS">%1$s</xliff:g>ले कार्य गरिरहेको छैन।\n\nके तपाईँ यसलाई बन्द गर्न चाहनु हुन्छ?"</string>
- <string name="force_close" msgid="8346072094521265605">"ठिक छ"</string>
- <string name="report" msgid="4060218260984795706">"रिपोर्ट गर्नुहोस्"</string>
- <string name="wait" msgid="7147118217226317732">"प्रतीक्षा गर्नुहोस्"</string>
- <string name="webpage_unresponsive" msgid="3272758351138122503">"पृष्ठ गैर जिम्मेवारी भएको छ।\n\nके तपाईं यसलाई बन्द गर्न चाहनुहुन्छ?"</string>
- <string name="launch_warning_title" msgid="1547997780506713581">"अनुप्रयोग पुनः निर्देशीत"</string>
- <string name="launch_warning_replace" msgid="6202498949970281412">"<xliff:g id="APP_NAME">%1$s</xliff:g> अहिले चलिरहेको छ।"</string>
- <string name="launch_warning_original" msgid="188102023021668683">"<xliff:g id="APP_NAME">%1$s</xliff:g> वास्तविक सुरुवात भएको थियो।"</string>
- <string name="screen_compat_mode_scale" msgid="3202955667675944499">"स्केल"</string>
- <string name="screen_compat_mode_show" msgid="4013878876486655892">"सधैँ देखाउनुहोस्"</string>
- <string name="screen_compat_mode_hint" msgid="1064524084543304459">"प्रणाली सेटिङहरूमा यसलाई पुनःसक्षम गराउनुहोस् &gt; अनुप्रयोगहरू &gt; डाउनलोड गरेको।"</string>
- <string name="smv_application" msgid="3307209192155442829">"अनुप्रयोग <xliff:g id="APPLICATION">%1$s</xliff:g> (प्रक्रिया <xliff:g id="PROCESS">%2$s</xliff:g>) ले यसको स्वयं-लागु गरिएको स्ट्रिटमोड नीति उलङ्घन गरेको छ।"</string>
- <string name="smv_process" msgid="5120397012047462446">"प्रक्रिया <xliff:g id="PROCESS">%1$s</xliff:g> यसको आफ्नै कडामोड नीतिका कारण उल्लङ्घन गरिएको छ।"</string>
- <string name="android_upgrading_title" msgid="1584192285441405746">"एन्ड्रोइड अपग्रेड हुँदैछ…"</string>
- <string name="android_upgrading_apk" msgid="7904042682111526169">"अनुप्रयोग अनुकुल हुँदै <xliff:g id="NUMBER_0">%1$d</xliff:g> को <xliff:g id="NUMBER_1">%2$d</xliff:g>।"</string>
- <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>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"अनुप्रयोगमा स्विच गर्न छुनुहोस्"</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>
- <string name="old_app_description" msgid="2082094275580358049">"नयाँ अनुप्रयोग सुरु नगर्नुहोस्।"</string>
- <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="sendText" msgid="5209874571959469142">"पाठको लागि एउटा प्रकार्य छान्नुहोस्"</string>
- <string name="volume_ringtone" msgid="6885421406845734650">"बजाउने मात्रा"</string>
- <string name="volume_music" msgid="5421651157138628171">"मिडियाको मात्रा"</string>
- <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"ब्लुटुथको माध्यमद्वारा बजाइदै छ।"</string>
- <string name="volume_music_hint_silent_ringtone_selected" msgid="8310739960973156272">"शान्त रिङ्गटोन सेट"</string>
- <string name="volume_call" msgid="3941680041282788711">"इन-कल भोल्युम"</string>
- <string name="volume_bluetooth_call" msgid="2002891926351151534">"ब्लुटुथ भित्री-कल मात्रा"</string>
- <string name="volume_alarm" msgid="1985191616042689100">"आलर्म मात्रा"</string>
- <string name="volume_notification" msgid="2422265656744276715">"सूचना मात्रा"</string>
- <string name="volume_unknown" msgid="1400219669770445902">"मात्रा"</string>
- <string name="volume_icon_description_bluetooth" msgid="6538894177255964340">"ब्लुटुथ भोल्युम"</string>
- <string name="volume_icon_description_ringer" msgid="3326003847006162496">"घन्टिको आवाज मात्रा"</string>
- <string name="volume_icon_description_incall" msgid="8890073218154543397">"कला मात्रा"</string>
- <string name="volume_icon_description_media" msgid="4217311719665194215">"मिडियाको मात्रा"</string>
- <string name="volume_icon_description_notification" msgid="7044986546477282274">"सूचना भोल्युम"</string>
- <string name="ringtone_default" msgid="3789758980357696936">"पूर्वनिर्धारित रिङटोन"</string>
- <string name="ringtone_default_with_actual" msgid="8129563480895990372">"पूर्वनिर्धारित रिङटोन (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
- <string name="ringtone_silent" msgid="7937634392408977062">"कुनै पनि होइन"</string>
- <string name="ringtone_picker_title" msgid="3515143939175119094">"घन्टीका स्वरहरू"</string>
- <string name="ringtone_unknown" msgid="5477919988701784788">"अज्ञात रिङटोन"</string>
- <plurals name="wifi_available">
- <item quantity="one" msgid="6654123987418168693">"वाइ-फाइ नेटवर्क उपलब्ध छ"</item>
- <item quantity="other" msgid="4192424489168397386">"वाइ-फाइ नेटवर्कहरू उपलब्ध"</item>
- </plurals>
- <plurals name="wifi_available_detailed">
- <item quantity="one" msgid="1634101450343277345">"खुल्ला वाइ-फाइ नेटवर्क उपलब्ध छ"</item>
- <item quantity="other" msgid="7915895323644292768">"खुल्ला वाइ-फाइ नेटवर्क उपलब्ध छ"</item>
- </plurals>
- <string name="wifi_available_sign_in" msgid="4029489716605255386">"वाइ-फाइ नेटवर्कमा साइन गर्नुहोस्"</string>
- <string name="network_available_sign_in" msgid="8495155593358054676">"नेटवर्कमा साइन गर्नुहोस्।"</string>
- <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
- <skip />
- <string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"वाइ-फाइसँग जडान गर्न सकेन"</string>
- <string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" कमजोर इन्टरनेट जडान छ।"</string>
- <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"वाइ-फाइ प्रत्यक्ष"</string>
- <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>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"सेटिङहरूको लागि छुनुहोस्"</string>
- <string name="accept" msgid="1645267259272829559">"स्वीकार्नुहोस्"</string>
- <string name="decline" msgid="2112225451706137894">"अस्वीकार गर्नुहोस्"</string>
- <string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"निमन्त्रणा पठाइएको"</string>
- <string name="wifi_p2p_invitation_to_connect_title" msgid="4958803948658533637">"जडानमा निमन्त्रणा"</string>
- <string name="wifi_p2p_from_message" msgid="570389174731951769">"बाट:"</string>
- <string name="wifi_p2p_to_message" msgid="248968974522044099">"प्रापक:"</string>
- <string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"आवश्यक PIN टाइप गर्नुहोस्:"</string>
- <string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="tablet" msgid="8012981257742232475">"यो <xliff:g id="DEVICE_NAME">%1$s</xliff:g>सँग जोडिएको बेला ट्याब्लेट अस्थायी रूपमा वाइ-फाइबाट विच्छेद गरिने छ।"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="default" msgid="7363907213787469151">"जब यो <xliff:g id="DEVICE_NAME">%1$s</xliff:g> सँग जडित हुन्छ, फोन अस्थायी रूपमा वाइ-फाइबाट विच्छेद हुने छ"</string>
- <string name="select_character" msgid="3365550120617701745">"अक्षरहरू प्रवेश गराउनुहोस्"</string>
- <string name="sms_control_title" msgid="7296612781128917719">"SMS सन्देशहरू पठाइँदै"</string>
- <string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ले धरै संख्यामा SMS सन्देशहरू पठाउँदैछ। के तपाईँ यस अनुप्रयोगलाई सन्देशहरू पठाउन सुचारु गर्न अनुमति दिन चाहनु हुन्छ?"</string>
- <string name="sms_control_yes" msgid="3663725993855816807">"अनुमति दिनुहोस्"</string>
- <string name="sms_control_no" msgid="625438561395534982">"अस्वीकार गर्नुहोस्"</string>
- <string name="sms_short_code_confirm_message" msgid="1645436466285310855">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; के तपाईँ सन्देश पठाउन चाहुनु हुन्छ &lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;/b&gt;."</string>
- <string name="sms_short_code_details" msgid="3492025719868078457">"यसले "<font fgcolor="#ffffb060">" शुल्क लगाउन सक्छ"</font>" तपाईँको मोबाइल खातामा।"</string>
- <string name="sms_premium_short_code_details" msgid="5523826349105123687"><font fgcolor="#ffffb060">"यसले तपाईंको मोबाइल खातामा चार्जहरू उत्पन्न गर्दछ।"</font></string>
- <string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"पठाउनुहोस्"</string>
- <string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"रद्द गर्नुहोस्"</string>
- <string name="sms_short_code_remember_choice" msgid="5289538592272218136">"मेरो छनौट याद राख्नुहोस्"</string>
- <string name="sms_short_code_remember_undo_instruction" msgid="4960944133052287484">"तपाईँ यसलाई पछि सेटिङहरूमा बदल्न सक्नु हुन्छ &gt; अनुप्रयोगहरू"</string>
- <string name="sms_short_code_confirm_always_allow" msgid="3241181154869493368">"सधैँ अनुमति दिनुहोस्"</string>
- <string name="sms_short_code_confirm_never_allow" msgid="446992765774269673">"कहिल्यै अनुमति नदिनुहोस्"</string>
- <string name="sim_removed_title" msgid="6227712319223226185">"SIM कार्ड हटाइयो"</string>
- <string name="sim_removed_message" msgid="2333164559970958645">"एउटा मान्य SIM कार्ड राखेर पुनःस्टार्ट नगरेसम्म मोबाइल नेटवर्क उपलब्ध हुने छैन।"</string>
- <string name="sim_done_button" msgid="827949989369963775">"भयो"</string>
- <string name="sim_added_title" msgid="3719670512889674693">"SIM कार्ड थप गरियो"</string>
- <string name="sim_added_message" msgid="6599945301141050216">"मोबाइल नेटवर्क पहुँच गर्न तपाईँको उपकरण पुनःस्टार्ट गर्नुहोस्।"</string>
- <string name="sim_restart_button" msgid="4722407842815232347">"पुनःस्टार्ट गर्नुहोस्"</string>
- <string name="time_picker_dialog_title" msgid="8349362623068819295">"समय मिलाउनुहोस्"</string>
- <string name="date_picker_dialog_title" msgid="5879450659453782278">"मिति मिलाउनुहोस्"</string>
- <string name="date_time_set" msgid="5777075614321087758">"सेट गर्नुहोस्"</string>
- <string name="date_time_done" msgid="2507683751759308828">"भयो"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"नयाँ: "</font></string>
- <string name="perms_description_app" msgid="5139836143293299417">"<xliff:g id="APP_NAME">%1$s</xliff:g>द्वारा प्रदान गरिएको।"</string>
- <string name="no_permissions" msgid="7283357728219338112">"कुनै अनुमति आवश्यक छैन"</string>
- <string name="perm_costs_money" msgid="4902470324142151116">"सायद तपाईँलाई पैसा पर्न सक्छ।"</string>
- <string name="usb_storage_activity_title" msgid="4465055157209648641">"USB ठूलो भण्डारण"</string>
- <string name="usb_storage_title" msgid="5901459041398751495">"USB जोडिएको छ"</string>
- <string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"तपाईं आफ्नो कम्प्युटरमा USB मार्फत जडान हुनुभयो। तलको बटन टच गर्नुहोस् यदि तपाईं आफ्नो कम्प्युटर र एन्ड्रोइडको USB भण्डारण बीच फाइलहरू प्रतिलिपि गर्न चाहनुहुन्छ भने।"</string>
- <string name="usb_storage_message" product="default" msgid="805351000446037811">"तपाईं आफ्नो कम्प्युटरमा USB मार्फत जडान हुनुभयो। तलको बटन टच गर्नुहोस् यदि तपाईं आफ्नो कम्प्युटर र एन्ड्रोइडको SD कार्ड बीच फाइलहरू प्रतिलिपि गर्न चाहनुहुन्छ भने।"</string>
- <string name="usb_storage_button_mount" msgid="1052259930369508235">"USB भण्डारण चालु गर्नुहोस्"</string>
- <string name="usb_storage_error_message" product="nosdcard" msgid="3017045217365540658">"USB आम भण्डारणको लागि तपाईँको USB भण्डारण प्रयोग गर्दा एउटा समस्या भयो।"</string>
- <string name="usb_storage_error_message" product="default" msgid="2876018512716970313">"USB आम भण्डारणको लागि तपाईँको SD कार्ड प्रयोग गर्दा एउटा समस्या भयो।"</string>
- <string name="usb_storage_notification_title" msgid="8175892554757216525">"USB जोडिएको छ"</string>
- <string name="usb_storage_notification_message" msgid="939822783828183763">"तपाईँको कम्प्युटरबाट वा तिर फाइलहरू प्रतिलिप गर्न छुनुहोस्।"</string>
- <string name="usb_storage_stop_notification_title" msgid="2336058396663516017">"USB भण्डारण बन्द गर्नुहोस्"</string>
- <string name="usb_storage_stop_notification_message" msgid="1656852098555623822">"USB भण्डारण बन्द गर्न छुनुहोस्।"</string>
- <string name="usb_storage_stop_title" msgid="660129851708775853">"USB भण्डारण प्रयोगमा छ"</string>
- <string name="usb_storage_stop_message" product="nosdcard" msgid="4264025280777219521">"USB भण्डारण बन्द हुनुभन्दा पहीले तपाईँको कम्प्युटरबाट तपाईँको एन्ड्रोइड USB भण्डारण अनमाउन्ट (\"झिक्नुहोस्\") गर्नुहोस् ।"</string>
- <string name="usb_storage_stop_message" product="default" msgid="8043969782460613114">"USB भण्डारण बन्द गर्नुअघि तपाईँको कम्प्युटरबाट तपाईँको एन्ड्रोइडको SD कार्ड अनमाउन्ट (\"निकालेको\") गर्नुहोस्।"</string>
- <string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"USB भण्डारण बन्द गर्नुहोस्"</string>
- <string name="usb_storage_stop_error_message" msgid="1970374898263063836">"USB भण्डारण बन्द गर्दा एउटा समस्या भयो। तपाईँले USB होस्ट अनमाउन्ट गर्नु भएको जाँच गर्नुहोस्, त्यसपछि फेरि प्रयास गर्नुहोस्।"</string>
- <string name="dlg_confirm_kill_storage_users_title" msgid="963039033470478697">"USB भण्डारण खोल्नुहोस्"</string>
- <string name="dlg_confirm_kill_storage_users_text" msgid="5100428757107469454">"यदि तपाईँले USB भण्डारण खोल्नु भयो भने तपाईँले प्रयोग गरिरहनु भएका केही अनुप्रयोगहरू रोकिने छन् र तपाईँले USB भण्डारण बन्द नगरेसम्म अनुपलब्ध हुन सक्छन्।"</string>
- <string name="dlg_error_title" msgid="7323658469626514207">"USB संचालन असफल"</string>
- <string name="dlg_ok" msgid="7376953167039865701">"ठिक छ"</string>
- <string name="usb_mtp_notification_title" msgid="3699913097391550394">"मिडिया उपकरणको रूपमा जडित"</string>
- <string name="usb_ptp_notification_title" msgid="1960817192216064833">"क्यामेराको रूपमा जडान भएको"</string>
- <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"एउटा स्थापनकर्ताको रूपमा जोडिएको छ"</string>
- <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB सहायकमा जोडिएको छ"</string>
- <string name="usb_notification_message" msgid="2290859399983720271">"अन्य USB विकल्पहरूको लागि टच गर्नुहोस्।"</string>
- <string name="extmedia_format_title" product="nosdcard" msgid="9020092196061007262">"USB भण्डारणलाई फर्म्याट गर्न चाहनु हुन्छ?"</string>
- <string name="extmedia_format_title" product="default" msgid="3648415921526526069">"SD कार्ड फर्म्याट गर्ने?"</string>
- <string name="extmedia_format_message" product="nosdcard" msgid="3934016853425761078">"तपाईंको USBमा सङ्ग्रह भएका सबै फाइलहरू मेटिने छन्। यो कार्य उल्टाउन सकिँदैन!"</string>
- <string name="extmedia_format_message" product="default" msgid="14131895027543830">"तपाईँको कार्डमा भएका सबै डेटाहरू हराउने छन्।"</string>
- <string name="extmedia_format_button_format" msgid="4131064560127478695">"फर्म्याट गर्नुहोस्"</string>
- <string name="adb_active_notification_title" msgid="6729044778949189918">"USB डिबग गर्ने जडित छ"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB डिबग गर्ने असक्षम पार्न छुनुहोस्।"</string>
- <string name="select_input_method" msgid="4653387336791222978">"निवेश विधि छान्नुहोस्"</string>
- <string name="configure_input_methods" msgid="9091652157722495116">"इनपुट विधिहरू सेटअप गर्नुहोस्"</string>
- <string name="use_physical_keyboard" msgid="6203112478095117625">"भौतिक किबोर्ड"</string>
- <string name="hardware" msgid="7517821086888990278">"हार्डवेयर"</string>
- <string name="select_keyboard_layout_notification_title" msgid="1407367017263030773">"किबोर्ड रूपरेखा चयन गर्नुहोस्"</string>
- <string name="select_keyboard_layout_notification_message" msgid="4465907700449257063">"किबोर्ड रूपरेखा चयन गर्न टच गर्नुहोस्।"</string>
- <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="candidates_style" msgid="4333913089637062257"><u>"उम्मेदवार"</u></string>
- <string name="ext_media_checking_notification_title" product="nosdcard" msgid="3449816005351468560">"USB भण्डारणको तयारी हुँदै"</string>
- <string name="ext_media_checking_notification_title" product="default" msgid="5457603418970994050">"SD कार्ड तयार गर्दै"</string>
- <string name="ext_media_checking_notification_message" msgid="8287319882926737053">"त्रुटिहरूको लागि जाँच गर्दै।"</string>
- <string name="ext_media_nofs_notification_title" product="nosdcard" msgid="7788040745686229307">"रिक्त USB भण्डारण"</string>
- <string name="ext_media_nofs_notification_title" product="default" msgid="780477838241212997">"खाली SD कार्ड"</string>
- <string name="ext_media_nofs_notification_message" product="nosdcard" msgid="7840121067427269500">"USB भण्डारण खाली वा असमर्थित फाइल प्रणाली छ।"</string>
- <string name="ext_media_nofs_notification_message" product="default" msgid="8641065641786923604">"SD कार्ड खाली छ अथवा समर्थन नगरिएको फाइल प्रणाली छ।"</string>
- <string name="ext_media_unmountable_notification_title" product="nosdcard" msgid="2090046769532713563">"बिग्रिएको USB भण्डारण"</string>
- <string name="ext_media_unmountable_notification_title" product="default" msgid="6410723906019100189">"बिग्रिएको SD कार्ड"</string>
- <string name="ext_media_unmountable_notification_message" product="nosdcard" msgid="1795917578395333280">"USB भण्डारण बिग्रिएको छ। यसलाई पुनःफर्म्याट गर्न प्रयास गर्नुहोस।"</string>
- <string name="ext_media_unmountable_notification_message" product="default" msgid="1753898567525568253">"SD कार्ड बिग्रिएको छ। यसलाई पुनःफर्म्याट गर्न प्रयास गर्नुहोस।"</string>
- <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"USB भण्डारण अप्रत्याशित रूपमा हटाइएको छ"</string>
- <string name="ext_media_badremoval_notification_title" product="default" msgid="6872152882604407837">"SD कार्ड अनपेक्षित रूपमा हटाइयो"</string>
- <string name="ext_media_badremoval_notification_message" product="nosdcard" msgid="4329848819865594241">"डेटा गुम्नबाट रोक्नको लागि USB भण्डारण हटाउनुअघि अनमाउन्ट गर्नुहोस्।"</string>
- <string name="ext_media_badremoval_notification_message" product="default" msgid="7260183293747448241">"डेटा नाश हुनबाट बच्न SD कार्डलाई निकाल्नुभन्दा पहिला अनमाउन्ट गर्नुहोस्।"</string>
- <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"USB भण्डारण हटाउनको लागि सुरक्षित छ"</string>
- <string name="ext_media_safe_unmount_notification_title" product="default" msgid="6729801130790616200">"SD कार्ड हटाउन सुरक्षित छ।"</string>
- <string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"तपाईं सुरक्षित रूपमा USB भण्डारण हटाउन सक्नुहुने छ।"</string>
- <string name="ext_media_safe_unmount_notification_message" product="default" msgid="568841278138377604">"तपाईँ SD कार्ड सुरक्षित रूपमा हटाउन सक्नु हुन्छ।"</string>
- <string name="ext_media_nomedia_notification_title" product="nosdcard" msgid="4486377230140227651">"USB भण्डारण हटाइयो"</string>
- <string name="ext_media_nomedia_notification_title" product="default" msgid="8902518030404381318">"हटाइएको SD कार्ड"</string>
- <string name="ext_media_nomedia_notification_message" product="nosdcard" msgid="6921126162580574143">"USD भण्डारण हटाइयो। नयाँ मिडिया घुसाउनुहोस्।"</string>
- <string name="ext_media_nomedia_notification_message" product="default" msgid="3870120652983659641">"SD कार्ड हटाइयो। एउटा नयाँ छिराउनुहोस्।"</string>
- <string name="activity_list_empty" msgid="1675388330786841066">"कुनै मिल्ने गतिविधि पाइएन।"</string>
- <string name="permlab_pkgUsageStats" msgid="8787352074326748892">"खण्ड प्रयोग तथ्याङ्कहरू अपडेट गर्नुहोस्"</string>
- <string name="permdesc_pkgUsageStats" msgid="1106612424254277630">"जम्मा गरिएको घटक उपयोग तथ्याङ्कहरूलाई परिमार्जन गर्न अनुप्रयोगलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूबाट प्रयोगको लागि होइन।"</string>
- <string name="permlab_copyProtectedData" msgid="4341036311211406692">"सामाग्रीको नकल गर्नुहोस्"</string>
- <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"अनुप्रयोगलाई सामग्री प्रतिलिपि गर्न पूर्वनिर्धारित कन्टेनर सेवा आह्वान गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूद्वाराको प्रयोगको लागि होइन।"</string>
- <string name="permlab_route_media_output" msgid="1642024455750414694">"मिडिया परिणाम दिशानिर्देश गर्नुहोस्"</string>
- <string name="permdesc_route_media_output" msgid="4932818749547244346">"मिडिया परिणामलाई अन्य बाहिरी उपकरणहरूसँग लैजानको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"किगार्ड सुरक्षित भण्डारण पहुँच गर्नुहोस्"</string>
- <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"अनुप्रयोगलाई किगार्ड सुरक्षित भण्डारण पहुँच गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_control_keyguard" msgid="172195184207828387">"किगार्ड प्रदर्शन गर्ने र लुकाउने नियन्त्रण गर्नुहोस्"</string>
- <string name="permdesc_control_keyguard" msgid="3043732290518629061">"अनुप्रयोगलाई किगार्ड नियन्त्रण गर्न अनुमति दिन्छ।"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"जुम नियन्त्रणको लागि दुई चोटि टच गर्नुहोस्"</string>
- <string name="gadget_host_error_inflating" msgid="4882004314906466162">"विजेट थप गर्न सकिँदैन।"</string>
- <string name="ime_action_go" msgid="8320845651737369027">"जानुहोस्"</string>
- <string name="ime_action_search" msgid="658110271822807811">"खोज्नुहोस्"</string>
- <string name="ime_action_send" msgid="2316166556349314424">"पठाउनुहोस्"</string>
- <string name="ime_action_next" msgid="3138843904009813834">"अर्को"</string>
- <string name="ime_action_done" msgid="8971516117910934605">"भयो"</string>
- <string name="ime_action_previous" msgid="1443550039250105948">"अघिल्लो"</string>
- <string name="ime_action_default" msgid="2840921885558045721">"चलाउनुहोस्"</string>
- <string name="dial_number_using" msgid="5789176425167573586">\n"नम्बर डायल गर्नुहोस् <xliff:g id="NUMBER">%s</xliff:g> प्रयोग गरेर"</string>
- <string name="create_contact_using" msgid="4947405226788104538">"सम्पर्क सिर्जना गर्नुहोस्\nयो <xliff:g id="NUMBER">%s</xliff:g> प्रयोग गरेर"</string>
- <string name="grant_credentials_permission_message_header" msgid="2106103817937859662">"निम्न एउटा वा धेरै अनुप्रयोगहरूले तपाईँको खातामा पहुँचको लागि अनुमति अहिले र भविष्यमा अनुरोध गर्छन्।"</string>
- <string name="grant_credentials_permission_message_footer" msgid="3125211343379376561">"के तपाईँ यस अनुरोधलाई अनुमति दिन चाहनुहुन्छ?"</string>
- <string name="grant_permissions_header_text" msgid="6874497408201826708">"अनुरोध पहुँच गर्नुहोस्"</string>
- <string name="allow" msgid="7225948811296386551">"अनुमति दिनुहोस्"</string>
- <string name="deny" msgid="2081879885755434506">"अस्वीकार गर्नुहोस्"</string>
- <string name="permission_request_notification_title" msgid="6486759795926237907">"अनुरोध गरिएको अनुमति"</string>
- <string name="permission_request_notification_with_subtitle" msgid="8530393139639560189">\n"खाता <xliff:g id="ACCOUNT">%s</xliff:g>को लागि अनुरोध गरिएको अनुमति।"</string>
- <string name="input_method_binding_label" msgid="1283557179944992649">"इनपुट विधि"</string>
- <string name="sync_binding_label" msgid="3687969138375092423">"सिङ्क गर्नुहोस्"</string>
- <string name="accessibility_binding_label" msgid="4148120742096474641">"उपलब्धता"</string>
- <string name="wallpaper_binding_label" msgid="1240087844304687662">"वालपेपर"</string>
- <string name="chooser_wallpaper" msgid="7873476199295190279">"वालपेपर परिवर्तन गर्नुहोस्"</string>
- <string name="notification_listener_binding_label" msgid="2014162835481906429">"सूचना सुन्नेवाला"</string>
- <string name="vpn_title" msgid="19615213552042827">"VPN सक्रिय भयो"</string>
- <string name="vpn_title_long" msgid="6400714798049252294">"VPN <xliff:g id="APP">%s</xliff:g>द्वारा सक्रिय गरिएको हो"</string>
- <string name="vpn_text" msgid="3011306607126450322">"नेटवर्क प्रबन्ध गर्न छुनुहोस्।"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g>सँग जोडिएको छ। नेटवर्क व्यवस्थापन गर्नको लागि छुनुहोस्।"</string>
- <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>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"कन्फिगर गर्न टच गर्नुहोस्"</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>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"कार मोडबाट निस्कन छुनुहोस्।"</string>
- <string name="tethered_notification_title" msgid="3146694234398202601">"टेथर गर्ने वा हटस्पट सक्रिय"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"सेटअप गर्न टच गर्नुहोस्।"</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>
- <string name="throttle_warning_notification_title" msgid="4890894267454867276">"उच्च मोबाइल डेटा प्रयोग"</string>
- <string name="throttle_warning_notification_message" msgid="3340822228599337743">"मोबाइल डेटा प्रयोगको बारेमा अरू थप जान्नको लागि छुनुहोस्।"</string>
- <string name="throttled_notification_title" msgid="6269541897729781332">"मोबाइल डेटा सीमा पार भयो"</string>
- <string name="throttled_notification_message" msgid="5443457321354907181">"मोबाइल डेटा प्रयोग बारे थप सिक्न छुनुहोस्।"</string>
- <string name="no_matches" msgid="8129421908915840737">"कुनै मिलेन"</string>
- <string name="find_on_page" msgid="1946799233822820384">"पृष्ठमा फेला पार्नुहोस्"</string>
- <plurals name="matches_found">
- <item quantity="one" msgid="8167147081136579439">"१ मेल"</item>
- <item quantity="other" msgid="4641872797067609177">"<xliff:g id="TOTAL">%d</xliff:g> को <xliff:g id="INDEX">%d</xliff:g>"</item>
- </plurals>
- <string name="action_mode_done" msgid="7217581640461922289">"भयो"</string>
- <string name="progress_unmounting" product="nosdcard" msgid="3923810448507612746">"USB भण्डारण अनमाउन्ट गर्दै..."</string>
- <string name="progress_unmounting" product="default" msgid="1327894998409537190">"SD कार्ड अनमाउन्ट गर्दै…"</string>
- <string name="progress_erasing" product="nosdcard" msgid="4521573321524340058">"USB भण्डारण मेटाउँदै…"</string>
- <string name="progress_erasing" product="default" msgid="6596988875507043042">"SD कार्ड मेटाउँदै…"</string>
- <string name="format_error" product="nosdcard" msgid="6299769563624776948">"USB भण्डारणलाई मेटाउन सकेन।"</string>
- <string name="format_error" product="default" msgid="7315248696644510935">"SD कार्ड मेटाउन सकेन"</string>
- <string name="media_bad_removal" msgid="7960864061016603281">"SD कार्ड अनमाउन्ट हुनुभन्दा पहिला निकालियो।"</string>
- <string name="media_checking" product="nosdcard" msgid="418188720009569693">"अहिले USB भण्डारण जाँच भइरहेको छ।"</string>
- <string name="media_checking" product="default" msgid="7334762503904827481">"SD कार्ड अहिले परीक्षण भइरहेको छ।"</string>
- <string name="media_removed" msgid="7001526905057952097">"SD कार्ड हटाइयो।"</string>
- <string name="media_shared" product="nosdcard" msgid="5830814349250834225">"SD कार्ड कम्प्युटरद्वारा अहिले प्रयोगमा छ।"</string>
- <string name="media_shared" product="default" msgid="5706130568133540435">"SD कार्ड अहिले कम्प्युटरद्वारा प्रयोगमा छ।"</string>
- <string name="media_unknown_state" msgid="729192782197290385">"बाह्य मिडिया अज्ञात अवस्थामा।"</string>
- <string name="share" msgid="1778686618230011964">"साझेदारी गर्नुहोस्"</string>
- <string name="find" msgid="4808270900322985960">"पत्ता लगाउनुहोस्"</string>
- <string name="websearch" msgid="4337157977400211589">"वेब खोजी"</string>
- <string name="find_next" msgid="5742124618942193978">"अर्को भेटाउनुहोस्"</string>
- <string name="find_previous" msgid="2196723669388360506">"अघिल्लो फेला पार्नुहोस्"</string>
- <string name="gpsNotifTicker" msgid="5622683912616496172">"<xliff:g id="NAME">%s</xliff:g> बाट स्थान अनुरोध"</string>
- <string name="gpsNotifTitle" msgid="5446858717157416839">"स्थान अनुरोध"</string>
- <string name="gpsNotifMessage" msgid="1374718023224000702">"<xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>) द्वारा अनुरोध गरिएको"</string>
- <string name="gpsVerifYes" msgid="2346566072867213563">"हो"</string>
- <string name="gpsVerifNo" msgid="1146564937346454865">"होइन"</string>
- <string name="sync_too_many_deletes" msgid="5296321850662746890">"सीमा नाघेकाहरू मेट्नुहोस्"</string>
- <string name="sync_too_many_deletes_desc" msgid="496551671008694245">"त्यहाँ <xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> मेटाइएका आइटमहरू छन् <xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g>को लागि, खाता <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g>। तपाईं के गर्न चाहनु हुन्छ?"</string>
- <string name="sync_really_delete" msgid="2572600103122596243">"वस्तुहरू मेट्नुहोस्"</string>
- <string name="sync_undo_deletes" msgid="2941317360600338602">"मेटिएकाहरू पूर्ववत बनाउनुहोस्।"</string>
- <string name="sync_do_nothing" msgid="3743764740430821845">"अहिलेको लागि केही नगर्नुहोस्"</string>
- <string name="choose_account_label" msgid="5655203089746423927">"एउटा खाता छान्‍नुहोस्"</string>
- <string name="add_account_label" msgid="2935267344849993553">"एउटा खाता थप्नुहोस्"</string>
- <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>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<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>
- <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"घन्टा बढाउनुहोस्"</string>
- <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"घन्टा घटाउनुहोस्"</string>
- <string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"PM सेट गर्नुहोस्"</string>
- <string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"AM सेट गर्नुहोस्"</string>
- <string name="date_picker_increment_month_button" msgid="5369998479067934110">"महिना बढाउनुहोस्"</string>
- <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"महिना घटाउनुहो्स्"</string>
- <string name="date_picker_increment_day_button" msgid="7130465412308173903">"दिन बढाउनुहोस्"</string>
- <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"दिन घटाउनुहोस्"</string>
- <string name="date_picker_increment_year_button" msgid="6318697384310808899">"वर्ष बढाउनुहोस्"</string>
- <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"वर्ष घटाउनुहोस्"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"रद्द गर्नुहोस्"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"मेट्नुहोस्"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"भयो"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"मोड परिवर्तन गर्नुहोस्"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"प्रविष्टि गर्नुहोस्"</string>
- <string name="activitychooserview_choose_application" msgid="2125168057199941199">"एउटा अनुप्रयोग छान्नुहोस्"</string>
- <string name="shareactionprovider_share_with" msgid="806688056141131819">"साझेदारी गर्नुहोस्..."</string>
- <string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> सँग साझेदारी गर्नुहोस्"</string>
- <string name="content_description_sliding_handle" msgid="415975056159262248">"धिसार्ने ह्यान्डल। छुनुहोस् &amp; समाउनुहोस्।"</string>
- <string name="description_direction_up" msgid="7169032478259485180">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>को लागि माथि धिसार्नुहोस्"</string>
- <string name="description_direction_down" msgid="5087739728639014595">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> को लागि तल स्लाइड गर्नुहोस्।"</string>
- <string name="description_direction_left" msgid="7207478719805562165">"स्लाइड <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>को लागि बायाँ।"</string>
- <string name="description_direction_right" msgid="8034433242579600980">"स्लाइड <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>को लागि दायाँ।"</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"अनलक गर्नुहोस्"</string>
- <string name="description_target_camera" msgid="969071997552486814">"क्यामेरा"</string>
- <string name="description_target_silent" msgid="893551287746522182">"मौन"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"आवाज चालू"</string>
- <string name="description_target_search" msgid="3091587249776033139">"खोज्नुहोस्"</string>
- <string name="description_target_unlock_tablet" msgid="3833195335629795055">"खोल्नलाइ हुत्त्याउनुहोस्।"</string>
- <string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"बोलिएको पासवर्ड कुञ्जीहरू सुन्नको लागि हेडसेट प्लग इन गर्नुहोस्।"</string>
- <string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"डट।"</string>
- <string name="action_bar_home_description" msgid="5293600496601490216">"गृह खोज्नुहोस्"</string>
- <string name="action_bar_up_description" msgid="2237496562952152589">"माथि खोज्नुहोस्"</string>
- <string name="action_menu_overflow_description" msgid="2295659037509008453">"थप विकल्पहरू"</string>
- <string name="action_bar_home_description_format" msgid="7965984360903693903">"%1$s, %2$s"</string>
- <string name="action_bar_home_subtitle_description_format" msgid="6985546530471780727">"%1$s, %2$s, %3$s"</string>
- <string name="storage_internal" msgid="4891916833657929263">"आन्तरिक भण्डारण"</string>
- <string name="storage_sd_card" msgid="3282948861378286745">"SD कार्ड"</string>
- <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>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"उपयोग र सेटिङहरू हेर्न छुनुहोस्।"</string>
- <string name="data_usage_3g_limit_title" msgid="7093334419518706686">"2G-3G डेटा असक्षम गरिएको"</string>
- <string name="data_usage_4g_limit_title" msgid="7636489436819470761">"4G डेटा असक्षम गरियो"</string>
- <string name="data_usage_mobile_limit_title" msgid="7869402519391631884">"मोबाइल डेटा असक्षम पारियो।"</string>
- <string name="data_usage_wifi_limit_title" msgid="8992154736441284865">"वाइ-फाइ डेटा असक्षम गरियो"</string>
- <string name="data_usage_limit_body" msgid="3317964706973601386">"सक्षम पार्न छुनुहोस्।"</string>
- <string name="data_usage_3g_limit_snoozed_title" msgid="7026739121138005231">"2G-3G डेटा सीमा भन्दा पार भएको छ"</string>
- <string name="data_usage_4g_limit_snoozed_title" msgid="1106562779311209039">"4G डेटा SIMा नाघ्यो"</string>
- <string name="data_usage_mobile_limit_snoozed_title" msgid="279240572165412168">"मोवाइल डेटा SIMा नाघ्यो"</string>
- <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>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"अवरोध हटाउन छुनुहोस्।"</string>
- <string name="ssl_certificate" msgid="6510040486049237639">"सुरक्षा प्रमाणपत्र"</string>
- <string name="ssl_certificate_is_valid" msgid="6825263250774569373">"प्रमाणपत्र मान्य छ।"</string>
- <string name="issued_to" msgid="454239480274921032">"द्वारा जारी गरिएको:"</string>
- <string name="common_name" msgid="2233209299434172646">"साधारण नाम:"</string>
- <string name="org_name" msgid="6973561190762085236">"संगठन:"</string>
- <string name="org_unit" msgid="7265981890422070383">"संगठनात्मक एकाइ:"</string>
- <string name="issued_by" msgid="2647584988057481566">"द्वारा जारी गरिएको:"</string>
- <string name="validity_period" msgid="8818886137545983110">"मान्यता:"</string>
- <string name="issued_on" msgid="5895017404361397232">"जारी गरिएको:"</string>
- <string name="expires_on" msgid="3676242949915959821">"अवधि समाप्त:"</string>
- <string name="serial_number" msgid="758814067660862493">"क्रम संख्या:"</string>
- <string name="fingerprints" msgid="4516019619850763049">"औँठाछापहरू:"</string>
- <string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-२५६ औंठाछाप:"</string>
- <string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1 औंलाछाप:"</string>
- <string name="activity_chooser_view_see_all" msgid="4292569383976636200">"सबै हेर्नुहोस्"</string>
- <string name="activity_chooser_view_dialog_title_default" msgid="4710013864974040615">"गतिविधि छनौट गर्नुहोस्"</string>
- <string name="share_action_provider_share_with" msgid="5247684435979149216">"साझेदारी गर्नुहोस्..."</string>
- <string name="list_delimeter" msgid="3975117572185494152">", "</string>
- <string name="sending" msgid="3245653681008218030">"पठाउँदै..."</string>
- <string name="launchBrowserDefault" msgid="2057951947297614725">"ब्राउजर सुरु गर्ने हो?"</string>
- <string name="SetupCallDefault" msgid="5834948469253758575">"कल स्वीकार गर्नुहुन्छ?"</string>
- <string name="activity_resolver_use_always" msgid="8017770747801494933">"सधैँ"</string>
- <string name="activity_resolver_use_once" msgid="2404644797149173758">"एउटा मात्र"</string>
- <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"ट्याब्लेट"</string>
- <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"फोन"</string>
- <string name="default_audio_route_name_headphones" msgid="8119971843803439110">"हेडफोनहरू"</string>
- <string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"डक स्पिकरहरू"</string>
- <string name="default_media_route_name_hdmi" msgid="2450970399023478055">"HDMI"</string>
- <string name="default_audio_route_category_name" msgid="3722811174003886946">"प्रणाली"</string>
- <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"ब्लुटुथ अडियो"</string>
- <string name="wireless_display_route_description" msgid="9070346425023979651">"ताररहित प्रदर्शन"</string>
- <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"भयो"</string>
- <string name="media_route_button_content_description" msgid="5758553567065145276">"मिडियाको उत्पादन"</string>
- <string name="media_route_status_scanning" msgid="7279908761758293783">"स्क्यान गर्दै ..."</string>
- <string name="media_route_status_connecting" msgid="6422571716007825440">"जडान हुँदै..."</string>
- <string name="media_route_status_available" msgid="6983258067194649391">"उपलब्ध"</string>
- <string name="media_route_status_not_available" msgid="6739899962681886401">"उपलब्ध छैन"</string>
- <string name="media_route_status_in_use" msgid="4533786031090198063">"प्रयोगमा छ"</string>
- <string name="display_manager_built_in_display_name" msgid="2583134294292563941">"पूर्व-निर्मित स्क्रिन"</string>
- <string name="display_manager_hdmi_display_name" msgid="1555264559227470109">"HDMI स्क्रिन"</string>
- <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"आवरण #<xliff:g id="ID">%1$d</xliff:g>"</string>
- <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string>
- <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", सुरक्षित"</string>
- <string name="wifi_display_notification_title" msgid="2223050649240326557">"ताररहित प्रदर्शन जोडिएको छ"</string>
- <string name="wifi_display_notification_message" msgid="4498802012464170685">"अर्को उपकरणमा यो स्क्रिनले देखाइरहेको छ"</string>
- <string name="wifi_display_notification_disconnect" msgid="6183754463561153372">"विच्छेदन गर्नुहोस्"</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"आपतकालीन कल"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ढाँचा बिर्सनु भयो"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"गलत ढाँचा"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"गलत पासवर्ड"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"गलत PIN"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"<xliff:g id="NUMBER">%1$d</xliff:g>सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"आफ्नो ढाँचा कोर्नुहोस्"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"SIM PIN प्रविष्टि गर्नुहोस्"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"PIN प्रविष्टि गर्नुहोस्"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"पासवर्ड प्रविष्टि गर्नुहोस्"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM कार्ड अहिले असक्षम छ। सुचारु गर्नको लागि PUK कोड प्रविष्टि गर्नुहोस्। विवरणको लागि वाहकलाई सम्पर्क गर्नुहोस्।"</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"इच्छित PIN कोड प्रविष्टि गर्नुहोस्"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"मनपर्दो PIN कोड निश्चित गर्नुहोस्"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM कार्ड अनलक गर्दै…"</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"गलत PIN कोड।"</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"४ देखि ८ वाट नम्बर भएको एउटा PIN टाइप गर्नुहोस्।"</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK कोड ८ वटा नम्बर वा सो भन्दा बढी हुनुपर्छ।"</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"PUK कोड पुन:प्रदान गर्नुहोस्। धेरै पुन:प्रयासहरूले SIMलाई स्थायी रूपमा निष्क्रिय गरिदिने छ।"</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN कोडहरू मेल खाएन"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"निकै धेरै ढाँचा कोसिसहरू"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"अनलक गर्नको लागि, तपाईँको Google खाताको साथ साइन इन गर्नुहोस्।"</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"प्रयोगकर्ता नाम (इमेल)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"पासवर्ड"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"साइन इन गर्नुहोस्"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"अमान्य प्रयोगकर्तानाम वा पासवर्ड।"</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"के तपाईँले उपयोगकर्ता नाम वा पासवर्ड बिर्सनुभयो?\n"<b>"google.com/accounts/recovery"</b>" मा जानुहोस्।"</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"खाता जाँच हुँदै…"</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"तपाईँले गलत तरिकाले तपाईँको PIN <xliff:g id="NUMBER_0">%d</xliff:g> पटक टाइप गर्नु भएको छ। \n\n<xliff:g id="NUMBER_1">%d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"तपाईँले तपाईँक पासवर्ड <xliff:g id="NUMBER_0">%d</xliff:g> पटक गलत टाइप गर्नुभएको छ। \n\n <xliff:g id="NUMBER_1">%d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"तपाईँले तपाईँको अनलक ढाँचा गलत तरिकाले <xliff:g id="NUMBER_0">%d</xliff:g> पटक खिच्नु भएको छ। \n\n <xliff:g id="NUMBER_1">%d</xliff:g> सेकेन्डमा फेरि कोसिस गर्नुहोस्।"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"तपाईँले ट्याब्लेटलाई अनलक गर्न गलत तरिकाले <xliff:g id="NUMBER_0">%d</xliff:g> पटक कोसिस गर्नु भएको छ। <xliff:g id="NUMBER_1">%d</xliff:g> पछि थप असफल प्रयासहरू, ट्याब्लेट पूर्वनिर्धारित कार्यशालामा पुनःसेट गरिने छ र सबै प्रयोग डेटा हराउने छ।"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"तपाईँले गलतसँग फोनलाई अनलक गर्न <xliff:g id="NUMBER_0">%d</xliff:g> पटक कोसिस गर्नु भयो। <xliff:g id="NUMBER_1">%d</xliff:g> पछि थप असफल कोसिसहरू, फोनलाई पूर्वनिर्धारित कार्यशालामा पुनःसेट गरिने छ र सबै प्रयोग डेटा हराउने छ।"</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"तपाईँले ट्यब्लेटलाई अनलक गर्न गलत तरिकाले <xliff:g id="NUMBER">%d</xliff:g> पटक प्रयास गर्नु भएको छ। अब ट्याब्लेटलाई पूर्वनिर्धारित कार्यशालामा पुनःसेट गरिने छ।"</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"तपाईंले गलत तरिकाले फोन <xliff:g id="NUMBER">%d</xliff:g> पटक अनलक गर्ने प्रयत्न गर्नुभयो। अब फोन फ्याक्ट्रि पूर्वनिर्धारितमा पुनःसेट हुने छ।"</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"तपाईंले गलत तरिकाले आफ्नो अनलक ढाँचा <xliff:g id="NUMBER_0">%d</xliff:g> पटक कोर्नुभयो। <xliff:g id="NUMBER_1">%d</xliff:g> विफल प्रयत्नहरू पछि, तपाईंलाई आफ्नो ट्याब्लेट इमेल खाता प्रयोग गरेर अनलक गर्न सोधिने छ।\n\n फेरि प्रयास गर्नुहोस् <xliff:g id="NUMBER_2">%d</xliff:g> सेकेन्डहरूमा।"</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"तपाईँले आफ्नो अनलक ढाँचा गलत रूपमा <xliff:g id="NUMBER_0">%d</xliff:g> पटक तान्नु भएको छ। <xliff:g id="NUMBER_1">%d</xliff:g> धेरै असफल प्रयासहरूपछि, तपाईँलाई एउटा इमेल खाताको प्रयोग गरेर तपाईँको फोन अनलक गर्न सोधिने छ।\n\n फेरि <xliff:g id="NUMBER_2">%d</xliff:g> सेकेन्डमा प्रयास गर्नुहोस्।"</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"हटाउनुहोस्"</string>
- <string name="safe_media_volume_warning" product="default" msgid="7324161939475478066">"आवाज सल्लाह दिएको तहभन्दा माथि बढाउने हो?\nठूलो आवाजमा सुन्दा लामो समयको लागि तपाईँको सुन्ने शक्तीलाई खत्तम पार्न सक्छ।"</string>
- <string name="continue_to_enable_accessibility" msgid="1626427372316070258">"उपलब्धता सक्षम पार्न दुईवटा औंलाहरूले थिचिरहनुहोस्।"</string>
- <string name="accessibility_enabled" msgid="1381972048564547685">"पहुँच सक्षम गरिएको।"</string>
- <string name="enable_accessibility_canceled" msgid="3833923257966635673">"पहुँचयोग्यता रद्द गरियो।"</string>
- <string name="user_switched" msgid="3768006783166984410">"अहिलेको प्रयोगकर्ता <xliff:g id="NAME">%1$s</xliff:g>।"</string>
- <string name="owner_name" msgid="2716755460376028154">"मालिक"</string>
- <string name="error_message_title" msgid="4510373083082500195">"त्रुटि"</string>
- <string name="app_no_restricted_accounts" msgid="5739463249673727736">"प्रतिबन्धित प्रोफाइलहरूको लागि यस अनुप्रयोगले खाताहरू समर्थन गर्दैन"</string>
- <string name="app_not_found" msgid="3429141853498927379">"यस कार्य सम्हालने कुनै अनुप्रयोग भेटिएन"</string>
- <string name="revoke" msgid="5404479185228271586">"रद्द गर्नुहोस्"</string>
- <string name="mediaSize_iso_a0" msgid="7875427489420821793">"ISO A0"</string>
- <string name="mediaSize_iso_a1" msgid="3760734499050875356">"ISO A1"</string>
- <string name="mediaSize_iso_a2" msgid="5973266378020144382">"ISO A2"</string>
- <string name="mediaSize_iso_a3" msgid="1373407105687300884">"ISO A3"</string>
- <string name="mediaSize_iso_a4" msgid="6689772807982597254">"ISO A4"</string>
- <string name="mediaSize_iso_a5" msgid="5353549652015741040">"ISO A5"</string>
- <string name="mediaSize_iso_a6" msgid="8585038048674911907">"ISO A6"</string>
- <string name="mediaSize_iso_a7" msgid="6641836716963839119">"ISO A7"</string>
- <string name="mediaSize_iso_a8" msgid="7571139437465693355">"ISO A8"</string>
- <string name="mediaSize_iso_a9" msgid="1378455891957115079">"ISO A9"</string>
- <string name="mediaSize_iso_a10" msgid="2480747457429475344">"ISO A10"</string>
- <string name="mediaSize_iso_b0" msgid="3965935097661108039">"ISO B0"</string>
- <string name="mediaSize_iso_b1" msgid="2505753285010115437">"ISO B1"</string>
- <string name="mediaSize_iso_b2" msgid="8763874709859458453">"ISO B2"</string>
- <string name="mediaSize_iso_b3" msgid="4210506688191764076">"ISO B3"</string>
- <string name="mediaSize_iso_b4" msgid="5749404165888526034">"ISO B4"</string>
- <string name="mediaSize_iso_b5" msgid="7640627414621904733">"ISO B5"</string>
- <string name="mediaSize_iso_b6" msgid="7342988864712748544">"ISO B6"</string>
- <string name="mediaSize_iso_b7" msgid="5069844065235382429">"ISO B7"</string>
- <string name="mediaSize_iso_b8" msgid="7316818922278779774">"ISO B8"</string>
- <string name="mediaSize_iso_b9" msgid="5414727094026532341">"ISO B9"</string>
- <string name="mediaSize_iso_b10" msgid="5251253731832048185">"ISO B10"</string>
- <string name="mediaSize_iso_c0" msgid="4003138342671964217">"ISO C0"</string>
- <string name="mediaSize_iso_c1" msgid="1935188063393553008">"ISO C1"</string>
- <string name="mediaSize_iso_c2" msgid="3197307969712069904">"ISO C2"</string>
- <string name="mediaSize_iso_c3" msgid="4335826087321913508">"ISO C3"</string>
- <string name="mediaSize_iso_c4" msgid="3745639598281015005">"ISO C4"</string>
- <string name="mediaSize_iso_c5" msgid="8269457765822791013">"ISO C5"</string>
- <string name="mediaSize_iso_c6" msgid="566666105260346930">"ISO C6"</string>
- <string name="mediaSize_iso_c7" msgid="8678413180782608498">"ISO C7"</string>
- <string name="mediaSize_iso_c8" msgid="8392376206627041730">"ISO C8"</string>
- <string name="mediaSize_iso_c9" msgid="9191613372324845405">"ISO C9"</string>
- <string name="mediaSize_iso_c10" msgid="7327709699184920822">"ISO C10"</string>
- <string name="mediaSize_na_letter" msgid="4191805615829472953">"पत्र"</string>
- <string name="mediaSize_na_gvrnmt_letter" msgid="7853382192649405507">"सरकारी पत्र"</string>
- <string name="mediaSize_na_legal" msgid="6697982988283823150">"कानूनी"</string>
- <string name="mediaSize_na_junior_legal" msgid="3727743969902758948">"Junior Legal"</string>
- <string name="mediaSize_na_ledger" msgid="281871464896601236">"Ledger"</string>
- <string name="mediaSize_na_tabloid" msgid="5775966416333578127">"Tabloid"</string>
- <string name="write_fail_reason_cancelled" msgid="7091258378121627624">"रद्द गरियो"</string>
- <string name="write_fail_reason_cannot_write" msgid="8132505417935337724">"सामाग्री लेखनमा त्रुटि"</string>
- <string name="reason_unknown" msgid="6048913880184628119">"अज्ञात"</string>
- <string name="restr_pin_enter_admin_pin" msgid="783643731895143970">"प्रशासक PIN प्रविष्टि गर्नुहोस्"</string>
- <string name="restr_pin_enter_pin" msgid="3395953421368476103">"PIN प्रविष्टि गर्नुहोस्"</string>
- <string name="restr_pin_incorrect" msgid="8571512003955077924">"गलत"</string>
- <string name="restr_pin_enter_old_pin" msgid="1462206225512910757">"वर्तमान PIN"</string>
- <string name="restr_pin_enter_new_pin" msgid="5959606691619959184">"नयाँ PIN"</string>
- <string name="restr_pin_confirm_pin" msgid="8501523829633146239">"नयाँ PIN निश्चित गर्नुहोस्"</string>
- <string name="restr_pin_create_pin" msgid="8017600000263450337">"प्रतिबन्धहरूलाई परिवर्तन गर्नको लागि एउटा PIN बनाउनुहोस्"</string>
- <string name="restr_pin_error_doesnt_match" msgid="2224214190906994548">"PIN हरू मेल खाएनन्। पुनः प्रयास गर्नुहोस्।"</string>
- <string name="restr_pin_error_too_short" msgid="8173982756265777792">"PIN अति छोटो भयो। कम्तीमा ४ अङ्क हुन आवश्यक छ।"</string>
- <plurals name="restr_pin_countdown">
- <item quantity="one" msgid="311050995198548675">"१ सेकेन्ड पछि पुनः प्रयास गर्नुहोस्।"</item>
- <item quantity="other" msgid="4730868920742952817">"<xliff:g id="COUNT">%d</xliff:g> सेकेन्डमा पुनः प्रयास गर्नुहोस्"</item>
- </plurals>
- <string name="restr_pin_try_later" msgid="973144472490532377">"पछि पुनः प्रयास गर्नुहोस्"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"पट्टि देखिने बनाउन स्क्रिनको छेउमा स्वाइप गर्नुहोस्"</string>
-</resources>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
deleted file mode 100644
index 7ff8daee4199..000000000000
--- a/core/res/res/values-ne/strings.xml
+++ /dev/null
@@ -1,1587 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="byteShort" msgid="8340973892742019101">"B"</string>
- <string name="kilobyteShort" msgid="5973789783504771878">"KB"</string>
- <string name="megabyteShort" msgid="6355851576770428922">"MB"</string>
- <string name="gigabyteShort" msgid="3259882455212193214">"GB"</string>
- <string name="terabyteShort" msgid="231613018159186962">"TB"</string>
- <string name="petabyteShort" msgid="5637816680144990219">"PB"</string>
- <string name="fileSizeSuffix" msgid="9164292791500531949">"<xliff:g id="NUMBER">%1$s</xliff:g><xliff:g id="UNIT">%2$s</xliff:g>"</string>
- <string name="untitled" msgid="4638956954852782576">"&lt;बिना शीर्षक&gt;"</string>
- <string name="ellipsis" msgid="7899829516048813237">"…"</string>
- <string name="ellipsis_two_dots" msgid="1228078994866030736">"‥"</string>
- <string name="emptyPhoneNumber" msgid="7694063042079676517">"(कुनै फोन नम्बर छैन)"</string>
- <string name="unknownName" msgid="2277556546742746522">"(अज्ञात)"</string>
- <string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"भ्वाइस मेल"</string>
- <string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN१"</string>
- <string name="mmiError" msgid="5154499457739052907">"जडान समस्या वा अमान्य MMI कोड।"</string>
- <string name="mmiFdnError" msgid="5224398216385316471">"अपरेशन निश्चित डायल नम्बरहरूको लागि मात्र प्रतिबन्धित छ।"</string>
- <string name="serviceEnabled" msgid="8147278346414714315">"सेवा सक्षम पारियो।"</string>
- <string name="serviceEnabledFor" msgid="6856228140453471041">"निम्न उल्लेखितको लागि सेवा सक्षम पारियो:"</string>
- <string name="serviceDisabled" msgid="1937553226592516411">"सेवा असक्षम पारिएको छ।"</string>
- <string name="serviceRegistered" msgid="6275019082598102493">"दर्ता सफल भयो।"</string>
- <string name="serviceErased" msgid="1288584695297200972">"मेटाइ सफल थियो।"</string>
- <string name="passwordIncorrect" msgid="7612208839450128715">"गलत पासवर्ड।"</string>
- <string name="mmiComplete" msgid="8232527495411698359">"MMI पुरा भयो।"</string>
- <string name="badPin" msgid="9015277645546710014">"तपाईंले टाइप गर्नुभएको पुरानो PIN सही छैन।"</string>
- <string name="badPuk" msgid="5487257647081132201">"तपाईंले टाइप गर्नुभएको PUK सही छैन।"</string>
- <string name="mismatchPin" msgid="609379054496863419">"तपाईंले टाइप गर्नुभएको PIN मेल खाँदैन।"</string>
- <string name="invalidPin" msgid="3850018445187475377">"४ देखि ८ वटा नम्बर भएको एउटा PIN टाइप गर्नुहोस्।"</string>
- <string name="invalidPuk" msgid="8761456210898036513">"८ वटा नम्बरहरू वा सो भन्दा लामो एउटा PUK टाइप गर्नुहोस्।"</string>
- <string name="needPuk" msgid="919668385956251611">"तपाईंको SIM कार्ड PUK-लक छ। यसलाई अनलक गर्न PUK कोड टाइप गर्नुहोस्।"</string>
- <string name="needPuk2" msgid="4526033371987193070">"SIM कार्ड अनलक गर्न PUK2 टाइप गर्नुहोस्।"</string>
- <string name="imei" msgid="2625429890869005782">"IMEI"</string>
- <string name="meid" msgid="4841221237681254195">"MEID"</string>
- <string name="ClipMmi" msgid="6952821216480289285">"आगमन कलर ID"</string>
- <string name="ClirMmi" msgid="7784673673446833091">"बाहिरिने कलर ID"</string>
- <string name="CfMmi" msgid="5123218989141573515">"कल अगाडि बढाउँदै"</string>
- <string name="CwMmi" msgid="9129678056795016867">"कल प्रतिक्षा"</string>
- <string name="BaMmi" msgid="455193067926770581">"कल ब्यारिङ"</string>
- <string name="PwdMmi" msgid="7043715687905254199">"पासवर्ड परिवर्तन"</string>
- <string name="PinMmi" msgid="3113117780361190304">"PIN परिवर्तन"</string>
- <string name="CnipMmi" msgid="3110534680557857162">"प्रस्तुत नम्बरमा कल गर्दै"</string>
- <string name="CnirMmi" msgid="3062102121430548731">"कल गर्ने अंक रोकेको छ।"</string>
- <string name="ThreeWCMmi" msgid="9051047170321190368">"कल गर्ने तिन तरिका"</string>
- <string name="RuacMmi" msgid="7827887459138308886">"नचाहिएका रिसउठ्दा कलहरूको अस्वीकार"</string>
- <string name="CndMmi" msgid="3116446237081575808">"कलिङ नम्बर प्रदान गर्ने"</string>
- <string name="DndMmi" msgid="1265478932418334331">"बाधा नगर्नुहोस्"</string>
- <string name="CLIRDefaultOnNextCallOn" msgid="429415409145781923">"सीमति गर्न पूर्वनिर्धारित कलर ID, अर्को कल: सीमति गरिएको"</string>
- <string name="CLIRDefaultOnNextCallOff" msgid="3092918006077864624">"कलर ID पूर्वनिर्धारितको लागि रोकावट छ। अर्को कल: रोकावट छैन"</string>
- <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"कलर ID पूर्वनिर्धारितदेखि प्रतिबन्धित छैन। अर्को कल: प्रतिबन्धित छ"</string>
- <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"कलर ID पूर्वनिर्धारितको लागि रोकावट छैन। अर्को कल: रोकावट छैन"</string>
- <string name="serviceNotProvisioned" msgid="8614830180508686666">"सेवाको व्यवस्था छैन।"</string>
- <string name="CLIRPermanent" msgid="3377371145926835671">"तपाईं कलर ID सेटिङ परिवर्तन गर्न सक्नुहुन्न।"</string>
- <string name="RestrictedChangedTitle" msgid="5592189398956187498">"प्रतिबन्धित पहुँच परिवर्तन भएको छ"</string>
- <string name="RestrictedOnData" msgid="8653794784690065540">"डेटा सेवा रोकिएको छ।"</string>
- <string name="RestrictedOnEmergency" msgid="6581163779072833665">"आपतकालीन सेवा रोकिएको छ।"</string>
- <string name="RestrictedOnNormal" msgid="4953867011389750673">"भ्वाइस सेवा ब्लक भएको छ।"</string>
- <string name="RestrictedOnAllVoice" msgid="3396963652108151260">"सबै आवाज सेवाहरू बन्द छन्।"</string>
- <string name="RestrictedOnSms" msgid="8314352327461638897">"SMS सेवा रोकिएको छ।"</string>
- <string name="RestrictedOnVoiceData" msgid="996636487106171320">"भ्वाइस/डेटा सेवाहरू रोकिएका छन्।"</string>
- <string name="RestrictedOnVoiceSms" msgid="1888588152792023873">"आवाज/SMS सेवाहरू बन्द छन्।"</string>
- <string name="RestrictedOnAll" msgid="5643028264466092821">"सबै भ्वाइस/डेटा/SMS सेवाहरू ब्लक भएका छन्।"</string>
- <string name="serviceClassVoice" msgid="1258393812335258019">"आवाज"</string>
- <string name="serviceClassData" msgid="872456782077937893">"डेटा"</string>
- <string name="serviceClassFAX" msgid="5566624998840486475">"फ्याक्स"</string>
- <string name="serviceClassSMS" msgid="2015460373701527489">"SMS"</string>
- <string name="serviceClassDataAsync" msgid="4523454783498551468">"Async"</string>
- <string name="serviceClassDataSync" msgid="7530000519646054776">"सिङ्क गर्नुहोस्"</string>
- <string name="serviceClassPacket" msgid="6991006557993423453">"प्याकेट"</string>
- <string name="serviceClassPAD" msgid="3235259085648271037">"PAD"</string>
- <string name="roamingText0" msgid="7170335472198694945">"रोमिङ सूचक खुला"</string>
- <string name="roamingText1" msgid="5314861519752538922">"रोमिङ सूचक बन्द"</string>
- <string name="roamingText2" msgid="8969929049081268115">"रोमिङ सूचक फ्ल्यास गर्दै"</string>
- <string name="roamingText3" msgid="5148255027043943317">"छिमेकबाट बाहिर"</string>
- <string name="roamingText4" msgid="8808456682550796530">"बिल्डिङको बाहिर"</string>
- <string name="roamingText5" msgid="7604063252850354350">"रोमिङ - उपयुक्त प्रणाली"</string>
- <string name="roamingText6" msgid="2059440825782871513">"रोमिङ - उपलब्ध प्रणाली"</string>
- <string name="roamingText7" msgid="7112078724097233605">"रोमिङ - एलियन्सर पार्टनर"</string>
- <string name="roamingText8" msgid="5989569778604089291">"रोमिङ - प्रिमियम पार्टनर"</string>
- <string name="roamingText9" msgid="7969296811355152491">"रोमिङ - पूर्ण सेवा कार्यक्षमता अवस्था"</string>
- <string name="roamingText10" msgid="3992906999815316417">"रोमिङ - आङ्शिक सेवा प्रकार्यता"</string>
- <string name="roamingText11" msgid="4154476854426920970">"रोमिङ ध्वजा चालु छ"</string>
- <string name="roamingText12" msgid="1189071119992726320">"रोमिङ ब्यानर बन्द छ"</string>
- <string name="roamingTextSearching" msgid="8360141885972279963">"सेवाको खोजी गर्दै…"</string>
- <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: अगाडि पठाइएको छैन"</string>
- <string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string>
- <string name="cfTemplateForwardedTime" msgid="9206251736527085256">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g> पछि <xliff:g id="TIME_DELAY">{2}</xliff:g> सेकेन्ड"</string>
- <string name="cfTemplateRegistered" msgid="5073237827620166285">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: अगाडि बढाइएको छैन"</string>
- <string name="cfTemplateRegisteredTime" msgid="6781621964320635172">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: अगाडि बढाइएको छैन"</string>
- <string name="fcComplete" msgid="3118848230966886575">"विशेषता कोड पुरा भयो।"</string>
- <string name="fcError" msgid="3327560126588500777">"जडान समस्या वा अमान्य सुविधा कोड।"</string>
- <string name="httpErrorOk" msgid="1191919378083472204">"ठिक छ"</string>
- <string name="httpError" msgid="7956392511146698522">"एउटा नेटवर्क त्रुटि थियो।"</string>
- <string name="httpErrorLookup" msgid="4711687456111963163">"URL भेटाउन सकेन।"</string>
- <string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"साइटको आधिकारिकता योजना समर्थित छैन।"</string>
- <string name="httpErrorAuth" msgid="1435065629438044534">"प्रमाणीकरण गर्न सकेन।"</string>
- <string name="httpErrorProxyAuth" msgid="1788207010559081331">"प्रोक्सी सर्भरको माध्यमद्वारा प्रमाणिकरण असफल भएको छ।"</string>
- <string name="httpErrorConnect" msgid="8714273236364640549">"सर्भरसँग जोड्न सकेन।"</string>
- <string name="httpErrorIO" msgid="2340558197489302188">"सर्भरसँग संचार गर्न सकेन। फेरि पछि कोसिस गर्नुहोस्।"</string>
- <string name="httpErrorTimeout" msgid="4743403703762883954">"सर्भर संगको सम्पर्क प्रक्रिया समय सकियो।"</string>
- <string name="httpErrorRedirectLoop" msgid="8679596090392779516">"पृष्टमा धेरै सर्भरहरूतिर पुनः निर्देशनहरू छन्।"</string>
- <string name="httpErrorUnsupportedScheme" msgid="5015730812906192208">"प्रोटोकल समर्थित छैन।"</string>
- <string name="httpErrorFailedSslHandshake" msgid="96549606000658641">"एउटा सुरक्षित जडान स्थापना गर्न सकेन।"</string>
- <string name="httpErrorBadUrl" msgid="3636929722728881972">"पृष्ठ खोल्न सकिँदैन किनभने URL अमान्य छ।"</string>
- <string name="httpErrorFile" msgid="2170788515052558676">"फाइल भेटाउन सकेन।"</string>
- <string name="httpErrorFileNotFound" msgid="6203856612042655084">"अनुरोध गरिएको फाइल भेटाउन सकेन।"</string>
- <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"धेरै नै अनुरोधहरू प्रक्रियामा छन्। पछि फेरि प्रयास गर्नुहोस्।"</string>
- <string name="notification_title" msgid="8967710025036163822">"<xliff:g id="ACCOUNT">%1$s</xliff:g>को लागि साइन इन त्रुटि"</string>
- <string name="contentServiceSync" msgid="8353523060269335667">"सिङक गर्नुहोस्"</string>
- <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"सिङ्क गर्नुहोस्"</string>
- <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"अति धेरै <xliff:g id="CONTENT_TYPE">%s</xliff:g> मेट्नुहोस्।"</string>
- <string name="low_memory" product="tablet" msgid="6494019234102154896">"ट्याब्लेट भण्डारण खाली छैन! ठाउँ खाली गर्नको लागि केही फाइलहरू मेटाउनुहोस्।"</string>
- <string name="low_memory" product="default" msgid="3475999286680000541">"फोन भण्डारण भरिएको छ! ठाउँ खाली गर्नको लागि केही फाइलहरू मेटाउनुहोस्।"</string>
- <string name="me" msgid="6545696007631404292">"मलाई"</string>
- <string name="power_dialog" product="tablet" msgid="8545351420865202853">"ट्याब्लेट विकल्पहरू"</string>
- <string name="power_dialog" product="default" msgid="1319919075463988638">"फोन विकल्पहरू"</string>
- <string name="silent_mode" msgid="7167703389802618663">"मौन मोड"</string>
- <string name="turn_on_radio" msgid="3912793092339962371">"वायरलेस अन गर्नुहोस्"</string>
- <string name="turn_off_radio" msgid="8198784949987062346">"ताररहित बन्द गर्नुहोस्"</string>
- <string name="screen_lock" msgid="799094655496098153">"स्क्रिन लक गर्नुहोस्"</string>
- <string name="power_off" msgid="4266614107412865048">"पावर बन्द"</string>
- <string name="silent_mode_silent" msgid="319298163018473078">"घन्टी बन्द भयो"</string>
- <string name="silent_mode_vibrate" msgid="7072043388581551395">"घन्टी कम्पन गर्छ"</string>
- <string name="silent_mode_ring" msgid="8592241816194074353">"घन्टि चालु छ"</string>
- <string name="shutdown_progress" msgid="2281079257329981203">"बन्द गर्दै..."</string>
- <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"तपाईँको ट्याब्लेट बन्द हुने छ।"</string>
- <string name="shutdown_confirm" product="default" msgid="649792175242821353">"तपाईँको फोन बन्द हुने छ।"</string>
- <string name="shutdown_confirm_question" msgid="2906544768881136183">"के तपाईं बन्द गर्न चाहनुहुन्छ?"</string>
- <string name="reboot_safemode_title" msgid="7054509914500140361">"सुरक्षित मोडमा पुनःबुट गर्नुहोस्"</string>
- <string name="reboot_safemode_confirm" msgid="55293944502784668">"सुरक्षित मोडमा तपाईँ पुनःबुट गर्न चाहनु हुन्छ? तपाईँले स्थापना गरेका सबै तेस्रो पक्षका अनुप्रयोगहरूलाई असक्षम गराउने छ।"</string>
- <string name="recent_tasks_title" msgid="3691764623638127888">"नयाँ"</string>
- <string name="no_recent_tasks" msgid="8794906658732193473">"कुनै नयाँ अनुप्रयोगहरू छैनन्।"</string>
- <string name="global_actions" product="tablet" msgid="408477140088053665">"ट्याब्लेट विकल्पहरू"</string>
- <string name="global_actions" product="default" msgid="2406416831541615258">"फोन विकल्पहरू"</string>
- <string name="global_action_lock" msgid="2844945191792119712">"स्क्रिन बन्द"</string>
- <string name="global_action_power_off" msgid="4471879440839879722">"शक्ति बन्द"</string>
- <string name="global_action_bug_report" msgid="7934010578922304799">"बग रिपोर्ट"</string>
- <string name="bugreport_title" msgid="2667494803742548533">"बग रिपोर्ट लिनुहोस्"</string>
- <string name="bugreport_message" msgid="398447048750350456">"एउटा इमेल सन्देशको रूपमा पठाउनलाई यसले तपाईँको हालैको उपकरणको अवस्थाको बारेमा सूचना जम्मा गर्ने छ। बग रिपोर्ट सुरु गरेदेखि पठाउन तयार नभएसम्म यसले केही समय लिन्छ; कृपया धैर्य गर्नुहोस्।"</string>
- <string name="global_action_toggle_silent_mode" msgid="8219525344246810925">"मौन मोड"</string>
- <string name="global_action_silent_mode_on_status" msgid="3289841937003758806">"आवाज बन्द छ"</string>
- <string name="global_action_silent_mode_off_status" msgid="1506046579177066419">"ध्वनि खुल्ला छ"</string>
- <string name="global_actions_toggle_airplane_mode" msgid="5884330306926307456">"हवाइजहाज मोड"</string>
- <string name="global_actions_airplane_mode_on_status" msgid="2719557982608919750">"उडान मोड खुला छ"</string>
- <string name="global_actions_airplane_mode_off_status" msgid="5075070442854490296">"हवाइजहाज मोड बन्द छ"</string>
- <string name="status_bar_notification_info_overflow" msgid="5301981741705354993">"९९९+"</string>
- <string name="safeMode" msgid="2788228061547930246">"सुरक्षित मोड"</string>
- <string name="android_system_label" msgid="6577375335728551336">"एन्ड्रोइड प्रणाली"</string>
- <string name="permgrouplab_costMoney" msgid="5429808217861460401">"तपाईँले तिर्नु पर्ने सेवाहरू"</string>
- <string name="permgroupdesc_costMoney" msgid="3293301903409869495">"तपाईँलाई महँगो पर्न सक्ने कामहरू गर्नुहोस्।"</string>
- <string name="permgrouplab_messages" msgid="7521249148445456662">"तपाईंका सन्देशहरू"</string>
- <string name="permgroupdesc_messages" msgid="7821999071003699236">"तपाईँका SMS, इमेल र अन्य सन्देशहरू पढ्नुहोस् र लेख्नुहोस्।"</string>
- <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"तपाईँको निजी सूचना"</string>
- <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"तपाईँको सम्पर्क कार्डमा भण्डारण भएका तपाईँको बारेको जानकारीमा सिधा पहुँच पुर्‍याउनुहोस्।"</string>
- <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"तपाईँको सामाजिक सूचना"</string>
- <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"तपाईँको सम्पर्कहरू र सामाजिक जडानहरूको बारेको जानकारीमा सिधा पहुँच पुर्‍याउनुहोस्।"</string>
- <string name="permgrouplab_location" msgid="635149742436692049">"तपाईँको स्थान"</string>
- <string name="permgroupdesc_location" msgid="5704679763124170100">"तपाईँको भौतिक स्थान निरीक्षण गर्नुहोस्।"</string>
- <string name="permgrouplab_network" msgid="5808983377727109831">"नेटवर्क संचार"</string>
- <string name="permgroupdesc_network" msgid="4478299413241861987">"विभिन्न नेटवर्क सुविधाहरूमा पहुँच राख्नुहोस्।"</string>
- <string name="permgrouplab_bluetoothNetwork" msgid="1585403544162128109">"ब्लुटुथ"</string>
- <string name="permgroupdesc_bluetoothNetwork" msgid="5625288577164282391">"ब्लुटुथको माध्यमद्वारा उपकरणहरू र नेटवर्कहरूमाथि पहुँच राख्नुहोस्।"</string>
- <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"अडियो सेटिङहरू"</string>
- <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"अडियो सेटिङहरू बदल्नुहोस्।"</string>
- <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"ब्यट्रिलाई प्रभाव पार्छ"</string>
- <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"छिट्टै ब्याट्रि सकाउन सक्ने ती विशेषताहरू प्रयोग गर्नुहोस्।"</string>
- <string name="permgrouplab_calendar" msgid="5863508437783683902">"पात्रो"</string>
- <string name="permgroupdesc_calendar" msgid="5777534316982184416">"पात्रो तथा घटनाहरूमा प्रत्यक्ष पहुँच"</string>
- <string name="permgrouplab_dictionary" msgid="4148597128843641379">"प्रयोगकर्ता शब्दकोश पढ्नुहोस्"</string>
- <string name="permgroupdesc_dictionary" msgid="7921166355964764490">"प्रयोगकर्ता शब्दकोशमा शब्दहरू पढ्नुहोस्।"</string>
- <string name="permgrouplab_writeDictionary" msgid="8090237702432576788">"प्रयोगकर्ता शब्दकोश लेख्नुहोस्"</string>
- <string name="permgroupdesc_writeDictionary" msgid="2711561994497361646">"प्रयोगकर्ता शब्दकोशमा शब्दहरू थप्नुहोस्।"</string>
- <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"बुकमार्कहरू र इतिहास"</string>
- <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"बुकमार्कहरू र ब्राउजर इतिहासमा सिधा पहुँच।"</string>
- <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"अलार्म"</string>
- <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"अलार्म घडी सेट गर्नुहोस्।"</string>
- <string name="permgrouplab_voicemail" msgid="4162237145027592133">"भ्वाइस मेल"</string>
- <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"भ्वाइसमेलमा सिधा पहुँच।"</string>
- <string name="permgrouplab_microphone" msgid="171539900250043464">"माइक्रोफोन"</string>
- <string name="permgroupdesc_microphone" msgid="7106618286905738408">"मा[क्रोफोनबाट रेकर्ड अडियोमा सिधा पहुँच पुर्‍याउनुहोस्।"</string>
- <string name="permgrouplab_camera" msgid="4820372495894586615">"क्यामेरा"</string>
- <string name="permgroupdesc_camera" msgid="2933667372289567714">"तस्बिर वा भिडियो क्याप्चरको लागि क्यामेरामा सिधा पहुँच।"</string>
- <string name="permgrouplab_screenlock" msgid="8275500173330718168">"स्क्रिन लक गर्नुहोस्"</string>
- <string name="permgroupdesc_screenlock" msgid="7067497128925499401">"तपाईँको उपकरणमा लक स्क्रिनको व्यवहारलाई प्रभावित गर्ने क्षमता।"</string>
- <string name="permgrouplab_appInfo" msgid="8028789762634147725">"तपाईँका अनुप्रयोगहरूको सूचना"</string>
- <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"तपाईँको उपकरणमा अन्य अनुप्रयोगहरूको व्यवहारमा प्रभाव पार्ने क्षमता।"</string>
- <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"वालपेपर"</string>
- <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"उपकरण वालपेपर सेटिङहरू बदल्नुहोस्।"</string>
- <string name="permgrouplab_systemClock" msgid="406535759236612992">"घडी"</string>
- <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"उपकरण समय वा समय क्षेत्र परिवर्तन गर्नुहोस्।"</string>
- <string name="permgrouplab_statusBar" msgid="2095862568113945398">"स्थिति पट्टी"</string>
- <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"उपकरण स्थिति सेटिङहरू परिवर्तन गर्नुहोस्।"</string>
- <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"सिङ्क सेटिङहरू"</string>
- <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"सिङ्क सेटिङहरूमा पहुँच गर्नुहोस्।"</string>
- <string name="permgrouplab_accounts" msgid="3359646291125325519">"तपाईँका खाताहरू"</string>
- <string name="permgroupdesc_accounts" msgid="4948732641827091312">"उपलब्ध खाताहरू पहुँच गर्नुहोस्।"</string>
- <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"हार्डवेयर नियन्त्रणहरू"</string>
- <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"ह्यान्डसेटको हार्डवेयरमा प्रत्यक्ष पहुँच।"</string>
- <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"फोन कलहरू"</string>
- <string name="permgroupdesc_phoneCalls" msgid="7489701620446183770">"अनुगमन, रेकर्ड र फोन कलहरूको प्रसोधन गर्नुहोस।"</string>
- <string name="permgrouplab_systemTools" msgid="4652191644082714048">"प्रणाली औजारहरू"</string>
- <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"निम्न-स्तर पहुँच र प्रणालीको नियन्त्रण"</string>
- <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"विकसित टुलहरू"</string>
- <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"अनुप्रयोग विकासकर्ताहरूको लागि मात्र सुविधाहरूको आवश्यकता।"</string>
- <string name="permgrouplab_display" msgid="4279909676036402636">"अन्य अनुप्रयोग UI"</string>
- <string name="permgroupdesc_display" msgid="6051002031933013714">"अन्य अनुप्रयोगहरूको UI लाई असर पार्नुहोस्"</string>
- <string name="permgrouplab_storage" msgid="1971118770546336966">"भण्डारण"</string>
- <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USB भण्डारणमाथि पहुँच गर्नुहोस्।"</string>
- <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD कार्डमाथि पहुँच गर्नुहोस्।"</string>
- <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"पहुँचीकरण विशेषताहरू"</string>
- <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"सहयोगी प्रविधि भएको विशेषताहरूले अनुरोध गर्न सक्छन्।"</string>
- <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"विन्डो सामग्रीको पुनःबहाली गर्नुहोस्।"</string>
- <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"तपाईँको अन्तरक्रिया भइरहेको विन्डोको सामग्रीको निरीक्षण गर्नुहोस्।"</string>
- <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"छोएर गरिने खोजलाई सुचारु गर्नुहोस्"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"छोइएका आइटमहरू चर्को स्वरमा बोलिने छ र स्क्रिन इशाराहरूको प्रयोगले अन्वेषण गर्न सकिन्छ।"</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>
- <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"व्यक्तिगत डेटा जस्तै क्रेडिट कार्ड नम्बरहरू र पासवर्डहरू समावेश गर्दछ।"</string>
- <string name="permlab_statusBar" msgid="7417192629601890791">"स्थिति पट्टिलाई अक्षम वा संशोधित गर्नुहोस्"</string>
- <string name="permdesc_statusBar" msgid="8434669549504290975">"स्थिति पट्टि असक्षम पार्न वा प्रणाली आइकनहरू थप्न र हटाउन अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_statusBarService" msgid="7247281911387931485">"स्थिति पट्टि"</string>
- <string name="permdesc_statusBarService" msgid="716113660795976060">"अनुप्रयोगलाई स्थिति पट्टि हुन अनुमति दिन्छ।"</string>
- <string name="permlab_expandStatusBar" msgid="1148198785937489264">"स्थिति पट्टिलाई विस्तृत/सङ्कुचित गर्नुहोस्"</string>
- <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"अनुप्रयोगलाई स्थिति पट्टि विस्तार वा संकुचन गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"बहिर्गमन कलहरूलाई अर्को मार्ग दिनुहोस्"</string>
- <string name="permdesc_processOutgoingCalls" msgid="5331318931937402040">"बहिर्गमन कलहरूको प्रशोधन गर्न र डायल गरिने नम्बर परिवर्तन गर्न अनुप्रयोगलाई अनुमति दिन्छ। यो अनुमतिले अनुप्रयोगलाई मोनिटर गर्न, अन्यत्र पठाउन वा बाहिर जाने कलहरूलाई रोक्न दिन्छ।"</string>
- <string name="permlab_receiveSms" msgid="8673471768947895082">"पाठ सन्देशहरू (SMS) प्राप्त गर्नुहोस्"</string>
- <string name="permdesc_receiveSms" msgid="6424387754228766939">"अनुप्रयोगलाई SMS सन्देशहरू प्राप्त गर्न र प्रक्रिया गर्न अनुमति दिन्छ। यसको मतलब अनुप्रयोगले तपाईंको उपकरणमा पठाइएको सन्देशहरू तपाईंलाई नदेखाईनै मोनिटर गर्न वा मेटाउन सक्दछ।"</string>
- <string name="permlab_receiveMms" msgid="1821317344668257098">"पाठ सन्देश (MMS) प्राप्त गर्नुहोस्"</string>
- <string name="permdesc_receiveMms" msgid="533019437263212260">"अनुप्रयोगलाई MMS सन्देशहरू प्राप्त गर्न र प्रकृया गर्न अनुमति दिन्छ। यसको मतलब अनुप्रयोगले तपाईंको उपकरणमा पठाइएको सन्देशहरू तपाईंलाई नदेखाईनै मोनिटर गर्न वा मेटाउन सक्दछ।"</string>
- <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"आकस्मिक प्रसारणहरू प्राप्त गर्नुहोस्"</string>
- <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"अनुप्रयोगलाई आपतकालीन प्रसारण सन्देशहरू प्राप्त गर्न र प्रक्रिया गर्न अनुमति दिन्छ। यो अनुमति प्रणाली अनुप्रयोगहरूमा मात्र उपलब्ध छ।"</string>
- <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"सेल प्रसारित सन्देशहरू पढ्नुहोस्"</string>
- <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"तपाईंको उपकरणद्वारा प्राप्त सेल प्रसारण सन्देशहरू अनुप्रयोगलाई पढ्न अनुमति दिन्छ। सेल प्रसारण चेतावनीहरू केही स्थानहरूमा तपाईंलाई आपतकालीन गतिविधिहरूको बारेमा सचेत गराउन गरिएका छन्। खराब अनुप्रयोगहरूले एउटा आपतकालीन सेल प्रसारण प्राप्त गर्दछ जब तपाईंको उपकरणको प्रदर्शन वा अपरेशनको साथ हस्तक्षेप गर्न सक्दछन्।"</string>
- <string name="permlab_sendSms" msgid="5600830612147671529">"SMS सन्देशहरू पठाउनुहोस्"</string>
- <string name="permdesc_sendSms" msgid="7094729298204937667">"अनुप्रयोगलाई SMS सन्देशहरू पठाउन अनुमति दिन्छ। यसले अप्रत्यासित चार्जहरूको परिणाम दिन सक्दछ। खराब अनुप्रयोगहरूले तपाईंको पुष्टि बिना सन्देशहरू पठाएर तपाईंको पैसा खर्च गराउन सक्दछ।"</string>
- <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"प्रतिक्रिया-मार्फत-सन्देश घटनाहरू पठाउनुहोस्"</string>
- <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"अनुप्रयोगलाई आगत कलहरूको लागि प्रतिक्रिया-मार्फत-सन्देश घटनाहरूलाई अन्य सन्देश पठाउने अनुप्रयोगहरूमा अनुरोधहरू पठाउन अनुमति दिन्छ।"</string>
- <string name="permlab_readSms" msgid="8745086572213270480">"तपाईंका पाठ सन्देशहरू (SMS वा MMS) पढ्नुहोस्"</string>
- <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"तपाईँको ट्याब्लेट वा SIM कार्डमा भण्डारण भएका SMS सन्देशहरूलाई पढ्न अनुप्रयोगलाई अनुमति दिन्छ। यसले अनुप्रयोगलाई विषयवस्तु वा गोपनीयतालाई वेवास्ता गर्दै सबै SMS सन्देशहरू पढ्ने अनुमति दिन्छ।"</string>
- <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"तपाईँको फोन वा SIM कार्डमा भण्डारण भएका SMS सन्देशहरूलाई पढ्न अनुप्रयोगलाई अनुमति दिन्छ। यसले सबै SMS सन्देशहरूलाई पढ्नको लागि सामग्री वा विश्वसनियता बिना नै अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_writeSms" msgid="3216950472636214774">"तपाईँका पाठ सन्देशहरू सम्पादन गर्नुहोस् (SMS वा MMS)"</string>
- <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"अनुप्रयोगलाई तपाईंको ट्याब्लेट वा SIM कार्डमा भण्डार गरिएका SMS सन्देशहरू लेख्न अनुमति दिन्छ। खराब अनुप्रयोगहरूले तपाईंको सन्देशहरू मेटाउन सक्दछ।"</string>
- <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"तपाईँको फोन वा SIM कार्डमा भण्डारण भएका SMS सन्देशहरूलाई लेख्‍नको लागि अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले सायद तपाईँको सन्देशहरू मेटाउन सक्छन्।"</string>
- <string name="permlab_receiveWapPush" msgid="5991398711936590410">"पाठ सन्देशहरू (WAP) प्राप्त गर्नुहोस्"</string>
- <string name="permdesc_receiveWapPush" msgid="748232190220583385">"WAP सन्देशहरू प्राप्त गर्न र प्रशोधन गर्न अनुप्रयोगलाई अनुमति दिन्छ। यो अनुमतिमा मोनिटर गर्ने वा तपाईँलाई पठाइएका सन्देशहरू तपाईँलाई नदेखाई मेट्ने क्षमता समावेश हुन्छ।"</string>
- <string name="permlab_getTasks" msgid="6466095396623933906">"चलिरहेका अनुप्रयोगहरू पुनःबहाली गर्नुहोस्"</string>
- <string name="permdesc_getTasks" msgid="7454215995847658102">"वर्तमानमा र भरखरै चलिरहेका कार्यहरू बारेको सूचना पुनःबहाली गर्न अनुप्रयोगलाई अनुमित दिन्छ। यसले उपकरणमा प्रयोग भएका अनुप्रयोगहरूको बारेमा सूचना पत्ता लगाउन अनुप्रयोगलाई अनुमति दिन सक्छ।"</string>
- <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"प्रयोगकर्ताहरू तर्फ अन्तर्क्रिया गर्नुहोस्"</string>
- <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"अनुप्रयोगलाई उपकरणमा विभिन्न प्रयोगकर्ताहरू मार्फत कार्यहरू गर्न अनुमति दिन्छ। खराब अनुप्रयोगहरूले यो प्रयोगकर्ताहरू बिच सुरक्षा बिथोल्न प्रयोग गर्न सक्ने छन्।"</string>
- <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"कुराकानी प्रयोगकर्ताहरू बिच अन्तर्क्रिया गर्न पूर्ण अनुमति"</string>
- <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"प्रयोगकर्तासँगको कुराकानी सबै सम्भावनालाई अनुमति दिन्छ।"</string>
- <string name="permlab_manageUsers" msgid="1676150911672282428">"प्रयोगकर्ताहरू व्यवस्थापन गर्नुहोस्"</string>
- <string name="permdesc_manageUsers" msgid="8409306667645355638">"अनुप्रयोगलाई उपकरणमा, प्रश्न, सिर्जना र मेटाइसहित प्रयोगकर्ताहरूको प्रबन्ध गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"चलिरहेका अनुप्रयोगहरूको विवरण पुनःबहाली गर्नुहोस्"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"वर्तमानमा र भरखरै चलिरहेका कार्यहरूको बारेमा विस्तृत सूचना पुनःबहाली गर्न अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले अन्य अनुप्रयोगहरू बारेको निजी सूचना पत्ता लगाउन सक्छ।"</string>
- <string name="permlab_reorderTasks" msgid="2018575526934422779">"चलिरहेका अनुप्रयोगहरूलाई पुनःक्रम गराउनुहोस्"</string>
- <string name="permdesc_reorderTasks" msgid="7734217754877439351">"कामहरूलाई अग्रभाग र पृष्ठभूमिमा सार्न अनुप्रयोगलाई अनुमति दिन्छ। अनुप्रयोगले यो तपाईँको इनपुट बिना नै गर्न सक्छ।"</string>
- <string name="permlab_removeTasks" msgid="6821513401870377403">"चालु भइरहेका अनुप्रयोगहरू रोक्नुहोस्"</string>
- <string name="permdesc_removeTasks" msgid="1394714352062635493">"कामहरू हटाउन र उनीहरूको अनुप्रयोगहरूलाई बन्द गर्न अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले अन्य अनुप्रयोगहरूको व्यवहारलाई अबरोध गर्न सक्छन्।"</string>
- <string name="permlab_manageActivityStacks" msgid="7391191384027303065">"activity stacks को प्रबन्ध गर्नुहोस्"</string>
- <string name="permdesc_manageActivityStacks" msgid="1615881933034084440">"अनुप्रयोगलाई अन्य अनुप्रयोगहरू चल्ने activity stacks लाई थप्न, हटाउन र परिवर्तन गर्न अनुमति दिन्छ। खराब अनुप्रयोगहरूले अन्य अनुप्रयोगहरूको व्यवहारलाई विघटन गर्न सक्छन्।"</string>
- <string name="permlab_startAnyActivity" msgid="2918768238045206456">"कुनै गतिविधि सुरु गर्नुहोस्"</string>
- <string name="permdesc_startAnyActivity" msgid="997823695343584001">"अनुमति सुरक्षा वा निर्यात अवस्थालाई वास्ता नगरिकन कुनै पनि कार्य सुरु गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"स्क्रिन अनुकूलता सेट गर्नुहोस्"</string>
- <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"अन्य अनुप्रयोहरूको स्क्रिन मिल्दो मोडलाई नियन्त्रण गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। अन्य अनुप्रयोहरूको व्यवहार खराब अनुप्रयोगहरूले टुटाउन सक्छन्।"</string>
- <string name="permlab_setDebugApp" msgid="3022107198686584052">"अनुप्रयोग डिबग गर्ने सक्षम गर्नुहोस्"</string>
- <string name="permdesc_setDebugApp" msgid="4474512416299013256">"अनुप्रयोगलाई अन्य अनुप्रयोगको लागि डिबग गर्ने प्रक्रिया चालु गर्ने अनुमति दिन्छ। खराब अनुप्रयोगले अरू अनुप्रयोगहरू समाप्त गर्न यसको उपयोग गर्न सक्दछ।"</string>
- <string name="permlab_changeConfiguration" msgid="4162092185124234480">"प्रणाली प्रदर्शन सेटिङहरू परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"वर्तमान कन्फिगरेसन जस्तै लोक्याल वा सबैतिर फन्ट आकार बदल्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_enableCarMode" msgid="5684504058192921098">"कार मोड सक्षम गर्नुहोस्"</string>
- <string name="permdesc_enableCarMode" msgid="4853187425751419467">"कार मोडलाई सक्षम पार्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"अनुप्रयोगहरू बन्द गर्नुहोस्"</string>
- <string name="permdesc_killBackgroundProcesses" msgid="4593353235959733119">"अनुप्रयोगलाई अन्य अनुप्रयोगहरूको पृष्ठभूमि प्रक्रियाहरू बन्द गर्न अनुमति दिन्छ। यसले अन्य अनुप्रयोगहरूलाई चल्नबाट रोक्न सक्दछ।"</string>
- <string name="permlab_forceStopPackages" msgid="2329627428832067700">"अन्य अनुप्रयोगहरू दबाबमा रोक्नुहोस्"</string>
- <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"अन्य अनुप्रयोगहरूलाई बलपूर्वक बन्द गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_forceBack" msgid="652935204072584616">"अनुप्रयोग बन्द गर्न बल गर्नुहोस्"</string>
- <string name="permdesc_forceBack" msgid="3892295830419513623">"अग्रभागमा भएको कुनै गतिविधिलाई जबरजस्ती बन्द गर्न र फर्केर जानका लागि अनुप्रयोगलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूलाइ कहिल्यै आवश्यकता पर्दैन।"</string>
- <string name="permlab_dump" msgid="1681799862438954752">"प्रणालीको आन्तरिक स्थिति प्राप्त गर्नुहोस्"</string>
- <string name="permdesc_dump" msgid="1778299088692290329">"प्रणालीको आन्तरिक स्थिति पुनःबहाली गर्न अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले उनीहरूलाई सामान्यतः कहिल्यै नचाहिने व्यापक विविधताको निजी र सुरक्षित सूचना पुनःबहाली गर्न सक्छन्।"</string>
- <string name="permlab_retrieve_window_content" msgid="8022588608994589938">"स्क्रिन सामग्री बहाली गर्नुहोस्"</string>
- <string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"सक्रिय विन्डोको विषयवस्तुलाई पुनःबहाली गर्न अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले पुरै विन्डोको विषयवस्तु पुनःबहाली गर्न सक्छन् र पासवर्डहरूबाहेक यसका सबै पाठको जाँच गर्न सक्छन्।"</string>
- <string name="permlab_temporary_enable_accessibility" msgid="2312612135127310254">"पहुँचतालाई अस्थायी सक्षम गर्नुहोस्"</string>
- <string name="permdesc_temporary_enable_accessibility" msgid="8079456293182975464">"अनुप्रयोगलाई अस्थायी रूपमा उपकरणमाथि पहुँच राख्न अनुमति दिन्छ। खराब अनुप्रयोगले उपयोगकर्ताको सहमति बिना नै पहुँचलाई सक्षम गर्न सक्दछ।"</string>
- <string name="permlab_retrieve_window_info" msgid="8532295199112519378">"विन्डो जानकारी बहाली गर्नुहोस्"</string>
- <string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"अनुप्रयोगलाई विन्डो व्यवस्थापकबाट विन्डोहरूको बारेमा जानकारी प्राप्त गर्न अनुमति दिन्छ। खराब अनुप्रयोगले आन्तरिक प्रणाली उपयोगको लागि निमित्त जानकारी पनि प्राप्त गर्न सक्दछ।"</string>
- <string name="permlab_filter_events" msgid="8675535648807427389">"घटनाहरू छान्नुहोस्"</string>
- <string name="permdesc_filter_events" msgid="8006236315888347680">"इन्पुट फिल्टर जुन सबै प्रयोगकर्ता घटनाहरू पठाइनुभन्दा पहिले फिल्टर गर्नेलाई दर्ता गर्न अनुप्रयोगलाई अनुमति दिन्छ। प्रयोगकर्ताको हस्तक्षेप बिना नै UI प्रणाली खराब अनुप्रयोगले नियन्त्रण गर्न सक्छन्।"</string>
- <string name="permlab_magnify_display" msgid="5973626738170618775">"प्रदर्शन बढाउनुहोस्"</string>
- <string name="permdesc_magnify_display" msgid="7121235684515003792">"अनुप्रयोगलाई प्रदर्शनको सामग्री आवर्धन गर्न अनुमति दिन्छ। खराब अनुप्रयोगहरूले प्रदर्शन सामग्री संक्रमण गर्न सक्दछन् जसले उपकरणलाई अनुपयोगी बनाउँदछ।"</string>
- <string name="permlab_shutdown" msgid="7185747824038909016">"आंशिक बन्द"</string>
- <string name="permdesc_shutdown" msgid="7046500838746291775">"गतिविधि व्यवस्थापकलाई बन्द गर्ने अवस्थामा राख्छ। पूर्ण बन्द गर्ने काम गर्दैन।"</string>
- <string name="permlab_stopAppSwitches" msgid="4138608610717425573">"अनुप्रयोग स्विचहरू जोगाउनुहोस्"</string>
- <string name="permdesc_stopAppSwitches" msgid="8262195802582255021">"अन्य अनुप्रयोगमा स्विच गर्नबाट प्रयोगकर्ताहरूलाई रोक्छ।"</string>
- <string name="permlab_getTopActivityInfo" msgid="2537922311411546016">"वर्तमान अनुप्रयोगको जानकारी प्राप्त गर्नुहोस्"</string>
- <string name="permdesc_getTopActivityInfo" msgid="8153651434145132505">"स्क्रिनको अग्र भागमा हालको अनुप्रयोग र सेवाहरूका बारे निजी जानकारी निकाल्न बाहकलाई अनुमति दिन्छ।"</string>
- <string name="permlab_runSetActivityWatcher" msgid="892239094867182656">"सबै अनुप्रयोग सुरुवात गर्ने निरीक्षण र नियन्त्रण गर्नुहोस्"</string>
- <string name="permdesc_runSetActivityWatcher" msgid="6003603162578577406">"अनुप्रयोगलाई कसरी प्रणाली सुरुवात गतिहरू मोनिटर गर्न र नियन्त्रण गर्न अनुमति दिन्छ। खराब अनुप्रयोगहरूले प्रणालीमा पूर्ण सहमत गर्न सक्दछ। यो अनुमति केवल विकासको लागि आवश्यक छ, साधारण प्रयोगको लागि कहिले होइन।"</string>
- <string name="permlab_broadcastPackageRemoved" msgid="2576333434893532475">"प्याकेज हटाइएको प्रसारणलाई पठाउनुहोस्"</string>
- <string name="permdesc_broadcastPackageRemoved" msgid="6621901216207931089">"अनुप्रयोगलाई सूचना प्रसारण गर्न अनुमति दिन्छ जुन अनुप्रयोग प्याकेज हटाइएको छ। खराब अनु्प्रयोगहरूले यो कुनै अन्य चालु अनु्प्रयोग बन्द गर्न प्रयोग गर्न सक्दछन्।"</string>
- <string name="permlab_broadcastSmsReceived" msgid="5689095009030336593">"SMS-प्राप्त प्रसारण पठाउनुहोस्"</string>
- <string name="permdesc_broadcastSmsReceived" msgid="4152037720034365492">"त्यो एउटा SMS सन्देशबाट प्राप्त भएको सूचनालाई प्रसारण गर्न अनुप्रयोगलाई अनुमति दिन्छ। आउँदै गरेको SMS सन्देशहरूलाई जालसाजी गर्न सायद खराब भएका अनुप्रयोगहरूले यसलाई प्रयोग गर्न सक्छन्।"</string>
- <string name="permlab_broadcastWapPush" msgid="3145347413028582371">"WAP-PUSH-प्राप्त प्रसारण पठाउनुहोस्"</string>
- <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"अनुप्रयोगलाई सूचना प्रसारण गर्न अनुमति दिन्छ जुन एउटा WAP PUSH सन्देश प्राप्त भएको छ। खराब अनुप्रयोगहरूले यो MMS सन्देश बिगार्न वा मौन तरिकाले कुनै पनि वेबपृष्ठको सामग्री खराब विभेदहरूसँग बदल्न प्रयोग गर्न सक्दछन्।"</string>
- <string name="permlab_setProcessLimit" msgid="2451873664363662666">"चालु प्रशोधनहरूको सङ्ख्या सीमति गर्नुहोस्"</string>
- <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"अनुप्रयोगलाई चालु हुने प्रक्रियाहरूको अधिकतम संख्या नियन्त्रण गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूको लागि कहिले पनि आवश्यक नपर्न सक्दछ।"</string>
- <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"पृष्ठभूमि अनुप्रयोगहरू बन्द गर्न दबाब दिनुहोस्"</string>
- <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"अनुप्रयोगलाई गतिविधिहरू सधैँ समाप्त भयो कि भएन जब कि जति सक्दो तिनीहरू पृष्ठभूमिमा जान्छन् भन्ने नियन्त्रण गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूको लागि कहिले पनि आवश्यक नपर्न सक्दछ।"</string>
- <string name="permlab_batteryStats" msgid="2789610673514103364">"ब्याट्रि तथ्याङ्हरू पढ्नुहोस्"</string>
- <string name="permdesc_batteryStats" msgid="5897346582882915114">"वर्तमान थोरै ब्याट्री प्रयोग डेटा पढ्नको लागि एक अनुप्रयोगले अनुमति दिन्छ। जुन अनुप्रयोग तपाईँले प्रयोग गरीरहनुभएको छ त्यस्को बारेका पुर्ण जानकारी प्राप्त गर्न सायद अनुप्रयोगले अनुमति दिन्छ।"</string>
- <string name="permlab_updateBatteryStats" msgid="3719689764536379557">"ब्याट्रि तथ्याङ्कलाई परिमार्जन गर्नुहोस्"</string>
- <string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"अनुप्रयोगलाई संकलित ब्याट्रि तथ्याङ्कहरू परिमार्जन गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूको प्रयोगको लागि होइन।"</string>
- <string name="permlab_getAppOpsStats" msgid="1508779687436585744">"अनुप्रयोग संचालनका तथ्याङ्कहरू पुनःबहाली गर्नुहोस्"</string>
- <string name="permdesc_getAppOpsStats" msgid="6243887041577912877">"सङ्कलन गरिएका अनुप्रयोग संचालन तथ्याङ्लाई पुनः प्राप्त गर्न अनुप्रयोगलाई अनुमति दिन्छ। सामान्य अनुप्रयोगबाट प्रयोगको लागि होइन।"</string>
- <string name="permlab_updateAppOpsStats" msgid="8829097373851521505">"अनुप्रयोग संचलान तथ्याङ्कहरूलाई परिमार्जन गर्नुहोस्"</string>
- <string name="permdesc_updateAppOpsStats" msgid="50784596594403483">"सङ्कलन गरिएका अनुप्रयोग संचालन तथ्याङ्लाई परिमार्जन गर्न अनुप्रयोगलाई अनुमति दिन्छ। सामान्य अनुप्रयोगबाट प्रयोगको लागि होइन।"</string>
- <string name="permlab_backup" msgid="470013022865453920">"प्रणाली ब्यकअप नियन्त्रण गर्नुहोस् र पुनः बहाली गर्नुहोस्"</string>
- <string name="permdesc_backup" msgid="6912230525140589891">"प्रणालीको जगेडा नियन्त्रण गर्न र पुनःप्राप्तिको संयोजन गर्न अनुप्रयोगलाई अनुमित दिन्छ। सामान्य अनुप्रयोगद्वारा प्रयोगको लागि होइन।"</string>
- <string name="permlab_confirm_full_backup" msgid="5557071325804469102">"पूर्ण जगेडा गर्न वा प्रक्रिया पुनःबहाली गर्न निश्चित गर्नुहोस्"</string>
- <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"UI को पूर्ण जगेडा निश्चिन्तता सुरु गर्नका लागि अनुप्रयोगलाई अनुमति दिन्छ। कुनै अनुप्रयोगबाट प्रयोग नगरिने।"</string>
- <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"अनधिकृत बिन्डोहरू प्रदर्शन गर्नुहोस्"</string>
- <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"अनुप्रयोगलाई विन्डोहरू सिर्जना गर्न अनुमति दिन्छ जुन आन्तरिक प्रणाली प्रयोगकर्ता इन्टरफेसद्वारा प्रयोग गर्न अभिप्रेरित छ। साधारण अनुप्रयोगहरूद्वारा प्रयोगको लागि होइन।"</string>
- <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"अन्य अनुप्रयोगहरूमा चित्र कोर्नुहोस्"</string>
- <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"अरू अनुप्रयोगहरूमाथि वा प्रयोगकर्ता इन्टरफेसका भागहरूमा चित्र कोर्न अनुप्रयोगलाई अनुमति दिन्छ। तिनीहरूले कुनै अनुप्रयोगमा इन्टरफेको तपाईँको प्रयोगसँग हस्तक्षेप गर्न वा तपाईँ अन्य अनुप्रयोगहरूमा के देखिरहनु भएको छ भन्ने सोच्न हुन्छ भन्ने बदल्न सक्छन्।"</string>
- <string name="permlab_setAnimationScale" msgid="2805103241153907174">"ग्लोबल सजीविकरण गति परिमार्जन गर्नुहोस्"</string>
- <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"विश्वब्यापि सजीविकरण(द्रुत वा ढिला सजीविकरणहरू) लाई कुनै पनि समय परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_manageAppTokens" msgid="1286505717050121370">"अनुप्रयोग टोकनहरू प्रबन्ध गर्नुहोस्"</string>
- <string name="permdesc_manageAppTokens" msgid="8043431713014395671">"अनुप्रयोगलाई आफ्ना टोकनहरू सिर्जना गर्न र उनीहरूको साधारण Z-क्रमाङ्कन बाइपास गरेर प्रबन्ध गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूको लागि कहिल्यै पनि आवश्यक नहुन सक्दछ।"</string>
- <string name="permlab_freezeScreen" msgid="4708181184441880175">"स्क्रिन फ्रिज गर्नुहोस्"</string>
- <string name="permdesc_freezeScreen" msgid="8558923789222670064">"अनुप्रयोगलाई पूर्ण-स्क्रिन संक्रमणको लागि अस्थायी रूपमा स्क्रिन स्थिर गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_injectEvents" msgid="1378746584023586600">"कुञ्जीहरू र नियन्त्रण बटनहरू थिच्नुहोस्"</string>
- <string name="permdesc_injectEvents" product="tablet" msgid="206352565599968632">"यसका आफ्ना इनपुट घटनाहरू (कि थिचाइहरू, आदि) अन्य अनुप्रयोगहरूलाई वितरण गर्न अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले यसलाई ट्याब्लेटसम्म लैजान प्रयोग गर्न सक्छन्।"</string>
- <string name="permdesc_injectEvents" product="default" msgid="653128057572326253">"यस्को आफ्नै निवेश घटनाहरू (कि थिचाइहरू, आदि.) अन्य अनुप्रोयगहरूलाई पु्र्‍याउन अनुप्रयोगलाई अनुमति दिन्छ। फोनलाई हस्तक्षेप गर्न यसको प्रयोग खराब अनुप्रयोगहरूले गर्न सक्छन्।"</string>
- <string name="permlab_readInputState" msgid="469428900041249234">"तपाईंले के टाइप गर्नुहुन्छ र के कार्यहरू लिनुहुन्छ रेकर्ड गर्नुहोस्"</string>
- <string name="permdesc_readInputState" msgid="8387754901688728043">"अर्को अनुप्रयोग(जस्तै पासवर्ड टाइप गराइ)सँग अन्तर्क्रिया गरेको बेला पनि तपाईँले थिचेका किहरूलाइ हेर्न अनुप्रयोगलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूलाई कहिल्यै आवश्यक हुँदैन।"</string>
- <string name="permlab_bindInputMethod" msgid="3360064620230515776">"एउटा निवेश तरिकामा बाँध्नुहोस्"</string>
- <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"एउटा निवेश तरिकाको उच्च स्तरको इन्टरफेसलाई पक्का गर्नको लागि समाती राख्नेलाई अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"एउटा पहुँच सेवासँग जोड्नुहोस्"</string>
- <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"एक पहुँच सेवाको उच्च स्तरको कुराकानीलाई पक्का गर्नको लागि समाती राख्नेले अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_bindPrintService" msgid="8462815179572748761">"एउटा प्रिन्ट सेवासँग जोड्नुहोस्"</string>
- <string name="permdesc_bindPrintService" msgid="7960067623209111135">"एउटा प्रिन्ट सेवाको उच्च स्तरको इन्टरफेसलाई पक्का गर्नको लागि प्रयोगकर्तालाई अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_accessAllPrintJobs" msgid="1120792468465711159">"सबै प्रिन्ट कार्यहरूको पहुँच गर्नुहोस्"</string>
- <string name="permdesc_accessAllPrintJobs" msgid="2978185311041864762">"प्रयोगकर्तालाई अन्य अनुप्रयोगद्वारा निर्मित प्रिन्ट कार्यहरू पहुँच गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_bindNfcService" msgid="2752731300419410724">"NFC सेवामा बाँध्नुहोस्"</string>
- <string name="permdesc_bindNfcService" msgid="6120647629174066862">"NFC कार्डहरू इमुलेट गर्ने अनुप्रयोगहरूलाई बाँध्नका लागि होल्डरलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूका लागि कहिल्यै पनि आवश्यक पर्दैन।"</string>
- <string name="permlab_bindTextService" msgid="7358378401915287938">"एउटा पाठ सेवासँग संगठित हुनुहोस्"</string>
- <string name="permdesc_bindTextService" msgid="8151968910973998670">"एउटा पाठ सेवाको (उदाहरण शब्द परीक्षणसेवा) उच्च स्तरको इन्टरफेसलाई पक्का गर्नको लागि समाती राख्नेलाई अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_bindVpnService" msgid="4708596021161473255">"VPN सेवासँग बाँध्नुहोस्।"</string>
- <string name="permdesc_bindVpnService" msgid="2067845564581693905">"एक Vpn सेवाको उच्च स्तरको कुराकानीलाई पक्का गर्नको लागि समाती राख्नेले अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_bindWallpaper" msgid="8716400279937856462">"एउटा वालपेपरमा बाँध्नुहोस्"</string>
- <string name="permdesc_bindWallpaper" msgid="7108428692595491668">"वालपेपरको माथिल्लो स्तरको इन्टरफेसमा बाँध्न धारकलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्दैन।"</string>
- <string name="permlab_bindRemoteViews" msgid="5697987759897367099">"एउटा विजेट सेवासँग संगठित हुनुहोस्"</string>
- <string name="permdesc_bindRemoteViews" msgid="4717987810137692572">"एउटा विजेट सेवाको उच्च स्तरको इन्टरफेसलाई पक्का गर्नको लागि समाती राख्नेलाई अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_bindDeviceAdmin" msgid="8704986163711455010">"उपकरणको प्रबन्धसँग अन्तरक्रिया गर्नुहोस्"</string>
- <string name="permdesc_bindDeviceAdmin" msgid="569715419543907930">"उपकरण प्रशासक लाई आशय पठाउन समाती राख्‍नेलाई अनुमति दिन्छ। साधारण अनुप्रयोहरूको लागि कहिल्यै पनी आवश्यक पर्दैन।"</string>
- <string name="permlab_manageDeviceAdmins" msgid="4248828900045808722">"एउटा उपकरण व्यवस्थापक थप गर्नुहोस् वा हटाउनुहोस्"</string>
- <string name="permdesc_manageDeviceAdmins" msgid="5025608167709942485">"होल्डरलाई सक्रिय उपकरण व्यवस्थापकहरू थप गर्न वा हटाउन अनुमति दिन्छ। साधारण अनुप्रयोगहरूको लागि कहिल्यै पनि आवश्यक नहुन सक्दछ।"</string>
- <string name="permlab_setOrientation" msgid="3365947717163866844">"स्क्रिन अभिमुखिकरण परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_setOrientation" msgid="3046126619316671476">"अनुप्रयोगलाई कुनै पनि समयमा स्क्रिनको परिक्रमण परिवर्तन गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूको लागि कहिले पनि आवश्यक नपर्न सक्दछ।"</string>
- <string name="permlab_setPointerSpeed" msgid="9175371613322562934">"सङ्केतक गति बदल्नुहोस्"</string>
- <string name="permdesc_setPointerSpeed" msgid="6866563234274104233">"कुनै पनि समयमा माउस परिवर्तन गर्न वा ट्राकप्याड संकेतकको गति बदल्न अनुप्रयोगलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूको लागि कहिल्यै नचाहिन सक्छ।"</string>
- <string name="permlab_setKeyboardLayout" msgid="4778731703600909340">"किबोर्ड लेआउट परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_setKeyboardLayout" msgid="8480016771134175879">"किबोर्ड लेआउटलाई परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई सायद कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_signalPersistentProcesses" msgid="4539002991947376659">"Linux संकेतहरू अनुप्रयोगलाई पठाउनुहोस्"</string>
- <string name="permdesc_signalPersistentProcesses" msgid="4896992079182649141">"सबै चलिरहेका प्रक्रियाहरूमा पठाइएका संकेतलाई अनुरोध गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_persistentActivity" msgid="8841113627955563938">"अनुप्रयोगहरू जहिले पनि चल्ने बनाउनुहोस्"</string>
- <string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"यसको आफ्नै मेमोरीमा दृढ भएकोको अंश बनाउनको लागि अनुप्रयोगलाई अनुमति दिन्छ। ट्याब्लेटलाई ढिलो गराउँदै गरेका अन्य अनुप्रयोगहरूलाई सीमित मात्रामा यसले मेमोरी उपलब्ध गराउन सक्छ।"</string>
- <string name="permdesc_persistentActivity" product="default" msgid="4384760047508278272">"अनुप्रयोगलाई मेमोरीमा आफैंको निरन्तरको अंश बनाउन अनुमति दिन्छ। यसले फोनलाई ढिला बनाएर अन्य अनुप्रयोगहरूमा मेमोरी SIMित गर्न सक्दछन्।"</string>
- <string name="permlab_deletePackages" msgid="184385129537705938">"अनुप्रयोगहरू मेटाउनुहोस्"</string>
- <string name="permdesc_deletePackages" msgid="7411480275167205081">"अनुप्रयोगलाई एन्ड्रोइड प्याकेजहरू मेटाउन अनुमति दिन्छ। खराब अनुप्रयोगहरूले यसलाई महत्त्वपूर्ण अनुप्रयोगहरू मेटाउन प्रयोग गर्न सक्दछन्।"</string>
- <string name="permlab_clearAppUserData" msgid="274109191845842756">"अन्य अनुप्रयोगहरूको डेटा मेटाउनुहोस्"</string>
- <string name="permdesc_clearAppUserData" msgid="4625323684125459488">"प्रयगकर्ता डेटा हटाउन अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_deleteCacheFiles" msgid="3128665571837408675">"अन्य अनुप्रयोगहरूको क्यासहरू मेटाउनुहोस्"</string>
- <string name="permdesc_deleteCacheFiles" msgid="3812998599006730196">"अनुप्रयोगलाई क्यास फाइलहरू मेटाउन अनुमति दिन्छ।"</string>
- <string name="permlab_getPackageSize" msgid="7472921768357981986">"अनुप्रयोग भण्डारण ठाउँको मापन गर्नुहोस्"</string>
- <string name="permdesc_getPackageSize" msgid="3921068154420738296">"अनुप्रयोगलाई यसको कोड, डेटा, र क्यास आकारहरू पुनःप्राप्त गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_installPackages" msgid="2199128482820306924">"अनुप्रयोगहरू सिधै स्थापना गर्नुहोस्"</string>
- <string name="permdesc_installPackages" msgid="5628530972548071284">"नयाँ स्थापना गर्न वा एन्ड्रोइड प्याकेजहरू अद्यावधिक गर्न अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले यसलाई मनपरी रूपमा शक्तिशाली अनुमतिहरू भएका नयाँ अनुप्रयोगहरू थप्न प्रयोग गर्न सक्छन्।"</string>
- <string name="permlab_clearAppCache" msgid="7487279391723526815">"सबै अनुप्रयोग क्यास डेटा मेटाउनुहोस्"</string>
- <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"अन्य अनुप्रयोगहरूको क्यास डाइरेक्टरीहरूमा फाइलहरू हटाएर ट्याब्लेटको भण्डारण खाली गर्न अनुप्रयोगहरूलाई अनुमति दिन्छ। उनीहरूले आफ्नो डेटा पुनःबहाली गर्न पर्ने हुनाले यसले अन्य अनुप्रयोगहरूलाई स्टार्ट हुन निकै ढिलो गराउन सक्छ।"</string>
- <string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"अनुप्रयोगलाई अन्य अनुप्रयोगहरूको क्यास डाइरेक्टरीमा फाइलहरू मेटाएर फोन भण्डारण खाली गर्न अनुमति दिन्छ। यसले अन्य अनुप्रयोगहरूलाई बढी ढिला सुरु गराउँछ किनकि तिनीहरूले आफ्नो डेटा पुनःप्राप्ति गर्न आवश्यक पर्ने हुन्छ।"</string>
- <string name="permlab_movePackage" msgid="3289890271645921411">"अनुप्रयोग स्रोतहरू सार्नुहोस्"</string>
- <string name="permdesc_movePackage" msgid="319562217778244524">"अनुप्रयोग स्रोतहरू आन्तरिकबाट बाह्य मेडियामा र विपरितमा लैजान अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_readLogs" msgid="6615778543198967614">"संवेनशील लग डेटा पढ्नुहोस्"</string>
- <string name="permdesc_readLogs" product="tablet" msgid="82061313293455151">"प्रणालीका विभिन्न फाइलहरूबाट पढ्न अनुप्रयोगलाई अनुमति दिन्छ। सम्भाव्य रूपमा व्यक्तिगत र निजी सूचनासहित तपाईँ ट्याब्लेटसँग के गरिरहनु भएको छ भन्ने बारेको साधारण सूचना पत्ता लगाउन यसलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_readLogs" product="default" msgid="2063438140241560443">"प्रणालीका विभिन्न फाइलहरूबाट पढ्न अनुप्रयोगलाई अनुमति दिन्छ। सम्भाव्य रूपमा व्यक्तिगत र निजी सूचनासहित तपाईँ फोनसँग के गरिरहनु भएको छ भन्ने बारेको साधारण सूचना पत्ता लगाउन यसलाई अनुमति दिन्छ।"</string>
- <string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"पछाडि बजाउनको लागि कुनै मिडिया प्रयोग गर्नुहोस्"</string>
- <string name="permdesc_anyCodecForPlayback" msgid="8283912488433189010">"अनुप्रयोगलाई प्लेब्याक डिकोड गर्न कुनै पनि स्थापित मिडिया डिकोडर प्रयोगको लागि अनुमति दिन्छ।"</string>
- <!-- no translation found for permlab_manageCaCertificates (1678391896786882014) -->
- <skip />
- <!-- no translation found for permdesc_manageCaCertificates (4015644047196937014) -->
- <skip />
- <string name="permlab_diagnostic" msgid="8076743953908000342">"diag को स्वामित्वमा रहेको संसाधनहरूमा पढ्नुहोस्/लेख्नुहोस्"</string>
- <string name="permdesc_diagnostic" msgid="6608295692002452283">"अनुप्रयोगलाई diag समूहद्वारा स्वामित्व प्राप्त कुनै पनि स्रोतहरूमा पढ्न र लेख्न अनुमति दिन्छ; उदाहरणको लागि, /dev मा फाइलहरू। यसले सम्भवतः प्रणाली स्थिरता र सुरक्षामा प्रभाव पार्न सक्दछ। यो केवल निर्माता वा संचालकद्वारा हार्डवेयर-निर्दिष्टको लागि प्रयोग हुन सक्दछ।"</string>
- <string name="permlab_changeComponentState" msgid="6335576775711095931">"अनुप्रयोग अंशहरू सक्षम वा अक्षम गर्नुहोस्"</string>
- <string name="permdesc_changeComponentState" product="tablet" msgid="8887435740982237294">"अन्य अनुप्रयोग सक्षम छ वा छैन भन्ने कुराको परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। महत्त्वपूर्ण फोन सक्षमता खराब अनुप्रोगहरूले असक्षम पार्न प्रयोग गर्न सक्छन्। यो अनुमतिसँगै होसियारी अपनाउनु पर्छ, अनुप्रयोग विषय सूचीमा प्रयोग नहुने, असंगत, अस्थिर अवस्था भएको प्राप्त हुने सम्भावना हुन्छ।"</string>
- <string name="permdesc_changeComponentState" product="default" msgid="1827232484416505615">"अन्य अनुप्रयोगको अंश सक्षम छ वा छैन भन्नेमा परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। महत्त्वपूर्ण फोन सक्षमता खराब अनुप्रोगहरूले असक्षम पार्न प्रयोग गर्न सक्छन्। यो अनुमतिसँगै होसियारी अपनाउनु पर्छ, अनुप्रयोग विषय सूचीमा प्रयोग नहुने, असंगत, अस्थिर अवस्था भएको प्राप्त हुने सम्भावना हुन्छ।"</string>
- <string name="permlab_grantRevokePermissions" msgid="4627315351093508795">"अनुमतिहरू प्रदान गर्नुहोस् वा रद्द गर्नुहोस्"</string>
- <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"अनुप्रयोगलाई यो वा अन्य अनुप्रयोगहरूको लागि निर्दिष्ट स्वीकृतिहरू प्रदान गर्न वा रद्द गर्न अनुमति दिन्छ। खराब अनुप्रयोगहरूले यो तपाईंले अनुमति प्रदान नगर्नुभएका सुविधाहरूमा पहुँच गर्न सक्दछन्।"</string>
- <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"विशेष रूपमा मान्य अनुप्रयोगहरू सेट गर्नुहोस"</string>
- <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"तपाईँको मनपर्ने अनुप्रयोगलाई परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले चलिरहेका ती अनुप्रयोहरूलाई चुपचाप रूपमा परिवर्तन गर्न सक्छन्, तपाईँबाट निजी डेटा संकलन गर्नको लागि भइरहेको अनुप्रयोगलाई स्पुफ गर्न सक्छन्।"</string>
- <string name="permlab_writeSettings" msgid="2226195290955224730">"प्रणाली सेटिङहरू परिमार्जन गर्नुहोस्"</string>
- <string name="permdesc_writeSettings" msgid="7775723441558907181">"प्रणालीका सेटिङ डेटालाई परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले सायद तपाईँको प्रणालीको कन्फिगरेसनलाई क्षति पुर्‍याउन सक्छन्।"</string>
- <string name="permlab_writeSecureSettings" msgid="204676251876718288">"सुरक्षित प्रणाली सेटिङहरू परिमार्जन गर्नुहोस्"</string>
- <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"प्रणालीको सुरक्षित सेटिङ डेटा परिमार्जन गर्न अनुप्रयोगलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूको प्रयोगको लागि होइन्।"</string>
- <string name="permlab_writeGservices" msgid="2149426664226152185">"Google सेवा नक्सा परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_writeGservices" msgid="1287309437638380229">"अनुप्रयोगलाई Google सेवा नक्साहरू परिमार्जन गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूद्वाराको प्रयोगको लागि होइन।"</string>
- <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"स्टार्टअपमा चलाउनुहोस्"</string>
- <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"आनुप्रयोगलाई प्रणाली बुट प्रक्रिया पूर्ण हुने बितिकै आफैलाई सुरु गर्ने अनुमति दिन्छ। यसले ट्याब्लेट सुरु गर्नमा ढिला गर्न सक्दछ र अनुप्रयोगलाई समग्रमा ट्याब्लेट सधैँ चालु गरेर ढिला बनाउँदछ।"</string>
- <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"अनुप्रयोगलाई प्रणाली बुट गरी सकेपछि जति सक्दो चाँडो आफैंमा सुरु गर्न अनुमति दिन्छ। यसले फोन सुरु गर्नमा ढिला गर्न सक्दछ र अनप्रयोगलाई समग्रमा फोन सधैँ चालु गरेर ढिला बनाउँदछ।"</string>
- <string name="permlab_broadcastSticky" msgid="7919126372606881614">"स्टिकि प्रसारण पठाउनुहोस्"</string>
- <string name="permdesc_broadcastSticky" product="tablet" msgid="7749760494399915651">"औपचारिक प्रसारणलाई पठाउनको लागि एउटा अनुप्रयोगलाई अनुमति दिन्छ, जुन प्रसारण समाप्त भएपछि बाँकी रहन्छ। अत्याधिक प्रयोगले धेरै मेमोरी प्रयोग गरेको कारणले ट्याब्लेटलाई ढिलो र अस्थिर बनाउन सक्छ।"</string>
- <string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"औपचारिक प्रसारणलाई पठाउनको लागि एक अनुप्रयोगलाई अनुमति दिन्छ, जुन प्रसारण समाप्त भएपछि बाँकी रहन्छ। अत्याधिक प्रयोगले धेरै मेमोरी प्रयोग गरेको कारणले फोनलाई ढिलो र अस्थिर बनाउन सक्छ।"</string>
- <string name="permlab_readContacts" msgid="8348481131899886131">"तपाईँका सम्पर्कहरू पढ्नुहोस्"</string>
- <string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"अनुप्रयोगलाई निर्दिष्ट व्यक्तिगतसँग अन्य तरिकाहरूबाट कल गर्नु भएका, इमेल गर्नु भएका वा अन्तर्क्रिया गर्नुभएका आवृतिसहितको तपाईंको ट्याब्लेटमा भण्डारण गरिएका सम्पर्कहरूको डेटा पढ्न अनुमति दिन्छ। यो अनुमतिले तपाईंको सम्पर्क डेटा बचत गर्न अनुमति दिन्छ, र खराब अनुप्रयोगहरूले तपाईंको जानकारी बिना सम्पर्क डेटा साझेदारी गर्न सक्दछन्।"</string>
- <string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"तपाईँले विशेष व्यक्तिहरूसँग अर्को तरिकाबाट कल गर्नुभएका, इमेल गर्नुभएका वा संचार गर्नुभएका आवृतिसहित तपाईँको फोनमा भण्डारण भएका डेटाको बारेमा पढ्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। यो अनुमतिले अनुप्रयोगलाई तपाईँको सम्पर्क डेटा बचत गर्नको लागि अनुमति दिन्छ, र तपाईँको ज्ञान बिना नै खराब अनुप्रयोगहरूले सायद सम्पर्क डेटा साझेदारी गर्न सक्छन्।"</string>
- <string name="permlab_writeContacts" msgid="5107492086416793544">"तपाईँका सम्पर्कहरू परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"अन्य तरिकाका आवृतिहरूसँग जुन तपाईँले कल, इमेल, वा विशेष सम्पर्क गर्नुभएकासहित तपाईँको ट्याब्लेटमा भण्डारण भएका सम्पर्कहरूको बारेको डेटालाई परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। यस अनुमतिले सम्पर्क डेटालाई मेटाउनको लागि अनुमति दिन्छ।"</string>
- <string name="permdesc_writeContacts" product="default" msgid="589869224625163558">"तपाईँले बारम्बार कल गरेका, इमेल गरेका, वा विशेष सम्पर्कहरूसँग सञ्चार गरेका सहित तपाईँको फोनमा भण्डारण गरेका तपाईँका सम्पर्कहरू परिमार्जन गर्न अनुप्रयोगलाई अनुमति दिन्छ। यो अनुमतिले अनुप्रयोगलाई सम्पर्क डेटा मेटाउन दिन्छ।"</string>
- <string name="permlab_readCallLog" msgid="3478133184624102739">"कल लग पढ्नुहोस्"</string>
- <string name="permdesc_readCallLog" product="tablet" msgid="3700645184870760285">"अनुप्रयोगलाई तपाईँको ट्याब्लेटको कल लग, आगमन र बहिर्गमन कलहरू बारे डेटा सहितको कल लग पढ्न अनुमति दिन्छ। यस अनुमतिले अनुप्रयोगहरूलाई तपाईँको कल लग डेटाहरूको बचत गर्न अनुमति दिन्छ, र खराब अनुप्रयोगहरूले तपाईँको जानकारी बिना नै यो कल लग डेटालाई अरूसँग साझेदार गर्न सक्छन्।"</string>
- <string name="permdesc_readCallLog" product="default" msgid="5777725796813217244">"भित्र आउने र बाहिर जाने कलहरूसहित तपाईँको फनको कल लग पढ्न अनुप्रयोगलाई अनुमति दिन्छ। यो अनुमतिले अनुप्रयोगहरूलाई तपाईँका कल लग डेटा बचत गर्न दिन्छ र खराब अनुप्रयोगहरूले तपाईँले थाहै नपाई कल लग डेटालाई साझेदारी गर्न सक्छन्।"</string>
- <string name="permlab_writeCallLog" msgid="8552045664743499354">"कल लग लेख्‍नुहोस्"</string>
- <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"आगमन तथा बहर्गमन डेटासहित तपाईँको ट्याब्लेटको कल लगको परिमार्जन गर्न अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले यसलाई तपाईँको कल लग परिमार्जन गर्न वा मेटाउन प्रयोग गर्न सक्छन्।"</string>
- <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"अनुप्रयोगलाई तपाईंको फोनको आउने र बाहिर जाने कलहरूको बारेको डेटा सहित कल लग परिमार्जन गर्न अनुमति दिन्छ। खराब अनुप्रयोगहरूले यसलाई तपाईंको कल लग मेटाउन वा परिमार्जन गर्न प्रयोग गर्न सक्दछ।"</string>
- <string name="permlab_readProfile" msgid="4701889852612716678">"तपाईँको आफ्नै सम्पर्क कार्ड पढ्नुहोस्"</string>
- <string name="permdesc_readProfile" product="default" msgid="5462475151849888848">"अनुप्रयोगलाई तपाईंको उपकरणमा भण्डारण गरिएका व्यक्तिगत प्रोफाइल जानकारी पढ्न अनुमति दिन्छ, जस्तै तपाईंको नाम र सम्पर्क जानकारी। यसको मतलब अनुप्रयोगले तपाईंलाई पहिचान गर्न सक्दछ र तपाईंको प्रोफाइल जानकारी अरूलाई पठाउन सक्दछ।"</string>
- <string name="permlab_writeProfile" msgid="907793628777397643">"तपाईँको आफ्नै सम्पर्क कार्ड परिमार्जन गर्नुहोस्"</string>
- <string name="permdesc_writeProfile" product="default" msgid="5552084294598465899">"तपाईँको उपकरणमा भण्डार भएको व्याक्तिगत प्रोफाइल जानकारी, जस्तै तपाईँको नाम वा सम्पर्क जानकारीलाई परिवर्तन गर्न वा थप्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। यसको मतलब अन्य अनुप्रयोगले तपाईँलाई चिन्न सक्छन् र सायद अन्यलाई तपाईँको प्रोफाइल जानकारी पठाउन सक्छन्।"</string>
- <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"तपाईंको सामाजिक स्ट्रिम पढ्नुहोस्"</string>
- <string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"तपाईँ र तपाईँका साथीहरूबाट सामाजिक अपडेटलाई पहुँच र सिंक गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। जानकारी साझेदारी गर्दा सावधान रहनुहोस् -- समाजिक नेटवर्कहरूमा तपाईँ र तपाईँको साथीको बिचमा भएका संचारलाई पढ्न विश्वासनीयता बेगरै यसले अनुप्रयोगलाई अनुमति दिन्छ। नोट: यो अनुमति बलपूर्वक सबै सामाजिक नेटवर्कहरूमा सायद नगर्न सकिन्छ।"</string>
- <string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"तपाईँको सामाजिक प्रवाहमा लेख्‍नुहोस्"</string>
- <string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"अनुप्रयोगलाई तपाईंको साथीहरूबाट सामाजिक अपडेटहरू प्रदर्शन गर्न अनुमति दिन्छ। जानकारी साझेदारी गर्ने बेलामा होशियार रहनुहोस् -- यसले अनुप्रयोगलाई सन्देशहरू निर्माण गर्न अनुमति दिन्छ जुन साथीबाट आएको देखिन्छ। टिप्पणी: यो अनुमति सबै सामाजिक सञ्जालहरूमा लागू नहुन सक्दछ।"</string>
- <string name="permlab_readCalendar" msgid="5972727560257612398">"गोप्य जानकारी र पात्रो घटनाहरू पढ्नुहोस्"</string>
- <string name="permdesc_readCalendar" product="tablet" msgid="4216462049057658723">"अनुप्रयोगलाई तपाईंको ट्याब्लेटमा भण्डारण गरिएका ती साथीहरू वा सहयोगीहरू सहितको पात्राका कार्यक्रमहरू पढ्न अनुमति दिन्छ। यसले गोपनीयता वा संवेदनशीलता बिना पनि अनुप्रयोगलाई तपाईंको पात्राका डेटा साझेदारी गर्न वा बचत गर्न अनुमति दिन्छ।"</string>
- <string name="permdesc_readCalendar" product="default" msgid="7434548682470851583">"ती साथीहरू वा सहकर्मीहरूसहित सबै पात्रो घटनाहरू तपाईँको ट्याब्लेटमा भण्डारण भएकालाई पढ्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। तपाईँको पात्रो डेटा यसले सायद सेयर गर्न वा सुरक्षित गर्नको लागि विश्वासनियता वा सम्वेदनशीलता बिना नै अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_writeCalendar" msgid="8438874755193825647">"पात्रो घटनाहरू थप्नुहोस् वा परिमार्जन गर्नुहोस् र मालिकको ज्ञान बिना नै पाहुनाहरूलाई इमेल पठाउनुहोस्"</string>
- <string name="permdesc_writeCalendar" product="tablet" msgid="6679035520113668528">"ती साथीहरू वा सहकर्मीहरूसहितका घटनाहरू जसलाई तपाईँले आफ्नो ट्याब्लेटमा परिमार्जन गर्न सक्ने अनुमति अनुप्रयोगलाई दिन्छ। यसले अनुप्रयोगलाई सन्देशहरू जुन पात्राको मालिकहरूबाट आएका देखिनेलाई पठाउने वा मालिकहरूको ज्ञान बेगर घटनालाई परिमार्जन गर्ने अनुमित दिन्छ।"</string>
- <string name="permdesc_writeCalendar" product="default" msgid="2324469496327249376">"ती साथीहरू वा सहकर्मीहरूसहित तपाईँको फोनका घटनाहरू जसलाई थप्न, हटाउन र परिवर्तन गर्न अनुप्रयोगलाई अनुमति दिन्छ। पात्रो मालिकबाट देखा परेका वा मालिकको ज्ञान बिना परिवर्तन भएका घटनाहरू सन्देश पठाउन यसले अनुप्रयोगलाई अनुमति दिन सक्छ।"</string>
- <string name="permlab_accessMockLocation" msgid="8688334974036823330">"परीक्षणको लागि स्थान स्रोतहरू मक गर्नुहोस्"</string>
- <string name="permdesc_accessMockLocation" msgid="5808711039482051824">"परीक्षणको लागि मक स्थान स्रोतहरू सिर्जना गर्नुहोस् वा नयाँ स्थान प्रदायक स्थापना गर्नुहोस्। यसले अनुप्रयोगलाई स्थानमा ओभरराइड गर्दछ र/वा स्थिति अन्य स्थान स्रोतहरू जस्तै GPS वा स्थान प्रदायकबाट फर्काइएका।"</string>
- <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"अधिक स्थान प्रदायक आदेशहरू पहुँच गर्नुहोस्"</string>
- <string name="permdesc_accessLocationExtraCommands" msgid="5945166642335800763">"थप स्थान प्रदायक कमाण्डहरू सम्म पहुँच पुर्‍याउन अनुप्रयोगले अनुमति दिन्छ। यसले अनुप्रयोगलाई सायद जीपीएसको वा अन्य स्थान सेवाहरूको कार्य सँग हस्तक्षेप गर्नको लागि यसलाई अनुमति दिन्छ।"</string>
- <string name="permlab_installLocationProvider" msgid="6578101199825193873">"एउटा स्थान प्रदाता स्थापित गर्न अनुमति"</string>
- <string name="permdesc_installLocationProvider" msgid="9066146120470591509">"परीक्षणको लागि मक स्थान स्रोतहरू सिर्जना गर्नुहोस् वा नयाँ स्थान प्रदायक स्थापना गर्नुहोस्। यसले अनुप्रयोगलाई स्थानमा ओभरराइड गर्दछ र/वा स्थिति अन्य स्थान स्रोतहरू जस्तै GPS वा स्थान प्रदायकबाट फर्काइएका।"</string>
- <string name="permlab_accessFineLocation" msgid="1191898061965273372">"सटिक स्थान (GPS र नेटवर्क आधारित)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"अनुप्रयोगले विश्वव्यापी स्थान प्रणाली (GPS) वा सेल टावरहरू र वाइ-फाइ जस्ता नेटवर्क स्थान स्रोतहरूको प्रयोग गरेर तपाईँको सही स्थान प्राप्त गर्न अनुमति दिन्छ। यी स्थान सेवाहरू खोल्नु पर्छ र अनुप्रयोगहरूका लागि प्रयोग गर्न तपाईँको उपकरणमा उपलब्ध हुनु पर्छ। अनुप्रयोगहरूले तपाईँ कहाँ हुनु हुन्छ भन्ने निर्धारण गर्न यसलाई प्रयोग गर्न सक्छ र यसले अतिरिक्त ब्याट्रि उर्जा खतप गर्न सक्छ।"</string>
- <string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"अनुमानित स्थान (नेटवर्क-आधारित)"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"अनुप्रयोगलाई तपाईँको अनुमानित स्थान प्राप्त गर्न अनुमति दिन्छ। यो स्थान सेल टावर र वाइ-फाइजस्ता नेटवर्क स्थान स्रोतहरूको प्रोग गरी स्थान सेवाहरूबाट उत्पन्न गरिएको हो। अनुप्रयोगले यी स्थान सेवाहरूको उपयोग गर्नको लागि यी सेवाहरू तपाईँको उपकरणमा चालु र उपलब्ध हुनु आवश्यक छ। अनुप्रयोगहरूले अनुमानित रूपमा तपाईँ कहाँ हुनुहुन्छ भन्ने निर्धारण गर्न यसको प्रयोग गर्न सक्छन्।"</string>
- <string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"SurfaceFlinger पहुँच गर्नुहोस्।"</string>
- <string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"SurfaceFlinger कम-स्तर सुविधाहरू प्रयोग गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_readFrameBuffer" msgid="6690504248178498136">"फ्रेम बफर पढ्नुहोस्"</string>
- <string name="permdesc_readFrameBuffer" msgid="4937405521809454680">"अनुप्रयोगलाई फ्रेम बफरको सामग्री पढ्न अनुमति दिन्छ।"</string>
- <string name="permlab_accessInputFlinger" msgid="5348635270689553857">"InputFlinger को पहुँच गर्नुहोस्"</string>
- <string name="permdesc_accessInputFlinger" msgid="2104864941201226616">"InputFlinger को कम-स्तर सुविधाहरू प्रयोग गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"वाइफाइ प्रदर्शनहरूलाई विन्यास गर्नुहोस"</string>
- <string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"अनुप्रयोगलाई कन्फिगर गर्न र वाइफाइ प्रदर्शनहरूसँग जोड्न अनुमति दिन्छ।"</string>
- <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"वाइफाइ प्रदर्शनहरू नियन्त्रण गर्नुहोस्"</string>
- <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"वाइफाइ प्रदर्शनीका तल्लो तह विषेशताहरू नियन्त्रण गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_captureAudioOutput" msgid="6857134498402346708">"अडियो आउटपुट कैद गर्नुहोस्"</string>
- <string name="permdesc_captureAudioOutput" msgid="6210597754212208853">"अनुप्रयोगलाई अडियो आउटपुट कैद गर्न र रिडाइरेक्ट गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_captureVideoOutput" msgid="2246828773589094023">"भिडियो आउटपुट कैद गर्नुहोस्"</string>
- <string name="permdesc_captureVideoOutput" msgid="359481658034149860">"अनुप्रयोगलाई भिडियो आउटपुट कैद गर्न र रिडाइरेक्ट गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_captureSecureVideoOutput" msgid="7815398969303382016">"सुरक्षित भिडियो आउटपुट कैद गर्नुहोस्"</string>
- <string name="permdesc_captureSecureVideoOutput" msgid="2779793064709350289">"अनुप्रयोगलाई सुरक्षित भिडियो आउटपुट कैद गर्न र रिडाइरेक्ट गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"तपाईँका अडियो सेटिङहरू परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"अनुप्रयोगलाई ग्लोबल अडियो सेटिङ्हरू परिमार्जन गर्न अनुमति दिन्छ, जस्तै आवाजको मात्रा र आउटपुटको लागि कुन स्पिकर प्रयोग गर्ने।"</string>
- <string name="permlab_recordAudio" msgid="3876049771427466323">"अडियो रेकर्ड गर्नुहोस्"</string>
- <string name="permdesc_recordAudio" msgid="4906839301087980680">"अनुप्रयोगलाई माइक्रोफोनको साथ अडियो रेकर्ड गर्न अनुमति दिन्छ। यस अनुमतिले तपाईंको पुष्टिकरण बिना कुनै पनि समयमा अडियो रेकर्ड गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_camera" msgid="3616391919559751192">"तस्बिरहरू र भिडियोहरू लिनुहोस्।"</string>
- <string name="permdesc_camera" msgid="8497216524735535009">"अनुप्रयोगलाई क्यामेरासँग तस्बिर र भिडियोहरू लिन अनुमति दिन्छ। यस अनुमतिले अनुप्रयोगलाई तपाईंको पुष्टिकरण बिना कुनै पनि समयमा क्यामेरा प्रयोग गर्न स्वीकृति दिन्छ।"</string>
- <string name="permlab_cameraDisableTransmitLed" msgid="2651072630501126222">"क्यामेरा प्रयोगमा हुँदा सूचक LED प्रसारण असक्षम गर्नुहोस्"</string>
- <string name="permdesc_cameraDisableTransmitLed" msgid="4764585465480295341">"पूर्व-स्थापित प्रणाली अनुप्रयोगलाई क्यामेरा उपयोग सूचक LED अक्षम गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_brick" product="tablet" msgid="2961292205764488304">"स्थायी रूपमा ट्याब्लेट अक्षम पार्नुहोस्"</string>
- <string name="permlab_brick" product="default" msgid="8337817093326370537">"फोनलाई स्थायी रूपमा असक्षम पार्नहोस्"</string>
- <string name="permdesc_brick" product="tablet" msgid="4334818808001699530">"पुरै ट्याब्लेटलाई स्थायी रूपमा असक्षम पार्न अनुप्रयोगलाई अनुमति दिन्छ। यो निकै खतरनाक हुन्छ।"</string>
- <string name="permdesc_brick" product="default" msgid="5788903297627283099">"सम्पूर्ण फोनलाई स्थायी रूपमा असक्षम पार्न अनुप्रयोगलाई अनुमति दिन्छ। यो धेरै खतरनाक हुन्छ।"</string>
- <string name="permlab_reboot" product="tablet" msgid="3436634972561795002">"ट्याब्लेट पुनःबुट गर्न जोड गर्नुहोस्"</string>
- <string name="permlab_reboot" product="default" msgid="2898560872462638242">"फोन पुनःबुट गर्नु जोड गर्नुहोस्"</string>
- <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"ट्याब्लेटलाई बलपूर्वक पुनःबुट गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"फोनलाई बलपुर्वक पुनःबुट गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"USB भण्डारण फाइल प्रणाली पहुँच गर्नुहोस्"</string>
- <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"SD कार्ड फाइल प्रणाली पहुँच गर्नुहोस्"</string>
- <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"हटाउन मिल्ने भण्डारणको लागि फाइल प्रणालीहरू माउन्ट र अनमाउन्ट गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB भण्डारण मेट्नुहोस्"</string>
- <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD कार्ड मेटाउनुहोस्"</string>
- <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"हटाउन मिल्ने भण्डारण फर्म्याट गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_asec_access" msgid="3411338632002193846">"आन्तरिक भण्डारणको सूचना प्राप्त गर्नुहोस्"</string>
- <string name="permdesc_asec_access" msgid="3094563844593878548">"आन्तरिक भण्डारणमा सूचना प्राप्त गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_asec_create" msgid="6414757234789336327">"आन्तरिक भण्डारण सिर्जना गर्नुहोस्"</string>
- <string name="permdesc_asec_create" msgid="4558869273585856876">"आन्तरिक भण्डारण सिर्जना गर्नको लागि अनुप्रयोगले अनुमति दिन्छ।"</string>
- <string name="permlab_asec_destroy" msgid="526928328301618022">"आन्तरिक भण्डारण ध्वस्त पार्नुहोस्"</string>
- <string name="permdesc_asec_destroy" msgid="7218749286145526537">"अनुप्रयोगलाई आन्तरिक भण्डारण ध्वस्त पार्न अनुमति दिन्छ।"</string>
- <string name="permlab_asec_mount_unmount" msgid="8877998101944999386">"आन्तरिक भण्डारणलाई माउन्ट/अनमाउन्ट गर्नुहोस्"</string>
- <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"अनुप्रयोगलाई आन्तरिक भण्डारण माउन्ट/अनमाउन्ट गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_asec_rename" msgid="7496633954080472417">"आन्तरिक भण्डारणको पुन:नामाकरण गर्नुहोस्"</string>
- <string name="permdesc_asec_rename" msgid="1794757588472127675">"आन्तरीक भण्डारणको पुननामाकरण गर्नको लागि अनुप्रयोगले अनुमति दिन्छ।"</string>
- <string name="permlab_vibrate" msgid="7696427026057705834">"कम्पन नियन्त्रण गर्नुहोस्"</string>
- <string name="permdesc_vibrate" msgid="6284989245902300945">"अनुप्रयोगलाई भाइब्रेटर नियन्त्रण गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_flashlight" msgid="2155920810121984215">"फ्ल्यासलाईट नियन्त्रण गर्नुहोस्"</string>
- <string name="permdesc_flashlight" msgid="6522284794568368310">"फ्ल्यास प्रकाशलाई नियन्त्रण गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_manageUsb" msgid="1113453430645402723">"USB उपकरणहरूको लागि प्राथमिकताहरू र अनुमतिहरू प्रबन्ध गर्नुहोस्"</string>
- <string name="permdesc_manageUsb" msgid="7776155430218239833">"USB उपकरणहरूको लागि प्राथमिकताहरू र अनुमतिहरूलाई व्यवस्थापन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_accessMtp" msgid="4953468676795917042">"MTP प्रोटोकल कार्यान्वयन गर्नुहोस्"</string>
- <string name="permdesc_accessMtp" msgid="6532961200486791570">"MTP USB प्रोटोकल कार्यान्वयन गर्न केर्नल MTP ड्राइभरको पहुँचको अनुमति दिन्छ।"</string>
- <string name="permlab_hardware_test" msgid="4148290860400659146">"हार्डवेयर परीक्षण गर्नुहोस्"</string>
- <string name="permdesc_hardware_test" msgid="6597964191208016605">"हार्डवेयर परीक्षणको उद्देश्यका लागि विभिन्न परिधीयहरूलाई नियन्त्रण गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_callPhone" msgid="3925836347681847954">"फोन नम्बरहरूमा सिधै कल गर्नुहोस्"</string>
- <string name="permdesc_callPhone" msgid="3740797576113760827">"तपाईँको हस्तक्षेप बेगरै फोन नम्बर कल गर्न अनुप्रयोगलाई अनुमति दिन्छ। यसले अनपेक्षित शुल्क वा कलहरू गराउन सक्छ। यसले अनुप्रयोगलाई आपतकालीन नम्बरहरू कल गर्न अनुमति दिँदैन विचार गर्नुहोस्। खराब अनुप्रयोगहरूले तपाईँको स्वीकार बिना कलहरू गरेर तपाईँलाई बढी पैसा तिराउन सक्छ।"</string>
- <string name="permlab_callPrivileged" msgid="4198349211108497879">"कुनै पनि फोन नम्बरहरू सिधै कल गर्नुहोस्"</string>
- <string name="permdesc_callPrivileged" msgid="1689024901509996810">"कुनै पनि फोन नम्बरमा, आकस्मिक नम्बर सहित, तपाईँको हस्तक्षेप बिना कल गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले अनावश्यक र गैर कानुनी कलहरूलाई आकस्मिकमा स्थानान्तरण गर्न सक्छन्।"</string>
- <string name="permlab_performCdmaProvisioning" product="tablet" msgid="4842576994144604821">"CDMA ट्याब्लेट सेटअफ सिधै सुरु गर्नुहोस्"</string>
- <string name="permlab_performCdmaProvisioning" product="default" msgid="5604848095315421425">"CDMA फोन सेटअप सिधै सुरु गर्नुहोस्"</string>
- <string name="permdesc_performCdmaProvisioning" msgid="1994193538802314186">"अनुप्रयोगलाई CDMA प्रावधान सुरu गर्न अनुमति दिन्छ। खराब अनुप्रयोगहरूले अनावश्यक रूपमा CDMA प्रावधान सुरु गर्न सक्छन्।"</string>
- <string name="permlab_locationUpdates" msgid="7785408253364335740">"स्थान अपडेट सूचनाहरू नियन्त्रण गर्नुहोस्"</string>
- <string name="permdesc_locationUpdates" msgid="1120741557891438876">"रेडियोबाट स्थान अद्यावधिक सूचनाहरूलाई सक्षम/असक्षम गर्न अनुप्रयोगलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूबाट प्रयोग नहुने।"</string>
- <string name="permlab_checkinProperties" msgid="7855259461268734914">"परीक्षण विशेषताहरू पहुँच गर्नुहोस्"</string>
- <string name="permdesc_checkinProperties" msgid="4024526968630194128">"परीक्षण सेवाद्वारा विशेषता अपलोड भएको पहुँच पढ्न/लेख्‍न अनुप्रयोगलाई अनुमति दिन्छ। साधारण अनुप्रयोगद्वारा प्रयोगको लागि होइन।"</string>
- <string name="permlab_bindGadget" msgid="776905339015863471">"विजेटहरूको चयन गर्नुहोस्"</string>
- <string name="permdesc_bindGadget" msgid="8261326938599049290">"अनुप्रयोगलाई प्रणालीलाई कुन विजेट कुन अनुप्रयोगद्वारा प्रयोग गर्न सकिन्छ भनेर अनुमति दिन्छ। यस अनुमतिसहितको अनुप्रयोगले अन्य अनुप्रयोगहरूलाई व्यक्तिगत डेटाको पहुँच दिन सक्दछ। सामान्य अनुप्रयोगहरूको प्रयोगको लागि होइन।"</string>
- <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"फोनको स्थिति परिमार्जन गर्नुहोस्"</string>
- <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"उपकरणका फोन विशेषताहरूलाई नियन्त्रण गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। यस अनुमतिले एउटा अनुप्रयोगले नेटवर्क स्विच गर्न, फोन रेडियो बन्द गर्न र खोल्न र जस्तै तपाईँ सधै सूचित नगरी गर्न सक्छ।"</string>
- <string name="permlab_readPhoneState" msgid="9178228524507610486">"फोन स्थिति र पहिचान पढ्नुहोस्"</string>
- <string name="permdesc_readPhoneState" msgid="1639212771826125528">"उपकरणको फोन विशेषताहरूको पहुँच गर्न अनुप्रयोगलाई अनुमति दिन्छ। यस अनुमतिले फोन नम्बर र उपकरणको IDs, कल सक्षम छ कि छैन र कलद्वारा जोडिएको टाढाको नम्बर निर्धारण गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"ट्याब्लेटलाई निन्द्रामा जानबाट रोक्नुहोस्"</string>
- <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"फोनलाई निदाउनबाट रोक्नुहोस्"</string>
- <string name="permdesc_wakeLock" product="tablet" msgid="7311319824400447868">"ट्याब्लेटलाई निस्क्रिय हुनबाट रोक्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_wakeLock" product="default" msgid="8559100677372928754">"फोनलाई निस्क्रिय हुनबाट रोक्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_devicePower" product="tablet" msgid="2787034722616350417">"ट्याब्लेट पावर खोल्न र बन्द गर्नुहोस्"</string>
- <string name="permlab_devicePower" product="default" msgid="4928622470980943206">"फोन खोल्न वा बन्द गर्न उर्जा प्रदान गर्नुहोस"</string>
- <string name="permdesc_devicePower" product="tablet" msgid="6689862878984631831">"ट्याब्लेटलाई खोल्न र बन्द गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_devicePower" product="default" msgid="6037057348463131032">"अनुप्रयोगलाई फोन खोल्न र बन्द गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_factoryTest" msgid="3715225492696416187">"फ्याक्ट्रि परीक्षण मोडमा चालु गर्नुहोस्"</string>
- <string name="permdesc_factoryTest" product="tablet" msgid="3952059318359653091">"ट्याब्लेट हार्डवेयरलाई पुरा पहुँच गर्न दिँदै तल्लो स्तर उत्त्पादक परीक्षणको रूपमा चलाउनुहोस्। ट्याब्लेट उत्त्पादक परीक्षण मोडमा चलिरहेको बेला मात्र उपलब्ध हुन्छ।"</string>
- <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"तल्लो स्तर उत्त्पादक जस्तै चलाउनुहोस्, पुरा पहुँच दिन फोन हार्डवेयरलाई अनुमति हुन्छ। फोन उत्पादक परीक्षण मोडमा चलिरहेको बेला मात्र उपलब्ध हुन्छ।"</string>
- <string name="permlab_setWallpaper" msgid="6627192333373465143">"वालपेपर सेट गर्नुहोस्"</string>
- <string name="permdesc_setWallpaper" msgid="7373447920977624745">"अनुप्रयोगलाई प्रणाली वालपेपर सेट गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"तपाईंको वालपेपर आकार समायोजन गर्नुहोस्"</string>
- <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"प्रणाली वालपेपरको आकार सङ्केतहरू मिलाउन अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_masterClear" msgid="2315750423139697397">"कार्यशाला पूर्वनिर्धारणको लागि प्रणाली पुनःसेट गर्नुहोस्"</string>
- <string name="permdesc_masterClear" msgid="3665380492633910226">"यसका फ्याक्ट्रि सेटिङहरू, कन्फिगरेसन र स्थापित अनुप्रयोगहरूलाई प्रणालीमा पुरै पुनःसेट गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_setTime" msgid="2021614829591775646">"समय सेट गर्नुहोस्"</string>
- <string name="permdesc_setTime" product="tablet" msgid="1896341438151152881">"ट्याब्लेटको घडीको समय बदल्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_setTime" product="default" msgid="1855702730738020">"फोनको घडीको समय बदल्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_setTimeZone" msgid="2945079801013077340">"समय क्षेत्र सेट गर्नुहोस्"</string>
- <string name="permdesc_setTimeZone" product="tablet" msgid="1676983712315827645">"अनुप्रयोगलाई ट्याब्लेटको समय क्षेत्र परिवर्तन गर्न अनुमति दिन्छ।"</string>
- <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"अनुप्रयोगलाई फोनको समय क्षेत्र परिवर्तन गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_accountManagerService" msgid="4829262349691386986">"AccountManagerService को रूपमा कार्य गर्नुहोस्"</string>
- <string name="permdesc_accountManagerService" msgid="1948455552333615954">"खाता अधिकारीहरूलाई कल गर्नको लागि अनुप्रयोगले अनुमति दिन्छ।"</string>
- <string name="permlab_getAccounts" msgid="1086795467760122114">"उपकरणमा खाताहरू भेट्टाउनुहोस्"</string>
- <string name="permdesc_getAccounts" product="tablet" msgid="2741496534769660027">"अनुप्रयोगलाई ट्याब्लेटद्वारा ज्ञात खाताहरूको सूची पाउन अनुमति दिन्छ। यसले अनुप्रयोगद्वारा तपाईंले स्थापित गर्नुभएको कुनै पनि खाताहरू समावेश गर्न सक्दछ।"</string>
- <string name="permdesc_getAccounts" product="default" msgid="3448316822451807382">"फोनलाई थाहा भएका खाताहरूको सूची प्राप्त गर्न अनुप्रयोगलाई अनुमति दिन्छ। यसले तपाईँले स्थापना गर्नु भएका अनुप्रयोगहरूबाट सृजित कुनै खाताहरू समावेश हुन सक्छ।"</string>
- <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"खाता सिर्जना गर्नुहोस् र पासवर्ड सेट गर्नुहोस्"</string>
- <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"खाताहरूको सिर्जना गर्ने र प्राप्त गर्ने र उनीहरूको पासवर्डहरूको सेटिङ गर्ने सहित खाता प्रबन्धकको खाता आधिकारी सक्षमताहरू प्रयोग गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_manageAccounts" msgid="4983126304757177305">"खाताहरू थप्नुहोस् वा हटाउनुहोस्"</string>
- <string name="permdesc_manageAccounts" msgid="8698295625488292506">"खाताहरू थप्ने र हटाउने जस्ता प्रक्रियाहरू सम्पन्न गर्न, र उनीहरूको पासवर्ड मेटाउन अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_useCredentials" msgid="235481396163877642">"उपकरणमा खाताहरूको प्रयोग गर्नुहोस्"</string>
- <string name="permdesc_useCredentials" msgid="7984227147403346422">"अनुप्रयोगलाई प्रमाणीकरण टोकनहरू अनुरोध गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_accessNetworkState" msgid="4951027964348974773">"नेटवर्क जडानहरू हेर्नहोस्"</string>
- <string name="permdesc_accessNetworkState" msgid="8318964424675960975">"अनुप्रयोगलाई नेटवर्क जडानहरू जस्तै कुन नेटवर्कहरू अवस्थित हुन्छन् र जडित छन् जसले हेर्नलाई अनुमति दिन्छ।"</string>
- <string name="permlab_createNetworkSockets" msgid="8018758136404323658">"पूर्ण नेटवर्क पहुँच"</string>
- <string name="permdesc_createNetworkSockets" msgid="3403062187779724185">"नेटवर्क सकेटहरू सिर्जना गर्न र कस्टम नेटवर्क प्रोटोकल प्रयोग गर्न अनुप्रयोगलाई अनुमति दिन्छ। ब्राउजर र अन्य अनुप्रयोगहरूले इन्टरनेटमा डेटा पठाउने माध्यम प्रदान गर्छन्, त्यसैले इन्टरनेटमा डेटा पठाउन यो अनुमतिको आवश्यकता पर्दैन।"</string>
- <string name="permlab_writeApnSettings" msgid="505660159675751896">"नेटवर्क सेटिङहरू र ट्राफिक परिवर्तन गर्नुहोस् / रोक्नुहोस्"</string>
- <string name="permdesc_writeApnSettings" msgid="5333798886412714193">"अनुप्रयोगलाई नेटवर्क सेटिङहरू परिवर्तन गर्न र सबै नेटवर्क ट्राफिक रोक्न र परीक्षण गर्न अनुमति दिन्छ, उदाहरणको लागि कुनै पनि APN को प्रोक्सी र पोर्ट परिवर्तन गर्न। खराब अनुप्रयोगहरूले तपाईंको ज्ञान बिना नेटवर्क प्याकेटहरू मोनिटर गर्न, पुन:निर्देशित गर्न, वा परिमार्जन गर्न सक्दछ।"</string>
- <string name="permlab_changeNetworkState" msgid="958884291454327309">"नेटवर्क जडान परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_changeNetworkState" msgid="6789123912476416214">"अनुप्रयोगलाई नेटवर्क जडानको स्थिति परिवर्तन गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_changeTetherState" msgid="5952584964373017960">"टेथर्ड नेटवर्क जडान परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_changeTetherState" msgid="1524441344412319780">"टिथर गरेको नेटवर्क जडानको स्थिति बदल्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"पृष्ठभूमि डेटा प्रयोग सेटिङहरू परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"अनुप्रयोगलाई पृष्ठभूमि डेटा उपयोग सेटिङ परिवर्तन गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_accessWifiState" msgid="5202012949247040011">"वाइ-फाइ जडानहरू हेर्नुहोस्"</string>
- <string name="permdesc_accessWifiState" msgid="5002798077387803726">"अनुप्रयोगलाई वाइ-फाइ नेटवर्कको बारेमा जानकारी हेर्न अनुमति दिन्छ, जस्तै कि वाइ-फाइ सक्षम छ कि छैन र जडान गरिएको वाइ-फाइ उपकरणहरूको नाम।"</string>
- <string name="permlab_changeWifiState" msgid="6550641188749128035">"वाइ-फाइसँग जोड्नुहोस् वा छुटाउनुहोस्"</string>
- <string name="permdesc_changeWifiState" msgid="7137950297386127533">"अनुप्रयोगलाई वाइ-फाइ पहुँच बिन्दुबाट जडान गर्न र विच्छेदन गर्न र वाइ-फाइ नेटवर्कहरूको लागि उपकरण कन्फिगरेसनमा परिवर्तनहरू गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"वाइ-फाइ Multicast स्विकृतिलाई अनुमति दिनुहोस्"</string>
- <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"अनुप्रयोगलाई मल्टिकाष्ट ठेगानाहरू प्रयोग गरेर वाइ-फाइ नेटवर्कमा पठाइएको प्याकेटहरू प्राप्त गर्न अनुमति दिन्छ, केवल तपाईंको ट्याब्लेट मात्र होइन। यसले गैर-मल्टिकाष्ट मोड भन्दा बढी उर्जा प्रयोग गर्दछ।"</string>
- <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"तपाईँको फोन मात्र होइन, मल्टिकास्ट ठेगानाहरूको प्रयोग गरे वाइ-फाइ नेटवर्कका सबै उपकरणहरूमा पठाइएका प्याकेटहरू प्राप्त गर्न अनुप्रयोगलाई अनुमति दिन्छ। यसले गैर-मल्टिकास्ट मोडभन्दा बढी उर्जा प्रयोग गर्छ।"</string>
- <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"ब्लुटुथ सेटिङहरूमा पहुँच गर्नुहोस्"</string>
- <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"स्थानीय ब्लुटुथ ट्याब्लेटलाई कन्फिगर गर्नको लागि र टाढाका उपकरणहरूलाई पत्ता लगाउन र जोड्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"अनुप्रयोगलाई स्थानीय ब्लुटुथ फोन कन्फिगर गर्न र टाढाका उपकरणहरूसँग खोज गर्न र जोडी गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_accessWimaxState" msgid="4195907010610205703">"WiMAXसँग जोड्नुहोस् वा छुटाउनुहोस्"</string>
- <string name="permdesc_accessWimaxState" msgid="6360102877261978887">"अनुप्रयोगलाई वाइम्याक्स सक्षम छ कि छैन र जडान भएको कुनै पनि वाइम्याक्स नेटवर्कहरूको बारेमा जानकारी निर्धारिण गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_changeWimaxState" msgid="2405042267131496579">"वाइम्याक्स स्थिति परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"अनुप्रयोगलाई वाइम्याक्स नेटवर्कहरूबाट ट्याब्लेट जडान गर्न र ट्याब्लेट विच्छेदन गर्न अनुमति दिन्छ।"</string>
- <string name="permdesc_changeWimaxState" product="default" msgid="697025043004923798">"वाइम्याक्स नेटवर्कहरूसँग फोन जोड्न र छुटाउन अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_bluetooth" msgid="6127769336339276828">"ब्लुटुथ उपकरणहरूसँग जोडी मिलाउनुहोस्"</string>
- <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"ट्याब्लेटमा ब्लुटुथको कन्फिगुरेसनलाई हेर्न र बनाउन र जोडी उपकरणहरूसँग जडानहरूलाई स्वीकार गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"अनुप्रयोगलाई फोनमा ब्लुटुथको कन्फिगरेसन हेर्न र जोडी भएका उपकरणहरूसँग जडानहरू बनाउन र स्वीकार गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_nfc" msgid="4423351274757876953">"नजिक क्षेत्र संचार नियन्त्रणहरू"</string>
- <string name="permdesc_nfc" msgid="7120611819401789907">"अनुप्रयोगलाई नयाँ क्षेत्र संचार (NFC) ट्यागहरू, कार्डहरू र पाठकहरूसँग अन्तर्क्रिया गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_disableKeyguard" msgid="3598496301486439258">"स्क्रिन लक असक्षम पार्नुहोस्"</string>
- <string name="permdesc_disableKeyguard" msgid="6034203065077122992">"कुनै सम्बन्धित पासवर्ड सुरक्षा र किलकलाई असक्षम पार्न अनुप्रयोगलाई अनुमति दिन्छ। उदाहरणको लागि, अन्तर्गमन फोन कल प्राप्त गर्दा फोनले किलकलाई असक्षम पार्छ, त्यसपछि कल सकिएको बेला किलक पुनःसक्षम पार्छ।"</string>
- <string name="permlab_readSyncSettings" msgid="6201810008230503052">"समीकरण सेटिङहरू पढ्नुहोस्"</string>
- <string name="permdesc_readSyncSettings" msgid="2706745674569678644">"अनुप्रयोगलाई खाताको लागि सिङ्क सेटिङहरू पढ्न अनुमति दिन्छ। उदाहरणको लागि यसले व्यक्तिहरको अनुप्रयोग खातासँग सिङ्क भएको नभएको निर्धारण गर्न सक्दछ।"</string>
- <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"टगल सिङ्क खुला र बन्द"</string>
- <string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"अनुप्रयोगहरूलाई खाताको लागि सिङ्क सेटिङहरू परिमार्जन गर्न अनुमति दिन्छ। उदाहरणको लागि, यो खातासँग व्यक्ति अनुप्रयोगको सिङ्क सक्षम गर्न प्रयोग गर्न सकिन्छ।"</string>
- <string name="permlab_readSyncStats" msgid="7396577451360202448">"सिङ्क तथ्याङ्कहरू पढ्नुहोस्"</string>
- <string name="permdesc_readSyncStats" msgid="1510143761757606156">"अनुप्रयोगलाई खाताको लागि समीकरणको आँकडा समीकरण घटनाहरूको इतिहास र समीकरण गरिएको डेटाको मापन समेत, पढ्न अनुमति दिन्छ।"</string>
- <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"सदस्य बनाइका फिडहरू पढ्नुहोस्"</string>
- <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"अनुप्रयोगलाई अहिलेको समीकरण गरिएका सूचकहरू बारे विवरणहरू लिने अनुमति दिन्छ।"</string>
- <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"सदस्य बनाइका फिडहरू लेख्नुहोस्"</string>
- <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"तपाईँका भर्खरै सिङ्क फिडहरूलाई परिमार्जन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। तपाईँको सिङ्क फिडहरूलाई परिवर्तन गर्नको लागि यसले खराब अनुप्रयोगलाई अनुमति दिन सक्छ।"</string>
- <string name="permlab_readDictionary" msgid="4107101525746035718">"तपाईँले शब्दकोशमा थपेका शब्दहरू पढ्नुहोस्"</string>
- <string name="permdesc_readDictionary" msgid="659614600338904243">"अनुप्रयोगलाई प्रयोगकर्ताले प्रयोगकर्ता शब्दकोशमा भण्डारण गरेका हुन सक्ने सबै शब्दहरू, नामहरू र पदावलीहरू पढ्न अनुमति दिन्छ।"</string>
- <string name="permlab_writeDictionary" msgid="2183110402314441106">"प्रयोगकर्ता-परिभाषित शब्दकोशमा शब्दहरू थप्नुहोस्।"</string>
- <string name="permdesc_writeDictionary" msgid="8185385716255065291">"प्रयोगकर्ता शब्दकोशमा नयाँ शब्द लेख्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_sdcardRead" product="nosdcard" msgid="8235341515605559677">"सुरक्षित गरिएका भण्डारण पहुँचको परीक्षण गर्नुहोस्"</string>
- <string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"सुरक्षित गरिएका भण्डारण पहुँचको परीक्षण गर्नुहोस्"</string>
- <string name="permdesc_sdcardRead" product="nosdcard" msgid="3642473292348132072">"भविष्य उपकरणहरूमा उपलब्ध हुने USB भण्डारणको लागि अनुमति परीक्षण गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_sdcardRead" product="default" msgid="5914402684685848828">"भविष्य उपकरणहरूमा उपलब्ध हुने SD कार्डको लागि अनुमति परीक्षण गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"तपाईँको USB भण्डारणको विषयवस्तुहरूलाई परिमार्जन गर्नुहोस् वा मेटाउनुहोस्"</string>
- <string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"तपाईँको SD कार्डको विषयसूची परिमार्जन गर्नुहोस् वा मेट्नुहोस्"</string>
- <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"USB भण्डारणमा लेख्‍नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"अनुप्रयोगलाई SD कार्डमा लेख्न अनुमति दिन्छ।"</string>
- <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"आन्तरिक मिडिया भण्डारण सामग्रीहरू परिमार्जन गर्नुहोस्/मेटाउनुहोस्"</string>
- <string name="permdesc_mediaStorageWrite" product="default" msgid="8189160597698529185">"अनुप्रयोगलाई आन्तरिक मिडिया भण्डारणको सामग्रीहरू परिमार्जन गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_manageDocs" product="default" msgid="5778318598448849829">"कागजात भण्डारण प्रबन्ध गर्नुहोस्"</string>
- <string name="permdesc_manageDocs" product="default" msgid="8704323176914121484">"अनुप्रयोगलाई कागजात भण्डारण समायोजन गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_sdcardAccessAll" msgid="8150613823900460576">"सबै उपयोगकर्ताहरूको बाह्य भण्डारणको पहुँच राख्नुहोस्"</string>
- <string name="permdesc_sdcardAccessAll" msgid="3215208357415891320">"अनुप्रयोगलाई सबै उपयोगकर्ताहरूको लागि बाह्य भण्डारणमाथि पहुँच राख्न अनुमति दिन्छ।"</string>
- <string name="permlab_cache_filesystem" msgid="5656487264819669824">"क्यास फाइल प्रणाली पहुँच गर्नुहोस्।"</string>
- <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"केस फाइल प्रणालीलाई पढ्न र लेख्‍नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_use_sip" msgid="5986952362795870502">"इन्टरनेट कलहरू गर्नुहोस् वा प्राप्त गर्नुहोस्"</string>
- <string name="permdesc_use_sip" msgid="4717632000062674294">"इन्टरनेट कल गर्न/प्राप्त गर्न SIP सेवालाई प्रयोग गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_readNetworkUsageHistory" msgid="7862593283611493232">"नेटवर्क उपयोगको इतिहास पढ्नुहोस्"</string>
- <string name="permdesc_readNetworkUsageHistory" msgid="7689060749819126472">"निश्चित नेटवर्कहरू र अनुप्रयोगहरूको लागि ऐतिहासिक नेटवर्क उपयोग पढ्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_manageNetworkPolicy" msgid="2562053592339859990">"नेटवर्क नीति प्रबन्ध गर्नुहोस्"</string>
- <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"नेटवर्क नीतिहरू व्यवस्थापन गर्न र अनुप्रयोग-विशेष नियमहरू परिभाषित गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"नेटवर्क उपयोग लेखालाई परिमार्जन गर्नुहोस्"</string>
- <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"अनुप्रयोगलाई कसरी अनुप्रयोगहरूको विरूद्धमा कसरी नेटवर्क उपयोगी अकाउन्टेड छ भनेर परिमार्जन गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूद्वारा प्रयोगको लागि होइन।"</string>
- <string name="permlab_markNetworkSocket" msgid="3658527214914959749">"सकेटको निशानहरू परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_markNetworkSocket" msgid="7655568433696356578">"मार्ग दर्शनको लागि अनुप्रयोगलाई सकेटको निशानहरू परिवर्तन गर्न अनुमति दिन्छ"</string>
- <string name="permlab_accessNotifications" msgid="7673416487873432268">"सूचनाहरू पहुँच गर्नुहोस्"</string>
- <string name="permdesc_accessNotifications" msgid="458457742683431387">"अन्य अनुप्रयोगहरूबाट पोस्ट गरिएकासहित पुनःप्राप्त गर्न, परीक्षण गर्न र सूचनाहरू हटाउन अनुप्रयोगहरूलाई अनुमति दिन्छ।"</string>
- <string name="permlab_bindNotificationListenerService" msgid="7057764742211656654">"जानकारी श्रोता सेवामा बाँध्नुहोस्"</string>
- <string name="permdesc_bindNotificationListenerService" msgid="985697918576902986">"होल्डरलाई सूचना श्रोता सेवाको शीर्ष-स्तरको इन्टरफेस बाँध्न अनुमति दिन्छ। सामान्य अनुप्रयोगहरूलाई कहिले पनि आवश्यक नपर्न सक्दछ।"</string>
- <string name="permlab_invokeCarrierSetup" msgid="3699600833975117478">"वाहक-प्रदान विन्यास अनुप्रयोग सुरु गर्नुहोस्"</string>
- <string name="permdesc_invokeCarrierSetup" msgid="4159549152529111920">"प्रयोगकर्तालाई वाहक-प्रदान विन्यास अनुप्रयोग सुरु गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्ने छैन।"</string>
- <string name="permlab_accessNetworkConditions" msgid="8206077447838909516">"सञ्जाल अवस्थाका पर्यवेक्षणका लागि सुन्नुहोस्"</string>
- <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"सञ्जाल अवस्थाका पर्यवेक्षण सुन्नका लागि अनुप्रयोगलाई अनुमति दिन्छ।सामान्य अनुप्रयोगलाई चाँहिदै नचाँहिन सक्छ।"</string>
- <string name="policylab_limitPassword" msgid="4497420728857585791">"पासवर्ड नियमहरू मिलाउनुहोस्"</string>
- <string name="policydesc_limitPassword" msgid="3252114203919510394">"स्क्रिन-अनलक पासवर्डहरूमा अनुमति दिइएको लम्बाइ र अक्षरहरू नियन्त्रण गर्नुहोस्।"</string>
- <string name="policylab_watchLogin" msgid="914130646942199503">"मोनिटर स्क्रिन-अनलक प्रयत्नहरू"</string>
- <string name="policydesc_watchLogin" product="tablet" msgid="3215729294215070072">"स्क्रिन अनलक गर्दा गलत पासवर्ड टाइप भएको संख्या निरीक्षण गर्नुहोस् र यदि निकै धेरै गलत पासवर्डहरू टाइप भएका छन भने ट्याब्लेट लक गर्नुहोस् वा ट्याब्लेटका सबै डेटा मेट्नुहोस्।"</string>
- <string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"स्क्रिनअनलक गर्दा गलत पासवर्ड टाइप भएको संख्या निरीक्षण गर्नुहोस् र यदि निकै धेरै गलत पासवर्डहरू टाइप भएका छन भने फोन लक गर्नुहोस् वा फोनका सबै डेटा मेट्नुहोस्।"</string>
- <string name="policylab_resetPassword" msgid="2620077191242688955">"स्क्रिन-अनलक पासवर्ड बदल्नुहोस्"</string>
- <string name="policydesc_resetPassword" msgid="605963962301904458">"स्क्रिन-अनलक पासवर्ड परिवर्तन गर्नुहोस्।"</string>
- <string name="policylab_forceLock" msgid="2274085384704248431">"स्क्रिन लक गर्नुहोस्।"</string>
- <string name="policydesc_forceLock" msgid="1141797588403827138">"कसरी र कहिले स्क्रिन लक गर्ने नियन्त्रण गर्नुहोस्।"</string>
- <string name="policylab_wipeData" msgid="3910545446758639713">"सबै डेटा मेट्नुहोस्"</string>
- <string name="policydesc_wipeData" product="tablet" msgid="4306184096067756876">"एउटा फ्याक्ट्रि डेटा पुनःसेट गरेर चेतावनी नआउँदै ट्याबल्टको डेटा मेट्नुहोस्।"</string>
- <string name="policydesc_wipeData" product="default" msgid="5096895604574188391">"एउटा फ्याक्ट्रि डेटा पुनःसेट गरेर चेतावनी नआउँदै फोनको डेटा मेट्नुहोस्।"</string>
- <string name="policylab_setGlobalProxy" msgid="2784828293747791446">"उपकरण विश्वव्यापी प्रोक्सी मिलाउनुहोस्"</string>
- <string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"नीति सक्षम हुँदा प्रयोग हुने उपकरण विश्वव्यापी प्रोक्सी सेट गर्नुहोस्। प्रथम उपकरण प्रशासशनले मात्र प्रभावकारी विश्वव्यापी प्रोक्सी सेट गर्छ।"</string>
- <string name="policylab_expirePassword" msgid="885279151847254056">"लक-स्क्रिन पासवर्ड अन्त सेट गर्नुहोस्"</string>
- <string name="policydesc_expirePassword" msgid="1729725226314691591">"प्रायः कति छिटो लक-स्क्रिन पासवर्ड बदल्नु पर्छ यसलाई नियन्त्रण गर्नुहोस्।"</string>
- <string name="policylab_encryptedStorage" msgid="8901326199909132915">"भण्डारण इन्क्रिप्सन मिलाउनुहोस्"</string>
- <string name="policydesc_encryptedStorage" msgid="2637732115325316992">"भण्डार गरिएको डेटा इन्क्रिप्ट हुनु आवश्यक छ।"</string>
- <string name="policylab_disableCamera" msgid="6395301023152297826">"क्यामेरालाई असक्षम गराउनुहोस्"</string>
- <string name="policydesc_disableCamera" msgid="2306349042834754597">"सबै उपकरण क्यामराहरूको प्रयोग रोक्नुहोस्"</string>
- <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"किगार्डमा भएका विशेषताहरू असक्षम पार्नुहोस्"</string>
- <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"केही किगार्ड विशेषताहरूको प्रयोग रोक्नुहोस्।"</string>
- <string-array name="phoneTypes">
- <item msgid="8901098336658710359">"गृह"</item>
- <item msgid="869923650527136615">"मोबाइल"</item>
- <item msgid="7897544654242874543">"काम गर्नुहोस्"</item>
- <item msgid="1103601433382158155">"कार्य फ्याक्स"</item>
- <item msgid="1735177144948329370">"घरको फ्याक्स"</item>
- <item msgid="603878674477207394">"पेजर"</item>
- <item msgid="1650824275177931637">"अन्य"</item>
- <item msgid="9192514806975898961">"अनुकूलन"</item>
- </string-array>
- <string-array name="emailAddressTypes">
- <item msgid="8073994352956129127">"गृह"</item>
- <item msgid="7084237356602625604">"काम"</item>
- <item msgid="1112044410659011023">"अन्य"</item>
- <item msgid="2374913952870110618">"अनुकूलन"</item>
- </string-array>
- <string-array name="postalAddressTypes">
- <item msgid="6880257626740047286">"गृह"</item>
- <item msgid="5629153956045109251">"काम"</item>
- <item msgid="4966604264500343469">"अन्य"</item>
- <item msgid="4932682847595299369">"अनुकूलन"</item>
- </string-array>
- <string-array name="imAddressTypes">
- <item msgid="1738585194601476694">"गृह"</item>
- <item msgid="1359644565647383708">"काम"</item>
- <item msgid="7868549401053615677">"अन्य"</item>
- <item msgid="3145118944639869809">"अनुकूलन"</item>
- </string-array>
- <string-array name="organizationTypes">
- <item msgid="7546335612189115615">"काम गर्नुहोस्"</item>
- <item msgid="4378074129049520373">"अन्य"</item>
- <item msgid="3455047468583965104">"अनुकूलन"</item>
- </string-array>
- <string-array name="imProtocols">
- <item msgid="8595261363518459565">"AIM"</item>
- <item msgid="7390473628275490700">"Windows Live"</item>
- <item msgid="7882877134931458217">"Yahoo"</item>
- <item msgid="5035376313200585242">"स्काइप"</item>
- <item msgid="7532363178459444943">"QQ"</item>
- <item msgid="3713441034299660749">"Google Talk"</item>
- <item msgid="2506857312718630823">"ICQ"</item>
- <item msgid="1648797903785279353">"Jabber"</item>
- </string-array>
- <string name="phoneTypeCustom" msgid="1644738059053355820">"अनुकूलन"</string>
- <string name="phoneTypeHome" msgid="2570923463033985887">"गृह"</string>
- <string name="phoneTypeMobile" msgid="6501463557754751037">"मोबाइल"</string>
- <string name="phoneTypeWork" msgid="8863939667059911633">"काम"</string>
- <string name="phoneTypeFaxWork" msgid="3517792160008890912">"कार्य फ्याक्स"</string>
- <string name="phoneTypeFaxHome" msgid="2067265972322971467">"घरको फ्याक्स"</string>
- <string name="phoneTypePager" msgid="7582359955394921732">"पेजर"</string>
- <string name="phoneTypeOther" msgid="1544425847868765990">"अन्य"</string>
- <string name="phoneTypeCallback" msgid="2712175203065678206">"कलब्याक"</string>
- <string name="phoneTypeCar" msgid="8738360689616716982">"कार"</string>
- <string name="phoneTypeCompanyMain" msgid="540434356461478916">"कम्पनी मुख्य"</string>
- <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
- <string name="phoneTypeMain" msgid="6766137010628326916">"मुख्य"</string>
- <string name="phoneTypeOtherFax" msgid="8587657145072446565">"अन्य फ्याक्स"</string>
- <string name="phoneTypeRadio" msgid="4093738079908667513">"रेडियो"</string>
- <string name="phoneTypeTelex" msgid="3367879952476250512">"टेलेक्स"</string>
- <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
- <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"कार्य मोबाइल"</string>
- <string name="phoneTypeWorkPager" msgid="649938731231157056">"कार्य पेजर"</string>
- <string name="phoneTypeAssistant" msgid="5596772636128562884">"सहायक"</string>
- <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
- <string name="eventTypeCustom" msgid="7837586198458073404">"अनुकूलन"</string>
- <string name="eventTypeBirthday" msgid="2813379844211390740">"जन्मदिन"</string>
- <string name="eventTypeAnniversary" msgid="3876779744518284000">"वार्षिक समारोह"</string>
- <string name="eventTypeOther" msgid="7388178939010143077">"अन्य"</string>
- <string name="emailTypeCustom" msgid="8525960257804213846">"अनुकूलन"</string>
- <string name="emailTypeHome" msgid="449227236140433919">"गृह"</string>
- <string name="emailTypeWork" msgid="3548058059601149973">"काम"</string>
- <string name="emailTypeOther" msgid="2923008695272639549">"अन्य"</string>
- <string name="emailTypeMobile" msgid="119919005321166205">"मोबाइल"</string>
- <string name="postalTypeCustom" msgid="8903206903060479902">"अनुकूलन"</string>
- <string name="postalTypeHome" msgid="8165756977184483097">"गृह"</string>
- <string name="postalTypeWork" msgid="5268172772387694495">"काम"</string>
- <string name="postalTypeOther" msgid="2726111966623584341">"अन्य"</string>
- <string name="imTypeCustom" msgid="2074028755527826046">"अनुकूलन"</string>
- <string name="imTypeHome" msgid="6241181032954263892">"गृह"</string>
- <string name="imTypeWork" msgid="1371489290242433090">"काम"</string>
- <string name="imTypeOther" msgid="5377007495735915478">"अन्य"</string>
- <string name="imProtocolCustom" msgid="6919453836618749992">"अनुकूलन"</string>
- <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
- <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
- <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
- <string name="imProtocolSkype" msgid="9019296744622832951">"स्काइप"</string>
- <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
- <string name="imProtocolGoogleTalk" msgid="493902321140277304">"ह्याङआउटहरू"</string>
- <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
- <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
- <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
- <string name="orgTypeWork" msgid="29268870505363872">"काम"</string>
- <string name="orgTypeOther" msgid="3951781131570124082">"अन्य"</string>
- <string name="orgTypeCustom" msgid="225523415372088322">"अनुकूलन"</string>
- <string name="relationTypeCustom" msgid="3542403679827297300">"अनुकूलन"</string>
- <string name="relationTypeAssistant" msgid="6274334825195379076">"सहायक"</string>
- <string name="relationTypeBrother" msgid="8757913506784067713">"भाइ"</string>
- <string name="relationTypeChild" msgid="1890746277276881626">"बच्चो"</string>
- <string name="relationTypeDomesticPartner" msgid="6904807112121122133">"आन्तरिक साझेदार"</string>
- <string name="relationTypeFather" msgid="5228034687082050725">"बुबा"</string>
- <string name="relationTypeFriend" msgid="7313106762483391262">"मित्र"</string>
- <string name="relationTypeManager" msgid="6365677861610137895">"ब्यवस्थापक"</string>
- <string name="relationTypeMother" msgid="4578571352962758304">"आमा"</string>
- <string name="relationTypeParent" msgid="4755635567562925226">"अभिभावक"</string>
- <string name="relationTypePartner" msgid="7266490285120262781">"पार्टनर"</string>
- <string name="relationTypeReferredBy" msgid="101573059844135524">"द्वारा उल्लिखित"</string>
- <string name="relationTypeRelative" msgid="1799819930085610271">"आफन्त"</string>
- <string name="relationTypeSister" msgid="1735983554479076481">"बहिनी"</string>
- <string name="relationTypeSpouse" msgid="394136939428698117">"पति-पत्नि"</string>
- <string name="sipAddressTypeCustom" msgid="2473580593111590945">"अनुकूलन"</string>
- <string name="sipAddressTypeHome" msgid="6093598181069359295">"गृह"</string>
- <string name="sipAddressTypeWork" msgid="6920725730797099047">"काम गर्नुहोस्"</string>
- <string name="sipAddressTypeOther" msgid="4408436162950119849">"अन्य"</string>
- <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"PIN कोड टाइप गर्नुहोस्"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><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>
- <string name="keyguard_label_text" msgid="861796461028298424">"अनलक गर्न मेनु थिच्नुहोस् र त्यसपछि ० थिच्नुहोस्।"</string>
- <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"आपतकालीन नम्बर"</string>
- <string name="lockscreen_carrier_default" msgid="8963839242565653192">"सेवा छैन।"</string>
- <string name="lockscreen_screen_locked" msgid="7288443074806832904">"स्क्रिन लक गरिएको।"</string>
- <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"अनलक वा आपतकालीन कल गर्न मेनु थिच्नुहोस्।"</string>
- <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"अनलक गर्न मेनु थिच्नुहोस्।"</string>
- <string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"अनलक गर्नु ढाँचा खिच्नुहोस्"</string>
- <string name="lockscreen_emergency_call" msgid="5347633784401285225">"आपतकालीन कलहरू"</string>
- <string name="lockscreen_return_to_call" msgid="5244259785500040021">"कलमा फर्किनुहोस्"</string>
- <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"सही!"</string>
- <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"फेरि प्रयास गर्नुहोस्"</string>
- <string name="lockscreen_password_wrong" msgid="5737815393253165301">"फेरि प्रयास गर्नुहोस्"</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"अत्याधिक मोहडा खोल्ने प्रयासहरू बढी भए।"</string>
- <string name="lockscreen_plugged_in" msgid="8057762828355572315">"चार्ज हुँदै, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_charged" msgid="321635745684060624">"चार्ज भयो"</string>
- <string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_low_battery" msgid="1482873981919249740">"तपाईँको चार्जर जोड्नुहोस्।"</string>
- <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM कार्ड छैन"</string>
- <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ट्याब्लेटमा SIM कार्ड छैन।"</string>
- <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"फोनमा SIM कार्ड छैन।"</string>
- <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"SIM कार्ड घुसाउनुहोस्"</string>
- <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM कार्ड छैन वा पढ्न मिल्दैन। SIM कार्ड हाल्नुहोस्।"</string>
- <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"प्रयोग गर्न अयोग्य SIM कार्ड"</string>
- <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"तपाईंको SIM कार्ड स्थायी रूपमा अक्षम भयो।\n अर्को SIM कार्डको लागि आफनो ताररहित सेवा प्रदायकसँग सम्पर्क गर्नुहोस्।"</string>
- <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"अघिल्लो ट्रयाक बटन"</string>
- <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"अर्को ट्रयाक बटन"</string>
- <string name="lockscreen_transport_pause_description" msgid="7659088786780128001">"रोक्ने बटन"</string>
- <string name="lockscreen_transport_play_description" msgid="5888422938351019426">"बजाउने बटन"</string>
- <string name="lockscreen_transport_stop_description" msgid="4562318378766987601">"बटन रोक्नुहोस्"</string>
- <string name="emergency_calls_only" msgid="6733978304386365407">"आपतकालीन कलहरू मात्र"</string>
- <string name="lockscreen_network_locked_message" msgid="143389224986028501">"नेटवर्क लक छ"</string>
- <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM कार्ड PUK-लक गरिएको छ।"</string>
- <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"प्रयोगकर्ता निर्देशक वा ग्राहक सेवा सम्पर्क हर्नुहोस्।"</string>
- <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"SIM कार्ड लक गरिएको छ।"</string>
- <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"SIM कार्ड अनलक गरिँदै..."</string>
- <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"तपाईँले तपाईँको अनलक ढाँचा गलत तरिकाले <xliff:g id="NUMBER_0">%d</xliff:g> पटक खिच्नु भएको छ। \n\n <xliff:g id="NUMBER_1">%d</xliff:g> सेकेन्डमा फेरि कोसिस गर्नुहोस्।"</string>
- <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="2725973286239344555">"तपाईंले गलत तरिकाले आफ्नो पासवर्ड <xliff:g id="NUMBER_0">%d</xliff:g> पटक टाइप गर्नुभयो। \n\n<xliff:g id="NUMBER_1">%d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
- <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"तपाईँले गलत तरिकाले तपाईँको PIN <xliff:g id="NUMBER_0">%d</xliff:g> पटक टाइप गर्नु भएको छ। \n\n<xliff:g id="NUMBER_1">%d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"तपाईँले तपाईँको अनलक ढाँचा गलत तरिकाले <xliff:g id="NUMBER_0">%d</xliff:g> पटक खिच्नु भएको छ। पछि <xliff:g id="NUMBER_1">%d</xliff:g> थप असफल कोसिसहरू, तपाईँको Google साइन इन प्रयोग गरी तपाईँको ट्याब्लेट अनलक गर्न भनिने छ।\n\n <xliff:g id="NUMBER_2">%d</xliff:g> सेकेन्डमा फरि प्रयास गर्नुहोस्।"</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"तपाईँले <xliff:g id="NUMBER_0">%d</xliff:g> पटक गलत तरिकाले तपाईँको अनलक ढाँचालाई कोर्नु भएको छ। पछि <xliff:g id="NUMBER_1">%d</xliff:g> अरू धेरै असफल कोसिसहरूपछि, तपाईँलाई तपाईँको फोन Google साइन इन प्रयोग गरेर अनलक गर्नको लागि सोधिने छ। \n\n <xliff:g id="NUMBER_2">%d</xliff:g> सेकेन्डमा पुनः प्रयास गर्नुहोस्।"</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"तपाईँले <xliff:g id="NUMBER_0">%d</xliff:g> पटक ट्याब्लेटलाई अनलक गर्नको लागि गलत तरिकाले कोशिस गर्नुभएको छ। <xliff:g id="NUMBER_1">%d</xliff:g> अरू धेरै असफल कोसिसहरूपछि, ट्याब्लेट फ्याट्रि पूर्वनिर्धारितमा पुनःसेट हुने छ र सबै प्रयोगकर्ता डेटा हराउने छन्।"</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"तपाईंले गलत तरिकाले <xliff:g id="NUMBER_0">%d</xliff:g> पटक फोन अनलक गर्ने प्रयत्न गर्नुभयो। <xliff:g id="NUMBER_1">%d</xliff:g> बढी असफल प्रयत्नहरू पछि, फोन फ्याक्ट्रि पूर्वनिर्धारितमा पुनःसेट हुने छ र सबै प्रयोगकर्ता डेटा हराउने छन्।"</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"तपाईँले ट्यब्लेटलाई अनलक गर्न गलत तरिकाले <xliff:g id="NUMBER">%d</xliff:g> पटक प्रयास गर्नु भएको छ। अब ट्याब्लेटलाई पूर्वनिर्धारित कार्यशालामा पुनःसेट गरिने छ।"</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"तपाईंले गलत तरिकाले फोन <xliff:g id="NUMBER">%d</xliff:g> पटक अनलक गर्ने प्रयत्न गर्नुभयो। अब फोन फ्याक्ट्रि पूर्वनिर्धारितमा पुनःसेट हुने छ।"</string>
- <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"<xliff:g id="NUMBER">%d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
- <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"ढाँचा बिर्सनु भयो?"</string>
- <string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"खाता अनलक"</string>
- <string name="lockscreen_glogin_too_many_attempts" msgid="2751368605287288808">"निकै धेरै कोसिसहरू"</string>
- <string name="lockscreen_glogin_instructions" msgid="3931816256100707784">"अनलक गर्नको लागि, तपाईँको Google खातासँग साइन इन गर्नुहोस्।"</string>
- <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"प्रयोगकर्तानाम (इमेल)"</string>
- <string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">"पासवर्ड:"</string>
- <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"साइन इन गर्नुहोस्"</string>
- <string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"अमान्य प्रयोगकर्तानाम वा पासवर्ड"</string>
- <string name="lockscreen_glogin_account_recovery_hint" msgid="1696924763690379073">"तपाईँको प्रयोगकर्ता नाम वा पासवर्ड बिर्सनुभयो?\n भ्रमण गर्नुहोस"<b>"google.com/accounts/recovery"</b></string>
- <string name="lockscreen_glogin_checking_password" msgid="7114627351286933867">"जाँच गर्दै..."</string>
- <string name="lockscreen_unlock_label" msgid="737440483220667054">"खोल्नुहोस्"</string>
- <string name="lockscreen_sound_on_label" msgid="9068877576513425970">"आवाज चालु छ।"</string>
- <string name="lockscreen_sound_off_label" msgid="996822825154319026">"ध्वनि बन्द"</string>
- <string name="lockscreen_access_pattern_start" msgid="3941045502933142847">"ढाँचा सुरु भयो"</string>
- <string name="lockscreen_access_pattern_cleared" msgid="5583479721001639579">"ढाँचा हटाइएको"</string>
- <string name="lockscreen_access_pattern_cell_added" msgid="6756031208359292487">"सेल थप गरियो"</string>
- <string name="lockscreen_access_pattern_detected" msgid="4988730895554057058">"ढाँचा पुरा भयो"</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. विजेट %2$d of %3$d।"</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"विजेट थप गर्नुहोस्।"</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"खाली"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"अनलक क्षेत्र विस्तार भयो।"</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"अनलक क्षेत्र भत्कियो।"</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> विजेट।"</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"प्रयोगकर्ता छनौटकर्ता"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"स्थिति"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"क्यामेरा"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"मिडिया नियन्त्रणहरू"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"विजेट पुनःक्रम गर्ने सुरु भयो।"</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"विजेट पुनःक्रम समाप्त भएको छ।"</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"विजेट <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> मेटाइयो।"</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"अनलक क्षेत्र बढाउनुहोस्।"</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"स्लाइड अनलक।"</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"ढाँचा अनलक।"</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"फेस अनलक"</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Pin अनलक"</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"पासवर्ड अनलक।"</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"ढाँचा क्षेत्र।"</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"स्लाइड क्षेत्र।"</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?१२३"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="granularity_label_character" msgid="7336470535385009523">"अक्षर"</string>
- <string name="granularity_label_word" msgid="7075570328374918660">"शब्द"</string>
- <string name="granularity_label_link" msgid="5815508880782488267">"लिङ्क"</string>
- <string name="granularity_label_line" msgid="5764267235026120888">"लाइन"</string>
- <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string>
- <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string>
- <string name="factorytest_failed" msgid="5410270329114212041">"कार्यशाला परीक्षण असफल भयो।"</string>
- <string name="factorytest_not_system" msgid="4435201656767276723">"FACTORY_TEST कार्रवाइले /system/app मा स्थापित प्याकेजहरूको लागि मात्र समर्थन गर्छ।"</string>
- <string name="factorytest_no_action" msgid="872991874799998561">"कुनै प्याकेज फेला पार्न सकिएन जसले FACTORY_TEST कार्य प्रदान गर्दछ।"</string>
- <string name="factorytest_reboot" msgid="6320168203050791643">"पुनःबुट गर्नुहोस्"</string>
- <string name="js_dialog_title" msgid="1987483977834603872">"यस \"<xliff:g id="TITLE">%s</xliff:g>\" मा भएको पृष्ठले बताउँछ:"</string>
- <string name="js_dialog_title_default" msgid="6961903213729667573">"जाभास्क्रिप्ट"</string>
- <string name="js_dialog_before_unload_title" msgid="2619376555525116593">"मार्गनिर्देशन पक्का गर्नुहोस्"</string>
- <string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"यस पृष्ठलाई छोड्नुहोस्"</string>
- <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"यही पृष्ठमा रहनुहोस्"</string>
- <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nके तपाईँ यो पेजबाट नेभिगेट गर्न चाहनु हुन्छ भन्ने निश्चत छ?"</string>
- <string name="save_password_label" msgid="6860261758665825069">"निश्चित गर्नुहोस्"</string>
- <string name="double_tap_toast" msgid="4595046515400268881">"जुक्ति: जुमलाई ठूलो र सानो पार्न दुई पटक हान्नुहोस्।"</string>
- <string name="autofill_this_form" msgid="4616758841157816676">"स्वतः भर्ने"</string>
- <string name="setup_autofill" msgid="7103495070180590814">"अटोफिल सेटअप गर्नुहोस्"</string>
- <string name="autofill_address_name_separator" msgid="6350145154779706772">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3268041054899214945">"$१$२$३"</string>
- <string name="autofill_address_summary_separator" msgid="7483307893170324129">", "</string>
- <string name="autofill_address_summary_format" msgid="4874459455786827344">"$1$2$3"</string>
- <string name="autofill_province" msgid="2231806553863422300">"प्रान्त"</string>
- <string name="autofill_postal_code" msgid="4696430407689377108">"हुलाकी कोड"</string>
- <string name="autofill_state" msgid="6988894195520044613">"राज्य"</string>
- <string name="autofill_zip_code" msgid="8697544592627322946">"ZIP कोड"</string>
- <string name="autofill_county" msgid="237073771020362891">"काउन्टी"</string>
- <string name="autofill_island" msgid="4020100875984667025">"टापु"</string>
- <string name="autofill_district" msgid="8400735073392267672">"जिल्ला"</string>
- <string name="autofill_department" msgid="5343279462564453309">"विभाग"</string>
- <string name="autofill_prefecture" msgid="2028499485065800419">"प्रशासकीय क्षेत्र"</string>
- <string name="autofill_parish" msgid="8202206105468820057">"पेरिस"</string>
- <string name="autofill_area" msgid="3547409050889952423">"क्षेत्र"</string>
- <string name="autofill_emirate" msgid="2893880978835698818">"इमिरेट"</string>
- <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"तपाईँका बुकमार्कहरू र इतिहास पढ्नुहोस्"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="8462378226600439658">"ब्राउजरले भ्रमण गरेको सबै URL हरूको इतिहास र ब्राउजरका सबै बुकमार्कहरू पढ्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। नोट: यो अनुमतिलाई तेस्रो पक्ष ब्राउजरहरूद्वारा वा वेब ब्राउज गर्ने क्षमताद्वारा बलपूर्वक गराउन सकिँदैन।"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"वेब बुकमार्कहरू र इतिहास लेख्नुहोस्"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="6825527469145760922">"अनुप्रयोगलाई तपाईंको ट्याब्लेटमा भण्डार गरिएको ब्राउजरको इतिहास वा बुकमार्कहरू परिमार्जन गर्न अनुमति दिन्छ। यसले अनुप्रयोगलाई ब्राजर डेटा मेटाउन वा परिमार्जन गर्न अनुमति दिन सक्दछ। टिप्पणी: यो अनुमति वेब ब्राउज गर्ने क्षमताहरूको साथ तेस्रो-पार्टी ब्राउजर वा अन्य अनुप्रयोगहरूद्वारा लागू गरिएको होइन।"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"तपाईँको फोनमा भण्डारण भएको ब्राउजरको इतिहास वा बुकमार्कहरू परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। यसले सायद ब्राउजर डेटालाई मेट्न वा परिवर्तन गर्नको लागि अनुप्रयोगलाई अनुमति दिन्छ। नोट: वेब ब्राउज गर्ने क्षमतासहितका अन्य अनुप्रयोगहरू वा तेस्रो- पक्ष ब्राउजरद्वारा सायद यस अनुमतिलाई लागु गर्न सकिंदैन।"</string>
- <string name="permlab_setAlarm" msgid="1379294556362091814">"एउटा आलर्म सेट गर्नुहोस्"</string>
- <string name="permdesc_setAlarm" msgid="316392039157473848">"स्थापना गरिएको सङ्केत घडी अनुप्रयोगमा सङ्केत समय मिलाउन अनुप्रयोगलाई अनुमति दिन्छ। केही सङ्केत घडी अनुप्रयोगहरूले यो सुविधा कार्यान्वयन नगर्न सक्छन्।"</string>
- <string name="permlab_addVoicemail" msgid="5525660026090959044">"भ्वाइसमेल थप गर्नुहोस्"</string>
- <string name="permdesc_addVoicemail" msgid="6604508651428252437">"तपाईँको भ्वाइसमेल इनबक्समा सन्देश थप्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"भूस्थान अनुमतिहरू ब्राउजर परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"ब्राउजरको भू-स्थान अनुमतिहरू परिमार्जन गर्न अनुप्रयोगलाई अनुमति दिन्छ। खराब अनुप्रयोगहरूले स्थान सूचना मनपरी वेब साइटहरूमा पठाउने अनुमतिको लागि यसलाई प्रयोग गर्न सक्छन्।"</string>
- <string name="permlab_packageVerificationAgent" msgid="5568139100645829117">"प्यकेजहरूको निरीक्षण गर्नुहोस्"</string>
- <string name="permdesc_packageVerificationAgent" msgid="8437590190990843381">"प्याकेज स्थापना योग्य छ कि भनेर रुजु गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_bindPackageVerifier" msgid="4187786793360326654">"एउटा प्याकेज रुजुकर्तामा बाँध्नुहोस्"</string>
- <string name="permdesc_bindPackageVerifier" msgid="3180741773233862126">"होल्डरलाई प्याकेज प्रमाणितकर्ताहरूको अनुरोधहरू बनाउन अनुमति दिन्छ। सामान्य अनुप्रयोगहरूलाई कहिले पनि आवश्यक नपर्न सक्दछ।"</string>
- <string name="permlab_serialPort" msgid="546083327654631076">"पहुँच सिरियल पोर्टहरू"</string>
- <string name="permdesc_serialPort" msgid="2991639985224598193">"होल्डरलाई SerialManager API प्रयोग गरेर सिरियल पोर्टहरू पहुँच गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_accessContentProvidersExternally" msgid="5077774297943409285">"विषयसूची प्रदातालाई बाह्य रूपमा पहुँच गर्नुहोस्"</string>
- <string name="permdesc_accessContentProvidersExternally" msgid="4544346486697853685">"सेलबाट धारकले विषयवस्तु प्रदायकहरूसम्मको पहुँच पाउन अनुमति दिन्छ। सामान्य अनुप्रयोगहरूलाई कहिल्यै आवश्यक पर्दैन।"</string>
- <string name="permlab_updateLock" msgid="3527558366616680889">"स्वचालित उपकरण अपडेटहरू हतोत्साहित गर्नुहोस्"</string>
- <string name="permdesc_updateLock" msgid="1655625832166778492">"होल्डरलाई उपकरण अपग्रेड गर्न गैर पारस्परिक पुनःबुटको लागि उचित समयको बारेमा प्रणालीमा जानाकारी प्रस्तावको लागि अनुमति दिन्छ।"</string>
- <string name="save_password_message" msgid="767344687139195790">"के तपाईं ब्राउजरले यो पासवर्ड सम्झेको चाहनुहुन्छ?"</string>
- <string name="save_password_notnow" msgid="6389675316706699758">"अहिले होइन"</string>
- <string name="save_password_remember" msgid="6491879678996749466">"सम्झनुहोस्"</string>
- <string name="save_password_never" msgid="8274330296785855105">"कहिल्यै पनि होइन"</string>
- <string name="open_permission_deny" msgid="7374036708316629800">"यो पृष्ठ खोल्न तपाईँलाई अनुमति छैन।"</string>
- <string name="text_copied" msgid="4985729524670131385">"क्लिपबोर्डमा प्रतिलिप गरिएको पाठ।"</string>
- <string name="more_item_label" msgid="4650918923083320495">"बढी"</string>
- <string name="prepend_shortcut_label" msgid="2572214461676015642">"मेनु+"</string>
- <string name="menu_space_shortcut_label" msgid="2410328639272162537">"ठाउँ"</string>
- <string name="menu_enter_shortcut_label" msgid="2743362785111309668">"प्रविष्टि गर्नुहोस्"</string>
- <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"मेटाउनुहोस्"</string>
- <string name="search_go" msgid="8298016669822141719">"खोज्नुहोस्"</string>
- <string name="searchview_description_search" msgid="6749826639098512120">"खोज्नुहोस्"</string>
- <string name="searchview_description_query" msgid="5911778593125355124">"जिज्ञासा खोज गर्नुहोस्"</string>
- <string name="searchview_description_clear" msgid="1330281990951833033">"प्रश्‍न हटाउनुहोस्"</string>
- <string name="searchview_description_submit" msgid="2688450133297983542">"जिज्ञासा पेस गर्नुहोस्"</string>
- <string name="searchview_description_voice" msgid="2453203695674994440">"भ्वाइस खोजी"</string>
- <string name="enable_explore_by_touch_warning_title" msgid="7460694070309730149">"छोएर अन्वेषण गर्ने सक्षम पार्न चाहनु हुन्छ?"</string>
- <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="8655887539089910577">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>ले स्पर्षद्वारा अन्वेषण सक्षम गर्न चाहन्छ। स्पर्षद्वारा अन्वेषण सक्षम भएको बेला, तपाईँ आफ्नो औँलाको मुनि भएका विषयवस्तुहरू बारे सुन्न वा विवरण हेर्न सक्नुहुन्छ वा ट्याब्लेटसँग अन्तर्क्रिया गर्न इशारा गर्नुहोस्।"</string>
- <string name="enable_explore_by_touch_warning_message" product="default" msgid="2708199672852373195">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>ले स्पर्षद्वारा अन्वेषण सक्षम गर्न चाहन्छ। स्पर्षद्वारा अन्वेषण सक्षम भएको बेला तपाईँ आफ्नो औँलाको मुनि भएका विषयवस्तुहरू बारे सुन्न वा विवरण हेर्न सक्नुहुन्छ वा फोनसँग अन्तर्क्रिया गर्न इशारा गर्नुहोस्।"</string>
- <string name="oneMonthDurationPast" msgid="7396384508953779925">"१ महिना अघि"</string>
- <string name="beforeOneMonthDurationPast" msgid="909134546836499826">"१ महिना अघि"</string>
- <plurals name="num_seconds_ago">
- <item quantity="one" msgid="4869870056547896011">"१ सेकेन्ड अघि"</item>
- <item quantity="other" msgid="3903706804349556379">"<xliff:g id="COUNT">%d</xliff:g> सेकेन्ड अघि"</item>
- </plurals>
- <plurals name="num_minutes_ago">
- <item quantity="one" msgid="3306787433088810191">"१ मिनेट अघि"</item>
- <item quantity="other" msgid="2176942008915455116">"<xliff:g id="COUNT">%d</xliff:g> मिनेट अघि"</item>
- </plurals>
- <plurals name="num_hours_ago">
- <item quantity="one" msgid="9150797944610821849">"१ घन्टा अघि"</item>
- <item quantity="other" msgid="2467273239587587569">"<xliff:g id="COUNT">%d</xliff:g> घन्टा अघि"</item>
- </plurals>
- <plurals name="last_num_days">
- <item quantity="other" msgid="3069992808164318268">"अन्तिम <xliff:g id="COUNT">%d</xliff:g> दिन"</item>
- </plurals>
- <string name="last_month" msgid="3959346739979055432">"अन्तिम महिना"</string>
- <string name="older" msgid="5211975022815554840">"पुरानो"</string>
- <plurals name="num_days_ago">
- <item quantity="one" msgid="861358534398115820">"हिजो"</item>
- <item quantity="other" msgid="2479586466153314633">"<xliff:g id="COUNT">%d</xliff:g> दिन अघि"</item>
- </plurals>
- <plurals name="in_num_seconds">
- <item quantity="one" msgid="2729745560954905102">"१ सेकेन्डमा"</item>
- <item quantity="other" msgid="1241926116443974687">"<xliff:g id="COUNT">%d</xliff:g> सेकेन्डमा"</item>
- </plurals>
- <plurals name="in_num_minutes">
- <item quantity="one" msgid="8793095251325200395">"१ मिनेटमा"</item>
- <item quantity="other" msgid="3330713936399448749">"<xliff:g id="COUNT">%d</xliff:g>मिनेटमा"</item>
- </plurals>
- <plurals name="in_num_hours">
- <item quantity="one" msgid="7164353342477769999">"१ घन्टामा"</item>
- <item quantity="other" msgid="547290677353727389">"<xliff:g id="COUNT">%d</xliff:g> घन्टामा"</item>
- </plurals>
- <plurals name="in_num_days">
- <item quantity="one" msgid="5413088743009839518">"भोलि"</item>
- <item quantity="other" msgid="5109449375100953247">"<xliff:g id="COUNT">%d</xliff:g> दिनमा"</item>
- </plurals>
- <plurals name="abbrev_num_seconds_ago">
- <item quantity="one" msgid="1849036840200069118">"१ सेकेन्ड अघि"</item>
- <item quantity="other" msgid="3699169366650930415">"<xliff:g id="COUNT">%d</xliff:g> सेकेन्ड अगाडि"</item>
- </plurals>
- <plurals name="abbrev_num_minutes_ago">
- <item quantity="one" msgid="6361490147113871545">"१ मिनेट अघि"</item>
- <item quantity="other" msgid="851164968597150710">"<xliff:g id="COUNT">%d</xliff:g> मिनेट अघि"</item>
- </plurals>
- <plurals name="abbrev_num_hours_ago">
- <item quantity="one" msgid="4796212039724722116">"१ घन्टा अघि"</item>
- <item quantity="other" msgid="6889970745748538901">"<xliff:g id="COUNT">%d</xliff:g> घन्टा अघि"</item>
- </plurals>
- <plurals name="abbrev_num_days_ago">
- <item quantity="one" msgid="8463161711492680309">"हिजो"</item>
- <item quantity="other" msgid="3453342639616481191">"<xliff:g id="COUNT">%d</xliff:g> दिन अघि"</item>
- </plurals>
- <plurals name="abbrev_in_num_seconds">
- <item quantity="one" msgid="5842225370795066299">"१ सेकन्ड"</item>
- <item quantity="other" msgid="5495880108825805108">"<xliff:g id="COUNT">%d</xliff:g> सेकेन्डमा"</item>
- </plurals>
- <plurals name="abbrev_in_num_minutes">
- <item quantity="one" msgid="562786149928284878">"१ मिनेटमा"</item>
- <item quantity="other" msgid="4216113292706568726">"<xliff:g id="COUNT">%d</xliff:g> मिनेटमा"</item>
- </plurals>
- <plurals name="abbrev_in_num_hours">
- <item quantity="one" msgid="3274708118124045246">"१ घन्टामा"</item>
- <item quantity="other" msgid="3705373766798013406">"<xliff:g id="COUNT">%d</xliff:g> घन्टामा"</item>
- </plurals>
- <plurals name="abbrev_in_num_days">
- <item quantity="one" msgid="2178576254385739855">"भोलि"</item>
- <item quantity="other" msgid="2973062968038355991">"दिन<xliff:g id="COUNT">%d</xliff:g> मा"</item>
- </plurals>
- <string name="preposition_for_date" msgid="9093949757757445117">"<xliff:g id="DATE">%s</xliff:g> मा"</string>
- <string name="preposition_for_time" msgid="5506831244263083793">"<xliff:g id="TIME">%s</xliff:g> मा"</string>
- <string name="preposition_for_year" msgid="5040395640711867177">"<xliff:g id="YEAR">%s</xliff:g> मा"</string>
- <string name="day" msgid="8144195776058119424">"दिन"</string>
- <string name="days" msgid="4774547661021344602">"दिन"</string>
- <string name="hour" msgid="2126771916426189481">"घन्टा"</string>
- <string name="hours" msgid="894424005266852993">"घन्टा"</string>
- <string name="minute" msgid="9148878657703769868">"मिनेट"</string>
- <string name="minutes" msgid="5646001005827034509">"मिनेट"</string>
- <string name="second" msgid="3184235808021478">"सेकेन्ड"</string>
- <string name="seconds" msgid="3161515347216589235">"सेकेन्ड"</string>
- <string name="week" msgid="5617961537173061583">"हप्ता"</string>
- <string name="weeks" msgid="6509623834583944518">"हप्ताहरू"</string>
- <string name="year" msgid="4001118221013892076">"वर्ष"</string>
- <string name="years" msgid="6881577717993213522">"वर्षहरू"</string>
- <plurals name="duration_seconds">
- <item quantity="one" msgid="6962015528372969481">"१ सेकेन्ड"</item>
- <item quantity="other" msgid="1886107766577166786">"<xliff:g id="COUNT">%d</xliff:g> सेकेन्ड"</item>
- </plurals>
- <plurals name="duration_minutes">
- <item quantity="one" msgid="4915414002546085617">"१ मिनेट"</item>
- <item quantity="other" msgid="3165187169224908775">"<xliff:g id="COUNT">%d</xliff:g> मिनेट"</item>
- </plurals>
- <plurals name="duration_hours">
- <item quantity="one" msgid="8917467491248809972">"१ घन्टा"</item>
- <item quantity="other" msgid="3863962854246773930">"<xliff:g id="COUNT">%d</xliff:g> घन्टा"</item>
- </plurals>
- <string name="VideoView_error_title" msgid="3534509135438353077">"भिडियो समस्या"</string>
- <string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"यो भिडियो यस उपकरणको लागि स्ट्रिमिङ गर्न मान्य छैन।"</string>
- <string name="VideoView_error_text_unknown" msgid="3450439155187810085">"यो भिडियो चलाउन सक्दैन।"</string>
- <string name="VideoView_error_button" msgid="2822238215100679592">"ठीक छ"</string>
- <string name="relative_time" msgid="1818557177829411417">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
- <string name="noon" msgid="7245353528818587908">"मध्यान्न"</string>
- <string name="Noon" msgid="3342127745230013127">"मध्यान्ह"</string>
- <string name="midnight" msgid="7166259508850457595">"मध्यरात"</string>
- <string name="Midnight" msgid="5630806906897892201">"मध्यरात"</string>
- <string name="elapsed_time_short_format_mm_ss" msgid="4431555943828711473">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
- <string name="elapsed_time_short_format_h_mm_ss" msgid="1846071997616654124">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
- <string name="selectAll" msgid="6876518925844129331">"सबैलाई चयन गर्नुहोस्"</string>
- <string name="cut" msgid="3092569408438626261">"काट्नुहोस्"</string>
- <string name="copy" msgid="2681946229533511987">"प्रतिलिपि बनाउनुहोस्"</string>
- <string name="paste" msgid="5629880836805036433">"टाँस्नुहोस्"</string>
- <string name="replace" msgid="5781686059063148930">"विस्थापन गर्नुहोस्…"</string>
- <string name="delete" msgid="6098684844021697789">"मेट्नुहोस्"</string>
- <string name="copyUrl" msgid="2538211579596067402">"URL को प्रतिलिप गर्नुहोस्"</string>
- <string name="selectTextMode" msgid="1018691815143165326">"पाठ चयन गर्नुहोस्"</string>
- <string name="textSelectionCABTitle" msgid="5236850394370820357">"पाठ चयनता"</string>
- <string name="addToDictionary" msgid="4352161534510057874">"शब्दकोशमा थप्नुहोस्"</string>
- <string name="deleteText" msgid="6979668428458199034">"मेट्नुहोस्"</string>
- <string name="inputMethod" msgid="1653630062304567879">"निवेश विधि"</string>
- <string name="editTextMenuTitle" msgid="4909135564941815494">"पाठ कार्यहरू"</string>
- <string name="low_internal_storage_view_title" msgid="5576272496365684834">"भण्डारण ठाउँ सकिँदै छ"</string>
- <string name="low_internal_storage_view_text" msgid="6640505817617414371">"सायद केही प्रणाली कार्यक्रमहरूले काम गर्दैनन्"</string>
- <string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> चलिरहेको छ"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"थप सूचनाको लागि छुनुहोस् वा अनुप्रयोग बन्द गर्नुहोस्।"</string>
- <string name="ok" msgid="5970060430562524910">"ठिक छ"</string>
- <string name="cancel" msgid="6442560571259935130">"रद्द गर्नुहोस्"</string>
- <string name="yes" msgid="5362982303337969312">"ठिक छ"</string>
- <string name="no" msgid="5141531044935541497">"रद्द गर्नुहोस्"</string>
- <string name="dialog_alert_title" msgid="2049658708609043103">"सावधानी"</string>
- <string name="loading" msgid="7933681260296021180">"लोड हुँदै..."</string>
- <string name="capital_on" msgid="1544682755514494298">"चालु"</string>
- <string name="capital_off" msgid="6815870386972805832">"बन्द"</string>
- <string name="whichApplication" msgid="4533185947064773386">"प्रयोग गरेर कारबाही पुरा गर्नुहोस्"</string>
- <string name="alwaysUse" msgid="4583018368000610438">"यस कार्यको लागि पूर्वनिर्धारितबाट प्रयोग गर्नुहोस्।"</string>
- <string name="clearDefaultHintMsg" msgid="3252584689512077257">"प्रणाली सेटिङहरूमा पूर्वनिर्धारितलाई हटाउनुहोस् &gt; अनुप्रयोगहरू &gt; डाउनलोड।"</string>
- <string name="chooseActivity" msgid="7486876147751803333">"एउटा कार्यको चयन गर्नुहोस्"</string>
- <string name="chooseUsbActivity" msgid="6894748416073583509">"USB उपकरणको लागि एउटा अनुप्रयोग छान्नुहोस्"</string>
- <string name="noApplications" msgid="2991814273936504689">"कुनै पनि अनुप्रयोगहरूले यो कार्य गर्न सक्दैनन्।"</string>
- <string name="aerr_title" msgid="1905800560317137752"></string>
- <string name="aerr_application" msgid="932628488013092776">"दुर्भाग्यवश, <xliff:g id="APPLICATION">%1$s</xliff:g>ले रोकेको छ।"</string>
- <string name="aerr_process" msgid="4507058997035697579">"दुर्भाग्यवश, प्रक्रिया <xliff:g id="PROCESS">%1$s</xliff:g> बन्द भयो।"</string>
- <string name="anr_title" msgid="4351948481459135709"></string>
- <string name="anr_activity_application" msgid="1904477189057199066">"<xliff:g id="APPLICATION">%2$s</xliff:g>ले कार्य गरिरहेको छैन।\n\nके तपाईँ यसलाई बन्द गर्न चाहनु हुन्छ?"</string>
- <string name="anr_activity_process" msgid="5776209883299089767">"गतिविधि <xliff:g id="ACTIVITY">%1$s</xliff:g> ले प्रतिक्रिया देखाइरहेको छैन।\n\nके तपाईं यसलाई बन्द गर्न चाहनु हुन्छ?"</string>
- <string name="anr_application_process" msgid="8941757607340481057">"<xliff:g id="APPLICATION">%1$s</xliff:g> जवाफ दिइरहेको छैन। के तपाईँ यसलाई बन्द गर्न चाहनु हुन्छ?"</string>
- <string name="anr_process" msgid="6513209874880517125">"प्रक्रिया <xliff:g id="PROCESS">%1$s</xliff:g>ले कार्य गरिरहेको छैन।\n\nके तपाईँ यसलाई बन्द गर्न चाहनु हुन्छ?"</string>
- <string name="force_close" msgid="8346072094521265605">"ठिक छ"</string>
- <string name="report" msgid="4060218260984795706">"रिपोर्ट गर्नुहोस्"</string>
- <string name="wait" msgid="7147118217226317732">"प्रतीक्षा गर्नुहोस्"</string>
- <string name="webpage_unresponsive" msgid="3272758351138122503">"पृष्ठ गैर जिम्मेवारी भएको छ।\n\nके तपाईं यसलाई बन्द गर्न चाहनुहुन्छ?"</string>
- <string name="launch_warning_title" msgid="1547997780506713581">"अनुप्रयोग पुनः निर्देशीत"</string>
- <string name="launch_warning_replace" msgid="6202498949970281412">"<xliff:g id="APP_NAME">%1$s</xliff:g> अहिले चलिरहेको छ।"</string>
- <string name="launch_warning_original" msgid="188102023021668683">"<xliff:g id="APP_NAME">%1$s</xliff:g> वास्तविक सुरुवात भएको थियो।"</string>
- <string name="screen_compat_mode_scale" msgid="3202955667675944499">"स्केल"</string>
- <string name="screen_compat_mode_show" msgid="4013878876486655892">"सधैँ देखाउनुहोस्"</string>
- <string name="screen_compat_mode_hint" msgid="1064524084543304459">"प्रणाली सेटिङहरूमा यसलाई पुनःसक्षम गराउनुहोस् &gt; अनुप्रयोगहरू &gt; डाउनलोड गरेको।"</string>
- <string name="smv_application" msgid="3307209192155442829">"अनुप्रयोग <xliff:g id="APPLICATION">%1$s</xliff:g> (प्रक्रिया <xliff:g id="PROCESS">%2$s</xliff:g>) ले यसको स्वयं-लागु गरिएको स्ट्रिटमोड नीति उलङ्घन गरेको छ।"</string>
- <string name="smv_process" msgid="5120397012047462446">"प्रक्रिया <xliff:g id="PROCESS">%1$s</xliff:g> यसको आफ्नै कडामोड नीतिका कारण उल्लङ्घन गरिएको छ।"</string>
- <string name="android_upgrading_title" msgid="1584192285441405746">"एन्ड्रोइड अपग्रेड हुँदैछ…"</string>
- <string name="android_upgrading_apk" msgid="7904042682111526169">"अनुप्रयोग अनुकुल हुँदै <xliff:g id="NUMBER_0">%1$d</xliff:g> को <xliff:g id="NUMBER_1">%2$d</xliff:g>।"</string>
- <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>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"अनुप्रयोगमा स्विच गर्न छुनुहोस्"</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>
- <string name="old_app_description" msgid="2082094275580358049">"नयाँ अनुप्रयोग सुरु नगर्नुहोस्।"</string>
- <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="sendText" msgid="5209874571959469142">"पाठको लागि एउटा प्रकार्य छान्नुहोस्"</string>
- <string name="volume_ringtone" msgid="6885421406845734650">"बजाउने मात्रा"</string>
- <string name="volume_music" msgid="5421651157138628171">"मिडियाको मात्रा"</string>
- <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"ब्लुटुथको माध्यमद्वारा बजाइदै छ।"</string>
- <string name="volume_music_hint_silent_ringtone_selected" msgid="8310739960973156272">"शान्त रिङ्गटोन सेट"</string>
- <string name="volume_call" msgid="3941680041282788711">"इन-कल भोल्युम"</string>
- <string name="volume_bluetooth_call" msgid="2002891926351151534">"ब्लुटुथ भित्री-कल मात्रा"</string>
- <string name="volume_alarm" msgid="1985191616042689100">"आलर्म मात्रा"</string>
- <string name="volume_notification" msgid="2422265656744276715">"सूचना मात्रा"</string>
- <string name="volume_unknown" msgid="1400219669770445902">"मात्रा"</string>
- <string name="volume_icon_description_bluetooth" msgid="6538894177255964340">"ब्लुटुथ भोल्युम"</string>
- <string name="volume_icon_description_ringer" msgid="3326003847006162496">"घन्टिको आवाज मात्रा"</string>
- <string name="volume_icon_description_incall" msgid="8890073218154543397">"कला मात्रा"</string>
- <string name="volume_icon_description_media" msgid="4217311719665194215">"मिडियाको मात्रा"</string>
- <string name="volume_icon_description_notification" msgid="7044986546477282274">"सूचना भोल्युम"</string>
- <string name="ringtone_default" msgid="3789758980357696936">"पूर्वनिर्धारित रिङटोन"</string>
- <string name="ringtone_default_with_actual" msgid="8129563480895990372">"पूर्वनिर्धारित रिङटोन (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
- <string name="ringtone_silent" msgid="7937634392408977062">"कुनै पनि होइन"</string>
- <string name="ringtone_picker_title" msgid="3515143939175119094">"घन्टीका स्वरहरू"</string>
- <string name="ringtone_unknown" msgid="5477919988701784788">"अज्ञात रिङटोन"</string>
- <plurals name="wifi_available">
- <item quantity="one" msgid="6654123987418168693">"वाइ-फाइ नेटवर्क उपलब्ध छ"</item>
- <item quantity="other" msgid="4192424489168397386">"वाइ-फाइ नेटवर्कहरू उपलब्ध"</item>
- </plurals>
- <plurals name="wifi_available_detailed">
- <item quantity="one" msgid="1634101450343277345">"खुल्ला वाइ-फाइ नेटवर्क उपलब्ध छ"</item>
- <item quantity="other" msgid="7915895323644292768">"खुल्ला वाइ-फाइ नेटवर्क उपलब्ध छ"</item>
- </plurals>
- <string name="wifi_available_sign_in" msgid="4029489716605255386">"वाइ-फाइ नेटवर्कमा साइन गर्नुहोस्"</string>
- <string name="network_available_sign_in" msgid="8495155593358054676">"नेटवर्कमा साइन गर्नुहोस्।"</string>
- <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
- <skip />
- <string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"वाइ-फाइसँग जडान गर्न सकेन"</string>
- <string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" कमजोर इन्टरनेट जडान छ।"</string>
- <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"वाइ-फाइ प्रत्यक्ष"</string>
- <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>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"सेटिङहरूको लागि छुनुहोस्"</string>
- <string name="accept" msgid="1645267259272829559">"स्वीकार्नुहोस्"</string>
- <string name="decline" msgid="2112225451706137894">"अस्वीकार गर्नुहोस्"</string>
- <string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"निमन्त्रणा पठाइएको"</string>
- <string name="wifi_p2p_invitation_to_connect_title" msgid="4958803948658533637">"जडानमा निमन्त्रणा"</string>
- <string name="wifi_p2p_from_message" msgid="570389174731951769">"बाट:"</string>
- <string name="wifi_p2p_to_message" msgid="248968974522044099">"प्रापक:"</string>
- <string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"आवश्यक PIN टाइप गर्नुहोस्:"</string>
- <string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="tablet" msgid="8012981257742232475">"यो <xliff:g id="DEVICE_NAME">%1$s</xliff:g>सँग जोडिएको बेला ट्याब्लेट अस्थायी रूपमा वाइ-फाइबाट विच्छेद गरिने छ।"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="default" msgid="7363907213787469151">"जब यो <xliff:g id="DEVICE_NAME">%1$s</xliff:g> सँग जडित हुन्छ, फोन अस्थायी रूपमा वाइ-फाइबाट विच्छेद हुने छ"</string>
- <string name="select_character" msgid="3365550120617701745">"अक्षरहरू प्रवेश गराउनुहोस्"</string>
- <string name="sms_control_title" msgid="7296612781128917719">"SMS सन्देशहरू पठाइँदै"</string>
- <string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ले धरै संख्यामा SMS सन्देशहरू पठाउँदैछ। के तपाईँ यस अनुप्रयोगलाई सन्देशहरू पठाउन सुचारु गर्न अनुमति दिन चाहनु हुन्छ?"</string>
- <string name="sms_control_yes" msgid="3663725993855816807">"अनुमति दिनुहोस्"</string>
- <string name="sms_control_no" msgid="625438561395534982">"अस्वीकार गर्नुहोस्"</string>
- <string name="sms_short_code_confirm_message" msgid="1645436466285310855">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; के तपाईँ सन्देश पठाउन चाहुनु हुन्छ &lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;/b&gt;."</string>
- <string name="sms_short_code_details" msgid="3492025719868078457">"यसले "<font fgcolor="#ffffb060">" शुल्क लगाउन सक्छ"</font>" तपाईँको मोबाइल खातामा।"</string>
- <string name="sms_premium_short_code_details" msgid="5523826349105123687"><font fgcolor="#ffffb060">"यसले तपाईंको मोबाइल खातामा चार्जहरू उत्पन्न गर्दछ।"</font></string>
- <string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"पठाउनुहोस्"</string>
- <string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"रद्द गर्नुहोस्"</string>
- <string name="sms_short_code_remember_choice" msgid="5289538592272218136">"मेरो छनौट याद राख्नुहोस्"</string>
- <string name="sms_short_code_remember_undo_instruction" msgid="4960944133052287484">"तपाईँ यसलाई पछि सेटिङहरूमा बदल्न सक्नु हुन्छ &gt; अनुप्रयोगहरू"</string>
- <string name="sms_short_code_confirm_always_allow" msgid="3241181154869493368">"सधैँ अनुमति दिनुहोस्"</string>
- <string name="sms_short_code_confirm_never_allow" msgid="446992765774269673">"कहिल्यै अनुमति नदिनुहोस्"</string>
- <string name="sim_removed_title" msgid="6227712319223226185">"SIM कार्ड हटाइयो"</string>
- <string name="sim_removed_message" msgid="2333164559970958645">"एउटा मान्य SIM कार्ड राखेर पुनःस्टार्ट नगरेसम्म मोबाइल नेटवर्क उपलब्ध हुने छैन।"</string>
- <string name="sim_done_button" msgid="827949989369963775">"भयो"</string>
- <string name="sim_added_title" msgid="3719670512889674693">"SIM कार्ड थप गरियो"</string>
- <string name="sim_added_message" msgid="6599945301141050216">"मोबाइल नेटवर्क पहुँच गर्न तपाईँको उपकरण पुनःस्टार्ट गर्नुहोस्।"</string>
- <string name="sim_restart_button" msgid="4722407842815232347">"पुनःस्टार्ट गर्नुहोस्"</string>
- <string name="time_picker_dialog_title" msgid="8349362623068819295">"समय मिलाउनुहोस्"</string>
- <string name="date_picker_dialog_title" msgid="5879450659453782278">"मिति मिलाउनुहोस्"</string>
- <string name="date_time_set" msgid="5777075614321087758">"सेट गर्नुहोस्"</string>
- <string name="date_time_done" msgid="2507683751759308828">"भयो"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"नयाँ: "</font></string>
- <string name="perms_description_app" msgid="5139836143293299417">"<xliff:g id="APP_NAME">%1$s</xliff:g>द्वारा प्रदान गरिएको।"</string>
- <string name="no_permissions" msgid="7283357728219338112">"कुनै अनुमति आवश्यक छैन"</string>
- <string name="perm_costs_money" msgid="4902470324142151116">"सायद तपाईँलाई पैसा पर्न सक्छ।"</string>
- <string name="usb_storage_activity_title" msgid="4465055157209648641">"USB ठूलो भण्डारण"</string>
- <string name="usb_storage_title" msgid="5901459041398751495">"USB जोडिएको छ"</string>
- <string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"तपाईं आफ्नो कम्प्युटरमा USB मार्फत जडान हुनुभयो। तलको बटन टच गर्नुहोस् यदि तपाईं आफ्नो कम्प्युटर र एन्ड्रोइडको USB भण्डारण बीच फाइलहरू प्रतिलिपि गर्न चाहनुहुन्छ भने।"</string>
- <string name="usb_storage_message" product="default" msgid="805351000446037811">"तपाईं आफ्नो कम्प्युटरमा USB मार्फत जडान हुनुभयो। तलको बटन टच गर्नुहोस् यदि तपाईं आफ्नो कम्प्युटर र एन्ड्रोइडको SD कार्ड बीच फाइलहरू प्रतिलिपि गर्न चाहनुहुन्छ भने।"</string>
- <string name="usb_storage_button_mount" msgid="1052259930369508235">"USB भण्डारण चालु गर्नुहोस्"</string>
- <string name="usb_storage_error_message" product="nosdcard" msgid="3017045217365540658">"USB आम भण्डारणको लागि तपाईँको USB भण्डारण प्रयोग गर्दा एउटा समस्या भयो।"</string>
- <string name="usb_storage_error_message" product="default" msgid="2876018512716970313">"USB आम भण्डारणको लागि तपाईँको SD कार्ड प्रयोग गर्दा एउटा समस्या भयो।"</string>
- <string name="usb_storage_notification_title" msgid="8175892554757216525">"USB जोडिएको छ"</string>
- <string name="usb_storage_notification_message" msgid="939822783828183763">"तपाईँको कम्प्युटरबाट वा तिर फाइलहरू प्रतिलिप गर्न छुनुहोस्।"</string>
- <string name="usb_storage_stop_notification_title" msgid="2336058396663516017">"USB भण्डारण बन्द गर्नुहोस्"</string>
- <string name="usb_storage_stop_notification_message" msgid="1656852098555623822">"USB भण्डारण बन्द गर्न छुनुहोस्।"</string>
- <string name="usb_storage_stop_title" msgid="660129851708775853">"USB भण्डारण प्रयोगमा छ"</string>
- <string name="usb_storage_stop_message" product="nosdcard" msgid="4264025280777219521">"USB भण्डारण बन्द हुनुभन्दा पहीले तपाईँको कम्प्युटरबाट तपाईँको एन्ड्रोइड USB भण्डारण अनमाउन्ट (\"झिक्नुहोस्\") गर्नुहोस् ।"</string>
- <string name="usb_storage_stop_message" product="default" msgid="8043969782460613114">"USB भण्डारण बन्द गर्नुअघि तपाईँको कम्प्युटरबाट तपाईँको एन्ड्रोइडको SD कार्ड अनमाउन्ट (\"निकालेको\") गर्नुहोस्।"</string>
- <string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"USB भण्डारण बन्द गर्नुहोस्"</string>
- <string name="usb_storage_stop_error_message" msgid="1970374898263063836">"USB भण्डारण बन्द गर्दा एउटा समस्या भयो। तपाईँले USB होस्ट अनमाउन्ट गर्नु भएको जाँच गर्नुहोस्, त्यसपछि फेरि प्रयास गर्नुहोस्।"</string>
- <string name="dlg_confirm_kill_storage_users_title" msgid="963039033470478697">"USB भण्डारण खोल्नुहोस्"</string>
- <string name="dlg_confirm_kill_storage_users_text" msgid="5100428757107469454">"यदि तपाईँले USB भण्डारण खोल्नु भयो भने तपाईँले प्रयोग गरिरहनु भएका केही अनुप्रयोगहरू रोकिने छन् र तपाईँले USB भण्डारण बन्द नगरेसम्म अनुपलब्ध हुन सक्छन्।"</string>
- <string name="dlg_error_title" msgid="7323658469626514207">"USB संचालन असफल"</string>
- <string name="dlg_ok" msgid="7376953167039865701">"ठिक छ"</string>
- <string name="usb_mtp_notification_title" msgid="3699913097391550394">"मिडिया उपकरणको रूपमा जडित"</string>
- <string name="usb_ptp_notification_title" msgid="1960817192216064833">"क्यामेराको रूपमा जडान भएको"</string>
- <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"एउटा स्थापनकर्ताको रूपमा जोडिएको छ"</string>
- <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB सहायकमा जोडिएको छ"</string>
- <string name="usb_notification_message" msgid="2290859399983720271">"अन्य USB विकल्पहरूको लागि टच गर्नुहोस्।"</string>
- <string name="extmedia_format_title" product="nosdcard" msgid="9020092196061007262">"USB भण्डारणलाई फर्म्याट गर्न चाहनु हुन्छ?"</string>
- <string name="extmedia_format_title" product="default" msgid="3648415921526526069">"SD कार्ड फर्म्याट गर्ने?"</string>
- <string name="extmedia_format_message" product="nosdcard" msgid="3934016853425761078">"तपाईंको USBमा सङ्ग्रह भएका सबै फाइलहरू मेटिने छन्। यो कार्य उल्टाउन सकिँदैन!"</string>
- <string name="extmedia_format_message" product="default" msgid="14131895027543830">"तपाईँको कार्डमा भएका सबै डेटाहरू हराउने छन्।"</string>
- <string name="extmedia_format_button_format" msgid="4131064560127478695">"फर्म्याट गर्नुहोस्"</string>
- <string name="adb_active_notification_title" msgid="6729044778949189918">"USB डिबग गर्ने जडित छ"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB डिबग गर्ने असक्षम पार्न छुनुहोस्।"</string>
- <string name="select_input_method" msgid="4653387336791222978">"निवेश विधि छान्नुहोस्"</string>
- <string name="configure_input_methods" msgid="9091652157722495116">"इनपुट विधिहरू सेटअप गर्नुहोस्"</string>
- <string name="use_physical_keyboard" msgid="6203112478095117625">"भौतिक किबोर्ड"</string>
- <string name="hardware" msgid="7517821086888990278">"हार्डवेयर"</string>
- <string name="select_keyboard_layout_notification_title" msgid="1407367017263030773">"किबोर्ड रूपरेखा चयन गर्नुहोस्"</string>
- <string name="select_keyboard_layout_notification_message" msgid="4465907700449257063">"किबोर्ड रूपरेखा चयन गर्न टच गर्नुहोस्।"</string>
- <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="candidates_style" msgid="4333913089637062257"><u>"उम्मेदवार"</u></string>
- <string name="ext_media_checking_notification_title" product="nosdcard" msgid="3449816005351468560">"USB भण्डारणको तयारी हुँदै"</string>
- <string name="ext_media_checking_notification_title" product="default" msgid="5457603418970994050">"SD कार्ड तयार गर्दै"</string>
- <string name="ext_media_checking_notification_message" msgid="8287319882926737053">"त्रुटिहरूको लागि जाँच गर्दै।"</string>
- <string name="ext_media_nofs_notification_title" product="nosdcard" msgid="7788040745686229307">"रिक्त USB भण्डारण"</string>
- <string name="ext_media_nofs_notification_title" product="default" msgid="780477838241212997">"खाली SD कार्ड"</string>
- <string name="ext_media_nofs_notification_message" product="nosdcard" msgid="7840121067427269500">"USB भण्डारण खाली वा असमर्थित फाइल प्रणाली छ।"</string>
- <string name="ext_media_nofs_notification_message" product="default" msgid="8641065641786923604">"SD कार्ड खाली छ अथवा समर्थन नगरिएको फाइल प्रणाली छ।"</string>
- <string name="ext_media_unmountable_notification_title" product="nosdcard" msgid="2090046769532713563">"बिग्रिएको USB भण्डारण"</string>
- <string name="ext_media_unmountable_notification_title" product="default" msgid="6410723906019100189">"बिग्रिएको SD कार्ड"</string>
- <string name="ext_media_unmountable_notification_message" product="nosdcard" msgid="1795917578395333280">"USB भण्डारण बिग्रिएको छ। यसलाई पुनःफर्म्याट गर्न प्रयास गर्नुहोस।"</string>
- <string name="ext_media_unmountable_notification_message" product="default" msgid="1753898567525568253">"SD कार्ड बिग्रिएको छ। यसलाई पुनःफर्म्याट गर्न प्रयास गर्नुहोस।"</string>
- <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"USB भण्डारण अप्रत्याशित रूपमा हटाइएको छ"</string>
- <string name="ext_media_badremoval_notification_title" product="default" msgid="6872152882604407837">"SD कार्ड अनपेक्षित रूपमा हटाइयो"</string>
- <string name="ext_media_badremoval_notification_message" product="nosdcard" msgid="4329848819865594241">"डेटा गुम्नबाट रोक्नको लागि USB भण्डारण हटाउनुअघि अनमाउन्ट गर्नुहोस्।"</string>
- <string name="ext_media_badremoval_notification_message" product="default" msgid="7260183293747448241">"डेटा नाश हुनबाट बच्न SD कार्डलाई निकाल्नुभन्दा पहिला अनमाउन्ट गर्नुहोस्।"</string>
- <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"USB भण्डारण हटाउनको लागि सुरक्षित छ"</string>
- <string name="ext_media_safe_unmount_notification_title" product="default" msgid="6729801130790616200">"SD कार्ड हटाउन सुरक्षित छ।"</string>
- <string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"तपाईं सुरक्षित रूपमा USB भण्डारण हटाउन सक्नुहुने छ।"</string>
- <string name="ext_media_safe_unmount_notification_message" product="default" msgid="568841278138377604">"तपाईँ SD कार्ड सुरक्षित रूपमा हटाउन सक्नु हुन्छ।"</string>
- <string name="ext_media_nomedia_notification_title" product="nosdcard" msgid="4486377230140227651">"USB भण्डारण हटाइयो"</string>
- <string name="ext_media_nomedia_notification_title" product="default" msgid="8902518030404381318">"हटाइएको SD कार्ड"</string>
- <string name="ext_media_nomedia_notification_message" product="nosdcard" msgid="6921126162580574143">"USD भण्डारण हटाइयो। नयाँ मिडिया घुसाउनुहोस्।"</string>
- <string name="ext_media_nomedia_notification_message" product="default" msgid="3870120652983659641">"SD कार्ड हटाइयो। एउटा नयाँ छिराउनुहोस्।"</string>
- <string name="activity_list_empty" msgid="1675388330786841066">"कुनै मिल्ने गतिविधि पाइएन।"</string>
- <string name="permlab_pkgUsageStats" msgid="8787352074326748892">"खण्ड प्रयोग तथ्याङ्कहरू अपडेट गर्नुहोस्"</string>
- <string name="permdesc_pkgUsageStats" msgid="1106612424254277630">"जम्मा गरिएको घटक उपयोग तथ्याङ्कहरूलाई परिमार्जन गर्न अनुप्रयोगलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूबाट प्रयोगको लागि होइन।"</string>
- <string name="permlab_copyProtectedData" msgid="4341036311211406692">"सामाग्रीको नकल गर्नुहोस्"</string>
- <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"अनुप्रयोगलाई सामग्री प्रतिलिपि गर्न पूर्वनिर्धारित कन्टेनर सेवा आह्वान गर्न अनुमति दिन्छ। साधारण अनुप्रयोगहरूद्वाराको प्रयोगको लागि होइन।"</string>
- <string name="permlab_route_media_output" msgid="1642024455750414694">"मिडिया परिणाम दिशानिर्देश गर्नुहोस्"</string>
- <string name="permdesc_route_media_output" msgid="4932818749547244346">"मिडिया परिणामलाई अन्य बाहिरी उपकरणहरूसँग लैजानको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
- <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"किगार्ड सुरक्षित भण्डारण पहुँच गर्नुहोस्"</string>
- <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"अनुप्रयोगलाई किगार्ड सुरक्षित भण्डारण पहुँच गर्न अनुमति दिन्छ।"</string>
- <string name="permlab_control_keyguard" msgid="172195184207828387">"किगार्ड प्रदर्शन गर्ने र लुकाउने नियन्त्रण गर्नुहोस्"</string>
- <string name="permdesc_control_keyguard" msgid="3043732290518629061">"अनुप्रयोगलाई किगार्ड नियन्त्रण गर्न अनुमति दिन्छ।"</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"जुम नियन्त्रणको लागि दुई चोटि टच गर्नुहोस्"</string>
- <string name="gadget_host_error_inflating" msgid="4882004314906466162">"विजेट थप गर्न सकिँदैन।"</string>
- <string name="ime_action_go" msgid="8320845651737369027">"जानुहोस्"</string>
- <string name="ime_action_search" msgid="658110271822807811">"खोज्नुहोस्"</string>
- <string name="ime_action_send" msgid="2316166556349314424">"पठाउनुहोस्"</string>
- <string name="ime_action_next" msgid="3138843904009813834">"अर्को"</string>
- <string name="ime_action_done" msgid="8971516117910934605">"भयो"</string>
- <string name="ime_action_previous" msgid="1443550039250105948">"अघिल्लो"</string>
- <string name="ime_action_default" msgid="2840921885558045721">"चलाउनुहोस्"</string>
- <string name="dial_number_using" msgid="5789176425167573586">\n"नम्बर डायल गर्नुहोस् <xliff:g id="NUMBER">%s</xliff:g> प्रयोग गरेर"</string>
- <string name="create_contact_using" msgid="4947405226788104538">"सम्पर्क सिर्जना गर्नुहोस्\nयो <xliff:g id="NUMBER">%s</xliff:g> प्रयोग गरेर"</string>
- <string name="grant_credentials_permission_message_header" msgid="2106103817937859662">"निम्न एउटा वा धेरै अनुप्रयोगहरूले तपाईँको खातामा पहुँचको लागि अनुमति अहिले र भविष्यमा अनुरोध गर्छन्।"</string>
- <string name="grant_credentials_permission_message_footer" msgid="3125211343379376561">"के तपाईँ यस अनुरोधलाई अनुमति दिन चाहनुहुन्छ?"</string>
- <string name="grant_permissions_header_text" msgid="6874497408201826708">"अनुरोध पहुँच गर्नुहोस्"</string>
- <string name="allow" msgid="7225948811296386551">"अनुमति दिनुहोस्"</string>
- <string name="deny" msgid="2081879885755434506">"अस्वीकार गर्नुहोस्"</string>
- <string name="permission_request_notification_title" msgid="6486759795926237907">"अनुरोध गरिएको अनुमति"</string>
- <string name="permission_request_notification_with_subtitle" msgid="8530393139639560189">\n"खाता <xliff:g id="ACCOUNT">%s</xliff:g>को लागि अनुरोध गरिएको अनुमति।"</string>
- <string name="input_method_binding_label" msgid="1283557179944992649">"इनपुट विधि"</string>
- <string name="sync_binding_label" msgid="3687969138375092423">"सिङ्क गर्नुहोस्"</string>
- <string name="accessibility_binding_label" msgid="4148120742096474641">"उपलब्धता"</string>
- <string name="wallpaper_binding_label" msgid="1240087844304687662">"वालपेपर"</string>
- <string name="chooser_wallpaper" msgid="7873476199295190279">"वालपेपर परिवर्तन गर्नुहोस्"</string>
- <string name="notification_listener_binding_label" msgid="2014162835481906429">"सूचना सुन्नेवाला"</string>
- <string name="vpn_title" msgid="19615213552042827">"VPN सक्रिय भयो"</string>
- <string name="vpn_title_long" msgid="6400714798049252294">"VPN <xliff:g id="APP">%s</xliff:g>द्वारा सक्रिय गरिएको हो"</string>
- <string name="vpn_text" msgid="3011306607126450322">"नेटवर्क प्रबन्ध गर्न छुनुहोस्।"</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g>सँग जोडिएको छ। नेटवर्क व्यवस्थापन गर्नको लागि छुनुहोस्।"</string>
- <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>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"कन्फिगर गर्न टच गर्नुहोस्"</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>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"कार मोडबाट निस्कन छुनुहोस्।"</string>
- <string name="tethered_notification_title" msgid="3146694234398202601">"टेथर गर्ने वा हटस्पट सक्रिय"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"सेटअप गर्न टच गर्नुहोस्।"</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>
- <string name="throttle_warning_notification_title" msgid="4890894267454867276">"उच्च मोबाइल डेटा प्रयोग"</string>
- <string name="throttle_warning_notification_message" msgid="3340822228599337743">"मोबाइल डेटा प्रयोगको बारेमा अरू थप जान्नको लागि छुनुहोस्।"</string>
- <string name="throttled_notification_title" msgid="6269541897729781332">"मोबाइल डेटा सीमा पार भयो"</string>
- <string name="throttled_notification_message" msgid="5443457321354907181">"मोबाइल डेटा प्रयोग बारे थप सिक्न छुनुहोस्।"</string>
- <string name="no_matches" msgid="8129421908915840737">"कुनै मिलेन"</string>
- <string name="find_on_page" msgid="1946799233822820384">"पृष्ठमा फेला पार्नुहोस्"</string>
- <plurals name="matches_found">
- <item quantity="one" msgid="8167147081136579439">"१ मेल"</item>
- <item quantity="other" msgid="4641872797067609177">"<xliff:g id="TOTAL">%d</xliff:g> को <xliff:g id="INDEX">%d</xliff:g>"</item>
- </plurals>
- <string name="action_mode_done" msgid="7217581640461922289">"भयो"</string>
- <string name="progress_unmounting" product="nosdcard" msgid="3923810448507612746">"USB भण्डारण अनमाउन्ट गर्दै..."</string>
- <string name="progress_unmounting" product="default" msgid="1327894998409537190">"SD कार्ड अनमाउन्ट गर्दै…"</string>
- <string name="progress_erasing" product="nosdcard" msgid="4521573321524340058">"USB भण्डारण मेटाउँदै…"</string>
- <string name="progress_erasing" product="default" msgid="6596988875507043042">"SD कार्ड मेटाउँदै…"</string>
- <string name="format_error" product="nosdcard" msgid="6299769563624776948">"USB भण्डारणलाई मेटाउन सकेन।"</string>
- <string name="format_error" product="default" msgid="7315248696644510935">"SD कार्ड मेटाउन सकेन"</string>
- <string name="media_bad_removal" msgid="7960864061016603281">"SD कार्ड अनमाउन्ट हुनुभन्दा पहिला निकालियो।"</string>
- <string name="media_checking" product="nosdcard" msgid="418188720009569693">"अहिले USB भण्डारण जाँच भइरहेको छ।"</string>
- <string name="media_checking" product="default" msgid="7334762503904827481">"SD कार्ड अहिले परीक्षण भइरहेको छ।"</string>
- <string name="media_removed" msgid="7001526905057952097">"SD कार्ड हटाइयो।"</string>
- <string name="media_shared" product="nosdcard" msgid="5830814349250834225">"SD कार्ड कम्प्युटरद्वारा अहिले प्रयोगमा छ।"</string>
- <string name="media_shared" product="default" msgid="5706130568133540435">"SD कार्ड अहिले कम्प्युटरद्वारा प्रयोगमा छ।"</string>
- <string name="media_unknown_state" msgid="729192782197290385">"बाह्य मिडिया अज्ञात अवस्थामा।"</string>
- <string name="share" msgid="1778686618230011964">"साझेदारी गर्नुहोस्"</string>
- <string name="find" msgid="4808270900322985960">"पत्ता लगाउनुहोस्"</string>
- <string name="websearch" msgid="4337157977400211589">"वेब खोजी"</string>
- <string name="find_next" msgid="5742124618942193978">"अर्को भेटाउनुहोस्"</string>
- <string name="find_previous" msgid="2196723669388360506">"अघिल्लो फेला पार्नुहोस्"</string>
- <string name="gpsNotifTicker" msgid="5622683912616496172">"<xliff:g id="NAME">%s</xliff:g> बाट स्थान अनुरोध"</string>
- <string name="gpsNotifTitle" msgid="5446858717157416839">"स्थान अनुरोध"</string>
- <string name="gpsNotifMessage" msgid="1374718023224000702">"<xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>) द्वारा अनुरोध गरिएको"</string>
- <string name="gpsVerifYes" msgid="2346566072867213563">"हो"</string>
- <string name="gpsVerifNo" msgid="1146564937346454865">"होइन"</string>
- <string name="sync_too_many_deletes" msgid="5296321850662746890">"सीमा नाघेकाहरू मेट्नुहोस्"</string>
- <string name="sync_too_many_deletes_desc" msgid="496551671008694245">"त्यहाँ <xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> मेटाइएका आइटमहरू छन् <xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g>को लागि, खाता <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g>। तपाईं के गर्न चाहनु हुन्छ?"</string>
- <string name="sync_really_delete" msgid="2572600103122596243">"वस्तुहरू मेट्नुहोस्"</string>
- <string name="sync_undo_deletes" msgid="2941317360600338602">"मेटिएकाहरू पूर्ववत बनाउनुहोस्।"</string>
- <string name="sync_do_nothing" msgid="3743764740430821845">"अहिलेको लागि केही नगर्नुहोस्"</string>
- <string name="choose_account_label" msgid="5655203089746423927">"एउटा खाता छान्‍नुहोस्"</string>
- <string name="add_account_label" msgid="2935267344849993553">"एउटा खाता थप्नुहोस्"</string>
- <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>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<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>
- <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"घन्टा बढाउनुहोस्"</string>
- <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"घन्टा घटाउनुहोस्"</string>
- <string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"PM सेट गर्नुहोस्"</string>
- <string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"AM सेट गर्नुहोस्"</string>
- <string name="date_picker_increment_month_button" msgid="5369998479067934110">"महिना बढाउनुहोस्"</string>
- <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"महिना घटाउनुहो्स्"</string>
- <string name="date_picker_increment_day_button" msgid="7130465412308173903">"दिन बढाउनुहोस्"</string>
- <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"दिन घटाउनुहोस्"</string>
- <string name="date_picker_increment_year_button" msgid="6318697384310808899">"वर्ष बढाउनुहोस्"</string>
- <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"वर्ष घटाउनुहोस्"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"रद्द गर्नुहोस्"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"मेट्नुहोस्"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"भयो"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"मोड परिवर्तन गर्नुहोस्"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"प्रविष्टि गर्नुहोस्"</string>
- <string name="activitychooserview_choose_application" msgid="2125168057199941199">"एउटा अनुप्रयोग छान्नुहोस्"</string>
- <string name="shareactionprovider_share_with" msgid="806688056141131819">"साझेदारी गर्नुहोस्..."</string>
- <string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> सँग साझेदारी गर्नुहोस्"</string>
- <string name="content_description_sliding_handle" msgid="415975056159262248">"धिसार्ने ह्यान्डल। छुनुहोस् &amp; समाउनुहोस्।"</string>
- <string name="description_direction_up" msgid="7169032478259485180">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>को लागि माथि धिसार्नुहोस्"</string>
- <string name="description_direction_down" msgid="5087739728639014595">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> को लागि तल स्लाइड गर्नुहोस्।"</string>
- <string name="description_direction_left" msgid="7207478719805562165">"स्लाइड <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>को लागि बायाँ।"</string>
- <string name="description_direction_right" msgid="8034433242579600980">"स्लाइड <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>को लागि दायाँ।"</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"अनलक गर्नुहोस्"</string>
- <string name="description_target_camera" msgid="969071997552486814">"क्यामेरा"</string>
- <string name="description_target_silent" msgid="893551287746522182">"मौन"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"आवाज चालू"</string>
- <string name="description_target_search" msgid="3091587249776033139">"खोज्नुहोस्"</string>
- <string name="description_target_unlock_tablet" msgid="3833195335629795055">"खोल्नलाइ हुत्त्याउनुहोस्।"</string>
- <string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"बोलिएको पासवर्ड कुञ्जीहरू सुन्नको लागि हेडसेट प्लग इन गर्नुहोस्।"</string>
- <string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"डट।"</string>
- <string name="action_bar_home_description" msgid="5293600496601490216">"गृह खोज्नुहोस्"</string>
- <string name="action_bar_up_description" msgid="2237496562952152589">"माथि खोज्नुहोस्"</string>
- <string name="action_menu_overflow_description" msgid="2295659037509008453">"थप विकल्पहरू"</string>
- <string name="action_bar_home_description_format" msgid="7965984360903693903">"%1$s, %2$s"</string>
- <string name="action_bar_home_subtitle_description_format" msgid="6985546530471780727">"%1$s, %2$s, %3$s"</string>
- <string name="storage_internal" msgid="4891916833657929263">"आन्तरिक भण्डारण"</string>
- <string name="storage_sd_card" msgid="3282948861378286745">"SD कार्ड"</string>
- <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>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"उपयोग र सेटिङहरू हेर्न छुनुहोस्।"</string>
- <string name="data_usage_3g_limit_title" msgid="7093334419518706686">"2G-3G डेटा असक्षम गरिएको"</string>
- <string name="data_usage_4g_limit_title" msgid="7636489436819470761">"4G डेटा असक्षम गरियो"</string>
- <string name="data_usage_mobile_limit_title" msgid="7869402519391631884">"मोबाइल डेटा असक्षम पारियो।"</string>
- <string name="data_usage_wifi_limit_title" msgid="8992154736441284865">"वाइ-फाइ डेटा असक्षम गरियो"</string>
- <string name="data_usage_limit_body" msgid="3317964706973601386">"सक्षम पार्न छुनुहोस्।"</string>
- <string name="data_usage_3g_limit_snoozed_title" msgid="7026739121138005231">"2G-3G डेटा सीमा भन्दा पार भएको छ"</string>
- <string name="data_usage_4g_limit_snoozed_title" msgid="1106562779311209039">"4G डेटा SIMा नाघ्यो"</string>
- <string name="data_usage_mobile_limit_snoozed_title" msgid="279240572165412168">"मोवाइल डेटा SIMा नाघ्यो"</string>
- <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>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"अवरोध हटाउन छुनुहोस्।"</string>
- <string name="ssl_certificate" msgid="6510040486049237639">"सुरक्षा प्रमाणपत्र"</string>
- <string name="ssl_certificate_is_valid" msgid="6825263250774569373">"प्रमाणपत्र मान्य छ।"</string>
- <string name="issued_to" msgid="454239480274921032">"द्वारा जारी गरिएको:"</string>
- <string name="common_name" msgid="2233209299434172646">"साधारण नाम:"</string>
- <string name="org_name" msgid="6973561190762085236">"संगठन:"</string>
- <string name="org_unit" msgid="7265981890422070383">"संगठनात्मक एकाइ:"</string>
- <string name="issued_by" msgid="2647584988057481566">"द्वारा जारी गरिएको:"</string>
- <string name="validity_period" msgid="8818886137545983110">"मान्यता:"</string>
- <string name="issued_on" msgid="5895017404361397232">"जारी गरिएको:"</string>
- <string name="expires_on" msgid="3676242949915959821">"अवधि समाप्त:"</string>
- <string name="serial_number" msgid="758814067660862493">"क्रम संख्या:"</string>
- <string name="fingerprints" msgid="4516019619850763049">"औँठाछापहरू:"</string>
- <string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-२५६ औंठाछाप:"</string>
- <string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1 औंलाछाप:"</string>
- <string name="activity_chooser_view_see_all" msgid="4292569383976636200">"सबै हेर्नुहोस्"</string>
- <string name="activity_chooser_view_dialog_title_default" msgid="4710013864974040615">"गतिविधि छनौट गर्नुहोस्"</string>
- <string name="share_action_provider_share_with" msgid="5247684435979149216">"साझेदारी गर्नुहोस्..."</string>
- <string name="status_bar_device_locked" msgid="3092703448690669768">"उपकरण लक छ।"</string>
- <string name="list_delimeter" msgid="3975117572185494152">", "</string>
- <string name="sending" msgid="3245653681008218030">"पठाउँदै..."</string>
- <string name="launchBrowserDefault" msgid="2057951947297614725">"ब्राउजर सुरु गर्ने हो?"</string>
- <string name="SetupCallDefault" msgid="5834948469253758575">"कल स्वीकार गर्नुहुन्छ?"</string>
- <string name="activity_resolver_use_always" msgid="8017770747801494933">"सधैँ"</string>
- <string name="activity_resolver_use_once" msgid="2404644797149173758">"एउटा मात्र"</string>
- <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"ट्याब्लेट"</string>
- <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"फोन"</string>
- <string name="default_audio_route_name_headphones" msgid="8119971843803439110">"हेडफोनहरू"</string>
- <string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"डक स्पिकरहरू"</string>
- <string name="default_media_route_name_hdmi" msgid="2450970399023478055">"HDMI"</string>
- <string name="default_audio_route_category_name" msgid="3722811174003886946">"प्रणाली"</string>
- <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"ब्लुटुथ अडियो"</string>
- <string name="wireless_display_route_description" msgid="9070346425023979651">"ताररहित प्रदर्शन"</string>
- <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"भयो"</string>
- <string name="media_route_button_content_description" msgid="5758553567065145276">"मिडियाको उत्पादन"</string>
- <string name="media_route_status_scanning" msgid="7279908761758293783">"स्क्यान गर्दै ..."</string>
- <string name="media_route_status_connecting" msgid="6422571716007825440">"जडान हुँदै..."</string>
- <string name="media_route_status_available" msgid="6983258067194649391">"उपलब्ध"</string>
- <string name="media_route_status_not_available" msgid="6739899962681886401">"उपलब्ध छैन"</string>
- <string name="media_route_status_in_use" msgid="4533786031090198063">"प्रयोगमा छ"</string>
- <string name="display_manager_built_in_display_name" msgid="2583134294292563941">"पूर्व-निर्मित स्क्रिन"</string>
- <string name="display_manager_hdmi_display_name" msgid="1555264559227470109">"HDMI स्क्रिन"</string>
- <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"आवरण #<xliff:g id="ID">%1$d</xliff:g>"</string>
- <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string>
- <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", सुरक्षित"</string>
- <string name="wifi_display_notification_title" msgid="2223050649240326557">"ताररहित प्रदर्शन जोडिएको छ"</string>
- <string name="wifi_display_notification_message" msgid="4498802012464170685">"अर्को उपकरणमा यो स्क्रिनले देखाइरहेको छ"</string>
- <string name="wifi_display_notification_disconnect" msgid="6183754463561153372">"विच्छेदन गर्नुहोस्"</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"आपतकालीन कल"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ढाँचा बिर्सनु भयो"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"गलत ढाँचा"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"गलत पासवर्ड"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"गलत PIN"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"<xliff:g id="NUMBER">%1$d</xliff:g>सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"आफ्नो ढाँचा कोर्नुहोस्"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"SIM PIN प्रविष्टि गर्नुहोस्"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"PIN प्रविष्टि गर्नुहोस्"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"पासवर्ड प्रविष्टि गर्नुहोस्"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM कार्ड अहिले असक्षम छ। सुचारु गर्नको लागि PUK कोड प्रविष्टि गर्नुहोस्। विवरणको लागि वाहकलाई सम्पर्क गर्नुहोस्।"</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"इच्छित PIN कोड प्रविष्टि गर्नुहोस्"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"मनपर्दो PIN कोड निश्चित गर्नुहोस्"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM कार्ड अनलक गर्दै…"</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"गलत PIN कोड।"</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"४ देखि ८ वाट नम्बर भएको एउटा PIN टाइप गर्नुहोस्।"</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK कोड ८ वटा नम्बर वा सो भन्दा बढी हुनुपर्छ।"</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"PUK कोड पुन:प्रदान गर्नुहोस्। धेरै पुन:प्रयासहरूले SIMलाई स्थायी रूपमा निष्क्रिय गरिदिने छ।"</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN कोडहरू मेल खाएन"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"निकै धेरै ढाँचा कोसिसहरू"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"अनलक गर्नको लागि, तपाईँको Google खाताको साथ साइन इन गर्नुहोस्।"</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"प्रयोगकर्ता नाम (इमेल)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"पासवर्ड"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"साइन इन गर्नुहोस्"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"अमान्य प्रयोगकर्तानाम वा पासवर्ड।"</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"के तपाईँले उपयोगकर्ता नाम वा पासवर्ड बिर्सनुभयो?\n"<b>"google.com/accounts/recovery"</b>" मा जानुहोस्।"</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"खाता जाँच हुँदै…"</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"तपाईँले गलत तरिकाले तपाईँको PIN <xliff:g id="NUMBER_0">%d</xliff:g> पटक टाइप गर्नु भएको छ। \n\n<xliff:g id="NUMBER_1">%d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"तपाईँले तपाईँक पासवर्ड <xliff:g id="NUMBER_0">%d</xliff:g> पटक गलत टाइप गर्नुभएको छ। \n\n <xliff:g id="NUMBER_1">%d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"तपाईँले तपाईँको अनलक ढाँचा गलत तरिकाले <xliff:g id="NUMBER_0">%d</xliff:g> पटक खिच्नु भएको छ। \n\n <xliff:g id="NUMBER_1">%d</xliff:g> सेकेन्डमा फेरि कोसिस गर्नुहोस्।"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"तपाईँले ट्याब्लेटलाई अनलक गर्न गलत तरिकाले <xliff:g id="NUMBER_0">%d</xliff:g> पटक कोसिस गर्नु भएको छ। <xliff:g id="NUMBER_1">%d</xliff:g> पछि थप असफल प्रयासहरू, ट्याब्लेट पूर्वनिर्धारित कार्यशालामा पुनःसेट गरिने छ र सबै प्रयोग डेटा हराउने छ।"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"तपाईँले गलतसँग फोनलाई अनलक गर्न <xliff:g id="NUMBER_0">%d</xliff:g> पटक कोसिस गर्नु भयो। <xliff:g id="NUMBER_1">%d</xliff:g> पछि थप असफल कोसिसहरू, फोनलाई पूर्वनिर्धारित कार्यशालामा पुनःसेट गरिने छ र सबै प्रयोग डेटा हराउने छ।"</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"तपाईँले ट्यब्लेटलाई अनलक गर्न गलत तरिकाले <xliff:g id="NUMBER">%d</xliff:g> पटक प्रयास गर्नु भएको छ। अब ट्याब्लेटलाई पूर्वनिर्धारित कार्यशालामा पुनःसेट गरिने छ।"</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"तपाईंले गलत तरिकाले फोन <xliff:g id="NUMBER">%d</xliff:g> पटक अनलक गर्ने प्रयत्न गर्नुभयो। अब फोन फ्याक्ट्रि पूर्वनिर्धारितमा पुनःसेट हुने छ।"</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"तपाईंले गलत तरिकाले आफ्नो अनलक ढाँचा <xliff:g id="NUMBER_0">%d</xliff:g> पटक कोर्नुभयो। <xliff:g id="NUMBER_1">%d</xliff:g> विफल प्रयत्नहरू पछि, तपाईंलाई आफ्नो ट्याब्लेट इमेल खाता प्रयोग गरेर अनलक गर्न सोधिने छ।\n\n फेरि प्रयास गर्नुहोस् <xliff:g id="NUMBER_2">%d</xliff:g> सेकेन्डहरूमा।"</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"तपाईँले आफ्नो अनलक ढाँचा गलत रूपमा <xliff:g id="NUMBER_0">%d</xliff:g> पटक तान्नु भएको छ। <xliff:g id="NUMBER_1">%d</xliff:g> धेरै असफल प्रयासहरूपछि, तपाईँलाई एउटा इमेल खाताको प्रयोग गरेर तपाईँको फोन अनलक गर्न सोधिने छ।\n\n फेरि <xliff:g id="NUMBER_2">%d</xliff:g> सेकेन्डमा प्रयास गर्नुहोस्।"</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"हटाउनुहोस्"</string>
- <string name="safe_media_volume_warning" product="default" msgid="7324161939475478066">"आवाज सल्लाह दिएको तहभन्दा माथि बढाउने हो?\nठूलो आवाजमा सुन्दा लामो समयको लागि तपाईँको सुन्ने शक्तीलाई खत्तम पार्न सक्छ।"</string>
- <string name="continue_to_enable_accessibility" msgid="1626427372316070258">"उपलब्धता सक्षम पार्न दुईवटा औंलाहरूले थिचिरहनुहोस्।"</string>
- <string name="accessibility_enabled" msgid="1381972048564547685">"पहुँच सक्षम गरिएको।"</string>
- <string name="enable_accessibility_canceled" msgid="3833923257966635673">"पहुँचयोग्यता रद्द गरियो।"</string>
- <string name="user_switched" msgid="3768006783166984410">"अहिलेको प्रयोगकर्ता <xliff:g id="NAME">%1$s</xliff:g>।"</string>
- <string name="owner_name" msgid="2716755460376028154">"मालिक"</string>
- <string name="error_message_title" msgid="4510373083082500195">"त्रुटि"</string>
- <string name="app_no_restricted_accounts" msgid="5739463249673727736">"प्रतिबन्धित प्रोफाइलहरूको लागि यस अनुप्रयोगले खाताहरू समर्थन गर्दैन"</string>
- <string name="app_not_found" msgid="3429141853498927379">"यस कार्य सम्हालने कुनै अनुप्रयोग भेटिएन"</string>
- <string name="revoke" msgid="5404479185228271586">"रद्द गर्नुहोस्"</string>
- <string name="mediaSize_iso_a0" msgid="7875427489420821793">"ISO A0"</string>
- <string name="mediaSize_iso_a1" msgid="3760734499050875356">"ISO A1"</string>
- <string name="mediaSize_iso_a2" msgid="5973266378020144382">"ISO A2"</string>
- <string name="mediaSize_iso_a3" msgid="1373407105687300884">"ISO A3"</string>
- <string name="mediaSize_iso_a4" msgid="6689772807982597254">"ISO A4"</string>
- <string name="mediaSize_iso_a5" msgid="5353549652015741040">"ISO A5"</string>
- <string name="mediaSize_iso_a6" msgid="8585038048674911907">"ISO A6"</string>
- <string name="mediaSize_iso_a7" msgid="6641836716963839119">"ISO A7"</string>
- <string name="mediaSize_iso_a8" msgid="7571139437465693355">"ISO A8"</string>
- <string name="mediaSize_iso_a9" msgid="1378455891957115079">"ISO A9"</string>
- <string name="mediaSize_iso_a10" msgid="2480747457429475344">"ISO A10"</string>
- <string name="mediaSize_iso_b0" msgid="3965935097661108039">"ISO B0"</string>
- <string name="mediaSize_iso_b1" msgid="2505753285010115437">"ISO B1"</string>
- <string name="mediaSize_iso_b2" msgid="8763874709859458453">"ISO B2"</string>
- <string name="mediaSize_iso_b3" msgid="4210506688191764076">"ISO B3"</string>
- <string name="mediaSize_iso_b4" msgid="5749404165888526034">"ISO B4"</string>
- <string name="mediaSize_iso_b5" msgid="7640627414621904733">"ISO B5"</string>
- <string name="mediaSize_iso_b6" msgid="7342988864712748544">"ISO B6"</string>
- <string name="mediaSize_iso_b7" msgid="5069844065235382429">"ISO B7"</string>
- <string name="mediaSize_iso_b8" msgid="7316818922278779774">"ISO B8"</string>
- <string name="mediaSize_iso_b9" msgid="5414727094026532341">"ISO B9"</string>
- <string name="mediaSize_iso_b10" msgid="5251253731832048185">"ISO B10"</string>
- <string name="mediaSize_iso_c0" msgid="4003138342671964217">"ISO C0"</string>
- <string name="mediaSize_iso_c1" msgid="1935188063393553008">"ISO C1"</string>
- <string name="mediaSize_iso_c2" msgid="3197307969712069904">"ISO C2"</string>
- <string name="mediaSize_iso_c3" msgid="4335826087321913508">"ISO C3"</string>
- <string name="mediaSize_iso_c4" msgid="3745639598281015005">"ISO C4"</string>
- <string name="mediaSize_iso_c5" msgid="8269457765822791013">"ISO C5"</string>
- <string name="mediaSize_iso_c6" msgid="566666105260346930">"ISO C6"</string>
- <string name="mediaSize_iso_c7" msgid="8678413180782608498">"ISO C7"</string>
- <string name="mediaSize_iso_c8" msgid="8392376206627041730">"ISO C8"</string>
- <string name="mediaSize_iso_c9" msgid="9191613372324845405">"ISO C9"</string>
- <string name="mediaSize_iso_c10" msgid="7327709699184920822">"ISO C10"</string>
- <string name="mediaSize_na_letter" msgid="4191805615829472953">"पत्र"</string>
- <string name="mediaSize_na_gvrnmt_letter" msgid="7853382192649405507">"सरकारी पत्र"</string>
- <string name="mediaSize_na_legal" msgid="6697982988283823150">"कानूनी"</string>
- <string name="mediaSize_na_junior_legal" msgid="3727743969902758948">"Junior Legal"</string>
- <string name="mediaSize_na_ledger" msgid="281871464896601236">"Ledger"</string>
- <string name="mediaSize_na_tabloid" msgid="5775966416333578127">"Tabloid"</string>
- <string name="write_fail_reason_cancelled" msgid="7091258378121627624">"रद्द गरियो"</string>
- <string name="write_fail_reason_cannot_write" msgid="8132505417935337724">"सामाग्री लेखनमा त्रुटि"</string>
- <string name="restr_pin_enter_pin" msgid="3395953421368476103">"PIN प्रविष्टि गर्नुहोस्"</string>
- <string name="restr_pin_enter_old_pin" msgid="1462206225512910757">"वर्तमान PIN"</string>
- <string name="restr_pin_enter_new_pin" msgid="5959606691619959184">"नयाँ PIN"</string>
- <string name="restr_pin_confirm_pin" msgid="8501523829633146239">"नयाँ PIN निश्चित गर्नुहोस्"</string>
- <string name="restr_pin_create_pin" msgid="8017600000263450337">"प्रतिबन्धहरूलाई परिवर्तन गर्नको लागि एउटा PIN बनाउनुहोस्"</string>
- <string name="restr_pin_error_doesnt_match" msgid="2224214190906994548">"PIN हरू मेल खाएनन्। पुनः प्रयास गर्नुहोस्।"</string>
- <string name="restr_pin_error_too_short" msgid="8173982756265777792">"PIN अति छोटो भयो। कम्तीमा ४ अङ्क हुन आवश्यक छ।"</string>
- <plurals name="restr_pin_countdown">
- <item quantity="one" msgid="4835639969503729874">"गलत PIN । १ सेकेन्डमा पुनः प्रयास गर्नुहोस्।"</item>
- <item quantity="other" msgid="8030607343223287654">"गलत PIN । <xliff:g id="COUNT">%d</xliff:g> सेकेन्डमा पुनः प्रयास गर्नुहोस्।"</item>
- </plurals>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"पट्टि देखिने बनाउन स्क्रिनको छेउमा स्वाइप गर्नुहोस्"</string>
-</resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 24d6c66d01de..30afea7e14e9 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Probeer het over <xliff:g id="COUNT">%d</xliff:g> seconden opnieuw"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Probeer het later opnieuw"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Van boven omlaag vegen: voll. scherm sluiten"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Veeg omlaag vanaf de bovenkant om het volledige scherm te sluiten."</string>
</resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index edbbe1274b5b..0e1bee9d2a25 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Spróbuj za <xliff:g id="COUNT">%d</xliff:g> s"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Spróbuj ponownie później"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Przesuń z góry w dół, by zamknąć pełny ekran"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Przesuń z góry w dół, by zamknąć pełny ekran."</string>
</resources>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index bc9dddf1db64..f3c4020b51e6 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Tente em: <xliff:g id="COUNT">%d</xliff:g> seg"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Tente novamente mais tarde"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Deslize para baixo para sair do ecrã inteiro"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Deslize rapidamente para baixo para sair do ecrã inteiro."</string>
</resources>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index f81af65793a4..15a6130ee22c 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Tente novamente em <xliff:g id="COUNT">%d</xliff:g> segundos"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Tente novamente mais tarde"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Deslize para baixo para sair da tela inteira"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Deslize para baixo para sair da tela inteira"</string>
</resources>
diff --git a/core/res/res/values-rm/strings.xml b/core/res/res/values-rm/strings.xml
index 6607f0206743..9154621e762a 100644
--- a/core/res/res/values-rm/strings.xml
+++ b/core/res/res/values-rm/strings.xml
@@ -2732,6 +2732,7 @@
<!-- no translation found for restr_pin_countdown:other (4730868920742952817) -->
<!-- no translation found for restr_pin_try_later (973144472490532377) -->
<skip />
+ <!-- no translation found for immersive_mode_confirmation (7227416894979047467) -->
<!-- no translation found for immersive_mode_confirmation (8554991488096662508) -->
<skip />
</resources>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 7d8c5f2a85a8..dc5a21168eb0 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Reîncercați în <xliff:g id="COUNT">%d</xliff:g> sec."</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Reîncercați mai târziu"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Glisați în jos pt. a ieși din ecran complet"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Glisați în jos pentru a ieși din ecran complet."</string>
</resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 3da595058948..534808426b19 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Повтор через <xliff:g id="COUNT">%d</xliff:g> сек."</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Повторите попытку позже."</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Чтобы вернуться в обычный режим, проведите пальцем вниз"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Чтобы вернуться в обычный режим, проведите пальцем вниз"</string>
</resources>
diff --git a/core/res/res/values-si-rLK/strings.xml b/core/res/res/values-si-rLK/strings.xml
deleted file mode 100644
index 367de51d56ef..000000000000
--- a/core/res/res/values-si-rLK/strings.xml
+++ /dev/null
@@ -1,1591 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="byteShort" msgid="8340973892742019101">"B"</string>
- <string name="kilobyteShort" msgid="5973789783504771878">"KB"</string>
- <string name="megabyteShort" msgid="6355851576770428922">"MB"</string>
- <string name="gigabyteShort" msgid="3259882455212193214">"GB"</string>
- <string name="terabyteShort" msgid="231613018159186962">"TB"</string>
- <string name="petabyteShort" msgid="5637816680144990219">"PB"</string>
- <string name="fileSizeSuffix" msgid="9164292791500531949">"<xliff:g id="NUMBER">%1$s</xliff:g><xliff:g id="UNIT">%2$s</xliff:g>"</string>
- <string name="untitled" msgid="4638956954852782576">"&lt;නම් යොදා නැත&gt;"</string>
- <string name="ellipsis" msgid="7899829516048813237">"…"</string>
- <string name="ellipsis_two_dots" msgid="1228078994866030736">"‥"</string>
- <string name="emptyPhoneNumber" msgid="7694063042079676517">"(දුරකථන අංකයක් නොමැත)"</string>
- <string name="unknownName" msgid="2277556546742746522">"(නොදනී)"</string>
- <string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"කටහඬ තැපෑල"</string>
- <string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN1"</string>
- <string name="mmiError" msgid="5154499457739052907">"සම්බන්ධතා ගැටළුවක් හෝ අවලංගු MMI කේතයකි."</string>
- <string name="mmiFdnError" msgid="5224398216385316471">"ස්ථාවර ඇමතීම් අංක වලට පමණක් මෙහෙයුම සීමාකර ඇත."</string>
- <string name="serviceEnabled" msgid="8147278346414714315">"සේවාව සබල කරන ලදි."</string>
- <string name="serviceEnabledFor" msgid="6856228140453471041">"සේවාව සබලයි, සඳහා:"</string>
- <string name="serviceDisabled" msgid="1937553226592516411">"සේවාව අබල කරන ලදි."</string>
- <string name="serviceRegistered" msgid="6275019082598102493">"ලියාපදිංචි වීම සාර්ථකයි."</string>
- <string name="serviceErased" msgid="1288584695297200972">"මැකීම සාර්ථක විය."</string>
- <string name="passwordIncorrect" msgid="7612208839450128715">"වැරදි මුරපදයක්."</string>
- <string name="mmiComplete" msgid="8232527495411698359">"MMI සම්පූර්ණයි."</string>
- <string name="badPin" msgid="9015277645546710014">"ඔබ ටයිප් කරන ලද පරණ PIN එක වැරදිය."</string>
- <string name="badPuk" msgid="5487257647081132201">"ඔබ ටයිප් කරන ලද PUK එක වැරදියි."</string>
- <string name="mismatchPin" msgid="609379054496863419">"ඔබ ටයිප් කල PIN නොගැළපේ."</string>
- <string name="invalidPin" msgid="3850018445187475377">"4 සිට 8 දක්වා අංක සහිත PIN එකක් ටයිප් කරන්න."</string>
- <string name="invalidPuk" msgid="8761456210898036513">"අංක 8 ක් හෝ ඊට වැඩි PUK එකක් ටයිප් කරන්න."</string>
- <string name="needPuk" msgid="919668385956251611">"ඔබගේ SIM පත පතට PUK අගුළු වැටී ඇත. එම අගුල ඇරීමට PUK කේතය ටයිප් කරන්න."</string>
- <string name="needPuk2" msgid="4526033371987193070">"SIM පතේ අගුළු ඇරීමට PUK2 ටයිප් කරන්න."</string>
- <string name="imei" msgid="2625429890869005782">"IMEI"</string>
- <string name="meid" msgid="4841221237681254195">"MEID"</string>
- <string name="ClipMmi" msgid="6952821216480289285">"පැමිණෙන අමතන්නාගේ ID"</string>
- <string name="ClirMmi" msgid="7784673673446833091">"පිටතට යන අමතන්නාගේ ID"</string>
- <string name="CfMmi" msgid="5123218989141573515">"ඇමතුම ඉදිරියට යැවීම"</string>
- <string name="CwMmi" msgid="9129678056795016867">"ඇමතුම් රැඳීම"</string>
- <string name="BaMmi" msgid="455193067926770581">"ඇමතුම අවහිර කිරීම"</string>
- <string name="PwdMmi" msgid="7043715687905254199">"මුරපදය වෙනස් කිරීම"</string>
- <string name="PinMmi" msgid="3113117780361190304">"PIN වෙනස් වී ඇත"</string>
- <string name="CnipMmi" msgid="3110534680557857162">"ඇමතුම් අංකය ඇත"</string>
- <string name="CnirMmi" msgid="3062102121430548731">"ඇමතුම් අංකය සීමා කර ඇත"</string>
- <string name="ThreeWCMmi" msgid="9051047170321190368">"තුන් මාර්ග ඇමතීම"</string>
- <string name="RuacMmi" msgid="7827887459138308886">"අනවශ්‍ය හිරිහැරදායක ඇමතුම් ප්‍රතික්ෂේප කිරීම"</string>
- <string name="CndMmi" msgid="3116446237081575808">"ඇමතීමේ අංකය භාරදීම"</string>
- <string name="DndMmi" msgid="1265478932418334331">"බාධා නොකරන්න"</string>
- <string name="CLIRDefaultOnNextCallOn" msgid="429415409145781923">"අමතන්නාගේ ID සුපුරුද්ද අනුව සීමා වී ඇත. මීළඟ ඇමතුම: සීමා කර ඇත"</string>
- <string name="CLIRDefaultOnNextCallOff" msgid="3092918006077864624">"අමතන්නාගේ ID සුපුරුදු අනුව සීමා වී ඇත. මීළඟ ඇමතුම: සීමා කර නැත"</string>
- <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"අමතන්නාගේ ID සුපුරුදු අනුව සීමා වී නැත. මීළඟ ඇමතුම: සීමා කර ඇත"</string>
- <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"අමතන්නාගේ ID සුපුරුදු අනුව සීමා වී නැත. මීළඟ ඇමතුම: සීමා කර ඇත"</string>
- <string name="serviceNotProvisioned" msgid="8614830180508686666">"සේවාවන් සපයා නැත."</string>
- <string name="CLIRPermanent" msgid="3377371145926835671">"අමතන්නාගේ ID සැකසීම ඔබට වෙනස්කල නොහැක."</string>
- <string name="RestrictedChangedTitle" msgid="5592189398956187498">"සීමිත ප්‍රවේශය වෙනස් කෙරිණි"</string>
- <string name="RestrictedOnData" msgid="8653794784690065540">"දත්ත සේවාව අවහිර කර ඇත."</string>
- <string name="RestrictedOnEmergency" msgid="6581163779072833665">"හදිසි සේවාව අවහිර කර ඇත."</string>
- <string name="RestrictedOnNormal" msgid="4953867011389750673">"හඬ සේවාව බාධා කර ඇත."</string>
- <string name="RestrictedOnAllVoice" msgid="3396963652108151260">"සියලු හඬ සේවා අවහිර කර ඇත."</string>
- <string name="RestrictedOnSms" msgid="8314352327461638897">"SMS සේවාව අවහිර කර ඇත."</string>
- <string name="RestrictedOnVoiceData" msgid="996636487106171320">"හඬ/දත්ත සේවා අවහිර කර ඇත."</string>
- <string name="RestrictedOnVoiceSms" msgid="1888588152792023873">"හඬ/SMS සේවා අවහිර කර ඇත."</string>
- <string name="RestrictedOnAll" msgid="5643028264466092821">"සියලුම හඬ/දත්ත/SMS සේවාවන් බාධා කර ඇත."</string>
- <string name="serviceClassVoice" msgid="1258393812335258019">"හඬ"</string>
- <string name="serviceClassData" msgid="872456782077937893">"දත්ත"</string>
- <string name="serviceClassFAX" msgid="5566624998840486475">"ෆැක්ස්"</string>
- <string name="serviceClassSMS" msgid="2015460373701527489">"SMS"</string>
- <string name="serviceClassDataAsync" msgid="4523454783498551468">"අසමමුහුර්ත කරන්න"</string>
- <string name="serviceClassDataSync" msgid="7530000519646054776">"සමමුහුර්ත කිරීම"</string>
- <string name="serviceClassPacket" msgid="6991006557993423453">"පැකැට්ටුව"</string>
- <string name="serviceClassPAD" msgid="3235259085648271037">"PAD"</string>
- <string name="roamingText0" msgid="7170335472198694945">"රෝමිං දර්ශකය සක්‍රියයි"</string>
- <string name="roamingText1" msgid="5314861519752538922">"රෝමිං දර්ශකය අක්‍රියයි"</string>
- <string name="roamingText2" msgid="8969929049081268115">"රෝමිං දර්ශකය සැණෙලි වෙයි"</string>
- <string name="roamingText3" msgid="5148255027043943317">"වටපිටාවෙන් ඉවත්ව"</string>
- <string name="roamingText4" msgid="8808456682550796530">"ගොඩනැගිල්ලෙන් පිටත"</string>
- <string name="roamingText5" msgid="7604063252850354350">"රෝමිං - කැමති පද්ධතිය"</string>
- <string name="roamingText6" msgid="2059440825782871513">"රෝමිං - ලබාගත හැකි පද්ධතිය"</string>
- <string name="roamingText7" msgid="7112078724097233605">"රෝමිං - මිත්‍ර හවුල්කරු"</string>
- <string name="roamingText8" msgid="5989569778604089291">"රෝමිං - අධිමිල හවුල්කරු"</string>
- <string name="roamingText9" msgid="7969296811355152491">"රෝමිං - සම්පූර්ණ සේවා ක්‍රියාකාරිත්වය"</string>
- <string name="roamingText10" msgid="3992906999815316417">"රෝමිං - අසම්පූර්ණ සේවා ක්‍රියාකාරීත්වය"</string>
- <string name="roamingText11" msgid="4154476854426920970">"රෝමිං බැනරය සක්‍රීයයි"</string>
- <string name="roamingText12" msgid="1189071119992726320">"රෝමිං බැනරය අක්‍රියයි"</string>
- <string name="roamingTextSearching" msgid="8360141885972279963">"සේවාව සඳහා සොයමින්"</string>
- <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: ඉදිරියට නොයවන ලදි"</string>
- <string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string>
- <string name="cfTemplateForwardedTime" msgid="9206251736527085256">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: තත්පර <xliff:g id="TIME_DELAY">{2}</xliff:g> ට පසුව <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string>
- <string name="cfTemplateRegistered" msgid="5073237827620166285">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: ඉදිරියට නොයවන ලදි"</string>
- <string name="cfTemplateRegisteredTime" msgid="6781621964320635172">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: ඉදිරියට නොයවන ලදි"</string>
- <string name="fcComplete" msgid="3118848230966886575">"අංග කේතය සම්පූර්ණයි."</string>
- <string name="fcError" msgid="3327560126588500777">"සම්බන්ධතා ගැටළුවක් හෝ අවලංගු විශේෂාංග කේතයකි."</string>
- <string name="httpErrorOk" msgid="1191919378083472204">"හරි"</string>
- <string name="httpError" msgid="7956392511146698522">"ජාල දෝෂයක් තිබුණි."</string>
- <string name="httpErrorLookup" msgid="4711687456111963163">"URL ය සෙවිය නොහැක."</string>
- <string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"අඩවියේ සත්‍යාපන පටිපාටිය වෙත සහය නොදක්වයි."</string>
- <string name="httpErrorAuth" msgid="1435065629438044534">"සත්‍යාපනය කළ නොහැක"</string>
- <string name="httpErrorProxyAuth" msgid="1788207010559081331">"ප්‍රොක්සි සේවාදායකය හරහා සත්‍යාපනය අසාර්ථකය."</string>
- <string name="httpErrorConnect" msgid="8714273236364640549">"සේවාදායකයාට සම්බන්ධ විය නොහැක."</string>
- <string name="httpErrorIO" msgid="2340558197489302188">"සේවාදායකයා සමග සම්බන්ධ වීමට නොහැකි විය. නැවත උත්සහ කරන්න."</string>
- <string name="httpErrorTimeout" msgid="4743403703762883954">"සේවාදායකය වෙත සම්බන්ධතාවය කල් ඉකුත් විණි."</string>
- <string name="httpErrorRedirectLoop" msgid="8679596090392779516">"පිටුවේ බොහෝ සේවාදායක නැවත හරවා යැවීම් අඩංගු වේ."</string>
- <string name="httpErrorUnsupportedScheme" msgid="5015730812906192208">"ප්‍රොටෝකෝලය වෙත සහය නොදක්වයි."</string>
- <string name="httpErrorFailedSslHandshake" msgid="96549606000658641">"සුරක්ෂිත සම්බන්ධතාවයක් පිහිටුවීමට නොහැකි විය."</string>
- <string name="httpErrorBadUrl" msgid="3636929722728881972">"URL වලංගු නොවන නිසා පිටුව විවෘත කිරීමට නොහැකි විය."</string>
- <string name="httpErrorFile" msgid="2170788515052558676">"ගොනුව වෙත පිවිසිය නොහැක."</string>
- <string name="httpErrorFileNotFound" msgid="6203856612042655084">"ඉල්ලන ලද ගොනු සෙවිය නොහැක."</string>
- <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"ඉල්ලීම් විශාල ප්‍රමාණයක් ක්‍රියාත්මක වෙමින් පවතියි. පසුව නැවත උත්සාහ කරන්න."</string>
- <string name="notification_title" msgid="8967710025036163822">"<xliff:g id="ACCOUNT">%1$s</xliff:g> සඳහා පුරනය වීමේ දෝෂයක්"</string>
- <string name="contentServiceSync" msgid="8353523060269335667">"සමමුහුර්ත කිරීම"</string>
- <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"සමමුහුර්ත කරන්න"</string>
- <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"<xliff:g id="CONTENT_TYPE">%s</xliff:g> මැකීම් වැඩිය"</string>
- <string name="low_memory" product="tablet" msgid="6494019234102154896">"ටැබ්ලට් ආචයනය පිරි ඇත. ඉඩ නිදහස් කිරීමට සමහර ගොනු මකන්න."</string>
- <string name="low_memory" product="default" msgid="3475999286680000541">"දුරකථන ආචයනය පිරී ඇත. ඉඩ නිදහස් කිරීමට සමහර ගොනු මකන්න."</string>
- <string name="me" msgid="6545696007631404292">"මම"</string>
- <string name="power_dialog" product="tablet" msgid="8545351420865202853">"ටැබ්ලට විකල්ප"</string>
- <string name="power_dialog" product="default" msgid="1319919075463988638">"දුරකථන විකල්පයන්"</string>
- <string name="silent_mode" msgid="7167703389802618663">"නිහඬ ආකාරය"</string>
- <string name="turn_on_radio" msgid="3912793092339962371">"නොරැහන් සක්‍රිය කරන්න"</string>
- <string name="turn_off_radio" msgid="8198784949987062346">"නොරැහැන් අක්‍රිය කරන්න"</string>
- <string name="screen_lock" msgid="799094655496098153">"තිර අගුල"</string>
- <string name="power_off" msgid="4266614107412865048">"බලය අක්‍රිය කරන්න"</string>
- <string name="silent_mode_silent" msgid="319298163018473078">"හඬ නඟනය අක්‍රියයි"</string>
- <string name="silent_mode_vibrate" msgid="7072043388581551395">"හඬ නඟනය කම්පනය"</string>
- <string name="silent_mode_ring" msgid="8592241816194074353">"හඬ නඟනය සක්‍රීයයි"</string>
- <string name="shutdown_progress" msgid="2281079257329981203">"වසා දමමින්…"</string>
- <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"ඔබගේ ටැබ්ලටය වැසේ."</string>
- <string name="shutdown_confirm" product="default" msgid="649792175242821353">"ඔබගේ දුරකථනය වැසේ."</string>
- <string name="shutdown_confirm_question" msgid="2906544768881136183">"ඔබට වසා දැමීමට අවශ්‍යද?"</string>
- <string name="reboot_safemode_title" msgid="7054509914500140361">"ආරක්‍ෂිත ආකාරයට නැවත පණ ගන්වන්න"</string>
- <string name="reboot_safemode_confirm" msgid="55293944502784668">"ආරක්‍ෂිත ආකාරයට නැවත පණ ගැන්වීමට ඔබට අවශ්‍යද? මෙමඟින් ඔබ ස්ථාපිත කර ඇති සියලුම තෙවන පාර්ශවීය යෙදුම් සියල්ල අබල වී යයි. ඔබ නැවත පණ ගන්වන විට ඒවා නැවත පිහිටුවීම සිදු වේ."</string>
- <string name="recent_tasks_title" msgid="3691764623638127888">"මෑත"</string>
- <string name="no_recent_tasks" msgid="8794906658732193473">"මෑත යෙදුම් නැත."</string>
- <string name="global_actions" product="tablet" msgid="408477140088053665">"ටැබ්ලට් විකල්ප"</string>
- <string name="global_actions" product="default" msgid="2406416831541615258">"දුරකථන විකල්ප"</string>
- <string name="global_action_lock" msgid="2844945191792119712">"තිර අගුල"</string>
- <string name="global_action_power_off" msgid="4471879440839879722">"බලය අක්‍රිය කරන්න"</string>
- <string name="global_action_bug_report" msgid="7934010578922304799">"දෝෂ වර්තාව"</string>
- <string name="bugreport_title" msgid="2667494803742548533">"දෝෂ වාර්තාවක් ගන්න"</string>
- <string name="bugreport_message" msgid="398447048750350456">"ඊ-තැපැල් පණිවිඩයක් ලෙස යැවීමට මෙය ඔබගේ වත්මන් උපාංග තත්වය ගැන තොරතුරු එකතු කරනු ඇත. දෝෂ වාර්තාව ආරම්භ කර එය යැවීමට සූදානම් කරන තෙක් එයට කිසියම් කාලයක් ගතවනු ඇත; කරුණාකර ඉවසන්න."</string>
- <string name="global_action_toggle_silent_mode" msgid="8219525344246810925">"නිහඬ ආකාරය"</string>
- <string name="global_action_silent_mode_on_status" msgid="3289841937003758806">"ශබ්දය අක්‍රියයි"</string>
- <string name="global_action_silent_mode_off_status" msgid="1506046579177066419">"හඬ සක්‍රියයි"</string>
- <string name="global_actions_toggle_airplane_mode" msgid="5884330306926307456">"අහස්යානා ආකාරය"</string>
- <string name="global_actions_airplane_mode_on_status" msgid="2719557982608919750">"අහස්යානා ආකාරය සක්‍රීයයි."</string>
- <string name="global_actions_airplane_mode_off_status" msgid="5075070442854490296">"අහස්යානා අකාරය අක්‍රියයි"</string>
- <string name="status_bar_notification_info_overflow" msgid="5301981741705354993">"999+"</string>
- <string name="safeMode" msgid="2788228061547930246">"ආරක්‍ෂිත ආකාරය"</string>
- <string name="android_system_label" msgid="6577375335728551336">"Android පද්ධතිය"</string>
- <string name="permgrouplab_costMoney" msgid="5429808217861460401">"ඔබගේ මුදල් වැයවන සේවාවන්"</string>
- <string name="permgroupdesc_costMoney" msgid="3293301903409869495">"ඔබගෙන් මුදල් යන දේවල් කරන්න."</string>
- <string name="permgrouplab_messages" msgid="7521249148445456662">"ඔබගේ පණිවිඩ"</string>
- <string name="permgroupdesc_messages" msgid="7821999071003699236">"ඔබගේ SMS, ඊ-තැපැල්, සහ වෙනත් පණිවිඩ කියවන්න සහ ලියන්න."</string>
- <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"ඔබගේ පෞද්ගලික තොරතුරු"</string>
- <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"ඔබගේ සම්බන්ධතා පතේ ආචයනය කරන ලද, ඔබ ගැන තොරතුරු වලට ඍජු ප්‍රවේශය."</string>
- <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"ඔබගේ සමාජයීය තොරතුරු"</string>
- <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"ඔබගේ සම්බන්ධතා සහ සාමාජ සම්බන්ධයන් ගැන තොරතුරු වෙත ඍජු ප්‍රවේශය."</string>
- <string name="permgrouplab_location" msgid="635149742436692049">"ඔබගේ ස්ථානය"</string>
- <string name="permgroupdesc_location" msgid="5704679763124170100">"ඔබගේ භෞතික පිහිටුම නිරීක්ෂණය කරයි."</string>
- <string name="permgrouplab_network" msgid="5808983377727109831">"ජාල සන්නිවේදනය"</string>
- <string name="permgroupdesc_network" msgid="4478299413241861987">"විවිධ ජාල විශේෂාංග වෙත පිවිසෙන්න."</string>
- <string name="permgrouplab_bluetoothNetwork" msgid="1585403544162128109">"බ්ලූටූත්"</string>
- <string name="permgroupdesc_bluetoothNetwork" msgid="5625288577164282391">"බ්ලූටූත් ඔස්සේ උපාංග සහ ජාල වෙත පිවිසෙන්න."</string>
- <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"ශ්‍රව්‍ය සැකසීම්"</string>
- <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"ශ්‍රව්‍ය සැකසීම් වෙනස් කරන්න."</string>
- <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"බැටරිය වෙත බලපායි"</string>
- <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"බැටරියේ බලය ක්ෂණිකව අඩු වන විශේෂාංග භාවිත කරන්න."</string>
- <string name="permgrouplab_calendar" msgid="5863508437783683902">"දින දර්ශනය"</string>
- <string name="permgroupdesc_calendar" msgid="5777534316982184416">"දින දර්ශන සිද්ධින්ට සෘජුව ප්‍රවේශ වීම."</string>
- <string name="permgrouplab_dictionary" msgid="4148597128843641379">"පරිශීලක ශබ්ද කෝෂය කියවන්න"</string>
- <string name="permgroupdesc_dictionary" msgid="7921166355964764490">"පරිශීලක ශබ්ද කෝෂයේ වචන කියවීම."</string>
- <string name="permgrouplab_writeDictionary" msgid="8090237702432576788">"පරිශීලක ශබ්දකෝෂයට ලිවිම"</string>
- <string name="permgroupdesc_writeDictionary" msgid="2711561994497361646">"පරිශීලක ශබ්දකෝෂයට වචන එකතු කරන්න."</string>
- <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"පිටුසන් සහ ඉතිහාසය"</string>
- <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"පිටුසන් සහ බ්‍රව්සර ඉතිහාසය වෙත ඍජු ප්‍රවේශය."</string>
- <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"සීනුව"</string>
- <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"සීනුව සකසන්න."</string>
- <string name="permgrouplab_voicemail" msgid="4162237145027592133">"හඬ තැපෑල"</string>
- <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"හඬ තැපෑල වෙත ඍජු ප්‍රවේශය."</string>
- <string name="permgrouplab_microphone" msgid="171539900250043464">"මයික්‍රොෆෝනය"</string>
- <string name="permgroupdesc_microphone" msgid="7106618286905738408">"ශබ්දය පටිගත කිරීමට මයික්‍රොෆෝනය වෙත ඍජු ප්‍රවේශය."</string>
- <string name="permgrouplab_camera" msgid="4820372495894586615">"කැමරාව"</string>
- <string name="permgroupdesc_camera" msgid="2933667372289567714">"ඡායාරූප හෝ වීඩියෝ ග්‍රහණය සඳහා කැමරාව වෙත ඍජු ප්‍රවේශය."</string>
- <string name="permgrouplab_screenlock" msgid="8275500173330718168">"අගුළු තිරය"</string>
- <string name="permgroupdesc_screenlock" msgid="7067497128925499401">"ඔබගේ උපාංගයේ අගුළු තිරයේ ක්‍රියාකාරිත්වයට බලපාන හැකියාව."</string>
- <string name="permgrouplab_appInfo" msgid="8028789762634147725">"ඔබගේ යෙදුම් වල තොරතුරු"</string>
- <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"ඔබගේ උපාංගයේ වෙනත් යෙදුම් වල ක්‍රියාකාරිත්වයට බලපෑම් කළ හැකි බව."</string>
- <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"බිතුපත"</string>
- <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"උපාංග බිතුපතේ සැකසීම් වෙනස් කරන්න."</string>
- <string name="permgrouplab_systemClock" msgid="406535759236612992">"ඔරලෝසුව"</string>
- <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"උපාංග කාල හෝ කාල කලාප වෙනස් කරන්න."</string>
- <string name="permgrouplab_statusBar" msgid="2095862568113945398">"තත්ව තීරුව"</string>
- <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"උපාංග තත්ව තීරු සැකසීම් වෙනස් කරන්න."</string>
- <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"සමමුහුර්ත සැකසීම්"</string>
- <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"සමමුහුර්ත සැකසීම් වෙත ප්‍රවේශය."</string>
- <string name="permgrouplab_accounts" msgid="3359646291125325519">"ඔබගේ ගිණුම්"</string>
- <string name="permgroupdesc_accounts" msgid="4948732641827091312">"ලබාගත හැකි ගිණුම් වලට ප්‍රවේශ වීම."</string>
- <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"දෘඩාංග පාලක"</string>
- <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"හෑන්ඩ්සෙටයේ දෘඩාංග වලට සෘජුවම ප්‍රවේශ වන්න."</string>
- <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"දුරකථන ඇමතුම්"</string>
- <string name="permgroupdesc_phoneCalls" msgid="7489701620446183770">"දුරකථන ඇමතුම් නිරීක්ෂණය කරන්න, පටිගත කරන්න සහ ක්‍රියාත්මක කරන්න."</string>
- <string name="permgrouplab_systemTools" msgid="4652191644082714048">"පද්ධති මෙවලම්"</string>
- <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"පද්ධතියේ පහල මට්ටම් ප්‍රවේශය සහ පාලනය."</string>
- <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"සංවර්ධක මෙවලම්"</string>
- <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"යෙදුම් සංවර්ධකයන් සඳහා පමණක් අවශ්‍ය විශේෂාංග."</string>
- <string name="permgrouplab_display" msgid="4279909676036402636">"වෙනත් යෙදුම් UI"</string>
- <string name="permgroupdesc_display" msgid="6051002031933013714">"වෙනත් යෙදුම්වල UI සඳහා බලපායි."</string>
- <string name="permgrouplab_storage" msgid="1971118770546336966">"ආචයනය"</string>
- <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USB ආචයනය වෙත ප්‍රවේශය."</string>
- <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD පත වෙත ප්‍රවේශය."</string>
- <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"ප්‍රවේශ්‍යතා විශේෂාංග"</string>
- <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"උපකාරීවන තාක්ෂණ ඉල්ලීම් කළ හැකි විශේෂාංග."</string>
- <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"කවුළු අන්න්තර්ගතය ලබාගන්න"</string>
- <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ඔබ අන්තර්ක්‍රියාකාරී වන කවුළුවේ අන්තර්ගතය පරීක්ෂා කරන්න."</string>
- <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ස්පර්ශයෙන් ගවේෂණය සක්‍රිය කරන්න"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"ස්පර්ශ කරන අයිතම හඬ නගා කතා කෙරෙනු ඇති අතර ඉංගිති භාවිතයෙන් තිරය ගවේෂණය කිරීමට පුළුවනි."</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>
- <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"ණයවරපත් අංක සහ මුරපද වැනි පුද්ගලික දත්ත ඇතුළත් වේ."</string>
- <string name="permlab_statusBar" msgid="7417192629601890791">"තත්ව තීරුව අබල කරන්න හෝ වෙනස් කරන්න"</string>
- <string name="permdesc_statusBar" msgid="8434669549504290975">"තත්ව තීරුව අක්‍රිය කිරීමට හෝ පද්ධති නිරූපක එකතු හෝ ඉවත් කිරීමට යෙදුමට අවසර දේ."</string>
- <string name="permlab_statusBarService" msgid="7247281911387931485">"තත්ව තීරුව"</string>
- <string name="permdesc_statusBarService" msgid="716113660795976060">"තත්ව තීරුව වීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_expandStatusBar" msgid="1148198785937489264">"තත්ව තීරුව දිග හැරීම/හැකිලීම"</string>
- <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"තත්ව තීරුව දිග හැරීමට හෝ හැකිළීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"පිටවන ඇමතුම් වල මග වෙනස් කිරීම"</string>
- <string name="permdesc_processOutgoingCalls" msgid="5331318931937402040">"පිටවන ඇමතුම් සකස් කිරීමට සහ ඇමතීමට නියමිත අංකය වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. මෙම අවසරයෙන් යෙදුමට පිටවන ඇමතුම් නිරීක්ෂණය, නැවත හැරවීම හෝ වැළක්වීම අවසර දෙයි."</string>
- <string name="permlab_receiveSms" msgid="8673471768947895082">"කෙටි පණිවිඩ ලබාගැනීම (SMS)"</string>
- <string name="permdesc_receiveSms" msgid="6424387754228766939">"SMS පණිවිඩ ලැබීමට සහ ක්‍රියාත්මක කිරීමට යෙදුමට අවසර දෙන්න. මෙහි තේරුම යෙදුමට ඔබගේ උපාංගයට ලැබෙන පණිවිඩ අධීක්ෂණය කිරීමට හැකිවීම වන අතර, ඒවා ඔබට නොපෙන්වා මකා දැමීමටද හැකි වීමයි."</string>
- <string name="permlab_receiveMms" msgid="1821317344668257098">"පෙළ පණිවුඩ ලබාගන්න (MMS)"</string>
- <string name="permdesc_receiveMms" msgid="533019437263212260">"MMS පණිවිඩ සොයා ලබාගැනීමට සහ ක්‍රියාත්මක කිරීමට යෙදුමට අවසර දෙන්න. යෙදුම නිරීක්ෂණය කරනු ලබන අතර ඔබට ලැබුන පණිවිඩ පෙන්වීමෙන් තොරවම මකා දැමිය හැකි බව මෙමඟින් අදහස් කරයි."</string>
- <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"හදිසි විකාශන ලබා ගැනීම"</string>
- <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"හදිසි විකාශ පණිවිඩ ලැබීමට සහ ක්‍රියාත්මක කිරීමට යෙදුමට අවසර දෙන්න. පද්ධති යෙදුම් වලට පමණක් මෙම අවසරය අදාළ වෙයි."</string>
- <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"සෙල් ප්‍රචාරණ පණිවිඩ කියවීම"</string>
- <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"ඔබගේ උපාංගයට ලැබුණු සෙල් විකාශන පණිවිඩ කියවීමට යෙදුමට අවසර දෙන්න. ඔබට හදිසි අවස්ථාවන් පිළිබඳ අනතුරු ඇඟවීමට සෙල් විකාශන පණිවිඩ ඇතැම් ස්ථානවල සිට යවනු ලබයි. හදිසි සෙල් විකාශන ලැබෙන අවස්ථාවකදී, අනිෂ්ට යෙදුම් මඟින් ඔබගේ උපාංගයට කාර්ය සාධනයට හෝ ක්‍රියකරණයට බාධා සිදුවිය හැක."</string>
- <string name="permlab_sendSms" msgid="5600830612147671529">"SMS පණිවිඩ යැවීම"</string>
- <string name="permdesc_sendSms" msgid="7094729298204937667">"SMS පණිවිඩ යැවීමට යෙදුමට අවසර දෙන්න. මෙමඟින් බලාපොරොත්තු නොවූ ප්‍රතිඵල අත් විය හැක. අනිෂ්ට යෙදුම් ඔබගේ තහවුරුවකින් තොරව පණිවිඩ යැවීම මඟින් ඔබගේ මුදල් වැය කල හැක."</string>
- <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"පණිවිඩ සිදුවීම හරහා ප්‍රතිචාර යැවීම"</string>
- <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"පැමිණෙන ඇමතුම් සඳහා පණිවිඩ ඔස්සේ ප්‍රතිචාර සිදුවීම් හසුරුවීමට වෙනත් පණිවිඩ යෙදුම් සඳහා ඉල්ලීම් යැවීමට, යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_readSms" msgid="8745086572213270480">"ඔබගේ පෙළ පණිවුඩ කියවන්න (SMS හෝ MMS)"</string>
- <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"ඔබගේ ටැබ්ලටයේ හෝ SIM පතේ ආචයනය කර ඇති SMS පණිවිඩ කියවීමට යෙදුමට අවසර දෙන්න. අන්තර්ගතය හෝ විශවාසදයි බවින් තොරවම සියලු SMS පණිවිඩ කියවීමට මෙමගින් යෙදුමට අවසර දෙයි."</string>
- <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"ඔබගේ දුරකථනයේ හෝ SIM පතේ ආචයනය කරන ලද SMS පණිවිඩ කියවීමට යෙදුමට අවසර දෙන්න. අන්තර්ගතය හෝ විශ්වාසදායී බවින් තොරවම සියලු SMS පණිවිඩ කියවීමට මෙමගින් යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_writeSms" msgid="3216950472636214774">"ඔබගේ කෙටි පණිවිඩ සංස්කරණය කිරීම (SMS හෝ MMS)"</string>
- <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"ඔබගේ ටැබ්ලටයේ හෝ SIM පතේ ගබඩා කර ඇති SMS පණිවිඩ වෙත ලිවීමට යෙදුමට අවසර දෙන්න. අනිෂ්ට යෙදුම් ඔබගේ පණිවිඩ මකා දැමිය හැක."</string>
- <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"ඔබගේ ටැබ්ලටයේ හෝ SIM පතේ ආචයනය කරන ලද SMS පණිවිඩ ලිවීමට යෙදුමට අවසර දෙන්න. අනිෂ්ට යෙදුම් ඔබගේ පණිවිඩ මකා දැමිය හැක."</string>
- <string name="permlab_receiveWapPush" msgid="5991398711936590410">"පෙළ පණිවිඩ ලබාගැනීම (WAP)"</string>
- <string name="permdesc_receiveWapPush" msgid="748232190220583385">"WAP පණිවිඩ ලැබීමට සහ ක්‍රියාවලි කිරීමට යෙදුමට අවසර දෙන්න. මෙම අවසරයෙහි ඔබව ඒවාට පෙන්වීමකින් තොරව ඔබට පණිවිඩ නිරීක්ෂණයට හෝ මැකීමට හැකියාව ඇතුළත් වේ."</string>
- <string name="permlab_getTasks" msgid="6466095396623933906">"ධාවනය වන යෙදුම් ලබාගැනීම"</string>
- <string name="permdesc_getTasks" msgid="7454215995847658102">"දැනට සහ මෑත ක්‍රියාත්මක කාර්යයන් පිළිබඳ විස්තරාත්මක තොරතුරු සොයා ලබාගැනීමට යෙදුමට ඉඩ දෙන්න. මෙය කුමන යෙදුම් උපාංගයේ භාවිතා කරන්නේද යන තොරතුරු යෙදුම්වලට සොයා ගැනීමට ඉඩ දිය හැක."</string>
- <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"පරිශීලකයන් අතර අන්තර්ක්‍රියාකාරී වන්න"</string>
- <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"උපාංගයේ විවිධ පරිශීලකයන් හරහා ක්‍රියාවන් දැක්වීමට යෙදුමට අවසර දෙන්න. පරිශීලකයන් අතර ආරක්ෂාව කඩකිරීමට අනිෂ්ට යෙදුම් විසින් මෙය භාවිතා කිරීමට ඉඩ ඇත."</string>
- <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"පරිශීලකයන් අතර අන්තර් ක්‍රියාකාරී වීමට සම්පූර්ණ බලපත්‍රය"</string>
- <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"පරිශීලකයන් හරහා සිදු කළ හැකි සියලු අන්තර් ක්‍රියා වලට අවසර දෙන්න."</string>
- <string name="permlab_manageUsers" msgid="1676150911672282428">"පරිශීලකයන් කළමනාකරණය කරන්න"</string>
- <string name="permdesc_manageUsers" msgid="8409306667645355638">"විස්තර ලබා ගැනීම, නිර්මාණකරණය, මකාදැමීම ඇතුළු පරිශීලකයන් කළමනාකරණයට යෙදුම්වලට අවසර දෙන්න."</string>
- <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"ධාවනය වන යෙදුම් වල තොරතුරු සොයා ලබාගැනීම"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"දැනට සහ මෑතක ක්‍රියාත්මක කාර්යයන් පිළිබඳ විස්තරාත්මක තොරතුරු ලබාගැනීමට යෙදුමට අවසර දෙන්න අනිෂ්ට යෙදුම් අනෙකුත් යෙදුම් පිළිබඳ පුද්ගලික තොරතුරු සොයා ගැනීමට ඉඩ තිබේ."</string>
- <string name="permlab_reorderTasks" msgid="2018575526934422779">"ධාවනය වන යෙදුම් නැවත අනුපිළිවෙලට සැකසීම"</string>
- <string name="permdesc_reorderTasks" msgid="7734217754877439351">"පෙරබිමට හෝ පසුබිමට සිදුවීම් ගෙනයාමට යෙදුමට අවසර දෙන්න. ඔබගේ ආදානයකින් තොරව යෙදුම මෙය සිදුකරයි."</string>
- <string name="permlab_removeTasks" msgid="6821513401870377403">"යෙදුම් ධාවනය නවත්වන්න"</string>
- <string name="permdesc_removeTasks" msgid="1394714352062635493">"කාර්යයන් ඉවත් කිරීමට සහ ඒවායෙහි යෙදුම් නැති කිරීමට යෙදුමට අවසර දෙන්න. අනෙක් යෙදුම් හැසිරීම බාධා කිරීමට අනිෂ්ට යෙදුම්වලට අවසර දෙන්න."</string>
- <string name="permlab_manageActivityStacks" msgid="7391191384027303065">"ක්‍රියාකාරකම් අට්ටි කළමනාකරණය කරන්න"</string>
- <string name="permdesc_manageActivityStacks" msgid="1615881933034084440">"වෙනත් යෙදුම් ධාවනය වන ක්‍රියාකාරකම් අට්ටි වලට එකතු කිරීමට, ඉවත් කිරීමට, සහ වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. වෙනත් යෙදුම්වල හැසිරීම අනිෂ්ට යෙදුම් මගින් බාධා විය හැක."</string>
- <string name="permlab_startAnyActivity" msgid="2918768238045206456">"ඕනෑම ක්‍රියාවක් අරඹන්න"</string>
- <string name="permdesc_startAnyActivity" msgid="997823695343584001">"අවසර ආරක්ෂාව හෝ යැවුම් තත්වයෙන් තොරවම ඕනෑම ක්‍රියාවක් ආරම්භ කිරීමට යෙදුමට අවසර දේ."</string>
- <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"තිර ගැළපුම සැකසීම"</string>
- <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"වෙනත් යෙදුම්වල තිර ගැලපුම් මාදිලිය පාලනයට යෙදුමට අවසර දෙන්න. වෙනත් යෙදුම්වල හැසිරීම අනිෂ්ට යෙදුම් කැඩිය හැක."</string>
- <string name="permlab_setDebugApp" msgid="3022107198686584052">"යෙදුම් නිදොස්කරණය සබල කිරීම"</string>
- <string name="permdesc_setDebugApp" msgid="4474512416299013256">"වෙනත් යෙදුමක් සඳහා නිදොස්කරණය සක්‍රිය කිරීමට යෙදුමට අවසර දෙන්න. වෙනත් යෙදුම් විනාශ කිරීමට අනිෂ්ට යෙදුම් මෙය භාවිත කළ හැක."</string>
- <string name="permlab_changeConfiguration" msgid="4162092185124234480">"පද්ධති සංදර්ශක සැකසීම් වෙනස් කරන්න"</string>
- <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"පෙදෙසිය හෝ සම්පූර්ණ අකුරු ප්‍රමාණය වැනි පවතින වින්‍යාසය වෙනස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_enableCarMode" msgid="5684504058192921098">"මෝටර් රථ ආකාරය ක්‍රියාත්මක කරන්න"</string>
- <string name="permdesc_enableCarMode" msgid="4853187425751419467">"කාර් ආකාරය සබල කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"වෙනත් යෙදුම් වැසීම"</string>
- <string name="permdesc_killBackgroundProcesses" msgid="4593353235959733119">"අනෙක් යෙදුම්වල පසුබිම් ක්‍රියාවලි අවසන් කිරීමට යෙදුමට අවසර දෙන්න. අනෙක් යෙදුම් ධාවනය නැවතීමට මෙය හේතුවක් වේ."</string>
- <string name="permlab_forceStopPackages" msgid="2329627428832067700">"වෙනත් යෙදුම් බලෙන් නවත්වන්න"</string>
- <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"යෙදුමට බලෙන් අනෙක් යෙදුම් නැවතීමට අවසර දෙන්න."</string>
- <string name="permlab_forceBack" msgid="652935204072584616">"යෙදුම වැසීමට බල කිරීම"</string>
- <string name="permdesc_forceBack" msgid="3892295830419513623">"නැවතීමට පෙරබිමේ ඇති ඕනෑම ක්‍රියාවක් බලෙන් නැවතීමට සහ පිටුපසට යාමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිදා අවශ්‍ය නොවේ."</string>
- <string name="permlab_dump" msgid="1681799862438954752">"පද්ධති අභ්‍යන්තර තත්වය සොයා ලබා ගන්න"</string>
- <string name="permdesc_dump" msgid="1778299088692290329">"පද්ධතියේ අභ්‍යන්තර තත්වය ලැබීමට යෙදුමට අවසර දෙන්න. ඔවුන් සාමාන්‍යයෙන් භාවිත නොකරන විවිධත්වයකින් යුත් පුද්ගලික සහ ආරක්‍ෂිත තොරතුරු අනිෂ්ට යෙදුම් සොයා ලබා ගත හැක."</string>
- <string name="permlab_retrieve_window_content" msgid="8022588608994589938">"තිර අන්තර්ගතය සොයා ලබාගැනීම"</string>
- <string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"ක්‍රියාකාරී කවුළුවක අන්තර්ගතය ලබාගැනීමට යෙදුමට අවසර දෙන්න. අනිෂ්ට යෙදුම් විසින් සම්පූර්ණ කවුළු අන්තර්ගතය ලබාගැනීම සහ මුරපදය හැර ඒවායෙහි පෙළ පරික්ෂා කිරීම සිදුකරයි."</string>
- <string name="permlab_temporary_enable_accessibility" msgid="2312612135127310254">"ප්‍රවේශ්‍යතාවය තාවකාලිකව සබල කිරීම"</string>
- <string name="permdesc_temporary_enable_accessibility" msgid="8079456293182975464">"උපාංගය වෙත ප‍්‍රවේශ්‍යතාව තාවකාලිකව සක්‍රිය කිරීමට යෙදුමට අවසර දෙන්න. පරිශීලක අවධානයකින් තොරව අනිෂ්ට යෙදුම් ප‍්‍රවේශ්‍යතාව සක්‍රිය කළ හැක."</string>
- <string name="permlab_retrieve_window_info" msgid="8532295199112519378">"තිර තොරතුරු සොයා ලබාගැනීම"</string>
- <string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"කවුළු කළමනාකරු මගින් කවුළුව ගැන තොරතුරු සොයා ලබාගැනීමට යෙදුමට අවසර දෙන්න. අභ්‍යන්තර පද්ධති භාවිතය සඳහා කැමති තොරතුරු අනිෂ්ට යෙදුම් විසින් ලබා ගත හැක."</string>
- <string name="permlab_filter_events" msgid="8675535648807427389">"සිදුවීම් පෙරන්න"</string>
- <string name="permdesc_filter_events" msgid="8006236315888347680">"පිටත් කිරීමට පෙර සියලු පරිශීලක සිදුවීම්වල ප්‍රවාහයක් පෙරීමට යොදා ගන්නා ආදාන පෙරීමක් ලියාපදිංචි කිරීමට යෙදුමට අවසර දෙන්න. පරිශීලක මැදිහත් වීමකින් තොරව පද්ධති UI අනිෂ්ට යෙදුම් පාලනය කරයි."</string>
- <string name="permlab_magnify_display" msgid="5973626738170618775">"දර්ශනය විශාලනය කරන්න"</string>
- <string name="permdesc_magnify_display" msgid="7121235684515003792">"දසුනේ අන්තර්ගතය විශාල කිරීමට යෙදුමට අවසර දෙන්න. ඇතැම් විට අනිෂ්ට යෙදුම්, උපාංගය භාවිතා කළ නොහැකි බවට පත් කරමින් දසුනේ අන්තර්ගතය වෙනස් කළ හැක."</string>
- <string name="permlab_shutdown" msgid="7185747824038909016">"අඩ වශයෙන් වැහීම"</string>
- <string name="permdesc_shutdown" msgid="7046500838746291775">"ක්‍රියාකාරකම් කළමනාකරු වැහීමේ තත්වයට දමන්න. සම්පූර්ණ වැහීමකට පත් නොකරන්න."</string>
- <string name="permlab_stopAppSwitches" msgid="4138608610717425573">"යෙදුම් මාරු වීම වැළක්වීම"</string>
- <string name="permdesc_stopAppSwitches" msgid="8262195802582255021">"වෙනත් යෙදුමක් වෙත පරිශීලකයාව මාරු වීම වළක්වයි."</string>
- <string name="permlab_getTopActivityInfo" msgid="2537922311411546016">"පවතින යෙදුමේ තොරතුරු ලබාගැනීම"</string>
- <string name="permdesc_getTopActivityInfo" msgid="2512448855496067131">"තිරයේ පෙරබිම තුළ තිබෙන දැන් පවත්නා යෙදුමේ පෞද්ගලික තොරතුරු ලබාගැනීමට දරන්නාට අවසර දෙන්න."</string>
- <string name="permlab_runSetActivityWatcher" msgid="892239094867182656">"සියලු යෙදුම් දියත් කිරීම් නිරීක්ෂණය සහ පාලනය කිරීම"</string>
- <string name="permdesc_runSetActivityWatcher" msgid="6003603162578577406">"පද්ධතිය ක්‍රියාකාරකම් දියත් කරන්නේ කෙසේදැයි නිරීක්ෂණයට සහ පාලනයට යෙදුමට අවසර දෙන්න. අනිෂ්ට යෙදුම් මගින් පද්ධතිය සම්පූර්ණයෙන්ම සම්මුතියකට එළඹිය හැක. වර්ධනය සඳහා පමණක් මෙම අවසරය අවශ්‍ය වෙයි, සාමාන්‍ය භාවිතය සඳහා කිසි විටෙකත් අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_broadcastPackageRemoved" msgid="2576333434893532475">"පැකේජ ඉවත් කිරීමේ ප්‍රචාරණයක් යවන්න"</string>
- <string name="permdesc_broadcastPackageRemoved" msgid="6621901216207931089">"යෙදුම් පැකේජයක් ඉවත්කොට ඇති බවට දැනුම්දීමක් විකාශනයට යෙදුමට අවසර දෙයි. ධාවනය වන අනෙකුත් යෙදුමක් නැති කිරීමට අනිෂ්ට යෙදුම් විසින් මෙය භාවිත කළ හැක."</string>
- <string name="permlab_broadcastSmsReceived" msgid="5689095009030336593">"SMS-ලැබීම විකාශන යැවීම"</string>
- <string name="permdesc_broadcastSmsReceived" msgid="4152037720034365492">"SMS පණිවිඩයක් හරහා ලැබුණු දැනුම්දීමක් ප්‍රචාරණයට යෙදුමට අවසර දෙන්න. පැමිණෙන SMS පණිවිඩ වංචා කිරීමට අනිෂ්ට යෙදුම් මෙය භාවිත කළ හැක."</string>
- <string name="permlab_broadcastWapPush" msgid="3145347413028582371">"WAP-PUSH-ලැබීම විකාශන යැවීම"</string>
- <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"WAP PUSH පණිවුඩයක් ලැබී ඇති බවට දැනුම්දීමක් විකාශනය කිරීමට යෙදුමට අවසර දෙන්න. වංචාකාරී MMS පණිවුඩ ලැබීම් හෝ නිහඬව ඕනෑම වෙබ් පිටුවක අන්තර්ගතය අනිෂ්ට විචල්‍යවලින් ඉවත් කිරීමට, අනිෂ්ට යෙදුම් විසින් මෙය භාවිතා කිරීමට ඉඩ ඇත."</string>
- <string name="permlab_setProcessLimit" msgid="2451873664363662666">"ධාවන ක්‍රියාවලි ගණන සීමා කිරීම"</string>
- <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"ධාවනය වන උපරිම ක්‍රියාවලි ගණන පාලනය කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිදා අවශ්‍ය නොවේ."</string>
- <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"පසුබිම් යෙදුම් වලට වැසීමට බලකරන්න"</string>
- <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"පසුබිමට පිවිසෙනවාත් සමඟම ක්‍රියාකාරකම් නැවතීම පාලනයට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසිසේත් අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_batteryStats" msgid="2789610673514103364">"බැටරි සංඛ්‍යාන කියවීම"</string>
- <string name="permdesc_batteryStats" msgid="5897346582882915114">"වර්තමාන පහළ මට්ටමේ බැටරිය භාවිතා දත්ත කියවීමට යෙදුමට අවසර දෙන්න. ඔබ භාවිත කරන යෙදුම් මොනවා දැයි ගැන විස්තරාත්මක තොරතුරු ගැන දැන ගැනීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_updateBatteryStats" msgid="3719689764536379557">"බැටරි සංඛ්‍යාන වෙනස් කිරීම"</string>
- <string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"එකතු කරගන්නා ලද බැටරි සංඛ්‍යාන වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් වල භාවිතයට නොවේ."</string>
- <string name="permlab_getAppOpsStats" msgid="1508779687436585744">"යෙදුමේ විකල්ප සංඛ්‍යාංක සොයා ලබාගැනීම"</string>
- <string name="permdesc_getAppOpsStats" msgid="6243887041577912877">"එකතු කරගත් යෙදුම් ක්‍රියාකාරිත්ව සංඛ්‍යා ලේඛන වෙනස් කිරීමට උපාංගයට ඉඩ දෙන්න. සාමාන්‍ය උපාංග භාවිතය සඳහා නොවේ."</string>
- <string name="permlab_updateAppOpsStats" msgid="8829097373851521505">"යෙදුම් විකල්ප සංඛ්‍යාංක වෙනස් කිරීම"</string>
- <string name="permdesc_updateAppOpsStats" msgid="50784596594403483">"එකතු කරගත් යෙදුම් ක්‍රියාකාරිත්ව සංඛ්‍යා ලේඛන වෙනස් කිරීමට යෙදුමට ඉඩ දෙන්න. සාමාන්‍ය යෙදුම් භාවිතය සඳහා නොවේ."</string>
- <string name="permlab_backup" msgid="470013022865453920">"පද්ධති උපස්ථ පාලනය කරන්න සහ නැවත පිහිටුවන්න"</string>
- <string name="permdesc_backup" msgid="6912230525140589891">"පද්ධතියේ උපස්ථය සහ උපක්‍රම නැවත පිහිටුවීම පාලනයට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් වල භාවිතය සඳහා නොවේ."</string>
- <string name="permlab_confirm_full_backup" msgid="5557071325804469102">"සම්පූර්ණ උපස්ථය හෝ මෙහෙයුම් නැවත පිහිටුවීම සනාථ කිරීම"</string>
- <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"පූර්ණ උපස්ථ තහවුරුකිරීම් UI පුරන්නට උපකරණයට ඉඩ දෙන්න. කිසිම යෙදුමක් භාවිතා නොකරනු ඇත."</string>
- <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"අවසර නොලත් කවුළුව දර්ශනය කරන්න"</string>
- <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"අභ්‍යන්තර පද්ධති පරිශීලක අතුරුමුහුණත් විසින් භාවිතා කිරීමට බලාපොරොත්තු වන කවුළු නිර්මාණය කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වල භාවිතය සඳහා නොවේ."</string>
- <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"වෙනත් යෙදුම් උඩින් අඳින්න"</string>
- <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"අනෙක් යෙදුම් මත හෝ පරිශීලක අතුරු මුහුණත් කොටස්වල ඇඳීමට යෙදුමට ඉඩ දෙන්න. එය ඔබේ භාවිතයේ ඇති ඕනෑම යෙදුමක මුහුණත සමග සම්බන්ධ වීමට හෝ අනෙක් යෙදුම් ගැන ඔබට පෙනෙන ආකාරය වෙනස් කිරීමට ඉඩ ඇත."</string>
- <string name="permlab_setAnimationScale" msgid="2805103241153907174">"ගෝලීය සජීවන වේගය වෙනස් කරන්න"</string>
- <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"ඕනෑම වෙලාවක පොදු සජීවීකරණ වේගය (වේගවත් හෝ මන්දගාමී සජීවීකරණ) වෙනස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_manageAppTokens" msgid="1286505717050121370">"යෙදුම් ටෝකන කළමනාකරණය කිරීම"</string>
- <string name="permdesc_manageAppTokens" msgid="8043431713014395671">"සාමාන්‍ය Z පටිපාටිය මඟහැරයමින් යෙදුම්වලට අයිති ටෝකන් පත් නිර්මාණයට සහ කළමනාකරණයට යෙදුම්වලට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසිසේත් අවශ්‍ය නොවේ."</string>
- <string name="permlab_freezeScreen" msgid="4708181184441880175">"තිරය නිශ්චල කරන්න"</string>
- <string name="permdesc_freezeScreen" msgid="8558923789222670064">"සම්පූර්ණ තිර සංක්‍රමණය සඳහා තිරය තාවකාලිකව මුදවිමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_injectEvents" msgid="1378746584023586600">"යතුරු සහ පාලන බොත්තම් ඔබන්න"</string>
- <string name="permdesc_injectEvents" product="tablet" msgid="206352565599968632">"තමන්ගේ ආදාන සිදුවීම් (යතුරු එබිම් , ආදී ) අනෙකුත් යෙදුම්වලට භාරදීමට යෙදුමට ඉඩ දෙන්න. අනිෂ්ට යෙදුම් මෙය ටැබ්ලටය ලබා ගැනීමට භාවිතා කිරීමට ඉඩ ඇත."</string>
- <string name="permdesc_injectEvents" product="default" msgid="653128057572326253">"වෙනත් යෙදුම්වලට එහි ආදාන සිදුවීම් (යතුරු එබීම්, යනාදිය.) ආදිය යැවීමට යෙදුමට අවසර දෙන්න. දුරකථනය අත්කර ගැනීම අනිෂ්ට යෙදුම් මෙය භාවිත කරයි."</string>
- <string name="permlab_readInputState" msgid="469428900041249234">"ඔබ ටයිප් කරන දෙය සහ ඔබ ගන්නා ක්‍රියාවන් පටිගත කරන්න"</string>
- <string name="permdesc_readInputState" msgid="8387754901688728043">"මුරපදය ටයිප් කිරීම වැනි අනෙකුත් යෙදුම් සමඟ අන්තර්ක්‍රියාකාරී වනවිට යනාදී ඔබ ඔබන යතුරු දැකීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිසේත් අදාළ නොවේ."</string>
- <string name="permlab_bindInputMethod" msgid="3360064620230515776">"ආදාන ක්‍රමයක් වෙත බඳින්න"</string>
- <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"ආදාන ක්‍රමය ඉහල මට්ටමේ අතුරු මුහුණතක් වෙත සම්බන්ධ කිරීමට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසි විටෙක අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"ප‍්‍රවේශ්‍යතා සේවාවක් වෙත බදින්න"</string>
- <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"ප‍්‍රවේශ්‍යතා සේවාවේ ඉහළ මට්ටමේ අතුරුමුහුණතට බැඳීමට දරන්නාට අවසර දේ. සාමාන්‍ය යෙදුම් සඳහා කිසිවිටක අවශ්‍ය නොවේ."</string>
- <string name="permlab_bindPrintService" msgid="8462815179572748761">"මුද්‍රණ සේවාවකට බද්ධ වී ඇත"</string>
- <string name="permdesc_bindPrintService" msgid="7960067623209111135">"මුද්‍රණ සේවාව ඉහල මට්ටමේ අතුරු මුහුණතක් වෙත සම්බන්ධ කිරීමට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසි විටෙක අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_bindPrintSpoolerService" msgid="6807762783744125954">"මුද්‍රණ සේවාවකට බද්ධ වී ඇත"</string>
- <string name="permdesc_bindPrintSpoolerService" msgid="3680552285933318372">"මුද්‍රණ සේවාව ඉහල මට්ටමේ අතුරු මුහුණතක් වෙත සම්බන්ධ කිරීමට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසි විටෙක අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_bindNfcService" msgid="2752731300419410724">"NFC සේවාව වෙත බැඳෙන්න"</string>
- <string name="permdesc_bindNfcService" msgid="6120647629174066862">"NFC කාඩ් පත් ආදර්ශනය කරන යෙදුම් රඳවනයට සම්බන්ධ වීමට ඉඩ දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිදා අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_bindTextService" msgid="7358378401915287938">"පෙළ සේවාවකට බඳින්න"</string>
- <string name="permdesc_bindTextService" msgid="8151968910973998670">"කෙටි පණිවිඩ සේවාවක (උදා. SpellCheckerService) ඉහල මට්ටමේ අතුරු මුහුණතක් වෙත සම්බන්ධ කිරීමට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසි විටෙක අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_bindVpnService" msgid="4708596021161473255">"VPN සේවාවකට බැඳීම"</string>
- <string name="permdesc_bindVpnService" msgid="2067845564581693905">"VPN සේවාව ඉහල මට්ටමේ අතුරු මුහුණතක් වෙත සම්බන්ධ කිරීමට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසි විටෙක අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_bindWallpaper" msgid="8716400279937856462">"බිතුපත වෙත බඳින්න"</string>
- <string name="permdesc_bindWallpaper" msgid="7108428692595491668">"බිතුපත ඉහල මට්ටමේ අතුරු මුහුණතක් වෙත සම්බන්ධ කිරීමට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසි විටෙක අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_bindRemoteViews" msgid="5697987759897367099">"විජට සේවාවකට බඳින්න"</string>
- <string name="permdesc_bindRemoteViews" msgid="4717987810137692572">"විජට් සේවාව ඉහල මට්ටමේ අතුරු මුහුණතක් වෙත සම්බන්ධ කිරීමට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසි විටෙක අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_bindDeviceAdmin" msgid="8704986163711455010">"උපාංග පරිපාලක සමඟ අන්තර්ක්‍රියාකාරී වීම"</string>
- <string name="permdesc_bindDeviceAdmin" msgid="569715419543907930">"උපාංග පාලකයා වෙතට අභිප්‍රායයන් යැවීමට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසි විටෙක අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_manageDeviceAdmins" msgid="4248828900045808722">"උපාංග පරිපාලකයෙක් එක් කිරීම හෝ ඉවත් කිරීම"</string>
- <string name="permdesc_manageDeviceAdmins" msgid="5025608167709942485">"දරන්නාට උපාංග පරිපාලකයින් එක් කිරීමට හෝ ඉවත් කිරීමට අවසර දේ. සාමාන්‍ය යෙදුම් වලට කිසිදා අවශ්‍ය නොවේ."</string>
- <string name="permlab_setOrientation" msgid="3365947717163866844">"තිර දිශානතිය වෙනස් කිරීම"</string>
- <string name="permdesc_setOrientation" msgid="3046126619316671476">"තිරයේ භ්‍රමණය ඕනෑම වේලාවක වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිදා අවශ්‍ය නොවනු ඇත."</string>
- <string name="permlab_setPointerSpeed" msgid="9175371613322562934">"දර්ශකයේ වේගය වෙනස් කිරීම"</string>
- <string name="permdesc_setPointerSpeed" msgid="6866563234274104233">"මූසිකයේ හෝ ට්‍රැක්පෑඩයේ වේගය ඕනෑම මොහොතක වෙනස් කිරීමට උපාංගයට ඉඩ දෙන්න. සාමාන්‍ය උපාංගයන් සඳහා කිසිදා අවශ්‍ය නොවනු ඇත."</string>
- <string name="permlab_setKeyboardLayout" msgid="4778731703600909340">"යතුරු පුවරු පිරිසැලැස්ම වෙනස් කිරීම"</string>
- <string name="permdesc_setKeyboardLayout" msgid="8480016771134175879">"යතුරුපුවරු මුහුණත වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිදා අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_signalPersistentProcesses" msgid="4539002991947376659">"යෙදුම් වෙත Linux සංඥා යැවීම"</string>
- <string name="permdesc_signalPersistentProcesses" msgid="4896992079182649141">"පවතින සියලු ක්‍රියාවලි වෙත සැපයුම් සංඥා ඉල්ලවිමට යෙදුමට අවසර දේ."</string>
- <string name="permlab_persistentActivity" msgid="8841113627955563938">"යෙදුම සැමවිටම ධාවනය කරන්න"</string>
- <string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"මතකයේ පවතින එහි කොටස් නොනැසී පැවතීමට යෙදුමට අවසර දෙන්න. වෙනත් යෙදුම් වලට මතකය සීමා කිරීමෙන් ටැබ්ලටය පමා කිරීම මගින් මෙමගින් කළ හැක."</string>
- <string name="permdesc_persistentActivity" product="default" msgid="4384760047508278272">"යෙදුමට තම කොටස් මතකය තුල නොබිඳීව රඳා පවත්වාගෙන යාමට අවසර දෙන්න. මෙය දුරකථනය මන්දගාමී කරමින් අනෙකුත් උපාංගයන් සඳහා ඉතිරි මතකය සීමා කිරීමට හැක."</string>
- <string name="permlab_deletePackages" msgid="184385129537705938">"යෙදුම් මකන්න"</string>
- <string name="permdesc_deletePackages" msgid="7411480275167205081">"Android පැකේජ මැකීමට යෙදුමට අවසර දෙන්න. වැදගත් යෙදුම් මැකීමට අනිෂ්ට යෙදුම් විසින් මෙය භාවිතා කිරීමට ඉඩ ඇත."</string>
- <string name="permlab_clearAppUserData" msgid="274109191845842756">"යෙදුමේ වෙනත් දත්ත මකන්න"</string>
- <string name="permdesc_clearAppUserData" msgid="4625323684125459488">"පරිශීලක දත්ත හිස් කිරීමට යෙදුමකට ඉඩ දේ."</string>
- <string name="permlab_deleteCacheFiles" msgid="3128665571837408675">"අනෙක් යෙදුම්වල හැඹිලි මකන්න"</string>
- <string name="permdesc_deleteCacheFiles" msgid="3812998599006730196">"හැඹිලි ගොනු මැකීමට අවසර යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_getPackageSize" msgid="7472921768357981986">"යෙදුම් ආචයනයේ ඉඩ ප්‍රමාණය මැනීම"</string>
- <string name="permdesc_getPackageSize" msgid="3921068154420738296">"යෙදුමකට එහි කේතය, දත්ත සහ හැඹිලි ප්‍රමාණ ලබාගැනීමට අවසර දෙන්න."</string>
- <string name="permlab_installPackages" msgid="2199128482820306924">"යෙදුම් කෙළින්ම ස්ථාපනය කිරීම"</string>
- <string name="permdesc_installPackages" msgid="5628530972548071284">"නව හෝ යාවත්කාලින කරන ලද Android පැකේජයන් ස්ථාපනය කිරීමට ඉඩ දෙන්න. බලසහිත අවසර තීන්දු සමග නව යෙදුම් එකතු කිරීමට අනිෂ්ට යෙදුම්වලට මෙය භාවිතා කිරීමට ඉඩ තිබේ."</string>
- <string name="permlab_clearAppCache" msgid="7487279391723526815">"යෙදුමේ සියලුම හැඹිලි දත්ත මකන්න"</string>
- <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"අනෙක් යෙදුම්වල හැඹිලි නාමාවලි තුළ ඇති ගොනු මැකීමෙන් යෙදුමට ටැබ්ලට ආචයනය නිදහස් කිරීමට අවසර දෙන්න. මෙමගින් අනෙක් යෙදුම්වලට ඒවායේ දත්ත නැවත ලබා ගැනීමට අවශ්‍ය වන නිසා, ඒවායේ ආරම්භය තවත් සෙමින් සිදුවීමට ඉඩ ඇත."</string>
- <string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"අනෙක් යෙදුම්වල හැඹිලි නාමාවලි තුළ ඇති ගොනු මැකීමෙන් යෙදුමට දුරකථන ආචයනය නිදහස් කිරීමට අවසර දෙන්න. මෙමඟින් අනෙක් යෙදුම්වලට ඒවායේ දත්ත නැවත ලබා ගැනීමට අවශ්‍ය වන නිසා, ඒවායේ ආරම්භය තවත් සෙමින් සිදුවීමට ඉඩ ඇත."</string>
- <string name="permlab_movePackage" msgid="3289890271645921411">"යෙදුම් සම්පත් ගෙන යාම"</string>
- <string name="permdesc_movePackage" msgid="319562217778244524">"අභ්‍යන්තර සහ බාහිර මාධ්‍යයන්ගෙන් යෙදුමේ සම්පත් ගෙනයාමට සහ යෙදුමේ සම්පත් වලින් අභ්‍යන්තර සහ බාහිර මාධ්‍යයන්ට යෙදුමේ සම්පත් ගෙනයාමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_readLogs" msgid="6615778543198967614">"සංවේදී ලොග් දත්ත කියවීම"</string>
- <string name="permdesc_readLogs" product="tablet" msgid="82061313293455151">"පද්ධතියේ විවිධ ලොග් ගොනු කියවීමට යෙදුමට අවසර දෙන්න. පුද්ගලික සහ පෞද්ගලික තොරතුරු ඇතුළත්ව ඔබ ටැබ්ලටයෙන් කුමක් කරන්නෙහිද යනාදී සාමාන්‍ය තොරතුරු සෙවීමට මෙයට අවසර දෙන්න."</string>
- <string name="permdesc_readLogs" product="default" msgid="2063438140241560443">"පද්ධතියේ විවිධ ලොග් ගොනු කියවීමට යෙදුමට අවසර දෙන්න. පුද්ගලික සහ පෞද්ගලික තොරතුරු ඇතුළත්ව ඔබ දුරකථනයෙන් කුමක් කරන්නෙහිද යනාදී සාමාන්‍ය තොරතුරු සෙවීමට මෙයට අවසර දෙන්න."</string>
- <string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"නැවත ධාවනය සඳහා ඕනෑම මාධ්‍ය විකේතකයක් හාවිතා කරන්න"</string>
- <string name="permdesc_anyCodecForPlayback" msgid="8283912488433189010">"නැවත ධාවනය සඳහා විකේතනය කිරීමට ඕනෑම ස්ථාපිත මාධ්‍ය විකේතකයක් භාවිතයට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_manageCaCertificates" msgid="1678391896786882014">"විශ්වාසදායී අක්තපත්‍ර කළමනාකරණය"</string>
- <string name="permdesc_manageCaCertificates" msgid="4015644047196937014">"යෙදුමට CA සහතික විශ්වාසදායී අක්තපත්‍ර ලෙස ස්ථාපනය සහ අස්ථාපනය කිරීමට ඉඩ දෙන්න."</string>
- <string name="permlab_diagnostic" msgid="8076743953908000342">"Diag විසින් හිමිකාරත්වය දරණ සම්පත්වලට කියවීම/ ලිවිම"</string>
- <string name="permdesc_diagnostic" msgid="6608295692002452283">"Diag කණ්ඩායමට අයිති ඕනෑම සම්පතක් කියවීමට සහ ලිවීමට යෙදුමට අවසර දෙන්න. උදාහරණයක් ලෙස /dev තුල ඇති ගොනු. මෙයට පද්ධති ස්ථායිතාවට සහ ආරක්ෂාවට බලපෑම් කිරීමට හැකියාවක් ඇත. නිෂ්පාදක හෝ ක්‍රියාකරු විසින් දෘඩාංග-විශේෂිත දෝෂ නිර්ණය සඳහා පමණක් මෙය යොදාගත යුතුය."</string>
- <string name="permlab_changeComponentState" msgid="6335576775711095931">"යෙදුම් අංග සබල හෝ අබල කිරීම"</string>
- <string name="permdesc_changeComponentState" product="tablet" msgid="8887435740982237294">"වෙනත් යෙදුමක අංගයක් සබල ද නැද්ද යන්න වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. වැදගත් ටැබ්ලට් අවශ්‍යතා අබල කිරීමට අනිෂ්ට යෙදුම් මෙය භාවිත කළ හැක. මෙම අවසරය සැලකිල්ලෙන් භාවිතා කළ යුතුය, භාවිත නොකරන, අස්ථිර හෝ අස්ථායි තත්වයට යෙදුම පත් කිරීමට එයට හැකිය."</string>
- <string name="permdesc_changeComponentState" product="default" msgid="1827232484416505615">"වෙනත් යෙදුමක අංගයක් සබල ද නැද්ද යන්න වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. වැදගත් දුරකථන අවශ්‍යතා අක්‍රිය කිරීමට අනිෂ්ට යෙදුම් මෙය භාවිත කළ හැක. මෙම අවසරය සැලකිල්ලෙන් භාවිත කළ යුතුය, භාවිත නොකරන, අස්ථිර හෝ අස්ථායි තත්වයට යෙදුම පත් කිරීමට එයට හැකිය."</string>
- <string name="permlab_grantRevokePermissions" msgid="4627315351093508795">"අවසර ප්‍රදානය කිරීම හෝ අහෝසි කිරීම"</string>
- <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"යෙදුමකට එයට හෝ අනෙක් යෙදුම් වලට විශේෂිත අවසර ප්‍රදානයට හෝ අහෝසි කිරීමට අවසර දෙන්න. අනිෂ්ට යෙදුම්, ඒවාට අවසර ප්‍රදානය නොකළ ගුණාංග වලට ප්‍රවේශ වීමට මෙය භාවිතා කළ හැක."</string>
- <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"අභිරුචි යෙදුම් සකසන්න"</string>
- <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"ඔබගේ අභිරුචි යෙදුම් වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. ඔබගේ ධාවනය වන යෙදුම් වෙනස් කිරීම, පවතින යෙදුම් වලින් දත්ත එකතු කිරීම, ප්‍රෝඩා කිරීම වැනි දේ අනිෂ්ට යෙදුම් නිශ්ශබදවම සිදු කරයි."</string>
- <string name="permlab_writeSettings" msgid="2226195290955224730">"පද්ධති සැකසීම් වෙනස් කිරීම"</string>
- <string name="permdesc_writeSettings" msgid="7775723441558907181">"පද්ධති සැකසීම් දත්ත වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. අනිෂ්ට යෙදුම් ඔබගේ පද්ධති වින්‍යාස දෝෂ ගැන්විය හැක."</string>
- <string name="permlab_writeSecureSettings" msgid="204676251876718288">"ආරක්‍ෂිත පද්ධති සැකසීම් වෙනස් කරන්න"</string>
- <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"පද්ධතියේ ආරක්‍ෂිත දත්ත වෙනස් කිරීමට උපාංගයට අවසර දෙන්න. සාමාන්‍ය උපාංග සඳහා භාවිතයට නොවේ."</string>
- <string name="permlab_writeGservices" msgid="2149426664226152185">"Google සේවා සිතියම වෙනස් කරන්න"</string>
- <string name="permdesc_writeGservices" msgid="1287309437638380229">"Google සේවා සිතියම වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා භාවිතයට නොවෙයි."</string>
- <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"ආරම්භයේදී ධාවනය කිරීම"</string>
- <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"පද්ධතිය ඇරඹුම අවසන් වූ වහාම යෙදුම ආරම්භ වීමට යෙදුමට අවසර දෙන්න. ටැබ්ලටය ආරම්භ කිරීමට මෙමඟින් පමා කළ හැකි අතර සැමවිටම ධාවනය වන නිසා සම්පූර්ණ ටැබ්ලටයම ප්‍රමාද කිරීමට යෙදුමට අවසර දෙයි."</string>
- <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"පද්ධතිය ඇරඹුම අවසන් වූ වහාම යෙදුම ආරම්භ වීමට යෙදුමට අවසර දෙන්න. දුරකථනය ආරම්භ කිරීමට මෙමඟින් පමා කළ හැකි අතර සැමවිටම ධාවනය වන නිසා සම්පූර්ණ දුරකථනයේම ක්‍රියාකාරිත්වය ප්‍රමාද කිරීමට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_broadcastSticky" msgid="7919126372606881614">"බැඳුණු විකාශනය යැවීම"</string>
- <string name="permdesc_broadcastSticky" product="tablet" msgid="7749760494399915651">"ප්‍රචාරණයට පසුවද පවතින, ප්‍රචාරණයන් යැවීමට යෙදුමට අවසර දෙන්න. වැඩිපුර මතකය භාවිතය හේතු කොට, අධික භාවිතය මඟින් ටැබ්ලටය පමා කිරීම හෝ අස්ථිර කළ හැක."</string>
- <string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"ප්‍රචාරණයට පසුවද පවතින, ප්‍රචාරණයන් යැවීමට යෙදුමට අවසර දෙන්න. වැඩිපුර මතකය භාවිතය හේතු කොට, අධික භාවිතය මඟින් දුරකථනය පමා කිරීම හෝ අස්ථිර කළ හැක."</string>
- <string name="permlab_readContacts" msgid="8348481131899886131">"ඔබගේ සම්බන්ධතා කියවීම"</string>
- <string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"සඳහන් පුද්ගලයන් හට ඔබ ඇමතුම් ගත්, ඊ-තැපැල්, හෝ අනෙකුත් ආකාර වලින් සන්නිවේදනය කරගත් සංඛ්‍යතද ඇතුළුව, ඔබගේ ටැබ්ලටයේ ගබඩාවී ඇති සම්බන්ධතා පිළිබඳ දත්ත කියවීමට යෙදුමට අවසර දෙන්න. මෙම අවසරය මඟින් යෙදුම්වලට ඔබගේ සම්බන්ධතා පිළිබඳ දත්ත සුරැකීමට ඉඩ ලබා දෙන අතර, අනිෂ්ට යෙදුම් විසින් ඔබ නොදැනුවත්වම සම්බන්ධතා දත්ත බෙදා ගැනීමට ඉඩ ඇත."</string>
- <string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"නියමිත පුද්ගලයන් සමග ඔබ ඇමතු, ඊ-තැපැල් කළ හෝ වෙනත් ආකාරයකින් සන්නිවේදනය කළ සංඛ්‍යාතය ඇතුලත් ඔබගේ දුරකථනයේ ආචයනය කරන ලද ඔබගේ සම්බන්ධතා ගැන දත්ත කියවීමට යෙදුමට අවසර දෙන්න. ඔබගේ සම්බන්ධතා දත්ත උපස්ථ කිරීමට මෙම අවසරය යෙදුමට අවසර දෙන අතර ඔබගේ දැනුමකින් තොරව අනිෂ්ට යෙදුම් සම්බන්ධතා දත්ත බෙදාගැනීම කළ හැක."</string>
- <string name="permlab_writeContacts" msgid="5107492086416793544">"ඔබගේ සම්බන්ධතා වෙනස් කිරීම"</string>
- <string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"නියමිත පුද්ගලයන්ට ඔබ ඇමතූ, ඊ-තැපැල් කළ හෝ ඇමතුම් කළ සංඛ්‍යාත ඇතුලත් ඔබගේ ටැබ්ලටයේ ආචයනය කරන ලද සම්බන්ධතා (ලිපින) දත්ත වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. මෙම අවසරයෙන් යෙදුමට සම්බන්ධතා දත්ත මැකීමට අවසර දෙයි."</string>
- <string name="permdesc_writeContacts" product="default" msgid="589869224625163558">"සඳහන් පුද්ගලයන්ට ඔබ ඇමතූ, ඊ-තැපැල් කළ හෝ ඇමතුම් කළ සංඛ්‍යාන ඇතුලත් ඔබගේ දුරකථනයේ ආචයනය කරන ලද සම්බන්ධතා (ලිපින) දත්ත වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. මෙම අවසරයෙන් යෙදුමට සම්බන්ධතා දත්ත මැකීමට අවසර දෙයි."</string>
- <string name="permlab_readCallLog" msgid="3478133184624102739">"ඇමතුම් ලොගය කියවන්න"</string>
- <string name="permdesc_readCallLog" product="tablet" msgid="3700645184870760285">"පැමිණෙන සහ පිටවන ඇමතුම් ගැන දත්ත ඇතුළත්, ඔබගේ ටැබ්ලටයේ ඇමතුම් ලොග කියවීමට යෙදුමට අවසර දෙන්න. ඔබගේ ඇමතුම් ලොග දත්ත සුරක්ෂිත කිරීමට මෙම අවසරය යෙදුම්වලට අවසර දෙයි සහ ඔබගේ දැනුමකින් තොරව ඇමතුම් ලොග දත්ත අනිෂ්ට යෙදුම් බෙදා ගැනීම කළ හැක."</string>
- <string name="permdesc_readCallLog" product="default" msgid="5777725796813217244">"ලැබෙන සහ පිටවන ඇමතුම් පිළිබඳ දත්ත ඇතුළත්ව ඔබගේ දුරකථනයේ ඇමතුම් ලොග් කියවීමට යෙදුමට අවසර දෙන්න. මෙම අවසරය ඔබගේ ඇමතුම් ලොග් දත්ත උපස්ථ කිරීමට යෙදුමට ඉඩදෙන අතර ඔබගේ අනුදැනුමකින් තොරව අනිෂ්ට යෙදුම් විසින් ඇමතුම් ලොග් දත්ත බෙදාගැනීම කළ හැක."</string>
- <string name="permlab_writeCallLog" msgid="8552045664743499354">"ඇමතුම් ලොගය ලිවීම"</string>
- <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"ලැබෙන ඇමතුම් සහ පිටවන ඇමතුම් දත්ත ඇතුළත්ව ඔබගේ ටැබ්ලටයේ ඇමතුම් ලොගය වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. ඔබගේ ඇමතුම් ලොගය මැකීමට හෝ වෙනස් කිරීමට අනිෂ්ට යෙදුම් මෙය භාවිතා කෙරේ."</string>
- <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"පැමිණෙන සහ පිටවෙන ඇමතුම් දත්ත ඇතුළුව ඔබගේ දුරකථනයේ ඇමතුම් ලොගය වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. ඔබගේ ඇමතුම් ලොගය මැකීමට හෝ වෙනස් කිරීමට අනිෂ්ට යෙදුම් මෙය භාවිත කල හැක."</string>
- <string name="permlab_readProfile" msgid="4701889852612716678">"ඔබගේ සම්බන්ධතා පත කියවන්න"</string>
- <string name="permdesc_readProfile" product="default" msgid="5462475151849888848">"ඔබගේ නම සම්බන්ධතා තොරතුරු ආදී ඔබගේ උපාංගයේ ගබඩා වී ඇති පුද්ගලික පැතිකඩ තොරතුරු කියවීමට යෙදුමට අවසර දෙන්න. මෙහි තේරුම යෙදුමට ඔබව හඳුනා ගැනීමට හැකි වන බව සහ ඔබගේ පුද්ගලික තොරතුරු අනෙක් අයට යැවීමට ද හැකි වීමයි."</string>
- <string name="permlab_writeProfile" msgid="907793628777397643">"ඔබගේ සම්බන්ධතා පත වෙනස් කිරීම"</string>
- <string name="permdesc_writeProfile" product="default" msgid="5552084294598465899">"ඔබගේ නම සහ සම්බන්ධතා තොරතුරු වැනි ඔබගේ උපාංගයේ ආචයනය කරන ලද පුද්ගලික පැතිකඩ තොරතුරු වෙනස් කිරීමට හෝ එකතු කිරීමට යෙදුමට අවසර දෙන්න. මෙමගින් යෙදුමට ඔබව හඳුනා ගත හැකි අතර අනෙක් අයට ඔබගේ පැතිකඩ තොරතුරු යැවිය හැකි බව කියවෙයි."</string>
- <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"ඔබගේ සමාජ ප්‍රවාහය කියවන්න"</string>
- <string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"ඔබගේ සහ ඔබගේ යහළුවන්ගේ සමාජ යාවත්කාලීනයන් වෙත පිවිසීමට හෝ සමමුහුර්ත කිරීමට යෙදුමට අවසර දෙන්න. තොරතුරු බෙදා ගැනීමේ දී සැලකිලිමත් වන්න -- විශ්වාසයකින් තොරව සමාජ ජාලවල ඔබගේ සහ ඔබගේ යහළුවන් අතර සන්නිවේදන කියවීමට මෙමගින් යෙදුමට අවසර දෙයි. සටහන: සියලු සමාජ ජාලවල මෙම අවසරය බල නොකරයි."</string>
- <string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"ඔබගේ සමාජ ප්‍රවාහය වෙත ලිවීම"</string>
- <string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"ඔබගේ යහළුවන්ගේ සමාජ යාවත්කාලීනයන් පෙන්වීමට යෙදුමට අවසර දෙන්න. තොරතුරු බෙදා ගැනීමේදී සැලකිලිමත් වන්න -- යහළුවෙක්ගෙන් පැමිණෙන ලෙස පණිවිඩ නිපදවීමට මෙමඟින් යෙදුමට අවසර දෙන්න. සටහන : සියලු සමාජ ජාල සඳහා මෙම අවසරය බල නොදෙයි."</string>
- <string name="permlab_readCalendar" msgid="5972727560257612398">"දින දර්ශනයේ සිදුවීම් සහ රහසිගත තොරතුරු කියවීම"</string>
- <string name="permdesc_readCalendar" product="tablet" msgid="4216462049057658723">"ඔබගේ ටැබ්ලටය තුල ගබඩා කර ඇති මිතුරන්ගේ සහ එක්ව ක්‍රියාකරන්නන්ගේ ද ඇතුළුව සියලුම දින දර්ශන සිද්ධි කියවීමට යෙදුමට අවසර දෙන්න. මෙය රහස්‍යභාවය හෝ සංවේදීතාවය නොසලකා ඔබගේ දින දර්ශන දත්ත බෙදා ගැනීමට හෝ සුරැකීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_readCalendar" product="default" msgid="7434548682470851583">"යහළුවන් සහ සමකාලිනයන් ඇතුලත් ඔබගේ දුරකථනයේ ආචයනය කරන ලද සියලු දින දර්ශන සිදුවීම් කියවීමට යෙදුමට අවසර දෙන්න. විශ්වාසයකින් හෝ සංවේදීතාවකින් තොරව ඔබගේ දින දර්ශන දත්ත බෙදා ගැනීමට හෝ උපස්ථ කිරීමට මෙමගින් යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_writeCalendar" msgid="8438874755193825647">"දින දර්ශන සිද්ධි එකතු කිරීම හෝ වෙනස් කිරීමක් සිදුකර හිමිකරුගේ දැනීමකින් තොරව අමුත්තන්ට ඊ-තැපෑලක් යවීම"</string>
- <string name="permdesc_writeCalendar" product="tablet" msgid="6679035520113668528">"යහළුවන් හෝ එකට-වැඩකරන්නන් ඇතුළත්ව ඔබට ටැබ්ලටයේ වෙනස් කළ හැකි සිද්ධි එකතු කිරීමට, ඉවත් කිරීමට, වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. මෙමඟින් දින දර්ශන හිමිකරුවන්ගෙන් පණිවිඩ යවන පරිදි මෙන් මවාපෑමට හෝ හිමිකරුගේ අනුදැනුමකින් තොරව සිද්ධි වෙනස් කිරීමට යෙදුමට අවසර ලැබේ."</string>
- <string name="permdesc_writeCalendar" product="default" msgid="2324469496327249376">"ඔබගේ යහළුවන් හෝ සමකාලීනයන් ඇතුළත් ඔබගේ දුරකථනයේ ඔබට වෙනස් කළ හැකි සිදු වීම් එකතු කිරීමට, ඉවත් කිරීමට, වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. මෙමගින් දින දර්ශන හිමිකරුවන්ගෙන් පැමිණෙන සේ පෙනෙන පණිවිඩ යැවීමට හෝ හිමිකරුගේ දැනුමකින් තොරව සිදුවීම් වෙනස් කිරීමට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_accessMockLocation" msgid="8688334974036823330">"පරීක්ෂණ සඳහා ආදර්ශ ස්ථාන මූලාශ්‍ර"</string>
- <string name="permdesc_accessMockLocation" msgid="5808711039482051824">"පරීක්ෂණයට ව්‍යාජ ස්ථාන මූලාශ්‍ර සාදන්න හෝ නව ස්ථාන සැපයුම්කරුවෙකු ස්ථාපනය කරන්න. GPS හෝ ස්ථාන සැපයුම්කරුවන් ආදී වෙනත් ස්ථාන මූලාශ්‍ර විසින් ලබා දෙන ස්ථානය සහ/හෝ තත්වය ප්‍රතිස්ථාපනය කිරීමට යෙදුමට මෙය අවසර දෙයි."</string>
- <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"අමතර ස්ථාන සැපයුම්කරු විධාන වෙත ප්‍රවේශ වීම"</string>
- <string name="permdesc_accessLocationExtraCommands" msgid="5945166642335800763">"අමතර ස්ථාන සැපයුම්කරු විධාන වෙත පිවිසීමට යෙදුමට අවසර දෙන්න. GPS හෝ වෙනත් ස්ථාන මූලාශ්‍ර ක්‍රියාවලි වෙත බාධා කිරීමට මෙය අවසර දෙයි."</string>
- <string name="permlab_installLocationProvider" msgid="6578101199825193873">"ස්ථාන සැපයුම්කරුවෙකු ස්ථාපනයට අවසරය දෙන්න"</string>
- <string name="permdesc_installLocationProvider" msgid="9066146120470591509">"පරීක්ෂණයට ව්‍යාජ ස්ථාන මූලාශ්‍ර සාදන්න හෝ නව ස්ථාන සැපයුම්කරුවෙකු ස්ථාපනය කරන්න. GPS හෝ ස්ථාන සැපයුම්කරුවන් ආදී වෙනත් ස්ථාන මූලාශ්‍ර විසින් ලබා දෙන ස්ථානය සහ/හෝ තත්ත්වය ප්‍රතිස්ථාපනය කිරීමට යෙදුමට මෙය අවසර දෙයි."</string>
- <string name="permlab_accessFineLocation" msgid="1191898061965273372">"නිවැරදි ස්ථානය (GPS සහ ජාලය පදනම් කරගත්)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"ගෝලීය ස්ථානීය පද්ධතිය (GPS) හෝ සෙල් කුළුණු සහ Wi-Fi වැනි ජාල ස්ථානීය ප්‍රභව භාවිතයෙන් ඔබගේ නිවැරදි ස්ථානය ලබාගැනීමට යෙදුම අවසර දෙන්න. යෙදුම් වලට ස්ථානීය සේවා භාවිතා කිරීමට ඒවා සක්‍රිය විය යුතු වේ. ඔබව සොයා ගැනීමට යෙදුම් මෙය භාවිතා කරන අතර අමතර බැටරි බලයක්ද පරිභෝජනය කරයි."</string>
- <string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"ආසන්නතම ස්ථානය (ජාලය-පාදක වූ)"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"ඔබගේ දළ ස්ථානය ලබාගැනීමට යෙදුමට අවසර දෙන්න. සන්නේවේදන කුළුණු සහ Wi-Fi ආදී ජාල ස්ථාන මූලාශ්‍ර භාවිත කරන ස්ථාන සේවා විසින් මෙම ස්ථානය ව්‍යුත්පන්න කර ඇත. යෙදුමට භාවිතය සඳහා මෙම ස්ථාන සේවා සක්‍රිය කළ යුතු අතර ඔබගේ උපාංගය සඳහා පැවතිය යුතුය. ඔබ සිටින තැන දළව හඳුනා ගැනීමට යෙදුම් වලට මෙය භාවිත කළ හැකිය."</string>
- <string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"SurfaceFlinger වෙත ප්‍රවේශය"</string>
- <string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"SurfaceFlinger පහල මට්ටමේ විශේෂාංග භාවිතයට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_readFrameBuffer" msgid="6690504248178498136">"රාමු අන්තරාචය කියවීම"</string>
- <string name="permdesc_readFrameBuffer" msgid="4937405521809454680">"රාමු අන්තරාචයනයෙන් අන්තර්ගතයන් කියවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"Wifi සංදර්ශක වින්‍යාස කරන්න"</string>
- <string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"වින්‍යාස කිරීමට සහ Wifi සංදර්ශක වෙත සම්බන්ධ වීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"Wifi සංදර්ශක පාලනය"</string>
- <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"Wifi සංදර්ශකයේ පහළ මට්ටමේ විශේෂාංග පාලනයට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_captureAudioOutput" msgid="6857134498402346708">"ශබ්ද ප්‍රතිදානය ග්‍රහණය"</string>
- <string name="permdesc_captureAudioOutput" msgid="6210597754212208853">"යෙදුමට ශබ්ද ප්‍රතිදානය ග්‍රහණය කර හරවා යැවීමට ඉඩ දේ."</string>
- <string name="permlab_captureVideoOutput" msgid="2246828773589094023">"වීඩියෝ ප්‍රතිදානය"</string>
- <string name="permdesc_captureVideoOutput" msgid="359481658034149860">"යෙදුමට වීඩියෝ ප්‍රතිදානය ග්‍රහණය කර හරවා යැවීමට ඉඩ දේ."</string>
- <string name="permlab_captureSecureVideoOutput" msgid="7815398969303382016">"ආරක්‍ෂිත වීඩියෝ ප්‍රතිදානය"</string>
- <string name="permdesc_captureSecureVideoOutput" msgid="2779793064709350289">"යෙදුමට ආරක්‍ෂිත වීඩියෝ ප්‍රතිදානය ග්‍රහණය කර හරවා යැවීමට ඉඩ දේ."</string>
- <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"ඔබගේ ශ්‍රව්‍ය සැකසීම් වෙනස් කරන්න"</string>
- <string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"ශබ්දය ආදී ගෝලීය ශබ්ද සැකසීම් වෙනස් කිරීමට සහ ප්‍රතිදානය සඳහා භාවිත කරන්නේ කුමන නාදකය දැයි තේරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_recordAudio" msgid="3876049771427466323">"ශබ්ද පටිගත කරන්න"</string>
- <string name="permdesc_recordAudio" msgid="4906839301087980680">"මයික්‍රොෆෝනය මඟින් ශබ්ද පටිගත කිරීමට යෙදුමට අවසර දෙන්න. මෙම අවසරය මඟින් යෙදුමට ඕනෑම වේලාවක ඔබගේ අනුදැනුමකින් තොරව ශබ්ද පටිගත කිරීමට ඉඩ ලබා දේ."</string>
- <string name="permlab_camera" msgid="3616391919559751192">"පින්තූර සහ වීඩියෝ ගන්න"</string>
- <string name="permdesc_camera" msgid="8497216524735535009">"කැමරාවෙන් පින්තූර ගැනීමට සහ වීඩියෝ කිරීමට යෙදුමට අවසර දෙන්න. මෙම අවසරය මඟින් ඔබගේ අනුදැනුමකින් තොරව ඕනෑම වේලාවකදී කැමරාව භාවිතා කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_cameraDisableTransmitLed" msgid="2651072630501126222">"කැමරාව භාවිතයේදී LED දර්ශක සම්ප්‍රේෂණය අබල කරන්න"</string>
- <string name="permdesc_cameraDisableTransmitLed" msgid="4764585465480295341">"කැමරා භාවිතය පිළිබඳ LED දර්ශකය අක්‍රිය කිරීමට, කලින් පිහිටුවා ඇති පද්ධති යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_brick" product="tablet" msgid="2961292205764488304">"ටැබ්ලටය ස්ථිරවම අබල කිරීම"</string>
- <string name="permlab_brick" product="default" msgid="8337817093326370537">"දුරකථනය ස්ථිරව අබල කිරීම"</string>
- <string name="permdesc_brick" product="tablet" msgid="4334818808001699530">"මුළු ටැබ්ලටයම ස්ථිරවම අක්‍රිය කිරීමට යෙදුමට අවසර දෙන්න. මෙය ඉතා භයානකයි."</string>
- <string name="permdesc_brick" product="default" msgid="5788903297627283099">"මුළු දුරකථනයම ස්ථිරවම අක්‍රිය කිරීමට යෙදුමට අවසර දෙන්න. මෙය ඉතා භයානකයි."</string>
- <string name="permlab_reboot" product="tablet" msgid="3436634972561795002">"ටැබ්ලට් නැවත පණ ගැන්වීමට බල කරන්න"</string>
- <string name="permlab_reboot" product="default" msgid="2898560872462638242">"දුරකථන නැවත පණ ගැන්වීමට බල කරන්න"</string>
- <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"ටැබ්ලටය නැවත බල ගැන්වීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"ටැබ්ලටය නැවත ඇරඹීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"USB ආචයනය ගොනු පද්ධතිය ප්‍රවේශ කිරීම"</string>
- <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"SD පත් ගොනු පද්ධතිය ප්‍රවේශ කිරීම"</string>
- <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"ඉවත් කළ හැකි ආචයනය සඳහා ගොනු පද්ධති ඈඳීමට සහ ගැලවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB ආචයනය මකන්න"</string>
- <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD පත මකන්න"</string>
- <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"ඉවත් කළ හැකි ආචයන ෆෝමැට් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_asec_access" msgid="3411338632002193846">"අභ්‍යන්තර ආචයනය පිළිබඳ තොරතුරු ලබා ගැනීම"</string>
- <string name="permdesc_asec_access" msgid="3094563844593878548">"අභ්‍යන්තර ආචයනයේ තොරතුරු ලබාගැනීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_asec_create" msgid="6414757234789336327">"අභ්‍යන්තර ආචයනය නිර්මාණය"</string>
- <string name="permdesc_asec_create" msgid="4558869273585856876">"අභ්‍යන්තර ආචයනය සැදීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_asec_destroy" msgid="526928328301618022">"අභ්‍යන්තර ආචයනය විනාශ කිරීම"</string>
- <string name="permdesc_asec_destroy" msgid="7218749286145526537">"අභ්‍යන්තර ආචයනය විනාශ කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_asec_mount_unmount" msgid="8877998101944999386">"අභ්‍යන්තර ආචයනය නංවීම/ගැලවීම"</string>
- <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"අභ්‍යන්තර ආචයනය සවි කිරීමට/ගැලවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_asec_rename" msgid="7496633954080472417">"අභ්‍යන්තර ආචයනය නැවත නම් කරන්න"</string>
- <string name="permdesc_asec_rename" msgid="1794757588472127675">"අභ්‍යන්තර ආචයනය නැවත නම් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_vibrate" msgid="7696427026057705834">"කම්පනය පාලනය කිරීම"</string>
- <string name="permdesc_vibrate" msgid="6284989245902300945">"කම්පකය පාලනයට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_flashlight" msgid="2155920810121984215">"සැණෙළි ආලෝකය පාලනය කරන්න"</string>
- <string name="permdesc_flashlight" msgid="6522284794568368310">"සැණෙළිය පාලනයට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_manageUsb" msgid="1113453430645402723">"USB උපාංග සඳහා කැමැත්ත සහ අවසර කළමනාකරණය කිරීම"</string>
- <string name="permdesc_manageUsb" msgid="7776155430218239833">"USB උපාංග සඳහා අභිරුචි සහ අවසර කළමනාකරණයට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_accessMtp" msgid="4953468676795917042">"MTP ප්‍රොටොකෝලය ක්‍රියාත්මක කිරීම"</string>
- <string name="permdesc_accessMtp" msgid="6532961200486791570">"MTP USB ප්‍රොටෝකෝලය ක්‍රියාත්මක කිරීමට කර්නල MTP ධාවකයට ප්‍රවේශ වීමට අවසර දෙන්න."</string>
- <string name="permlab_hardware_test" msgid="4148290860400659146">"දෘඩාංග පරීක්ෂණය කරන්න"</string>
- <string name="permdesc_hardware_test" msgid="6597964191208016605">"දෘඩාංග පරීක්ෂා කිරීමේ අරමුණ සඳහා යෙදුමට විවිධ පර්යන්ත පාලනය කිරීමට ඉඩ දෙන්න."</string>
- <string name="permlab_callPhone" msgid="3925836347681847954">"දුරකථන අංක වෙත ඍජුවම අමතන්න"</string>
- <string name="permdesc_callPhone" msgid="3740797576113760827">"ඔබගේ මැදිහත් වීමක් නොමැතිව දුරකථන අංක ඇමතීමට යෙදුමට අවසර දෙන්න. මෙහි ප්‍රතිඑලය වන්නේ අනපේක්ෂිත අයකිරීම් හෝ ඇමතුම් ඇතිවීමයි. මෙයන් හදිසි අංක වලට ඇමතුම් ගැනීමට යෙදුමට අවසර නොදෙන බවට සටහන් කරගන්න. ඔබගේ අනුදැනුමක් නොමැතිව ඇමතුම් ගැනීමෙන් අනිෂ්ට යෙදුම් ඔබගේ මුදල් නිකරුණේ වැය කරයි."</string>
- <string name="permlab_callPrivileged" msgid="4198349211108497879">"ඕනෑම දුරකථන අංකයකට ඍජුවම අමතන්න"</string>
- <string name="permdesc_callPrivileged" msgid="1689024901509996810">"ඔබගේ මැදිහත්වීමකින් තොරව හදිසි අංක ඇතුළත්ව ඕනෑම දුරකථන අංකයකට ඇමතීමට යෙදුමට අවසර දෙන්න. හදිසි සේවා වෙත අනවශ්‍ය සහ නීතිමය නොවන ඇමතුම ලැබීමට අනිෂ්ට යෙදුම සිදු කළ හැක."</string>
- <string name="permlab_performCdmaProvisioning" product="tablet" msgid="4842576994144604821">"CDMA ටැබ්ලට පිහිටුම සෘජුව ඇරඹීම"</string>
- <string name="permlab_performCdmaProvisioning" product="default" msgid="5604848095315421425">"CDMA දුරකථන පිහිටුම සෘජුව ඇරඹීම"</string>
- <string name="permdesc_performCdmaProvisioning" msgid="1994193538802314186">"යෙදුමට CDMA ප්‍රතිපාදන ආරම්භ කිරීමට ඉඩදෙන්න. අනිෂ්ට යෙදුම් අනවශ්‍ය ලෙස CDMA ප්‍රතිපාදන ආරම්භ කළ හැක."</string>
- <string name="permlab_locationUpdates" msgid="7785408253364335740">"ස්ථාන යාවත්කාලීන දැනුම්දීම් පාලනය කරන්න"</string>
- <string name="permdesc_locationUpdates" msgid="1120741557891438876">"ස්ථානීය යාවත්කාලින දැනුම්දීම් රේඩියෝවෙන් සබල/අබල කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වල භාවිතය සඳහා නොවේ."</string>
- <string name="permlab_checkinProperties" msgid="7855259461268734914">"පිරික්සුම් ගුණාංග වෙත ප්‍රවේශය"</string>
- <string name="permdesc_checkinProperties" msgid="4024526968630194128">"පිරික්සුම් සේවාව මගින් උත්ශ්‍රේණි කළ ගුණාංග වෙත කියවීම්/ලිවීම් පිවිසුම සඳහා යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් වල භාවිතයට නොවේ."</string>
- <string name="permlab_bindGadget" msgid="776905339015863471">"විජට් තෝරන්න"</string>
- <string name="permdesc_bindGadget" msgid="8261326938599049290">"කුමන විජටය කුමන යෙදුමෙන් භාවිතා කල හැකිද යන්න පද්ධතියට පැවසීමට යෙදුමට අවසර දෙන්න. මෙම අවසරය ඇති යෙදුමකට අනෙක් යෙදුම්වලට පුද්ගලික දත්ත වලට ප්‍රවේශය ලබා දිය හැක. සාමාන්‍ය යෙදුම් වල භාවිතයට නොවේ."</string>
- <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"දුරකථනයේ තත්වය වෙනස් කිරීම"</string>
- <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"උපාංගයේ දුරකථන විශේෂාංග පාලනයට යෙදුමට අවසර දෙන්න. මෙම අවසරය ඇති යෙදුමට ඔබට නිවේදනයෙන් තොරව ජාල මාරු කිරීම, දුරකථන රේඩියෝව සක්‍රිය සහ අක්‍රිය කිරීම කළ හැක."</string>
- <string name="permlab_readPhoneState" msgid="9178228524507610486">"දුරකථනයේ තත්වය සහ අනන්‍යතාවය කියවීම"</string>
- <string name="permdesc_readPhoneState" msgid="1639212771826125528">"උපාංගයේ දුරකථන විශේෂාංග වෙත පිවිසීමට යෙදුමට අවසර දෙන්න. ඇමතුම සක්‍රිය වුවත් සහ ඇමතුමකින් දුරස්ථ අංකය සම්බන්ධ වුවත් දුරකථන අංකය සහ උපාංග ID හඳුනා ගැනීමට මෙම අවසරය යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"ටැබ්ලටය නින්දෙන් වැළක්වීම"</string>
- <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"දුරකථනය නින්දට යාමෙන් වළකන්න"</string>
- <string name="permdesc_wakeLock" product="tablet" msgid="7311319824400447868">"ටැබ්ලටය නින්දට යාමෙන් වැලැක්වීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_wakeLock" product="default" msgid="8559100677372928754">"දුරකථනය නින්දට යාමෙන් වැලැක්වීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_devicePower" product="tablet" msgid="2787034722616350417">"ටැබ්ලටය සක්‍රිය හෝ අක්‍රිය කරන්න"</string>
- <string name="permlab_devicePower" product="default" msgid="4928622470980943206">"දුරකථනය බල ගැන්වීම හෝ වැසීම"</string>
- <string name="permdesc_devicePower" product="tablet" msgid="6689862878984631831">"ටැබ්ලටය සක්‍රිය හෝ අක්‍රිය කිරීමට යෙදුමට අවසර දේ."</string>
- <string name="permdesc_devicePower" product="default" msgid="6037057348463131032">"දුරකථනය සක්‍රිය සහ අක්‍රිය කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_factoryTest" msgid="3715225492696416187">"කර්මාන්තශාලා පරීක්ෂණ ආකාරය තුළ ධාවනය කරන්න"</string>
- <string name="permdesc_factoryTest" product="tablet" msgid="3952059318359653091">"ටැබ්ලටයේ දෘඩාංග වෙත සම්පූර්ණ පිවිසුම සඳහා අවසර දීමෙන් පහළ මට්ටමේ නිපැවුම්කරු පරීක්ෂණයක් ලෙස ධාවනය කරන්න. නිපැවුම්කරු පරීක්ෂණ ආකාරයෙන් ටැබ්ලටයේ ධාවනය වන විට පමණි."</string>
- <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"දුරකථනයේ දෘඩාංග වෙත සම්පූර්ණ පිවිසුම සඳහා අවසර දීමෙන් පහළ මට්ටමේ නිපැවුම්කරු පරීක්ෂණයක් ලෙස ධාවනය කරන්න. නිපැවුම්කරු පරීක්ෂණ ආකාරයෙන් දුරකථනයේ ධාවනය වන විට පමණි."</string>
- <string name="permlab_setWallpaper" msgid="6627192333373465143">"බිතුපත සැකසීම"</string>
- <string name="permdesc_setWallpaper" msgid="7373447920977624745">"පද්ධති බිතුපත සැකසීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ඔබගේ බිතුපතේ ප්‍රමාණය සැකසීම"</string>
- <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"පද්ධති බිතුපතේ ප්‍රමාණ ඉඟි සකස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_masterClear" msgid="2315750423139697397">"කර්මාන්තශාලා සුපුරුද්දට පද්ධතිය නැවත සකස් කිරීම"</string>
- <string name="permdesc_masterClear" msgid="3665380492633910226">"සියලු දත්ත මැකීමෙන්, වින්‍යාස කිරීමෙන් සහ යෙදුම් ස්ථාපනයෙන් එහි කර්මාන්ත ශාලා සැකසීම් වෙත පද්ධතිය නැවත සැකසීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_setTime" msgid="2021614829591775646">"වේලාව සැකසීම"</string>
- <string name="permdesc_setTime" product="tablet" msgid="1896341438151152881">"ටැබ්ලට ඔරලෝසුවේ වේලාව වෙනස් කිරීමට යෙදුමට ඉඩ දෙන්න."</string>
- <string name="permdesc_setTime" product="default" msgid="1855702730738020">"දුරකථන ඔරලෝසුවේ වේලාව වෙනස් කිරීමට යෙදුමකට ඉඩ දෙන්න."</string>
- <string name="permlab_setTimeZone" msgid="2945079801013077340">"වේලා කලාපය සැකසීම"</string>
- <string name="permdesc_setTimeZone" product="tablet" msgid="1676983712315827645">"ටැබ්ලටයේ කාල කලාපය වෙනස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"දුරකථනයේ වේලා කලාපය වෙනස් කිරීමට උපාංගයට අවසර දෙන්න."</string>
- <string name="permlab_accountManagerService" msgid="4829262349691386986">"AccountManagerService ලෙස පෙනී සිටින්න"</string>
- <string name="permdesc_accountManagerService" msgid="1948455552333615954">"AccountAuthenticators වෙත ඇමතුම් ගැනීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_getAccounts" msgid="1086795467760122114">"උපාංගයේ ඇති ගිණුම් සොයන්න"</string>
- <string name="permdesc_getAccounts" product="tablet" msgid="2741496534769660027">"ටැබ්ලටය විසින් දන්නා ගිණුම් ලැයිස්තුවක් ලබාගැනීමට යෙදුමට අවසර දෙන්න. ඔබ ස්ථාපනය කොට ඇති යෙදුම් විසින් සාදා ඇති ගිණුම් මීට ඇතුළත් වේ."</string>
- <string name="permdesc_getAccounts" product="default" msgid="3448316822451807382">"දුරකථනය විසින් දන්නා ගිණුම් ලැයිස්තුවක් ලබාගැනීමට යෙදුමට අවසර දෙන්න. ඔබ ස්ථාපනය කොට ඇති යෙදුම් විසින් සාදා ඇති ගිණුම් මීට ඇතුළත් වේ."</string>
- <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"ගිණුම් සාදන්න සහ මුරපද සකසන්න"</string>
- <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"ගිණුම් සැදීමට සහ රහස් පද ලබාගැනීම සහ සැකසීම් කිරීම ඇතුළත්ව AccountManager ගේ ගිණුම් සත්‍යාපන හැකියාවන් භාවිතා කිරීමට යෙදුමකට අවසර දෙන්න."</string>
- <string name="permlab_manageAccounts" msgid="4983126304757177305">"ගිණුම් එකතු කරන්න හෝ ඉවත් කරන්න"</string>
- <string name="permdesc_manageAccounts" msgid="8698295625488292506">"ගිණුම් එකතු කිරීම, සහ ඉවත් කිරීම සහ ඔවුන්ගේ මුරපද මැකීම ආදී ක්‍රියාවලි සිදු කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_useCredentials" msgid="235481396163877642">"උපාංගයේ ඇති ගිණුම් භාවිතා කිරීම"</string>
- <string name="permdesc_useCredentials" msgid="7984227147403346422">"සත්‍යාපන ටෝකන ඉල්ලීම සඳහා යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ජාල සම්බන්ධතාවයන් බැලීම"</string>
- <string name="permdesc_accessNetworkState" msgid="8318964424675960975">"කුමන ජාල පවතින්නේ ද සහ සම්බන්ධිත ද ආදී ජාල සබඳතා ගැන තොරතුරු බැලීමට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_createNetworkSockets" msgid="8018758136404323658">"සම්පූර්ණ ජාල ප්‍රවේශය"</string>
- <string name="permdesc_createNetworkSockets" msgid="3403062187779724185">"උපකරණයට ජාල කෙවනියන් සැදීමට සහ ජාල ප්‍රොටෝකෝල අභිරුචි භාවිතා කිරීමට උපකරණයට ඉඩ දෙන්න. අන්තර්ජාලයට දත්ත යැවීමට විධියන් බ්‍රව්සරය සහ අනෙකුත් යෙදුම් සපයයි, එනිසා මෙම අවසරය දත්ත අන්තර්ජාලයට යැවීමට අවශ්‍ය නොවේ."</string>
- <string name="permlab_writeApnSettings" msgid="505660159675751896">"ජාලයේ සැකසීම් සහ ගමනාගමන වෙනස් කරන්න/අල්ලා ගැනීම"</string>
- <string name="permdesc_writeApnSettings" msgid="5333798886412714193">"ඕනෑම APN එකක නියුතුව සහ තොට වෙනස් කිරීම වැනි ජාල සැකසීම් වෙනස් කිරීමට සහ සියලුම ජාල අතුරු ඇරීමට සහ සෝදිසි කිරීමට යෙදුමට අවසර දෙන්න. ඇතැම්විට ඔබගේ අනුදැනුමකින් තොරව අනිෂ්ට උපාංග ජාල පැකැට්ටු අධීක්ෂණය,ආපසු දිශාගත කිරීම හෝ වෙනස්කිරීම සිදු කිරීමට ඉඩ තිබේ."</string>
- <string name="permlab_changeNetworkState" msgid="958884291454327309">"ජාල සම්බන්ධතාව වෙනස් කිරීම"</string>
- <string name="permdesc_changeNetworkState" msgid="6789123912476416214">"ජාල සම්බන්ධතාවයේ තත්වය වෙනස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_changeTetherState" msgid="5952584964373017960">"ටෙදර් කරන ලද සම්බන්ධතා වෙනස් කිරීම"</string>
- <string name="permdesc_changeTetherState" msgid="1524441344412319780">"ටෙදර් කළ ජාල සම්බන්ධතාවයේ තත්වය වෙනස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"පසුබිම් දත්ත භාවිත සැකසීම් වෙනස් කිරීම"</string>
- <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"පසුබිම් දත්ත භාවිතා සැකසීම වෙනස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi සම්බන්ධතාවන් බැලීම"</string>
- <string name="permdesc_accessWifiState" msgid="5002798077387803726">"Wi-Fi සබල බව සහ සම්බන්ධිත Wi-Fi උපාංග වල නම් ආදී Wi-Fi ජාලකරණයේ තොරතුරු බැලීමට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_changeWifiState" msgid="6550641188749128035">"Wi-Fi වලට සම්බන්ධ විම සහ විසන්ධි කිරීම"</string>
- <string name="permdesc_changeWifiState" msgid="7137950297386127533">"Wi-Fi ප්‍රවේශ ස්ථානයන් වෙත සම්බන්ධ වීමට සහ විසන්ධි වීමට සහ, Wi-Fi ජාල සඳහා උපාංගයේ වින්‍යාසයට වෙනස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fi බහුවිකාශන පිළිගැනීමට අවසර දෙන්න"</string>
- <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"ඔබගේ ටැබ්ලටයට පමණක් නොව Wi-Fi ජාලයේ ඇති සියලුම උපාංගවලට යැවූ පැකැට්ටු බහු විකාශ ලිපින භාවිතයෙන් ලබාගැනීමට යෙදුමට අවසර දෙන්න. non-multicast ආකාරයට වඩා වැඩි බලයක් මෙහිදී භාවිතා වේ."</string>
- <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"ඔබගේ දුරකථනයට පමණක් නොව Wi-Fi ජාලයේ ඇති සියලුම යෙදුම්වලට යැවූ පැකැට්ටු බහුවාහක ලිපින භාවිතයෙන් ලබාගැනීමට යෙදුමට අවසර ලැබේ. බහුවාහක නැති ආකාරයට වඩා වැඩි බලයක් මෙහිදී භාවිතා වේ."</string>
- <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"බ්ලූටූත් සැකසීම් ප්‍රවේශය"</string>
- <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"ස්ථානීය බ්ලූටූත් ටැබ්ලට්යක් සැකසීමට සහ වින්‍යාස කිරීමට සහ දුරස්ථ උපාංග සමග යුගළ කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"දුරකථනයේ පෙදෙසි බ්ලූටූත් වින්‍යාස කිරීමට, සහ දුරස්ථ උපාංග ගවේෂණයට සහ යුගල වීමට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_accessWimaxState" msgid="4195907010610205703">"WiMAX වෙතට සම්බන්ධ කරන්න හෝ විසන්ධි කරන්න"</string>
- <string name="permdesc_accessWimaxState" msgid="6360102877261978887">"WiMAX සබල බව සහ සම්බන්ධිත ඕනෑම WiMAX ජාලයක තොරතුරු නිශ්චය කිරීමට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX තත්වය වෙනස් කරන්න"</string>
- <string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"ටැබ්ලටය WiMAX ජාල වෙත සම්බන්ධ කිරීමට සහ විසන්ධි කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_changeWimaxState" product="default" msgid="697025043004923798">"WiMAX ජාලයන්ට දුරකථනය සම්බන්ධ කිරීමට සහ විසන්ධි කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_bluetooth" msgid="6127769336339276828">"බ්ලූටූත් උපාංග සමඟ යුගල කිරීම"</string>
- <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"ටැබ්ලටයේ බ්ලූටූත් වින්‍යාසය බැලිමට, සැකසීමට සහ යුගල කළ උපාංග සමඟ සම්බන්ධතාවන් පිළිගැනීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"දුරකථනයේ බ්ලූටූත් වින්‍යාසය දැකීමට, යුගල උපාංග සමඟ සම්බන්ධතාවන් සැකසීමට සහ භාරගැනීමට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_nfc" msgid="4423351274757876953">"ආසන්න ක්ෂේත්‍ර සන්නිවේදනය පාලනය කරන්න"</string>
- <string name="permdesc_nfc" msgid="7120611819401789907">"ආසන්න ක්ෂේත්‍ර සන්නිවේදන (NFC) ටැග්, පත්, සහ කියවන්නන් සමඟ සන්නිවේදනය කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_disableKeyguard" msgid="3598496301486439258">"ඔබගේ තිරයේ අගුල අබල කරන්න"</string>
- <string name="permdesc_disableKeyguard" msgid="6034203065077122992">"යතුරු අගුල සහ ඕනෑම සම්බන්ධිත මුරපද ආරක්ෂාවක් අබල කිරීමට යෙදුමට අවසර දෙන්න. මෙහි උදාහරණයක් වන්නේ පැමිණෙන ඇමතුමක් ලැබෙද්දී, දුරකථනය අක්‍රිය වන අතර ඇමතුම අවසාන වන විට යතුරු අගුල නැවත සක්‍රිය වෙයි."</string>
- <string name="permlab_readSyncSettings" msgid="6201810008230503052">"සමමුහුර්ත සැකසීම් කියවන්න"</string>
- <string name="permdesc_readSyncSettings" msgid="2706745674569678644">"ගිණුම සඳහා සමමුහුර්ත සැකසීම් කියවීමට යෙදුමට අවසර දෙන්න. උදාහරණයක් ලෙස, ගිණුමක් සමඟ පුද්ගල යෙදුම සමමුහුර්ත දැයි මෙයට හඳුනා ගත හැක."</string>
- <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"සමමුහුර්ත කිරීම සක්‍රිය කරන්න සහ අක්‍රිය කරන්න"</string>
- <string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"ගිණුම සඳහා සමමුහුර්ත සැකසීම් වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. උදාහරණයක් ලෙස, ගිණුම සමඟ පුද්ගල යෙදුම සමමුහුර්ත කිරීම සක්‍රිය කිරීමට භාවිත කල හැක."</string>
- <string name="permlab_readSyncStats" msgid="7396577451360202448">"සමමුහුර්ත කිරීමේ සංඛ්‍යාන කියවීම"</string>
- <string name="permdesc_readSyncStats" msgid="1510143761757606156">"සමමුහුර්ත කිරීමේ සිදුවීම් ඉතිහාසය සහ කෙතරම් දත්ත සමමුහුර්ත වී ඇතිදැයි ඇතුලත් ගිණුම සඳහා සමමුහුර්ත කිරීමේ සංඛ්‍යාන කියවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"දායක වූ සංග්‍රහ කියවීම"</string>
- <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"වර්තමාන සමමුහුර්ත සංග්‍රහ ගැන විස්තර ලැබීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"දායක වූ සංග්‍රහ ලිවීම"</string>
- <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"ඔබගේ වර්තමාන සමමුහුර්ත සංග්‍රහ වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. ඔබගේ සමමුහුර්ත සංග්‍රහ අනිෂ්ට යෙදුම්වලින් වෙනස් කල හැක."</string>
- <string name="permlab_readDictionary" msgid="4107101525746035718">"ඔබ විසින් ශබ්දකෝෂයට ඇතුළත්කොට ඇති කොන්දේසි කියවීම"</string>
- <string name="permdesc_readDictionary" msgid="659614600338904243">"පරිශීලක ශබ්ද කෝෂයේ පරිශීලකයන් විසින් ගබඩා කර තිබිය හැකි වචන, නම්, වාක්‍යංශ කියවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_writeDictionary" msgid="2183110402314441106">"පරිශීලකයින් අර්ථ දැක්වූ ශබ්ද කෝෂයට වචන එකතු කිරීම"</string>
- <string name="permdesc_writeDictionary" msgid="8185385716255065291">"පරිශීලක ශබ්දකෝෂය තුළට අලුත් වචන ලිවීමට යෙදුමට ඉඩ දෙන්න."</string>
- <string name="permlab_sdcardRead" product="nosdcard" msgid="8235341515605559677">"ආරක්‍ෂිත ආචයනය වෙත ප්‍රවේශය පරීක්ෂා කිරීම"</string>
- <string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"ආරක්‍ෂිත ආචයනය වෙත ප්‍රවේශය පරීක්ෂා කිරීම"</string>
- <string name="permdesc_sdcardRead" product="nosdcard" msgid="3642473292348132072">"අනාගත උපාංගවල ලබාගත හැකි USB ආචයනය සඳහා අවසරයක් පරීක්ෂා කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_sdcardRead" product="default" msgid="5914402684685848828">"අනාගත උපාංගවල පැවතෙන SD කාඩ් පත සඳහා අවසරයක් පිරික්සීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"ඔබගේ USB ආචයනයේ අන්තර්ගත වෙනස් කිරීම හෝ මැකීම"</string>
- <string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"ඔබගේ SD පතේ අන්තර්ගත වෙනස් කිරීම හෝ මැකීම"</string>
- <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"USB ආචයනය වෙත ලිවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"SD පත වෙත ලිවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"අභ්‍යන්තර මාධ්‍ය ආචයනය අන්තර්ගත වෙනස් කරන්න/ මකන්න"</string>
- <string name="permdesc_mediaStorageWrite" product="default" msgid="8189160597698529185">"අභ්‍යන්තර මාධ්‍ය ආචයනයේ අන්තර්ගතය වෙනස් කිරීමට උපාංගයට අවසර දෙන්න."</string>
- <string name="permlab_manageDocs" product="default" msgid="5778318598448849829">"ලේඛන ආචයනය කළමනාකරණය කරන්න"</string>
- <string name="permdesc_manageDocs" product="default" msgid="8704323176914121484">"ලේඛන ආචයනය කළමනාකරණය කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_sdcardAccessAll" msgid="8150613823900460576">"සියලුම පරිශීලකයන්ගේ බාහිර ආචයන වෙත පිවිසෙන්න"</string>
- <string name="permdesc_sdcardAccessAll" msgid="3215208357415891320">"සියලු පරිශීලකයන් සඳහා බාහිර ආචයනය වෙත පිවිසීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_cache_filesystem" msgid="5656487264819669824">"හැඹිලි ගොනු පද්ධතියට ප්‍රවේශ වීම"</string>
- <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"හැඹිලි ගොනු පද්ධති කියවීමට සහ ලිවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_use_sip" msgid="5986952362795870502">"අන්තර්ජාල ඇමතුම් ගන්න/ලබන්න"</string>
- <string name="permdesc_use_sip" msgid="4717632000062674294">"අන්තර්ජාල ඇමතුම් ගැනීමට/ලැබීමට SIP සේවාව භාවිතයට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_readNetworkUsageHistory" msgid="7862593283611493232">"ඉතිහාසගත ජාල භාවිතය කියවන්න"</string>
- <string name="permdesc_readNetworkUsageHistory" msgid="7689060749819126472">"විශේෂිත ජාල සහ යෙදුම් සඳහා ඉතිහාසගත ජාල භාවිතය කියවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_manageNetworkPolicy" msgid="2562053592339859990">"ජාල ප්‍රතිපත්තිය කළමනාකරණය කිරීම"</string>
- <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"ජාල කොන්දේසි සහ සඳහන් යෙදුම් විශේෂීත රීති කළමනාකරණය කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"ජාල භාවිත ගිණුම් කිරීම වෙනස් කිරීම"</string>
- <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"යෙදුම්වලට ජාල භාවිතයෙන් වන බලපෑම කෙසේද යන්න වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වල භාවිතය සඳහා නොවේ."</string>
- <string name="permlab_markNetworkSocket" msgid="3658527214914959749">"කෙවෙනි ලකුණු වෙනස් කරන්න"</string>
- <string name="permdesc_markNetworkSocket" msgid="7655568433696356578">"මාර්ගගත වීම සඳහා කෙවෙනියේ ලකුණු වෙනස් කිරීමට යෙදුමට ඉඩ දෙන්න"</string>
- <string name="permlab_accessNotifications" msgid="7673416487873432268">"ප්‍රවේශ දැනුම්දීම්"</string>
- <string name="permdesc_accessNotifications" msgid="458457742683431387">"වෙනත් යෙදුම් විසින් කළ පල කිරීම්ද ඇතුළත්ව දැන්වීම් ලබා ගැනීමට, පරීක්ෂා කිරීමට සහ හිස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_bindNotificationListenerService" msgid="7057764742211656654">"දැනුම්දීම ඇහුම්කන් දීම් සේවාවක් වෙත බඳින්න"</string>
- <string name="permdesc_bindNotificationListenerService" msgid="985697918576902986">"දැනුම්දීම් අසන්නාගේ සේවාවේ ඉහළ මට්ටමේ අතුරුමුහුණතට බැඳීමට දරන්නාට අවසර දේ. සාමාන්‍ය යෙදුම් සඳහා කිසිසේත් අවශ්‍ය නොවේ."</string>
- <string name="permlab_invokeCarrierSetup" msgid="3699600833975117478">"වාහකය සැපයු වින්‍යාසය යෙදුම ඉල්ලා සිටින්න"</string>
- <string name="permdesc_invokeCarrierSetup" msgid="4159549152529111920">"වාහකයා ලබාදුන් සැකසුම් යෙදුම් උත්පාදනයට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිදා අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_accessNetworkConditions" msgid="8206077447838909516">"ජාල තත්ව මත නිරීක්ෂණ වෙත ඇහුම්කන් දීම"</string>
- <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"යෙදුමකට ජාල තත්ව මත නිරීක්ෂණ වෙත ඇහුම්කන් දීමට අවසර දේ. සාමාන්‍ය යෙදුම් සඳහා කිසිදා අවශ්‍ය නොවේ."</string>
- <string name="permlab_hotwordRecognition" msgid="3225080408746361313">"අණවදන හඳුනාගැනීම ඉල්ලයි"</string>
- <string name="permdesc_hotwordRecognition" msgid="3716741260195364252">"අණවදන හඳුනාගැනීම සඳහා ඉල්ලීමට යෙදුමට ඉඩ දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිදා අවශ්‍ය නොවෙයි."</string>
- <string name="policylab_limitPassword" msgid="4497420728857585791">"මුරපද නීති සකස් කිරීම"</string>
- <string name="policydesc_limitPassword" msgid="3252114203919510394">"තිරය අගුළු ඇරීමේ මුරපදයට අනුමත අකුරු සහ දිග පාලනය කරන්න."</string>
- <string name="policylab_watchLogin" msgid="914130646942199503">"තිරය අගුළු ඇරීමේ උත්සාහයන් නිරීක්ෂණය කරන්න"</string>
- <string name="policydesc_watchLogin" product="tablet" msgid="3215729294215070072">"තිරය අගුළු හැරීමේදී වැරදියට ටයිප් කළ මුරපද ගණන නිරීක්ෂණය කරන්න සහ ටැබ්ලටය අගුළු දමන්න හෝ වැරදි මුරපද බොහෝ ගණනක් ටයිප් කර ඇති නම් ටැබ්ලටයේ සියලු දත්ත මකන්න."</string>
- <string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"තිරය අගුළු හැරීමේදී වැරදියට ටයිප් කළ මුරපද ගණන නිරීක්ෂණය කරන්න සහ දුරකථනය අගුළු දමන්න හෝ වැරදි මුරපද බොහෝ ගණනක් ටයිප් කර ඇති නම් දුරකථනයේ සියලු දත්ත මකන්න."</string>
- <string name="policylab_resetPassword" msgid="2620077191242688955">"තිරය අගුළු ඇරීමේ මුරපදය වෙනස් කිරීම"</string>
- <string name="policydesc_resetPassword" msgid="605963962301904458">"තිරය අගුළු ඇරීමේ මුරපදය වෙනස් කරන්න."</string>
- <string name="policylab_forceLock" msgid="2274085384704248431">"තිරය අගුළු දැමීම"</string>
- <string name="policydesc_forceLock" msgid="1141797588403827138">"තිරයට අගුළු වැටීම සිදුවන්නේ කෙසේද සහ කවදාද යන්න පාලනය කරන්න."</string>
- <string name="policylab_wipeData" msgid="3910545446758639713">"සියලු දත්ත මකන්න"</string>
- <string name="policydesc_wipeData" product="tablet" msgid="4306184096067756876">"කර්මාන්ත ශාලා දත්ත යළි පිහිටුවීමෙන් පසුව අනතුරු ඇඟවිමකින් තොරවම ටැබ්ලට් දත්ත මකා දමයි."</string>
- <string name="policydesc_wipeData" product="default" msgid="5096895604574188391">"කර්මාන්ත ශාලා දත්ත යළි පිහිටුවීමෙන් පසුව අනතුරු ඇඟවිමකින් තොරවම දුරකථන දත්ත මකා දමයි."</string>
- <string name="policylab_setGlobalProxy" msgid="2784828293747791446">"උපාංග ගෝලීය නියුතුව සකස් කිරීම"</string>
- <string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"කොන්දේසි සක්‍රිය විට පොදු නියුතු එකක් භාවිත කරන ලෙස උපාංගය සකසන්න. පළමු උපාංග පරිපාලකයා පමණක් ඵලදායි පොදු නියුතුව සකසයි."</string>
- <string name="policylab_expirePassword" msgid="885279151847254056">"තිරය අගුළු දැමීමේ මුරපදය කල් ඉකුත්වීම සකසන්න"</string>
- <string name="policydesc_expirePassword" msgid="1729725226314691591">"තිර-අගුළේ මුරපදය වෙනස්වීම කොපමණ කාල පරාසයකින් සිදුවිය යුතුද යන්න පාලනය කිරීම."</string>
- <string name="policylab_encryptedStorage" msgid="8901326199909132915">"ආචයනයේ සංකේතනය සකස් කිරීම"</string>
- <string name="policydesc_encryptedStorage" msgid="2637732115325316992">"ආචයනය කළ යෙදුම් දත්ත සංකේතනය කිරීමට අවශ්‍යය."</string>
- <string name="policylab_disableCamera" msgid="6395301023152297826">"කැමරා අබල කිරීම"</string>
- <string name="policydesc_disableCamera" msgid="2306349042834754597">"සියලු උපාංග කැමරාවල භාවිතය වලක්වන්න."</string>
- <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"යතුරු ආරක්ෂාවේ විශේෂාංග අබල කරන්න"</string>
- <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"යතුරු ආරක්ෂාව හි සමහර විශේෂාංග භාවිතය වළක්වයි."</string>
- <string-array name="phoneTypes">
- <item msgid="8901098336658710359">"නිවස"</item>
- <item msgid="869923650527136615">"ජංගම"</item>
- <item msgid="7897544654242874543">"කාර්යාලය"</item>
- <item msgid="1103601433382158155">"කාර්යාල ෆැක්ස්"</item>
- <item msgid="1735177144948329370">"නිවසේ ෆැක්ස්"</item>
- <item msgid="603878674477207394">"පේජරය"</item>
- <item msgid="1650824275177931637">"වෙනත්"</item>
- <item msgid="9192514806975898961">"අභිරුචි"</item>
- </string-array>
- <string-array name="emailAddressTypes">
- <item msgid="8073994352956129127">"මුල් පිටුව"</item>
- <item msgid="7084237356602625604">"කාර්යාලය"</item>
- <item msgid="1112044410659011023">"වෙනත්"</item>
- <item msgid="2374913952870110618">"අභිරුචි"</item>
- </string-array>
- <string-array name="postalAddressTypes">
- <item msgid="6880257626740047286">"නිවස"</item>
- <item msgid="5629153956045109251">"කාර්යාලය"</item>
- <item msgid="4966604264500343469">"වෙනත්"</item>
- <item msgid="4932682847595299369">"අභිරුචි"</item>
- </string-array>
- <string-array name="imAddressTypes">
- <item msgid="1738585194601476694">"නිවස"</item>
- <item msgid="1359644565647383708">"කාර්යාලය"</item>
- <item msgid="7868549401053615677">"වෙනත්"</item>
- <item msgid="3145118944639869809">"අභිරුචි"</item>
- </string-array>
- <string-array name="organizationTypes">
- <item msgid="7546335612189115615">"කාර්යාලය"</item>
- <item msgid="4378074129049520373">"වෙනත්"</item>
- <item msgid="3455047468583965104">"අභිරුචි"</item>
- </string-array>
- <string-array name="imProtocols">
- <item msgid="8595261363518459565">"AIM"</item>
- <item msgid="7390473628275490700">"Windows Live"</item>
- <item msgid="7882877134931458217">"Yahoo"</item>
- <item msgid="5035376313200585242">"Skype"</item>
- <item msgid="7532363178459444943">"QQ"</item>
- <item msgid="3713441034299660749">"Google Talk"</item>
- <item msgid="2506857312718630823">"ICQ"</item>
- <item msgid="1648797903785279353">"Jabber"</item>
- </string-array>
- <string name="phoneTypeCustom" msgid="1644738059053355820">"අභිරුචි"</string>
- <string name="phoneTypeHome" msgid="2570923463033985887">"නිවස"</string>
- <string name="phoneTypeMobile" msgid="6501463557754751037">"ජංගම"</string>
- <string name="phoneTypeWork" msgid="8863939667059911633">"කාර්යාලය"</string>
- <string name="phoneTypeFaxWork" msgid="3517792160008890912">"කාර්යාල ෆැක්ස්"</string>
- <string name="phoneTypeFaxHome" msgid="2067265972322971467">"නිවසේ ෆැක්ස්"</string>
- <string name="phoneTypePager" msgid="7582359955394921732">"පේජරය"</string>
- <string name="phoneTypeOther" msgid="1544425847868765990">"වෙනත්"</string>
- <string name="phoneTypeCallback" msgid="2712175203065678206">"යළි ඇමතීම"</string>
- <string name="phoneTypeCar" msgid="8738360689616716982">"මෝටර් රථය"</string>
- <string name="phoneTypeCompanyMain" msgid="540434356461478916">"ආයතනයේ මූලිකය"</string>
- <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
- <string name="phoneTypeMain" msgid="6766137010628326916">"මූලික"</string>
- <string name="phoneTypeOtherFax" msgid="8587657145072446565">"වෙනත් ෆැක්ස්"</string>
- <string name="phoneTypeRadio" msgid="4093738079908667513">"රේඩියෝව"</string>
- <string name="phoneTypeTelex" msgid="3367879952476250512">"ටෙලෙක්ස්"</string>
- <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
- <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"කාර්යාල ජංගම"</string>
- <string name="phoneTypeWorkPager" msgid="649938731231157056">"කාර්යාල පේජරය"</string>
- <string name="phoneTypeAssistant" msgid="5596772636128562884">"සහායක"</string>
- <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
- <string name="eventTypeCustom" msgid="7837586198458073404">"අභිරුචි"</string>
- <string name="eventTypeBirthday" msgid="2813379844211390740">"උපන්දිනය"</string>
- <string name="eventTypeAnniversary" msgid="3876779744518284000">"සංවත්සරය"</string>
- <string name="eventTypeOther" msgid="7388178939010143077">"වෙනත්"</string>
- <string name="emailTypeCustom" msgid="8525960257804213846">"අභිරුචි"</string>
- <string name="emailTypeHome" msgid="449227236140433919">"නිවස"</string>
- <string name="emailTypeWork" msgid="3548058059601149973">"කාර්යාලය"</string>
- <string name="emailTypeOther" msgid="2923008695272639549">"වෙනත්"</string>
- <string name="emailTypeMobile" msgid="119919005321166205">"ජංගම"</string>
- <string name="postalTypeCustom" msgid="8903206903060479902">"අභිරුචි"</string>
- <string name="postalTypeHome" msgid="8165756977184483097">"නිවස"</string>
- <string name="postalTypeWork" msgid="5268172772387694495">"කාර්යාලය"</string>
- <string name="postalTypeOther" msgid="2726111966623584341">"වෙනත්"</string>
- <string name="imTypeCustom" msgid="2074028755527826046">"අභිරුචි"</string>
- <string name="imTypeHome" msgid="6241181032954263892">"මුල් පිටුව"</string>
- <string name="imTypeWork" msgid="1371489290242433090">"කාර්යාලය"</string>
- <string name="imTypeOther" msgid="5377007495735915478">"වෙනත්"</string>
- <string name="imProtocolCustom" msgid="6919453836618749992">"අභිරුචි"</string>
- <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
- <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
- <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
- <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
- <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
- <string name="imProtocolGoogleTalk" msgid="493902321140277304">"Hangouts"</string>
- <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
- <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
- <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
- <string name="orgTypeWork" msgid="29268870505363872">"කාර්යාලය"</string>
- <string name="orgTypeOther" msgid="3951781131570124082">"වෙනත්"</string>
- <string name="orgTypeCustom" msgid="225523415372088322">"අභිරුචි"</string>
- <string name="relationTypeCustom" msgid="3542403679827297300">"අභිරුචි"</string>
- <string name="relationTypeAssistant" msgid="6274334825195379076">"සහායක"</string>
- <string name="relationTypeBrother" msgid="8757913506784067713">"සහෝදරයා"</string>
- <string name="relationTypeChild" msgid="1890746277276881626">"දරුවා"</string>
- <string name="relationTypeDomesticPartner" msgid="6904807112121122133">"දේශීය හවුල්කරුවා"</string>
- <string name="relationTypeFather" msgid="5228034687082050725">"පියා"</string>
- <string name="relationTypeFriend" msgid="7313106762483391262">"මිත්‍රයා"</string>
- <string name="relationTypeManager" msgid="6365677861610137895">"කළමනාකරු"</string>
- <string name="relationTypeMother" msgid="4578571352962758304">"මව"</string>
- <string name="relationTypeParent" msgid="4755635567562925226">"මව්පිය"</string>
- <string name="relationTypePartner" msgid="7266490285120262781">"හවුල්කරුවා"</string>
- <string name="relationTypeReferredBy" msgid="101573059844135524">"යොමුකරන ලද්දේ"</string>
- <string name="relationTypeRelative" msgid="1799819930085610271">"නෑයා"</string>
- <string name="relationTypeSister" msgid="1735983554479076481">"සහෝදරිය"</string>
- <string name="relationTypeSpouse" msgid="394136939428698117">"භාර්යාව හෝ ස්වාමිපුරුෂයා"</string>
- <string name="sipAddressTypeCustom" msgid="2473580593111590945">"අභිරුචි"</string>
- <string name="sipAddressTypeHome" msgid="6093598181069359295">"නිවස"</string>
- <string name="sipAddressTypeWork" msgid="6920725730797099047">"කාර්යාලය"</string>
- <string name="sipAddressTypeOther" msgid="4408436162950119849">"වෙනත්"</string>
- <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"PIN කේතය ටයිප් කරන්න"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><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>
- <string name="keyguard_label_text" msgid="861796461028298424">"අගුළු ඇරීමට, මෙනුව ඔබා පසුව 0 ද ඔබන්න."</string>
- <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"හදිසි ඇමතුම් අංකය"</string>
- <string name="lockscreen_carrier_default" msgid="8963839242565653192">"සේවාව නැත."</string>
- <string name="lockscreen_screen_locked" msgid="7288443074806832904">"තිරය අගුළු දමා ඇත."</string>
- <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"අගුළු හැරීමට මෙනුව ඔබන්න හෝ හදිසි ඇමතුම ලබාගන්න."</string>
- <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"අගුළු හැරීමට මෙනු ඔබන්න."</string>
- <string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"අගුළු ඇරීමට රටාව අඳින්න"</string>
- <string name="lockscreen_emergency_call" msgid="5347633784401285225">"හදිසි ඇමතුම්"</string>
- <string name="lockscreen_return_to_call" msgid="5244259785500040021">"ඇමතුම වෙත නැවත යන්න"</string>
- <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"නිවැරදියි!"</string>
- <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"නැවත උත්සාහ කරන්න"</string>
- <string name="lockscreen_password_wrong" msgid="5737815393253165301">"නැවත උත්සාහ කරන්න"</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"මුහුණ භාවිතයෙන් අඟුළු හැරීමේ උපරිම ප්‍රයන්තයන් ගණන ඉක්මවා ඇත"</string>
- <string name="lockscreen_plugged_in" msgid="8057762828355572315">"ආරෝපණය වෙමින්, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_charged" msgid="321635745684060624">"අරෝපිතයි"</string>
- <string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_low_battery" msgid="1482873981919249740">"ඔබගේ ආරෝපකයට සම්බන්ධ කරන්න."</string>
- <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM පත නැත"</string>
- <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ටැබ්ලටයේ SIM පත නොමැත."</string>
- <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"දුරකථනය තුළ SIM පත නැත."</string>
- <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"SIM පතක් ඇතුල් කරන්න."</string>
- <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM පත නොමැත හෝ කියවිය නොහැක. SIM පතක් ඇතුලත් කරන්න."</string>
- <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"භාවිතා කළ නොහැකි SIM පත."</string>
- <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"ඔබගේ SIM පත ස්ථිරව අබල කර තිබේ.\n වෙනත් SIM පතක් සඳහා ඔබගේ සේවාදායකයා සම්බන්ධ කරගන්න."</string>
- <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"පෙර ගීත බොත්තම"</string>
- <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"ඊළඟ ගීත බොත්තම"</string>
- <string name="lockscreen_transport_pause_description" msgid="7659088786780128001">"විරාම බොත්තම"</string>
- <string name="lockscreen_transport_play_description" msgid="5888422938351019426">"ධාවක බොත්තම"</string>
- <string name="lockscreen_transport_stop_description" msgid="4562318378766987601">"නැවතීමේ බොත්තම"</string>
- <string name="emergency_calls_only" msgid="6733978304386365407">"හදිසි ඇමතුම් පමණි"</string>
- <string name="lockscreen_network_locked_message" msgid="143389224986028501">"ජාලය අගුළු දමා ඇත"</string>
- <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM පත PUK අගුළු දමා ඇත."</string>
- <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"පරිශීලක උපදේශය බලන්න හෝ පරිභෝගික සේවාව අමතන්න."</string>
- <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"SIM පත අගුළු දමා ඇත."</string>
- <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"SIM පත අගුළු අරිමින්..."</string>
- <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"ඔබ <xliff:g id="NUMBER_0">%d</xliff:g> වාරයක් අගුළු ඇරීමේ රටාව වැරදියට ඇඳ ඇත. \n\nතත්පර <xliff:g id="NUMBER_1">%d</xliff:g> ක් ඇතුළත නැවත උත්සාහ කරන්න."</string>
- <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="2725973286239344555">"ඔබ මුරපදය වාර <xliff:g id="NUMBER_0">%d</xliff:g> ක් වැරදියට ටයිප්කොට ඇත. \n\nතත්පර <xliff:g id="NUMBER_1">%d</xliff:g> කින් නැවත උත්සහ කරන්න."</string>
- <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"ඔබ PIN අංකය <xliff:g id="NUMBER_0">%d</xliff:g> වාරයක් වැරදියට ටයිප් කොට ඇත.\n\n තත්පර <xliff:g id="NUMBER_1">%d</xliff:g> ක් ඇතුළත නැවත උත්සාහ කරන්න."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"ඔබ වැරදියට <xliff:g id="NUMBER_0">%d</xliff:g> වතාවක් ඔබගේ අගුළු හැරීමේ රටාව ඇඳ ඇත. අසාර්ථක උත්සහ කිරීම් <xliff:g id="NUMBER_1">%d</xliff:g> න් පසුව, ඔබගේ Google පුරනය වීම් භාවිතයෙන් ඔබගේ ටැබ්ලටය අගුළු හැරීමට ඔබගෙන් අසයි.\n\n තත්පර <xliff:g id="NUMBER_2">%d</xliff:g> පසුව නැවත උත්සහ කරන්න."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"ඔබ වැරදියට <xliff:g id="NUMBER_0">%d</xliff:g> වතාවක් ඔබගේ අගුළු හැරීමේ රටාව ඇඳ ඇත. අසාර්ථක උත්සහ කිරීම් <xliff:g id="NUMBER_1">%d</xliff:g> න් පසුව, ඔබගේ Google පුරනය වීම භාවිතයෙන් ඔබගේ දුරකථනය අගුළු හැරීමට ඔබගෙන් අසනු ඇත.\n\n තත්පර <xliff:g id="NUMBER_2">%d</xliff:g> පසුව නැවත උත්සහ කරන්න."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"ඔබ ටැබ්ලටය අගුළු හැරීමට වැරදියට අවස්ථා <xliff:g id="NUMBER_0">%d</xliff:g> ක් උත්සාහ කර ඇත. අවස්ථා <xliff:g id="NUMBER_1">%d</xliff:g> ක් අසාර්ථකව උත්සහ කිරීමකින් පසුව, ටැබ්ලටය කර්මාන්ත ශාලා මුල් තත්වයට නැවත පත් වන අතර සියලු පරිශීලක දත්ත නැති වෙයි."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"ඔබ දුරකථනය අගුළු ඇරීමට වාර <xliff:g id="NUMBER_0">%d</xliff:g> කදී වැරදී ප්‍රයත්නයන් ගෙන තිබේ. තවත් අසාර්ථක ප්‍රයත්න <xliff:g id="NUMBER_1">%d</xliff:g> කින් පසුව, දුරකථනය කර්මාන්තශාලාවේ පෙරනිමියට යළි පිහිටුවන අතර සියලුම පරිශීලක දත්ත නැති වී යයි."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"ටැබ්ලටයේ අගුළු ඇරීමට ඔබ වැරදි ප්‍රයත්න <xliff:g id="NUMBER">%d</xliff:g> වාරයක් ගෙන ඇත. දැන් ටැබ්ලටය කර්මාන්තශාලා සුපුරුද්ද වෙත යළි පිහිටුවීම කෙරේ."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"ඔබ දුරකථනය අගුළු ඇරීමට වාර <xliff:g id="NUMBER">%d</xliff:g> කදී වැරදී ප්‍රයත්නයන් ගෙන තිබේ. දැන් දුරකථනය කර්මාන්තශාලා පෙරනිමියට පිහිටුවනු ලබයි."</string>
- <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"තත්පර <xliff:g id="NUMBER">%d</xliff:g> කින් නැවත උත්සාහ කරන්න."</string>
- <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"රටාව අමතකද?"</string>
- <string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"ගිණුමේ අගුළු අරින්න"</string>
- <string name="lockscreen_glogin_too_many_attempts" msgid="2751368605287288808">"රටා උත්සාහ කිරීම් වැඩිය"</string>
- <string name="lockscreen_glogin_instructions" msgid="3931816256100707784">"අගුළු හැරීමට, ඔබගේ Google ගිණුම සමග පුරනය වන්න."</string>
- <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"පරිශීලක නාමය (ඊ-තැපෑල)"</string>
- <string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">"මුරපදය"</string>
- <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"පුරනය වෙන්න"</string>
- <string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"වලංගු නොවන පරිශීලක නාමයක් හෝ මුරපදයක්."</string>
- <string name="lockscreen_glogin_account_recovery_hint" msgid="1696924763690379073">"ඔබගේ පරිශීලක නාමය හෝ මුරපදය අමතකද?\n "<b>"google.com/accounts/recovery"</b>" වෙත යන්න."</string>
- <string name="lockscreen_glogin_checking_password" msgid="7114627351286933867">"පරික්ෂා කරමින්..."</string>
- <string name="lockscreen_unlock_label" msgid="737440483220667054">"අඟුල අරින්න"</string>
- <string name="lockscreen_sound_on_label" msgid="9068877576513425970">"ශබ්දය සක්‍රීය කරන්න"</string>
- <string name="lockscreen_sound_off_label" msgid="996822825154319026">"ශ්‍රව්‍ය අක්‍රිය කරන්න"</string>
- <string name="lockscreen_access_pattern_start" msgid="3941045502933142847">"රටාව අරඹන ලදි"</string>
- <string name="lockscreen_access_pattern_cleared" msgid="5583479721001639579">"රටාව හිස් කරන ලදි"</string>
- <string name="lockscreen_access_pattern_cell_added" msgid="6756031208359292487">"කොටුවක් එකතු කරන ලදි"</string>
- <string name="lockscreen_access_pattern_detected" msgid="4988730895554057058">"රටාව සම්පූර්ණයි"</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for keyguard_accessibility_widget_changed (5678624624681400191) -->
- <skip />
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"විජටය එකතු කරන්න."</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"හිස්"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"අගුළු අරින ප්‍රදේශය විදහා ඇත."</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"අගුළු අරින ප්‍රදේශය හැකිලී ඇත."</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> විජට්."</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"පරිශීලක තෝරන්නා"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"තත්වය"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"කැමරාව"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"මාධ්‍ය පාලක"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"විජටය නැවත අනුපිළිවෙළට සැකසිම ඇරඹුණි."</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"විජට් නැවත අනුපිළිවෙලට සැකසීම අවසානය."</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> විජටය මැකී ඇත."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"අගුළු නොදැමූ ප්‍රදේශය පුළුල් කරන්න."</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"සර්පණ අගුළු ඇරීම."</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"රටා අගුළු ඇරීම."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"මුහුණ භාවිතයෙන් අඟුළු හැරීම."</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PIN අගුළු ඇරීම."</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"මුරපද අගුළු ඇරීම."</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"රටා ප්‍රදේශය."</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"සර්පණ ප්‍රදේශය."</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="granularity_label_character" msgid="7336470535385009523">"අක්ෂරය"</string>
- <string name="granularity_label_word" msgid="7075570328374918660">"වචනය"</string>
- <string name="granularity_label_link" msgid="5815508880782488267">"සබැඳිය"</string>
- <string name="granularity_label_line" msgid="5764267235026120888">"රේඛාව"</string>
- <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string>
- <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string>
- <string name="factorytest_failed" msgid="5410270329114212041">"කර්මාන්ත ශාලා පරීක්ෂණය අසාර්ථකයි"</string>
- <string name="factorytest_not_system" msgid="4435201656767276723">"FACTORY_TEST ක්‍රියාව /system/app හි ස්ථාපිත පැකේජ සඳහා පමණක් සහය දක්වයි."</string>
- <string name="factorytest_no_action" msgid="872991874799998561">"FACTORY_TEST ක්‍රියාව ලබාදෙන පැකේජයක් සොයාගත නොහැකි විය."</string>
- <string name="factorytest_reboot" msgid="6320168203050791643">"පුනරාරම්භ කරන්න"</string>
- <string name="js_dialog_title" msgid="1987483977834603872">"\"<xliff:g id="TITLE">%s</xliff:g>\" හි ඇති පිටුව කියන්නේ:"</string>
- <string name="js_dialog_title_default" msgid="6961903213729667573">"ජාවාස්ක්‍රිප්ට්"</string>
- <string name="js_dialog_before_unload_title" msgid="2619376555525116593">"සංචලනය තහවුරු කරන්න"</string>
- <string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"මෙම පිටුවෙන් ඉවත් වන්න"</string>
- <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"මෙම පිටුවෙහි ඉන්න"</string>
- <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nඔබට මෙම පිටුවෙන් සංචලනය කිරීමට අවශ්‍ය බවට ඔබට විශ්වාසද?"</string>
- <string name="save_password_label" msgid="6860261758665825069">"තහවුරු කරන්න"</string>
- <string name="double_tap_toast" msgid="4595046515400268881">"උපදෙස: විශාලනය කිරීමට සහ කුඩා කිරීමට දෙවරක් තට්ටු කරන්න."</string>
- <string name="autofill_this_form" msgid="4616758841157816676">"ස්වයංක්‍රිය පිරවුම"</string>
- <string name="setup_autofill" msgid="7103495070180590814">"ස්වයංක්‍රිය පිරවුම සකසන්න"</string>
- <string name="autofill_address_name_separator" msgid="6350145154779706772">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3268041054899214945">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="7483307893170324129">", "</string>
- <string name="autofill_address_summary_format" msgid="4874459455786827344">"$1$2$3"</string>
- <string name="autofill_province" msgid="2231806553863422300">"පළාත"</string>
- <string name="autofill_postal_code" msgid="4696430407689377108">"තැපැල් කේතය"</string>
- <string name="autofill_state" msgid="6988894195520044613">"ජනපදය"</string>
- <string name="autofill_zip_code" msgid="8697544592627322946">"ZIP කේතය"</string>
- <string name="autofill_county" msgid="237073771020362891">"ප්‍රාන්තය"</string>
- <string name="autofill_island" msgid="4020100875984667025">"දූපත"</string>
- <string name="autofill_district" msgid="8400735073392267672">"දිස්ත්‍රික්කය"</string>
- <string name="autofill_department" msgid="5343279462564453309">"දෙපාර්තමේන්තුව"</string>
- <string name="autofill_prefecture" msgid="2028499485065800419">"ප්‍රාන්තය"</string>
- <string name="autofill_parish" msgid="8202206105468820057">"කෝරලය"</string>
- <string name="autofill_area" msgid="3547409050889952423">"ප්‍රදේශය"</string>
- <string name="autofill_emirate" msgid="2893880978835698818">"එමිරේට්"</string>
- <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"ඔබගේ වෙබ් පිටුසන් සහ ඉතිහාසය කියවීම"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="8462378226600439658">"බ්‍රව්සරය නැරඹූ සියලු URL සහ සියලු බ්‍රව්සර පිටුසන් වල ඉතිහාසය කියවීමට යෙදුමට අවසර දෙන්න. සටහන: වෙබ් බ්‍රව්සර අවශ්‍යතා සමග තෙවෙනි පාර්ශව බ්‍රව්සර වලට හෝ වෙනත් යෙදුම්වලට මෙම අවසරය බල නොදෙයි."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"වෙබ් පිටුසන් සහ ඉතිහාසයට ලිවිම"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="6825527469145760922">"ඔබගේ ටැබ්ලටයේ ගබඩා කර ඇති බ්‍රව්සරයේ ඉතිහාසය හෝ පිටුසන් වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. බ්‍රව්සර දත්ත මැකීමට හෝ වෙනස් කිරීමට මෙමඟින් යෙදුමට අවසර දෙයි. සටහන: වෙබ් ගවේෂණ හැකියාව සහිත තෙවෙනි පාර්ශව බ්‍රව්සර හෝ වෙනත් යෙදුම් වලින් මෙම අවසරයට බල නොකරයි."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"ඔබගේ දුරකථනයේ ආචයනය කරන ලද බ්‍රව්සර ඉතිහාසය හෝ පිටුසන වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. ඔබගේ බ්‍රව්සර දත්ත මැකීමට හෝ වෙනස් කිරීමට අනිෂ්ට යෙදුම් මෙය භාවිත කරයි. සටහන: වෙබ් බ්‍රව්සර අවශ්‍යතාවය සමග තෙවෙනි පාර්ශව බ්‍රව්සර හෝ වෙනත් යෙදුම් විසින් මෙම අවසරය බල ගැන්විය හැක."</string>
- <string name="permlab_setAlarm" msgid="1379294556362091814">"සීනුවක් සැකසීම"</string>
- <string name="permdesc_setAlarm" msgid="316392039157473848">"ස්ථාපනය කරන ලද සීනු ඔරලෝසු යෙදුමේ සීනුව සකස් කරන්නට යෙදුමට ඉඩ දෙන්න. ඇතැම් සීනු ඔරලෝසු යෙදුම් මෙම අංගය ක්‍රියාවට නංවා නොතිබීමට ඉඩ තිබේ."</string>
- <string name="permlab_addVoicemail" msgid="5525660026090959044">"හඬ තැපෑල එක් කිරීම"</string>
- <string name="permdesc_addVoicemail" msgid="6604508651428252437">"ඔබගේ හඬ තැපෑලේ එන ලිපි වෙත එන පණිවිඩ එකතු කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"බ්‍රව්සරයේ භූ අවසර වෙනස් කිරීම"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"බ්‍රවුසරයේ භූ ස්ථානීය අවසර වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. අභිමත වෙබ් අඩවි වලට ස්ථානීය තොරතුරු යැවීමට අනිෂ්ට යෙදුම් මෙය භාවිතා කෙරේ."</string>
- <string name="permlab_packageVerificationAgent" msgid="5568139100645829117">"පැකේජ සත්‍යාපනය කරන්න"</string>
- <string name="permdesc_packageVerificationAgent" msgid="8437590190990843381">"ස්ථාපිත කොට ඇති පැකේජයක් සත්‍යාපනයට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_bindPackageVerifier" msgid="4187786793360326654">"පැකේජ සත්‍යාපකයක් වෙත බඳින්න"</string>
- <string name="permdesc_bindPackageVerifier" msgid="3180741773233862126">"පැකේජ සත්‍යාපක ඉල්ලීම් වලට දරන්නාට ඉඩ ලබා දේ. සාමාන්‍ය යෙදුම් සඳහා කිසිසේත් අවශ්‍ය නොවේ."</string>
- <string name="permlab_serialPort" msgid="546083327654631076">"ශ්‍රේණිගත පොට ප්‍රවේශ කිරීම"</string>
- <string name="permdesc_serialPort" msgid="2991639985224598193">"SerialManager API භාවිතයෙන් අනුක්‍රම තොට වෙත ප්‍රවේශ වීමට රඳවනයට අවසර දෙන්න."</string>
- <string name="permlab_accessContentProvidersExternally" msgid="5077774297943409285">"බාහිර අන්තර්ගත සැපයුම්කරුවන් වෙත ප්‍රවේශය"</string>
- <string name="permdesc_accessContentProvidersExternally" msgid="4544346486697853685">"අන්තර්ගත සපයන්නන්ට ප්‍රවේශ වීමට දරන්නන්ට ෂෙල් එකේ සිට ප්‍රවේශ වීමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිසේත් අදාළ නොවේ."</string>
- <string name="permlab_updateLock" msgid="3527558366616680889">"ස්වයංක්‍රීය උපාංග යවත්කාල කිරීම් පසුබට කරන්න"</string>
- <string name="permdesc_updateLock" msgid="1655625832166778492">"උපාංගය උත්ශ්‍රේණිකරණයට අන්තර්ක්‍රියාකාරී නොවන යළි ඇරඹීමක් සඳහා සුදුසු වෙලාව කුමක්ද යන්න ගැන පද්ධතියට තොරතුරු ලබාදීමට දරන්නාට අවසර දෙන්න."</string>
- <string name="save_password_message" msgid="767344687139195790">"බ්‍රව්සරයට මෙම මුරපදය මතක තබා ගැනීමට ඔබට අවශ්‍යද?"</string>
- <string name="save_password_notnow" msgid="6389675316706699758">"දැන් නොවේ"</string>
- <string name="save_password_remember" msgid="6491879678996749466">"මතක තබා ගන්න"</string>
- <string name="save_password_never" msgid="8274330296785855105">"කවදාවත් නොවේ"</string>
- <string name="open_permission_deny" msgid="7374036708316629800">"මෙම පිටුව විවෘත කිරීමට ඔබට අවසර නැත."</string>
- <string name="text_copied" msgid="4985729524670131385">"පෙළ පසුරු පුවරුවට පිටපත් කරන ලදි."</string>
- <string name="more_item_label" msgid="4650918923083320495">"තව"</string>
- <string name="prepend_shortcut_label" msgid="2572214461676015642">"මෙනුව+"</string>
- <string name="menu_space_shortcut_label" msgid="2410328639272162537">"space"</string>
- <string name="menu_enter_shortcut_label" msgid="2743362785111309668">"ඇතුල් කරන්න"</string>
- <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"මකන්න"</string>
- <string name="search_go" msgid="8298016669822141719">"සෙවීම"</string>
- <string name="searchview_description_search" msgid="6749826639098512120">"සෙවීම"</string>
- <string name="searchview_description_query" msgid="5911778593125355124">"සෙවුම් විමසුම"</string>
- <string name="searchview_description_clear" msgid="1330281990951833033">"විමසුම හිස් කරන්න"</string>
- <string name="searchview_description_submit" msgid="2688450133297983542">"විමසුම යොමු කරන්න"</string>
- <string name="searchview_description_voice" msgid="2453203695674994440">"හඬ සෙවීම"</string>
- <string name="enable_explore_by_touch_warning_title" msgid="7460694070309730149">"ස්පර්ශ කිරීමෙන් ගවේෂණය සබල කරන්න ද?"</string>
- <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="8655887539089910577">"ස්පර්ශය වෙතින් ගවේෂණය සක්‍රිය කිරීමට <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> ට අවශ්‍යය. ස්පර්ශය වෙතින් ගවේෂණය සක්‍රිය විට, ඔබගේ ඇඟිලිවලට පහළ විස්තර ඇසිය හෝ බැලිය හැක හෝ ටැබ්ලටය සමග අන්තර් ක්‍රියාකාරී වීමට ඉංගිති සිදු කළ හැක."</string>
- <string name="enable_explore_by_touch_warning_message" product="default" msgid="2708199672852373195">"ස්පර්ශය වෙතින් ගවේෂණය සක්‍රිය කිරීමට <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> ට අවශ්‍යයි. ස්පර්ශය වෙතින් ගවේෂණය සක්‍රිය විට, ඔබගේ ඇඟිලිවලට පහළ විස්තර ඇසිය හෝ බැලිය හැක හෝ දුරකථනය සමග අන්තර් ක්‍රියාකාරී වීමට ඉංගිති සිදු කළ හැක."</string>
- <string name="oneMonthDurationPast" msgid="7396384508953779925">"මාස 1 කට පෙර"</string>
- <string name="beforeOneMonthDurationPast" msgid="909134546836499826">"මාස 1 කට පෙර"</string>
- <plurals name="num_seconds_ago">
- <item quantity="one" msgid="4869870056547896011">"තත්පර 1 කට පෙර"</item>
- <item quantity="other" msgid="3903706804349556379">"තත්පර <xliff:g id="COUNT">%d</xliff:g> ට පෙර"</item>
- </plurals>
- <plurals name="num_minutes_ago">
- <item quantity="one" msgid="3306787433088810191">"මිනිත්තු 1 ට පෙර"</item>
- <item quantity="other" msgid="2176942008915455116">"මිනිත්තු <xliff:g id="COUNT">%d</xliff:g> කට පෙර"</item>
- </plurals>
- <plurals name="num_hours_ago">
- <item quantity="one" msgid="9150797944610821849">"පැය 1 කට පෙර"</item>
- <item quantity="other" msgid="2467273239587587569">"පැය <xliff:g id="COUNT">%d</xliff:g> කට පෙර"</item>
- </plurals>
- <plurals name="last_num_days">
- <item quantity="other" msgid="3069992808164318268">"අන්තිම දවස් <xliff:g id="COUNT">%d</xliff:g>"</item>
- </plurals>
- <string name="last_month" msgid="3959346739979055432">"අවසාන මාසය"</string>
- <string name="older" msgid="5211975022815554840">"පරණ"</string>
- <plurals name="num_days_ago">
- <item quantity="one" msgid="861358534398115820">"ඊයේ"</item>
- <item quantity="other" msgid="2479586466153314633">"දින <xliff:g id="COUNT">%d</xliff:g> කට පෙර"</item>
- </plurals>
- <plurals name="in_num_seconds">
- <item quantity="one" msgid="2729745560954905102">"තත්පර 1 කින්"</item>
- <item quantity="other" msgid="1241926116443974687">"තත්පර <xliff:g id="COUNT">%d</xliff:g> කදී"</item>
- </plurals>
- <plurals name="in_num_minutes">
- <item quantity="one" msgid="8793095251325200395">"මිනිත්තු 1 කදී"</item>
- <item quantity="other" msgid="3330713936399448749">"මිනිත්තු <xliff:g id="COUNT">%d</xliff:g> ක් තුළ"</item>
- </plurals>
- <plurals name="in_num_hours">
- <item quantity="one" msgid="7164353342477769999">"පැය 1 ක් තුළ"</item>
- <item quantity="other" msgid="547290677353727389">"පැය <xliff:g id="COUNT">%d</xliff:g> ක් තුළ"</item>
- </plurals>
- <plurals name="in_num_days">
- <item quantity="one" msgid="5413088743009839518">"හෙට"</item>
- <item quantity="other" msgid="5109449375100953247">"දින <xliff:g id="COUNT">%d</xliff:g> ක් තුළ"</item>
- </plurals>
- <plurals name="abbrev_num_seconds_ago">
- <item quantity="one" msgid="1849036840200069118">"තත්පර 1 කට පෙර"</item>
- <item quantity="other" msgid="3699169366650930415">"තත්පර <xliff:g id="COUNT">%d</xliff:g> කට පෙර"</item>
- </plurals>
- <plurals name="abbrev_num_minutes_ago">
- <item quantity="one" msgid="6361490147113871545">"මිනිත්තු 1 කට පෙර"</item>
- <item quantity="other" msgid="851164968597150710">"මිනිත්තු <xliff:g id="COUNT">%d</xliff:g> ට පෙර"</item>
- </plurals>
- <plurals name="abbrev_num_hours_ago">
- <item quantity="one" msgid="4796212039724722116">"පැය 1 කට පෙර"</item>
- <item quantity="other" msgid="6889970745748538901">"පැය <xliff:g id="COUNT">%d</xliff:g> ට පෙර"</item>
- </plurals>
- <plurals name="abbrev_num_days_ago">
- <item quantity="one" msgid="8463161711492680309">"ඊයේ"</item>
- <item quantity="other" msgid="3453342639616481191">"දින <xliff:g id="COUNT">%d</xliff:g> ට පෙර"</item>
- </plurals>
- <plurals name="abbrev_in_num_seconds">
- <item quantity="one" msgid="5842225370795066299">"තත්පර 1 ක් තුළ"</item>
- <item quantity="other" msgid="5495880108825805108">"තත්පර <xliff:g id="COUNT">%d</xliff:g> ක් තුළ"</item>
- </plurals>
- <plurals name="abbrev_in_num_minutes">
- <item quantity="one" msgid="562786149928284878">"මිනිත්තු 1 ක් තුළ"</item>
- <item quantity="other" msgid="4216113292706568726">"මිනිත්තු <xliff:g id="COUNT">%d</xliff:g> ක් තුළ"</item>
- </plurals>
- <plurals name="abbrev_in_num_hours">
- <item quantity="one" msgid="3274708118124045246">"පැය 1 ක් තුළ"</item>
- <item quantity="other" msgid="3705373766798013406">"පැය <xliff:g id="COUNT">%d</xliff:g> ක් තුළ"</item>
- </plurals>
- <plurals name="abbrev_in_num_days">
- <item quantity="one" msgid="2178576254385739855">"හෙට"</item>
- <item quantity="other" msgid="2973062968038355991">"දින <xliff:g id="COUNT">%d</xliff:g> ක් තුළ"</item>
- </plurals>
- <string name="preposition_for_date" msgid="9093949757757445117">"<xliff:g id="DATE">%s</xliff:g> වන දා"</string>
- <string name="preposition_for_time" msgid="5506831244263083793">"<xliff:g id="TIME">%s</xliff:g> ට"</string>
- <string name="preposition_for_year" msgid="5040395640711867177">"<xliff:g id="YEAR">%s</xliff:g> තුළ"</string>
- <string name="day" msgid="8144195776058119424">"දවස"</string>
- <string name="days" msgid="4774547661021344602">"දින"</string>
- <string name="hour" msgid="2126771916426189481">"පැය"</string>
- <string name="hours" msgid="894424005266852993">"පැය"</string>
- <string name="minute" msgid="9148878657703769868">"min"</string>
- <string name="minutes" msgid="5646001005827034509">"මිනිත්තු"</string>
- <string name="second" msgid="3184235808021478">"තත්"</string>
- <string name="seconds" msgid="3161515347216589235">"තත්පර"</string>
- <string name="week" msgid="5617961537173061583">"සතිය"</string>
- <string name="weeks" msgid="6509623834583944518">"සති"</string>
- <string name="year" msgid="4001118221013892076">"අවුරුද්ද"</string>
- <string name="years" msgid="6881577717993213522">"අවුරුදු"</string>
- <plurals name="duration_seconds">
- <item quantity="one" msgid="6962015528372969481">"තත්පර 1"</item>
- <item quantity="other" msgid="1886107766577166786">"තත්පර <xliff:g id="COUNT">%d</xliff:g>"</item>
- </plurals>
- <plurals name="duration_minutes">
- <item quantity="one" msgid="4915414002546085617">"මිනිත්තු 1"</item>
- <item quantity="other" msgid="3165187169224908775">"මිනිත්තු <xliff:g id="COUNT">%d</xliff:g>"</item>
- </plurals>
- <plurals name="duration_hours">
- <item quantity="one" msgid="8917467491248809972">"පැය 1"</item>
- <item quantity="other" msgid="3863962854246773930">"පැය <xliff:g id="COUNT">%d</xliff:g> ක්"</item>
- </plurals>
- <string name="VideoView_error_title" msgid="3534509135438353077">"වීඩියෝ ගැටලුව"</string>
- <string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"මේ වීඩියෝව මෙම උපාංගයට ප්‍රවාහනය සඳහා වලංගු නැත."</string>
- <string name="VideoView_error_text_unknown" msgid="3450439155187810085">"මෙම වීඩියෝව ධාවනය කළ නොහැක."</string>
- <string name="VideoView_error_button" msgid="2822238215100679592">"හරි"</string>
- <string name="relative_time" msgid="1818557177829411417">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
- <string name="noon" msgid="7245353528818587908">"මධ්‍යහනය"</string>
- <string name="Noon" msgid="3342127745230013127">"මධ්‍යාහනය"</string>
- <string name="midnight" msgid="7166259508850457595">"මධ්‍යම රාත්‍රිය"</string>
- <string name="Midnight" msgid="5630806906897892201">"මධ්‍යම රාත්‍රිය"</string>
- <string name="elapsed_time_short_format_mm_ss" msgid="4431555943828711473">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
- <string name="elapsed_time_short_format_h_mm_ss" msgid="1846071997616654124">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
- <string name="selectAll" msgid="6876518925844129331">"සියල්ල තෝරන්න"</string>
- <string name="cut" msgid="3092569408438626261">"කපන්න"</string>
- <string name="copy" msgid="2681946229533511987">"පිටපත් කරන්න"</string>
- <string name="paste" msgid="5629880836805036433">"අලවන්න"</string>
- <string name="replace" msgid="5781686059063148930">"ප්‍රතිස්ථාපනය කරන්න..."</string>
- <string name="delete" msgid="6098684844021697789">"මකන්න"</string>
- <string name="copyUrl" msgid="2538211579596067402">"URL පිටපත් කරන්න"</string>
- <string name="selectTextMode" msgid="1018691815143165326">"පෙළ තෝරන්න"</string>
- <string name="textSelectionCABTitle" msgid="5236850394370820357">"පෙළ තේරීම"</string>
- <string name="addToDictionary" msgid="4352161534510057874">"ශබ්ද කෝෂයට එකතු කරන්න"</string>
- <string name="deleteText" msgid="6979668428458199034">"මකන්න"</string>
- <string name="inputMethod" msgid="1653630062304567879">"ආදාන ක්‍රමය"</string>
- <string name="editTextMenuTitle" msgid="4909135564941815494">"පෙළ ක්‍රියාවන්"</string>
- <string name="low_internal_storage_view_title" msgid="5576272496365684834">"ආචයනය ඉඩ ප්‍රමාණය අඩු වී ඇත"</string>
- <string name="low_internal_storage_view_text" msgid="6640505817617414371">"සමහර පද්ධති කාර්යයන් ක්‍රියා නොකරනු ඇත"</string>
- <string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ධාවනය වේ"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"වැඩිපුර තොරතුරු හෝ යෙදුම නැවතීම සඳහා ස්පර්ශ කරන්න."</string>
- <string name="ok" msgid="5970060430562524910">"හරි"</string>
- <string name="cancel" msgid="6442560571259935130">"අවලංගු කරන්න"</string>
- <string name="yes" msgid="5362982303337969312">"හරි"</string>
- <string name="no" msgid="5141531044935541497">"අවලංගු කරන්න"</string>
- <string name="dialog_alert_title" msgid="2049658708609043103">"අවධානය"</string>
- <string name="loading" msgid="7933681260296021180">"පූරණය වෙමින්..."</string>
- <string name="capital_on" msgid="1544682755514494298">"සක්‍රීයයි"</string>
- <string name="capital_off" msgid="6815870386972805832">"අක්‍රිය කරන්න"</string>
- <string name="whichApplication" msgid="4533185947064773386">"පහත භාවිතයෙන් ක්‍රියාව සම්පූර්ණ කරන්න"</string>
- <string name="alwaysUse" msgid="4583018368000610438">"මෙම ක්‍රියාව සඳහා සුපුරුද්දෙන් භාවිත කරන්න."</string>
- <string name="clearDefaultHintMsg" msgid="3252584689512077257">"පද්ධති සැකසීම් &gt; යෙදුම් &gt; බාගැනීම් තුළ ඇති සුපුරුද්ද හිස් කරන්න."</string>
- <string name="chooseActivity" msgid="7486876147751803333">"ක්‍රියාවක් තෝරන්න"</string>
- <string name="chooseUsbActivity" msgid="6894748416073583509">"USB උපාංගය සඳහා යෙදුමක් තෝරන්න"</string>
- <string name="noApplications" msgid="2991814273936504689">"මෙම ක්‍රියාව සිදු කිරීමට කිසිදු යෙදුමකට නොහැකිය."</string>
- <string name="aerr_title" msgid="1905800560317137752"></string>
- <string name="aerr_application" msgid="932628488013092776">"අවාසනාවන්ත ලෙස <xliff:g id="APPLICATION">%1$s</xliff:g> නැවතී ඇත."</string>
- <string name="aerr_process" msgid="4507058997035697579">"අවාසනාවන්ත ලෙස, <xliff:g id="PROCESS">%1$s</xliff:g> ක්‍රියාවලිය නතර විණි."</string>
- <string name="anr_title" msgid="4351948481459135709"></string>
- <string name="anr_activity_application" msgid="1904477189057199066">"<xliff:g id="APPLICATION">%2$s</xliff:g> ප්‍රතිචාර නොදක්වයි.\n\nඔබට එය නතර කිරීමට අවශ්‍යද?"</string>
- <string name="anr_activity_process" msgid="5776209883299089767">"<xliff:g id="ACTIVITY">%1$s</xliff:g> ක්‍රියාකාරකම ප්‍රතිචාර නොදක්වයි.\n\nඑය වසා දැමීමට ඔබට අවශ්‍යද?"</string>
- <string name="anr_application_process" msgid="8941757607340481057">"<xliff:g id="APPLICATION">%1$s</xliff:g> ප්‍රතිචාර නොදක්වයි. එය වසා දැමීමට ඔබට අවශ්‍යද?"</string>
- <string name="anr_process" msgid="6513209874880517125">"<xliff:g id="PROCESS">%1$s</xliff:g> ක්‍රියාවලිය ප්‍රතිචාර නොදක්වයි.\n\nඔබට එය නතර කිරීමට අවශ්‍යද?"</string>
- <string name="force_close" msgid="8346072094521265605">"හරි"</string>
- <string name="report" msgid="4060218260984795706">"වාර්තාව"</string>
- <string name="wait" msgid="7147118217226317732">"රැඳී සිටින්න"</string>
- <string name="webpage_unresponsive" msgid="3272758351138122503">"පිටුව ප්‍රතිචාර නොදක්වන තත්වයට පත්වී ඇත.\n\nඔබට එය වැසීමට අවශ්‍යද?"</string>
- <string name="launch_warning_title" msgid="1547997780506713581">"යෙදුම නැවත හරවා යවා ඇත"</string>
- <string name="launch_warning_replace" msgid="6202498949970281412">"<xliff:g id="APP_NAME">%1$s</xliff:g> දැන් ධාවනය වෙයි."</string>
- <string name="launch_warning_original" msgid="188102023021668683">"<xliff:g id="APP_NAME">%1$s</xliff:g> මුලින්ම අරඹා ඇත."</string>
- <string name="screen_compat_mode_scale" msgid="3202955667675944499">"පරිමාණය"</string>
- <string name="screen_compat_mode_show" msgid="4013878876486655892">"සැමවිටම පෙන්වන්න"</string>
- <string name="screen_compat_mode_hint" msgid="1064524084543304459">"පද්ධති සැකසීම් තුළ මෙය නැවත ක්‍රියාත්මක කරන්න &gt; යෙදුම් &gt; බාගන්නා ලදි."</string>
- <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> යෙදුම (<xliff:g id="PROCESS">%2$s</xliff:g> ක්‍රියාවලිය) එහි StrictMode කොන්දේසිය උල්ලංඝනය කර ඇත."</string>
- <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> ක්‍රියාවලිය එහි StrictMode කොන්දේසිය උල්ලංඝනය කර ඇත."</string>
- <string name="android_upgrading_title" msgid="1584192285441405746">"Android උත්ශ්‍රේණි වෙමින් පවතී..."</string>
- <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> කින් <xliff:g id="NUMBER_0">%1$d</xliff:g> වැනි යෙදුමප්‍ රශස්ත කරමින්."</string>
- <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>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"යෙදුමට මාරු වීමට ස්පර්ශ කරන්න"</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>
- <string name="old_app_description" msgid="2082094275580358049">"නව යෙදුම ආරම්භ නොකරන්න."</string>
- <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="sendText" msgid="5209874571959469142">"පෙළ සඳහා ක්‍රියාව තෝරන්න"</string>
- <string name="volume_ringtone" msgid="6885421406845734650">"හඬ නඟනයේ ශබ්දය"</string>
- <string name="volume_music" msgid="5421651157138628171">"මාධ්‍ය ශබ්දය ත්‍රීවතාවය"</string>
- <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"බ්ලූටූත් හරහා ධාවනය වෙයි"</string>
- <string name="volume_music_hint_silent_ringtone_selected" msgid="8310739960973156272">"නිහඬ රිගින් ටෝනයක් සකසන්න"</string>
- <string name="volume_call" msgid="3941680041282788711">"ඇමතුම-තුළ ශබ්ද ත්‍රීවතාව"</string>
- <string name="volume_bluetooth_call" msgid="2002891926351151534">"බ්ලූටූත් ඇමතුම-තුළ ශබ්ද ත්‍රීවතාවය"</string>
- <string name="volume_alarm" msgid="1985191616042689100">"සීනුවේ ශබ්දය"</string>
- <string name="volume_notification" msgid="2422265656744276715">"දැනුම්දීමේ ශබ්දය"</string>
- <string name="volume_unknown" msgid="1400219669770445902">"ශබ්දය ත්‍රීවතාවය"</string>
- <string name="volume_icon_description_bluetooth" msgid="6538894177255964340">"බ්ලූටූත් ශබ්ද ත්‍රීවතාව"</string>
- <string name="volume_icon_description_ringer" msgid="3326003847006162496">"රින්ටෝනයේ ශබ්දය"</string>
- <string name="volume_icon_description_incall" msgid="8890073218154543397">"ඇමතුම් ශබ්දය ත්‍රීවතාවය"</string>
- <string name="volume_icon_description_media" msgid="4217311719665194215">"මාධ්‍ය ශබ්දය ත්‍රීවතාවය"</string>
- <string name="volume_icon_description_notification" msgid="7044986546477282274">"දැනුම්දීමේ ශබ්ද ත්‍රීවතාව"</string>
- <string name="ringtone_default" msgid="3789758980357696936">"සුපුරුදු රින්ටෝනය සකසන්න"</string>
- <string name="ringtone_default_with_actual" msgid="8129563480895990372">"සුපුරුදු රින්ටෝනය (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
- <string name="ringtone_silent" msgid="7937634392408977062">"කිසිවක් නැත"</string>
- <string name="ringtone_picker_title" msgid="3515143939175119094">"රිගින්ටෝන"</string>
- <string name="ringtone_unknown" msgid="5477919988701784788">"නොදන්නා රින්ටෝනය"</string>
- <plurals name="wifi_available">
- <item quantity="one" msgid="6654123987418168693">"Wi-Fi ජාලයක් තිබේ"</item>
- <item quantity="other" msgid="4192424489168397386">"Wi-Fi ජාල ඇත"</item>
- </plurals>
- <plurals name="wifi_available_detailed">
- <item quantity="one" msgid="1634101450343277345">"විවෘත Wi-Fi ජාලය ලබාගත හැක"</item>
- <item quantity="other" msgid="7915895323644292768">"විවෘත Wi-Fi ජාල තිබේ"</item>
- </plurals>
- <string name="wifi_available_sign_in" msgid="4029489716605255386">"Wi-Fi ජලයට පුරනය වන්න"</string>
- <string name="network_available_sign_in" msgid="8495155593358054676">"ජාලයට පුරනය වන්න"</string>
- <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
- <skip />
- <string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi වෙත සම්බන්ධ විය නොහැක"</string>
- <string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" දුබල අන්තර්ජාල සම්බන්ධතාවයක් ඇත."</string>
- <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"ඍජු Wi-Fi"</string>
- <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>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"සැකසීම් සඳහා ස්පර්ශ කරන්න"</string>
- <string name="accept" msgid="1645267259272829559">"පිළිගන්න"</string>
- <string name="decline" msgid="2112225451706137894">"ප්‍රතික්ෂේප කරන්න"</string>
- <string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ආරාධනාව යවන ලදි"</string>
- <string name="wifi_p2p_invitation_to_connect_title" msgid="4958803948658533637">"සම්බන්ධතාවයට ඇරයුමකි"</string>
- <string name="wifi_p2p_from_message" msgid="570389174731951769">"වෙතින්:"</string>
- <string name="wifi_p2p_to_message" msgid="248968974522044099">"වෙත:"</string>
- <string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"අවශ්‍ය PIN එක ටයිප් කරන්න:"</string>
- <string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="tablet" msgid="8012981257742232475">"ටැබ්ලටය <xliff:g id="DEVICE_NAME">%1$s</xliff:g> වෙත සම්බන්ධ වන අතරතුර එය Wi-Fi වලින් තාවකාලිකව විසන්ධි කෙරේ."</string>
- <string name="wifi_p2p_frequency_conflict_message" product="default" msgid="7363907213787469151">"දුරකථනය <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ට සම්බන්ධ වී පවතින විට Wi-Fi වලින් එය තාවකාලිකව විසන්ධි වෙයි."</string>
- <string name="select_character" msgid="3365550120617701745">"අකුර ඇතුළත් කරන්න"</string>
- <string name="sms_control_title" msgid="7296612781128917719">"SMS පණිවිඩ යවමින්"</string>
- <string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; SMS පණිවිඩ විශාල ගණනක් යවයි. මෙම යෙදුමට පණිවිඩ යැවීම නොනැවතී කරගෙන යාමට අවසර දීමට ඔබට අවශ්‍යද?"</string>
- <string name="sms_control_yes" msgid="3663725993855816807">"අවසර දෙන්න"</string>
- <string name="sms_control_no" msgid="625438561395534982">"ප්‍රතික්ෂේප කරන්න"</string>
- <string name="sms_short_code_confirm_message" msgid="1645436466285310855">"&lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;b&gt; වෙත කෙටි පණිවීඩයක් යැවීමට &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; කැමතිය."</string>
- <!-- syntax error in translation for sms_short_code_details (3492025719868078457) org.xmlpull.v1.XmlPullParserException: expected: /string read: font (position:END_TAG </font>@1:83 in <string name="sms_short_code_details" msgid="3492025719868078457">"මෙය "</font>"ඔබගේ ජංගම ගිණුමේ"<font fgcolor="#ffffb060">" අය වීම් වලට හේතුවක් වේ."</string>
-) -->
- <string name="sms_premium_short_code_details" msgid="5523826349105123687"><font fgcolor="#ffffb060">"මෙය ඔබගේ ජංගම ගිණුමෙන් අයවීමට හේතු වේ."</font></string>
- <string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"යවන්න"</string>
- <string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"අවලංගු කරන්න"</string>
- <string name="sms_short_code_remember_choice" msgid="5289538592272218136">"මගේ තේරීම මතක තබාගන්න"</string>
- <string name="sms_short_code_remember_undo_instruction" msgid="4960944133052287484">"ඔබට මෙය සැකසීම් තුළ වෙනස්කර ගැනීම පසුව කළ හැක &gt; යෙදුම්"</string>
- <string name="sms_short_code_confirm_always_allow" msgid="3241181154869493368">"සැමවිටම ඉඩ දෙන්න"</string>
- <string name="sms_short_code_confirm_never_allow" msgid="446992765774269673">"කිසිදා අවසර නොදෙන්න"</string>
- <string name="sim_removed_title" msgid="6227712319223226185">"SIM පත ඉවත් කරන ලදි"</string>
- <string name="sim_removed_message" msgid="2333164559970958645">"ඔබ ඇතුළත් කරන ලද වලංගු SIM පත සමඟ නැවත ඇරඹීම කරන තුරු ජංගම ජාලය නොතිබේ."</string>
- <string name="sim_done_button" msgid="827949989369963775">"හරි"</string>
- <string name="sim_added_title" msgid="3719670512889674693">"SIM පතක් එකතු කරන ලදි"</string>
- <string name="sim_added_message" msgid="6599945301141050216">"ජංගම ජාලයට ප්‍රවේශ වීමට ඔබගේ උපාංගය නැවත අරඹන්න."</string>
- <string name="sim_restart_button" msgid="4722407842815232347">"යළි අරඹන්න"</string>
- <string name="time_picker_dialog_title" msgid="8349362623068819295">"වේලාව සකසන්න"</string>
- <string name="date_picker_dialog_title" msgid="5879450659453782278">"දිනය සැකසීම"</string>
- <string name="date_time_set" msgid="5777075614321087758">"සකසන්න"</string>
- <string name="date_time_done" msgid="2507683751759308828">"හරි"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"අලුත්: "</font></string>
- <string name="perms_description_app" msgid="5139836143293299417">"<xliff:g id="APP_NAME">%1$s</xliff:g> විසින් සපයන ලදි."</string>
- <string name="no_permissions" msgid="7283357728219338112">"අවසර අවශ්‍ය නොමැත"</string>
- <string name="perm_costs_money" msgid="4902470324142151116">"මෙමඟින් ඔබට මුදල් වැය විය හැක"</string>
- <string name="usb_storage_activity_title" msgid="4465055157209648641">"USB මහා ආචයනය"</string>
- <string name="usb_storage_title" msgid="5901459041398751495">"USB සම්බන්ධිතයි"</string>
- <string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"ඔබ ඔබගේ පරිගණකයට සම්බන්ධ වී ඇත්තේ USB ස්පර්ශය හරහාය. ඔබට ඔබේ පරිගණකය හා ඔබගේ Android USB ආචයනය අතර ගොනු පිටපත් කිරීමට අවශ්‍ය නම් පහත බොත්තම ඔබන්න."</string>
- <string name="usb_storage_message" product="default" msgid="805351000446037811">"ඔබ ඔබගේ පරිගණකයට USB හරහා සම්බන්ධ වී ඇත. ඔබට ඔබේ පරිගණකය හා ඔබගේ Android SD පත අතර ගොනු පිටපත් කිරීමට අවශ්‍ය නම් පහත බොත්තම ස්පර්ශ කරන්න."</string>
- <string name="usb_storage_button_mount" msgid="1052259930369508235">"USB ආචයනය සක්‍රිය කරන්න"</string>
- <string name="usb_storage_error_message" product="nosdcard" msgid="3017045217365540658">"USB මහා ආචයනය සඳහා ඔබගේ USB ආචයනය භාවිතයේදී ගැටළුවක් තිබේ."</string>
- <string name="usb_storage_error_message" product="default" msgid="2876018512716970313">"USB මහා ආචයනය සඳහා ඔබගේ SD පත භාවිතයේදී ගැටළුවක් තිබේ."</string>
- <string name="usb_storage_notification_title" msgid="8175892554757216525">"USB සම්බන්ධිතයි"</string>
- <string name="usb_storage_notification_message" msgid="939822783828183763">"ඔබගේ පරිගණකය වෙතට/වෙතින් ගොනු පිටපත් කිරීමට ස්පර්ශ කරන්න."</string>
- <string name="usb_storage_stop_notification_title" msgid="2336058396663516017">"USB ආචයනය අක්‍රිය කරන්න"</string>
- <string name="usb_storage_stop_notification_message" msgid="1656852098555623822">"USB ආචයනය අක්‍රිය කිරීමට ස්පර්ශ කරන්න."</string>
- <string name="usb_storage_stop_title" msgid="660129851708775853">"USB ආචයනය භාවිතයේ පවතී"</string>
- <string name="usb_storage_stop_message" product="nosdcard" msgid="4264025280777219521">"USB ආචයනය අක්‍රිය කිරීමට පෙර, ඔබගේ පරිගණකයෙන් Android USB ආචයනය ගලවා දමන්න (\"පිට කරන්න\")."</string>
- <string name="usb_storage_stop_message" product="default" msgid="8043969782460613114">"USB ආචයනය අක්‍රිය කිරීමට පෙර, ඔබගේ Android SD පත පරිගණකයෙන් ගලවන්න."</string>
- <string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"USB ආචයනය අක්‍රිය කරන්න"</string>
- <string name="usb_storage_stop_error_message" msgid="1970374898263063836">"USB ආචයනය අක්‍රිය කිරීමේදී ගැටළුවක් ඇතිවිය. USB සංග්‍රාහකය ගලවා ඇති දැයි පරීක්ෂා කරන්න, පසුව නැවතත් උත්සහ කරන්න."</string>
- <string name="dlg_confirm_kill_storage_users_title" msgid="963039033470478697">"USB ආචයනය සක්‍රිය කරන්න"</string>
- <string name="dlg_confirm_kill_storage_users_text" msgid="5100428757107469454">"ඔබ USB ආචයනය සක්‍රිය නම්, ඔබ භාවිතා කරන සමහර යෙදුම් නැවතීම සහ ඔබ USB ආචයනය අක්‍රිය කරන තුරු නොතිබේවී."</string>
- <string name="dlg_error_title" msgid="7323658469626514207">"USB ක්‍රියාවලිය අසාර්ථකයි"</string>
- <string name="dlg_ok" msgid="7376953167039865701">"හරි"</string>
- <string name="usb_mtp_notification_title" msgid="3699913097391550394">"මාධ්‍ය උපාංගයක් ලෙස සම්බන්ධිතයි"</string>
- <string name="usb_ptp_notification_title" msgid="1960817192216064833">"කැමරාවක් ලෙස සම්බන්ධ කර ඇත"</string>
- <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"ස්ථාපිතයක් ලෙස සම්බන්ධයි"</string>
- <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB මෙවලමකට සම්බන්ධිතයි"</string>
- <string name="usb_notification_message" msgid="2290859399983720271">"අනෙක් USB විකල්පය සඳහා ස්පර්ශ කරන්න."</string>
- <string name="extmedia_format_title" product="nosdcard" msgid="9020092196061007262">"USB ආචයනය ෆෝමැට් කරන්නද?"</string>
- <string name="extmedia_format_title" product="default" msgid="3648415921526526069">"SD පත ෆෝමැට් කරන්නද?"</string>
- <string name="extmedia_format_message" product="nosdcard" msgid="3934016853425761078">"ඔබගේ USB ආචයනයේ ඇති සියලුම ගොනු මැකී යනු ඇත. මෙම ක්‍රියාව ආපසු හැරවිය නොහැක!"</string>
- <string name="extmedia_format_message" product="default" msgid="14131895027543830">"ඔබගේ පතේ සියලු දත්ත නැති වනු ඇත."</string>
- <string name="extmedia_format_button_format" msgid="4131064560127478695">"ෆෝමැට්"</string>
- <string name="adb_active_notification_title" msgid="6729044778949189918">"USB නිදොස්කරණය සම්බන්ධිතයි"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB නිදොස්කරණය අබල කිරීමට ස්පර්ශ කරන්න."</string>
- <string name="select_input_method" msgid="4653387336791222978">"ආදාන ක්‍රමයක් තෝරන්න"</string>
- <string name="configure_input_methods" msgid="9091652157722495116">"ආදාන ක්‍රම සකසන්න"</string>
- <string name="use_physical_keyboard" msgid="6203112478095117625">"භෞතික යතුරු පුවරුව"</string>
- <string name="hardware" msgid="7517821086888990278">"දෘඨාංග"</string>
- <string name="select_keyboard_layout_notification_title" msgid="1407367017263030773">"යතුරු පුවරුවට පිරිසැලැස්ම තෝරන්න"</string>
- <string name="select_keyboard_layout_notification_message" msgid="4465907700449257063">"යතුරු පුවරුවට පිරිසැලැස්මක් තේරීමට ස්පර්ශ කරන්න."</string>
- <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="candidates_style" msgid="4333913089637062257"><u>"අපේක්ෂකයන්"</u></string>
- <string name="ext_media_checking_notification_title" product="nosdcard" msgid="3449816005351468560">"USB ආචයනය සකසමින්"</string>
- <string name="ext_media_checking_notification_title" product="default" msgid="5457603418970994050">"SD පත සුදානම් කරමින්"</string>
- <string name="ext_media_checking_notification_message" msgid="8287319882926737053">"වැරදි සඳහා පරීක්ෂා කරමින්."</string>
- <string name="ext_media_nofs_notification_title" product="nosdcard" msgid="7788040745686229307">"හිස් USB ආචයනය"</string>
- <string name="ext_media_nofs_notification_title" product="default" msgid="780477838241212997">"හිස් SD පත"</string>
- <string name="ext_media_nofs_notification_message" product="nosdcard" msgid="7840121067427269500">"SD පත හිස් හෝ සහාය නොදක්වන ගොනු පද්ධතියක් ඇත."</string>
- <string name="ext_media_nofs_notification_message" product="default" msgid="8641065641786923604">"SD පත හිස් හෝ සහය නොදක්වන ගොනු පද්ධතියක් ඇත"</string>
- <string name="ext_media_unmountable_notification_title" product="nosdcard" msgid="2090046769532713563">"හානි වූ USB ආචයනය"</string>
- <string name="ext_media_unmountable_notification_title" product="default" msgid="6410723906019100189">"හානි වූ SD පත"</string>
- <string name="ext_media_unmountable_notification_message" product="nosdcard" msgid="1795917578395333280">"USB ආචයනයට හානි වී ඇත. එය නැවත ෆෝමැට් ගැන්වීමට උත්සහ කරන්න."</string>
- <string name="ext_media_unmountable_notification_message" product="default" msgid="1753898567525568253">"SD පතට හානි වී ඇත. එය නැවත ෆෝමැට් ගැන්වීමට උත්සහ කරන්න."</string>
- <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"බලාපොරොත්තු නොවූ ලෙස USB ආචයනය ඉවත් කෙරිණි"</string>
- <string name="ext_media_badremoval_notification_title" product="default" msgid="6872152882604407837">"SD පත බලාපොරොත්තු රහිතව ඉවත් කරන ලදි"</string>
- <string name="ext_media_badremoval_notification_message" product="nosdcard" msgid="4329848819865594241">"දත්ත නැතිවීම වැළක්වීමට USB ආචයනය ඉවත්කිරීමට පෙර ගලවන්න."</string>
- <string name="ext_media_badremoval_notification_message" product="default" msgid="7260183293747448241">"දත්ත නැතිවීම වැළක්වීමට ගැලවීමට කලින් SD පත ඉවත් කරන්න."</string>
- <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"ඉවත් කිරීමට USB ආචයනය ආරක්ෂිතයි"</string>
- <string name="ext_media_safe_unmount_notification_title" product="default" msgid="6729801130790616200">"SD පත ඉවත් කිරීමට සුරක්ෂිතයි"</string>
- <string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"ඔබට USB ආචයනය ආරක්ෂිතව ඉවත් කිරීමට පුළුවනි."</string>
- <string name="ext_media_safe_unmount_notification_message" product="default" msgid="568841278138377604">"ඔබට ආරක්ෂිතව SD පත ඉවත් කළ හැක"</string>
- <string name="ext_media_nomedia_notification_title" product="nosdcard" msgid="4486377230140227651">"USB ආචයනය ඉවත් කරන ලදි"</string>
- <string name="ext_media_nomedia_notification_title" product="default" msgid="8902518030404381318">"SD පත ඉවත් කර ඇත"</string>
- <string name="ext_media_nomedia_notification_message" product="nosdcard" msgid="6921126162580574143">"USB ආචයනය ඉවත්කොට ඇත. අලුත් මාධ්‍යයක් ඇතුළත් කරන්න."</string>
- <string name="ext_media_nomedia_notification_message" product="default" msgid="3870120652983659641">"SD පත ඉවත් කරන ලදි. අලුත් එකක් ඇතුළත් කරන්න."</string>
- <string name="activity_list_empty" msgid="1675388330786841066">"ගැලපෙන ක්‍රියාකාරකම් හමු නොවුණි."</string>
- <string name="permlab_pkgUsageStats" msgid="8787352074326748892">"සංරචකය භාවිත කිරීමේ සංඛ්‍යාන යාවත්කාලීන කරන්න"</string>
- <string name="permdesc_pkgUsageStats" msgid="1106612424254277630">"එකතු කරන ලද සංරචකය භාවිතා සංඛ්‍යාන වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා නොවේ."</string>
- <string name="permlab_copyProtectedData" msgid="4341036311211406692">"අන්තර්ගතය පිටපත් කරන්න"</string>
- <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"අන්තර්ගතය පිටපත් කිරීමට සුපුරුදු අන්තර්ගත සේවාව ඉල්වා සිටීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වල භාවිතය සඳහා නොවේ."</string>
- <string name="permlab_route_media_output" msgid="1642024455750414694">"මාධ්‍ය ප්‍රතිදානයේ මාර්ගගත කිරීම"</string>
- <string name="permdesc_route_media_output" msgid="4932818749547244346">"වෙනත් බාහිර උපාංග වෙත මාධ්‍ය ප්‍රතිදානය යැවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"යතුරු පාලක ආරක්‍ෂිත ආචයනය වෙත ප්‍රවේශය"</string>
- <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"යතුරු ආරක්ෂක ආචයනයට ප්‍රවේශ වීමට යෙදුමට දෙයි."</string>
- <string name="permlab_control_keyguard" msgid="172195184207828387">"පෙන්වීමේ හා සැඟවීමේ යතුරු ආරක්ෂකය පාලනය කරන්න"</string>
- <string name="permdesc_control_keyguard" msgid="3043732290518629061">"යතුරු ආරක්ෂකය පාලනයට යෙදුමකට අවසර දෙන්න."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"විශාලන පාලනය සඳහා දෙවරක් ස්පර්ශ කරන්න"</string>
- <string name="gadget_host_error_inflating" msgid="4882004314906466162">"විජටය එකතු කිරීමට නොහැකි විය."</string>
- <string name="ime_action_go" msgid="8320845651737369027">"යන්න"</string>
- <string name="ime_action_search" msgid="658110271822807811">"සෙවීම"</string>
- <string name="ime_action_send" msgid="2316166556349314424">"යවන්න"</string>
- <string name="ime_action_next" msgid="3138843904009813834">"මීලඟ"</string>
- <string name="ime_action_done" msgid="8971516117910934605">"හරි"</string>
- <string name="ime_action_previous" msgid="1443550039250105948">"පෙර"</string>
- <string name="ime_action_default" msgid="2840921885558045721">"ක්‍රියාකරවන්න"</string>
- <string name="dial_number_using" msgid="5789176425167573586">"<xliff:g id="NUMBER">%s</xliff:g> භාවිතයෙන්\nඅංකය අමතන්න"</string>
- <string name="create_contact_using" msgid="4947405226788104538">"<xliff:g id="NUMBER">%s</xliff:g> භාවිතයෙන්\nසම්බන්ධතාවයක් නිර්මාණය කරන්න"</string>
- <string name="grant_credentials_permission_message_header" msgid="2106103817937859662">"පහත දැක්වෙන එකක් හෝ ඊට වැඩි යෙදුම් ගණනක් ඔබගේ ගිණුමට ප්‍රවේශ වීමට, දැන් සහ ඉදිරියේදී අවසර ඉල්ලයි."</string>
- <string name="grant_credentials_permission_message_footer" msgid="3125211343379376561">"මෙම ඉල්ලීමට අවසර දීමට ඔබට අවශ්‍යද?"</string>
- <string name="grant_permissions_header_text" msgid="6874497408201826708">"ප්‍රවේශය ඉල්ලීම"</string>
- <string name="allow" msgid="7225948811296386551">"අවසර දෙන්න"</string>
- <string name="deny" msgid="2081879885755434506">"ප්‍රතික්ෂේප කරන්න"</string>
- <string name="permission_request_notification_title" msgid="6486759795926237907">"අවසර ඉල්ලා සිටී"</string>
- <string name="permission_request_notification_with_subtitle" msgid="8530393139639560189">"<xliff:g id="ACCOUNT">%s</xliff:g> ගිණුම සඳහා\nඅවසර ඉල්ලන ලදි."</string>
- <string name="input_method_binding_label" msgid="1283557179944992649">"ආදාන ක්‍රමය"</string>
- <string name="sync_binding_label" msgid="3687969138375092423">"සමමුහුර්තය"</string>
- <string name="accessibility_binding_label" msgid="4148120742096474641">"ප්‍රවේශ්‍යතාව"</string>
- <string name="wallpaper_binding_label" msgid="1240087844304687662">"බිතුපත"</string>
- <string name="chooser_wallpaper" msgid="7873476199295190279">"බිතුපත වෙනස් කරන්න"</string>
- <string name="notification_listener_binding_label" msgid="2014162835481906429">"දැනුම්දීම් අසන්නා"</string>
- <string name="vpn_title" msgid="19615213552042827">"VPN ක්‍රියාත්මකයි"</string>
- <string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> මඟින් VPN සක්‍රීය කරන ලදි"</string>
- <string name="vpn_text" msgid="3011306607126450322">"ජාලය කළමනාකරණය කිරීමට ස්පර්ශ කරන්න."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> වෙත සම්බන්ධ වුණි. ජාලය කළමනාකරණය කිරීමට ස්පර්ශ කරන්න."</string>
- <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>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"වින්‍යාස කිරීමට ස්පර්ශ කරන්න"</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>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"මෝටර් රථ ආකාරයෙන් පිටවීමට ස්පර්ශ කරන්න."</string>
- <string name="tethered_notification_title" msgid="3146694234398202601">"ටෙදරින් හෝ හොට්ස්පොට් සක්‍රීයයි"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"සකස් කිරීමට ස්පර්ශ කරන්න."</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>
- <string name="throttle_warning_notification_title" msgid="4890894267454867276">"ඉහළ ජංගම දත්ත භාවිතය"</string>
- <string name="throttle_warning_notification_message" msgid="3340822228599337743">"ජංගම දත්ත භාවිතය ගැන තව දැනගැනීමට ස්පර්ශ කරන්න."</string>
- <string name="throttled_notification_title" msgid="6269541897729781332">"ජංගම දත්ත සීමාව ඉක්මවා ඇත"</string>
- <string name="throttled_notification_message" msgid="5443457321354907181">"ජංගම දත්ත භාවිතය ගැන තව දැනගැනීමට ස්පර්ශ කරන්න."</string>
- <string name="no_matches" msgid="8129421908915840737">"ගැලපීම් නැත"</string>
- <string name="find_on_page" msgid="1946799233822820384">"පිටුවෙහි සෙවීම"</string>
- <plurals name="matches_found">
- <item quantity="one" msgid="8167147081136579439">"ගැළපීම් 1 යි"</item>
- <item quantity="other" msgid="4641872797067609177">"<xliff:g id="TOTAL">%d</xliff:g> කින් <xliff:g id="INDEX">%d</xliff:g>"</item>
- </plurals>
- <string name="action_mode_done" msgid="7217581640461922289">"හරි"</string>
- <string name="progress_unmounting" product="nosdcard" msgid="3923810448507612746">"USB ආචයනය ගැලවීම..."</string>
- <string name="progress_unmounting" product="default" msgid="1327894998409537190">"SD පත ගලවමින්..."</string>
- <string name="progress_erasing" product="nosdcard" msgid="4521573321524340058">"USB ආචයනය මකමින්..."</string>
- <string name="progress_erasing" product="default" msgid="6596988875507043042">"SD පත මකමින්..."</string>
- <string name="format_error" product="nosdcard" msgid="6299769563624776948">"USB ආචයනය මැකිය නොහැක."</string>
- <string name="format_error" product="default" msgid="7315248696644510935">"SD පත මැකීමට නොහැකි විය."</string>
- <string name="media_bad_removal" msgid="7960864061016603281">"ගැලවීමට පෙර SD පත ඉවත්කර ඇත."</string>
- <string name="media_checking" product="nosdcard" msgid="418188720009569693">"USB ආචයනය මේ වනවිට පරීක්ෂා කරමින් පවතී."</string>
- <string name="media_checking" product="default" msgid="7334762503904827481">"SD පත දැන් පරීක්ෂා කරමින් පවතී."</string>
- <string name="media_removed" msgid="7001526905057952097">"SD පත ඉවත් කර ඇත."</string>
- <string name="media_shared" product="nosdcard" msgid="5830814349250834225">"පරිගණකයක් විසින් දැන් USB ආචයනය භාවිතා කරයි."</string>
- <string name="media_shared" product="default" msgid="5706130568133540435">"SD පත දැනට පරිගණකයකින් පාවිච්චි කරයි."</string>
- <string name="media_unknown_state" msgid="729192782197290385">"බාහිර මාධ්‍යය නොදන්නා අවස්ථාවේ පවතියි."</string>
- <string name="share" msgid="1778686618230011964">"බෙදාගන්න"</string>
- <string name="find" msgid="4808270900322985960">"සොයන්න"</string>
- <string name="websearch" msgid="4337157977400211589">"වෙබ් සෙවුම"</string>
- <string name="find_next" msgid="5742124618942193978">"මීළඟ සොයන්න"</string>
- <string name="find_previous" msgid="2196723669388360506">"පෙර එක සොයන්න"</string>
- <string name="gpsNotifTicker" msgid="5622683912616496172">"<xliff:g id="NAME">%s</xliff:g> ගෙන් ස්ථානය ඉල්ලීම"</string>
- <string name="gpsNotifTitle" msgid="5446858717157416839">"ස්ථාන ඉල්ලීම"</string>
- <string name="gpsNotifMessage" msgid="1374718023224000702">"<xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>) විසින් ඉල්ලන ලද"</string>
- <string name="gpsVerifYes" msgid="2346566072867213563">"ඔව්"</string>
- <string name="gpsVerifNo" msgid="1146564937346454865">"නැත"</string>
- <string name="sync_too_many_deletes" msgid="5296321850662746890">"මැකීමේ සීමාව ඉක්මවන ලදි"</string>
- <string name="sync_too_many_deletes_desc" msgid="496551671008694245">"<xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g> සඳහා <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g> ගිණුමේ මකන ලද අයිතම <xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> ක් ඇත. ඔබට කුමක් කිරීමට අවශ්‍යද?"</string>
- <string name="sync_really_delete" msgid="2572600103122596243">"අයිතම මකන්න"</string>
- <string name="sync_undo_deletes" msgid="2941317360600338602">"මැකීම් අස් කරන්න"</string>
- <string name="sync_do_nothing" msgid="3743764740430821845">"දැනට කිසිවක් නොකරන්න"</string>
- <string name="choose_account_label" msgid="5655203089746423927">"ගිණුමක් තෝරන්න"</string>
- <string name="add_account_label" msgid="2935267344849993553">"ගිණුමක් එකතු කරන්න"</string>
- <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>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<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>
- <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"පැය වැඩිකරන්න"</string>
- <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"පැය අඩුකරන්න"</string>
- <string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"ප.ව.සකසන්න"</string>
- <string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"පෙ.ව. සකස් කිරීම"</string>
- <string name="date_picker_increment_month_button" msgid="5369998479067934110">"මාසය වැඩි කරන්න"</string>
- <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"මාසයක් අඩු කරන්න"</string>
- <string name="date_picker_increment_day_button" msgid="7130465412308173903">"දවස වැඩි කරන්න"</string>
- <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"දවස අඩු කරන්න"</string>
- <string name="date_picker_increment_year_button" msgid="6318697384310808899">"වසර වැඩි කරන්න"</string>
- <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"වසර අඩු කරන්න"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"අවලංගු කරන්න"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"මකන්න"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"හරි"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"ආකාරය වෙනස් කරන්න"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"ඇතුල් කරන්න"</string>
- <string name="activitychooserview_choose_application" msgid="2125168057199941199">"යෙදුමක් තෝරන්න"</string>
- <string name="shareactionprovider_share_with" msgid="806688056141131819">"සමඟ බෙදාගන්න"</string>
- <string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> සමඟින් බෙදා ගන්න"</string>
- <string name="content_description_sliding_handle" msgid="415975056159262248">"සර්පණ හැඩලය. ස්පර්ශ කර රඳවා සිටීම."</string>
- <string name="description_direction_up" msgid="7169032478259485180">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> සඳහා උඩට සර්පණය කරන්න."</string>
- <string name="description_direction_down" msgid="5087739728639014595">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> සඳහා පහලට සර්පණය කරන්න."</string>
- <string name="description_direction_left" msgid="7207478719805562165">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> සඳහා වමට සර්පණය කරන්න."</string>
- <string name="description_direction_right" msgid="8034433242579600980">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> සඳහා දකුණට සර්පණය කරන්න."</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"අඟුල අරින්න"</string>
- <string name="description_target_camera" msgid="969071997552486814">"කැමරාව"</string>
- <string name="description_target_silent" msgid="893551287746522182">"නිහඬ"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"ශබ්ද සක්‍රීය කරන්න"</string>
- <string name="description_target_search" msgid="3091587249776033139">"සෙවීම"</string>
- <string name="description_target_unlock_tablet" msgid="3833195335629795055">"අගුළු ඇරීමට ස්වයිප් කරන්න."</string>
- <string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"මුරපද යතුරු කියවනු ඇසීමට ඉස් බණුවක් සම්බන්ධ කරන්න."</string>
- <string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"නැවතුම."</string>
- <string name="action_bar_home_description" msgid="5293600496601490216">"මුල් පිටුවට සංචාලනය කරන්න"</string>
- <string name="action_bar_up_description" msgid="2237496562952152589">"ඉහලට සංචාලනය කරන්න"</string>
- <string name="action_menu_overflow_description" msgid="2295659037509008453">"තවත් විකල්ප"</string>
- <string name="action_bar_home_description_format" msgid="7965984360903693903">"%1$s, %2$s"</string>
- <string name="action_bar_home_subtitle_description_format" msgid="6985546530471780727">"%1$s, %2$s, %3$s"</string>
- <string name="storage_internal" msgid="4891916833657929263">"අභ්‍යන්තර ආචයනය"</string>
- <string name="storage_sd_card" msgid="3282948861378286745">"SD පත"</string>
- <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>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"භාවිතය සහ සැකසීම් බැලීමට ස්පර්ශ කරන්න."</string>
- <string name="data_usage_3g_limit_title" msgid="7093334419518706686">"2G-3G දත්ත අබලයි"</string>
- <string name="data_usage_4g_limit_title" msgid="7636489436819470761">"4G දත්ත අබල කරන ලදි"</string>
- <string name="data_usage_mobile_limit_title" msgid="7869402519391631884">"ජංගම දත්ත අබල කර ඇත"</string>
- <string name="data_usage_wifi_limit_title" msgid="8992154736441284865">"Wi-Fi දත්ත අබල කරන ලදි"</string>
- <string name="data_usage_limit_body" msgid="3317964706973601386">"සබල කිරීමට ස්පර්ශ කරන්න."</string>
- <string name="data_usage_3g_limit_snoozed_title" msgid="7026739121138005231">"2G-3G දත්ත සීමාව ඉක්මවන ලදි"</string>
- <string name="data_usage_4g_limit_snoozed_title" msgid="1106562779311209039">"4G දත්ත සීමාව ඉක්මවා යන ලදි"</string>
- <string name="data_usage_mobile_limit_snoozed_title" msgid="279240572165412168">"ජංගම දත්ත සීමාව ඉක්මවා යන ලදි"</string>
- <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>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"සීමා කිරීම ඉවත් කිරීමට ස්පර්ශ කරන්න"</string>
- <string name="ssl_certificate" msgid="6510040486049237639">"ආරක්‍ෂිත සහතිකය"</string>
- <string name="ssl_certificate_is_valid" msgid="6825263250774569373">"මෙම සහතිකය වලංගුයි."</string>
- <string name="issued_to" msgid="454239480274921032">"ලබාදුන්නේ:"</string>
- <string name="common_name" msgid="2233209299434172646">"පොදු නාමය:"</string>
- <string name="org_name" msgid="6973561190762085236">"සංවිධානය:"</string>
- <string name="org_unit" msgid="7265981890422070383">"සංවිධානාත්මක ඒකකය:"</string>
- <string name="issued_by" msgid="2647584988057481566">"ලබාදෙන ලද්දේ:"</string>
- <string name="validity_period" msgid="8818886137545983110">"වලංගුතාවය:"</string>
- <string name="issued_on" msgid="5895017404361397232">"නිකුත් කරන ලද්දේ:"</string>
- <string name="expires_on" msgid="3676242949915959821">"කල් ඉකුත් වන්නේ:"</string>
- <string name="serial_number" msgid="758814067660862493">"අනුක්‍රමාංකය:"</string>
- <string name="fingerprints" msgid="4516019619850763049">"ඇඟිලි සලකුණු:"</string>
- <string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-256 ඇඟිලිසලකුණ:"</string>
- <string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1 ඇඟිලි සලකුණ:"</string>
- <string name="activity_chooser_view_see_all" msgid="4292569383976636200">"සියල්ල බලන්න"</string>
- <string name="activity_chooser_view_dialog_title_default" msgid="4710013864974040615">"ක්‍රියාකාරකම තෝරන්න"</string>
- <string name="share_action_provider_share_with" msgid="5247684435979149216">"සමඟ බෙදාගන්න"</string>
- <string name="list_delimeter" msgid="3975117572185494152">", "</string>
- <string name="sending" msgid="3245653681008218030">"යවමින්..."</string>
- <string name="launchBrowserDefault" msgid="2057951947297614725">"බ්‍රවුසරය දියත් කරන්නද?"</string>
- <string name="SetupCallDefault" msgid="5834948469253758575">"ඇමතුම පිළිගන්නවාද?"</string>
- <string name="activity_resolver_use_always" msgid="8017770747801494933">"සැම විටම"</string>
- <string name="activity_resolver_use_once" msgid="2404644797149173758">"එක් වාරයයි"</string>
- <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"ටැබ්ලට්ය"</string>
- <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"දුරකථනය"</string>
- <string name="default_audio_route_name_headphones" msgid="8119971843803439110">"ඉස් බණු"</string>
- <string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"නාදක ඩොක් කරන්න"</string>
- <string name="default_media_route_name_hdmi" msgid="2450970399023478055">"HDMI"</string>
- <string name="default_audio_route_category_name" msgid="3722811174003886946">"පද්ධතිය"</string>
- <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"බ්ලූටූත් ශ්‍රව්‍ය"</string>
- <string name="wireless_display_route_description" msgid="9070346425023979651">"රැහැන් රහිත දර්ශනය"</string>
- <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"හරි"</string>
- <string name="media_route_button_content_description" msgid="5758553567065145276">"මාධ්‍ය ප්‍රතිදානය"</string>
- <string name="media_route_status_scanning" msgid="7279908761758293783">"පරිලෝකනය කරමින්…"</string>
- <string name="media_route_status_connecting" msgid="6422571716007825440">"සම්බන්ධ වෙමින්…"</string>
- <string name="media_route_status_available" msgid="6983258067194649391">"ලබාගත හැක"</string>
- <string name="media_route_status_not_available" msgid="6739899962681886401">"ලබාගත නොහැක"</string>
- <string name="media_route_status_in_use" msgid="4533786031090198063">"භාවිතයේ ඇත"</string>
- <string name="display_manager_built_in_display_name" msgid="2583134294292563941">"තිළැලි තිරය"</string>
- <string name="display_manager_hdmi_display_name" msgid="1555264559227470109">"HDMI තිරය"</string>
- <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"උඩැතිරිය #<xliff:g id="ID">%1$d</xliff:g>"</string>
- <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string>
- <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", ආරක්‍ෂිත"</string>
- <string name="wifi_display_notification_title" msgid="2223050649240326557">"නොරැහැන් සංදර්ශකය සම්බන්ධිතයි"</string>
- <string name="wifi_display_notification_message" msgid="4498802012464170685">"වෙනත් උපාංගයක් මත මෙම තිරය පෙන්වයි"</string>
- <string name="wifi_display_notification_disconnect" msgid="6183754463561153372">"විසන්ධි කරන්න"</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"හදිසි ඇමතුම"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"රටාව අමතකයි"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"වැරදි රටාවකි"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"වැරදි මුරපදය"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN එක වැරදියි"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"තත්පර <xliff:g id="NUMBER">%1$d</xliff:g> ට පසුව නැවත උත්සහ කරන්න."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"ඔබගේ රටාව අඳින්න"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"SIM PIN ඇතුලු කරන්න"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"PIN එක ඇතුළු කරන්න"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"මුරපදය ඇතුළු කරන්න"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"දැන් SIM එක අබල කර ඇත. ඉදිරියට යාමට PUK කේතය යොදන්න. විස්තර සඳහා වාහකයා අමතන්න."</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"අපේක්ෂිත PIN කේතය ඇතුළත් කරන්න"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"අපේක්ෂිත PIN කේතය ස්ථිර කරන්න"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM පත අගුළු අරිමින්..."</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"වැරදි PIN කේතයකි."</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"අංක 4 සිට 8 අතර වන PIN එකක් ටයිප් කරන්න."</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK කේතය සංඛ්‍යා 8 ක් හෝ වැඩි විය යුතුය."</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"නිවැරදි PUK කේතය නැවත ඇතුලත් කරන්න. නැවත නැවත උත්සාහ කිරීමෙන් SIM එක ස්ථිරවම අබල කරයි."</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN කේත ගැලපී නැත"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"රටා උත්සාහ කිරීම් වැඩිය"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"අගුළු ඇරීමට, ඔබගේ Google ගිණුම සමග පුරනය වන්න."</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"පරිශීලක නාමය (ඊ-තැපෑල)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"මුරපදය"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"පුරනය වන්න"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"වලංගු නොවන පරිශීලක නාමයක් හෝ මුරපදයක්."</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"ඔබගේ පරිශීලක නාමය හෝ මුරපදය අමතකද?\n "<b>"google.com/accounts/recovery"</b>" වෙත යන්න."</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"ගිණුම පරීක්ෂා කරමින්…"</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"ඔබ PIN අංකය <xliff:g id="NUMBER_0">%d</xliff:g> වාරයක් වැරදියට ටයිප් කොට ඇත.\n\n තත්පර <xliff:g id="NUMBER_1">%d</xliff:g> ක් ඇතුළත නැවත උත්සාහ කරන්න."</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"<xliff:g id="NUMBER_0">%d</xliff:g> වතාවක් ඔබගේ මුරපදය ඔබ වැරදියට ටයිප් කර ඇත. \n\nතත්පර <xliff:g id="NUMBER_1">%d</xliff:g> ට පසුව නැවත උත්සහ කරන්න."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"ඔබ <xliff:g id="NUMBER_0">%d</xliff:g> වාරයක් අගුළු ඇරීමේ රටාව වැරදියට ඇඳ ඇත. \n\nතත්පර <xliff:g id="NUMBER_1">%d</xliff:g> ක් ඇතුළත නැවත උත්සාහ කරන්න."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"ඔබ ටැබ්ලටය අගුළු හැරීමට වැරදියට අවස්ථා <xliff:g id="NUMBER_0">%d</xliff:g> ක් උත්සාහ කර ඇත. අවස්ථා <xliff:g id="NUMBER_1">%d</xliff:g> ක් අසාර්ථකව උත්සහ කිරීමකින් පසුව, කර්මාන්ත ශාලා මුල් තත්වයට නැවත පත් වන අතර සියලු පරිශීලක දත්ත නැති වෙයි."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"ඔබ දුරකථනය අගුළු ඇරීමට වාර <xliff:g id="NUMBER_0">%d</xliff:g> කදී වැරදී ප්‍රයත්නයන් ගෙන තිබේ. තවත් අසාර්ථක ප්‍රයත්න <xliff:g id="NUMBER_1">%d</xliff:g> කින් පසුව, දුරකථනය කර්මාන්ත ශාලාවේ සුපුරුද්දට යළි පිහිටුවන අතර සියලුම පරිශීලක දත්ත නැති වී යයි."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"ටැබ්ලටයේ අගුළු ඇරීමට ඔබ වැරදි ප්‍රයත්න <xliff:g id="NUMBER">%d</xliff:g> වාරයක් ගෙන ඇත. දැන් ටැබ්ලටය කර්මාන්ත ශාලා සුපුරුද්ද වෙත යළි පිහිටුවීම කෙරේ."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"ඔබ දුරකථනය අගුළු ඇරීමට වාර <xliff:g id="NUMBER">%d</xliff:g> කදී වැරදී ප්‍රයන්තයන් ගෙන තිබේ. දැන් දුරකථනය කර්මාන්තශාලා සුපුරුද්දට පිහිටුවනු ලබයි."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"ඔබ අගුළු ඇරිමේ රටාව <xliff:g id="NUMBER_0">%d</xliff:g> වතාවක් වැරදියට ඇඳ ඇත. තවත් අසාර්ථක උත්සාහ <xliff:g id="NUMBER_1">%d</xliff:g> කින් පසුව, ඊ-තැපැල් ගිණුම භාවිතා කරමින් ඔබගේ ටැබ්ලටයේ අගුළු ඇරීමට ඔබට පවසනු ඇත.\n\n නැවත තත්පර <xliff:g id="NUMBER_2">%d</xliff:g> කින් උත්සාහ කරන්න."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"ඔබ වැරදියට <xliff:g id="NUMBER_0">%d</xliff:g> වතාවක් ඔබගේ අගුළු හැරීමේ රටාව ඇඳ ඇත. අසාර්ථක උත්සහ කිරීම් <xliff:g id="NUMBER_1">%d</xliff:g> න් පසුව, ඔබගේ ඊ-තැපැල් ලිපිනය භාවිතයෙන් ඔබගේ දුරකථනය අගුළු හැරීමට ඔබගෙන් අසයි.\n\n තත්පර <xliff:g id="NUMBER_2">%d</xliff:g> න් පසුව නැවත උත්සහ කරන්න."</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"ඉවත් කරන්න"</string>
- <string name="safe_media_volume_warning" product="default" msgid="7324161939475478066">"නිර්දේශිත මට්ටමෙන් ඉහළට ශබ්දය වැඩි කරනවද?\nවැඩි කාලයක් ඉහළ ශබ්දයක් ශ්‍රවනය කිරීමෙන් ඔබගේ ශ්‍රවනයට හානි විය හැක."</string>
- <string name="continue_to_enable_accessibility" msgid="1626427372316070258">"ප්‍රවේශ්‍යතාවය සබල කිරීමට ඇඟිලි දෙකක් පහළට රඳවා සිටින්න."</string>
- <string name="accessibility_enabled" msgid="1381972048564547685">"ප‍්‍රවේශ්‍යතාව සබල කරන ලදි."</string>
- <string name="enable_accessibility_canceled" msgid="3833923257966635673">"ප‍්‍රවේශ්‍යතාව අවලංගු කර ඇත."</string>
- <string name="user_switched" msgid="3768006783166984410">"දැනට සිටින පරිශීලකයා <xliff:g id="NAME">%1$s</xliff:g>."</string>
- <string name="owner_name" msgid="2716755460376028154">"හිමිකරු"</string>
- <string name="error_message_title" msgid="4510373083082500195">"දෝෂය"</string>
- <string name="app_no_restricted_accounts" msgid="5739463249673727736">"සීමා සහිත පැතිකඩ සඳහා වන ගිණුම් වෙත මෙම යෙදුම සහය නොදක්වයි"</string>
- <string name="app_not_found" msgid="3429141853498927379">"මෙම ක්‍රියාව හසුරුවීමට යෙදුමක් සොයාගත්තේ නැත"</string>
- <string name="revoke" msgid="5404479185228271586">"අහෝසි කරන්න"</string>
- <string name="mediaSize_iso_a0" msgid="7875427489420821793">"ISO A0"</string>
- <string name="mediaSize_iso_a1" msgid="3760734499050875356">"ISO A1"</string>
- <string name="mediaSize_iso_a2" msgid="5973266378020144382">"ISO A2"</string>
- <string name="mediaSize_iso_a3" msgid="1373407105687300884">"ISO A3"</string>
- <string name="mediaSize_iso_a4" msgid="6689772807982597254">"ISO A4"</string>
- <string name="mediaSize_iso_a5" msgid="5353549652015741040">"ISO A5"</string>
- <string name="mediaSize_iso_a6" msgid="8585038048674911907">"ISO A6"</string>
- <string name="mediaSize_iso_a7" msgid="6641836716963839119">"ISO A7"</string>
- <string name="mediaSize_iso_a8" msgid="7571139437465693355">"ISO A8"</string>
- <string name="mediaSize_iso_a9" msgid="1378455891957115079">"ISO A9"</string>
- <string name="mediaSize_iso_a10" msgid="2480747457429475344">"ISO A10"</string>
- <string name="mediaSize_iso_b0" msgid="3965935097661108039">"ISO B0"</string>
- <string name="mediaSize_iso_b1" msgid="2505753285010115437">"ISO B1"</string>
- <string name="mediaSize_iso_b2" msgid="8763874709859458453">"ISO B2"</string>
- <string name="mediaSize_iso_b3" msgid="4210506688191764076">"ISO B3"</string>
- <string name="mediaSize_iso_b4" msgid="5749404165888526034">"ISO B4"</string>
- <string name="mediaSize_iso_b5" msgid="7640627414621904733">"ISO B5"</string>
- <string name="mediaSize_iso_b6" msgid="7342988864712748544">"ISO B6"</string>
- <string name="mediaSize_iso_b7" msgid="5069844065235382429">"ISO B7"</string>
- <string name="mediaSize_iso_b8" msgid="7316818922278779774">"ISO B8"</string>
- <string name="mediaSize_iso_b9" msgid="5414727094026532341">"ISO B9"</string>
- <string name="mediaSize_iso_b10" msgid="5251253731832048185">"ISO B10"</string>
- <string name="mediaSize_iso_c0" msgid="4003138342671964217">"ISO C0"</string>
- <string name="mediaSize_iso_c1" msgid="1935188063393553008">"ISO C1"</string>
- <string name="mediaSize_iso_c2" msgid="3197307969712069904">"ISO C2"</string>
- <string name="mediaSize_iso_c3" msgid="4335826087321913508">"ISO C3"</string>
- <string name="mediaSize_iso_c4" msgid="3745639598281015005">"ISO C4"</string>
- <string name="mediaSize_iso_c5" msgid="8269457765822791013">"ISO C5"</string>
- <string name="mediaSize_iso_c6" msgid="566666105260346930">"ISO C6"</string>
- <string name="mediaSize_iso_c7" msgid="8678413180782608498">"ISO C7"</string>
- <string name="mediaSize_iso_c8" msgid="8392376206627041730">"ISO C8"</string>
- <string name="mediaSize_iso_c9" msgid="9191613372324845405">"ISO C9"</string>
- <string name="mediaSize_iso_c10" msgid="7327709699184920822">"ISO C10"</string>
- <string name="mediaSize_na_letter" msgid="4191805615829472953">"අකුරු"</string>
- <string name="mediaSize_na_gvrnmt_letter" msgid="7853382192649405507">"රජයේ ලිපිය"</string>
- <string name="mediaSize_na_legal" msgid="6697982988283823150">"නීත්‍යනුකූල"</string>
- <string name="mediaSize_na_junior_legal" msgid="3727743969902758948">"ප්‍රාථමික නීතිමය"</string>
- <string name="mediaSize_na_ledger" msgid="281871464896601236">"ලෙජරය"</string>
- <string name="mediaSize_na_tabloid" msgid="5775966416333578127">"කුඩා පුවත්පත"</string>
- <string name="write_fail_reason_cancelled" msgid="7091258378121627624">"අවලංගු කරන ලදි"</string>
- <string name="write_fail_reason_cannot_write" msgid="8132505417935337724">"අන්තර්ගතය ලිවීමේදී දෝෂයකි"</string>
- <string name="reason_unknown" msgid="6048913880184628119">"නොදනී"</string>
- <string name="restr_pin_enter_admin_pin" msgid="783643731895143970">"පරිපාලකයාගේ PIN එක ඇතුළ් කරන්න"</string>
- <string name="restr_pin_enter_pin" msgid="3395953421368476103">"PIN එක ඇතුළු කරන්න"</string>
- <string name="restr_pin_incorrect" msgid="8571512003955077924">"වැරදියි"</string>
- <string name="restr_pin_enter_old_pin" msgid="1462206225512910757">"වත්මන් PIN"</string>
- <string name="restr_pin_enter_new_pin" msgid="5959606691619959184">"නව PIN"</string>
- <string name="restr_pin_confirm_pin" msgid="8501523829633146239">"නව PIN තහවුරු කරන්න"</string>
- <string name="restr_pin_create_pin" msgid="8017600000263450337">"සිමා වැඩිදියුණු කිරීමට PIN සාදන්න"</string>
- <string name="restr_pin_error_doesnt_match" msgid="2224214190906994548">"PIN නොගැළපෙයි. නැවත උත්සහ කරන්න."</string>
- <string name="restr_pin_error_too_short" msgid="8173982756265777792">"PIN කුඩා වැඩිය. ඉලක්කම් 4 වත් විය යුතුය."</string>
- <plurals name="restr_pin_countdown">
- <item quantity="one" msgid="311050995198548675">"තවත් තත්පර 1 කින් යළි උත්සාහ කරන්න"</item>
- <item quantity="other" msgid="4730868920742952817">"තත්පර <xliff:g id="COUNT">%d</xliff:g> කින් නැවත උත්සහ කරන්න"</item>
- </plurals>
- <string name="restr_pin_try_later" msgid="973144472490532377">"පසුව නැවත උත්සාහ කරන්න"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"තීරුව අනාවරණයට තිරයේ කෙලවර අදින්න"</string>
-</resources>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
deleted file mode 100644
index 7e12eab32c3e..000000000000
--- a/core/res/res/values-si/strings.xml
+++ /dev/null
@@ -1,1590 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="byteShort" msgid="8340973892742019101">"B"</string>
- <string name="kilobyteShort" msgid="5973789783504771878">"KB"</string>
- <string name="megabyteShort" msgid="6355851576770428922">"MB"</string>
- <string name="gigabyteShort" msgid="3259882455212193214">"GB"</string>
- <string name="terabyteShort" msgid="231613018159186962">"TB"</string>
- <string name="petabyteShort" msgid="5637816680144990219">"PB"</string>
- <string name="fileSizeSuffix" msgid="9164292791500531949">"<xliff:g id="NUMBER">%1$s</xliff:g><xliff:g id="UNIT">%2$s</xliff:g>"</string>
- <string name="untitled" msgid="4638956954852782576">"&lt;නම් යොදා නැත&gt;"</string>
- <string name="ellipsis" msgid="7899829516048813237">"…"</string>
- <string name="ellipsis_two_dots" msgid="1228078994866030736">"‥"</string>
- <string name="emptyPhoneNumber" msgid="7694063042079676517">"(දුරකථන අංකයක් නොමැත)"</string>
- <string name="unknownName" msgid="2277556546742746522">"(නොදනී)"</string>
- <string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"කටහඬ තැපෑල"</string>
- <string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN1"</string>
- <string name="mmiError" msgid="5154499457739052907">"සම්බන්ධතා ගැටළුවක් හෝ අවලංගු MMI කේතයකි."</string>
- <string name="mmiFdnError" msgid="5224398216385316471">"ස්ථාවර ඇමතීම් අංක වලට පමණක් මෙහෙයුම සීමාකර ඇත."</string>
- <string name="serviceEnabled" msgid="8147278346414714315">"සේවාව සබල කරන ලදි."</string>
- <string name="serviceEnabledFor" msgid="6856228140453471041">"සේවාව සබලයි, සඳහා:"</string>
- <string name="serviceDisabled" msgid="1937553226592516411">"සේවාව අබල කරන ලදි."</string>
- <string name="serviceRegistered" msgid="6275019082598102493">"ලියාපදිංචි වීම සාර්ථකයි."</string>
- <string name="serviceErased" msgid="1288584695297200972">"මැකීම සාර්ථක විය."</string>
- <string name="passwordIncorrect" msgid="7612208839450128715">"වැරදි මුරපදයක්."</string>
- <string name="mmiComplete" msgid="8232527495411698359">"MMI සම්පූර්ණයි."</string>
- <string name="badPin" msgid="9015277645546710014">"ඔබ ටයිප් කරන ලද පරණ PIN එක වැරදිය."</string>
- <string name="badPuk" msgid="5487257647081132201">"ඔබ ටයිප් කරන ලද PUK එක වැරදියි."</string>
- <string name="mismatchPin" msgid="609379054496863419">"ඔබ ටයිප් කල PIN නොගැළපේ."</string>
- <string name="invalidPin" msgid="3850018445187475377">"4 සිට 8 දක්වා අංක සහිත PIN එකක් ටයිප් කරන්න."</string>
- <string name="invalidPuk" msgid="8761456210898036513">"අංක 8 ක් හෝ ඊට වැඩි PUK එකක් ටයිප් කරන්න."</string>
- <string name="needPuk" msgid="919668385956251611">"ඔබගේ SIM පත පතට PUK අගුළු වැටී ඇත. එම අගුල ඇරීමට PUK කේතය ටයිප් කරන්න."</string>
- <string name="needPuk2" msgid="4526033371987193070">"SIM පතේ අගුළු ඇරීමට PUK2 ටයිප් කරන්න."</string>
- <string name="imei" msgid="2625429890869005782">"IMEI"</string>
- <string name="meid" msgid="4841221237681254195">"MEID"</string>
- <string name="ClipMmi" msgid="6952821216480289285">"පැමිණෙන අමතන්නාගේ ID"</string>
- <string name="ClirMmi" msgid="7784673673446833091">"පිටතට යන අමතන්නාගේ ID"</string>
- <string name="CfMmi" msgid="5123218989141573515">"ඇමතුම ඉදිරියට යැවීම"</string>
- <string name="CwMmi" msgid="9129678056795016867">"ඇමතුම් රැඳීම"</string>
- <string name="BaMmi" msgid="455193067926770581">"ඇමතුම අවහිර කිරීම"</string>
- <string name="PwdMmi" msgid="7043715687905254199">"මුරපදය වෙනස් කිරීම"</string>
- <string name="PinMmi" msgid="3113117780361190304">"PIN වෙනස් වී ඇත"</string>
- <string name="CnipMmi" msgid="3110534680557857162">"ඇමතුම් අංකය ඇත"</string>
- <string name="CnirMmi" msgid="3062102121430548731">"ඇමතුම් අංකය සීමා කර ඇත"</string>
- <string name="ThreeWCMmi" msgid="9051047170321190368">"තුන් මාර්ග ඇමතීම"</string>
- <string name="RuacMmi" msgid="7827887459138308886">"අනවශ්‍ය හිරිහැරදායක ඇමතුම් ප්‍රතික්ෂේප කිරීම"</string>
- <string name="CndMmi" msgid="3116446237081575808">"ඇමතීමේ අංකය භාරදීම"</string>
- <string name="DndMmi" msgid="1265478932418334331">"බාධා නොකරන්න"</string>
- <string name="CLIRDefaultOnNextCallOn" msgid="429415409145781923">"අමතන්නාගේ ID සුපුරුද්ද අනුව සීමා වී ඇත. මීළඟ ඇමතුම: සීමා කර ඇත"</string>
- <string name="CLIRDefaultOnNextCallOff" msgid="3092918006077864624">"අමතන්නාගේ ID සුපුරුදු අනුව සීමා වී ඇත. මීළඟ ඇමතුම: සීමා කර නැත"</string>
- <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"අමතන්නාගේ ID සුපුරුදු අනුව සීමා වී නැත. මීළඟ ඇමතුම: සීමා කර ඇත"</string>
- <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"අමතන්නාගේ ID සුපුරුදු අනුව සීමා වී නැත. මීළඟ ඇමතුම: සීමා කර ඇත"</string>
- <string name="serviceNotProvisioned" msgid="8614830180508686666">"සේවාවන් සපයා නැත."</string>
- <string name="CLIRPermanent" msgid="3377371145926835671">"අමතන්නාගේ ID සැකසීම ඔබට වෙනස්කල නොහැක."</string>
- <string name="RestrictedChangedTitle" msgid="5592189398956187498">"සීමිත ප්‍රවේශය වෙනස් කෙරිණි"</string>
- <string name="RestrictedOnData" msgid="8653794784690065540">"දත්ත සේවාව අවහිර කර ඇත."</string>
- <string name="RestrictedOnEmergency" msgid="6581163779072833665">"හදිසි සේවාව අවහිර කර ඇත."</string>
- <string name="RestrictedOnNormal" msgid="4953867011389750673">"හඬ සේවාව බාධා කර ඇත."</string>
- <string name="RestrictedOnAllVoice" msgid="3396963652108151260">"සියලු හඬ සේවා අවහිර කර ඇත."</string>
- <string name="RestrictedOnSms" msgid="8314352327461638897">"SMS සේවාව අවහිර කර ඇත."</string>
- <string name="RestrictedOnVoiceData" msgid="996636487106171320">"හඬ/දත්ත සේවා අවහිර කර ඇත."</string>
- <string name="RestrictedOnVoiceSms" msgid="1888588152792023873">"හඬ/SMS සේවා අවහිර කර ඇත."</string>
- <string name="RestrictedOnAll" msgid="5643028264466092821">"සියලුම හඬ/දත්ත/SMS සේවාවන් බාධා කර ඇත."</string>
- <string name="serviceClassVoice" msgid="1258393812335258019">"හඬ"</string>
- <string name="serviceClassData" msgid="872456782077937893">"දත්ත"</string>
- <string name="serviceClassFAX" msgid="5566624998840486475">"ෆැක්ස්"</string>
- <string name="serviceClassSMS" msgid="2015460373701527489">"SMS"</string>
- <string name="serviceClassDataAsync" msgid="4523454783498551468">"අසමමුහුර්ත කරන්න"</string>
- <string name="serviceClassDataSync" msgid="7530000519646054776">"සමමුහුර්ත කිරීම"</string>
- <string name="serviceClassPacket" msgid="6991006557993423453">"පැකැට්ටුව"</string>
- <string name="serviceClassPAD" msgid="3235259085648271037">"PAD"</string>
- <string name="roamingText0" msgid="7170335472198694945">"රෝමිං දර්ශකය සක්‍රියයි"</string>
- <string name="roamingText1" msgid="5314861519752538922">"රෝමිං දර්ශකය අක්‍රියයි"</string>
- <string name="roamingText2" msgid="8969929049081268115">"රෝමිං දර්ශකය සැණෙලි වෙයි"</string>
- <string name="roamingText3" msgid="5148255027043943317">"වටපිටාවෙන් ඉවත්ව"</string>
- <string name="roamingText4" msgid="8808456682550796530">"ගොඩනැගිල්ලෙන් පිටත"</string>
- <string name="roamingText5" msgid="7604063252850354350">"රෝමිං - කැමති පද්ධතිය"</string>
- <string name="roamingText6" msgid="2059440825782871513">"රෝමිං - ලබාගත හැකි පද්ධතිය"</string>
- <string name="roamingText7" msgid="7112078724097233605">"රෝමිං - මිත්‍ර හවුල්කරු"</string>
- <string name="roamingText8" msgid="5989569778604089291">"රෝමිං - අධිමිල හවුල්කරු"</string>
- <string name="roamingText9" msgid="7969296811355152491">"රෝමිං - සම්පූර්ණ සේවා ක්‍රියාකාරිත්වය"</string>
- <string name="roamingText10" msgid="3992906999815316417">"රෝමිං - අසම්පූර්ණ සේවා ක්‍රියාකාරීත්වය"</string>
- <string name="roamingText11" msgid="4154476854426920970">"රෝමිං බැනරය සක්‍රීයයි"</string>
- <string name="roamingText12" msgid="1189071119992726320">"රෝමිං බැනරය අක්‍රියයි"</string>
- <string name="roamingTextSearching" msgid="8360141885972279963">"සේවාව සඳහා සොයමින්"</string>
- <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: ඉදිරියට නොයවන ලදි"</string>
- <string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string>
- <string name="cfTemplateForwardedTime" msgid="9206251736527085256">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: තත්පර <xliff:g id="TIME_DELAY">{2}</xliff:g> ට පසුව <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string>
- <string name="cfTemplateRegistered" msgid="5073237827620166285">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: ඉදිරියට නොයවන ලදි"</string>
- <string name="cfTemplateRegisteredTime" msgid="6781621964320635172">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: ඉදිරියට නොයවන ලදි"</string>
- <string name="fcComplete" msgid="3118848230966886575">"අංග කේතය සම්පූර්ණයි."</string>
- <string name="fcError" msgid="3327560126588500777">"සම්බන්ධතා ගැටළුවක් හෝ අවලංගු විශේෂාංග කේතයකි."</string>
- <string name="httpErrorOk" msgid="1191919378083472204">"හරි"</string>
- <string name="httpError" msgid="7956392511146698522">"ජාල දෝෂයක් තිබුණි."</string>
- <string name="httpErrorLookup" msgid="4711687456111963163">"URL ය සෙවිය නොහැක."</string>
- <string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"අඩවියේ සත්‍යාපන පටිපාටිය වෙත සහය නොදක්වයි."</string>
- <string name="httpErrorAuth" msgid="1435065629438044534">"සත්‍යාපනය කළ නොහැක"</string>
- <string name="httpErrorProxyAuth" msgid="1788207010559081331">"ප්‍රොක්සි සේවාදායකය හරහා සත්‍යාපනය අසාර්ථකය."</string>
- <string name="httpErrorConnect" msgid="8714273236364640549">"සේවාදායකයාට සම්බන්ධ විය නොහැක."</string>
- <string name="httpErrorIO" msgid="2340558197489302188">"සේවාදායකයා සමග සම්බන්ධ වීමට නොහැකි විය. නැවත උත්සහ කරන්න."</string>
- <string name="httpErrorTimeout" msgid="4743403703762883954">"සේවාදායකය වෙත සම්බන්ධතාවය කල් ඉකුත් විණි."</string>
- <string name="httpErrorRedirectLoop" msgid="8679596090392779516">"පිටුවේ බොහෝ සේවාදායක නැවත හරවා යැවීම් අඩංගු වේ."</string>
- <string name="httpErrorUnsupportedScheme" msgid="5015730812906192208">"ප්‍රොටෝකෝලය වෙත සහය නොදක්වයි."</string>
- <string name="httpErrorFailedSslHandshake" msgid="96549606000658641">"සුරක්ෂිත සම්බන්ධතාවයක් පිහිටුවීමට නොහැකි විය."</string>
- <string name="httpErrorBadUrl" msgid="3636929722728881972">"URL වලංගු නොවන නිසා පිටුව විවෘත කිරීමට නොහැකි විය."</string>
- <string name="httpErrorFile" msgid="2170788515052558676">"ගොනුව වෙත පිවිසිය නොහැක."</string>
- <string name="httpErrorFileNotFound" msgid="6203856612042655084">"ඉල්ලන ලද ගොනු සෙවිය නොහැක."</string>
- <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"ඉල්ලීම් විශාල ප්‍රමාණයක් ක්‍රියාත්මක වෙමින් පවතියි. පසුව නැවත උත්සාහ කරන්න."</string>
- <string name="notification_title" msgid="8967710025036163822">"<xliff:g id="ACCOUNT">%1$s</xliff:g> සඳහා පුරනය වීමේ දෝෂයක්"</string>
- <string name="contentServiceSync" msgid="8353523060269335667">"සමමුහුර්ත කිරීම"</string>
- <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"සමමුහුර්ත කරන්න"</string>
- <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"<xliff:g id="CONTENT_TYPE">%s</xliff:g> මැකීම් වැඩිය"</string>
- <string name="low_memory" product="tablet" msgid="6494019234102154896">"ටැබ්ලට් ආචයනය පිරි ඇත. ඉඩ නිදහස් කිරීමට සමහර ගොනු මකන්න."</string>
- <string name="low_memory" product="default" msgid="3475999286680000541">"දුරකථන ආචයනය පිරී ඇත. ඉඩ නිදහස් කිරීමට සමහර ගොනු මකන්න."</string>
- <string name="me" msgid="6545696007631404292">"මම"</string>
- <string name="power_dialog" product="tablet" msgid="8545351420865202853">"ටැබ්ලට විකල්ප"</string>
- <string name="power_dialog" product="default" msgid="1319919075463988638">"දුරකථන විකල්පයන්"</string>
- <string name="silent_mode" msgid="7167703389802618663">"නිහඬ ආකාරය"</string>
- <string name="turn_on_radio" msgid="3912793092339962371">"නොරැහන් සක්‍රිය කරන්න"</string>
- <string name="turn_off_radio" msgid="8198784949987062346">"නොරැහැන් අක්‍රිය කරන්න"</string>
- <string name="screen_lock" msgid="799094655496098153">"තිර අගුල"</string>
- <string name="power_off" msgid="4266614107412865048">"බලය අක්‍රිය කරන්න"</string>
- <string name="silent_mode_silent" msgid="319298163018473078">"හඬ නඟනය අක්‍රියයි"</string>
- <string name="silent_mode_vibrate" msgid="7072043388581551395">"හඬ නඟනය කම්පනය"</string>
- <string name="silent_mode_ring" msgid="8592241816194074353">"හඬ නඟනය සක්‍රීයයි"</string>
- <string name="shutdown_progress" msgid="2281079257329981203">"වසා දමමින්…"</string>
- <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"ඔබගේ ටැබ්ලටය වැසේ."</string>
- <string name="shutdown_confirm" product="default" msgid="649792175242821353">"ඔබගේ දුරකථනය වැසේ."</string>
- <string name="shutdown_confirm_question" msgid="2906544768881136183">"ඔබට වසා දැමීමට අවශ්‍යද?"</string>
- <string name="reboot_safemode_title" msgid="7054509914500140361">"ආරක්‍ෂිත ආකාරයට නැවත පණ ගන්වන්න"</string>
- <string name="reboot_safemode_confirm" msgid="55293944502784668">"ආරක්‍ෂිත ආකාරයට නැවත පණ ගැන්වීමට ඔබට අවශ්‍යද? මෙමඟින් ඔබ ස්ථාපිත කර ඇති සියලුම තෙවන පාර්ශවීය යෙදුම් සියල්ල අබල වී යයි. ඔබ නැවත පණ ගන්වන විට ඒවා නැවත පිහිටුවීම සිදු වේ."</string>
- <string name="recent_tasks_title" msgid="3691764623638127888">"මෑත"</string>
- <string name="no_recent_tasks" msgid="8794906658732193473">"මෑත යෙදුම් නැත."</string>
- <string name="global_actions" product="tablet" msgid="408477140088053665">"ටැබ්ලට් විකල්ප"</string>
- <string name="global_actions" product="default" msgid="2406416831541615258">"දුරකථන විකල්ප"</string>
- <string name="global_action_lock" msgid="2844945191792119712">"තිර අගුල"</string>
- <string name="global_action_power_off" msgid="4471879440839879722">"බලය අක්‍රිය කරන්න"</string>
- <string name="global_action_bug_report" msgid="7934010578922304799">"දෝෂ වර්තාව"</string>
- <string name="bugreport_title" msgid="2667494803742548533">"දෝෂ වාර්තාවක් ගන්න"</string>
- <string name="bugreport_message" msgid="398447048750350456">"ඊ-තැපැල් පණිවිඩයක් ලෙස යැවීමට මෙය ඔබගේ වත්මන් උපාංග තත්වය ගැන තොරතුරු එකතු කරනු ඇත. දෝෂ වාර්තාව ආරම්භ කර එය යැවීමට සූදානම් කරන තෙක් එයට කිසියම් කාලයක් ගතවනු ඇත; කරුණාකර ඉවසන්න."</string>
- <string name="global_action_toggle_silent_mode" msgid="8219525344246810925">"නිහඬ ආකාරය"</string>
- <string name="global_action_silent_mode_on_status" msgid="3289841937003758806">"ශබ්දය අක්‍රියයි"</string>
- <string name="global_action_silent_mode_off_status" msgid="1506046579177066419">"හඬ සක්‍රියයි"</string>
- <string name="global_actions_toggle_airplane_mode" msgid="5884330306926307456">"අහස්යානා ආකාරය"</string>
- <string name="global_actions_airplane_mode_on_status" msgid="2719557982608919750">"අහස්යානා ආකාරය සක්‍රීයයි."</string>
- <string name="global_actions_airplane_mode_off_status" msgid="5075070442854490296">"අහස්යානා අකාරය අක්‍රියයි"</string>
- <string name="status_bar_notification_info_overflow" msgid="5301981741705354993">"999+"</string>
- <string name="safeMode" msgid="2788228061547930246">"ආරක්‍ෂිත ආකාරය"</string>
- <string name="android_system_label" msgid="6577375335728551336">"Android පද්ධතිය"</string>
- <string name="permgrouplab_costMoney" msgid="5429808217861460401">"ඔබගේ මුදල් වැයවන සේවාවන්"</string>
- <string name="permgroupdesc_costMoney" msgid="3293301903409869495">"ඔබගෙන් මුදල් යන දේවල් කරන්න."</string>
- <string name="permgrouplab_messages" msgid="7521249148445456662">"ඔබගේ පණිවිඩ"</string>
- <string name="permgroupdesc_messages" msgid="7821999071003699236">"ඔබගේ SMS, ඊ-තැපැල්, සහ වෙනත් පණිවිඩ කියවන්න සහ ලියන්න."</string>
- <string name="permgrouplab_personalInfo" msgid="3519163141070533474">"ඔබගේ පෞද්ගලික තොරතුරු"</string>
- <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"ඔබගේ සම්බන්ධතා පතේ ආචයනය කරන ලද, ඔබ ගැන තොරතුරු වලට ඍජු ප්‍රවේශය."</string>
- <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"ඔබගේ සමාජයීය තොරතුරු"</string>
- <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"ඔබගේ සම්බන්ධතා සහ සාමාජ සම්බන්ධයන් ගැන තොරතුරු වෙත ඍජු ප්‍රවේශය."</string>
- <string name="permgrouplab_location" msgid="635149742436692049">"ඔබගේ ස්ථානය"</string>
- <string name="permgroupdesc_location" msgid="5704679763124170100">"ඔබගේ භෞතික පිහිටුම නිරීක්ෂණය කරයි."</string>
- <string name="permgrouplab_network" msgid="5808983377727109831">"ජාල සන්නිවේදනය"</string>
- <string name="permgroupdesc_network" msgid="4478299413241861987">"විවිධ ජාල විශේෂාංග වෙත පිවිසෙන්න."</string>
- <string name="permgrouplab_bluetoothNetwork" msgid="1585403544162128109">"බ්ලූටූත්"</string>
- <string name="permgroupdesc_bluetoothNetwork" msgid="5625288577164282391">"බ්ලූටූත් ඔස්සේ උපාංග සහ ජාල වෙත පිවිසෙන්න."</string>
- <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"ශ්‍රව්‍ය සැකසීම්"</string>
- <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"ශ්‍රව්‍ය සැකසීම් වෙනස් කරන්න."</string>
- <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"බැටරිය වෙත බලපායි"</string>
- <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"බැටරියේ බලය ක්ෂණිකව අඩු වන විශේෂාංග භාවිත කරන්න."</string>
- <string name="permgrouplab_calendar" msgid="5863508437783683902">"දින දර්ශනය"</string>
- <string name="permgroupdesc_calendar" msgid="5777534316982184416">"දින දර්ශන සිද්ධින්ට සෘජුව ප්‍රවේශ වීම."</string>
- <string name="permgrouplab_dictionary" msgid="4148597128843641379">"පරිශීලක ශබ්ද කෝෂය කියවන්න"</string>
- <string name="permgroupdesc_dictionary" msgid="7921166355964764490">"පරිශීලක ශබ්ද කෝෂයේ වචන කියවීම."</string>
- <string name="permgrouplab_writeDictionary" msgid="8090237702432576788">"පරිශීලක ශබ්දකෝෂයට ලිවිම"</string>
- <string name="permgroupdesc_writeDictionary" msgid="2711561994497361646">"පරිශීලක ශබ්දකෝෂයට වචන එකතු කරන්න."</string>
- <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"පිටුසන් සහ ඉතිහාසය"</string>
- <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"පිටුසන් සහ බ්‍රව්සර ඉතිහාසය වෙත ඍජු ප්‍රවේශය."</string>
- <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"සීනුව"</string>
- <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"සීනුව සකසන්න."</string>
- <string name="permgrouplab_voicemail" msgid="4162237145027592133">"හඬ තැපෑල"</string>
- <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"හඬ තැපෑල වෙත ඍජු ප්‍රවේශය."</string>
- <string name="permgrouplab_microphone" msgid="171539900250043464">"මයික්‍රොෆෝනය"</string>
- <string name="permgroupdesc_microphone" msgid="7106618286905738408">"ශබ්දය පටිගත කිරීමට මයික්‍රොෆෝනය වෙත ඍජු ප්‍රවේශය."</string>
- <string name="permgrouplab_camera" msgid="4820372495894586615">"කැමරාව"</string>
- <string name="permgroupdesc_camera" msgid="2933667372289567714">"ඡායාරූප හෝ වීඩියෝ ග්‍රහණය සඳහා කැමරාව වෙත ඍජු ප්‍රවේශය."</string>
- <string name="permgrouplab_screenlock" msgid="8275500173330718168">"අගුළු තිරය"</string>
- <string name="permgroupdesc_screenlock" msgid="7067497128925499401">"ඔබගේ උපාංගයේ අගුළු තිරයේ ක්‍රියාකාරිත්වයට බලපාන හැකියාව."</string>
- <string name="permgrouplab_appInfo" msgid="8028789762634147725">"ඔබගේ යෙදුම් වල තොරතුරු"</string>
- <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"ඔබගේ උපාංගයේ වෙනත් යෙදුම් වල ක්‍රියාකාරිත්වයට බලපෑම් කළ හැකි බව."</string>
- <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"බිතුපත"</string>
- <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"උපාංග බිතුපතේ සැකසීම් වෙනස් කරන්න."</string>
- <string name="permgrouplab_systemClock" msgid="406535759236612992">"ඔරලෝසුව"</string>
- <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"උපාංග කාල හෝ කාල කලාප වෙනස් කරන්න."</string>
- <string name="permgrouplab_statusBar" msgid="2095862568113945398">"තත්ව තීරුව"</string>
- <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"උපාංග තත්ව තීරු සැකසීම් වෙනස් කරන්න."</string>
- <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"සමමුහුර්ත සැකසීම්"</string>
- <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"සමමුහුර්ත සැකසීම් වෙත ප්‍රවේශය."</string>
- <string name="permgrouplab_accounts" msgid="3359646291125325519">"ඔබගේ ගිණුම්"</string>
- <string name="permgroupdesc_accounts" msgid="4948732641827091312">"ලබාගත හැකි ගිණුම් වලට ප්‍රවේශ වීම."</string>
- <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"දෘඩාංග පාලක"</string>
- <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"හෑන්ඩ්සෙටයේ දෘඩාංග වලට සෘජුවම ප්‍රවේශ වන්න."</string>
- <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"දුරකථන ඇමතුම්"</string>
- <string name="permgroupdesc_phoneCalls" msgid="7489701620446183770">"දුරකථන ඇමතුම් නිරීක්ෂණය කරන්න, පටිගත කරන්න සහ ක්‍රියාත්මක කරන්න."</string>
- <string name="permgrouplab_systemTools" msgid="4652191644082714048">"පද්ධති මෙවලම්"</string>
- <string name="permgroupdesc_systemTools" msgid="8162102602190734305">"පද්ධතියේ පහල මට්ටම් ප්‍රවේශය සහ පාලනය."</string>
- <string name="permgrouplab_developmentTools" msgid="3446164584710596513">"සංවර්ධක මෙවලම්"</string>
- <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"යෙදුම් සංවර්ධකයන් සඳහා පමණක් අවශ්‍ය විශේෂාංග."</string>
- <string name="permgrouplab_display" msgid="4279909676036402636">"වෙනත් යෙදුම් UI"</string>
- <string name="permgroupdesc_display" msgid="6051002031933013714">"වෙනත් යෙදුම්වල UI සඳහා බලපායි."</string>
- <string name="permgrouplab_storage" msgid="1971118770546336966">"ආචයනය"</string>
- <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USB ආචයනය වෙත ප්‍රවේශය."</string>
- <string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD පත වෙත ප්‍රවේශය."</string>
- <string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"ප්‍රවේශ්‍යතා විශේෂාංග"</string>
- <string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"උපකාරීවන තාක්ෂණ ඉල්ලීම් කළ හැකි විශේෂාංග."</string>
- <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"කවුළු අන්න්තර්ගතය ලබාගන්න"</string>
- <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ඔබ අන්තර්ක්‍රියාකාරී වන කවුළුවේ අන්තර්ගතය පරීක්ෂා කරන්න."</string>
- <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ස්පර්ශයෙන් ගවේෂණය සක්‍රිය කරන්න"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"ස්පර්ශ කරන අයිතම හඬ නගා කතා කෙරෙනු ඇති අතර ඉංගිති භාවිතයෙන් තිරය ගවේෂණය කිරීමට පුළුවනි."</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>
- <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"ණයවරපත් අංක සහ මුරපද වැනි පුද්ගලික දත්ත ඇතුළත් වේ."</string>
- <string name="permlab_statusBar" msgid="7417192629601890791">"තත්ව තීරුව අබල කරන්න හෝ වෙනස් කරන්න"</string>
- <string name="permdesc_statusBar" msgid="8434669549504290975">"තත්ව තීරුව අක්‍රිය කිරීමට හෝ පද්ධති නිරූපක එකතු හෝ ඉවත් කිරීමට යෙදුමට අවසර දේ."</string>
- <string name="permlab_statusBarService" msgid="7247281911387931485">"තත්ව තීරුව"</string>
- <string name="permdesc_statusBarService" msgid="716113660795976060">"තත්ව තීරුව වීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_expandStatusBar" msgid="1148198785937489264">"තත්ව තීරුව දිග හැරීම/හැකිලීම"</string>
- <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"තත්ව තීරුව දිග හැරීමට හෝ හැකිළීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"පිටවන ඇමතුම් වල මග වෙනස් කිරීම"</string>
- <string name="permdesc_processOutgoingCalls" msgid="5331318931937402040">"පිටවන ඇමතුම් සකස් කිරීමට සහ ඇමතීමට නියමිත අංකය වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. මෙම අවසරයෙන් යෙදුමට පිටවන ඇමතුම් නිරීක්ෂණය, නැවත හැරවීම හෝ වැළක්වීම අවසර දෙයි."</string>
- <string name="permlab_receiveSms" msgid="8673471768947895082">"කෙටි පණිවිඩ ලබාගැනීම (SMS)"</string>
- <string name="permdesc_receiveSms" msgid="6424387754228766939">"SMS පණිවිඩ ලැබීමට සහ ක්‍රියාත්මක කිරීමට යෙදුමට අවසර දෙන්න. මෙහි තේරුම යෙදුමට ඔබගේ උපාංගයට ලැබෙන පණිවිඩ අධීක්ෂණය කිරීමට හැකිවීම වන අතර, ඒවා ඔබට නොපෙන්වා මකා දැමීමටද හැකි වීමයි."</string>
- <string name="permlab_receiveMms" msgid="1821317344668257098">"පෙළ පණිවුඩ ලබාගන්න (MMS)"</string>
- <string name="permdesc_receiveMms" msgid="533019437263212260">"MMS පණිවිඩ සොයා ලබාගැනීමට සහ ක්‍රියාත්මක කිරීමට යෙදුමට අවසර දෙන්න. යෙදුම නිරීක්ෂණය කරනු ලබන අතර ඔබට ලැබුන පණිවිඩ පෙන්වීමෙන් තොරවම මකා දැමිය හැකි බව මෙමඟින් අදහස් කරයි."</string>
- <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"හදිසි විකාශන ලබා ගැනීම"</string>
- <string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"හදිසි විකාශ පණිවිඩ ලැබීමට සහ ක්‍රියාත්මක කිරීමට යෙදුමට අවසර දෙන්න. පද්ධති යෙදුම් වලට පමණක් මෙම අවසරය අදාළ වෙයි."</string>
- <string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"සෙල් ප්‍රචාරණ පණිවිඩ කියවීම"</string>
- <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"ඔබගේ උපාංගයට ලැබුණු සෙල් විකාශන පණිවිඩ කියවීමට යෙදුමට අවසර දෙන්න. ඔබට හදිසි අවස්ථාවන් පිළිබඳ අනතුරු ඇඟවීමට සෙල් විකාශන පණිවිඩ ඇතැම් ස්ථානවල සිට යවනු ලබයි. හදිසි සෙල් විකාශන ලැබෙන අවස්ථාවකදී, අනිෂ්ට යෙදුම් මඟින් ඔබගේ උපාංගයට කාර්ය සාධනයට හෝ ක්‍රියකරණයට බාධා සිදුවිය හැක."</string>
- <string name="permlab_sendSms" msgid="5600830612147671529">"SMS පණිවිඩ යැවීම"</string>
- <string name="permdesc_sendSms" msgid="7094729298204937667">"SMS පණිවිඩ යැවීමට යෙදුමට අවසර දෙන්න. මෙමඟින් බලාපොරොත්තු නොවූ ප්‍රතිඵල අත් විය හැක. අනිෂ්ට යෙදුම් ඔබගේ තහවුරුවකින් තොරව පණිවිඩ යැවීම මඟින් ඔබගේ මුදල් වැය කල හැක."</string>
- <string name="permlab_sendRespondViaMessageRequest" msgid="8713889105305943200">"පණිවිඩ සිදුවීම හරහා ප්‍රතිචාර යැවීම"</string>
- <string name="permdesc_sendRespondViaMessageRequest" msgid="7107648548468778734">"පැමිණෙන ඇමතුම් සඳහා පණිවිඩ ඔස්සේ ප්‍රතිචාර සිදුවීම් හසුරුවීමට වෙනත් පණිවිඩ යෙදුම් සඳහා ඉල්ලීම් යැවීමට, යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_readSms" msgid="8745086572213270480">"ඔබගේ පෙළ පණිවුඩ කියවන්න (SMS හෝ MMS)"</string>
- <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"ඔබගේ ටැබ්ලටයේ හෝ SIM පතේ ආචයනය කර ඇති SMS පණිවිඩ කියවීමට යෙදුමට අවසර දෙන්න. අන්තර්ගතය හෝ විශවාසදයි බවින් තොරවම සියලු SMS පණිවිඩ කියවීමට මෙමගින් යෙදුමට අවසර දෙයි."</string>
- <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"ඔබගේ දුරකථනයේ හෝ SIM පතේ ආචයනය කරන ලද SMS පණිවිඩ කියවීමට යෙදුමට අවසර දෙන්න. අන්තර්ගතය හෝ විශ්වාසදායී බවින් තොරවම සියලු SMS පණිවිඩ කියවීමට මෙමගින් යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_writeSms" msgid="3216950472636214774">"ඔබගේ කෙටි පණිවිඩ සංස්කරණය කිරීම (SMS හෝ MMS)"</string>
- <string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"ඔබගේ ටැබ්ලටයේ හෝ SIM පතේ ගබඩා කර ඇති SMS පණිවිඩ වෙත ලිවීමට යෙදුමට අවසර දෙන්න. අනිෂ්ට යෙදුම් ඔබගේ පණිවිඩ මකා දැමිය හැක."</string>
- <string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"ඔබගේ ටැබ්ලටයේ හෝ SIM පතේ ආචයනය කරන ලද SMS පණිවිඩ ලිවීමට යෙදුමට අවසර දෙන්න. අනිෂ්ට යෙදුම් ඔබගේ පණිවිඩ මකා දැමිය හැක."</string>
- <string name="permlab_receiveWapPush" msgid="5991398711936590410">"පෙළ පණිවිඩ ලබාගැනීම (WAP)"</string>
- <string name="permdesc_receiveWapPush" msgid="748232190220583385">"WAP පණිවිඩ ලැබීමට සහ ක්‍රියාවලි කිරීමට යෙදුමට අවසර දෙන්න. මෙම අවසරයෙහි ඔබව ඒවාට පෙන්වීමකින් තොරව ඔබට පණිවිඩ නිරීක්ෂණයට හෝ මැකීමට හැකියාව ඇතුළත් වේ."</string>
- <string name="permlab_getTasks" msgid="6466095396623933906">"ධාවනය වන යෙදුම් ලබාගැනීම"</string>
- <string name="permdesc_getTasks" msgid="7454215995847658102">"දැනට සහ මෑත ක්‍රියාත්මක කාර්යයන් පිළිබඳ විස්තරාත්මක තොරතුරු සොයා ලබාගැනීමට යෙදුමට ඉඩ දෙන්න. මෙය කුමන යෙදුම් උපාංගයේ භාවිතා කරන්නේද යන තොරතුරු යෙදුම්වලට සොයා ගැනීමට ඉඩ දිය හැක."</string>
- <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"පරිශීලකයන් අතර අන්තර්ක්‍රියාකාරී වන්න"</string>
- <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"උපාංගයේ විවිධ පරිශීලකයන් හරහා ක්‍රියාවන් දැක්වීමට යෙදුමට අවසර දෙන්න. පරිශීලකයන් අතර ආරක්ෂාව කඩකිරීමට අනිෂ්ට යෙදුම් විසින් මෙය භාවිතා කිරීමට ඉඩ ඇත."</string>
- <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"පරිශීලකයන් අතර අන්තර් ක්‍රියාකාරී වීමට සම්පූර්ණ බලපත්‍රය"</string>
- <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"පරිශීලකයන් හරහා සිදු කළ හැකි සියලු අන්තර් ක්‍රියා වලට අවසර දෙන්න."</string>
- <string name="permlab_manageUsers" msgid="1676150911672282428">"පරිශීලකයන් කළමනාකරණය කරන්න"</string>
- <string name="permdesc_manageUsers" msgid="8409306667645355638">"විස්තර ලබා ගැනීම, නිර්මාණකරණය, මකාදැමීම ඇතුළු පරිශීලකයන් කළමනාකරණයට යෙදුම්වලට අවසර දෙන්න."</string>
- <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"ධාවනය වන යෙදුම් වල තොරතුරු සොයා ලබාගැනීම"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"දැනට සහ මෑතක ක්‍රියාත්මක කාර්යයන් පිළිබඳ විස්තරාත්මක තොරතුරු ලබාගැනීමට යෙදුමට අවසර දෙන්න අනිෂ්ට යෙදුම් අනෙකුත් යෙදුම් පිළිබඳ පුද්ගලික තොරතුරු සොයා ගැනීමට ඉඩ තිබේ."</string>
- <string name="permlab_reorderTasks" msgid="2018575526934422779">"ධාවනය වන යෙදුම් නැවත අනුපිළිවෙලට සැකසීම"</string>
- <string name="permdesc_reorderTasks" msgid="7734217754877439351">"පෙරබිමට හෝ පසුබිමට සිදුවීම් ගෙනයාමට යෙදුමට අවසර දෙන්න. ඔබගේ ආදානයකින් තොරව යෙදුම මෙය සිදුකරයි."</string>
- <string name="permlab_removeTasks" msgid="6821513401870377403">"යෙදුම් ධාවනය නවත්වන්න"</string>
- <string name="permdesc_removeTasks" msgid="1394714352062635493">"කාර්යයන් ඉවත් කිරීමට සහ ඒවායෙහි යෙදුම් නැති කිරීමට යෙදුමට අවසර දෙන්න. අනෙක් යෙදුම් හැසිරීම බාධා කිරීමට අනිෂ්ට යෙදුම්වලට අවසර දෙන්න."</string>
- <string name="permlab_manageActivityStacks" msgid="7391191384027303065">"ක්‍රියාකාරකම් අට්ටි කළමනාකරණය කරන්න"</string>
- <string name="permdesc_manageActivityStacks" msgid="1615881933034084440">"වෙනත් යෙදුම් ධාවනය වන ක්‍රියාකාරකම් අට්ටි වලට එකතු කිරීමට, ඉවත් කිරීමට, සහ වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. වෙනත් යෙදුම්වල හැසිරීම අනිෂ්ට යෙදුම් මගින් බාධා විය හැක."</string>
- <string name="permlab_startAnyActivity" msgid="2918768238045206456">"ඕනෑම ක්‍රියාවක් අරඹන්න"</string>
- <string name="permdesc_startAnyActivity" msgid="997823695343584001">"අවසර ආරක්ෂාව හෝ යැවුම් තත්වයෙන් තොරවම ඕනෑම ක්‍රියාවක් ආරම්භ කිරීමට යෙදුමට අවසර දේ."</string>
- <string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"තිර ගැළපුම සැකසීම"</string>
- <string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"වෙනත් යෙදුම්වල තිර ගැලපුම් මාදිලිය පාලනයට යෙදුමට අවසර දෙන්න. වෙනත් යෙදුම්වල හැසිරීම අනිෂ්ට යෙදුම් කැඩිය හැක."</string>
- <string name="permlab_setDebugApp" msgid="3022107198686584052">"යෙදුම් නිදොස්කරණය සබල කිරීම"</string>
- <string name="permdesc_setDebugApp" msgid="4474512416299013256">"වෙනත් යෙදුමක් සඳහා නිදොස්කරණය සක්‍රිය කිරීමට යෙදුමට අවසර දෙන්න. වෙනත් යෙදුම් විනාශ කිරීමට අනිෂ්ට යෙදුම් මෙය භාවිත කළ හැක."</string>
- <string name="permlab_changeConfiguration" msgid="4162092185124234480">"පද්ධති සංදර්ශක සැකසීම් වෙනස් කරන්න"</string>
- <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"පෙදෙසිය හෝ සම්පූර්ණ අකුරු ප්‍රමාණය වැනි පවතින වින්‍යාසය වෙනස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_enableCarMode" msgid="5684504058192921098">"මෝටර් රථ ආකාරය ක්‍රියාත්මක කරන්න"</string>
- <string name="permdesc_enableCarMode" msgid="4853187425751419467">"කාර් ආකාරය සබල කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"වෙනත් යෙදුම් වැසීම"</string>
- <string name="permdesc_killBackgroundProcesses" msgid="4593353235959733119">"අනෙක් යෙදුම්වල පසුබිම් ක්‍රියාවලි අවසන් කිරීමට යෙදුමට අවසර දෙන්න. අනෙක් යෙදුම් ධාවනය නැවතීමට මෙය හේතුවක් වේ."</string>
- <string name="permlab_forceStopPackages" msgid="2329627428832067700">"වෙනත් යෙදුම් බලෙන් නවත්වන්න"</string>
- <string name="permdesc_forceStopPackages" msgid="5253157296183940812">"යෙදුමට බලෙන් අනෙක් යෙදුම් නැවතීමට අවසර දෙන්න."</string>
- <string name="permlab_forceBack" msgid="652935204072584616">"යෙදුම වැසීමට බල කිරීම"</string>
- <string name="permdesc_forceBack" msgid="3892295830419513623">"නැවතීමට පෙරබිමේ ඇති ඕනෑම ක්‍රියාවක් බලෙන් නැවතීමට සහ පිටුපසට යාමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිදා අවශ්‍ය නොවේ."</string>
- <string name="permlab_dump" msgid="1681799862438954752">"පද්ධති අභ්‍යන්තර තත්වය සොයා ලබා ගන්න"</string>
- <string name="permdesc_dump" msgid="1778299088692290329">"පද්ධතියේ අභ්‍යන්තර තත්වය ලැබීමට යෙදුමට අවසර දෙන්න. ඔවුන් සාමාන්‍යයෙන් භාවිත නොකරන විවිධත්වයකින් යුත් පුද්ගලික සහ ආරක්‍ෂිත තොරතුරු අනිෂ්ට යෙදුම් සොයා ලබා ගත හැක."</string>
- <string name="permlab_retrieve_window_content" msgid="8022588608994589938">"තිර අන්තර්ගතය සොයා ලබාගැනීම"</string>
- <string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"ක්‍රියාකාරී කවුළුවක අන්තර්ගතය ලබාගැනීමට යෙදුමට අවසර දෙන්න. අනිෂ්ට යෙදුම් විසින් සම්පූර්ණ කවුළු අන්තර්ගතය ලබාගැනීම සහ මුරපදය හැර ඒවායෙහි පෙළ පරික්ෂා කිරීම සිදුකරයි."</string>
- <string name="permlab_temporary_enable_accessibility" msgid="2312612135127310254">"ප්‍රවේශ්‍යතාවය තාවකාලිකව සබල කිරීම"</string>
- <string name="permdesc_temporary_enable_accessibility" msgid="8079456293182975464">"උපාංගය වෙත ප‍්‍රවේශ්‍යතාව තාවකාලිකව සක්‍රිය කිරීමට යෙදුමට අවසර දෙන්න. පරිශීලක අවධානයකින් තොරව අනිෂ්ට යෙදුම් ප‍්‍රවේශ්‍යතාව සක්‍රිය කළ හැක."</string>
- <string name="permlab_retrieve_window_info" msgid="8532295199112519378">"තිර තොරතුරු සොයා ලබාගැනීම"</string>
- <string name="permdesc_retrieve_window_info" msgid="4998836370424186849">"කවුළු කළමනාකරු මගින් කවුළුව ගැන තොරතුරු සොයා ලබාගැනීමට යෙදුමට අවසර දෙන්න. අභ්‍යන්තර පද්ධති භාවිතය සඳහා කැමති තොරතුරු අනිෂ්ට යෙදුම් විසින් ලබා ගත හැක."</string>
- <string name="permlab_filter_events" msgid="8675535648807427389">"සිදුවීම් පෙරන්න"</string>
- <string name="permdesc_filter_events" msgid="8006236315888347680">"පිටත් කිරීමට පෙර සියලු පරිශීලක සිදුවීම්වල ප්‍රවාහයක් පෙරීමට යොදා ගන්නා ආදාන පෙරීමක් ලියාපදිංචි කිරීමට යෙදුමට අවසර දෙන්න. පරිශීලක මැදිහත් වීමකින් තොරව පද්ධති UI අනිෂ්ට යෙදුම් පාලනය කරයි."</string>
- <string name="permlab_magnify_display" msgid="5973626738170618775">"දර්ශනය විශාලනය කරන්න"</string>
- <string name="permdesc_magnify_display" msgid="7121235684515003792">"දසුනේ අන්තර්ගතය විශාල කිරීමට යෙදුමට අවසර දෙන්න. ඇතැම් විට අනිෂ්ට යෙදුම්, උපාංගය භාවිතා කළ නොහැකි බවට පත් කරමින් දසුනේ අන්තර්ගතය වෙනස් කළ හැක."</string>
- <string name="permlab_shutdown" msgid="7185747824038909016">"අඩ වශයෙන් වැහීම"</string>
- <string name="permdesc_shutdown" msgid="7046500838746291775">"ක්‍රියාකාරකම් කළමනාකරු වැහීමේ තත්වයට දමන්න. සම්පූර්ණ වැහීමකට පත් නොකරන්න."</string>
- <string name="permlab_stopAppSwitches" msgid="4138608610717425573">"යෙදුම් මාරු වීම වැළක්වීම"</string>
- <string name="permdesc_stopAppSwitches" msgid="8262195802582255021">"වෙනත් යෙදුමක් වෙත පරිශීලකයාව මාරු වීම වළක්වයි."</string>
- <string name="permlab_getTopActivityInfo" msgid="2537922311411546016">"පවතින යෙදුමේ තොරතුරු ලබාගැනීම"</string>
- <string name="permdesc_getTopActivityInfo" msgid="8153651434145132505">"තිරයේ පෙරබිම තුළ තිබෙන දැන් පවත්නා යෙදුමේ සහ සේවාවල පෞද්ගලික තොරතුරු ලබාගැනීමට දරන්නාට අවසර දෙන්න."</string>
- <string name="permlab_runSetActivityWatcher" msgid="892239094867182656">"සියලු යෙදුම් දියත් කිරීම් නිරීක්ෂණය සහ පාලනය කිරීම"</string>
- <string name="permdesc_runSetActivityWatcher" msgid="6003603162578577406">"පද්ධතිය ක්‍රියාකාරකම් දියත් කරන්නේ කෙසේදැයි නිරීක්ෂණයට සහ පාලනයට යෙදුමට අවසර දෙන්න. අනිෂ්ට යෙදුම් මගින් පද්ධතිය සම්පූර්ණයෙන්ම සම්මුතියකට එළඹිය හැක. වර්ධනය සඳහා පමණක් මෙම අවසරය අවශ්‍ය වෙයි, සාමාන්‍ය භාවිතය සඳහා කිසි විටෙකත් අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_broadcastPackageRemoved" msgid="2576333434893532475">"පැකේජ ඉවත් කිරීමේ ප්‍රචාරණයක් යවන්න"</string>
- <string name="permdesc_broadcastPackageRemoved" msgid="6621901216207931089">"යෙදුම් පැකේජයක් ඉවත්කොට ඇති බවට දැනුම්දීමක් විකාශනයට යෙදුමට අවසර දෙයි. ධාවනය වන අනෙකුත් යෙදුමක් නැති කිරීමට අනිෂ්ට යෙදුම් විසින් මෙය භාවිත කළ හැක."</string>
- <string name="permlab_broadcastSmsReceived" msgid="5689095009030336593">"SMS-ලැබීම විකාශන යැවීම"</string>
- <string name="permdesc_broadcastSmsReceived" msgid="4152037720034365492">"SMS පණිවිඩයක් හරහා ලැබුණු දැනුම්දීමක් ප්‍රචාරණයට යෙදුමට අවසර දෙන්න. පැමිණෙන SMS පණිවිඩ වංචා කිරීමට අනිෂ්ට යෙදුම් මෙය භාවිත කළ හැක."</string>
- <string name="permlab_broadcastWapPush" msgid="3145347413028582371">"WAP-PUSH-ලැබීම විකාශන යැවීම"</string>
- <string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"WAP PUSH පණිවුඩයක් ලැබී ඇති බවට දැනුම්දීමක් විකාශනය කිරීමට යෙදුමට අවසර දෙන්න. වංචාකාරී MMS පණිවුඩ ලැබීම් හෝ නිහඬව ඕනෑම වෙබ් පිටුවක අන්තර්ගතය අනිෂ්ට විචල්‍යවලින් ඉවත් කිරීමට, අනිෂ්ට යෙදුම් විසින් මෙය භාවිතා කිරීමට ඉඩ ඇත."</string>
- <string name="permlab_setProcessLimit" msgid="2451873664363662666">"ධාවන ක්‍රියාවලි ගණන සීමා කිරීම"</string>
- <string name="permdesc_setProcessLimit" msgid="7318061314040879542">"ධාවනය වන උපරිම ක්‍රියාවලි ගණන පාලනය කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිදා අවශ්‍ය නොවේ."</string>
- <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"පසුබිම් යෙදුම් වලට වැසීමට බලකරන්න"</string>
- <string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"පසුබිමට පිවිසෙනවාත් සමඟම ක්‍රියාකාරකම් නැවතීම පාලනයට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසිසේත් අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_batteryStats" msgid="2789610673514103364">"බැටරි සංඛ්‍යාන කියවීම"</string>
- <string name="permdesc_batteryStats" msgid="5897346582882915114">"වර්තමාන පහළ මට්ටමේ බැටරිය භාවිතා දත්ත කියවීමට යෙදුමට අවසර දෙන්න. ඔබ භාවිත කරන යෙදුම් මොනවා දැයි ගැන විස්තරාත්මක තොරතුරු ගැන දැන ගැනීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_updateBatteryStats" msgid="3719689764536379557">"බැටරි සංඛ්‍යාන වෙනස් කිරීම"</string>
- <string name="permdesc_updateBatteryStats" msgid="6862817857178025002">"එකතු කරගන්නා ලද බැටරි සංඛ්‍යාන වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් වල භාවිතයට නොවේ."</string>
- <string name="permlab_getAppOpsStats" msgid="1508779687436585744">"යෙදුමේ විකල්ප සංඛ්‍යාංක සොයා ලබාගැනීම"</string>
- <string name="permdesc_getAppOpsStats" msgid="6243887041577912877">"එකතු කරගත් යෙදුම් ක්‍රියාකාරිත්ව සංඛ්‍යා ලේඛන වෙනස් කිරීමට උපාංගයට ඉඩ දෙන්න. සාමාන්‍ය උපාංග භාවිතය සඳහා නොවේ."</string>
- <string name="permlab_updateAppOpsStats" msgid="8829097373851521505">"යෙදුම් විකල්ප සංඛ්‍යාංක වෙනස් කිරීම"</string>
- <string name="permdesc_updateAppOpsStats" msgid="50784596594403483">"එකතු කරගත් යෙදුම් ක්‍රියාකාරිත්ව සංඛ්‍යා ලේඛන වෙනස් කිරීමට යෙදුමට ඉඩ දෙන්න. සාමාන්‍ය යෙදුම් භාවිතය සඳහා නොවේ."</string>
- <string name="permlab_backup" msgid="470013022865453920">"පද්ධති උපස්ථ පාලනය කරන්න සහ නැවත පිහිටුවන්න"</string>
- <string name="permdesc_backup" msgid="6912230525140589891">"පද්ධතියේ උපස්ථය සහ උපක්‍රම නැවත පිහිටුවීම පාලනයට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් වල භාවිතය සඳහා නොවේ."</string>
- <string name="permlab_confirm_full_backup" msgid="5557071325804469102">"සම්පූර්ණ උපස්ථය හෝ මෙහෙයුම් නැවත පිහිටුවීම සනාථ කිරීම"</string>
- <string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"පූර්ණ උපස්ථ තහවුරුකිරීම් UI පුරන්නට උපකරණයට ඉඩ දෙන්න. කිසිම යෙදුමක් භාවිතා නොකරනු ඇත."</string>
- <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"අවසර නොලත් කවුළුව දර්ශනය කරන්න"</string>
- <string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"අභ්‍යන්තර පද්ධති පරිශීලක අතුරුමුහුණත් විසින් භාවිතා කිරීමට බලාපොරොත්තු වන කවුළු නිර්මාණය කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වල භාවිතය සඳහා නොවේ."</string>
- <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"වෙනත් යෙදුම් උඩින් අඳින්න"</string>
- <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"අනෙක් යෙදුම් මත හෝ පරිශීලක අතුරු මුහුණත් කොටස්වල ඇඳීමට යෙදුමට ඉඩ දෙන්න. එය ඔබේ භාවිතයේ ඇති ඕනෑම යෙදුමක මුහුණත සමග සම්බන්ධ වීමට හෝ අනෙක් යෙදුම් ගැන ඔබට පෙනෙන ආකාරය වෙනස් කිරීමට ඉඩ ඇත."</string>
- <string name="permlab_setAnimationScale" msgid="2805103241153907174">"ගෝලීය සජීවන වේගය වෙනස් කරන්න"</string>
- <string name="permdesc_setAnimationScale" msgid="7690063428924343571">"ඕනෑම වෙලාවක පොදු සජීවීකරණ වේගය (වේගවත් හෝ මන්දගාමී සජීවීකරණ) වෙනස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_manageAppTokens" msgid="1286505717050121370">"යෙදුම් ටෝකන කළමනාකරණය කිරීම"</string>
- <string name="permdesc_manageAppTokens" msgid="8043431713014395671">"සාමාන්‍ය Z පටිපාටිය මඟහැරයමින් යෙදුම්වලට අයිති ටෝකන් පත් නිර්මාණයට සහ කළමනාකරණයට යෙදුම්වලට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසිසේත් අවශ්‍ය නොවේ."</string>
- <string name="permlab_freezeScreen" msgid="4708181184441880175">"තිරය නිශ්චල කරන්න"</string>
- <string name="permdesc_freezeScreen" msgid="8558923789222670064">"සම්පූර්ණ තිර සංක්‍රමණය සඳහා තිරය තාවකාලිකව මුදවිමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_injectEvents" msgid="1378746584023586600">"යතුරු සහ පාලන බොත්තම් ඔබන්න"</string>
- <string name="permdesc_injectEvents" product="tablet" msgid="206352565599968632">"තමන්ගේ ආදාන සිදුවීම් (යතුරු එබිම් , ආදී ) අනෙකුත් යෙදුම්වලට භාරදීමට යෙදුමට ඉඩ දෙන්න. අනිෂ්ට යෙදුම් මෙය ටැබ්ලටය ලබා ගැනීමට භාවිතා කිරීමට ඉඩ ඇත."</string>
- <string name="permdesc_injectEvents" product="default" msgid="653128057572326253">"වෙනත් යෙදුම්වලට එහි ආදාන සිදුවීම් (යතුරු එබීම්, යනාදිය.) ආදිය යැවීමට යෙදුමට අවසර දෙන්න. දුරකථනය අත්කර ගැනීම අනිෂ්ට යෙදුම් මෙය භාවිත කරයි."</string>
- <string name="permlab_readInputState" msgid="469428900041249234">"ඔබ ටයිප් කරන දෙය සහ ඔබ ගන්නා ක්‍රියාවන් පටිගත කරන්න"</string>
- <string name="permdesc_readInputState" msgid="8387754901688728043">"මුරපදය ටයිප් කිරීම වැනි අනෙකුත් යෙදුම් සමඟ අන්තර්ක්‍රියාකාරී වනවිට යනාදී ඔබ ඔබන යතුරු දැකීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිසේත් අදාළ නොවේ."</string>
- <string name="permlab_bindInputMethod" msgid="3360064620230515776">"ආදාන ක්‍රමයක් වෙත බඳින්න"</string>
- <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"ආදාන ක්‍රමය ඉහල මට්ටමේ අතුරු මුහුණතක් වෙත සම්බන්ධ කිරීමට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසි විටෙක අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"ප‍්‍රවේශ්‍යතා සේවාවක් වෙත බදින්න"</string>
- <string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"ප‍්‍රවේශ්‍යතා සේවාවේ ඉහළ මට්ටමේ අතුරුමුහුණතට බැඳීමට දරන්නාට අවසර දේ. සාමාන්‍ය යෙදුම් සඳහා කිසිවිටක අවශ්‍ය නොවේ."</string>
- <string name="permlab_bindPrintService" msgid="8462815179572748761">"මුද්‍රණ සේවාවකට බද්ධ වී ඇත"</string>
- <string name="permdesc_bindPrintService" msgid="7960067623209111135">"මුද්‍රණ සේවාව ඉහල මට්ටමේ අතුරු මුහුණතක් වෙත සම්බන්ධ කිරීමට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසි විටෙක අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_accessAllPrintJobs" msgid="1120792468465711159">"සියලු මුද්‍රණ කාර්යයන් වෙත පිවිසෙන්න"</string>
- <string name="permdesc_accessAllPrintJobs" msgid="2978185311041864762">"වෙනත් යෙදුමකින් සෑදු මුද්‍රණ කාර්ය වෙත පිවිසීමට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිදා අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_bindNfcService" msgid="2752731300419410724">"NFC සේවාව වෙත බැඳෙන්න"</string>
- <string name="permdesc_bindNfcService" msgid="6120647629174066862">"NFC කාඩ් පත් ආදර්ශනය කරන යෙදුම් රඳවනයට සම්බන්ධ වීමට ඉඩ දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිදා අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_bindTextService" msgid="7358378401915287938">"පෙළ සේවාවකට බඳින්න"</string>
- <string name="permdesc_bindTextService" msgid="8151968910973998670">"කෙටි පණිවිඩ සේවාවක (උදා. SpellCheckerService) ඉහල මට්ටමේ අතුරු මුහුණතක් වෙත සම්බන්ධ කිරීමට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසි විටෙක අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_bindVpnService" msgid="4708596021161473255">"VPN සේවාවකට බැඳීම"</string>
- <string name="permdesc_bindVpnService" msgid="2067845564581693905">"VPN සේවාව ඉහල මට්ටමේ අතුරු මුහුණතක් වෙත සම්බන්ධ කිරීමට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසි විටෙක අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_bindWallpaper" msgid="8716400279937856462">"බිතුපත වෙත බඳින්න"</string>
- <string name="permdesc_bindWallpaper" msgid="7108428692595491668">"බිතුපත ඉහල මට්ටමේ අතුරු මුහුණතක් වෙත සම්බන්ධ කිරීමට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසි විටෙක අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_bindRemoteViews" msgid="5697987759897367099">"විජට සේවාවකට බඳින්න"</string>
- <string name="permdesc_bindRemoteViews" msgid="4717987810137692572">"විජට් සේවාව ඉහල මට්ටමේ අතුරු මුහුණතක් වෙත සම්බන්ධ කිරීමට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසි විටෙක අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_bindDeviceAdmin" msgid="8704986163711455010">"උපාංග පරිපාලක සමඟ අන්තර්ක්‍රියාකාරී වීම"</string>
- <string name="permdesc_bindDeviceAdmin" msgid="569715419543907930">"උපාංග පාලකයා වෙතට අභිප්‍රායයන් යැවීමට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වලට කිසි විටෙක අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_manageDeviceAdmins" msgid="4248828900045808722">"උපාංග පරිපාලකයෙක් එක් කිරීම හෝ ඉවත් කිරීම"</string>
- <string name="permdesc_manageDeviceAdmins" msgid="5025608167709942485">"දරන්නාට උපාංග පරිපාලකයින් එක් කිරීමට හෝ ඉවත් කිරීමට අවසර දේ. සාමාන්‍ය යෙදුම් වලට කිසිදා අවශ්‍ය නොවේ."</string>
- <string name="permlab_setOrientation" msgid="3365947717163866844">"තිර දිශානතිය වෙනස් කිරීම"</string>
- <string name="permdesc_setOrientation" msgid="3046126619316671476">"තිරයේ භ්‍රමණය ඕනෑම වේලාවක වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිදා අවශ්‍ය නොවනු ඇත."</string>
- <string name="permlab_setPointerSpeed" msgid="9175371613322562934">"දර්ශකයේ වේගය වෙනස් කිරීම"</string>
- <string name="permdesc_setPointerSpeed" msgid="6866563234274104233">"මූසිකයේ හෝ ට්‍රැක්පෑඩයේ වේගය ඕනෑම මොහොතක වෙනස් කිරීමට උපාංගයට ඉඩ දෙන්න. සාමාන්‍ය උපාංගයන් සඳහා කිසිදා අවශ්‍ය නොවනු ඇත."</string>
- <string name="permlab_setKeyboardLayout" msgid="4778731703600909340">"යතුරු පුවරු පිරිසැලැස්ම වෙනස් කිරීම"</string>
- <string name="permdesc_setKeyboardLayout" msgid="8480016771134175879">"යතුරුපුවරු මුහුණත වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිදා අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_signalPersistentProcesses" msgid="4539002991947376659">"යෙදුම් වෙත Linux සංඥා යැවීම"</string>
- <string name="permdesc_signalPersistentProcesses" msgid="4896992079182649141">"පවතින සියලු ක්‍රියාවලි වෙත සැපයුම් සංඥා ඉල්ලවිමට යෙදුමට අවසර දේ."</string>
- <string name="permlab_persistentActivity" msgid="8841113627955563938">"යෙදුම සැමවිටම ධාවනය කරන්න"</string>
- <string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"මතකයේ පවතින එහි කොටස් නොනැසී පැවතීමට යෙදුමට අවසර දෙන්න. වෙනත් යෙදුම් වලට මතකය සීමා කිරීමෙන් ටැබ්ලටය පමා කිරීම මගින් මෙමගින් කළ හැක."</string>
- <string name="permdesc_persistentActivity" product="default" msgid="4384760047508278272">"යෙදුමට තම කොටස් මතකය තුල නොබිඳීව රඳා පවත්වාගෙන යාමට අවසර දෙන්න. මෙය දුරකථනය මන්දගාමී කරමින් අනෙකුත් උපාංගයන් සඳහා ඉතිරි මතකය සීමා කිරීමට හැක."</string>
- <string name="permlab_deletePackages" msgid="184385129537705938">"යෙදුම් මකන්න"</string>
- <string name="permdesc_deletePackages" msgid="7411480275167205081">"Android පැකේජ මැකීමට යෙදුමට අවසර දෙන්න. වැදගත් යෙදුම් මැකීමට අනිෂ්ට යෙදුම් විසින් මෙය භාවිතා කිරීමට ඉඩ ඇත."</string>
- <string name="permlab_clearAppUserData" msgid="274109191845842756">"යෙදුමේ වෙනත් දත්ත මකන්න"</string>
- <string name="permdesc_clearAppUserData" msgid="4625323684125459488">"පරිශීලක දත්ත හිස් කිරීමට යෙදුමකට ඉඩ දේ."</string>
- <string name="permlab_deleteCacheFiles" msgid="3128665571837408675">"අනෙක් යෙදුම්වල හැඹිලි මකන්න"</string>
- <string name="permdesc_deleteCacheFiles" msgid="3812998599006730196">"හැඹිලි ගොනු මැකීමට අවසර යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_getPackageSize" msgid="7472921768357981986">"යෙදුම් ආචයනයේ ඉඩ ප්‍රමාණය මැනීම"</string>
- <string name="permdesc_getPackageSize" msgid="3921068154420738296">"යෙදුමකට එහි කේතය, දත්ත සහ හැඹිලි ප්‍රමාණ ලබාගැනීමට අවසර දෙන්න."</string>
- <string name="permlab_installPackages" msgid="2199128482820306924">"යෙදුම් කෙළින්ම ස්ථාපනය කිරීම"</string>
- <string name="permdesc_installPackages" msgid="5628530972548071284">"නව හෝ යාවත්කාලින කරන ලද Android පැකේජයන් ස්ථාපනය කිරීමට ඉඩ දෙන්න. බලසහිත අවසර තීන්දු සමග නව යෙදුම් එකතු කිරීමට අනිෂ්ට යෙදුම්වලට මෙය භාවිතා කිරීමට ඉඩ තිබේ."</string>
- <string name="permlab_clearAppCache" msgid="7487279391723526815">"යෙදුමේ සියලුම හැඹිලි දත්ත මකන්න"</string>
- <string name="permdesc_clearAppCache" product="tablet" msgid="8974640871945434565">"අනෙක් යෙදුම්වල හැඹිලි නාමාවලි තුළ ඇති ගොනු මැකීමෙන් යෙදුමට ටැබ්ලට ආචයනය නිදහස් කිරීමට අවසර දෙන්න. මෙමගින් අනෙක් යෙදුම්වලට ඒවායේ දත්ත නැවත ලබා ගැනීමට අවශ්‍ය වන නිසා, ඒවායේ ආරම්භය තවත් සෙමින් සිදුවීමට ඉඩ ඇත."</string>
- <string name="permdesc_clearAppCache" product="default" msgid="2459441021956436779">"අනෙක් යෙදුම්වල හැඹිලි නාමාවලි තුළ ඇති ගොනු මැකීමෙන් යෙදුමට දුරකථන ආචයනය නිදහස් කිරීමට අවසර දෙන්න. මෙමඟින් අනෙක් යෙදුම්වලට ඒවායේ දත්ත නැවත ලබා ගැනීමට අවශ්‍ය වන නිසා, ඒවායේ ආරම්භය තවත් සෙමින් සිදුවීමට ඉඩ ඇත."</string>
- <string name="permlab_movePackage" msgid="3289890271645921411">"යෙදුම් සම්පත් ගෙන යාම"</string>
- <string name="permdesc_movePackage" msgid="319562217778244524">"අභ්‍යන්තර සහ බාහිර මාධ්‍යයන්ගෙන් යෙදුමේ සම්පත් ගෙනයාමට සහ යෙදුමේ සම්පත් වලින් අභ්‍යන්තර සහ බාහිර මාධ්‍යයන්ට යෙදුමේ සම්පත් ගෙනයාමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_readLogs" msgid="6615778543198967614">"සංවේදී ලොග් දත්ත කියවීම"</string>
- <string name="permdesc_readLogs" product="tablet" msgid="82061313293455151">"පද්ධතියේ විවිධ ලොග් ගොනු කියවීමට යෙදුමට අවසර දෙන්න. පුද්ගලික සහ පෞද්ගලික තොරතුරු ඇතුළත්ව ඔබ ටැබ්ලටයෙන් කුමක් කරන්නෙහිද යනාදී සාමාන්‍ය තොරතුරු සෙවීමට මෙයට අවසර දෙන්න."</string>
- <string name="permdesc_readLogs" product="default" msgid="2063438140241560443">"පද්ධතියේ විවිධ ලොග් ගොනු කියවීමට යෙදුමට අවසර දෙන්න. පුද්ගලික සහ පෞද්ගලික තොරතුරු ඇතුළත්ව ඔබ දුරකථනයෙන් කුමක් කරන්නෙහිද යනාදී සාමාන්‍ය තොරතුරු සෙවීමට මෙයට අවසර දෙන්න."</string>
- <string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"නැවත ධාවනය සඳහා ඕනෑම මාධ්‍ය විකේතකයක් හාවිතා කරන්න"</string>
- <string name="permdesc_anyCodecForPlayback" msgid="8283912488433189010">"නැවත ධාවනය සඳහා විකේතනය කිරීමට ඕනෑම ස්ථාපිත මාධ්‍ය විකේතකයක් භාවිතයට යෙදුමට අවසර දෙන්න."</string>
- <!-- no translation found for permlab_manageCaCertificates (1678391896786882014) -->
- <skip />
- <!-- no translation found for permdesc_manageCaCertificates (4015644047196937014) -->
- <skip />
- <string name="permlab_diagnostic" msgid="8076743953908000342">"Diag විසින් හිමිකාරත්වය දරණ සම්පත්වලට කියවීම/ ලිවිම"</string>
- <string name="permdesc_diagnostic" msgid="6608295692002452283">"Diag කණ්ඩායමට අයිති ඕනෑම සම්පතක් කියවීමට සහ ලිවීමට යෙදුමට අවසර දෙන්න. උදාහරණයක් ලෙස /dev තුල ඇති ගොනු. මෙයට පද්ධති ස්ථායිතාවට සහ ආරක්ෂාවට බලපෑම් කිරීමට හැකියාවක් ඇත. නිෂ්පාදක හෝ ක්‍රියාකරු විසින් දෘඩාංග-විශේෂිත දෝෂ නිර්ණය සඳහා පමණක් මෙය යොදාගත යුතුය."</string>
- <string name="permlab_changeComponentState" msgid="6335576775711095931">"යෙදුම් අංග සබල හෝ අබල කිරීම"</string>
- <string name="permdesc_changeComponentState" product="tablet" msgid="8887435740982237294">"වෙනත් යෙදුමක අංගයක් සබල ද නැද්ද යන්න වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. වැදගත් ටැබ්ලට් අවශ්‍යතා අබල කිරීමට අනිෂ්ට යෙදුම් මෙය භාවිත කළ හැක. මෙම අවසරය සැලකිල්ලෙන් භාවිතා කළ යුතුය, භාවිත නොකරන, අස්ථිර හෝ අස්ථායි තත්වයට යෙදුම පත් කිරීමට එයට හැකිය."</string>
- <string name="permdesc_changeComponentState" product="default" msgid="1827232484416505615">"වෙනත් යෙදුමක අංගයක් සබල ද නැද්ද යන්න වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. වැදගත් දුරකථන අවශ්‍යතා අක්‍රිය කිරීමට අනිෂ්ට යෙදුම් මෙය භාවිත කළ හැක. මෙම අවසරය සැලකිල්ලෙන් භාවිත කළ යුතුය, භාවිත නොකරන, අස්ථිර හෝ අස්ථායි තත්වයට යෙදුම පත් කිරීමට එයට හැකිය."</string>
- <string name="permlab_grantRevokePermissions" msgid="4627315351093508795">"අවසර ප්‍රදානය කිරීම හෝ අහෝසි කිරීම"</string>
- <string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"යෙදුමකට එයට හෝ අනෙක් යෙදුම් වලට විශේෂිත අවසර ප්‍රදානයට හෝ අහෝසි කිරීමට අවසර දෙන්න. අනිෂ්ට යෙදුම්, ඒවාට අවසර ප්‍රදානය නොකළ ගුණාංග වලට ප්‍රවේශ වීමට මෙය භාවිතා කළ හැක."</string>
- <string name="permlab_setPreferredApplications" msgid="8463181628695396391">"අභිරුචි යෙදුම් සකසන්න"</string>
- <string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"ඔබගේ අභිරුචි යෙදුම් වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. ඔබගේ ධාවනය වන යෙදුම් වෙනස් කිරීම, පවතින යෙදුම් වලින් දත්ත එකතු කිරීම, ප්‍රෝඩා කිරීම වැනි දේ අනිෂ්ට යෙදුම් නිශ්ශබදවම සිදු කරයි."</string>
- <string name="permlab_writeSettings" msgid="2226195290955224730">"පද්ධති සැකසීම් වෙනස් කිරීම"</string>
- <string name="permdesc_writeSettings" msgid="7775723441558907181">"පද්ධති සැකසීම් දත්ත වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. අනිෂ්ට යෙදුම් ඔබගේ පද්ධති වින්‍යාස දෝෂ ගැන්විය හැක."</string>
- <string name="permlab_writeSecureSettings" msgid="204676251876718288">"ආරක්‍ෂිත පද්ධති සැකසීම් වෙනස් කරන්න"</string>
- <string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"පද්ධතියේ ආරක්‍ෂිත දත්ත වෙනස් කිරීමට උපාංගයට අවසර දෙන්න. සාමාන්‍ය උපාංග සඳහා භාවිතයට නොවේ."</string>
- <string name="permlab_writeGservices" msgid="2149426664226152185">"Google සේවා සිතියම වෙනස් කරන්න"</string>
- <string name="permdesc_writeGservices" msgid="1287309437638380229">"Google සේවා සිතියම වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා භාවිතයට නොවෙයි."</string>
- <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"ආරම්භයේදී ධාවනය කිරීම"</string>
- <string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"පද්ධතිය ඇරඹුම අවසන් වූ වහාම යෙදුම ආරම්භ වීමට යෙදුමට අවසර දෙන්න. ටැබ්ලටය ආරම්භ කිරීමට මෙමඟින් පමා කළ හැකි අතර සැමවිටම ධාවනය වන නිසා සම්පූර්ණ ටැබ්ලටයම ප්‍රමාද කිරීමට යෙදුමට අවසර දෙයි."</string>
- <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"පද්ධතිය ඇරඹුම අවසන් වූ වහාම යෙදුම ආරම්භ වීමට යෙදුමට අවසර දෙන්න. දුරකථනය ආරම්භ කිරීමට මෙමඟින් පමා කළ හැකි අතර සැමවිටම ධාවනය වන නිසා සම්පූර්ණ දුරකථනයේම ක්‍රියාකාරිත්වය ප්‍රමාද කිරීමට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_broadcastSticky" msgid="7919126372606881614">"බැඳුණු විකාශනය යැවීම"</string>
- <string name="permdesc_broadcastSticky" product="tablet" msgid="7749760494399915651">"ප්‍රචාරණයට පසුවද පවතින, ප්‍රචාරණයන් යැවීමට යෙදුමට අවසර දෙන්න. වැඩිපුර මතකය භාවිතය හේතු කොට, අධික භාවිතය මඟින් ටැබ්ලටය පමා කිරීම හෝ අස්ථිර කළ හැක."</string>
- <string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"ප්‍රචාරණයට පසුවද පවතින, ප්‍රචාරණයන් යැවීමට යෙදුමට අවසර දෙන්න. වැඩිපුර මතකය භාවිතය හේතු කොට, අධික භාවිතය මඟින් දුරකථනය පමා කිරීම හෝ අස්ථිර කළ හැක."</string>
- <string name="permlab_readContacts" msgid="8348481131899886131">"ඔබගේ සම්බන්ධතා කියවීම"</string>
- <string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"සඳහන් පුද්ගලයන් හට ඔබ ඇමතුම් ගත්, ඊ-තැපැල්, හෝ අනෙකුත් ආකාර වලින් සන්නිවේදනය කරගත් සංඛ්‍යතද ඇතුළුව, ඔබගේ ටැබ්ලටයේ ගබඩාවී ඇති සම්බන්ධතා පිළිබඳ දත්ත කියවීමට යෙදුමට අවසර දෙන්න. මෙම අවසරය මඟින් යෙදුම්වලට ඔබගේ සම්බන්ධතා පිළිබඳ දත්ත සුරැකීමට ඉඩ ලබා දෙන අතර, අනිෂ්ට යෙදුම් විසින් ඔබ නොදැනුවත්වම සම්බන්ධතා දත්ත බෙදා ගැනීමට ඉඩ ඇත."</string>
- <string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"නියමිත පුද්ගලයන් සමග ඔබ ඇමතු, ඊ-තැපැල් කළ හෝ වෙනත් ආකාරයකින් සන්නිවේදනය කළ සංඛ්‍යාතය ඇතුලත් ඔබගේ දුරකථනයේ ආචයනය කරන ලද ඔබගේ සම්බන්ධතා ගැන දත්ත කියවීමට යෙදුමට අවසර දෙන්න. ඔබගේ සම්බන්ධතා දත්ත උපස්ථ කිරීමට මෙම අවසරය යෙදුමට අවසර දෙන අතර ඔබගේ දැනුමකින් තොරව අනිෂ්ට යෙදුම් සම්බන්ධතා දත්ත බෙදාගැනීම කළ හැක."</string>
- <string name="permlab_writeContacts" msgid="5107492086416793544">"ඔබගේ සම්බන්ධතා වෙනස් කිරීම"</string>
- <string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"නියමිත පුද්ගලයන්ට ඔබ ඇමතූ, ඊ-තැපැල් කළ හෝ ඇමතුම් කළ සංඛ්‍යාත ඇතුලත් ඔබගේ ටැබ්ලටයේ ආචයනය කරන ලද සම්බන්ධතා (ලිපින) දත්ත වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. මෙම අවසරයෙන් යෙදුමට සම්බන්ධතා දත්ත මැකීමට අවසර දෙයි."</string>
- <string name="permdesc_writeContacts" product="default" msgid="589869224625163558">"සඳහන් පුද්ගලයන්ට ඔබ ඇමතූ, ඊ-තැපැල් කළ හෝ ඇමතුම් කළ සංඛ්‍යාන ඇතුලත් ඔබගේ දුරකථනයේ ආචයනය කරන ලද සම්බන්ධතා (ලිපින) දත්ත වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. මෙම අවසරයෙන් යෙදුමට සම්බන්ධතා දත්ත මැකීමට අවසර දෙයි."</string>
- <string name="permlab_readCallLog" msgid="3478133184624102739">"ඇමතුම් ලොගය කියවන්න"</string>
- <string name="permdesc_readCallLog" product="tablet" msgid="3700645184870760285">"පැමිණෙන සහ පිටවන ඇමතුම් ගැන දත්ත ඇතුළත්, ඔබගේ ටැබ්ලටයේ ඇමතුම් ලොග කියවීමට යෙදුමට අවසර දෙන්න. ඔබගේ ඇමතුම් ලොග දත්ත සුරක්ෂිත කිරීමට මෙම අවසරය යෙදුම්වලට අවසර දෙයි සහ ඔබගේ දැනුමකින් තොරව ඇමතුම් ලොග දත්ත අනිෂ්ට යෙදුම් බෙදා ගැනීම කළ හැක."</string>
- <string name="permdesc_readCallLog" product="default" msgid="5777725796813217244">"ලැබෙන සහ පිටවන ඇමතුම් පිළිබඳ දත්ත ඇතුළත්ව ඔබගේ දුරකථනයේ ඇමතුම් ලොග් කියවීමට යෙදුමට අවසර දෙන්න. මෙම අවසරය ඔබගේ ඇමතුම් ලොග් දත්ත උපස්ථ කිරීමට යෙදුමට ඉඩදෙන අතර ඔබගේ අනුදැනුමකින් තොරව අනිෂ්ට යෙදුම් විසින් ඇමතුම් ලොග් දත්ත බෙදාගැනීම කළ හැක."</string>
- <string name="permlab_writeCallLog" msgid="8552045664743499354">"ඇමතුම් ලොගය ලිවීම"</string>
- <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"ලැබෙන ඇමතුම් සහ පිටවන ඇමතුම් දත්ත ඇතුළත්ව ඔබගේ ටැබ්ලටයේ ඇමතුම් ලොගය වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. ඔබගේ ඇමතුම් ලොගය මැකීමට හෝ වෙනස් කිරීමට අනිෂ්ට යෙදුම් මෙය භාවිතා කෙරේ."</string>
- <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"පැමිණෙන සහ පිටවෙන ඇමතුම් දත්ත ඇතුළුව ඔබගේ දුරකථනයේ ඇමතුම් ලොගය වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. ඔබගේ ඇමතුම් ලොගය මැකීමට හෝ වෙනස් කිරීමට අනිෂ්ට යෙදුම් මෙය භාවිත කල හැක."</string>
- <string name="permlab_readProfile" msgid="4701889852612716678">"ඔබගේ සම්බන්ධතා පත කියවන්න"</string>
- <string name="permdesc_readProfile" product="default" msgid="5462475151849888848">"ඔබගේ නම සම්බන්ධතා තොරතුරු ආදී ඔබගේ උපාංගයේ ගබඩා වී ඇති පුද්ගලික පැතිකඩ තොරතුරු කියවීමට යෙදුමට අවසර දෙන්න. මෙහි තේරුම යෙදුමට ඔබව හඳුනා ගැනීමට හැකි වන බව සහ ඔබගේ පුද්ගලික තොරතුරු අනෙක් අයට යැවීමට ද හැකි වීමයි."</string>
- <string name="permlab_writeProfile" msgid="907793628777397643">"ඔබගේ සම්බන්ධතා පත වෙනස් කිරීම"</string>
- <string name="permdesc_writeProfile" product="default" msgid="5552084294598465899">"ඔබගේ නම සහ සම්බන්ධතා තොරතුරු වැනි ඔබගේ උපාංගයේ ආචයනය කරන ලද පුද්ගලික පැතිකඩ තොරතුරු වෙනස් කිරීමට හෝ එකතු කිරීමට යෙදුමට අවසර දෙන්න. මෙමගින් යෙදුමට ඔබව හඳුනා ගත හැකි අතර අනෙක් අයට ඔබගේ පැතිකඩ තොරතුරු යැවිය හැකි බව කියවෙයි."</string>
- <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"ඔබගේ සමාජ ප්‍රවාහය කියවන්න"</string>
- <string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"ඔබගේ සහ ඔබගේ යහළුවන්ගේ සමාජ යාවත්කාලීනයන් වෙත පිවිසීමට හෝ සමමුහුර්ත කිරීමට යෙදුමට අවසර දෙන්න. තොරතුරු බෙදා ගැනීමේ දී සැලකිලිමත් වන්න -- විශ්වාසයකින් තොරව සමාජ ජාලවල ඔබගේ සහ ඔබගේ යහළුවන් අතර සන්නිවේදන කියවීමට මෙමගින් යෙදුමට අවසර දෙයි. සටහන: සියලු සමාජ ජාලවල මෙම අවසරය බල නොකරයි."</string>
- <string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"ඔබගේ සමාජ ප්‍රවාහය වෙත ලිවීම"</string>
- <string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"ඔබගේ යහළුවන්ගේ සමාජ යාවත්කාලීනයන් පෙන්වීමට යෙදුමට අවසර දෙන්න. තොරතුරු බෙදා ගැනීමේදී සැලකිලිමත් වන්න -- යහළුවෙක්ගෙන් පැමිණෙන ලෙස පණිවිඩ නිපදවීමට මෙමඟින් යෙදුමට අවසර දෙන්න. සටහන : සියලු සමාජ ජාල සඳහා මෙම අවසරය බල නොදෙයි."</string>
- <string name="permlab_readCalendar" msgid="5972727560257612398">"දින දර්ශනයේ සිදුවීම් සහ රහසිගත තොරතුරු කියවීම"</string>
- <string name="permdesc_readCalendar" product="tablet" msgid="4216462049057658723">"ඔබගේ ටැබ්ලටය තුල ගබඩා කර ඇති මිතුරන්ගේ සහ එක්ව ක්‍රියාකරන්නන්ගේ ද ඇතුළුව සියලුම දින දර්ශන සිද්ධි කියවීමට යෙදුමට අවසර දෙන්න. මෙය රහස්‍යභාවය හෝ සංවේදීතාවය නොසලකා ඔබගේ දින දර්ශන දත්ත බෙදා ගැනීමට හෝ සුරැකීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_readCalendar" product="default" msgid="7434548682470851583">"යහළුවන් සහ සමකාලිනයන් ඇතුලත් ඔබගේ දුරකථනයේ ආචයනය කරන ලද සියලු දින දර්ශන සිදුවීම් කියවීමට යෙදුමට අවසර දෙන්න. විශ්වාසයකින් හෝ සංවේදීතාවකින් තොරව ඔබගේ දින දර්ශන දත්ත බෙදා ගැනීමට හෝ උපස්ථ කිරීමට මෙමගින් යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_writeCalendar" msgid="8438874755193825647">"දින දර්ශන සිද්ධි එකතු කිරීම හෝ වෙනස් කිරීමක් සිදුකර හිමිකරුගේ දැනීමකින් තොරව අමුත්තන්ට ඊ-තැපෑලක් යවීම"</string>
- <string name="permdesc_writeCalendar" product="tablet" msgid="6679035520113668528">"යහළුවන් හෝ එකට-වැඩකරන්නන් ඇතුළත්ව ඔබට ටැබ්ලටයේ වෙනස් කළ හැකි සිද්ධි එකතු කිරීමට, ඉවත් කිරීමට, වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. මෙමඟින් දින දර්ශන හිමිකරුවන්ගෙන් පණිවිඩ යවන පරිදි මෙන් මවාපෑමට හෝ හිමිකරුගේ අනුදැනුමකින් තොරව සිද්ධි වෙනස් කිරීමට යෙදුමට අවසර ලැබේ."</string>
- <string name="permdesc_writeCalendar" product="default" msgid="2324469496327249376">"ඔබගේ යහළුවන් හෝ සමකාලීනයන් ඇතුළත් ඔබගේ දුරකථනයේ ඔබට වෙනස් කළ හැකි සිදු වීම් එකතු කිරීමට, ඉවත් කිරීමට, වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. මෙමගින් දින දර්ශන හිමිකරුවන්ගෙන් පැමිණෙන සේ පෙනෙන පණිවිඩ යැවීමට හෝ හිමිකරුගේ දැනුමකින් තොරව සිදුවීම් වෙනස් කිරීමට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_accessMockLocation" msgid="8688334974036823330">"පරීක්ෂණ සඳහා ආදර්ශ ස්ථාන මූලාශ්‍ර"</string>
- <string name="permdesc_accessMockLocation" msgid="5808711039482051824">"පරීක්ෂණයට ව්‍යාජ ස්ථාන මූලාශ්‍ර සාදන්න හෝ නව ස්ථාන සැපයුම්කරුවෙකු ස්ථාපනය කරන්න. GPS හෝ ස්ථාන සැපයුම්කරුවන් ආදී වෙනත් ස්ථාන මූලාශ්‍ර විසින් ලබා දෙන ස්ථානය සහ/හෝ තත්වය ප්‍රතිස්ථාපනය කිරීමට යෙදුමට මෙය අවසර දෙයි."</string>
- <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"අමතර ස්ථාන සැපයුම්කරු විධාන වෙත ප්‍රවේශ වීම"</string>
- <string name="permdesc_accessLocationExtraCommands" msgid="5945166642335800763">"අමතර ස්ථාන සැපයුම්කරු විධාන වෙත පිවිසීමට යෙදුමට අවසර දෙන්න. GPS හෝ වෙනත් ස්ථාන මූලාශ්‍ර ක්‍රියාවලි වෙත බාධා කිරීමට මෙය අවසර දෙයි."</string>
- <string name="permlab_installLocationProvider" msgid="6578101199825193873">"ස්ථාන සැපයුම්කරුවෙකු ස්ථාපනයට අවසරය දෙන්න"</string>
- <string name="permdesc_installLocationProvider" msgid="9066146120470591509">"පරීක්ෂණයට ව්‍යාජ ස්ථාන මූලාශ්‍ර සාදන්න හෝ නව ස්ථාන සැපයුම්කරුවෙකු ස්ථාපනය කරන්න. GPS හෝ ස්ථාන සැපයුම්කරුවන් ආදී වෙනත් ස්ථාන මූලාශ්‍ර විසින් ලබා දෙන ස්ථානය සහ/හෝ තත්ත්වය ප්‍රතිස්ථාපනය කිරීමට යෙදුමට මෙය අවසර දෙයි."</string>
- <string name="permlab_accessFineLocation" msgid="1191898061965273372">"නිවැරදි ස්ථානය (GPS සහ ජාලය පදනම් කරගත්)"</string>
- <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"ගෝලීය ස්ථානීය පද්ධතිය (GPS) හෝ සෙල් කුළුණු සහ Wi-Fi වැනි ජාල ස්ථානීය ප්‍රභව භාවිතයෙන් ඔබගේ නිවැරදි ස්ථානය ලබාගැනීමට යෙදුම අවසර දෙන්න. යෙදුම් වලට ස්ථානීය සේවා භාවිතා කිරීමට ඒවා සක්‍රිය විය යුතු වේ. ඔබව සොයා ගැනීමට යෙදුම් මෙය භාවිතා කරන අතර අමතර බැටරි බලයක්ද පරිභෝජනය කරයි."</string>
- <string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"ආසන්නතම ස්ථානය (ජාලය-පාදක වූ)"</string>
- <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"ඔබගේ දළ ස්ථානය ලබාගැනීමට යෙදුමට අවසර දෙන්න. සන්නේවේදන කුළුණු සහ Wi-Fi ආදී ජාල ස්ථාන මූලාශ්‍ර භාවිත කරන ස්ථාන සේවා විසින් මෙම ස්ථානය ව්‍යුත්පන්න කර ඇත. යෙදුමට භාවිතය සඳහා මෙම ස්ථාන සේවා සක්‍රිය කළ යුතු අතර ඔබගේ උපාංගය සඳහා පැවතිය යුතුය. ඔබ සිටින තැන දළව හඳුනා ගැනීමට යෙදුම් වලට මෙය භාවිත කළ හැකිය."</string>
- <string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"SurfaceFlinger වෙත ප්‍රවේශය"</string>
- <string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"SurfaceFlinger පහල මට්ටමේ විශේෂාංග භාවිතයට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_readFrameBuffer" msgid="6690504248178498136">"රාමු අන්තරාචය කියවීම"</string>
- <string name="permdesc_readFrameBuffer" msgid="4937405521809454680">"රාමු අන්තරාචයනයෙන් අන්තර්ගතයන් කියවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_accessInputFlinger" msgid="5348635270689553857">"InputFlinger වෙත පිවිසෙන්න"</string>
- <string name="permdesc_accessInputFlinger" msgid="2104864941201226616">"InputFlinger පහල මට්ටමේ විශේෂාංග භාවිතයට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"Wifi සංදර්ශක වින්‍යාස කරන්න"</string>
- <string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"වින්‍යාස කිරීමට සහ Wifi සංදර්ශක වෙත සම්බන්ධ වීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"Wifi සංදර්ශක පාලනය"</string>
- <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"Wifi සංදර්ශකයේ පහළ මට්ටමේ විශේෂාංග පාලනයට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_captureAudioOutput" msgid="6857134498402346708">"ශබ්ද ප්‍රතිදානය ග්‍රහණය"</string>
- <string name="permdesc_captureAudioOutput" msgid="6210597754212208853">"යෙදුමට ශබ්ද ප්‍රතිදානය ග්‍රහණය කර හරවා යැවීමට ඉඩ දේ."</string>
- <string name="permlab_captureVideoOutput" msgid="2246828773589094023">"වීඩියෝ ප්‍රතිදානය"</string>
- <string name="permdesc_captureVideoOutput" msgid="359481658034149860">"යෙදුමට වීඩියෝ ප්‍රතිදානය ග්‍රහණය කර හරවා යැවීමට ඉඩ දේ."</string>
- <string name="permlab_captureSecureVideoOutput" msgid="7815398969303382016">"ආරක්‍ෂිත වීඩියෝ ප්‍රතිදානය"</string>
- <string name="permdesc_captureSecureVideoOutput" msgid="2779793064709350289">"යෙදුමට ආරක්‍ෂිත වීඩියෝ ප්‍රතිදානය ග්‍රහණය කර හරවා යැවීමට ඉඩ දේ."</string>
- <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"ඔබගේ ශ්‍රව්‍ය සැකසීම් වෙනස් කරන්න"</string>
- <string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"ශබ්දය ආදී ගෝලීය ශබ්ද සැකසීම් වෙනස් කිරීමට සහ ප්‍රතිදානය සඳහා භාවිත කරන්නේ කුමන නාදකය දැයි තේරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_recordAudio" msgid="3876049771427466323">"ශබ්ද පටිගත කරන්න"</string>
- <string name="permdesc_recordAudio" msgid="4906839301087980680">"මයික්‍රොෆෝනය මඟින් ශබ්ද පටිගත කිරීමට යෙදුමට අවසර දෙන්න. මෙම අවසරය මඟින් යෙදුමට ඕනෑම වේලාවක ඔබගේ අනුදැනුමකින් තොරව ශබ්ද පටිගත කිරීමට ඉඩ ලබා දේ."</string>
- <string name="permlab_camera" msgid="3616391919559751192">"පින්තූර සහ වීඩියෝ ගන්න"</string>
- <string name="permdesc_camera" msgid="8497216524735535009">"කැමරාවෙන් පින්තූර ගැනීමට සහ වීඩියෝ කිරීමට යෙදුමට අවසර දෙන්න. මෙම අවසරය මඟින් ඔබගේ අනුදැනුමකින් තොරව ඕනෑම වේලාවකදී කැමරාව භාවිතා කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_cameraDisableTransmitLed" msgid="2651072630501126222">"කැමරාව භාවිතයේදී LED දර්ශක සම්ප්‍රේෂණය අබල කරන්න"</string>
- <string name="permdesc_cameraDisableTransmitLed" msgid="4764585465480295341">"කැමරා භාවිතය පිළිබඳ LED දර්ශකය අක්‍රිය කිරීමට, කලින් පිහිටුවා ඇති පද්ධති යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_brick" product="tablet" msgid="2961292205764488304">"ටැබ්ලටය ස්ථිරවම අබල කිරීම"</string>
- <string name="permlab_brick" product="default" msgid="8337817093326370537">"දුරකථනය ස්ථිරව අබල කිරීම"</string>
- <string name="permdesc_brick" product="tablet" msgid="4334818808001699530">"මුළු ටැබ්ලටයම ස්ථිරවම අක්‍රිය කිරීමට යෙදුමට අවසර දෙන්න. මෙය ඉතා භයානකයි."</string>
- <string name="permdesc_brick" product="default" msgid="5788903297627283099">"මුළු දුරකථනයම ස්ථිරවම අක්‍රිය කිරීමට යෙදුමට අවසර දෙන්න. මෙය ඉතා භයානකයි."</string>
- <string name="permlab_reboot" product="tablet" msgid="3436634972561795002">"ටැබ්ලට් නැවත පණ ගැන්වීමට බල කරන්න"</string>
- <string name="permlab_reboot" product="default" msgid="2898560872462638242">"දුරකථන නැවත පණ ගැන්වීමට බල කරන්න"</string>
- <string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"ටැබ්ලටය නැවත බල ගැන්වීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_reboot" product="default" msgid="5326008124289989969">"ටැබ්ලටය නැවත ඇරඹීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"USB ආචයනය ගොනු පද්ධතිය ප්‍රවේශ කිරීම"</string>
- <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"SD පත් ගොනු පද්ධතිය ප්‍රවේශ කිරීම"</string>
- <string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"ඉවත් කළ හැකි ආචයනය සඳහා ගොනු පද්ධති ඈඳීමට සහ ගැලවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB ආචයනය මකන්න"</string>
- <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD පත මකන්න"</string>
- <string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"ඉවත් කළ හැකි ආචයන ෆෝමැට් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_asec_access" msgid="3411338632002193846">"අභ්‍යන්තර ආචයනය පිළිබඳ තොරතුරු ලබා ගැනීම"</string>
- <string name="permdesc_asec_access" msgid="3094563844593878548">"අභ්‍යන්තර ආචයනයේ තොරතුරු ලබාගැනීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_asec_create" msgid="6414757234789336327">"අභ්‍යන්තර ආචයනය නිර්මාණය"</string>
- <string name="permdesc_asec_create" msgid="4558869273585856876">"අභ්‍යන්තර ආචයනය සැදීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_asec_destroy" msgid="526928328301618022">"අභ්‍යන්තර ආචයනය විනාශ කිරීම"</string>
- <string name="permdesc_asec_destroy" msgid="7218749286145526537">"අභ්‍යන්තර ආචයනය විනාශ කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_asec_mount_unmount" msgid="8877998101944999386">"අභ්‍යන්තර ආචයනය නංවීම/ගැලවීම"</string>
- <string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"අභ්‍යන්තර ආචයනය සවි කිරීමට/ගැලවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_asec_rename" msgid="7496633954080472417">"අභ්‍යන්තර ආචයනය නැවත නම් කරන්න"</string>
- <string name="permdesc_asec_rename" msgid="1794757588472127675">"අභ්‍යන්තර ආචයනය නැවත නම් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_vibrate" msgid="7696427026057705834">"කම්පනය පාලනය කිරීම"</string>
- <string name="permdesc_vibrate" msgid="6284989245902300945">"කම්පකය පාලනයට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_flashlight" msgid="2155920810121984215">"සැණෙළි ආලෝකය පාලනය කරන්න"</string>
- <string name="permdesc_flashlight" msgid="6522284794568368310">"සැණෙළිය පාලනයට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_manageUsb" msgid="1113453430645402723">"USB උපාංග සඳහා කැමැත්ත සහ අවසර කළමනාකරණය කිරීම"</string>
- <string name="permdesc_manageUsb" msgid="7776155430218239833">"USB උපාංග සඳහා අභිරුචි සහ අවසර කළමනාකරණයට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_accessMtp" msgid="4953468676795917042">"MTP ප්‍රොටොකෝලය ක්‍රියාත්මක කිරීම"</string>
- <string name="permdesc_accessMtp" msgid="6532961200486791570">"MTP USB ප්‍රොටෝකෝලය ක්‍රියාත්මක කිරීමට කර්නල MTP ධාවකයට ප්‍රවේශ වීමට අවසර දෙන්න."</string>
- <string name="permlab_hardware_test" msgid="4148290860400659146">"දෘඩාංග පරීක්ෂණය කරන්න"</string>
- <string name="permdesc_hardware_test" msgid="6597964191208016605">"දෘඩාංග පරීක්ෂා කිරීමේ අරමුණ සඳහා යෙදුමට විවිධ පර්යන්ත පාලනය කිරීමට ඉඩ දෙන්න."</string>
- <string name="permlab_callPhone" msgid="3925836347681847954">"දුරකථන අංක වෙත ඍජුවම අමතන්න"</string>
- <string name="permdesc_callPhone" msgid="3740797576113760827">"ඔබගේ මැදිහත් වීමක් නොමැතිව දුරකථන අංක ඇමතීමට යෙදුමට අවසර දෙන්න. මෙහි ප්‍රතිඑලය වන්නේ අනපේක්ෂිත අයකිරීම් හෝ ඇමතුම් ඇතිවීමයි. මෙයන් හදිසි අංක වලට ඇමතුම් ගැනීමට යෙදුමට අවසර නොදෙන බවට සටහන් කරගන්න. ඔබගේ අනුදැනුමක් නොමැතිව ඇමතුම් ගැනීමෙන් අනිෂ්ට යෙදුම් ඔබගේ මුදල් නිකරුණේ වැය කරයි."</string>
- <string name="permlab_callPrivileged" msgid="4198349211108497879">"ඕනෑම දුරකථන අංකයකට ඍජුවම අමතන්න"</string>
- <string name="permdesc_callPrivileged" msgid="1689024901509996810">"ඔබගේ මැදිහත්වීමකින් තොරව හදිසි අංක ඇතුළත්ව ඕනෑම දුරකථන අංකයකට ඇමතීමට යෙදුමට අවසර දෙන්න. හදිසි සේවා වෙත අනවශ්‍ය සහ නීතිමය නොවන ඇමතුම ලැබීමට අනිෂ්ට යෙදුම සිදු කළ හැක."</string>
- <string name="permlab_performCdmaProvisioning" product="tablet" msgid="4842576994144604821">"CDMA ටැබ්ලට පිහිටුම සෘජුව ඇරඹීම"</string>
- <string name="permlab_performCdmaProvisioning" product="default" msgid="5604848095315421425">"CDMA දුරකථන පිහිටුම සෘජුව ඇරඹීම"</string>
- <string name="permdesc_performCdmaProvisioning" msgid="1994193538802314186">"යෙදුමට CDMA ප්‍රතිපාදන ආරම්භ කිරීමට ඉඩදෙන්න. අනිෂ්ට යෙදුම් අනවශ්‍ය ලෙස CDMA ප්‍රතිපාදන ආරම්භ කළ හැක."</string>
- <string name="permlab_locationUpdates" msgid="7785408253364335740">"ස්ථාන යාවත්කාලීන දැනුම්දීම් පාලනය කරන්න"</string>
- <string name="permdesc_locationUpdates" msgid="1120741557891438876">"ස්ථානීය යාවත්කාලින දැනුම්දීම් රේඩියෝවෙන් සබල/අබල කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වල භාවිතය සඳහා නොවේ."</string>
- <string name="permlab_checkinProperties" msgid="7855259461268734914">"පිරික්සුම් ගුණාංග වෙත ප්‍රවේශය"</string>
- <string name="permdesc_checkinProperties" msgid="4024526968630194128">"පිරික්සුම් සේවාව මගින් උත්ශ්‍රේණි කළ ගුණාංග වෙත කියවීම්/ලිවීම් පිවිසුම සඳහා යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් වල භාවිතයට නොවේ."</string>
- <string name="permlab_bindGadget" msgid="776905339015863471">"විජට් තෝරන්න"</string>
- <string name="permdesc_bindGadget" msgid="8261326938599049290">"කුමන විජටය කුමන යෙදුමෙන් භාවිතා කල හැකිද යන්න පද්ධතියට පැවසීමට යෙදුමට අවසර දෙන්න. මෙම අවසරය ඇති යෙදුමකට අනෙක් යෙදුම්වලට පුද්ගලික දත්ත වලට ප්‍රවේශය ලබා දිය හැක. සාමාන්‍ය යෙදුම් වල භාවිතයට නොවේ."</string>
- <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"දුරකථනයේ තත්වය වෙනස් කිරීම"</string>
- <string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"උපාංගයේ දුරකථන විශේෂාංග පාලනයට යෙදුමට අවසර දෙන්න. මෙම අවසරය ඇති යෙදුමට ඔබට නිවේදනයෙන් තොරව ජාල මාරු කිරීම, දුරකථන රේඩියෝව සක්‍රිය සහ අක්‍රිය කිරීම කළ හැක."</string>
- <string name="permlab_readPhoneState" msgid="9178228524507610486">"දුරකථනයේ තත්වය සහ අනන්‍යතාවය කියවීම"</string>
- <string name="permdesc_readPhoneState" msgid="1639212771826125528">"උපාංගයේ දුරකථන විශේෂාංග වෙත පිවිසීමට යෙදුමට අවසර දෙන්න. ඇමතුම සක්‍රිය වුවත් සහ ඇමතුමකින් දුරස්ථ අංකය සම්බන්ධ වුවත් දුරකථන අංකය සහ උපාංග ID හඳුනා ගැනීමට මෙම අවසරය යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"ටැබ්ලටය නින්දෙන් වැළක්වීම"</string>
- <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"දුරකථනය නින්දට යාමෙන් වළකන්න"</string>
- <string name="permdesc_wakeLock" product="tablet" msgid="7311319824400447868">"ටැබ්ලටය නින්දට යාමෙන් වැලැක්වීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_wakeLock" product="default" msgid="8559100677372928754">"දුරකථනය නින්දට යාමෙන් වැලැක්වීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_devicePower" product="tablet" msgid="2787034722616350417">"ටැබ්ලටය සක්‍රිය හෝ අක්‍රිය කරන්න"</string>
- <string name="permlab_devicePower" product="default" msgid="4928622470980943206">"දුරකථනය බල ගැන්වීම හෝ වැසීම"</string>
- <string name="permdesc_devicePower" product="tablet" msgid="6689862878984631831">"ටැබ්ලටය සක්‍රිය හෝ අක්‍රිය කිරීමට යෙදුමට අවසර දේ."</string>
- <string name="permdesc_devicePower" product="default" msgid="6037057348463131032">"දුරකථනය සක්‍රිය සහ අක්‍රිය කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_factoryTest" msgid="3715225492696416187">"කර්මාන්තශාලා පරීක්ෂණ ආකාරය තුළ ධාවනය කරන්න"</string>
- <string name="permdesc_factoryTest" product="tablet" msgid="3952059318359653091">"ටැබ්ලටයේ දෘඩාංග වෙත සම්පූර්ණ පිවිසුම සඳහා අවසර දීමෙන් පහළ මට්ටමේ නිපැවුම්කරු පරීක්ෂණයක් ලෙස ධාවනය කරන්න. නිපැවුම්කරු පරීක්ෂණ ආකාරයෙන් ටැබ්ලටයේ ධාවනය වන විට පමණි."</string>
- <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"දුරකථනයේ දෘඩාංග වෙත සම්පූර්ණ පිවිසුම සඳහා අවසර දීමෙන් පහළ මට්ටමේ නිපැවුම්කරු පරීක්ෂණයක් ලෙස ධාවනය කරන්න. නිපැවුම්කරු පරීක්ෂණ ආකාරයෙන් දුරකථනයේ ධාවනය වන විට පමණි."</string>
- <string name="permlab_setWallpaper" msgid="6627192333373465143">"බිතුපත සැකසීම"</string>
- <string name="permdesc_setWallpaper" msgid="7373447920977624745">"පද්ධති බිතුපත සැකසීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ඔබගේ බිතුපතේ ප්‍රමාණය සැකසීම"</string>
- <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"පද්ධති බිතුපතේ ප්‍රමාණ ඉඟි සකස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_masterClear" msgid="2315750423139697397">"කර්මාන්තශාලා සුපුරුද්දට පද්ධතිය නැවත සකස් කිරීම"</string>
- <string name="permdesc_masterClear" msgid="3665380492633910226">"සියලු දත්ත මැකීමෙන්, වින්‍යාස කිරීමෙන් සහ යෙදුම් ස්ථාපනයෙන් එහි කර්මාන්ත ශාලා සැකසීම් වෙත පද්ධතිය නැවත සැකසීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_setTime" msgid="2021614829591775646">"වේලාව සැකසීම"</string>
- <string name="permdesc_setTime" product="tablet" msgid="1896341438151152881">"ටැබ්ලට ඔරලෝසුවේ වේලාව වෙනස් කිරීමට යෙදුමට ඉඩ දෙන්න."</string>
- <string name="permdesc_setTime" product="default" msgid="1855702730738020">"දුරකථන ඔරලෝසුවේ වේලාව වෙනස් කිරීමට යෙදුමකට ඉඩ දෙන්න."</string>
- <string name="permlab_setTimeZone" msgid="2945079801013077340">"වේලා කලාපය සැකසීම"</string>
- <string name="permdesc_setTimeZone" product="tablet" msgid="1676983712315827645">"ටැබ්ලටයේ කාල කලාපය වෙනස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"දුරකථනයේ වේලා කලාපය වෙනස් කිරීමට උපාංගයට අවසර දෙන්න."</string>
- <string name="permlab_accountManagerService" msgid="4829262349691386986">"AccountManagerService ලෙස පෙනී සිටින්න"</string>
- <string name="permdesc_accountManagerService" msgid="1948455552333615954">"AccountAuthenticators වෙත ඇමතුම් ගැනීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_getAccounts" msgid="1086795467760122114">"උපාංගයේ ඇති ගිණුම් සොයන්න"</string>
- <string name="permdesc_getAccounts" product="tablet" msgid="2741496534769660027">"ටැබ්ලටය විසින් දන්නා ගිණුම් ලැයිස්තුවක් ලබාගැනීමට යෙදුමට අවසර දෙන්න. ඔබ ස්ථාපනය කොට ඇති යෙදුම් විසින් සාදා ඇති ගිණුම් මීට ඇතුළත් වේ."</string>
- <string name="permdesc_getAccounts" product="default" msgid="3448316822451807382">"දුරකථනය විසින් දන්නා ගිණුම් ලැයිස්තුවක් ලබාගැනීමට යෙදුමට අවසර දෙන්න. ඔබ ස්ථාපනය කොට ඇති යෙදුම් විසින් සාදා ඇති ගිණුම් මීට ඇතුළත් වේ."</string>
- <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"ගිණුම් සාදන්න සහ මුරපද සකසන්න"</string>
- <string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"ගිණුම් සැදීමට සහ රහස් පද ලබාගැනීම සහ සැකසීම් කිරීම ඇතුළත්ව AccountManager ගේ ගිණුම් සත්‍යාපන හැකියාවන් භාවිතා කිරීමට යෙදුමකට අවසර දෙන්න."</string>
- <string name="permlab_manageAccounts" msgid="4983126304757177305">"ගිණුම් එකතු කරන්න හෝ ඉවත් කරන්න"</string>
- <string name="permdesc_manageAccounts" msgid="8698295625488292506">"ගිණුම් එකතු කිරීම, සහ ඉවත් කිරීම සහ ඔවුන්ගේ මුරපද මැකීම ආදී ක්‍රියාවලි සිදු කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_useCredentials" msgid="235481396163877642">"උපාංගයේ ඇති ගිණුම් භාවිතා කිරීම"</string>
- <string name="permdesc_useCredentials" msgid="7984227147403346422">"සත්‍යාපන ටෝකන ඉල්ලීම සඳහා යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ජාල සම්බන්ධතාවයන් බැලීම"</string>
- <string name="permdesc_accessNetworkState" msgid="8318964424675960975">"කුමන ජාල පවතින්නේ ද සහ සම්බන්ධිත ද ආදී ජාල සබඳතා ගැන තොරතුරු බැලීමට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_createNetworkSockets" msgid="8018758136404323658">"සම්පූර්ණ ජාල ප්‍රවේශය"</string>
- <string name="permdesc_createNetworkSockets" msgid="3403062187779724185">"උපකරණයට ජාල කෙවනියන් සැදීමට සහ ජාල ප්‍රොටෝකෝල අභිරුචි භාවිතා කිරීමට උපකරණයට ඉඩ දෙන්න. අන්තර්ජාලයට දත්ත යැවීමට විධියන් බ්‍රව්සරය සහ අනෙකුත් යෙදුම් සපයයි, එනිසා මෙම අවසරය දත්ත අන්තර්ජාලයට යැවීමට අවශ්‍ය නොවේ."</string>
- <string name="permlab_writeApnSettings" msgid="505660159675751896">"ජාලයේ සැකසීම් සහ ගමනාගමන වෙනස් කරන්න/අල්ලා ගැනීම"</string>
- <string name="permdesc_writeApnSettings" msgid="5333798886412714193">"ඕනෑම APN එකක නියුතුව සහ තොට වෙනස් කිරීම වැනි ජාල සැකසීම් වෙනස් කිරීමට සහ සියලුම ජාල අතුරු ඇරීමට සහ සෝදිසි කිරීමට යෙදුමට අවසර දෙන්න. ඇතැම්විට ඔබගේ අනුදැනුමකින් තොරව අනිෂ්ට උපාංග ජාල පැකැට්ටු අධීක්ෂණය,ආපසු දිශාගත කිරීම හෝ වෙනස්කිරීම සිදු කිරීමට ඉඩ තිබේ."</string>
- <string name="permlab_changeNetworkState" msgid="958884291454327309">"ජාල සම්බන්ධතාව වෙනස් කිරීම"</string>
- <string name="permdesc_changeNetworkState" msgid="6789123912476416214">"ජාල සම්බන්ධතාවයේ තත්වය වෙනස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_changeTetherState" msgid="5952584964373017960">"ටෙදර් කරන ලද සම්බන්ධතා වෙනස් කිරීම"</string>
- <string name="permdesc_changeTetherState" msgid="1524441344412319780">"ටෙදර් කළ ජාල සම්බන්ධතාවයේ තත්වය වෙනස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"පසුබිම් දත්ත භාවිත සැකසීම් වෙනස් කිරීම"</string>
- <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"පසුබිම් දත්ත භාවිතා සැකසීම වෙනස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi සම්බන්ධතාවන් බැලීම"</string>
- <string name="permdesc_accessWifiState" msgid="5002798077387803726">"Wi-Fi සබල බව සහ සම්බන්ධිත Wi-Fi උපාංග වල නම් ආදී Wi-Fi ජාලකරණයේ තොරතුරු බැලීමට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_changeWifiState" msgid="6550641188749128035">"Wi-Fi වලට සම්බන්ධ විම සහ විසන්ධි කිරීම"</string>
- <string name="permdesc_changeWifiState" msgid="7137950297386127533">"Wi-Fi ප්‍රවේශ ස්ථානයන් වෙත සම්බන්ධ වීමට සහ විසන්ධි වීමට සහ, Wi-Fi ජාල සඳහා උපාංගයේ වින්‍යාසයට වෙනස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fi බහුවිකාශන පිළිගැනීමට අවසර දෙන්න"</string>
- <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"ඔබගේ ටැබ්ලටයට පමණක් නොව Wi-Fi ජාලයේ ඇති සියලුම උපාංගවලට යැවූ පැකැට්ටු බහු විකාශ ලිපින භාවිතයෙන් ලබාගැනීමට යෙදුමට අවසර දෙන්න. non-multicast ආකාරයට වඩා වැඩි බලයක් මෙහිදී භාවිතා වේ."</string>
- <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"ඔබගේ දුරකථනයට පමණක් නොව Wi-Fi ජාලයේ ඇති සියලුම යෙදුම්වලට යැවූ පැකැට්ටු බහුවාහක ලිපින භාවිතයෙන් ලබාගැනීමට යෙදුමට අවසර ලැබේ. බහුවාහක නැති ආකාරයට වඩා වැඩි බලයක් මෙහිදී භාවිතා වේ."</string>
- <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"බ්ලූටූත් සැකසීම් ප්‍රවේශය"</string>
- <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"ස්ථානීය බ්ලූටූත් ටැබ්ලට්යක් සැකසීමට සහ වින්‍යාස කිරීමට සහ දුරස්ථ උපාංග සමග යුගළ කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"දුරකථනයේ පෙදෙසි බ්ලූටූත් වින්‍යාස කිරීමට, සහ දුරස්ථ උපාංග ගවේෂණයට සහ යුගල වීමට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_accessWimaxState" msgid="4195907010610205703">"WiMAX වෙතට සම්බන්ධ කරන්න හෝ විසන්ධි කරන්න"</string>
- <string name="permdesc_accessWimaxState" msgid="6360102877261978887">"WiMAX සබල බව සහ සම්බන්ධිත ඕනෑම WiMAX ජාලයක තොරතුරු නිශ්චය කිරීමට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX තත්වය වෙනස් කරන්න"</string>
- <string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"ටැබ්ලටය WiMAX ජාල වෙත සම්බන්ධ කිරීමට සහ විසන්ධි කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_changeWimaxState" product="default" msgid="697025043004923798">"WiMAX ජාලයන්ට දුරකථනය සම්බන්ධ කිරීමට සහ විසන්ධි කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_bluetooth" msgid="6127769336339276828">"බ්ලූටූත් උපාංග සමඟ යුගල කිරීම"</string>
- <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"ටැබ්ලටයේ බ්ලූටූත් වින්‍යාසය බැලිමට, සැකසීමට සහ යුගල කළ උපාංග සමඟ සම්බන්ධතාවන් පිළිගැනීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"දුරකථනයේ බ්ලූටූත් වින්‍යාසය දැකීමට, යුගල උපාංග සමඟ සම්බන්ධතාවන් සැකසීමට සහ භාරගැනීමට යෙදුමට අවසර දෙයි."</string>
- <string name="permlab_nfc" msgid="4423351274757876953">"ආසන්න ක්ෂේත්‍ර සන්නිවේදනය පාලනය කරන්න"</string>
- <string name="permdesc_nfc" msgid="7120611819401789907">"ආසන්න ක්ෂේත්‍ර සන්නිවේදන (NFC) ටැග්, පත්, සහ කියවන්නන් සමඟ සන්නිවේදනය කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_disableKeyguard" msgid="3598496301486439258">"ඔබගේ තිරයේ අගුල අබල කරන්න"</string>
- <string name="permdesc_disableKeyguard" msgid="6034203065077122992">"යතුරු අගුල සහ ඕනෑම සම්බන්ධිත මුරපද ආරක්ෂාවක් අබල කිරීමට යෙදුමට අවසර දෙන්න. මෙහි උදාහරණයක් වන්නේ පැමිණෙන ඇමතුමක් ලැබෙද්දී, දුරකථනය අක්‍රිය වන අතර ඇමතුම අවසාන වන විට යතුරු අගුල නැවත සක්‍රිය වෙයි."</string>
- <string name="permlab_readSyncSettings" msgid="6201810008230503052">"සමමුහුර්ත සැකසීම් කියවන්න"</string>
- <string name="permdesc_readSyncSettings" msgid="2706745674569678644">"ගිණුම සඳහා සමමුහුර්ත සැකසීම් කියවීමට යෙදුමට අවසර දෙන්න. උදාහරණයක් ලෙස, ගිණුමක් සමඟ පුද්ගල යෙදුම සමමුහුර්ත දැයි මෙයට හඳුනා ගත හැක."</string>
- <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"සමමුහුර්ත කිරීම සක්‍රිය කරන්න සහ අක්‍රිය කරන්න"</string>
- <string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"ගිණුම සඳහා සමමුහුර්ත සැකසීම් වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. උදාහරණයක් ලෙස, ගිණුම සමඟ පුද්ගල යෙදුම සමමුහුර්ත කිරීම සක්‍රිය කිරීමට භාවිත කල හැක."</string>
- <string name="permlab_readSyncStats" msgid="7396577451360202448">"සමමුහුර්ත කිරීමේ සංඛ්‍යාන කියවීම"</string>
- <string name="permdesc_readSyncStats" msgid="1510143761757606156">"සමමුහුර්ත කිරීමේ සිදුවීම් ඉතිහාසය සහ කෙතරම් දත්ත සමමුහුර්ත වී ඇතිදැයි ඇතුලත් ගිණුම සඳහා සමමුහුර්ත කිරීමේ සංඛ්‍යාන කියවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"දායක වූ සංග්‍රහ කියවීම"</string>
- <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"වර්තමාන සමමුහුර්ත සංග්‍රහ ගැන විස්තර ලැබීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"දායක වූ සංග්‍රහ ලිවීම"</string>
- <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"ඔබගේ වර්තමාන සමමුහුර්ත සංග්‍රහ වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. ඔබගේ සමමුහුර්ත සංග්‍රහ අනිෂ්ට යෙදුම්වලින් වෙනස් කල හැක."</string>
- <string name="permlab_readDictionary" msgid="4107101525746035718">"ඔබ විසින් ශබ්දකෝෂයට ඇතුළත්කොට ඇති කොන්දේසි කියවීම"</string>
- <string name="permdesc_readDictionary" msgid="659614600338904243">"පරිශීලක ශබ්ද කෝෂයේ පරිශීලකයන් විසින් ගබඩා කර තිබිය හැකි වචන, නම්, වාක්‍යංශ කියවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_writeDictionary" msgid="2183110402314441106">"පරිශීලකයින් අර්ථ දැක්වූ ශබ්ද කෝෂයට වචන එකතු කිරීම"</string>
- <string name="permdesc_writeDictionary" msgid="8185385716255065291">"පරිශීලක ශබ්දකෝෂය තුළට අලුත් වචන ලිවීමට යෙදුමට ඉඩ දෙන්න."</string>
- <string name="permlab_sdcardRead" product="nosdcard" msgid="8235341515605559677">"ආරක්‍ෂිත ආචයනය වෙත ප්‍රවේශය පරීක්ෂා කිරීම"</string>
- <string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"ආරක්‍ෂිත ආචයනය වෙත ප්‍රවේශය පරීක්ෂා කිරීම"</string>
- <string name="permdesc_sdcardRead" product="nosdcard" msgid="3642473292348132072">"අනාගත උපාංගවල ලබාගත හැකි USB ආචයනය සඳහා අවසරයක් පරීක්ෂා කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_sdcardRead" product="default" msgid="5914402684685848828">"අනාගත උපාංගවල පැවතෙන SD කාඩ් පත සඳහා අවසරයක් පිරික්සීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"ඔබගේ USB ආචයනයේ අන්තර්ගත වෙනස් කිරීම හෝ මැකීම"</string>
- <string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"ඔබගේ SD පතේ අන්තර්ගත වෙනස් කිරීම හෝ මැකීම"</string>
- <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"USB ආචයනය වෙත ලිවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"SD පත වෙත ලිවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"අභ්‍යන්තර මාධ්‍ය ආචයනය අන්තර්ගත වෙනස් කරන්න/ මකන්න"</string>
- <string name="permdesc_mediaStorageWrite" product="default" msgid="8189160597698529185">"අභ්‍යන්තර මාධ්‍ය ආචයනයේ අන්තර්ගතය වෙනස් කිරීමට උපාංගයට අවසර දෙන්න."</string>
- <string name="permlab_manageDocs" product="default" msgid="5778318598448849829">"ලේඛන ආචයනය කළමනාකරණය කරන්න"</string>
- <string name="permdesc_manageDocs" product="default" msgid="8704323176914121484">"ලේඛන ආචයනය කළමනාකරණය කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_sdcardAccessAll" msgid="8150613823900460576">"සියලුම පරිශීලකයන්ගේ බාහිර ආචයන වෙත පිවිසෙන්න"</string>
- <string name="permdesc_sdcardAccessAll" msgid="3215208357415891320">"සියලු පරිශීලකයන් සඳහා බාහිර ආචයනය වෙත පිවිසීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_cache_filesystem" msgid="5656487264819669824">"හැඹිලි ගොනු පද්ධතියට ප්‍රවේශ වීම"</string>
- <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"හැඹිලි ගොනු පද්ධති කියවීමට සහ ලිවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_use_sip" msgid="5986952362795870502">"අන්තර්ජාල ඇමතුම් ගන්න/ලබන්න"</string>
- <string name="permdesc_use_sip" msgid="4717632000062674294">"අන්තර්ජාල ඇමතුම් ගැනීමට/ලැබීමට SIP සේවාව භාවිතයට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_readNetworkUsageHistory" msgid="7862593283611493232">"ඉතිහාසගත ජාල භාවිතය කියවන්න"</string>
- <string name="permdesc_readNetworkUsageHistory" msgid="7689060749819126472">"විශේෂිත ජාල සහ යෙදුම් සඳහා ඉතිහාසගත ජාල භාවිතය කියවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_manageNetworkPolicy" msgid="2562053592339859990">"ජාල ප්‍රතිපත්තිය කළමනාකරණය කිරීම"</string>
- <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"ජාල කොන්දේසි සහ සඳහන් යෙදුම් විශේෂීත රීති කළමනාකරණය කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"ජාල භාවිත ගිණුම් කිරීම වෙනස් කිරීම"</string>
- <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"යෙදුම්වලට ජාල භාවිතයෙන් වන බලපෑම කෙසේද යන්න වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වල භාවිතය සඳහා නොවේ."</string>
- <string name="permlab_markNetworkSocket" msgid="3658527214914959749">"කෙවෙනි ලකුණු වෙනස් කරන්න"</string>
- <string name="permdesc_markNetworkSocket" msgid="7655568433696356578">"මාර්ගගත වීම සඳහා කෙවෙනියේ ලකුණු වෙනස් කිරීමට යෙදුමට ඉඩ දෙන්න"</string>
- <string name="permlab_accessNotifications" msgid="7673416487873432268">"ප්‍රවේශ දැනුම්දීම්"</string>
- <string name="permdesc_accessNotifications" msgid="458457742683431387">"වෙනත් යෙදුම් විසින් කළ පල කිරීම්ද ඇතුළත්ව දැන්වීම් ලබා ගැනීමට, පරීක්ෂා කිරීමට සහ හිස් කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_bindNotificationListenerService" msgid="7057764742211656654">"දැනුම්දීම ඇහුම්කන් දීම් සේවාවක් වෙත බඳින්න"</string>
- <string name="permdesc_bindNotificationListenerService" msgid="985697918576902986">"දැනුම්දීම් අසන්නාගේ සේවාවේ ඉහළ මට්ටමේ අතුරුමුහුණතට බැඳීමට දරන්නාට අවසර දේ. සාමාන්‍ය යෙදුම් සඳහා කිසිසේත් අවශ්‍ය නොවේ."</string>
- <string name="permlab_invokeCarrierSetup" msgid="3699600833975117478">"වාහකය සැපයු වින්‍යාසය යෙදුම ඉල්ලා සිටින්න"</string>
- <string name="permdesc_invokeCarrierSetup" msgid="4159549152529111920">"වාහකයා ලබාදුන් සැකසුම් යෙදුම් උත්පාදනයට ධාරකයාට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිදා අවශ්‍ය නොවෙයි."</string>
- <string name="permlab_accessNetworkConditions" msgid="8206077447838909516">"ජාල තත්ව මත නිරීක්ෂණ වෙත ඇහුම්කන් දීම"</string>
- <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"යෙදුමකට ජාල තත්ව මත නිරීක්ෂණ වෙත ඇහුම්කන් දීමට අවසර දේ. සාමාන්‍ය යෙදුම් සඳහා කිසිදා අවශ්‍ය නොවේ."</string>
- <string name="policylab_limitPassword" msgid="4497420728857585791">"මුරපද නීති සකස් කිරීම"</string>
- <string name="policydesc_limitPassword" msgid="3252114203919510394">"තිරය අගුළු ඇරීමේ මුරපදයට අනුමත අකුරු සහ දිග පාලනය කරන්න."</string>
- <string name="policylab_watchLogin" msgid="914130646942199503">"තිරය අගුළු ඇරීමේ උත්සාහයන් නිරීක්ෂණය කරන්න"</string>
- <string name="policydesc_watchLogin" product="tablet" msgid="3215729294215070072">"තිරය අගුළු හැරීමේදී වැරදියට ටයිප් කළ මුරපද ගණන නිරීක්ෂණය කරන්න සහ ටැබ්ලටය අගුළු දමන්න හෝ වැරදි මුරපද බොහෝ ගණනක් ටයිප් කර ඇති නම් ටැබ්ලටයේ සියලු දත්ත මකන්න."</string>
- <string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"තිරය අගුළු හැරීමේදී වැරදියට ටයිප් කළ මුරපද ගණන නිරීක්ෂණය කරන්න සහ දුරකථනය අගුළු දමන්න හෝ වැරදි මුරපද බොහෝ ගණනක් ටයිප් කර ඇති නම් දුරකථනයේ සියලු දත්ත මකන්න."</string>
- <string name="policylab_resetPassword" msgid="2620077191242688955">"තිරය අගුළු ඇරීමේ මුරපදය වෙනස් කිරීම"</string>
- <string name="policydesc_resetPassword" msgid="605963962301904458">"තිරය අගුළු ඇරීමේ මුරපදය වෙනස් කරන්න."</string>
- <string name="policylab_forceLock" msgid="2274085384704248431">"තිරය අගුළු දැමීම"</string>
- <string name="policydesc_forceLock" msgid="1141797588403827138">"තිරයට අගුළු වැටීම සිදුවන්නේ කෙසේද සහ කවදාද යන්න පාලනය කරන්න."</string>
- <string name="policylab_wipeData" msgid="3910545446758639713">"සියලු දත්ත මකන්න"</string>
- <string name="policydesc_wipeData" product="tablet" msgid="4306184096067756876">"කර්මාන්ත ශාලා දත්ත යළි පිහිටුවීමෙන් පසුව අනතුරු ඇඟවිමකින් තොරවම ටැබ්ලට් දත්ත මකා දමයි."</string>
- <string name="policydesc_wipeData" product="default" msgid="5096895604574188391">"කර්මාන්ත ශාලා දත්ත යළි පිහිටුවීමෙන් පසුව අනතුරු ඇඟවිමකින් තොරවම දුරකථන දත්ත මකා දමයි."</string>
- <string name="policylab_setGlobalProxy" msgid="2784828293747791446">"උපාංග ගෝලීය නියුතුව සකස් කිරීම"</string>
- <string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"කොන්දේසි සක්‍රිය විට පොදු නියුතු එකක් භාවිත කරන ලෙස උපාංගය සකසන්න. පළමු උපාංග පරිපාලකයා පමණක් ඵලදායි පොදු නියුතුව සකසයි."</string>
- <string name="policylab_expirePassword" msgid="885279151847254056">"තිරය අගුළු දැමීමේ මුරපදය කල් ඉකුත්වීම සකසන්න"</string>
- <string name="policydesc_expirePassword" msgid="1729725226314691591">"තිර-අගුළේ මුරපදය වෙනස්වීම කොපමණ කාල පරාසයකින් සිදුවිය යුතුද යන්න පාලනය කිරීම."</string>
- <string name="policylab_encryptedStorage" msgid="8901326199909132915">"ආචයනයේ සංකේතනය සකස් කිරීම"</string>
- <string name="policydesc_encryptedStorage" msgid="2637732115325316992">"ආචයනය කළ යෙදුම් දත්ත සංකේතනය කිරීමට අවශ්‍යය."</string>
- <string name="policylab_disableCamera" msgid="6395301023152297826">"කැමරා අබල කිරීම"</string>
- <string name="policydesc_disableCamera" msgid="2306349042834754597">"සියලු උපාංග කැමරාවල භාවිතය වලක්වන්න."</string>
- <string name="policylab_disableKeyguardFeatures" msgid="266329104542638802">"යතුරු ආරක්ෂාවේ විශේෂාංග අබල කරන්න"</string>
- <string name="policydesc_disableKeyguardFeatures" msgid="3467082272186534614">"යතුරු ආරක්ෂාව හි සමහර විශේෂාංග භාවිතය වළක්වයි."</string>
- <string-array name="phoneTypes">
- <item msgid="8901098336658710359">"නිවස"</item>
- <item msgid="869923650527136615">"ජංගම"</item>
- <item msgid="7897544654242874543">"කාර්යාලය"</item>
- <item msgid="1103601433382158155">"කාර්යාල ෆැක්ස්"</item>
- <item msgid="1735177144948329370">"නිවසේ ෆැක්ස්"</item>
- <item msgid="603878674477207394">"පේජරය"</item>
- <item msgid="1650824275177931637">"වෙනත්"</item>
- <item msgid="9192514806975898961">"අභිරුචි"</item>
- </string-array>
- <string-array name="emailAddressTypes">
- <item msgid="8073994352956129127">"මුල් පිටුව"</item>
- <item msgid="7084237356602625604">"කාර්යාලය"</item>
- <item msgid="1112044410659011023">"වෙනත්"</item>
- <item msgid="2374913952870110618">"අභිරුචි"</item>
- </string-array>
- <string-array name="postalAddressTypes">
- <item msgid="6880257626740047286">"නිවස"</item>
- <item msgid="5629153956045109251">"කාර්යාලය"</item>
- <item msgid="4966604264500343469">"වෙනත්"</item>
- <item msgid="4932682847595299369">"අභිරුචි"</item>
- </string-array>
- <string-array name="imAddressTypes">
- <item msgid="1738585194601476694">"නිවස"</item>
- <item msgid="1359644565647383708">"කාර්යාලය"</item>
- <item msgid="7868549401053615677">"වෙනත්"</item>
- <item msgid="3145118944639869809">"අභිරුචි"</item>
- </string-array>
- <string-array name="organizationTypes">
- <item msgid="7546335612189115615">"කාර්යාලය"</item>
- <item msgid="4378074129049520373">"වෙනත්"</item>
- <item msgid="3455047468583965104">"අභිරුචි"</item>
- </string-array>
- <string-array name="imProtocols">
- <item msgid="8595261363518459565">"AIM"</item>
- <item msgid="7390473628275490700">"Windows Live"</item>
- <item msgid="7882877134931458217">"Yahoo"</item>
- <item msgid="5035376313200585242">"Skype"</item>
- <item msgid="7532363178459444943">"QQ"</item>
- <item msgid="3713441034299660749">"Google Talk"</item>
- <item msgid="2506857312718630823">"ICQ"</item>
- <item msgid="1648797903785279353">"Jabber"</item>
- </string-array>
- <string name="phoneTypeCustom" msgid="1644738059053355820">"අභිරුචි"</string>
- <string name="phoneTypeHome" msgid="2570923463033985887">"නිවස"</string>
- <string name="phoneTypeMobile" msgid="6501463557754751037">"ජංගම"</string>
- <string name="phoneTypeWork" msgid="8863939667059911633">"කාර්යාලය"</string>
- <string name="phoneTypeFaxWork" msgid="3517792160008890912">"කාර්යාල ෆැක්ස්"</string>
- <string name="phoneTypeFaxHome" msgid="2067265972322971467">"නිවසේ ෆැක්ස්"</string>
- <string name="phoneTypePager" msgid="7582359955394921732">"පේජරය"</string>
- <string name="phoneTypeOther" msgid="1544425847868765990">"වෙනත්"</string>
- <string name="phoneTypeCallback" msgid="2712175203065678206">"යළි ඇමතීම"</string>
- <string name="phoneTypeCar" msgid="8738360689616716982">"මෝටර් රථය"</string>
- <string name="phoneTypeCompanyMain" msgid="540434356461478916">"ආයතනයේ මූලිකය"</string>
- <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
- <string name="phoneTypeMain" msgid="6766137010628326916">"මූලික"</string>
- <string name="phoneTypeOtherFax" msgid="8587657145072446565">"වෙනත් ෆැක්ස්"</string>
- <string name="phoneTypeRadio" msgid="4093738079908667513">"රේඩියෝව"</string>
- <string name="phoneTypeTelex" msgid="3367879952476250512">"ටෙලෙක්ස්"</string>
- <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
- <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"කාර්යාල ජංගම"</string>
- <string name="phoneTypeWorkPager" msgid="649938731231157056">"කාර්යාල පේජරය"</string>
- <string name="phoneTypeAssistant" msgid="5596772636128562884">"සහායක"</string>
- <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
- <string name="eventTypeCustom" msgid="7837586198458073404">"අභිරුචි"</string>
- <string name="eventTypeBirthday" msgid="2813379844211390740">"උපන්දිනය"</string>
- <string name="eventTypeAnniversary" msgid="3876779744518284000">"සංවත්සරය"</string>
- <string name="eventTypeOther" msgid="7388178939010143077">"වෙනත්"</string>
- <string name="emailTypeCustom" msgid="8525960257804213846">"අභිරුචි"</string>
- <string name="emailTypeHome" msgid="449227236140433919">"නිවස"</string>
- <string name="emailTypeWork" msgid="3548058059601149973">"කාර්යාලය"</string>
- <string name="emailTypeOther" msgid="2923008695272639549">"වෙනත්"</string>
- <string name="emailTypeMobile" msgid="119919005321166205">"ජංගම"</string>
- <string name="postalTypeCustom" msgid="8903206903060479902">"අභිරුචි"</string>
- <string name="postalTypeHome" msgid="8165756977184483097">"නිවස"</string>
- <string name="postalTypeWork" msgid="5268172772387694495">"කාර්යාලය"</string>
- <string name="postalTypeOther" msgid="2726111966623584341">"වෙනත්"</string>
- <string name="imTypeCustom" msgid="2074028755527826046">"අභිරුචි"</string>
- <string name="imTypeHome" msgid="6241181032954263892">"මුල් පිටුව"</string>
- <string name="imTypeWork" msgid="1371489290242433090">"කාර්යාලය"</string>
- <string name="imTypeOther" msgid="5377007495735915478">"වෙනත්"</string>
- <string name="imProtocolCustom" msgid="6919453836618749992">"අභිරුචි"</string>
- <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
- <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
- <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
- <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
- <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
- <string name="imProtocolGoogleTalk" msgid="493902321140277304">"Hangouts"</string>
- <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
- <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
- <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
- <string name="orgTypeWork" msgid="29268870505363872">"කාර්යාලය"</string>
- <string name="orgTypeOther" msgid="3951781131570124082">"වෙනත්"</string>
- <string name="orgTypeCustom" msgid="225523415372088322">"අභිරුචි"</string>
- <string name="relationTypeCustom" msgid="3542403679827297300">"අභිරුචි"</string>
- <string name="relationTypeAssistant" msgid="6274334825195379076">"සහායක"</string>
- <string name="relationTypeBrother" msgid="8757913506784067713">"සහෝදරයා"</string>
- <string name="relationTypeChild" msgid="1890746277276881626">"දරුවා"</string>
- <string name="relationTypeDomesticPartner" msgid="6904807112121122133">"දේශීය හවුල්කරුවා"</string>
- <string name="relationTypeFather" msgid="5228034687082050725">"පියා"</string>
- <string name="relationTypeFriend" msgid="7313106762483391262">"මිත්‍රයා"</string>
- <string name="relationTypeManager" msgid="6365677861610137895">"කළමනාකරු"</string>
- <string name="relationTypeMother" msgid="4578571352962758304">"මව"</string>
- <string name="relationTypeParent" msgid="4755635567562925226">"මව්පිය"</string>
- <string name="relationTypePartner" msgid="7266490285120262781">"හවුල්කරුවා"</string>
- <string name="relationTypeReferredBy" msgid="101573059844135524">"යොමුකරන ලද්දේ"</string>
- <string name="relationTypeRelative" msgid="1799819930085610271">"නෑයා"</string>
- <string name="relationTypeSister" msgid="1735983554479076481">"සහෝදරිය"</string>
- <string name="relationTypeSpouse" msgid="394136939428698117">"භාර්යාව හෝ ස්වාමිපුරුෂයා"</string>
- <string name="sipAddressTypeCustom" msgid="2473580593111590945">"අභිරුචි"</string>
- <string name="sipAddressTypeHome" msgid="6093598181069359295">"නිවස"</string>
- <string name="sipAddressTypeWork" msgid="6920725730797099047">"කාර්යාලය"</string>
- <string name="sipAddressTypeOther" msgid="4408436162950119849">"වෙනත්"</string>
- <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"PIN කේතය ටයිප් කරන්න"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><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>
- <string name="keyguard_label_text" msgid="861796461028298424">"අගුළු ඇරීමට, මෙනුව ඔබා පසුව 0 ද ඔබන්න."</string>
- <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"හදිසි ඇමතුම් අංකය"</string>
- <string name="lockscreen_carrier_default" msgid="8963839242565653192">"සේවාව නැත."</string>
- <string name="lockscreen_screen_locked" msgid="7288443074806832904">"තිරය අගුළු දමා ඇත."</string>
- <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"අගුළු හැරීමට මෙනුව ඔබන්න හෝ හදිසි ඇමතුම ලබාගන්න."</string>
- <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"අගුළු හැරීමට මෙනු ඔබන්න."</string>
- <string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"අගුළු ඇරීමට රටාව අඳින්න"</string>
- <string name="lockscreen_emergency_call" msgid="5347633784401285225">"හදිසි ඇමතුම්"</string>
- <string name="lockscreen_return_to_call" msgid="5244259785500040021">"ඇමතුම වෙත නැවත යන්න"</string>
- <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"නිවැරදියි!"</string>
- <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"නැවත උත්සාහ කරන්න"</string>
- <string name="lockscreen_password_wrong" msgid="5737815393253165301">"නැවත උත්සාහ කරන්න"</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"මුහුණ භාවිතයෙන් අඟුළු හැරීමේ උපරිම ප්‍රයන්තයන් ගණන ඉක්මවා ඇත"</string>
- <string name="lockscreen_plugged_in" msgid="8057762828355572315">"ආරෝපණය වෙමින්, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_charged" msgid="321635745684060624">"අරෝපිතයි"</string>
- <string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="lockscreen_low_battery" msgid="1482873981919249740">"ඔබගේ ආරෝපකයට සම්බන්ධ කරන්න."</string>
- <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM පත නැත"</string>
- <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"ටැබ්ලටයේ SIM පත නොමැත."</string>
- <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"දුරකථනය තුළ SIM පත නැත."</string>
- <string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"SIM පතක් ඇතුල් කරන්න."</string>
- <string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM පත නොමැත හෝ කියවිය නොහැක. SIM පතක් ඇතුලත් කරන්න."</string>
- <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"භාවිතා කළ නොහැකි SIM පත."</string>
- <string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"ඔබගේ SIM පත ස්ථිරව අබල කර තිබේ.\n වෙනත් SIM පතක් සඳහා ඔබගේ සේවාදායකයා සම්බන්ධ කරගන්න."</string>
- <string name="lockscreen_transport_prev_description" msgid="201594905152746886">"පෙර ගීත බොත්තම"</string>
- <string name="lockscreen_transport_next_description" msgid="6089297650481292363">"ඊළඟ ගීත බොත්තම"</string>
- <string name="lockscreen_transport_pause_description" msgid="7659088786780128001">"විරාම බොත්තම"</string>
- <string name="lockscreen_transport_play_description" msgid="5888422938351019426">"ධාවක බොත්තම"</string>
- <string name="lockscreen_transport_stop_description" msgid="4562318378766987601">"නැවතීමේ බොත්තම"</string>
- <string name="emergency_calls_only" msgid="6733978304386365407">"හදිසි ඇමතුම් පමණි"</string>
- <string name="lockscreen_network_locked_message" msgid="143389224986028501">"ජාලය අගුළු දමා ඇත"</string>
- <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM පත PUK අගුළු දමා ඇත."</string>
- <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"පරිශීලක උපදේශය බලන්න හෝ පරිභෝගික සේවාව අමතන්න."</string>
- <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"SIM පත අගුළු දමා ඇත."</string>
- <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"SIM පත අගුළු අරිමින්..."</string>
- <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"ඔබ <xliff:g id="NUMBER_0">%d</xliff:g> වාරයක් අගුළු ඇරීමේ රටාව වැරදියට ඇඳ ඇත. \n\nතත්පර <xliff:g id="NUMBER_1">%d</xliff:g> ක් ඇතුළත නැවත උත්සාහ කරන්න."</string>
- <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="2725973286239344555">"ඔබ මුරපදය වාර <xliff:g id="NUMBER_0">%d</xliff:g> ක් වැරදියට ටයිප්කොට ඇත. \n\nතත්පර <xliff:g id="NUMBER_1">%d</xliff:g> කින් නැවත උත්සහ කරන්න."</string>
- <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"ඔබ PIN අංකය <xliff:g id="NUMBER_0">%d</xliff:g> වාරයක් වැරදියට ටයිප් කොට ඇත.\n\n තත්පර <xliff:g id="NUMBER_1">%d</xliff:g> ක් ඇතුළත නැවත උත්සාහ කරන්න."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"ඔබ වැරදියට <xliff:g id="NUMBER_0">%d</xliff:g> වතාවක් ඔබගේ අගුළු හැරීමේ රටාව ඇඳ ඇත. අසාර්ථක උත්සහ කිරීම් <xliff:g id="NUMBER_1">%d</xliff:g> න් පසුව, ඔබගේ Google පුරනය වීම් භාවිතයෙන් ඔබගේ ටැබ්ලටය අගුළු හැරීමට ඔබගෙන් අසයි.\n\n තත්පර <xliff:g id="NUMBER_2">%d</xliff:g> පසුව නැවත උත්සහ කරන්න."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"ඔබ වැරදියට <xliff:g id="NUMBER_0">%d</xliff:g> වතාවක් ඔබගේ අගුළු හැරීමේ රටාව ඇඳ ඇත. අසාර්ථක උත්සහ කිරීම් <xliff:g id="NUMBER_1">%d</xliff:g> න් පසුව, ඔබගේ Google පුරනය වීම භාවිතයෙන් ඔබගේ දුරකථනය අගුළු හැරීමට ඔබගෙන් අසනු ඇත.\n\n තත්පර <xliff:g id="NUMBER_2">%d</xliff:g> පසුව නැවත උත්සහ කරන්න."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"ඔබ ටැබ්ලටය අගුළු හැරීමට වැරදියට අවස්ථා <xliff:g id="NUMBER_0">%d</xliff:g> ක් උත්සාහ කර ඇත. අවස්ථා <xliff:g id="NUMBER_1">%d</xliff:g> ක් අසාර්ථකව උත්සහ කිරීමකින් පසුව, ටැබ්ලටය කර්මාන්ත ශාලා මුල් තත්වයට නැවත පත් වන අතර සියලු පරිශීලක දත්ත නැති වෙයි."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"ඔබ දුරකථනය අගුළු ඇරීමට වාර <xliff:g id="NUMBER_0">%d</xliff:g> කදී වැරදී ප්‍රයත්නයන් ගෙන තිබේ. තවත් අසාර්ථක ප්‍රයත්න <xliff:g id="NUMBER_1">%d</xliff:g> කින් පසුව, දුරකථනය කර්මාන්තශාලාවේ පෙරනිමියට යළි පිහිටුවන අතර සියලුම පරිශීලක දත්ත නැති වී යයි."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"ටැබ්ලටයේ අගුළු ඇරීමට ඔබ වැරදි ප්‍රයත්න <xliff:g id="NUMBER">%d</xliff:g> වාරයක් ගෙන ඇත. දැන් ටැබ්ලටය කර්මාන්තශාලා සුපුරුද්ද වෙත යළි පිහිටුවීම කෙරේ."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"ඔබ දුරකථනය අගුළු ඇරීමට වාර <xliff:g id="NUMBER">%d</xliff:g> කදී වැරදී ප්‍රයත්නයන් ගෙන තිබේ. දැන් දුරකථනය කර්මාන්තශාලා පෙරනිමියට පිහිටුවනු ලබයි."</string>
- <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"තත්පර <xliff:g id="NUMBER">%d</xliff:g> කින් නැවත උත්සාහ කරන්න."</string>
- <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"රටාව අමතකද?"</string>
- <string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"ගිණුමේ අගුළු අරින්න"</string>
- <string name="lockscreen_glogin_too_many_attempts" msgid="2751368605287288808">"රටා උත්සාහ කිරීම් වැඩිය"</string>
- <string name="lockscreen_glogin_instructions" msgid="3931816256100707784">"අගුළු හැරීමට, ඔබගේ Google ගිණුම සමග පුරනය වන්න."</string>
- <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"පරිශීලක නාමය (ඊ-තැපෑල)"</string>
- <string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">"මුරපදය"</string>
- <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"පුරනය වෙන්න"</string>
- <string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"වලංගු නොවන පරිශීලක නාමයක් හෝ මුරපදයක්."</string>
- <string name="lockscreen_glogin_account_recovery_hint" msgid="1696924763690379073">"ඔබගේ පරිශීලක නාමය හෝ මුරපදය අමතකද?\n "<b>"google.com/accounts/recovery"</b>" වෙත යන්න."</string>
- <string name="lockscreen_glogin_checking_password" msgid="7114627351286933867">"පරික්ෂා කරමින්..."</string>
- <string name="lockscreen_unlock_label" msgid="737440483220667054">"අඟුල අරින්න"</string>
- <string name="lockscreen_sound_on_label" msgid="9068877576513425970">"ශබ්දය සක්‍රීය කරන්න"</string>
- <string name="lockscreen_sound_off_label" msgid="996822825154319026">"ශ්‍රව්‍ය අක්‍රිය කරන්න"</string>
- <string name="lockscreen_access_pattern_start" msgid="3941045502933142847">"රටාව අරඹන ලදි"</string>
- <string name="lockscreen_access_pattern_cleared" msgid="5583479721001639579">"රටාව හිස් කරන ලදි"</string>
- <string name="lockscreen_access_pattern_cell_added" msgid="6756031208359292487">"කොටුවක් එකතු කරන ලදි"</string>
- <string name="lockscreen_access_pattern_detected" msgid="4988730895554057058">"රටාව සම්පූර්ණයි"</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for keyguard_accessibility_widget_changed (5678624624681400191) -->
- <skip />
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"විජටය එකතු කරන්න."</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"හිස්"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"අගුළු අරින ප්‍රදේශය විදහා ඇත."</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"අගුළු අරින ප්‍රදේශය හැකිලී ඇත."</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> විජට්."</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"පරිශීලක තෝරන්නා"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"තත්වය"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"කැමරාව"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"මාධ්‍ය පාලක"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"විජටය නැවත අනුපිළිවෙළට සැකසිම ඇරඹුණි."</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"විජට් නැවත අනුපිළිවෙලට සැකසීම අවසානය."</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> විජටය මැකී ඇත."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"අගුළු නොදැමූ ප්‍රදේශය පුළුල් කරන්න."</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"සර්පණ අගුළු ඇරීම."</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"රටා අගුළු ඇරීම."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"මුහුණ භාවිතයෙන් අඟුළු හැරීම."</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PIN අගුළු ඇරීම."</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"මුරපද අගුළු ඇරීම."</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"රටා ප්‍රදේශය."</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"සර්පණ ප්‍රදේශය."</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="granularity_label_character" msgid="7336470535385009523">"අක්ෂරය"</string>
- <string name="granularity_label_word" msgid="7075570328374918660">"වචනය"</string>
- <string name="granularity_label_link" msgid="5815508880782488267">"සබැඳිය"</string>
- <string name="granularity_label_line" msgid="5764267235026120888">"රේඛාව"</string>
- <string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string>
- <string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string>
- <string name="factorytest_failed" msgid="5410270329114212041">"කර්මාන්ත ශාලා පරීක්ෂණය අසාර්ථකයි"</string>
- <string name="factorytest_not_system" msgid="4435201656767276723">"FACTORY_TEST ක්‍රියාව /system/app හි ස්ථාපිත පැකේජ සඳහා පමණක් සහය දක්වයි."</string>
- <string name="factorytest_no_action" msgid="872991874799998561">"FACTORY_TEST ක්‍රියාව ලබාදෙන පැකේජයක් සොයාගත නොහැකි විය."</string>
- <string name="factorytest_reboot" msgid="6320168203050791643">"පුනරාරම්භ කරන්න"</string>
- <string name="js_dialog_title" msgid="1987483977834603872">"\"<xliff:g id="TITLE">%s</xliff:g>\" හි ඇති පිටුව කියන්නේ:"</string>
- <string name="js_dialog_title_default" msgid="6961903213729667573">"ජාවාස්ක්‍රිප්ට්"</string>
- <string name="js_dialog_before_unload_title" msgid="2619376555525116593">"සංචලනය තහවුරු කරන්න"</string>
- <string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"මෙම පිටුවෙන් ඉවත් වන්න"</string>
- <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"මෙම පිටුවෙහි ඉන්න"</string>
- <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nඔබට මෙම පිටුවෙන් සංචලනය කිරීමට අවශ්‍ය බවට ඔබට විශ්වාසද?"</string>
- <string name="save_password_label" msgid="6860261758665825069">"තහවුරු කරන්න"</string>
- <string name="double_tap_toast" msgid="4595046515400268881">"උපදෙස: විශාලනය කිරීමට සහ කුඩා කිරීමට දෙවරක් තට්ටු කරන්න."</string>
- <string name="autofill_this_form" msgid="4616758841157816676">"ස්වයංක්‍රිය පිරවුම"</string>
- <string name="setup_autofill" msgid="7103495070180590814">"ස්වයංක්‍රිය පිරවුම සකසන්න"</string>
- <string name="autofill_address_name_separator" msgid="6350145154779706772">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3268041054899214945">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="7483307893170324129">", "</string>
- <string name="autofill_address_summary_format" msgid="4874459455786827344">"$1$2$3"</string>
- <string name="autofill_province" msgid="2231806553863422300">"පළාත"</string>
- <string name="autofill_postal_code" msgid="4696430407689377108">"තැපැල් කේතය"</string>
- <string name="autofill_state" msgid="6988894195520044613">"ජනපදය"</string>
- <string name="autofill_zip_code" msgid="8697544592627322946">"ZIP කේතය"</string>
- <string name="autofill_county" msgid="237073771020362891">"ප්‍රාන්තය"</string>
- <string name="autofill_island" msgid="4020100875984667025">"දූපත"</string>
- <string name="autofill_district" msgid="8400735073392267672">"දිස්ත්‍රික්කය"</string>
- <string name="autofill_department" msgid="5343279462564453309">"දෙපාර්තමේන්තුව"</string>
- <string name="autofill_prefecture" msgid="2028499485065800419">"ප්‍රාන්තය"</string>
- <string name="autofill_parish" msgid="8202206105468820057">"කෝරලය"</string>
- <string name="autofill_area" msgid="3547409050889952423">"ප්‍රදේශය"</string>
- <string name="autofill_emirate" msgid="2893880978835698818">"එමිරේට්"</string>
- <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"ඔබගේ වෙබ් පිටුසන් සහ ඉතිහාසය කියවීම"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="8462378226600439658">"බ්‍රව්සරය නැරඹූ සියලු URL සහ සියලු බ්‍රව්සර පිටුසන් වල ඉතිහාසය කියවීමට යෙදුමට අවසර දෙන්න. සටහන: වෙබ් බ්‍රව්සර අවශ්‍යතා සමග තෙවෙනි පාර්ශව බ්‍රව්සර වලට හෝ වෙනත් යෙදුම්වලට මෙම අවසරය බල නොදෙයි."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"වෙබ් පිටුසන් සහ ඉතිහාසයට ලිවිම"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="6825527469145760922">"ඔබගේ ටැබ්ලටයේ ගබඩා කර ඇති බ්‍රව්සරයේ ඉතිහාසය හෝ පිටුසන් වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. බ්‍රව්සර දත්ත මැකීමට හෝ වෙනස් කිරීමට මෙමඟින් යෙදුමට අවසර දෙයි. සටහන: වෙබ් ගවේෂණ හැකියාව සහිත තෙවෙනි පාර්ශව බ්‍රව්සර හෝ වෙනත් යෙදුම් වලින් මෙම අවසරයට බල නොකරයි."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"ඔබගේ දුරකථනයේ ආචයනය කරන ලද බ්‍රව්සර ඉතිහාසය හෝ පිටුසන වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. ඔබගේ බ්‍රව්සර දත්ත මැකීමට හෝ වෙනස් කිරීමට අනිෂ්ට යෙදුම් මෙය භාවිත කරයි. සටහන: වෙබ් බ්‍රව්සර අවශ්‍යතාවය සමග තෙවෙනි පාර්ශව බ්‍රව්සර හෝ වෙනත් යෙදුම් විසින් මෙම අවසරය බල ගැන්විය හැක."</string>
- <string name="permlab_setAlarm" msgid="1379294556362091814">"සීනුවක් සැකසීම"</string>
- <string name="permdesc_setAlarm" msgid="316392039157473848">"ස්ථාපනය කරන ලද සීනු ඔරලෝසු යෙදුමේ සීනුව සකස් කරන්නට යෙදුමට ඉඩ දෙන්න. ඇතැම් සීනු ඔරලෝසු යෙදුම් මෙම අංගය ක්‍රියාවට නංවා නොතිබීමට ඉඩ තිබේ."</string>
- <string name="permlab_addVoicemail" msgid="5525660026090959044">"හඬ තැපෑල එක් කිරීම"</string>
- <string name="permdesc_addVoicemail" msgid="6604508651428252437">"ඔබගේ හඬ තැපෑලේ එන ලිපි වෙත එන පණිවිඩ එකතු කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"බ්‍රව්සරයේ භූ අවසර වෙනස් කිරීම"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"බ්‍රවුසරයේ භූ ස්ථානීය අවසර වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. අභිමත වෙබ් අඩවි වලට ස්ථානීය තොරතුරු යැවීමට අනිෂ්ට යෙදුම් මෙය භාවිතා කෙරේ."</string>
- <string name="permlab_packageVerificationAgent" msgid="5568139100645829117">"පැකේජ සත්‍යාපනය කරන්න"</string>
- <string name="permdesc_packageVerificationAgent" msgid="8437590190990843381">"ස්ථාපිත කොට ඇති පැකේජයක් සත්‍යාපනයට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_bindPackageVerifier" msgid="4187786793360326654">"පැකේජ සත්‍යාපකයක් වෙත බඳින්න"</string>
- <string name="permdesc_bindPackageVerifier" msgid="3180741773233862126">"පැකේජ සත්‍යාපක ඉල්ලීම් වලට දරන්නාට ඉඩ ලබා දේ. සාමාන්‍ය යෙදුම් සඳහා කිසිසේත් අවශ්‍ය නොවේ."</string>
- <string name="permlab_serialPort" msgid="546083327654631076">"ශ්‍රේණිගත පොට ප්‍රවේශ කිරීම"</string>
- <string name="permdesc_serialPort" msgid="2991639985224598193">"SerialManager API භාවිතයෙන් අනුක්‍රම තොට වෙත ප්‍රවේශ වීමට රඳවනයට අවසර දෙන්න."</string>
- <string name="permlab_accessContentProvidersExternally" msgid="5077774297943409285">"බාහිර අන්තර්ගත සැපයුම්කරුවන් වෙත ප්‍රවේශය"</string>
- <string name="permdesc_accessContentProvidersExternally" msgid="4544346486697853685">"අන්තර්ගත සපයන්නන්ට ප්‍රවේශ වීමට දරන්නන්ට ෂෙල් එකේ සිට ප්‍රවේශ වීමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා කිසිසේත් අදාළ නොවේ."</string>
- <string name="permlab_updateLock" msgid="3527558366616680889">"ස්වයංක්‍රීය උපාංග යවත්කාල කිරීම් පසුබට කරන්න"</string>
- <string name="permdesc_updateLock" msgid="1655625832166778492">"උපාංගය උත්ශ්‍රේණිකරණයට අන්තර්ක්‍රියාකාරී නොවන යළි ඇරඹීමක් සඳහා සුදුසු වෙලාව කුමක්ද යන්න ගැන පද්ධතියට තොරතුරු ලබාදීමට දරන්නාට අවසර දෙන්න."</string>
- <string name="save_password_message" msgid="767344687139195790">"බ්‍රව්සරයට මෙම මුරපදය මතක තබා ගැනීමට ඔබට අවශ්‍යද?"</string>
- <string name="save_password_notnow" msgid="6389675316706699758">"දැන් නොවේ"</string>
- <string name="save_password_remember" msgid="6491879678996749466">"මතක තබා ගන්න"</string>
- <string name="save_password_never" msgid="8274330296785855105">"කවදාවත් නොවේ"</string>
- <string name="open_permission_deny" msgid="7374036708316629800">"මෙම පිටුව විවෘත කිරීමට ඔබට අවසර නැත."</string>
- <string name="text_copied" msgid="4985729524670131385">"පෙළ පසුරු පුවරුවට පිටපත් කරන ලදි."</string>
- <string name="more_item_label" msgid="4650918923083320495">"තව"</string>
- <string name="prepend_shortcut_label" msgid="2572214461676015642">"මෙනුව+"</string>
- <string name="menu_space_shortcut_label" msgid="2410328639272162537">"space"</string>
- <string name="menu_enter_shortcut_label" msgid="2743362785111309668">"ඇතුල් කරන්න"</string>
- <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"මකන්න"</string>
- <string name="search_go" msgid="8298016669822141719">"සෙවීම"</string>
- <string name="searchview_description_search" msgid="6749826639098512120">"සෙවීම"</string>
- <string name="searchview_description_query" msgid="5911778593125355124">"සෙවුම් විමසුම"</string>
- <string name="searchview_description_clear" msgid="1330281990951833033">"විමසුම හිස් කරන්න"</string>
- <string name="searchview_description_submit" msgid="2688450133297983542">"විමසුම යොමු කරන්න"</string>
- <string name="searchview_description_voice" msgid="2453203695674994440">"හඬ සෙවීම"</string>
- <string name="enable_explore_by_touch_warning_title" msgid="7460694070309730149">"ස්පර්ශ කිරීමෙන් ගවේෂණය සබල කරන්න ද?"</string>
- <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="8655887539089910577">"ස්පර්ශය වෙතින් ගවේෂණය සක්‍රිය කිරීමට <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> ට අවශ්‍යය. ස්පර්ශය වෙතින් ගවේෂණය සක්‍රිය විට, ඔබගේ ඇඟිලිවලට පහළ විස්තර ඇසිය හෝ බැලිය හැක හෝ ටැබ්ලටය සමග අන්තර් ක්‍රියාකාරී වීමට ඉංගිති සිදු කළ හැක."</string>
- <string name="enable_explore_by_touch_warning_message" product="default" msgid="2708199672852373195">"ස්පර්ශය වෙතින් ගවේෂණය සක්‍රිය කිරීමට <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> ට අවශ්‍යයි. ස්පර්ශය වෙතින් ගවේෂණය සක්‍රිය විට, ඔබගේ ඇඟිලිවලට පහළ විස්තර ඇසිය හෝ බැලිය හැක හෝ දුරකථනය සමග අන්තර් ක්‍රියාකාරී වීමට ඉංගිති සිදු කළ හැක."</string>
- <string name="oneMonthDurationPast" msgid="7396384508953779925">"මාස 1 කට පෙර"</string>
- <string name="beforeOneMonthDurationPast" msgid="909134546836499826">"මාස 1 කට පෙර"</string>
- <plurals name="num_seconds_ago">
- <item quantity="one" msgid="4869870056547896011">"තත්පර 1 කට පෙර"</item>
- <item quantity="other" msgid="3903706804349556379">"තත්පර <xliff:g id="COUNT">%d</xliff:g> ට පෙර"</item>
- </plurals>
- <plurals name="num_minutes_ago">
- <item quantity="one" msgid="3306787433088810191">"මිනිත්තු 1 ට පෙර"</item>
- <item quantity="other" msgid="2176942008915455116">"මිනිත්තු <xliff:g id="COUNT">%d</xliff:g> කට පෙර"</item>
- </plurals>
- <plurals name="num_hours_ago">
- <item quantity="one" msgid="9150797944610821849">"පැය 1 කට පෙර"</item>
- <item quantity="other" msgid="2467273239587587569">"පැය <xliff:g id="COUNT">%d</xliff:g> කට පෙර"</item>
- </plurals>
- <plurals name="last_num_days">
- <item quantity="other" msgid="3069992808164318268">"අන්තිම දවස් <xliff:g id="COUNT">%d</xliff:g>"</item>
- </plurals>
- <string name="last_month" msgid="3959346739979055432">"අවසාන මාසය"</string>
- <string name="older" msgid="5211975022815554840">"පරණ"</string>
- <plurals name="num_days_ago">
- <item quantity="one" msgid="861358534398115820">"ඊයේ"</item>
- <item quantity="other" msgid="2479586466153314633">"දින <xliff:g id="COUNT">%d</xliff:g> කට පෙර"</item>
- </plurals>
- <plurals name="in_num_seconds">
- <item quantity="one" msgid="2729745560954905102">"තත්පර 1 කින්"</item>
- <item quantity="other" msgid="1241926116443974687">"තත්පර <xliff:g id="COUNT">%d</xliff:g> කදී"</item>
- </plurals>
- <plurals name="in_num_minutes">
- <item quantity="one" msgid="8793095251325200395">"මිනිත්තු 1 කදී"</item>
- <item quantity="other" msgid="3330713936399448749">"මිනිත්තු <xliff:g id="COUNT">%d</xliff:g> ක් තුළ"</item>
- </plurals>
- <plurals name="in_num_hours">
- <item quantity="one" msgid="7164353342477769999">"පැය 1 ක් තුළ"</item>
- <item quantity="other" msgid="547290677353727389">"පැය <xliff:g id="COUNT">%d</xliff:g> ක් තුළ"</item>
- </plurals>
- <plurals name="in_num_days">
- <item quantity="one" msgid="5413088743009839518">"හෙට"</item>
- <item quantity="other" msgid="5109449375100953247">"දින <xliff:g id="COUNT">%d</xliff:g> ක් තුළ"</item>
- </plurals>
- <plurals name="abbrev_num_seconds_ago">
- <item quantity="one" msgid="1849036840200069118">"තත්පර 1 කට පෙර"</item>
- <item quantity="other" msgid="3699169366650930415">"තත්පර <xliff:g id="COUNT">%d</xliff:g> කට පෙර"</item>
- </plurals>
- <plurals name="abbrev_num_minutes_ago">
- <item quantity="one" msgid="6361490147113871545">"මිනිත්තු 1 කට පෙර"</item>
- <item quantity="other" msgid="851164968597150710">"මිනිත්තු <xliff:g id="COUNT">%d</xliff:g> ට පෙර"</item>
- </plurals>
- <plurals name="abbrev_num_hours_ago">
- <item quantity="one" msgid="4796212039724722116">"පැය 1 කට පෙර"</item>
- <item quantity="other" msgid="6889970745748538901">"පැය <xliff:g id="COUNT">%d</xliff:g> ට පෙර"</item>
- </plurals>
- <plurals name="abbrev_num_days_ago">
- <item quantity="one" msgid="8463161711492680309">"ඊයේ"</item>
- <item quantity="other" msgid="3453342639616481191">"දින <xliff:g id="COUNT">%d</xliff:g> ට පෙර"</item>
- </plurals>
- <plurals name="abbrev_in_num_seconds">
- <item quantity="one" msgid="5842225370795066299">"තත්පර 1 ක් තුළ"</item>
- <item quantity="other" msgid="5495880108825805108">"තත්පර <xliff:g id="COUNT">%d</xliff:g> ක් තුළ"</item>
- </plurals>
- <plurals name="abbrev_in_num_minutes">
- <item quantity="one" msgid="562786149928284878">"මිනිත්තු 1 ක් තුළ"</item>
- <item quantity="other" msgid="4216113292706568726">"මිනිත්තු <xliff:g id="COUNT">%d</xliff:g> ක් තුළ"</item>
- </plurals>
- <plurals name="abbrev_in_num_hours">
- <item quantity="one" msgid="3274708118124045246">"පැය 1 ක් තුළ"</item>
- <item quantity="other" msgid="3705373766798013406">"පැය <xliff:g id="COUNT">%d</xliff:g> ක් තුළ"</item>
- </plurals>
- <plurals name="abbrev_in_num_days">
- <item quantity="one" msgid="2178576254385739855">"හෙට"</item>
- <item quantity="other" msgid="2973062968038355991">"දින <xliff:g id="COUNT">%d</xliff:g> ක් තුළ"</item>
- </plurals>
- <string name="preposition_for_date" msgid="9093949757757445117">"<xliff:g id="DATE">%s</xliff:g> වන දා"</string>
- <string name="preposition_for_time" msgid="5506831244263083793">"<xliff:g id="TIME">%s</xliff:g> ට"</string>
- <string name="preposition_for_year" msgid="5040395640711867177">"<xliff:g id="YEAR">%s</xliff:g> තුළ"</string>
- <string name="day" msgid="8144195776058119424">"දවස"</string>
- <string name="days" msgid="4774547661021344602">"දින"</string>
- <string name="hour" msgid="2126771916426189481">"පැය"</string>
- <string name="hours" msgid="894424005266852993">"පැය"</string>
- <string name="minute" msgid="9148878657703769868">"min"</string>
- <string name="minutes" msgid="5646001005827034509">"මිනිත්තු"</string>
- <string name="second" msgid="3184235808021478">"තත්"</string>
- <string name="seconds" msgid="3161515347216589235">"තත්පර"</string>
- <string name="week" msgid="5617961537173061583">"සතිය"</string>
- <string name="weeks" msgid="6509623834583944518">"සති"</string>
- <string name="year" msgid="4001118221013892076">"අවුරුද්ද"</string>
- <string name="years" msgid="6881577717993213522">"අවුරුදු"</string>
- <plurals name="duration_seconds">
- <item quantity="one" msgid="6962015528372969481">"තත්පර 1"</item>
- <item quantity="other" msgid="1886107766577166786">"තත්පර <xliff:g id="COUNT">%d</xliff:g>"</item>
- </plurals>
- <plurals name="duration_minutes">
- <item quantity="one" msgid="4915414002546085617">"මිනිත්තු 1"</item>
- <item quantity="other" msgid="3165187169224908775">"මිනිත්තු <xliff:g id="COUNT">%d</xliff:g>"</item>
- </plurals>
- <plurals name="duration_hours">
- <item quantity="one" msgid="8917467491248809972">"පැය 1"</item>
- <item quantity="other" msgid="3863962854246773930">"පැය <xliff:g id="COUNT">%d</xliff:g> ක්"</item>
- </plurals>
- <string name="VideoView_error_title" msgid="3534509135438353077">"වීඩියෝ ගැටලුව"</string>
- <string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"මේ වීඩියෝව මෙම උපාංගයට ප්‍රවාහනය සඳහා වලංගු නැත."</string>
- <string name="VideoView_error_text_unknown" msgid="3450439155187810085">"මෙම වීඩියෝව ධාවනය කළ නොහැක."</string>
- <string name="VideoView_error_button" msgid="2822238215100679592">"හරි"</string>
- <string name="relative_time" msgid="1818557177829411417">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
- <string name="noon" msgid="7245353528818587908">"මධ්‍යහනය"</string>
- <string name="Noon" msgid="3342127745230013127">"මධ්‍යාහනය"</string>
- <string name="midnight" msgid="7166259508850457595">"මධ්‍යම රාත්‍රිය"</string>
- <string name="Midnight" msgid="5630806906897892201">"මධ්‍යම රාත්‍රිය"</string>
- <string name="elapsed_time_short_format_mm_ss" msgid="4431555943828711473">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
- <string name="elapsed_time_short_format_h_mm_ss" msgid="1846071997616654124">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
- <string name="selectAll" msgid="6876518925844129331">"සියල්ල තෝරන්න"</string>
- <string name="cut" msgid="3092569408438626261">"කපන්න"</string>
- <string name="copy" msgid="2681946229533511987">"පිටපත් කරන්න"</string>
- <string name="paste" msgid="5629880836805036433">"අලවන්න"</string>
- <string name="replace" msgid="5781686059063148930">"ප්‍රතිස්ථාපනය කරන්න..."</string>
- <string name="delete" msgid="6098684844021697789">"මකන්න"</string>
- <string name="copyUrl" msgid="2538211579596067402">"URL පිටපත් කරන්න"</string>
- <string name="selectTextMode" msgid="1018691815143165326">"පෙළ තෝරන්න"</string>
- <string name="textSelectionCABTitle" msgid="5236850394370820357">"පෙළ තේරීම"</string>
- <string name="addToDictionary" msgid="4352161534510057874">"ශබ්ද කෝෂයට එකතු කරන්න"</string>
- <string name="deleteText" msgid="6979668428458199034">"මකන්න"</string>
- <string name="inputMethod" msgid="1653630062304567879">"ආදාන ක්‍රමය"</string>
- <string name="editTextMenuTitle" msgid="4909135564941815494">"පෙළ ක්‍රියාවන්"</string>
- <string name="low_internal_storage_view_title" msgid="5576272496365684834">"ආචයනය ඉඩ ප්‍රමාණය අඩු වී ඇත"</string>
- <string name="low_internal_storage_view_text" msgid="6640505817617414371">"සමහර පද්ධති කාර්යයන් ක්‍රියා නොකරනු ඇත"</string>
- <string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ධාවනය වේ"</string>
- <string name="app_running_notification_text" msgid="4653586947747330058">"වැඩිපුර තොරතුරු හෝ යෙදුම නැවතීම සඳහා ස්පර්ශ කරන්න."</string>
- <string name="ok" msgid="5970060430562524910">"හරි"</string>
- <string name="cancel" msgid="6442560571259935130">"අවලංගු කරන්න"</string>
- <string name="yes" msgid="5362982303337969312">"හරි"</string>
- <string name="no" msgid="5141531044935541497">"අවලංගු කරන්න"</string>
- <string name="dialog_alert_title" msgid="2049658708609043103">"අවධානය"</string>
- <string name="loading" msgid="7933681260296021180">"පූරණය වෙමින්..."</string>
- <string name="capital_on" msgid="1544682755514494298">"සක්‍රීයයි"</string>
- <string name="capital_off" msgid="6815870386972805832">"අක්‍රිය කරන්න"</string>
- <string name="whichApplication" msgid="4533185947064773386">"පහත භාවිතයෙන් ක්‍රියාව සම්පූර්ණ කරන්න"</string>
- <string name="alwaysUse" msgid="4583018368000610438">"මෙම ක්‍රියාව සඳහා සුපුරුද්දෙන් භාවිත කරන්න."</string>
- <string name="clearDefaultHintMsg" msgid="3252584689512077257">"පද්ධති සැකසීම් &gt; යෙදුම් &gt; බාගැනීම් තුළ ඇති සුපුරුද්ද හිස් කරන්න."</string>
- <string name="chooseActivity" msgid="7486876147751803333">"ක්‍රියාවක් තෝරන්න"</string>
- <string name="chooseUsbActivity" msgid="6894748416073583509">"USB උපාංගය සඳහා යෙදුමක් තෝරන්න"</string>
- <string name="noApplications" msgid="2991814273936504689">"මෙම ක්‍රියාව සිදු කිරීමට කිසිදු යෙදුමකට නොහැකිය."</string>
- <string name="aerr_title" msgid="1905800560317137752"></string>
- <string name="aerr_application" msgid="932628488013092776">"අවාසනාවන්ත ලෙස <xliff:g id="APPLICATION">%1$s</xliff:g> නැවතී ඇත."</string>
- <string name="aerr_process" msgid="4507058997035697579">"අවාසනාවන්ත ලෙස, <xliff:g id="PROCESS">%1$s</xliff:g> ක්‍රියාවලිය නතර විණි."</string>
- <string name="anr_title" msgid="4351948481459135709"></string>
- <string name="anr_activity_application" msgid="1904477189057199066">"<xliff:g id="APPLICATION">%2$s</xliff:g> ප්‍රතිචාර නොදක්වයි.\n\nඔබට එය නතර කිරීමට අවශ්‍යද?"</string>
- <string name="anr_activity_process" msgid="5776209883299089767">"<xliff:g id="ACTIVITY">%1$s</xliff:g> ක්‍රියාකාරකම ප්‍රතිචාර නොදක්වයි.\n\nඑය වසා දැමීමට ඔබට අවශ්‍යද?"</string>
- <string name="anr_application_process" msgid="8941757607340481057">"<xliff:g id="APPLICATION">%1$s</xliff:g> ප්‍රතිචාර නොදක්වයි. එය වසා දැමීමට ඔබට අවශ්‍යද?"</string>
- <string name="anr_process" msgid="6513209874880517125">"<xliff:g id="PROCESS">%1$s</xliff:g> ක්‍රියාවලිය ප්‍රතිචාර නොදක්වයි.\n\nඔබට එය නතර කිරීමට අවශ්‍යද?"</string>
- <string name="force_close" msgid="8346072094521265605">"හරි"</string>
- <string name="report" msgid="4060218260984795706">"වාර්තාව"</string>
- <string name="wait" msgid="7147118217226317732">"රැඳී සිටින්න"</string>
- <string name="webpage_unresponsive" msgid="3272758351138122503">"පිටුව ප්‍රතිචාර නොදක්වන තත්වයට පත්වී ඇත.\n\nඔබට එය වැසීමට අවශ්‍යද?"</string>
- <string name="launch_warning_title" msgid="1547997780506713581">"යෙදුම නැවත හරවා යවා ඇත"</string>
- <string name="launch_warning_replace" msgid="6202498949970281412">"<xliff:g id="APP_NAME">%1$s</xliff:g> දැන් ධාවනය වෙයි."</string>
- <string name="launch_warning_original" msgid="188102023021668683">"<xliff:g id="APP_NAME">%1$s</xliff:g> මුලින්ම අරඹා ඇත."</string>
- <string name="screen_compat_mode_scale" msgid="3202955667675944499">"පරිමාණය"</string>
- <string name="screen_compat_mode_show" msgid="4013878876486655892">"සැමවිටම පෙන්වන්න"</string>
- <string name="screen_compat_mode_hint" msgid="1064524084543304459">"පද්ධති සැකසීම් තුළ මෙය නැවත ක්‍රියාත්මක කරන්න &gt; යෙදුම් &gt; බාගන්නා ලදි."</string>
- <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> යෙදුම (<xliff:g id="PROCESS">%2$s</xliff:g> ක්‍රියාවලිය) එහි StrictMode කොන්දේසිය උල්ලංඝනය කර ඇත."</string>
- <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> ක්‍රියාවලිය එහි StrictMode කොන්දේසිය උල්ලංඝනය කර ඇත."</string>
- <string name="android_upgrading_title" msgid="1584192285441405746">"Android උත්ශ්‍රේණි වෙමින් පවතී..."</string>
- <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> කින් <xliff:g id="NUMBER_0">%1$d</xliff:g> වැනි යෙදුමප්‍ රශස්ත කරමින්."</string>
- <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>
- <string name="heavy_weight_notification_detail" msgid="1721681741617898865">"යෙදුමට මාරු වීමට ස්පර්ශ කරන්න"</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>
- <string name="old_app_description" msgid="2082094275580358049">"නව යෙදුම ආරම්භ නොකරන්න."</string>
- <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="sendText" msgid="5209874571959469142">"පෙළ සඳහා ක්‍රියාව තෝරන්න"</string>
- <string name="volume_ringtone" msgid="6885421406845734650">"හඬ නඟනයේ ශබ්දය"</string>
- <string name="volume_music" msgid="5421651157138628171">"මාධ්‍ය ශබ්දය ත්‍රීවතාවය"</string>
- <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"බ්ලූටූත් හරහා ධාවනය වෙයි"</string>
- <string name="volume_music_hint_silent_ringtone_selected" msgid="8310739960973156272">"නිහඬ රිගින් ටෝනයක් සකසන්න"</string>
- <string name="volume_call" msgid="3941680041282788711">"ඇමතුම-තුළ ශබ්ද ත්‍රීවතාව"</string>
- <string name="volume_bluetooth_call" msgid="2002891926351151534">"බ්ලූටූත් ඇමතුම-තුළ ශබ්ද ත්‍රීවතාවය"</string>
- <string name="volume_alarm" msgid="1985191616042689100">"සීනුවේ ශබ්දය"</string>
- <string name="volume_notification" msgid="2422265656744276715">"දැනුම්දීමේ ශබ්දය"</string>
- <string name="volume_unknown" msgid="1400219669770445902">"ශබ්දය ත්‍රීවතාවය"</string>
- <string name="volume_icon_description_bluetooth" msgid="6538894177255964340">"බ්ලූටූත් ශබ්ද ත්‍රීවතාව"</string>
- <string name="volume_icon_description_ringer" msgid="3326003847006162496">"රින්ටෝනයේ ශබ්දය"</string>
- <string name="volume_icon_description_incall" msgid="8890073218154543397">"ඇමතුම් ශබ්දය ත්‍රීවතාවය"</string>
- <string name="volume_icon_description_media" msgid="4217311719665194215">"මාධ්‍ය ශබ්දය ත්‍රීවතාවය"</string>
- <string name="volume_icon_description_notification" msgid="7044986546477282274">"දැනුම්දීමේ ශබ්ද ත්‍රීවතාව"</string>
- <string name="ringtone_default" msgid="3789758980357696936">"සුපුරුදු රින්ටෝනය සකසන්න"</string>
- <string name="ringtone_default_with_actual" msgid="8129563480895990372">"සුපුරුදු රින්ටෝනය (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
- <string name="ringtone_silent" msgid="7937634392408977062">"කිසිවක් නැත"</string>
- <string name="ringtone_picker_title" msgid="3515143939175119094">"රිගින්ටෝන"</string>
- <string name="ringtone_unknown" msgid="5477919988701784788">"නොදන්නා රින්ටෝනය"</string>
- <plurals name="wifi_available">
- <item quantity="one" msgid="6654123987418168693">"Wi-Fi ජාලයක් තිබේ"</item>
- <item quantity="other" msgid="4192424489168397386">"Wi-Fi ජාල ඇත"</item>
- </plurals>
- <plurals name="wifi_available_detailed">
- <item quantity="one" msgid="1634101450343277345">"විවෘත Wi-Fi ජාලය ලබාගත හැක"</item>
- <item quantity="other" msgid="7915895323644292768">"විවෘත Wi-Fi ජාල තිබේ"</item>
- </plurals>
- <string name="wifi_available_sign_in" msgid="4029489716605255386">"Wi-Fi ජලයට පුරනය වන්න"</string>
- <string name="network_available_sign_in" msgid="8495155593358054676">"ජාලයට පුරනය වන්න"</string>
- <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
- <skip />
- <string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi වෙත සම්බන්ධ විය නොහැක"</string>
- <string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" දුබල අන්තර්ජාල සම්බන්ධතාවයක් ඇත."</string>
- <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"ඍජු Wi-Fi"</string>
- <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>
- <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"සැකසීම් සඳහා ස්පර්ශ කරන්න"</string>
- <string name="accept" msgid="1645267259272829559">"පිළිගන්න"</string>
- <string name="decline" msgid="2112225451706137894">"ප්‍රතික්ෂේප කරන්න"</string>
- <string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ආරාධනාව යවන ලදි"</string>
- <string name="wifi_p2p_invitation_to_connect_title" msgid="4958803948658533637">"සම්බන්ධතාවයට ඇරයුමකි"</string>
- <string name="wifi_p2p_from_message" msgid="570389174731951769">"වෙතින්:"</string>
- <string name="wifi_p2p_to_message" msgid="248968974522044099">"වෙත:"</string>
- <string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"අවශ්‍ය PIN එක ටයිප් කරන්න:"</string>
- <string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string>
- <string name="wifi_p2p_frequency_conflict_message" product="tablet" msgid="8012981257742232475">"ටැබ්ලටය <xliff:g id="DEVICE_NAME">%1$s</xliff:g> වෙත සම්බන්ධ වන අතරතුර එය Wi-Fi වලින් තාවකාලිකව විසන්ධි කෙරේ."</string>
- <string name="wifi_p2p_frequency_conflict_message" product="default" msgid="7363907213787469151">"දුරකථනය <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ට සම්බන්ධ වී පවතින විට Wi-Fi වලින් එය තාවකාලිකව විසන්ධි වෙයි."</string>
- <string name="select_character" msgid="3365550120617701745">"අකුර ඇතුළත් කරන්න"</string>
- <string name="sms_control_title" msgid="7296612781128917719">"SMS පණිවිඩ යවමින්"</string>
- <string name="sms_control_message" msgid="3867899169651496433">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; SMS පණිවිඩ විශාල ගණනක් යවයි. මෙම යෙදුමට පණිවිඩ යැවීම නොනැවතී කරගෙන යාමට අවසර දීමට ඔබට අවශ්‍යද?"</string>
- <string name="sms_control_yes" msgid="3663725993855816807">"අවසර දෙන්න"</string>
- <string name="sms_control_no" msgid="625438561395534982">"ප්‍රතික්ෂේප කරන්න"</string>
- <string name="sms_short_code_confirm_message" msgid="1645436466285310855">"&lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;b&gt; වෙත කෙටි පණිවීඩයක් යැවීමට &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; කැමතිය."</string>
- <!-- syntax error in translation for sms_short_code_details (3492025719868078457) org.xmlpull.v1.XmlPullParserException: expected: /string read: font (position:END_TAG </font>@1:83 in <string name="sms_short_code_details" msgid="3492025719868078457">"මෙය "</font>"ඔබගේ ජංගම ගිණුමේ"<font fgcolor="#ffffb060">" අය වීම් වලට හේතුවක් වේ."</string>
-) -->
- <string name="sms_premium_short_code_details" msgid="5523826349105123687"><font fgcolor="#ffffb060">"මෙය ඔබගේ ජංගම ගිණුමෙන් අයවීමට හේතු වේ."</font></string>
- <string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"යවන්න"</string>
- <string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"අවලංගු කරන්න"</string>
- <string name="sms_short_code_remember_choice" msgid="5289538592272218136">"මගේ තේරීම මතක තබාගන්න"</string>
- <string name="sms_short_code_remember_undo_instruction" msgid="4960944133052287484">"ඔබට මෙය සැකසීම් තුළ වෙනස්කර ගැනීම පසුව කළ හැක &gt; යෙදුම්"</string>
- <string name="sms_short_code_confirm_always_allow" msgid="3241181154869493368">"සැමවිටම ඉඩ දෙන්න"</string>
- <string name="sms_short_code_confirm_never_allow" msgid="446992765774269673">"කිසිදා අවසර නොදෙන්න"</string>
- <string name="sim_removed_title" msgid="6227712319223226185">"SIM පත ඉවත් කරන ලදි"</string>
- <string name="sim_removed_message" msgid="2333164559970958645">"ඔබ ඇතුළත් කරන ලද වලංගු SIM පත සමඟ නැවත ඇරඹීම කරන තුරු ජංගම ජාලය නොතිබේ."</string>
- <string name="sim_done_button" msgid="827949989369963775">"හරි"</string>
- <string name="sim_added_title" msgid="3719670512889674693">"SIM පතක් එකතු කරන ලදි"</string>
- <string name="sim_added_message" msgid="6599945301141050216">"ජංගම ජාලයට ප්‍රවේශ වීමට ඔබගේ උපාංගය නැවත අරඹන්න."</string>
- <string name="sim_restart_button" msgid="4722407842815232347">"යළි අරඹන්න"</string>
- <string name="time_picker_dialog_title" msgid="8349362623068819295">"වේලාව සකසන්න"</string>
- <string name="date_picker_dialog_title" msgid="5879450659453782278">"දිනය සැකසීම"</string>
- <string name="date_time_set" msgid="5777075614321087758">"සකසන්න"</string>
- <string name="date_time_done" msgid="2507683751759308828">"හරි"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff33b5e5">"අලුත්: "</font></string>
- <string name="perms_description_app" msgid="5139836143293299417">"<xliff:g id="APP_NAME">%1$s</xliff:g> විසින් සපයන ලදි."</string>
- <string name="no_permissions" msgid="7283357728219338112">"අවසර අවශ්‍ය නොමැත"</string>
- <string name="perm_costs_money" msgid="4902470324142151116">"මෙමඟින් ඔබට මුදල් වැය විය හැක"</string>
- <string name="usb_storage_activity_title" msgid="4465055157209648641">"USB මහා ආචයනය"</string>
- <string name="usb_storage_title" msgid="5901459041398751495">"USB සම්බන්ධිතයි"</string>
- <string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"ඔබ ඔබගේ පරිගණකයට සම්බන්ධ වී ඇත්තේ USB ස්පර්ශය හරහාය. ඔබට ඔබේ පරිගණකය හා ඔබගේ Android USB ආචයනය අතර ගොනු පිටපත් කිරීමට අවශ්‍ය නම් පහත බොත්තම ඔබන්න."</string>
- <string name="usb_storage_message" product="default" msgid="805351000446037811">"ඔබ ඔබගේ පරිගණකයට USB හරහා සම්බන්ධ වී ඇත. ඔබට ඔබේ පරිගණකය හා ඔබගේ Android SD පත අතර ගොනු පිටපත් කිරීමට අවශ්‍ය නම් පහත බොත්තම ස්පර්ශ කරන්න."</string>
- <string name="usb_storage_button_mount" msgid="1052259930369508235">"USB ආචයනය සක්‍රිය කරන්න"</string>
- <string name="usb_storage_error_message" product="nosdcard" msgid="3017045217365540658">"USB මහා ආචයනය සඳහා ඔබගේ USB ආචයනය භාවිතයේදී ගැටළුවක් තිබේ."</string>
- <string name="usb_storage_error_message" product="default" msgid="2876018512716970313">"USB මහා ආචයනය සඳහා ඔබගේ SD පත භාවිතයේදී ගැටළුවක් තිබේ."</string>
- <string name="usb_storage_notification_title" msgid="8175892554757216525">"USB සම්බන්ධිතයි"</string>
- <string name="usb_storage_notification_message" msgid="939822783828183763">"ඔබගේ පරිගණකය වෙතට/වෙතින් ගොනු පිටපත් කිරීමට ස්පර්ශ කරන්න."</string>
- <string name="usb_storage_stop_notification_title" msgid="2336058396663516017">"USB ආචයනය අක්‍රිය කරන්න"</string>
- <string name="usb_storage_stop_notification_message" msgid="1656852098555623822">"USB ආචයනය අක්‍රිය කිරීමට ස්පර්ශ කරන්න."</string>
- <string name="usb_storage_stop_title" msgid="660129851708775853">"USB ආචයනය භාවිතයේ පවතී"</string>
- <string name="usb_storage_stop_message" product="nosdcard" msgid="4264025280777219521">"USB ආචයනය අක්‍රිය කිරීමට පෙර, ඔබගේ පරිගණකයෙන් Android USB ආචයනය ගලවා දමන්න (\"පිට කරන්න\")."</string>
- <string name="usb_storage_stop_message" product="default" msgid="8043969782460613114">"USB ආචයනය අක්‍රිය කිරීමට පෙර, ඔබගේ Android SD පත පරිගණකයෙන් ගලවන්න."</string>
- <string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"USB ආචයනය අක්‍රිය කරන්න"</string>
- <string name="usb_storage_stop_error_message" msgid="1970374898263063836">"USB ආචයනය අක්‍රිය කිරීමේදී ගැටළුවක් ඇතිවිය. USB සංග්‍රාහකය ගලවා ඇති දැයි පරීක්ෂා කරන්න, පසුව නැවතත් උත්සහ කරන්න."</string>
- <string name="dlg_confirm_kill_storage_users_title" msgid="963039033470478697">"USB ආචයනය සක්‍රිය කරන්න"</string>
- <string name="dlg_confirm_kill_storage_users_text" msgid="5100428757107469454">"ඔබ USB ආචයනය සක්‍රිය නම්, ඔබ භාවිතා කරන සමහර යෙදුම් නැවතීම සහ ඔබ USB ආචයනය අක්‍රිය කරන තුරු නොතිබේවී."</string>
- <string name="dlg_error_title" msgid="7323658469626514207">"USB ක්‍රියාවලිය අසාර්ථකයි"</string>
- <string name="dlg_ok" msgid="7376953167039865701">"හරි"</string>
- <string name="usb_mtp_notification_title" msgid="3699913097391550394">"මාධ්‍ය උපාංගයක් ලෙස සම්බන්ධිතයි"</string>
- <string name="usb_ptp_notification_title" msgid="1960817192216064833">"කැමරාවක් ලෙස සම්බන්ධ කර ඇත"</string>
- <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"ස්ථාපිතයක් ලෙස සම්බන්ධයි"</string>
- <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB මෙවලමකට සම්බන්ධිතයි"</string>
- <string name="usb_notification_message" msgid="2290859399983720271">"අනෙක් USB විකල්පය සඳහා ස්පර්ශ කරන්න."</string>
- <string name="extmedia_format_title" product="nosdcard" msgid="9020092196061007262">"USB ආචයනය ෆෝමැට් කරන්නද?"</string>
- <string name="extmedia_format_title" product="default" msgid="3648415921526526069">"SD පත ෆෝමැට් කරන්නද?"</string>
- <string name="extmedia_format_message" product="nosdcard" msgid="3934016853425761078">"ඔබගේ USB ආචයනයේ ඇති සියලුම ගොනු මැකී යනු ඇත. මෙම ක්‍රියාව ආපසු හැරවිය නොහැක!"</string>
- <string name="extmedia_format_message" product="default" msgid="14131895027543830">"ඔබගේ පතේ සියලු දත්ත නැති වනු ඇත."</string>
- <string name="extmedia_format_button_format" msgid="4131064560127478695">"ෆෝමැට්"</string>
- <string name="adb_active_notification_title" msgid="6729044778949189918">"USB නිදොස්කරණය සම්බන්ධිතයි"</string>
- <string name="adb_active_notification_message" msgid="1016654627626476142">"USB නිදොස්කරණය අබල කිරීමට ස්පර්ශ කරන්න."</string>
- <string name="select_input_method" msgid="4653387336791222978">"ආදාන ක්‍රමයක් තෝරන්න"</string>
- <string name="configure_input_methods" msgid="9091652157722495116">"ආදාන ක්‍රම සකසන්න"</string>
- <string name="use_physical_keyboard" msgid="6203112478095117625">"භෞතික යතුරු පුවරුව"</string>
- <string name="hardware" msgid="7517821086888990278">"දෘඨාංග"</string>
- <string name="select_keyboard_layout_notification_title" msgid="1407367017263030773">"යතුරු පුවරුවට පිරිසැලැස්ම තෝරන්න"</string>
- <string name="select_keyboard_layout_notification_message" msgid="4465907700449257063">"යතුරු පුවරුවට පිරිසැලැස්මක් තේරීමට ස්පර්ශ කරන්න."</string>
- <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="candidates_style" msgid="4333913089637062257"><u>"අපේක්ෂකයන්"</u></string>
- <string name="ext_media_checking_notification_title" product="nosdcard" msgid="3449816005351468560">"USB ආචයනය සකසමින්"</string>
- <string name="ext_media_checking_notification_title" product="default" msgid="5457603418970994050">"SD පත සුදානම් කරමින්"</string>
- <string name="ext_media_checking_notification_message" msgid="8287319882926737053">"වැරදි සඳහා පරීක්ෂා කරමින්."</string>
- <string name="ext_media_nofs_notification_title" product="nosdcard" msgid="7788040745686229307">"හිස් USB ආචයනය"</string>
- <string name="ext_media_nofs_notification_title" product="default" msgid="780477838241212997">"හිස් SD පත"</string>
- <string name="ext_media_nofs_notification_message" product="nosdcard" msgid="7840121067427269500">"SD පත හිස් හෝ සහාය නොදක්වන ගොනු පද්ධතියක් ඇත."</string>
- <string name="ext_media_nofs_notification_message" product="default" msgid="8641065641786923604">"SD පත හිස් හෝ සහය නොදක්වන ගොනු පද්ධතියක් ඇත"</string>
- <string name="ext_media_unmountable_notification_title" product="nosdcard" msgid="2090046769532713563">"හානි වූ USB ආචයනය"</string>
- <string name="ext_media_unmountable_notification_title" product="default" msgid="6410723906019100189">"හානි වූ SD පත"</string>
- <string name="ext_media_unmountable_notification_message" product="nosdcard" msgid="1795917578395333280">"USB ආචයනයට හානි වී ඇත. එය නැවත ෆෝමැට් ගැන්වීමට උත්සහ කරන්න."</string>
- <string name="ext_media_unmountable_notification_message" product="default" msgid="1753898567525568253">"SD පතට හානි වී ඇත. එය නැවත ෆෝමැට් ගැන්වීමට උත්සහ කරන්න."</string>
- <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"බලාපොරොත්තු නොවූ ලෙස USB ආචයනය ඉවත් කෙරිණි"</string>
- <string name="ext_media_badremoval_notification_title" product="default" msgid="6872152882604407837">"SD පත බලාපොරොත්තු රහිතව ඉවත් කරන ලදි"</string>
- <string name="ext_media_badremoval_notification_message" product="nosdcard" msgid="4329848819865594241">"දත්ත නැතිවීම වැළක්වීමට USB ආචයනය ඉවත්කිරීමට පෙර ගලවන්න."</string>
- <string name="ext_media_badremoval_notification_message" product="default" msgid="7260183293747448241">"දත්ත නැතිවීම වැළක්වීමට ගැලවීමට කලින් SD පත ඉවත් කරන්න."</string>
- <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"ඉවත් කිරීමට USB ආචයනය ආරක්ෂිතයි"</string>
- <string name="ext_media_safe_unmount_notification_title" product="default" msgid="6729801130790616200">"SD පත ඉවත් කිරීමට සුරක්ෂිතයි"</string>
- <string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"ඔබට USB ආචයනය ආරක්ෂිතව ඉවත් කිරීමට පුළුවනි."</string>
- <string name="ext_media_safe_unmount_notification_message" product="default" msgid="568841278138377604">"ඔබට ආරක්ෂිතව SD පත ඉවත් කළ හැක"</string>
- <string name="ext_media_nomedia_notification_title" product="nosdcard" msgid="4486377230140227651">"USB ආචයනය ඉවත් කරන ලදි"</string>
- <string name="ext_media_nomedia_notification_title" product="default" msgid="8902518030404381318">"SD පත ඉවත් කර ඇත"</string>
- <string name="ext_media_nomedia_notification_message" product="nosdcard" msgid="6921126162580574143">"USB ආචයනය ඉවත්කොට ඇත. අලුත් මාධ්‍යයක් ඇතුළත් කරන්න."</string>
- <string name="ext_media_nomedia_notification_message" product="default" msgid="3870120652983659641">"SD පත ඉවත් කරන ලදි. අලුත් එකක් ඇතුළත් කරන්න."</string>
- <string name="activity_list_empty" msgid="1675388330786841066">"ගැලපෙන ක්‍රියාකාරකම් හමු නොවුණි."</string>
- <string name="permlab_pkgUsageStats" msgid="8787352074326748892">"සංරචකය භාවිත කිරීමේ සංඛ්‍යාන යාවත්කාලීන කරන්න"</string>
- <string name="permdesc_pkgUsageStats" msgid="1106612424254277630">"එකතු කරන ලද සංරචකය භාවිතා සංඛ්‍යාන වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම් සඳහා නොවේ."</string>
- <string name="permlab_copyProtectedData" msgid="4341036311211406692">"අන්තර්ගතය පිටපත් කරන්න"</string>
- <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"අන්තර්ගතය පිටපත් කිරීමට සුපුරුදු අන්තර්ගත සේවාව ඉල්වා සිටීමට යෙදුමට අවසර දෙන්න. සාමාන්‍ය යෙදුම්වල භාවිතය සඳහා නොවේ."</string>
- <string name="permlab_route_media_output" msgid="1642024455750414694">"මාධ්‍ය ප්‍රතිදානයේ මාර්ගගත කිරීම"</string>
- <string name="permdesc_route_media_output" msgid="4932818749547244346">"වෙනත් බාහිර උපාංග වෙත මාධ්‍ය ප්‍රතිදානය යැවීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"යතුරු පාලක ආරක්‍ෂිත ආචයනය වෙත ප්‍රවේශය"</string>
- <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"යතුරු ආරක්ෂක ආචයනයට ප්‍රවේශ වීමට යෙදුමට දෙයි."</string>
- <string name="permlab_control_keyguard" msgid="172195184207828387">"පෙන්වීමේ හා සැඟවීමේ යතුරු ආරක්ෂකය පාලනය කරන්න"</string>
- <string name="permdesc_control_keyguard" msgid="3043732290518629061">"යතුරු ආරක්ෂකය පාලනයට යෙදුමකට අවසර දෙන්න."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"විශාලන පාලනය සඳහා දෙවරක් ස්පර්ශ කරන්න"</string>
- <string name="gadget_host_error_inflating" msgid="4882004314906466162">"විජටය එකතු කිරීමට නොහැකි විය."</string>
- <string name="ime_action_go" msgid="8320845651737369027">"යන්න"</string>
- <string name="ime_action_search" msgid="658110271822807811">"සෙවීම"</string>
- <string name="ime_action_send" msgid="2316166556349314424">"යවන්න"</string>
- <string name="ime_action_next" msgid="3138843904009813834">"මීලඟ"</string>
- <string name="ime_action_done" msgid="8971516117910934605">"හරි"</string>
- <string name="ime_action_previous" msgid="1443550039250105948">"පෙර"</string>
- <string name="ime_action_default" msgid="2840921885558045721">"ක්‍රියාකරවන්න"</string>
- <string name="dial_number_using" msgid="5789176425167573586">"<xliff:g id="NUMBER">%s</xliff:g> භාවිතයෙන්\nඅංකය අමතන්න"</string>
- <string name="create_contact_using" msgid="4947405226788104538">"<xliff:g id="NUMBER">%s</xliff:g> භාවිතයෙන්\nසම්බන්ධතාවයක් නිර්මාණය කරන්න"</string>
- <string name="grant_credentials_permission_message_header" msgid="2106103817937859662">"පහත දැක්වෙන එකක් හෝ ඊට වැඩි යෙදුම් ගණනක් ඔබගේ ගිණුමට ප්‍රවේශ වීමට, දැන් සහ ඉදිරියේදී අවසර ඉල්ලයි."</string>
- <string name="grant_credentials_permission_message_footer" msgid="3125211343379376561">"මෙම ඉල්ලීමට අවසර දීමට ඔබට අවශ්‍යද?"</string>
- <string name="grant_permissions_header_text" msgid="6874497408201826708">"ප්‍රවේශය ඉල්ලීම"</string>
- <string name="allow" msgid="7225948811296386551">"අවසර දෙන්න"</string>
- <string name="deny" msgid="2081879885755434506">"ප්‍රතික්ෂේප කරන්න"</string>
- <string name="permission_request_notification_title" msgid="6486759795926237907">"අවසර ඉල්ලා සිටී"</string>
- <string name="permission_request_notification_with_subtitle" msgid="8530393139639560189">"<xliff:g id="ACCOUNT">%s</xliff:g> ගිණුම සඳහා\nඅවසර ඉල්ලන ලදි."</string>
- <string name="input_method_binding_label" msgid="1283557179944992649">"ආදාන ක්‍රමය"</string>
- <string name="sync_binding_label" msgid="3687969138375092423">"සමමුහුර්තය"</string>
- <string name="accessibility_binding_label" msgid="4148120742096474641">"ප්‍රවේශ්‍යතාව"</string>
- <string name="wallpaper_binding_label" msgid="1240087844304687662">"බිතුපත"</string>
- <string name="chooser_wallpaper" msgid="7873476199295190279">"බිතුපත වෙනස් කරන්න"</string>
- <string name="notification_listener_binding_label" msgid="2014162835481906429">"දැනුම්දීම් අසන්නා"</string>
- <string name="vpn_title" msgid="19615213552042827">"VPN ක්‍රියාත්මකයි"</string>
- <string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g> මඟින් VPN සක්‍රීය කරන ලදි"</string>
- <string name="vpn_text" msgid="3011306607126450322">"ජාලය කළමනාකරණය කිරීමට ස්පර්ශ කරන්න."</string>
- <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g> වෙත සම්බන්ධ වුණි. ජාලය කළමනාකරණය කිරීමට ස්පර්ශ කරන්න."</string>
- <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>
- <string name="vpn_lockdown_config" msgid="6415899150671537970">"වින්‍යාස කිරීමට ස්පර්ශ කරන්න"</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>
- <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"මෝටර් රථ ආකාරයෙන් පිටවීමට ස්පර්ශ කරන්න."</string>
- <string name="tethered_notification_title" msgid="3146694234398202601">"ටෙදරින් හෝ හොට්ස්පොට් සක්‍රීයයි"</string>
- <string name="tethered_notification_message" msgid="6857031760103062982">"සකස් කිරීමට ස්පර්ශ කරන්න."</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>
- <string name="throttle_warning_notification_title" msgid="4890894267454867276">"ඉහළ ජංගම දත්ත භාවිතය"</string>
- <string name="throttle_warning_notification_message" msgid="3340822228599337743">"ජංගම දත්ත භාවිතය ගැන තව දැනගැනීමට ස්පර්ශ කරන්න."</string>
- <string name="throttled_notification_title" msgid="6269541897729781332">"ජංගම දත්ත සීමාව ඉක්මවා ඇත"</string>
- <string name="throttled_notification_message" msgid="5443457321354907181">"ජංගම දත්ත භාවිතය ගැන තව දැනගැනීමට ස්පර්ශ කරන්න."</string>
- <string name="no_matches" msgid="8129421908915840737">"ගැලපීම් නැත"</string>
- <string name="find_on_page" msgid="1946799233822820384">"පිටුවෙහි සෙවීම"</string>
- <plurals name="matches_found">
- <item quantity="one" msgid="8167147081136579439">"ගැළපීම් 1 යි"</item>
- <item quantity="other" msgid="4641872797067609177">"<xliff:g id="TOTAL">%d</xliff:g> කින් <xliff:g id="INDEX">%d</xliff:g>"</item>
- </plurals>
- <string name="action_mode_done" msgid="7217581640461922289">"හරි"</string>
- <string name="progress_unmounting" product="nosdcard" msgid="3923810448507612746">"USB ආචයනය ගැලවීම..."</string>
- <string name="progress_unmounting" product="default" msgid="1327894998409537190">"SD පත ගලවමින්..."</string>
- <string name="progress_erasing" product="nosdcard" msgid="4521573321524340058">"USB ආචයනය මකමින්..."</string>
- <string name="progress_erasing" product="default" msgid="6596988875507043042">"SD පත මකමින්..."</string>
- <string name="format_error" product="nosdcard" msgid="6299769563624776948">"USB ආචයනය මැකිය නොහැක."</string>
- <string name="format_error" product="default" msgid="7315248696644510935">"SD පත මැකීමට නොහැකි විය."</string>
- <string name="media_bad_removal" msgid="7960864061016603281">"ගැලවීමට පෙර SD පත ඉවත්කර ඇත."</string>
- <string name="media_checking" product="nosdcard" msgid="418188720009569693">"USB ආචයනය මේ වනවිට පරීක්ෂා කරමින් පවතී."</string>
- <string name="media_checking" product="default" msgid="7334762503904827481">"SD පත දැන් පරීක්ෂා කරමින් පවතී."</string>
- <string name="media_removed" msgid="7001526905057952097">"SD පත ඉවත් කර ඇත."</string>
- <string name="media_shared" product="nosdcard" msgid="5830814349250834225">"පරිගණකයක් විසින් දැන් USB ආචයනය භාවිතා කරයි."</string>
- <string name="media_shared" product="default" msgid="5706130568133540435">"SD පත දැනට පරිගණකයකින් පාවිච්චි කරයි."</string>
- <string name="media_unknown_state" msgid="729192782197290385">"බාහිර මාධ්‍යය නොදන්නා අවස්ථාවේ පවතියි."</string>
- <string name="share" msgid="1778686618230011964">"බෙදාගන්න"</string>
- <string name="find" msgid="4808270900322985960">"සොයන්න"</string>
- <string name="websearch" msgid="4337157977400211589">"වෙබ් සෙවුම"</string>
- <string name="find_next" msgid="5742124618942193978">"මීළඟ සොයන්න"</string>
- <string name="find_previous" msgid="2196723669388360506">"පෙර එක සොයන්න"</string>
- <string name="gpsNotifTicker" msgid="5622683912616496172">"<xliff:g id="NAME">%s</xliff:g> ගෙන් ස්ථානය ඉල්ලීම"</string>
- <string name="gpsNotifTitle" msgid="5446858717157416839">"ස්ථාන ඉල්ලීම"</string>
- <string name="gpsNotifMessage" msgid="1374718023224000702">"<xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>) විසින් ඉල්ලන ලද"</string>
- <string name="gpsVerifYes" msgid="2346566072867213563">"ඔව්"</string>
- <string name="gpsVerifNo" msgid="1146564937346454865">"නැත"</string>
- <string name="sync_too_many_deletes" msgid="5296321850662746890">"මැකීමේ සීමාව ඉක්මවන ලදි"</string>
- <string name="sync_too_many_deletes_desc" msgid="496551671008694245">"<xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g> සඳහා <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g> ගිණුමේ මකන ලද අයිතම <xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> ක් ඇත. ඔබට කුමක් කිරීමට අවශ්‍යද?"</string>
- <string name="sync_really_delete" msgid="2572600103122596243">"අයිතම මකන්න"</string>
- <string name="sync_undo_deletes" msgid="2941317360600338602">"මැකීම් අස් කරන්න"</string>
- <string name="sync_do_nothing" msgid="3743764740430821845">"දැනට කිසිවක් නොකරන්න"</string>
- <string name="choose_account_label" msgid="5655203089746423927">"ගිණුමක් තෝරන්න"</string>
- <string name="add_account_label" msgid="2935267344849993553">"ගිණුමක් එකතු කරන්න"</string>
- <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>
- <string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<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>
- <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"පැය වැඩිකරන්න"</string>
- <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"පැය අඩුකරන්න"</string>
- <string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"ප.ව.සකසන්න"</string>
- <string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"පෙ.ව. සකස් කිරීම"</string>
- <string name="date_picker_increment_month_button" msgid="5369998479067934110">"මාසය වැඩි කරන්න"</string>
- <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"මාසයක් අඩු කරන්න"</string>
- <string name="date_picker_increment_day_button" msgid="7130465412308173903">"දවස වැඩි කරන්න"</string>
- <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"දවස අඩු කරන්න"</string>
- <string name="date_picker_increment_year_button" msgid="6318697384310808899">"වසර වැඩි කරන්න"</string>
- <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"වසර අඩු කරන්න"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"අවලංගු කරන්න"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"මකන්න"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"හරි"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"ආකාරය වෙනස් කරන්න"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"ඇතුල් කරන්න"</string>
- <string name="activitychooserview_choose_application" msgid="2125168057199941199">"යෙදුමක් තෝරන්න"</string>
- <string name="shareactionprovider_share_with" msgid="806688056141131819">"සමඟ බෙදාගන්න"</string>
- <string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> සමඟින් බෙදා ගන්න"</string>
- <string name="content_description_sliding_handle" msgid="415975056159262248">"සර්පණ හැඩලය. ස්පර්ශ කර රඳවා සිටීම."</string>
- <string name="description_direction_up" msgid="7169032478259485180">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> සඳහා උඩට සර්පණය කරන්න."</string>
- <string name="description_direction_down" msgid="5087739728639014595">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> සඳහා පහලට සර්පණය කරන්න."</string>
- <string name="description_direction_left" msgid="7207478719805562165">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> සඳහා වමට සර්පණය කරන්න."</string>
- <string name="description_direction_right" msgid="8034433242579600980">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> සඳහා දකුණට සර්පණය කරන්න."</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"අඟුල අරින්න"</string>
- <string name="description_target_camera" msgid="969071997552486814">"කැමරාව"</string>
- <string name="description_target_silent" msgid="893551287746522182">"නිහඬ"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"ශබ්ද සක්‍රීය කරන්න"</string>
- <string name="description_target_search" msgid="3091587249776033139">"සෙවීම"</string>
- <string name="description_target_unlock_tablet" msgid="3833195335629795055">"අගුළු ඇරීමට ස්වයිප් කරන්න."</string>
- <string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"මුරපද යතුරු කියවනු ඇසීමට ඉස් බණුවක් සම්බන්ධ කරන්න."</string>
- <string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"නැවතුම."</string>
- <string name="action_bar_home_description" msgid="5293600496601490216">"මුල් පිටුවට සංචාලනය කරන්න"</string>
- <string name="action_bar_up_description" msgid="2237496562952152589">"ඉහලට සංචාලනය කරන්න"</string>
- <string name="action_menu_overflow_description" msgid="2295659037509008453">"තවත් විකල්ප"</string>
- <string name="action_bar_home_description_format" msgid="7965984360903693903">"%1$s, %2$s"</string>
- <string name="action_bar_home_subtitle_description_format" msgid="6985546530471780727">"%1$s, %2$s, %3$s"</string>
- <string name="storage_internal" msgid="4891916833657929263">"අභ්‍යන්තර ආචයනය"</string>
- <string name="storage_sd_card" msgid="3282948861378286745">"SD පත"</string>
- <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>
- <string name="data_usage_warning_body" msgid="2814673551471969954">"භාවිතය සහ සැකසීම් බැලීමට ස්පර්ශ කරන්න."</string>
- <string name="data_usage_3g_limit_title" msgid="7093334419518706686">"2G-3G දත්ත අබලයි"</string>
- <string name="data_usage_4g_limit_title" msgid="7636489436819470761">"4G දත්ත අබල කරන ලදි"</string>
- <string name="data_usage_mobile_limit_title" msgid="7869402519391631884">"ජංගම දත්ත අබල කර ඇත"</string>
- <string name="data_usage_wifi_limit_title" msgid="8992154736441284865">"Wi-Fi දත්ත අබල කරන ලදි"</string>
- <string name="data_usage_limit_body" msgid="3317964706973601386">"සබල කිරීමට ස්පර්ශ කරන්න."</string>
- <string name="data_usage_3g_limit_snoozed_title" msgid="7026739121138005231">"2G-3G දත්ත සීමාව ඉක්මවන ලදි"</string>
- <string name="data_usage_4g_limit_snoozed_title" msgid="1106562779311209039">"4G දත්ත සීමාව ඉක්මවා යන ලදි"</string>
- <string name="data_usage_mobile_limit_snoozed_title" msgid="279240572165412168">"ජංගම දත්ත සීමාව ඉක්මවා යන ලදි"</string>
- <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>
- <string name="data_usage_restricted_body" msgid="6741521330997452990">"සීමා කිරීම ඉවත් කිරීමට ස්පර්ශ කරන්න"</string>
- <string name="ssl_certificate" msgid="6510040486049237639">"ආරක්‍ෂිත සහතිකය"</string>
- <string name="ssl_certificate_is_valid" msgid="6825263250774569373">"මෙම සහතිකය වලංගුයි."</string>
- <string name="issued_to" msgid="454239480274921032">"ලබාදුන්නේ:"</string>
- <string name="common_name" msgid="2233209299434172646">"පොදු නාමය:"</string>
- <string name="org_name" msgid="6973561190762085236">"සංවිධානය:"</string>
- <string name="org_unit" msgid="7265981890422070383">"සංවිධානාත්මක ඒකකය:"</string>
- <string name="issued_by" msgid="2647584988057481566">"ලබාදෙන ලද්දේ:"</string>
- <string name="validity_period" msgid="8818886137545983110">"වලංගුතාවය:"</string>
- <string name="issued_on" msgid="5895017404361397232">"නිකුත් කරන ලද්දේ:"</string>
- <string name="expires_on" msgid="3676242949915959821">"කල් ඉකුත් වන්නේ:"</string>
- <string name="serial_number" msgid="758814067660862493">"අනුක්‍රමාංකය:"</string>
- <string name="fingerprints" msgid="4516019619850763049">"ඇඟිලි සලකුණු:"</string>
- <string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-256 ඇඟිලිසලකුණ:"</string>
- <string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1 ඇඟිලි සලකුණ:"</string>
- <string name="activity_chooser_view_see_all" msgid="4292569383976636200">"සියල්ල බලන්න"</string>
- <string name="activity_chooser_view_dialog_title_default" msgid="4710013864974040615">"ක්‍රියාකාරකම තෝරන්න"</string>
- <string name="share_action_provider_share_with" msgid="5247684435979149216">"සමඟ බෙදාගන්න"</string>
- <string name="status_bar_device_locked" msgid="3092703448690669768">"උපාංගයට අගුළු වැටි ඇත."</string>
- <string name="list_delimeter" msgid="3975117572185494152">", "</string>
- <string name="sending" msgid="3245653681008218030">"යවමින්..."</string>
- <string name="launchBrowserDefault" msgid="2057951947297614725">"බ්‍රවුසරය දියත් කරන්නද?"</string>
- <string name="SetupCallDefault" msgid="5834948469253758575">"ඇමතුම පිළිගන්නවාද?"</string>
- <string name="activity_resolver_use_always" msgid="8017770747801494933">"සැම විටම"</string>
- <string name="activity_resolver_use_once" msgid="2404644797149173758">"එක් වාරයයි"</string>
- <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"ටැබ්ලට්ය"</string>
- <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"දුරකථනය"</string>
- <string name="default_audio_route_name_headphones" msgid="8119971843803439110">"ඉස් බණු"</string>
- <string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"නාදක ඩොක් කරන්න"</string>
- <string name="default_media_route_name_hdmi" msgid="2450970399023478055">"HDMI"</string>
- <string name="default_audio_route_category_name" msgid="3722811174003886946">"පද්ධතිය"</string>
- <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"බ්ලූටූත් ශ්‍රව්‍ය"</string>
- <string name="wireless_display_route_description" msgid="9070346425023979651">"රැහැන් රහිත දර්ශනය"</string>
- <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"හරි"</string>
- <string name="media_route_button_content_description" msgid="5758553567065145276">"මාධ්‍ය ප්‍රතිදානය"</string>
- <string name="media_route_status_scanning" msgid="7279908761758293783">"පරිලෝකනය කරමින්…"</string>
- <string name="media_route_status_connecting" msgid="6422571716007825440">"සම්බන්ධ වෙමින්…"</string>
- <string name="media_route_status_available" msgid="6983258067194649391">"ලබාගත හැක"</string>
- <string name="media_route_status_not_available" msgid="6739899962681886401">"ලබාගත නොහැක"</string>
- <string name="media_route_status_in_use" msgid="4533786031090198063">"භාවිතයේ ඇත"</string>
- <string name="display_manager_built_in_display_name" msgid="2583134294292563941">"තිළැලි තිරය"</string>
- <string name="display_manager_hdmi_display_name" msgid="1555264559227470109">"HDMI තිරය"</string>
- <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"උඩැතිරිය #<xliff:g id="ID">%1$d</xliff:g>"</string>
- <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string>
- <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", ආරක්‍ෂිත"</string>
- <string name="wifi_display_notification_title" msgid="2223050649240326557">"නොරැහැන් සංදර්ශකය සම්බන්ධිතයි"</string>
- <string name="wifi_display_notification_message" msgid="4498802012464170685">"වෙනත් උපාංගයක් මත මෙම තිරය පෙන්වයි"</string>
- <string name="wifi_display_notification_disconnect" msgid="6183754463561153372">"විසන්ධි කරන්න"</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"හදිසි ඇමතුම"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"රටාව අමතකයි"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"වැරදි රටාවකි"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"වැරදි මුරපදය"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN එක වැරදියි"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"තත්පර <xliff:g id="NUMBER">%1$d</xliff:g> ට පසුව නැවත උත්සහ කරන්න."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"ඔබගේ රටාව අඳින්න"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"SIM PIN ඇතුලු කරන්න"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"PIN එක ඇතුළු කරන්න"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"මුරපදය ඇතුළු කරන්න"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"දැන් SIM එක අබල කර ඇත. ඉදිරියට යාමට PUK කේතය යොදන්න. විස්තර සඳහා වාහකයා අමතන්න."</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"අපේක්ෂිත PIN කේතය ඇතුළත් කරන්න"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"අපේක්ෂිත PIN කේතය ස්ථිර කරන්න"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM පත අගුළු අරිමින්..."</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"වැරදි PIN කේතයකි."</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"අංක 4 සිට 8 අතර වන PIN එකක් ටයිප් කරන්න."</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK කේතය සංඛ්‍යා 8 ක් හෝ වැඩි විය යුතුය."</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"නිවැරදි PUK කේතය නැවත ඇතුලත් කරන්න. නැවත නැවත උත්සාහ කිරීමෙන් SIM එක ස්ථිරවම අබල කරයි."</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN කේත ගැලපී නැත"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"රටා උත්සාහ කිරීම් වැඩිය"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"අගුළු ඇරීමට, ඔබගේ Google ගිණුම සමග පුරනය වන්න."</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"පරිශීලක නාමය (ඊ-තැපෑල)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"මුරපදය"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"පුරනය වන්න"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"වලංගු නොවන පරිශීලක නාමයක් හෝ මුරපදයක්."</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"ඔබගේ පරිශීලක නාමය හෝ මුරපදය අමතකද?\n "<b>"google.com/accounts/recovery"</b>" වෙත යන්න."</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"ගිණුම පරීක්ෂා කරමින්…"</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"ඔබ PIN අංකය <xliff:g id="NUMBER_0">%d</xliff:g> වාරයක් වැරදියට ටයිප් කොට ඇත.\n\n තත්පර <xliff:g id="NUMBER_1">%d</xliff:g> ක් ඇතුළත නැවත උත්සාහ කරන්න."</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"<xliff:g id="NUMBER_0">%d</xliff:g> වතාවක් ඔබගේ මුරපදය ඔබ වැරදියට ටයිප් කර ඇත. \n\nතත්පර <xliff:g id="NUMBER_1">%d</xliff:g> ට පසුව නැවත උත්සහ කරන්න."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"ඔබ <xliff:g id="NUMBER_0">%d</xliff:g> වාරයක් අගුළු ඇරීමේ රටාව වැරදියට ඇඳ ඇත. \n\nතත්පර <xliff:g id="NUMBER_1">%d</xliff:g> ක් ඇතුළත නැවත උත්සාහ කරන්න."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"ඔබ ටැබ්ලටය අගුළු හැරීමට වැරදියට අවස්ථා <xliff:g id="NUMBER_0">%d</xliff:g> ක් උත්සාහ කර ඇත. අවස්ථා <xliff:g id="NUMBER_1">%d</xliff:g> ක් අසාර්ථකව උත්සහ කිරීමකින් පසුව, කර්මාන්ත ශාලා මුල් තත්වයට නැවත පත් වන අතර සියලු පරිශීලක දත්ත නැති වෙයි."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"ඔබ දුරකථනය අගුළු ඇරීමට වාර <xliff:g id="NUMBER_0">%d</xliff:g> කදී වැරදී ප්‍රයත්නයන් ගෙන තිබේ. තවත් අසාර්ථක ප්‍රයත්න <xliff:g id="NUMBER_1">%d</xliff:g> කින් පසුව, දුරකථනය කර්මාන්ත ශාලාවේ සුපුරුද්දට යළි පිහිටුවන අතර සියලුම පරිශීලක දත්ත නැති වී යයි."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"ටැබ්ලටයේ අගුළු ඇරීමට ඔබ වැරදි ප්‍රයත්න <xliff:g id="NUMBER">%d</xliff:g> වාරයක් ගෙන ඇත. දැන් ටැබ්ලටය කර්මාන්ත ශාලා සුපුරුද්ද වෙත යළි පිහිටුවීම කෙරේ."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"ඔබ දුරකථනය අගුළු ඇරීමට වාර <xliff:g id="NUMBER">%d</xliff:g> කදී වැරදී ප්‍රයන්තයන් ගෙන තිබේ. දැන් දුරකථනය කර්මාන්තශාලා සුපුරුද්දට පිහිටුවනු ලබයි."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"ඔබ අගුළු ඇරිමේ රටාව <xliff:g id="NUMBER_0">%d</xliff:g> වතාවක් වැරදියට ඇඳ ඇත. තවත් අසාර්ථක උත්සාහ <xliff:g id="NUMBER_1">%d</xliff:g> කින් පසුව, ඊ-තැපැල් ගිණුම භාවිතා කරමින් ඔබගේ ටැබ්ලටයේ අගුළු ඇරීමට ඔබට පවසනු ඇත.\n\n නැවත තත්පර <xliff:g id="NUMBER_2">%d</xliff:g> කින් උත්සාහ කරන්න."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"ඔබ වැරදියට <xliff:g id="NUMBER_0">%d</xliff:g> වතාවක් ඔබගේ අගුළු හැරීමේ රටාව ඇඳ ඇත. අසාර්ථක උත්සහ කිරීම් <xliff:g id="NUMBER_1">%d</xliff:g> න් පසුව, ඔබගේ ඊ-තැපැල් ලිපිනය භාවිතයෙන් ඔබගේ දුරකථනය අගුළු හැරීමට ඔබගෙන් අසයි.\n\n තත්පර <xliff:g id="NUMBER_2">%d</xliff:g> න් පසුව නැවත උත්සහ කරන්න."</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"ඉවත් කරන්න"</string>
- <string name="safe_media_volume_warning" product="default" msgid="7324161939475478066">"නිර්දේශිත මට්ටමෙන් ඉහළට ශබ්දය වැඩි කරනවද?\nවැඩි කාලයක් ඉහළ ශබ්දයක් ශ්‍රවනය කිරීමෙන් ඔබගේ ශ්‍රවනයට හානි විය හැක."</string>
- <string name="continue_to_enable_accessibility" msgid="1626427372316070258">"ප්‍රවේශ්‍යතාවය සබල කිරීමට ඇඟිලි දෙකක් පහළට රඳවා සිටින්න."</string>
- <string name="accessibility_enabled" msgid="1381972048564547685">"ප‍්‍රවේශ්‍යතාව සබල කරන ලදි."</string>
- <string name="enable_accessibility_canceled" msgid="3833923257966635673">"ප‍්‍රවේශ්‍යතාව අවලංගු කර ඇත."</string>
- <string name="user_switched" msgid="3768006783166984410">"දැනට සිටින පරිශීලකයා <xliff:g id="NAME">%1$s</xliff:g>."</string>
- <string name="owner_name" msgid="2716755460376028154">"හිමිකරු"</string>
- <string name="error_message_title" msgid="4510373083082500195">"දෝෂය"</string>
- <string name="app_no_restricted_accounts" msgid="5739463249673727736">"සීමා සහිත පැතිකඩ සඳහා වන ගිණුම් වෙත මෙම යෙදුම සහය නොදක්වයි"</string>
- <string name="app_not_found" msgid="3429141853498927379">"මෙම ක්‍රියාව හසුරුවීමට යෙදුමක් සොයාගත්තේ නැත"</string>
- <string name="revoke" msgid="5404479185228271586">"අහෝසි කරන්න"</string>
- <string name="mediaSize_iso_a0" msgid="7875427489420821793">"ISO A0"</string>
- <string name="mediaSize_iso_a1" msgid="3760734499050875356">"ISO A1"</string>
- <string name="mediaSize_iso_a2" msgid="5973266378020144382">"ISO A2"</string>
- <string name="mediaSize_iso_a3" msgid="1373407105687300884">"ISO A3"</string>
- <string name="mediaSize_iso_a4" msgid="6689772807982597254">"ISO A4"</string>
- <string name="mediaSize_iso_a5" msgid="5353549652015741040">"ISO A5"</string>
- <string name="mediaSize_iso_a6" msgid="8585038048674911907">"ISO A6"</string>
- <string name="mediaSize_iso_a7" msgid="6641836716963839119">"ISO A7"</string>
- <string name="mediaSize_iso_a8" msgid="7571139437465693355">"ISO A8"</string>
- <string name="mediaSize_iso_a9" msgid="1378455891957115079">"ISO A9"</string>
- <string name="mediaSize_iso_a10" msgid="2480747457429475344">"ISO A10"</string>
- <string name="mediaSize_iso_b0" msgid="3965935097661108039">"ISO B0"</string>
- <string name="mediaSize_iso_b1" msgid="2505753285010115437">"ISO B1"</string>
- <string name="mediaSize_iso_b2" msgid="8763874709859458453">"ISO B2"</string>
- <string name="mediaSize_iso_b3" msgid="4210506688191764076">"ISO B3"</string>
- <string name="mediaSize_iso_b4" msgid="5749404165888526034">"ISO B4"</string>
- <string name="mediaSize_iso_b5" msgid="7640627414621904733">"ISO B5"</string>
- <string name="mediaSize_iso_b6" msgid="7342988864712748544">"ISO B6"</string>
- <string name="mediaSize_iso_b7" msgid="5069844065235382429">"ISO B7"</string>
- <string name="mediaSize_iso_b8" msgid="7316818922278779774">"ISO B8"</string>
- <string name="mediaSize_iso_b9" msgid="5414727094026532341">"ISO B9"</string>
- <string name="mediaSize_iso_b10" msgid="5251253731832048185">"ISO B10"</string>
- <string name="mediaSize_iso_c0" msgid="4003138342671964217">"ISO C0"</string>
- <string name="mediaSize_iso_c1" msgid="1935188063393553008">"ISO C1"</string>
- <string name="mediaSize_iso_c2" msgid="3197307969712069904">"ISO C2"</string>
- <string name="mediaSize_iso_c3" msgid="4335826087321913508">"ISO C3"</string>
- <string name="mediaSize_iso_c4" msgid="3745639598281015005">"ISO C4"</string>
- <string name="mediaSize_iso_c5" msgid="8269457765822791013">"ISO C5"</string>
- <string name="mediaSize_iso_c6" msgid="566666105260346930">"ISO C6"</string>
- <string name="mediaSize_iso_c7" msgid="8678413180782608498">"ISO C7"</string>
- <string name="mediaSize_iso_c8" msgid="8392376206627041730">"ISO C8"</string>
- <string name="mediaSize_iso_c9" msgid="9191613372324845405">"ISO C9"</string>
- <string name="mediaSize_iso_c10" msgid="7327709699184920822">"ISO C10"</string>
- <string name="mediaSize_na_letter" msgid="4191805615829472953">"අකුරු"</string>
- <string name="mediaSize_na_gvrnmt_letter" msgid="7853382192649405507">"රජයේ ලිපිය"</string>
- <string name="mediaSize_na_legal" msgid="6697982988283823150">"නීත්‍යනුකූල"</string>
- <string name="mediaSize_na_junior_legal" msgid="3727743969902758948">"ප්‍රාථමික නීතිමය"</string>
- <string name="mediaSize_na_ledger" msgid="281871464896601236">"ලෙජරය"</string>
- <string name="mediaSize_na_tabloid" msgid="5775966416333578127">"කුඩා පුවත්පත"</string>
- <string name="write_fail_reason_cancelled" msgid="7091258378121627624">"අවලංගු කරන ලදි"</string>
- <string name="write_fail_reason_cannot_write" msgid="8132505417935337724">"අන්තර්ගතය ලිවීමේදී දෝෂයකි"</string>
- <string name="restr_pin_enter_pin" msgid="3395953421368476103">"PIN එක ඇතුළු කරන්න"</string>
- <string name="restr_pin_enter_old_pin" msgid="1462206225512910757">"වත්මන් PIN"</string>
- <string name="restr_pin_enter_new_pin" msgid="5959606691619959184">"නව PIN"</string>
- <string name="restr_pin_confirm_pin" msgid="8501523829633146239">"නව PIN තහවුරු කරන්න"</string>
- <string name="restr_pin_create_pin" msgid="8017600000263450337">"සිමා වැඩිදියුණු කිරීමට PIN සාදන්න"</string>
- <string name="restr_pin_error_doesnt_match" msgid="2224214190906994548">"PIN නොගැළපෙයි. නැවත උත්සහ කරන්න."</string>
- <string name="restr_pin_error_too_short" msgid="8173982756265777792">"PIN කුඩා වැඩිය. ඉලක්කම් 4 වත් විය යුතුය."</string>
- <plurals name="restr_pin_countdown">
- <item quantity="one" msgid="4835639969503729874">"වැරදි PIN. තත්පරයකින් නැවත උත්සහ කරන්න."</item>
- <item quantity="other" msgid="8030607343223287654">"වැරදි PIN. තත්පර <xliff:g id="COUNT">%d</xliff:g> කින් නැවත උත්සහ කරන්න."</item>
- </plurals>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"තීරුව අනාවරණයට තිරයේ කෙලවර අදින්න"</string>
-</resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index df752bdce069..cd865aa0e802 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Skúste to zas o <xliff:g id="COUNT">%d</xliff:g> s"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Skúste to znova neskôr"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Režim celej obraz. ukončíte posunutím nadol"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Režim celej obraz. ukončíte posunutím nadol"</string>
</resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 29c010d0c018..43da811e91b3 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Poskusite znova čez <xliff:g id="COUNT">%d</xliff:g> s"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Poskusite znova pozneje"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Povlecite z vrha, da zaprete celozas. način"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Povlecite z vrha, da zaprete celozaslonski način."</string>
</resources>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index e7c69bfd11a3..14b22cc6d322 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Покушајте опет за <xliff:g id="COUNT">%d</xliff:g> сек"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Покушајте поново касније"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Превуците надоле од врха за излаз из целог екрана"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Превуците прстом одозго надоле да бисте изашли из целог екрана."</string>
</resources>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 4e21412f7885..aa20a64fa5ed 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -830,7 +830,7 @@
<string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Försök igen"</string>
<string name="lockscreen_password_wrong" msgid="5737815393253165301">"Försök igen"</string>
<string name="faceunlock_multiple_failures" msgid="754137583022792429">"Du har försökt låsa upp med Ansiktslås för många gånger"</string>
- <string name="lockscreen_plugged_in" msgid="8057762828355572315">"Laddar (<xliff:g id="PERCENT">%%</xliff:g> <xliff:g id="NUMBER">%d</xliff:g>)"</string>
+ <string name="lockscreen_plugged_in" msgid="8057762828355572315">"Laddar (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
<string name="lockscreen_charged" msgid="321635745684060624">"Batteriet har laddats"</string>
<string name="lockscreen_battery_short" msgid="4477264849386850266">"<xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="lockscreen_low_battery" msgid="1482873981919249740">"Anslut din laddare."</string>
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Försök igen om <xliff:g id="COUNT">%d</xliff:g> sekunder"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Försök igen senare"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Dra nedåt om du vill avbryta fullskärmsläget"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Dra nedåt om du vill avbryta fullskärmsläget."</string>
</resources>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 2d651994a076..b0667587062e 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Jaribu tena baada ya sekunde <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Jaribu tena baadaye"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Telezesha kidole kwa kasi chini kuanzia juu ili uondoke kwenye skrini kamili"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Telezesha kidole kwa kasi chini kuanzia juu ili uondoke kwenye skrini kamili"</string>
</resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index d6135d5adf99..58f52683752f 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"ลองอีกใน <xliff:g id="COUNT">%d</xliff:g> วินาที"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"ลองอีกครั้งในภายหลัง"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"กวาดนิ้วจากบนลงล่างเพื่อออกจากโหมดเต็มหน้าจอ"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"กวาดนิ้วจากบนลงล่างเพื่อออกจากโหมดเต็มหน้าจอ"</string>
</resources>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index e17c7ccc7e44..bc396ed39060 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Subukan muli sa <xliff:g id="COUNT">%d</xliff:g> seg"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Subukang muli sa ibang pagkakataon"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Mag-swipe pababa upang lumabas sa full screen"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Mag-swipe pababa upang lumabas sa full screen"</string>
</resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 31ae8d87f9a9..99a137b0756d 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"<xliff:g id="COUNT">%d</xliff:g> saniye içinde tekrar deneyin"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Daha sonra tekrar deneyin"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Tam ekrandan çıkmak için aşağıya hızlıca kaydırın"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Tam ekrandan çıkmak için aşağıya hızlıca kaydırın"</string>
</resources>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 69f2e9ec4f0b..61f45ecfa6ce 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Повтор за <xliff:g id="COUNT">%d</xliff:g> с"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Спробуйте пізніше"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Проведіть пальцем зверху вниз, щоб зменшити"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Проведіть пальцем зверху вниз, щоб вийти з повноекранного режиму."</string>
</resources>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 2d7ae36c30d5..82752b7fdda6 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Hãy thử lại sau <xliff:g id="COUNT">%d</xliff:g> giây"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Hãy thử lại sau"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Vuốt từ trên xuống để thoát toàn màn hình"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Vuốt từ trên xuống để thoát toàn màn hình"</string>
</resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 533db4558af3..dbfd0399965a 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"<xliff:g id="COUNT">%d</xliff:g>秒后重试"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"稍后重试"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"从顶部向下滑动即可退出全屏模式"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"从顶部向下滑动即可退出全屏模式"</string>
</resources>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 85a2af69d85f..2d2e77e98151 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"<xliff:g id="COUNT">%d</xliff:g> 秒後再試一次"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"稍後再試"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"從頂端往下快速滑動即可退出全螢幕"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"從頂端往下滑動即可結束全螢幕。"</string>
</resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 377a00845bd8..3ec8d4cb711f 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -255,7 +255,7 @@
<string name="permlab_receiveSms" msgid="8673471768947895082">"接收簡訊 (SMS)"</string>
<string name="permdesc_receiveSms" msgid="6424387754228766939">"允許應用程式接收和處理簡訊。這項設定可讓應用程式監控傳送至您裝置的訊息,或在您閱讀訊息前擅自刪除訊息。"</string>
<string name="permlab_receiveMms" msgid="1821317344668257098">"接收簡訊 (MMS)"</string>
- <string name="permdesc_receiveMms" msgid="533019437263212260">"允許應用程式接收和處理 MMS 訊息。這項設定可讓應用程式監控傳送至您裝置的訊息,或在您閱讀訊息前擅自刪除訊息。"</string>
+ <string name="permdesc_receiveMms" msgid="533019437263212260">"允許應用程式接收和處理多媒體訊息。這項設定可讓應用程式監控傳送至您裝置的訊息,或在您閱讀訊息前擅自刪除訊息。"</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"接收緊急廣播"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"允許應用程式接收及處理緊急廣播訊息,只有系統應用程式可以具備這項權限。"</string>
<string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"讀取區域廣播訊息"</string>
@@ -759,7 +759,7 @@
<string name="phoneTypeWorkMobile" msgid="1311426989184065709">"公司行動電話"</string>
<string name="phoneTypeWorkPager" msgid="649938731231157056">"公司呼叫器"</string>
<string name="phoneTypeAssistant" msgid="5596772636128562884">"助理"</string>
- <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
+ <string name="phoneTypeMms" msgid="7254492275502768992">"多媒體簡訊"</string>
<string name="eventTypeCustom" msgid="7837586198458073404">"自訂"</string>
<string name="eventTypeBirthday" msgid="2813379844211390740">"生日"</string>
<string name="eventTypeAnniversary" msgid="3876779744518284000">"週年紀念日"</string>
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"<xliff:g id="COUNT">%d</xliff:g> 秒後再試一次"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"稍後再試"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"從頂端往下滑動即可結束全螢幕"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"從頂端往下滑動即可結束全螢幕。"</string>
</resources>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 6996f3163d17..57d59c3de0a0 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -1649,5 +1649,5 @@
<item quantity="other" msgid="4730868920742952817">"Zama futhi kumasekhondi angu-<xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
<string name="restr_pin_try_later" msgid="973144472490532377">"Zama futhi emva kwesikhathi"</string>
- <string name="immersive_mode_confirmation" msgid="8554991488096662508">"Swayipha ngezansi kusuka ngaphezulu ukuze uphume kusikrini esigcwele"</string>
+ <string name="immersive_mode_confirmation" msgid="7227416894979047467">"Swayiphela phansi kusukela phezulu ukuze uphume kusikrini esigcwele."</string>
</resources>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 42e3b50376c8..1eb75d89edb6 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -447,6 +447,10 @@
to {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_NAVIGATION}. -->
<attr name="windowTranslucentNavigation" format="boolean" />
+ <!-- Flag to indicate that a window can be swiped away to be dismissed.
+ Corresponds to {@link android.view.Window.FEATURE_SWIPE_TO_DISMISS} -->
+ <attr name="windowSwipeToDismiss" format="boolean" />
+
<!-- ============ -->
<!-- Alert Dialog styles -->
<!-- ============ -->
@@ -1567,6 +1571,8 @@
<enum name="KEYCODE_BRIGHTNESS_DOWN" value="220" />
<enum name="KEYCODE_BRIGHTNESS_UP" value="221" />
<enum name="KEYCODE_MEDIA_AUDIO_TRACK" value="222" />
+ <enum name="KEYCODE_MEDIA_SLEEP" value="223" />
+ <enum name="KEYCODE_MEDIA_WAKEUP" value="224" />
</attr>
<!-- ***************************************************************** -->
@@ -1604,6 +1610,7 @@
<attr name="windowCloseOnTouchOutside" />
<attr name="windowTranslucentStatus" />
<attr name="windowTranslucentNavigation" />
+ <attr name="windowSwipeToDismiss" />
<!-- The minimum width the window is allowed to be, along the major
axis of the screen. That is, when in landscape. Can be either
an absolute dimension or a fraction of the screen size in that
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index b20f5bacdb57..cbde41c639ea 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -62,6 +62,21 @@
a reference to a Drawable resource containing the image definition. -->
<attr name="icon" format="reference" />
+ <!-- A Drawable resource providing an extended graphical banner for its
+ associated item. Use with the application tag (to supply a default
+ banner for all application activities), or with the activity, tag to
+ supply a banner for a specific activity.
+
+ <p>The given banner will be used to display to the user a graphical
+ representation of an activity in the Leanback application launcher.
+ Since banners are displayed only in the Leanback launcher, they should
+ only be used with activities (and applications) that support Leanback
+ mode. These are activities that handle Intents of category
+ {@link android.content.Intent#CATEGORY_LEANBACK_LAUNCHER
+ Intent.CATEGORY_LEANBACK_LAUNCHER}.
+ <p>This must be a reference to a Drawable resource containing the image definition. -->
+ <attr name="banner" format="reference" />
+
<!-- A Drawable resource providing an extended graphical logo for its
associated item. Use with the application tag (to supply a default
logo for all application components), or with the activity, receiver,
@@ -888,6 +903,7 @@
<attr name="theme" />
<attr name="label" />
<attr name="icon" />
+ <attr name="banner" />
<attr name="logo" />
<attr name="description" />
<attr name="permission" />
@@ -970,6 +986,7 @@
<attr name="name" />
<attr name="label" />
<attr name="icon" />
+ <attr name="banner" />
<attr name="logo" />
<attr name="permissionGroup" />
<attr name="description" />
@@ -996,6 +1013,7 @@
<attr name="name" />
<attr name="label" />
<attr name="icon" />
+ <attr name="banner" />
<attr name="logo" />
<attr name="description" />
<attr name="permissionGroupFlags" />
@@ -1028,6 +1046,7 @@
<attr name="name" />
<attr name="label" />
<attr name="icon" />
+ <attr name="banner" />
<attr name="logo" />
</declare-styleable>
@@ -1294,6 +1313,7 @@
<attr name="label" />
<attr name="description" />
<attr name="icon" />
+ <attr name="banner" />
<attr name="logo" />
<attr name="process" />
<attr name="authorities" />
@@ -1375,6 +1395,7 @@
<attr name="label" />
<attr name="description" />
<attr name="icon" />
+ <attr name="banner" />
<attr name="logo" />
<attr name="permission" />
<attr name="process" />
@@ -1417,6 +1438,7 @@
<attr name="label" />
<attr name="description" />
<attr name="icon" />
+ <attr name="banner" />
<attr name="logo" />
<attr name="permission" />
<attr name="process" />
@@ -1451,6 +1473,7 @@
<attr name="label" />
<attr name="description" />
<attr name="icon" />
+ <attr name="banner" />
<attr name="logo" />
<attr name="launchMode" />
<attr name="screenOrientation" />
@@ -1514,6 +1537,7 @@
<attr name="label" />
<attr name="description" />
<attr name="icon" />
+ <attr name="banner" />
<attr name="logo" />
<attr name="permission" />
<!-- Specify whether the activity-alias is enabled or not (that is, can be instantiated by the system).
@@ -1585,6 +1609,7 @@
parent="AndroidManifestActivity AndroidManifestReceiver AndroidManifestService">
<attr name="label" />
<attr name="icon" />
+ <attr name="banner" />
<attr name="logo" />
<attr name="priority" />
</declare-styleable>
@@ -1713,6 +1738,7 @@
<attr name="targetPackage" />
<attr name="label" />
<attr name="icon" />
+ <attr name="banner" />
<attr name="logo" />
<attr name="handleProfiling" />
<attr name="functionalTest" />
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 50b3a35dbdf7..4449b4a79db7 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -370,6 +370,17 @@
<!-- If this is true, key chords can be used to take a screenshot on the device. -->
<bool name="config_enableScreenshotChord">true</bool>
+ <!-- Auto-rotation behavior -->
+
+ <!-- If true, enables auto-rotation features using the accelerometer.
+ Otherwise, auto-rotation is disabled. Applications may still request
+ to use specific orientations but the sensor is ignored and sensor-based
+ orientations are not available. Furthermore, all auto-rotation related
+ settings are omitted from the system UI. In certain situations we may
+ still use the accelerometer to determine the orientation, such as when
+ docked if the dock is configured to enable the accelerometer. -->
+ <bool name="config_supportAutoRotation">true</bool>
+
<!-- If true, the screen can be rotated via the accelerometer in all 4
rotations as the default behavior. -->
<bool name="config_allowAllRotations">false</bool>
@@ -382,31 +393,34 @@
true here reverses that logic. -->
<bool name="config_reverseDefaultRotation">false</bool>
+ <!-- Lid switch behavior -->
+
<!-- The number of degrees to rotate the display when the keyboard is open.
A value of -1 means no change in orientation by default. -->
<integer name="config_lidOpenRotation">-1</integer>
- <!-- The number of degrees to rotate the display when the device is in a desk dock.
- A value of -1 means no change in orientation by default. -->
- <integer name="config_deskDockRotation">-1</integer>
+ <!-- Indicate whether the lid state impacts the accessibility of
+ the physical keyboard. 0 means it doesn't, 1 means it is accessible
+ when the lid is open, 2 means it is accessible when the lid is
+ closed. The default is 0. -->
+ <integer name="config_lidKeyboardAccessibility">0</integer>
- <!-- The number of degrees to rotate the display when the device is in a car dock.
- A value of -1 means no change in orientation by default. -->
- <integer name="config_carDockRotation">-1</integer>
+ <!-- Indicate whether the lid state impacts the accessibility of
+ the navigation buttons. 0 means it doesn't, 1 means it is accessible
+ when the lid is open, 2 means it is accessible when the lid is
+ closed. The default is 0. -->
+ <integer name="config_lidNavigationAccessibility">0</integer>
- <!-- The number of degrees to rotate the display when the device has HDMI connected
- but is not in a dock. A value of -1 means no change in orientation by default.
- Use -1 except on older devices whose Hardware Composer HAL does not
- provide full support for multiple displays. -->
- <integer name="config_undockedHdmiRotation">-1</integer>
+ <!-- Indicate whether closing the lid causes the device to go to sleep and opening
+ it causes the device to wake up.
+ The default is false. -->
+ <bool name="config_lidControlsSleep">false</bool>
- <!-- Control the default UI mode type to use when there is no other type override
- happening. One of the following values (See Configuration.java):
- 1 UI_MODE_TYPE_NORMAL
- 4 UI_MODE_TYPE_TELEVISION
- 5 UI_MODE_TYPE_APPLIANCE
- Any other values will have surprising consequences. -->
- <integer name="config_defaultUiModeType">1</integer>
+ <!-- Desk dock behavior -->
+
+ <!-- The number of degrees to rotate the display when the device is in a desk dock.
+ A value of -1 means no change in orientation by default. -->
+ <integer name="config_deskDockRotation">-1</integer>
<!-- Control whether being in the desk dock (and powered) always
keeps the screen on. By default it stays on when plugged in to
@@ -414,12 +428,6 @@
in to AC and 2 to stay on when plugged in to USB. (So 3 for both.) -->
<integer name="config_deskDockKeepsScreenOn">1</integer>
- <!-- Control whether being in the car dock (and powered) always
- keeps the screen on. By default it stays on when plugged in to
- AC. 0 will not keep it on; or together 1 to stay on when plugged
- in to AC and 2 to stay on when plugged in to USB. (So 3 for both.) -->
- <integer name="config_carDockKeepsScreenOn">1</integer>
-
<!-- Control whether being in the desk dock should enable accelerometer
based screen orientation. This defaults to true because it is
common for desk docks to be sold in a variety of form factors
@@ -428,27 +436,39 @@
we rely on gravity to determine the effective orientation. -->
<bool name="config_deskDockEnablesAccelerometer">true</bool>
+ <!-- Car dock behavior -->
+
+ <!-- The number of degrees to rotate the display when the device is in a car dock.
+ A value of -1 means no change in orientation by default. -->
+ <integer name="config_carDockRotation">-1</integer>
+
+ <!-- Control whether being in the car dock (and powered) always
+ keeps the screen on. By default it stays on when plugged in to
+ AC. 0 will not keep it on; or together 1 to stay on when plugged
+ in to AC and 2 to stay on when plugged in to USB. (So 3 for both.) -->
+ <integer name="config_carDockKeepsScreenOn">1</integer>
+
<!-- Control whether being in the car dock should enable accelerometer based
screen orientation. This defaults to true because putting a device in
a car dock make the accelerometer more a physical input (like a lid). -->
+
<bool name="config_carDockEnablesAccelerometer">true</bool>
- <!-- Indicate whether the lid state impacts the accessibility of
- the physical keyboard. 0 means it doesn't, 1 means it is accessible
- when the lid is open, 2 means it is accessible when the lid is
- closed. The default is 0. -->
- <integer name="config_lidKeyboardAccessibility">0</integer>
+ <!-- HDMI behavior -->
- <!-- Indicate whether the lid state impacts the accessibility of
- the navigation buttons. 0 means it doesn't, 1 means it is accessible
- when the lid is open, 2 means it is accessible when the lid is
- closed. The default is 0. -->
- <integer name="config_lidNavigationAccessibility">0</integer>
+ <!-- The number of degrees to rotate the display when the device has HDMI connected
+ but is not in a dock. A value of -1 means no change in orientation by default.
+ Use -1 except on older devices whose Hardware Composer HAL does not
+ provide full support for multiple displays. -->
+ <integer name="config_undockedHdmiRotation">-1</integer>
- <!-- Indicate whether closing the lid causes the device to go to sleep and opening
- it causes the device to wake up.
- The default is false. -->
- <bool name="config_lidControlsSleep">false</bool>
+ <!-- Control the default UI mode type to use when there is no other type override
+ happening. One of the following values (See Configuration.java):
+ 1 UI_MODE_TYPE_NORMAL
+ 4 UI_MODE_TYPE_TELEVISION
+ 5 UI_MODE_TYPE_APPLIANCE
+ Any other values will have surprising consequences. -->
+ <integer name="config_defaultUiModeType">1</integer>
<!-- Indicate whether to allow the device to suspend when the screen is off
due to the proximity sensor. This resource should only be set to true
@@ -652,6 +672,11 @@
Must be in the range specified by minimum and maximum. -->
<integer name="config_screenBrightnessSettingDefault">102</integer>
+ <!-- Screen brightness used to dim the screen while dozing in a very low power state.
+ May be less than the minimum allowed brightness setting
+ that can be set by the user. -->
+ <integer name="config_screenBrightnessDoze">1</integer>
+
<!-- Screen brightness used to dim the screen when the user activity
timeout expires. May be less than the minimum allowed brightness setting
that can be set by the user. -->
@@ -1072,8 +1097,16 @@
<!-- Name of the wimax state tracker clas -->
<string name="config_wimaxStateTrackerClassname" translatable="false"></string>
- <!-- Is the dreams feature supported? -->
+ <!-- Specifies whether the dreams feature should be supported.
+ When true, the system will allow the user to configure dreams (screensavers)
+ to launch when a user activity timeout occurs or the system is told to nap.
+ When false, the dreams feature will be disabled (this does not affect dozing).
+
+ Consider setting this resource to false or disabling dreams by default when a
+ doze component is specified below since dreaming will supercede dozing and
+ will prevent the system from entering a low power state until the dream ends. -->
<bool name="config_dreamsSupported">true</bool>
+
<!-- If supported, are dreams enabled? (by default) -->
<bool name="config_dreamsEnabledByDefault">true</bool>
<!-- If supported and enabled, are dreams activated when docked? (by default) -->
@@ -1083,6 +1116,70 @@
<!-- ComponentName of the default dream (Settings.Secure.SCREENSAVER_COMPONENT) -->
<string name="config_dreamsDefaultComponent">com.google.android.deskclock/com.android.deskclock.Screensaver</string>
+ <!-- Are we allowed to dream while not plugged in? -->
+ <bool name="config_dreamsEnabledOnBattery">false</bool>
+ <!-- Minimum battery level to allow dreaming when powered.
+ Use -1 to disable this safety feature. -->
+ <integer name="config_dreamsBatteryLevelMinimumWhenPowered">-1</integer>
+ <!-- Minimum battery level to allow dreaming when not powered.
+ Use -1 to disable this safety feature. -->
+ <integer name="config_dreamsBatteryLevelMinimumWhenNotPowered">15</integer>
+ <!-- If the battery level drops by this percentage and the user activity timeout
+ has expired, then assume the device is receiving insufficient current to charge
+ effectively and terminate the dream. Use -1 to disable this safety feature. -->
+ <integer name="config_dreamsBatteryLevelDrainCutoff">5</integer>
+
+ <!-- ComponentName of a dream to show whenever the system would otherwise have
+ gone to sleep. When the PowerManager is asked to go to sleep, it will instead
+ try to start this dream if possible. The dream should typically call startDozing()
+ to put the display into a low power state and allow the application processor
+ to be suspended. When the dream ends, the system will go to sleep as usual.
+ Specify the component name (Settings.Secure.SCREENSAVER_COMPONENT) or an
+ empty string if none.
+
+ Note that doze dreams are not subject to the same start conditions as ordinary dreams.
+ Doze dreams will run whenever the power manager is in a dozing state. -->
+ <string name="config_dozeComponent"></string>
+
+ <!-- Power Management: Specifies whether to decouple the auto-suspend state of the
+ device from the display on/off state.
+
+ When false, autosuspend_disable() will be called before the display is turned on
+ and autosuspend_enable() will be called after the display is turned off.
+ This mode provides best compatibility for devices using legacy power management
+ features such as early suspend / late resume.
+
+ When true, autosuspend_display() and autosuspend_enable() will be called
+ independently of whether the display is being turned on or off. This mode
+ enables the power manager to suspend the application processor while the
+ display is on.
+
+ This resource should be set to "true" when a doze component has been specified
+ to maximize power savings but not all devices support it.
+
+ Refer to autosuspend.h for details.
+ -->
+ <bool name="config_powerDecoupleAutoSuspendModeFromDisplay">false</bool>
+
+ <!-- Power Management: Specifies whether to decouple the interactive state of the
+ device from the display on/off state.
+
+ When false, setInteractive(..., true) will be called before the display is turned on
+ and setInteractive(..., false) will be called after the display is turned off.
+ This mode provides best compatibility for devices that expect the interactive
+ state to be tied to the display state.
+
+ When true, setInteractive(...) will be called independently of whether the display
+ is being turned on or off. This mode enables the power manager to reduce
+ clocks and disable the touch controller while the display is on.
+
+ This resource should be set to "true" when a doze component has been specified
+ to maximize power savings but not all devices support it.
+
+ Refer to power.h for details.
+ -->
+ <bool name="config_powerDecoupleInteractiveModeFromDisplay">false</bool>
+
<!-- Base "touch slop" value used by ViewConfiguration as a
movement threshold where scrolling should begin. -->
<dimen name="config_viewConfigurationTouchSlop">8dp</dimen>
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 81879392c222..5e3cbe6cc054 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -2087,4 +2087,10 @@
<public type="style" name="Theme.DeviceDefault.NoActionBar.TranslucentDecor" id="0x010301e3" />
<public type="style" name="Theme.DeviceDefault.Light.NoActionBar.TranslucentDecor" id="0x010301e4" />
+<!-- ===============================================================
+ Resources added in version 20 of the platform
+ =============================================================== -->
+ <eat-comment />
+
+ <public type="attr" name="banner" id="0x10103f2" />
</resources>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 098fbbe0c3c7..30243a43dd70 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -625,9 +625,9 @@
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permlab_processOutgoingCalls">reroute outgoing calls</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permdesc_processOutgoingCalls">Allows the app to see the
- number being dialed during an outgoing call with the option to redirect
- the call to a different number or abort the call altogether.</string>
+ <string name="permdesc_processOutgoingCalls">Allows the app to process
+ outgoing calls and change the number to be dialed. This permission allows
+ the app to monitor, redirect, or prevent outgoing calls.</string>
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permlab_receiveSms">receive text messages (SMS)</string>
@@ -4195,7 +4195,7 @@
<!-- Message shown when the user enters an invalid SIM pin password in PUK screen -->
<string name="kg_invalid_sim_pin_hint">Type a PIN that is 4 to 8 numbers.</string>
<!-- Message shown when the user enters an invalid PUK code in the PUK screen -->
- <string name="kg_invalid_sim_puk_hint">PUK code should be 8 numbers or more.</string>
+ <string name="kg_invalid_sim_puk_hint">PUK code should be 8 numbers.</string>
<!-- Message shown when the user enters an invalid PUK code -->
<string name="kg_invalid_puk">Re-enter the correct PUK code. Repeated attempts will permanently disable the SIM.</string>
<!-- String shown in PUK screen when PIN codes don't match -->
diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml
index cb2fd6d0e951..4d4feeeef7c0 100644
--- a/core/res/res/values/styles.xml
+++ b/core/res/res/values/styles.xml
@@ -225,6 +225,14 @@ please see styles_device_defaults.xml.
<item name="windowExitAnimation">@anim/fast_fade_out</item>
</style>
+ <!-- Window animations for swipe-dismissable windows. {@hide} -->
+ <style name="Animation.SwipeDismiss">
+ <item name="taskOpenEnterAnimation">@anim/swipe_window_enter</item>
+ <item name="taskOpenExitAnimation">@anim/swipe_window_exit</item>
+ <item name="taskCloseEnterAnimation">@anim/swipe_window_enter</item>
+ <item name="taskCloseExitAnimation">@anim/swipe_window_exit</item>
+ </style>
+
<!-- Status Bar Styles -->
<style name="TextAppearance.StatusBar">
<item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
diff --git a/core/res/res/values/styles_micro.xml b/core/res/res/values/styles_micro.xml
new file mode 100644
index 000000000000..52d90bce3ff9
--- /dev/null
+++ b/core/res/res/values/styles_micro.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <style name="Widget.Micro" parent="Widget.Holo" />
+
+ <style name="Widget.Micro.TextView">
+ <item name="android:fontFamily">sans-serif-condensed</item>
+ </style>
+
+ <style name="Widget.Micro.NumberPicker">
+ <item name="android:internalLayout">@android:layout/number_picker_with_selector_wheel_micro</item>
+ <item name="android:solidColor">@android:color/transparent</item>
+ <item name="android:selectionDivider">@android:drawable/numberpicker_selection_divider</item>
+ <item name="android:selectionDividerHeight">0dip</item>
+ <item name="android:selectionDividersDistance">104dip</item>
+ <item name="android:internalMinWidth">64dip</item>
+ <item name="android:internalMaxHeight">180dip</item>
+ <item name="virtualButtonPressedDrawable">?android:attr/selectableItemBackground</item>
+ <item name="android:descendantFocusability">blocksDescendants</item>
+ </style>
+</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 417135584de1..84510a8b20f8 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -1307,6 +1307,7 @@
<java-symbol type="bool" name="config_lidControlsSleep" />
<java-symbol type="bool" name="config_reverseDefaultRotation" />
<java-symbol type="bool" name="config_showNavigationBar" />
+ <java-symbol type="bool" name="config_supportAutoRotation" />
<java-symbol type="bool" name="target_honeycomb_needs_options_menu" />
<java-symbol type="dimen" name="navigation_bar_height" />
<java-symbol type="dimen" name="navigation_bar_height_landscape" />
@@ -1374,6 +1375,7 @@
<java-symbol type="layout" name="screen_progress" />
<java-symbol type="layout" name="screen_simple" />
<java-symbol type="layout" name="screen_simple_overlay_action_mode" />
+ <java-symbol type="layout" name="screen_swipe_dismiss" />
<java-symbol type="layout" name="screen_title" />
<java-symbol type="layout" name="screen_title_icons" />
<java-symbol type="string" name="system_ui_date_pattern" />
@@ -1505,6 +1507,7 @@
<java-symbol type="integer" name="config_screenBrightnessSettingMaximum" />
<java-symbol type="integer" name="config_screenBrightnessSettingDefault" />
<java-symbol type="integer" name="config_screenBrightnessDim" />
+ <java-symbol type="integer" name="config_screenBrightnessDoze" />
<java-symbol type="integer" name="config_shutdownBatteryTemperature" />
<java-symbol type="integer" name="config_undockedHdmiRotation" />
<java-symbol type="integer" name="config_virtualKeyQuietTimeMillis" />
@@ -1609,11 +1612,18 @@
<java-symbol type="xml" name="storage_list" />
<java-symbol type="bool" name="config_dreamsSupported" />
<java-symbol type="bool" name="config_dreamsEnabledByDefault" />
+ <java-symbol type="bool" name="config_dreamsEnabledOnBattery" />
<java-symbol type="bool" name="config_dreamsActivatedOnDockByDefault" />
<java-symbol type="bool" name="config_dreamsActivatedOnSleepByDefault" />
+ <java-symbol type="integer" name="config_dreamsBatteryLevelMinimumWhenPowered" />
+ <java-symbol type="integer" name="config_dreamsBatteryLevelMinimumWhenNotPowered" />
+ <java-symbol type="integer" name="config_dreamsBatteryLevelDrainCutoff" />
<java-symbol type="string" name="config_dreamsDefaultComponent" />
+ <java-symbol type="string" name="config_dozeComponent" />
<java-symbol type="string" name="enable_explore_by_touch_warning_title" />
<java-symbol type="string" name="enable_explore_by_touch_warning_message" />
+ <java-symbol type="bool" name="config_powerDecoupleAutoSuspendModeFromDisplay" />
+ <java-symbol type="bool" name="config_powerDecoupleInteractiveModeFromDisplay" />
<java-symbol type="layout" name="resolver_list" />
<java-symbol type="id" name="resolver_list" />
diff --git a/core/res/res/values/themes_micro.xml b/core/res/res/values/themes_micro.xml
new file mode 100644
index 000000000000..7c0b7bc1103d
--- /dev/null
+++ b/core/res/res/values/themes_micro.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <style name="Theme.Micro" parent="Theme.Holo.NoActionBar">
+ <item name="textViewStyle">@android:style/Widget.Micro.TextView</item>
+ <item name="numberPickerStyle">@android:style/Widget.Micro.NumberPicker</item>
+ <item name="windowAnimationStyle">@android:style/Animation.SwipeDismiss</item>
+ <item name="windowIsFloating">false</item>
+ <item name="windowIsTranslucent">true</item>
+ <item name="windowSwipeToDismiss">true</item>
+ </style>
+
+ <style name="Theme.Micro.NoActionBar" parent="Theme.Holo.NoActionBar">
+ <item name="textViewStyle">@android:style/Widget.Micro.TextView</item>
+ <item name="numberPickerStyle">@android:style/Widget.Micro.NumberPicker</item>
+ <item name="windowAnimationStyle">@android:style/Animation.SwipeDismiss</item>
+ <item name="windowIsFloating">false</item>
+ <item name="windowIsTranslucent">true</item>
+ <item name="windowSwipeToDismiss">true</item>
+ </style>
+ <style name="Theme.Micro.Light" parent="Theme.Holo.Light">
+ <item name="numberPickerStyle">@android:style/Widget.Micro.NumberPicker</item>
+ <item name="windowAnimationStyle">@android:style/Animation.SwipeDismiss</item>
+ <item name="windowIsFloating">false</item>
+ <item name="windowIsTranslucent">true</item>
+ <item name="windowSwipeToDismiss">true</item>
+ </style>
+ <style name="Theme.Micro.Light.NoActionBar" parent="Theme.Holo.Light.NoActionBar">
+ <item name="textViewStyle">@android:style/Widget.Micro.TextView</item>
+ <item name="numberPickerStyle">@android:style/Widget.Micro.NumberPicker</item>
+ <item name="windowAnimationStyle">@android:style/Animation.SwipeDismiss</item>
+ <item name="windowIsFloating">false</item>
+ <item name="windowIsTranslucent">true</item>
+ <item name="windowSwipeToDismiss">true</item>
+ </style>
+ <style name="Theme.Micro.Light.DarkActionBar" parent="Theme.Holo.Light.DarkActionBar">
+ <item name="textViewStyle">@android:style/Widget.Micro.TextView</item>
+ <item name="numberPickerStyle">@android:style/Widget.Micro.NumberPicker</item>
+ <item name="windowAnimationStyle">@android:style/Animation.SwipeDismiss</item>
+ <item name="windowIsFloating">false</item>
+ <item name="windowIsTranslucent">true</item>
+ <item name="windowSwipeToDismiss">true</item>
+ </style>
+
+</resources>
diff --git a/core/tests/coretests/src/android/net/LinkAddressTest.java b/core/tests/coretests/src/android/net/LinkAddressTest.java
new file mode 100644
index 000000000000..17423be65feb
--- /dev/null
+++ b/core/tests/coretests/src/android/net/LinkAddressTest.java
@@ -0,0 +1,331 @@
+/*
+ * Copyright (C) 2013 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 java.net.Inet4Address;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.net.InterfaceAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import android.net.LinkAddress;
+import android.os.Parcel;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import static libcore.io.OsConstants.IFA_F_DEPRECATED;
+import static libcore.io.OsConstants.IFA_F_PERMANENT;
+import static libcore.io.OsConstants.IFA_F_TENTATIVE;
+import static libcore.io.OsConstants.RT_SCOPE_HOST;
+import static libcore.io.OsConstants.RT_SCOPE_LINK;
+import static libcore.io.OsConstants.RT_SCOPE_SITE;
+import static libcore.io.OsConstants.RT_SCOPE_UNIVERSE;
+
+/**
+ * Tests for {@link LinkAddress}.
+ */
+public class LinkAddressTest extends AndroidTestCase {
+
+ private static final String V4 = "192.0.2.1";
+ private static final String V6 = "2001:db8::1";
+ private static final InetAddress V4_ADDRESS = NetworkUtils.numericToInetAddress(V4);
+ private static final InetAddress V6_ADDRESS = NetworkUtils.numericToInetAddress(V6);
+
+ public void testConstructors() throws SocketException {
+ LinkAddress address;
+
+ // Valid addresses work as expected.
+ address = new LinkAddress(V4_ADDRESS, 25);
+ assertEquals(V4_ADDRESS, address.getAddress());
+ assertEquals(25, address.getNetworkPrefixLength());
+ assertEquals(0, address.getFlags());
+ assertEquals(RT_SCOPE_UNIVERSE, address.getScope());
+
+ address = new LinkAddress(V6_ADDRESS, 127);
+ assertEquals(V6_ADDRESS, address.getAddress());
+ assertEquals(127, address.getNetworkPrefixLength());
+ assertEquals(0, address.getFlags());
+ assertEquals(RT_SCOPE_UNIVERSE, address.getScope());
+
+ // Nonsensical flags/scopes or combinations thereof are acceptable.
+ address = new LinkAddress(V6 + "/64", IFA_F_DEPRECATED | IFA_F_PERMANENT, RT_SCOPE_LINK);
+ assertEquals(V6_ADDRESS, address.getAddress());
+ assertEquals(64, address.getNetworkPrefixLength());
+ assertEquals(IFA_F_DEPRECATED | IFA_F_PERMANENT, address.getFlags());
+ assertEquals(RT_SCOPE_LINK, address.getScope());
+
+ address = new LinkAddress(V4 + "/23", 123, 456);
+ assertEquals(V4_ADDRESS, address.getAddress());
+ assertEquals(23, address.getNetworkPrefixLength());
+ assertEquals(123, address.getFlags());
+ assertEquals(456, address.getScope());
+
+ // InterfaceAddress doesn't have a constructor. Fetch some from an interface.
+ List<InterfaceAddress> addrs = NetworkInterface.getByName("lo").getInterfaceAddresses();
+
+ // We expect to find 127.0.0.1/8 and ::1/128, in any order.
+ LinkAddress ipv4Loopback, ipv6Loopback;
+ assertEquals(2, addrs.size());
+ if (addrs.get(0).getAddress() instanceof Inet4Address) {
+ ipv4Loopback = new LinkAddress(addrs.get(0));
+ ipv6Loopback = new LinkAddress(addrs.get(1));
+ } else {
+ ipv4Loopback = new LinkAddress(addrs.get(1));
+ ipv6Loopback = new LinkAddress(addrs.get(0));
+ }
+
+ assertEquals(NetworkUtils.numericToInetAddress("127.0.0.1"), ipv4Loopback.getAddress());
+ assertEquals(8, ipv4Loopback.getNetworkPrefixLength());
+
+ assertEquals(NetworkUtils.numericToInetAddress("::1"), ipv6Loopback.getAddress());
+ assertEquals(128, ipv6Loopback.getNetworkPrefixLength());
+
+ // Null addresses are rejected.
+ try {
+ address = new LinkAddress(null, 24);
+ fail("Null InetAddress should cause IllegalArgumentException");
+ } catch(IllegalArgumentException expected) {}
+
+ try {
+ address = new LinkAddress((String) null, IFA_F_PERMANENT, RT_SCOPE_UNIVERSE);
+ fail("Null string should cause IllegalArgumentException");
+ } catch(IllegalArgumentException expected) {}
+
+ try {
+ address = new LinkAddress((InterfaceAddress) null);
+ fail("Null string should cause NullPointerException");
+ } catch(NullPointerException expected) {}
+
+ // Invalid prefix lengths are rejected.
+ try {
+ address = new LinkAddress(V4_ADDRESS, -1);
+ fail("Negative IPv4 prefix length should cause IllegalArgumentException");
+ } catch(IllegalArgumentException expected) {}
+
+ try {
+ address = new LinkAddress(V6_ADDRESS, -1);
+ fail("Negative IPv6 prefix length should cause IllegalArgumentException");
+ } catch(IllegalArgumentException expected) {}
+
+ try {
+ address = new LinkAddress(V4_ADDRESS, 33);
+ fail("/33 IPv4 prefix length should cause IllegalArgumentException");
+ } catch(IllegalArgumentException expected) {}
+
+ try {
+ address = new LinkAddress(V4 + "/33", IFA_F_PERMANENT, RT_SCOPE_UNIVERSE);
+ fail("/33 IPv4 prefix length should cause IllegalArgumentException");
+ } catch(IllegalArgumentException expected) {}
+
+
+ try {
+ address = new LinkAddress(V6_ADDRESS, 129, IFA_F_PERMANENT, RT_SCOPE_UNIVERSE);
+ fail("/129 IPv6 prefix length should cause IllegalArgumentException");
+ } catch(IllegalArgumentException expected) {}
+
+ try {
+ address = new LinkAddress(V6 + "/129", IFA_F_PERMANENT, RT_SCOPE_UNIVERSE);
+ fail("/129 IPv6 prefix length should cause IllegalArgumentException");
+ } catch(IllegalArgumentException expected) {}
+
+ // Multicast addresses are rejected.
+ try {
+ address = new LinkAddress("224.0.0.2/32");
+ fail("IPv4 multicast address should cause IllegalArgumentException");
+ } catch(IllegalArgumentException expected) {}
+
+ try {
+ address = new LinkAddress("ff02::1/128");
+ fail("IPv6 multicast address should cause IllegalArgumentException");
+ } catch(IllegalArgumentException expected) {}
+ }
+
+ public void testAddressScopes() {
+ assertEquals(RT_SCOPE_HOST, new LinkAddress("::/128").getScope());
+ assertEquals(RT_SCOPE_HOST, new LinkAddress("0.0.0.0/32").getScope());
+
+ assertEquals(RT_SCOPE_LINK, new LinkAddress("::1/128").getScope());
+ assertEquals(RT_SCOPE_LINK, new LinkAddress("127.0.0.5/8").getScope());
+ assertEquals(RT_SCOPE_LINK, new LinkAddress("fe80::ace:d00d/64").getScope());
+ assertEquals(RT_SCOPE_LINK, new LinkAddress("169.254.5.12/16").getScope());
+
+ assertEquals(RT_SCOPE_SITE, new LinkAddress("fec0::dead/64").getScope());
+
+ assertEquals(RT_SCOPE_UNIVERSE, new LinkAddress("10.1.2.3/21").getScope());
+ assertEquals(RT_SCOPE_UNIVERSE, new LinkAddress("192.0.2.1/25").getScope());
+ assertEquals(RT_SCOPE_UNIVERSE, new LinkAddress("2001:db8::/64").getScope());
+ assertEquals(RT_SCOPE_UNIVERSE, new LinkAddress("5000::/127").getScope());
+ }
+
+ private void assertIsSameAddressAs(LinkAddress l1, LinkAddress l2) {
+ assertTrue(l1 + " unexpectedly does not have same address as " + l2,
+ l1.isSameAddressAs(l2));
+ assertTrue(l2 + " unexpectedly does not have same address as " + l1,
+ l2.isSameAddressAs(l1));
+ }
+
+ private void assertIsNotSameAddressAs(LinkAddress l1, LinkAddress l2) {
+ assertFalse(l1 + " unexpectedly has same address as " + l2,
+ l1.isSameAddressAs(l2));
+ assertFalse(l2 + " unexpectedly has same address as " + l1,
+ l1.isSameAddressAs(l2));
+ }
+
+ private void assertLinkAddressesEqual(LinkAddress l1, LinkAddress l2) {
+ assertTrue(l1 + " unexpectedly not equal to " + l2, l1.equals(l2));
+ assertTrue(l2 + " unexpectedly not equal to " + l1, l2.equals(l1));
+ assertEquals(l1.hashCode(), l2.hashCode());
+ }
+
+ private void assertLinkAddressesNotEqual(LinkAddress l1, LinkAddress l2) {
+ assertFalse(l1 + " unexpectedly equal to " + l2, l1.equals(l2));
+ assertFalse(l2 + " unexpectedly equal to " + l1, l2.equals(l1));
+ }
+
+ public void testEqualsAndSameAddressAs() {
+ LinkAddress l1, l2, l3;
+
+ l1 = new LinkAddress("2001:db8::1/64");
+ l2 = new LinkAddress("2001:db8::1/64");
+ assertLinkAddressesEqual(l1, l2);
+ assertIsSameAddressAs(l1, l2);
+
+ l2 = new LinkAddress("2001:db8::1/65");
+ assertLinkAddressesNotEqual(l1, l2);
+ assertIsNotSameAddressAs(l1, l2);
+
+ l2 = new LinkAddress("2001:db8::2/64");
+ assertLinkAddressesNotEqual(l1, l2);
+ assertIsNotSameAddressAs(l1, l2);
+
+
+ l1 = new LinkAddress("192.0.2.1/24");
+ l2 = new LinkAddress("192.0.2.1/24");
+ assertLinkAddressesEqual(l1, l2);
+ assertIsSameAddressAs(l1, l2);
+
+ l2 = new LinkAddress("192.0.2.1/23");
+ assertLinkAddressesNotEqual(l1, l2);
+ assertIsNotSameAddressAs(l1, l2);
+
+ l2 = new LinkAddress("192.0.2.2/24");
+ assertLinkAddressesNotEqual(l1, l2);
+ assertIsNotSameAddressAs(l1, l2);
+
+
+ // Check equals() and isSameAddressAs() on identical addresses with different flags.
+ l1 = new LinkAddress(V6_ADDRESS, 64);
+ l2 = new LinkAddress(V6_ADDRESS, 64, 0, RT_SCOPE_UNIVERSE);
+ assertLinkAddressesEqual(l1, l2);
+ assertIsSameAddressAs(l1, l2);
+
+ l2 = new LinkAddress(V6_ADDRESS, 64, IFA_F_DEPRECATED, RT_SCOPE_UNIVERSE);
+ assertLinkAddressesNotEqual(l1, l2);
+ assertIsSameAddressAs(l1, l2);
+
+ // Check equals() and isSameAddressAs() on identical addresses with different scope.
+ l1 = new LinkAddress(V4_ADDRESS, 24);
+ l2 = new LinkAddress(V4_ADDRESS, 24, 0, RT_SCOPE_UNIVERSE);
+ assertLinkAddressesEqual(l1, l2);
+ assertIsSameAddressAs(l1, l2);
+
+ l2 = new LinkAddress(V4_ADDRESS, 24, 0, RT_SCOPE_HOST);
+ assertLinkAddressesNotEqual(l1, l2);
+ assertIsSameAddressAs(l1, l2);
+
+ // Addresses with the same start or end bytes aren't equal between families.
+ l1 = new LinkAddress("32.1.13.184/24");
+ l2 = new LinkAddress("2001:db8::1/24");
+ l3 = new LinkAddress("::2001:db8/24");
+
+ byte[] ipv4Bytes = l1.getAddress().getAddress();
+ byte[] l2FirstIPv6Bytes = Arrays.copyOf(l2.getAddress().getAddress(), 4);
+ byte[] l3LastIPv6Bytes = Arrays.copyOfRange(l3.getAddress().getAddress(), 12, 16);
+ assertTrue(Arrays.equals(ipv4Bytes, l2FirstIPv6Bytes));
+ assertTrue(Arrays.equals(ipv4Bytes, l3LastIPv6Bytes));
+
+ assertLinkAddressesNotEqual(l1, l2);
+ assertIsNotSameAddressAs(l1, l2);
+
+ assertLinkAddressesNotEqual(l1, l3);
+ assertIsNotSameAddressAs(l1, l3);
+
+ // Because we use InetAddress, an IPv4 address is equal to its IPv4-mapped address.
+ // TODO: Investigate fixing this.
+ String addressString = V4 + "/24";
+ l1 = new LinkAddress(addressString);
+ l2 = new LinkAddress("::ffff:" + addressString);
+ assertLinkAddressesEqual(l1, l2);
+ assertIsSameAddressAs(l1, l2);
+ }
+
+ public void testHashCode() {
+ LinkAddress l;
+
+ l = new LinkAddress(V4_ADDRESS, 23);
+ assertEquals(-982787, l.hashCode());
+
+ l = new LinkAddress(V4_ADDRESS, 23, 0, RT_SCOPE_HOST);
+ assertEquals(-971865, l.hashCode());
+
+ l = new LinkAddress(V4_ADDRESS, 27);
+ assertEquals(-982743, l.hashCode());
+
+ l = new LinkAddress(V6_ADDRESS, 64);
+ assertEquals(1076522926, l.hashCode());
+
+ l = new LinkAddress(V6_ADDRESS, 128);
+ assertEquals(1076523630, l.hashCode());
+
+ l = new LinkAddress(V6_ADDRESS, 128, IFA_F_TENTATIVE, RT_SCOPE_UNIVERSE);
+ assertEquals(1076524846, l.hashCode());
+ }
+
+ private LinkAddress passThroughParcel(LinkAddress l) {
+ Parcel p = Parcel.obtain();
+ LinkAddress l2 = null;
+ try {
+ l.writeToParcel(p, 0);
+ p.setDataPosition(0);
+ l2 = LinkAddress.CREATOR.createFromParcel(p);
+ } finally {
+ p.recycle();
+ }
+ assertNotNull(l2);
+ return l2;
+ }
+
+ private void assertParcelingIsLossless(LinkAddress l) {
+ LinkAddress l2 = passThroughParcel(l);
+ assertEquals(l, l2);
+ }
+
+ public void testParceling() {
+ LinkAddress l;
+
+ l = new LinkAddress(V6_ADDRESS, 64, 123, 456);
+ assertParcelingIsLossless(l);
+
+ l = new LinkAddress(V4 + "/28", IFA_F_PERMANENT, RT_SCOPE_LINK);
+ assertParcelingIsLossless(l);
+ }
+}
diff --git a/core/tests/coretests/src/android/net/LinkPropertiesTest.java b/core/tests/coretests/src/android/net/LinkPropertiesTest.java
index e63f6b08f6e3..a602e07d9b04 100644
--- a/core/tests/coretests/src/android/net/LinkPropertiesTest.java
+++ b/core/tests/coretests/src/android/net/LinkPropertiesTest.java
@@ -24,6 +24,8 @@ import junit.framework.TestCase;
import java.net.InetAddress;
import java.util.ArrayList;
+import libcore.io.OsConstants;
+
public class LinkPropertiesTest extends TestCase {
private static InetAddress ADDRV4 = NetworkUtils.numericToInetAddress("75.208.6.1");
private static InetAddress ADDRV6 = NetworkUtils.numericToInetAddress(
@@ -341,6 +343,10 @@ public class LinkPropertiesTest extends TestCase {
assertFalse(rmnet0.removeStackedLink(clat4));
}
+ private LinkAddress getFirstLinkAddress(LinkProperties lp) {
+ return lp.getLinkAddresses().iterator().next();
+ }
+
@SmallTest
public void testAddressMethods() {
LinkProperties lp = new LinkProperties();
@@ -366,26 +372,56 @@ public class LinkPropertiesTest extends TestCase {
// Addresses on the base link.
// Check the return values of hasIPvXAddress and ensure the add/remove methods return true
// iff something changes.
+ assertEquals(0, lp.getLinkAddresses().size());
assertTrue(lp.addLinkAddress(LINKADDRV6));
+ assertEquals(1, lp.getLinkAddresses().size());
assertFalse(lp.hasIPv4Address());
assertTrue(lp.hasIPv6Address());
assertTrue(lp.removeLinkAddress(LINKADDRV6));
+ assertEquals(0, lp.getLinkAddresses().size());
assertTrue(lp.addLinkAddress(LINKADDRV4));
+ assertEquals(1, lp.getLinkAddresses().size());
assertTrue(lp.hasIPv4Address());
assertFalse(lp.hasIPv6Address());
assertTrue(lp.addLinkAddress(LINKADDRV6));
+ assertEquals(2, lp.getLinkAddresses().size());
assertTrue(lp.hasIPv4Address());
assertTrue(lp.hasIPv6Address());
// Adding an address twice has no effect.
// Removing an address that's not present has no effect.
assertFalse(lp.addLinkAddress(LINKADDRV4));
+ assertEquals(2, lp.getLinkAddresses().size());
assertTrue(lp.hasIPv4Address());
assertTrue(lp.removeLinkAddress(LINKADDRV4));
+ assertEquals(1, lp.getLinkAddresses().size());
assertFalse(lp.hasIPv4Address());
assertFalse(lp.removeLinkAddress(LINKADDRV4));
+ assertEquals(1, lp.getLinkAddresses().size());
+
+ // Adding an address that's already present but with different properties causes the
+ // existing address to be updated and returns true.
+ // Start with only LINKADDRV6.
+ assertEquals(1, lp.getLinkAddresses().size());
+ assertEquals(LINKADDRV6, getFirstLinkAddress(lp));
+
+ // Create a LinkAddress object for the same address, but with different flags.
+ LinkAddress deprecated = new LinkAddress(ADDRV6, 128,
+ OsConstants.IFA_F_DEPRECATED, OsConstants.RT_SCOPE_UNIVERSE);
+ assertTrue(deprecated.isSameAddressAs(LINKADDRV6));
+ assertFalse(deprecated.equals(LINKADDRV6));
+
+ // Check that adding it updates the existing address instead of adding a new one.
+ assertTrue(lp.addLinkAddress(deprecated));
+ assertEquals(1, lp.getLinkAddresses().size());
+ assertEquals(deprecated, getFirstLinkAddress(lp));
+ assertFalse(LINKADDRV6.equals(getFirstLinkAddress(lp)));
+
+ // Removing LINKADDRV6 removes deprecated, because removing addresses ignores properties.
+ assertTrue(lp.removeLinkAddress(LINKADDRV6));
+ assertEquals(0, lp.getLinkAddresses().size());
}
@SmallTest
diff --git a/core/tests/coretests/src/com/android/internal/util/XmlUtilsTest.java b/core/tests/coretests/src/com/android/internal/util/XmlUtilsTest.java
new file mode 100644
index 000000000000..2596ecefe53d
--- /dev/null
+++ b/core/tests/coretests/src/com/android/internal/util/XmlUtilsTest.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (C) 2013 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;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+import junit.framework.TestCase;
+
+public class XmlUtilsTest extends TestCase {
+
+ // https://code.google.com/p/android/issues/detail?id=63717
+ public void testMapWithNullKeys() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put(null, "nullValue");
+ map.put("foo", "fooValue");
+ XmlUtils.writeMapXml(map, baos);
+
+ InputStream mapInput = new ByteArrayInputStream(baos.toByteArray());
+ HashMap<String, ?> deserialized = XmlUtils.readMapXml(mapInput);
+ assertEquals("nullValue", deserialized.get(null));
+ assertEquals("fooValue", deserialized.get("foo"));
+ }
+}
diff --git a/data/keyboards/Generic.kl b/data/keyboards/Generic.kl
index 1413319c2fd0..0cdcb1cfb705 100644
--- a/data/keyboards/Generic.kl
+++ b/data/keyboards/Generic.kl
@@ -161,8 +161,8 @@ key 128 MEDIA_STOP
key 139 MENU WAKE_DROPPED
key 140 CALCULATOR
# key 141 "KEY_SETUP"
-key 142 POWER WAKE
-key 143 POWER WAKE
+key 142 SLEEP WAKE
+key 143 WAKEUP WAKE
# key 144 "KEY_FILE"
# key 145 "KEY_SENDFILE"
# key 146 "KEY_DELETEFILE"
@@ -423,3 +423,16 @@ axis 0x09 GAS
axis 0x0a BRAKE
axis 0x10 HAT_X
axis 0x11 HAT_Y
+
+# LEDs
+led 0x00 NUM_LOCK
+led 0x01 CAPS_LOCK
+led 0x02 SCROLL_LOCK
+led 0x03 COMPOSE
+led 0x04 KANA
+led 0x05 SLEEP
+led 0x06 SUSPEND
+led 0x07 MUTE
+led 0x08 MISC
+led 0x09 MAIL
+led 0x0a CHARGING
diff --git a/data/keyboards/Vendor_18d1_Product_2c40.kl b/data/keyboards/Vendor_18d1_Product_2c40.kl
new file mode 100644
index 000000000000..903f13b6418e
--- /dev/null
+++ b/data/keyboards/Vendor_18d1_Product_2c40.kl
@@ -0,0 +1,42 @@
+# Copyright (C) 2013 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.
+
+# Odie
+
+key 304 BUTTON_A
+key 305 BUTTON_B
+key 307 BUTTON_X
+key 308 BUTTON_Y
+key 310 BUTTON_L1
+key 311 BUTTON_R1
+key 316 BUTTON_MODE
+key 317 BUTTON_THUMBL
+key 318 BUTTON_THUMBR
+
+key 158 BACK WAKE_DROPPED
+key 172 HOME
+
+axis 0x00 X
+axis 0x01 Y
+axis 0x02 Z
+axis 0x05 RZ
+axis 0x09 RTRIGGER
+axis 0x0a LTRIGGER
+axis 0x10 HAT_X
+axis 0x11 HAT_Y
+
+led 0x00 CONTROLLER_1
+led 0x01 CONTROLLER_2
+led 0x02 CONTROLLER_3
+led 0x03 CONTROLLER_4
diff --git a/docs/html/guide/topics/ui/accessibility/services.jd b/docs/html/guide/topics/ui/accessibility/services.jd
index 4bd752f7c93f..c8680800da06 100644
--- a/docs/html/guide/topics/ui/accessibility/services.jd
+++ b/docs/html/guide/topics/ui/accessibility/services.jd
@@ -81,7 +81,8 @@ as shown in the following sample:</p>
<pre>
&lt;application&gt;
&lt;service android:name=&quot;.MyAccessibilityService&quot;
- android:label=&quot;@string/accessibility_service_label&quot;&gt;
+ android:label=&quot;@string/accessibility_service_label&quot;
+ android:permission=&quot;android.permission.BIND_ACCESSIBILITY_SERVICE&quot&gt;
&lt;intent-filter&gt;
&lt;action android:name=&quot;android.accessibilityservice.AccessibilityService&quot; /&gt;
&lt;/intent-filter&gt;
diff --git a/docs/html/guide/topics/ui/drag-drop.jd b/docs/html/guide/topics/ui/drag-drop.jd
index e98937468db9..9a6b0e92a60a 100644
--- a/docs/html/guide/topics/ui/drag-drop.jd
+++ b/docs/html/guide/topics/ui/drag-drop.jd
@@ -873,7 +873,7 @@ imageView.setOnDragListener(mDragListen);
...
-protected class myDragEventListener implements View.OnDragEventListener {
+protected class myDragEventListener implements View.OnDragListener {
// This is the method that the system calls when it dispatches a drag event to the
// listener.
@@ -899,18 +899,15 @@ protected class myDragEventListener implements View.OnDragEventListener {
v.invalidate();
// returns true to indicate that the View can accept the dragged data.
- return(true);
+ return true;
- } else {
+ }
- // Returns false. During the current drag and drop operation, this View will
- // not receive events again until ACTION_DRAG_ENDED is sent.
- return(false);
+ // Returns false. During the current drag and drop operation, this View will
+ // not receive events again until ACTION_DRAG_ENDED is sent.
+ return false;
- }
- break;
-
- case DragEvent.ACTION_DRAG_ENTERED: {
+ case DragEvent.ACTION_DRAG_ENTERED:
// Applies a green tint to the View. Return true; the return value is ignored.
@@ -919,79 +916,70 @@ protected class myDragEventListener implements View.OnDragEventListener {
// Invalidate the view to force a redraw in the new tint
v.invalidate();
- return(true);
-
- break;
+ return true;
- case DragEvent.ACTION_DRAG_LOCATION:
+ case DragEvent.ACTION_DRAG_LOCATION:
// Ignore the event
- return(true);
-
- break;
-
- case DragEvent.ACTION_DRAG_EXITED:
-
- // Re-sets the color tint to blue. Returns true; the return value is ignored.
- v.setColorFilter(Color.BLUE);
-
- // Invalidate the view to force a redraw in the new tint
- v.invalidate();
+ return true;
- return(true);
+ case DragEvent.ACTION_DRAG_EXITED:
- break;
-
- case DragEvent.ACTION_DROP:
+ // Re-sets the color tint to blue. Returns true; the return value is ignored.
+ v.setColorFilter(Color.BLUE);
- // Gets the item containing the dragged data
- ClipData.Item item = event.getClipData().getItemAt(0);
+ // Invalidate the view to force a redraw in the new tint
+ v.invalidate();
- // Gets the text data from the item.
- dragData = item.getText();
+ return true;
- // Displays a message containing the dragged data.
- Toast.makeText(this, "Dragged data is " + dragData, Toast.LENGTH_LONG);
+ case DragEvent.ACTION_DROP:
- // Turns off any color tints
- v.clearColorFilter();
+ // Gets the item containing the dragged data
+ ClipData.Item item = event.getClipData().getItemAt(0);
- // Invalidates the view to force a redraw
- v.invalidate();
+ // Gets the text data from the item.
+ dragData = item.getText();
- // Returns true. DragEvent.getResult() will return true.
- return(true);
+ // Displays a message containing the dragged data.
+ Toast.makeText(this, "Dragged data is " + dragData, Toast.LENGTH_LONG);
- break;
+ // Turns off any color tints
+ v.clearColorFilter();
- case DragEvent.ACTION_DRAG_ENDED:
+ // Invalidates the view to force a redraw
+ v.invalidate();
- // Turns off any color tinting
- v.clearColorFilter();
+ // Returns true. DragEvent.getResult() will return true.
+ return true;
- // Invalidates the view to force a redraw
- v.invalidate();
+ case DragEvent.ACTION_DRAG_ENDED:
- // Does a getResult(), and displays what happened.
- if (event.getResult()) {
- Toast.makeText(this, "The drop was handled.", Toast.LENGTH_LONG);
+ // Turns off any color tinting
+ v.clearColorFilter();
- } else {
- Toast.makeText(this, "The drop didn't work.", Toast.LENGTH_LONG);
+ // Invalidates the view to force a redraw
+ v.invalidate();
- };
+ // Does a getResult(), and displays what happened.
+ if (event.getResult()) {
+ Toast.makeText(this, "The drop was handled.", Toast.LENGTH_LONG);
- // returns true; the value is ignored.
- return(true);
+ } else {
+ Toast.makeText(this, "The drop didn't work.", Toast.LENGTH_LONG);
- break;
+ }
- // An unknown action type was received.
- default:
- Log.e("DragDrop Example","Unknown action type received by OnDragListener.");
+ // returns true; the value is ignored.
+ return true;
+ // An unknown action type was received.
+ default:
+ Log.e("DragDrop Example","Unknown action type received by OnDragListener.");
break;
- };
- };
+ }
+
+ return false;
+ }
};
</pre>
diff --git a/docs/html/training/articles/perf-tips.jd b/docs/html/training/articles/perf-tips.jd
index 7ff6c5cf7163..1660b7f4ced2 100644
--- a/docs/html/training/articles/perf-tips.jd
+++ b/docs/html/training/articles/perf-tips.jd
@@ -16,7 +16,6 @@ page.article=true
<li><a href="#AvoidFloat">Avoid Using Floating-Point</a></li>
<li><a href="#UseLibraries">Know and Use the Libraries</a></li>
<li><a href="#NativeMethods">Use Native Methods Carefully</a></li>
- <li><a href="#library">Know And Use The Libraries</a></li>
<li><a href="#native_methods">Use Native Methods Judiciously</a></li>
<li><a href="#closing_notes">Closing Notes</a></li>
</ol>
diff --git a/drm/java/android/drm/DrmManagerClient.java b/drm/java/android/drm/DrmManagerClient.java
index 10cdab0c223c..c05ea2e1a1e5 100644
--- a/drm/java/android/drm/DrmManagerClient.java
+++ b/drm/java/android/drm/DrmManagerClient.java
@@ -116,7 +116,7 @@ public class DrmManagerClient {
private static final int ACTION_PROCESS_DRM_INFO = 1002;
private int mUniqueId;
- private int mNativeContext;
+ private long mNativeContext;
private volatile boolean mReleased;
private Context mContext;
private InfoHandler mInfoHandler;
diff --git a/drm/jni/android_drm_DrmManagerClient.cpp b/drm/jni/android_drm_DrmManagerClient.cpp
index baddf6226018..de8531b74571 100644
--- a/drm/jni/android_drm_DrmManagerClient.cpp
+++ b/drm/jni/android_drm_DrmManagerClient.cpp
@@ -182,25 +182,27 @@ static sp<DrmManagerClientImpl> setDrmManagerClientImpl(
JNIEnv* env, jobject thiz, const sp<DrmManagerClientImpl>& client) {
Mutex::Autolock l(sLock);
jclass clazz = env->FindClass("android/drm/DrmManagerClient");
- jfieldID fieldId = env->GetFieldID(clazz, "mNativeContext", "I");
+ jfieldID fieldId = env->GetFieldID(clazz, "mNativeContext", "J");
- sp<DrmManagerClientImpl> old = (DrmManagerClientImpl*)env->GetIntField(thiz, fieldId);
+ jlong oldHandle = env->GetLongField(thiz, fieldId);
+ sp<DrmManagerClientImpl> old = reinterpret_cast<DrmManagerClientImpl*>(oldHandle);
if (client.get()) {
client->incStrong(thiz);
}
if (old != 0) {
old->decStrong(thiz);
}
- env->SetIntField(thiz, fieldId, (int)client.get());
+ env->SetLongField(thiz, fieldId, reinterpret_cast<jlong>(client.get()));
return old;
}
static sp<DrmManagerClientImpl> getDrmManagerClientImpl(JNIEnv* env, jobject thiz) {
Mutex::Autolock l(sLock);
jclass clazz = env->FindClass("android/drm/DrmManagerClient");
- jfieldID fieldId = env->GetFieldID(clazz, "mNativeContext", "I");
+ jfieldID fieldId = env->GetFieldID(clazz, "mNativeContext", "J");
- DrmManagerClientImpl* const client = (DrmManagerClientImpl*)env->GetIntField(thiz, fieldId);
+ jlong clientHandle = env->GetLongField(thiz, fieldId);
+ DrmManagerClientImpl* const client = reinterpret_cast<DrmManagerClientImpl*>(clientHandle);
return sp<DrmManagerClientImpl>(client);
}
@@ -214,7 +216,7 @@ static jint android_drm_DrmManagerClient_initialize(
setDrmManagerClientImpl(env, thiz, drmManager);
ALOGV("initialize - Exit");
- return uniqueId;
+ return static_cast<jint>(uniqueId);
}
static void android_drm_DrmManagerClient_setListeners(
@@ -406,7 +408,7 @@ static jint android_drm_DrmManagerClient_saveRights(
delete[] mData; mData = NULL;
ALOGV("saveRights - Exit");
- return result;
+ return static_cast<jint>(result);
}
static jboolean android_drm_DrmManagerClient_canHandle(
@@ -583,7 +585,7 @@ static jint android_drm_DrmManagerClient_getDrmObjectType(
->getDrmObjectType(uniqueId, Utility::getStringValue(env, path),
Utility::getStringValue(env, mimeType));
ALOGV("getDrmObjectType Exit");
- return drmObjectType;
+ return static_cast<jint>(drmObjectType);
}
static jstring android_drm_DrmManagerClient_getOriginalMimeType(
@@ -609,20 +611,21 @@ static jint android_drm_DrmManagerClient_checkRightsStatus(
= getDrmManagerClientImpl(env, thiz)
->checkRightsStatus(uniqueId, Utility::getStringValue(env, path), action);
ALOGV("checkRightsStatus Exit");
- return rightsStatus;
+ return static_cast<jint>(rightsStatus);
}
static jint android_drm_DrmManagerClient_removeRights(
JNIEnv* env, jobject thiz, jint uniqueId, jstring path) {
ALOGV("removeRights");
- return getDrmManagerClientImpl(env, thiz)
- ->removeRights(uniqueId, Utility::getStringValue(env, path));
+ return static_cast<jint>(getDrmManagerClientImpl(env, thiz)
+ ->removeRights(uniqueId, Utility::getStringValue(env, path)));
}
static jint android_drm_DrmManagerClient_removeAllRights(
JNIEnv* env, jobject thiz, jint uniqueId) {
ALOGV("removeAllRights");
- return getDrmManagerClientImpl(env, thiz)->removeAllRights(uniqueId);
+ return static_cast<jint>(getDrmManagerClientImpl(env, thiz)
+ ->removeAllRights(uniqueId));
}
static jint android_drm_DrmManagerClient_openConvertSession(
@@ -632,7 +635,7 @@ static jint android_drm_DrmManagerClient_openConvertSession(
= getDrmManagerClientImpl(env, thiz)
->openConvertSession(uniqueId, Utility::getStringValue(env, mimeType));
ALOGV("openConvertSession Exit");
- return convertId;
+ return static_cast<jint>(convertId);
}
static jobject GetConvertedStatus(JNIEnv* env, DrmConvertedStatus* pDrmConvertedStatus) {
@@ -686,7 +689,7 @@ static jobject android_drm_DrmManagerClient_convertData(
}
static jobject android_drm_DrmManagerClient_closeConvertSession(
- JNIEnv* env, jobject thiz, int uniqueId, jint convertId) {
+ JNIEnv* env, jobject thiz, jint uniqueId, jint convertId) {
ALOGV("closeConvertSession Enter");
diff --git a/graphics/java/android/graphics/AvoidXfermode.java b/graphics/java/android/graphics/AvoidXfermode.java
index 5a59e367f9c0..206c9595d939 100644
--- a/graphics/java/android/graphics/AvoidXfermode.java
+++ b/graphics/java/android/graphics/AvoidXfermode.java
@@ -56,6 +56,6 @@ public class AvoidXfermode extends Xfermode {
native_instance = nativeCreate(opColor, tolerance, mode.nativeInt);
}
- private static native int nativeCreate(int opColor, int tolerance,
- int nativeMode);
+ private static native long nativeCreate(int opColor, int tolerance,
+ int nativeMode);
}
diff --git a/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java
index b5666992cf26..7d1eb1b7d55b 100644
--- a/graphics/java/android/graphics/Bitmap.java
+++ b/graphics/java/android/graphics/Bitmap.java
@@ -41,7 +41,7 @@ public final class Bitmap implements Parcelable {
*
* @hide
*/
- public final int mNativeBitmap;
+ public final long mNativeBitmap;
/**
* Backing buffer for the Bitmap.
@@ -113,7 +113,7 @@ public final class Bitmap implements Parcelable {
* int (pointer).
*/
@SuppressWarnings({"UnusedDeclaration"}) // called from JNI
- Bitmap(int nativeBitmap, byte[] buffer, int width, int height, int density,
+ Bitmap(long nativeBitmap, byte[] buffer, int width, int height, int density,
boolean isMutable, boolean isPremultiplied,
byte[] ninePatchChunk, int[] layoutBounds) {
if (nativeBitmap == 0) {
@@ -1052,7 +1052,7 @@ public final class Bitmap implements Parcelable {
* <p>This method will not affect the behavior of a bitmap without an alpha
* channel, or if {@link #hasAlpha()} returns false.</p>
*
- * <p>Calling createBitmap() or createScaledBitmap() with a source
+ * <p>Calling {@link #createBitmap} or {@link #createScaledBitmap} with a source
* Bitmap whose colors are not pre-multiplied may result in a RuntimeException,
* since those functions require drawing the source, which is not supported for
* un-pre-multiplied Bitmaps.</p>
@@ -1536,7 +1536,7 @@ public final class Bitmap implements Parcelable {
*/
public Bitmap extractAlpha(Paint paint, int[] offsetXY) {
checkRecycled("Can't extractAlpha on a recycled bitmap");
- int nativePaint = paint != null ? paint.mNativePaint : 0;
+ long nativePaint = paint != null ? paint.mNativePaint : 0;
Bitmap bm = nativeExtractAlpha(mNativeBitmap, nativePaint, offsetXY);
if (bm == null) {
throw new RuntimeException("Failed to extractAlpha on Bitmap");
@@ -1570,9 +1570,9 @@ public final class Bitmap implements Parcelable {
}
private static class BitmapFinalizer {
- private final int mNativeBitmap;
+ private final long mNativeBitmap;
- BitmapFinalizer(int nativeBitmap) {
+ BitmapFinalizer(long nativeBitmap) {
mNativeBitmap = nativeBitmap;
}
@@ -1593,56 +1593,56 @@ public final class Bitmap implements Parcelable {
private static native Bitmap nativeCreate(int[] colors, int offset,
int stride, int width, int height,
int nativeConfig, boolean mutable);
- private static native Bitmap nativeCopy(int srcBitmap, int nativeConfig,
+ private static native Bitmap nativeCopy(long nativeSrcBitmap, int nativeConfig,
boolean isMutable);
- private static native void nativeDestructor(int nativeBitmap);
- private static native boolean nativeRecycle(int nativeBitmap);
- private static native void nativeReconfigure(int nativeBitmap, int width, int height,
+ private static native void nativeDestructor(long nativeBitmap);
+ private static native boolean nativeRecycle(long nativeBitmap);
+ private static native void nativeReconfigure(long nativeBitmap, int width, int height,
int config, int allocSize);
- private static native boolean nativeCompress(int nativeBitmap, int format,
+ private static native boolean nativeCompress(long nativeBitmap, int format,
int quality, OutputStream stream,
byte[] tempStorage);
- private static native void nativeErase(int nativeBitmap, int color);
- private static native int nativeRowBytes(int nativeBitmap);
- private static native int nativeConfig(int nativeBitmap);
+ private static native void nativeErase(long nativeBitmap, int color);
+ private static native int nativeRowBytes(long nativeBitmap);
+ private static native int nativeConfig(long nativeBitmap);
- private static native int nativeGetPixel(int nativeBitmap, int x, int y,
+ private static native int nativeGetPixel(long nativeBitmap, int x, int y,
boolean isPremultiplied);
- private static native void nativeGetPixels(int nativeBitmap, int[] pixels,
+ private static native void nativeGetPixels(long nativeBitmap, int[] pixels,
int offset, int stride, int x, int y,
int width, int height, boolean isPremultiplied);
- private static native void nativeSetPixel(int nativeBitmap, int x, int y,
+ private static native void nativeSetPixel(long nativeBitmap, int x, int y,
int color, boolean isPremultiplied);
- private static native void nativeSetPixels(int nativeBitmap, int[] colors,
+ private static native void nativeSetPixels(long nativeBitmap, int[] colors,
int offset, int stride, int x, int y,
int width, int height, boolean isPremultiplied);
- private static native void nativeCopyPixelsToBuffer(int nativeBitmap,
+ private static native void nativeCopyPixelsToBuffer(long nativeBitmap,
Buffer dst);
- private static native void nativeCopyPixelsFromBuffer(int nb, Buffer src);
- private static native int nativeGenerationId(int nativeBitmap);
+ private static native void nativeCopyPixelsFromBuffer(long nativeBitmap, Buffer src);
+ private static native int nativeGenerationId(long nativeBitmap);
private static native Bitmap nativeCreateFromParcel(Parcel p);
// returns true on success
- private static native boolean nativeWriteToParcel(int nativeBitmap,
+ private static native boolean nativeWriteToParcel(long nativeBitmap,
boolean isMutable,
int density,
Parcel p);
// returns a new bitmap built from the native bitmap's alpha, and the paint
- private static native Bitmap nativeExtractAlpha(int nativeBitmap,
- int nativePaint,
+ private static native Bitmap nativeExtractAlpha(long nativeBitmap,
+ long nativePaint,
int[] offsetXY);
- private static native void nativePrepareToDraw(int nativeBitmap);
- private static native boolean nativeHasAlpha(int nativeBitmap);
- private static native void nativeSetAlphaAndPremultiplied(int nBitmap, boolean hasAlpha,
+ private static native void nativePrepareToDraw(long nativeBitmap);
+ private static native boolean nativeHasAlpha(long nativeBitmap);
+ private static native void nativeSetAlphaAndPremultiplied(long nBitmap, boolean hasAlpha,
boolean isPremul);
- private static native boolean nativeHasMipMap(int nativeBitmap);
- private static native void nativeSetHasMipMap(int nBitmap, boolean hasMipMap);
- private static native boolean nativeSameAs(int nb0, int nb1);
-
- /* package */ final int ni() {
+ private static native boolean nativeHasMipMap(long nativeBitmap);
+ private static native void nativeSetHasMipMap(long nativeBitmap, boolean hasMipMap);
+ private static native boolean nativeSameAs(long nativeBitmap0, long nativeBitmap1);
+
+ /* package */ final long ni() {
return mNativeBitmap;
}
}
diff --git a/graphics/java/android/graphics/BitmapFactory.java b/graphics/java/android/graphics/BitmapFactory.java
index 45753645835f..67e8f23444ac 100644
--- a/graphics/java/android/graphics/BitmapFactory.java
+++ b/graphics/java/android/graphics/BitmapFactory.java
@@ -590,7 +590,7 @@ public class BitmapFactory {
Trace.traceBegin(Trace.TRACE_TAG_GRAPHICS, "decodeBitmap");
try {
if (is instanceof AssetManager.AssetInputStream) {
- final int asset = ((AssetManager.AssetInputStream) is).getAssetInt();
+ final long asset = ((AssetManager.AssetInputStream) is).getNativeAsset();
bm = nativeDecodeAsset(asset, outPadding, opts);
} else {
bm = decodeStreamInternal(is, outPadding, opts);
@@ -693,7 +693,7 @@ public class BitmapFactory {
Rect padding, Options opts);
private static native Bitmap nativeDecodeFileDescriptor(FileDescriptor fd,
Rect padding, Options opts);
- private static native Bitmap nativeDecodeAsset(int asset, Rect padding, Options opts);
+ private static native Bitmap nativeDecodeAsset(long nativeAsset, Rect padding, Options opts);
private static native Bitmap nativeDecodeByteArray(byte[] data, int offset,
int length, Options opts);
private static native boolean nativeIsSeekable(FileDescriptor fd);
diff --git a/graphics/java/android/graphics/BitmapRegionDecoder.java b/graphics/java/android/graphics/BitmapRegionDecoder.java
index 3a99977df758..e689b083ad97 100644
--- a/graphics/java/android/graphics/BitmapRegionDecoder.java
+++ b/graphics/java/android/graphics/BitmapRegionDecoder.java
@@ -33,7 +33,7 @@ import java.io.InputStream;
*
*/
public final class BitmapRegionDecoder {
- private int mNativeBitmapRegionDecoder;
+ private long mNativeBitmapRegionDecoder;
private boolean mRecycled;
// ensures that the native decoder object exists and that only one decode can
// occur at a time.
@@ -114,7 +114,7 @@ public final class BitmapRegionDecoder {
boolean isShareable) throws IOException {
if (is instanceof AssetManager.AssetInputStream) {
return nativeNewInstance(
- ((AssetManager.AssetInputStream) is).getAssetInt(),
+ ((AssetManager.AssetInputStream) is).getNativeAsset(),
isShareable);
} else {
// pass some temp storage down to the native code. 1024 is made up,
@@ -165,7 +165,7 @@ public final class BitmapRegionDecoder {
This can be called from JNI code.
*/
- private BitmapRegionDecoder(int decoder) {
+ private BitmapRegionDecoder(long decoder) {
mNativeBitmapRegionDecoder = decoder;
mRecycled = false;
}
@@ -254,12 +254,12 @@ public final class BitmapRegionDecoder {
}
}
- private static native Bitmap nativeDecodeRegion(int lbm,
+ private static native Bitmap nativeDecodeRegion(long lbm,
int start_x, int start_y, int width, int height,
BitmapFactory.Options options);
- private static native int nativeGetWidth(int lbm);
- private static native int nativeGetHeight(int lbm);
- private static native void nativeClean(int lbm);
+ private static native int nativeGetWidth(long lbm);
+ private static native int nativeGetHeight(long lbm);
+ private static native void nativeClean(long lbm);
private static native BitmapRegionDecoder nativeNewInstance(
byte[] data, int offset, int length, boolean isShareable);
@@ -268,5 +268,5 @@ public final class BitmapRegionDecoder {
private static native BitmapRegionDecoder nativeNewInstance(
InputStream is, byte[] storage, boolean isShareable);
private static native BitmapRegionDecoder nativeNewInstance(
- int asset, boolean isShareable);
+ long asset, boolean isShareable);
}
diff --git a/graphics/java/android/graphics/BitmapShader.java b/graphics/java/android/graphics/BitmapShader.java
index a4f75b92b7b4..b7673d87c46c 100644
--- a/graphics/java/android/graphics/BitmapShader.java
+++ b/graphics/java/android/graphics/BitmapShader.java
@@ -42,7 +42,7 @@ public class BitmapShader extends Shader {
mBitmap = bitmap;
mTileX = tileX;
mTileY = tileY;
- final int b = bitmap.ni();
+ final long b = bitmap.ni();
native_instance = nativeCreate(b, tileX.nativeInt, tileY.nativeInt);
native_shader = nativePostCreate(native_instance, b, tileX.nativeInt, tileY.nativeInt);
}
@@ -57,8 +57,8 @@ public class BitmapShader extends Shader {
return copy;
}
- private static native int nativeCreate(int native_bitmap, int shaderTileModeX,
+ private static native long nativeCreate(long native_bitmap, int shaderTileModeX,
int shaderTileModeY);
- private static native int nativePostCreate(int native_shader, int native_bitmap,
+ private static native long nativePostCreate(long native_shader, long native_bitmap,
int shaderTileModeX, int shaderTileModeY);
}
diff --git a/graphics/java/android/graphics/BlurMaskFilter.java b/graphics/java/android/graphics/BlurMaskFilter.java
index 5eafe76c357a..939af5248f99 100644
--- a/graphics/java/android/graphics/BlurMaskFilter.java
+++ b/graphics/java/android/graphics/BlurMaskFilter.java
@@ -47,5 +47,5 @@ public class BlurMaskFilter extends MaskFilter {
native_instance = nativeConstructor(radius, style.native_int);
}
- private static native int nativeConstructor(float radius, int style);
+ private static native long nativeConstructor(float radius, int style);
}
diff --git a/graphics/java/android/graphics/Camera.java b/graphics/java/android/graphics/Camera.java
index 9e07bd4c133d..c263a84dbabb 100644
--- a/graphics/java/android/graphics/Camera.java
+++ b/graphics/java/android/graphics/Camera.java
@@ -159,7 +159,7 @@ public class Camera {
}
public native float dotWithNormal(float dx, float dy, float dz);
-
+
protected void finalize() throws Throwable {
try {
nativeDestructor();
@@ -170,8 +170,8 @@ public class Camera {
private native void nativeConstructor();
private native void nativeDestructor();
- private native void nativeGetMatrix(int native_matrix);
- private native void nativeApplyToCanvas(int native_canvas);
-
- int native_instance;
+ private native void nativeGetMatrix(long native_matrix);
+ private native void nativeApplyToCanvas(long native_canvas);
+
+ long native_instance;
}
diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java
index d46238fc42a2..f86840ee2f61 100644
--- a/graphics/java/android/graphics/Canvas.java
+++ b/graphics/java/android/graphics/Canvas.java
@@ -40,7 +40,7 @@ public class Canvas {
// assigned in constructors or setBitmap, freed in finalizer
/** @hide */
- public int mNativeCanvas;
+ public long mNativeCanvas;
// may be null
private Bitmap mBitmap;
@@ -84,9 +84,9 @@ public class Canvas {
private final CanvasFinalizer mFinalizer;
private static final class CanvasFinalizer {
- private int mNativeCanvas;
+ private long mNativeCanvas;
- public CanvasFinalizer(int nativeCanvas) {
+ public CanvasFinalizer(long nativeCanvas) {
mNativeCanvas = nativeCanvas;
}
@@ -144,7 +144,7 @@ public class Canvas {
}
/** @hide */
- public Canvas(int nativeCanvas) {
+ public Canvas(long nativeCanvas) {
if (nativeCanvas == 0) {
throw new IllegalStateException();
}
@@ -157,8 +157,8 @@ public class Canvas {
* Replace existing canvas while ensuring that the swap has occurred before
* the previous native canvas is unreferenced.
*/
- private void safeCanvasSwap(int nativeCanvas, boolean copyState) {
- final int oldCanvas = mNativeCanvas;
+ private void safeCanvasSwap(long nativeCanvas, boolean copyState) {
+ final long oldCanvas = mNativeCanvas;
mNativeCanvas = nativeCanvas;
mFinalizer.mNativeCanvas = nativeCanvas;
if (copyState) {
@@ -174,7 +174,7 @@ public class Canvas {
*
* @hide
*/
- public int getNativeCanvas() {
+ public long getNativeCanvas() {
return mNativeCanvas;
}
@@ -712,7 +712,7 @@ public class Canvas {
}
public void setDrawFilter(DrawFilter filter) {
- int nativeFilter = 0;
+ long nativeFilter = 0;
if (filter != null) {
nativeFilter = filter.mNativeInt;
}
@@ -1387,7 +1387,7 @@ public class Canvas {
vertOffset, texs, texOffset, colors, colorOffset,
indices, indexOffset, indexCount, paint.mNativePaint);
}
-
+
/**
* Draw the text, with origin at (x,y), using the specified paint. The
* origin is interpreted based on the Align setting in the paint.
@@ -1713,137 +1713,155 @@ public class Canvas {
*/
public static native void freeTextLayoutCaches();
- private static native int initRaster(int nativeBitmapOrZero);
- private static native void copyNativeCanvasState(int srcCanvas, int dstCanvas);
- private static native int native_saveLayer(int nativeCanvas, RectF bounds,
- int paint, int layerFlags);
- private static native int native_saveLayer(int nativeCanvas, float l,
+ private static native long initRaster(long nativeBitmapOrZero);
+ private static native void copyNativeCanvasState(long nativeSrcCanvas,
+ long nativeDstCanvas);
+ private static native int native_saveLayer(long nativeCanvas,
+ RectF bounds,
+ long nativePaint,
+ int layerFlags);
+ private static native int native_saveLayer(long nativeCanvas, float l,
float t, float r, float b,
- int paint, int layerFlags);
- private static native int native_saveLayerAlpha(int nativeCanvas,
+ long nativePaint,
+ int layerFlags);
+ private static native int native_saveLayerAlpha(long nativeCanvas,
RectF bounds, int alpha,
int layerFlags);
- private static native int native_saveLayerAlpha(int nativeCanvas, float l,
+ private static native int native_saveLayerAlpha(long nativeCanvas, float l,
float t, float r, float b,
int alpha, int layerFlags);
- private static native void native_concat(int nCanvas, int nMatrix);
- private static native void native_setMatrix(int nCanvas, int nMatrix);
- private static native boolean native_clipRect(int nCanvas,
+ private static native void native_concat(long nativeCanvas,
+ long nativeMatrix);
+ private static native void native_setMatrix(long nativeCanvas,
+ long nativeMatrix);
+ private static native boolean native_clipRect(long nativeCanvas,
float left, float top,
float right, float bottom,
int regionOp);
- private static native boolean native_clipPath(int nativeCanvas,
- int nativePath,
+ private static native boolean native_clipPath(long nativeCanvas,
+ long nativePath,
int regionOp);
- private static native boolean native_clipRegion(int nativeCanvas,
- int nativeRegion,
+ private static native boolean native_clipRegion(long nativeCanvas,
+ long nativeRegion,
int regionOp);
- private static native void nativeSetDrawFilter(int nativeCanvas,
- int nativeFilter);
- private static native boolean native_getClipBounds(int nativeCanvas,
+ private static native void nativeSetDrawFilter(long nativeCanvas,
+ long nativeFilter);
+ private static native boolean native_getClipBounds(long nativeCanvas,
Rect bounds);
- private static native void native_getCTM(int canvas, int matrix);
- private static native boolean native_quickReject(int nativeCanvas,
+ private static native void native_getCTM(long nativeCanvas,
+ long nativeMatrix);
+ private static native boolean native_quickReject(long nativeCanvas,
RectF rect);
- private static native boolean native_quickReject(int nativeCanvas,
- int path);
- private static native boolean native_quickReject(int nativeCanvas,
+ private static native boolean native_quickReject(long nativeCanvas,
+ long nativePath);
+ private static native boolean native_quickReject(long nativeCanvas,
float left, float top,
float right, float bottom);
- private static native void native_drawRGB(int nativeCanvas, int r, int g,
+ private static native void native_drawRGB(long nativeCanvas, int r, int g,
int b);
- private static native void native_drawARGB(int nativeCanvas, int a, int r,
+ private static native void native_drawARGB(long nativeCanvas, int a, int r,
int g, int b);
- private static native void native_drawColor(int nativeCanvas, int color);
- private static native void native_drawColor(int nativeCanvas, int color,
+ private static native void native_drawColor(long nativeCanvas, int color);
+ private static native void native_drawColor(long nativeCanvas, int color,
int mode);
- private static native void native_drawPaint(int nativeCanvas, int paint);
- private static native void native_drawLine(int nativeCanvas, float startX,
+ private static native void native_drawPaint(long nativeCanvas,
+ long nativePaint);
+ private static native void native_drawLine(long nativeCanvas, float startX,
float startY, float stopX,
- float stopY, int paint);
- private static native void native_drawRect(int nativeCanvas, RectF rect,
- int paint);
- private static native void native_drawRect(int nativeCanvas, float left,
+ float stopY, long nativePaint);
+ private static native void native_drawRect(long nativeCanvas, RectF rect,
+ long nativePaint);
+ private static native void native_drawRect(long nativeCanvas, float left,
float top, float right,
- float bottom, int paint);
- private static native void native_drawOval(int nativeCanvas, RectF oval,
- int paint);
- private static native void native_drawCircle(int nativeCanvas, float cx,
+ float bottom,
+ long nativePaint);
+ private static native void native_drawOval(long nativeCanvas, RectF oval,
+ long nativePaint);
+ private static native void native_drawCircle(long nativeCanvas, float cx,
float cy, float radius,
- int paint);
- private static native void native_drawArc(int nativeCanvas, RectF oval,
+ long nativePaint);
+ private static native void native_drawArc(long nativeCanvas, RectF oval,
float startAngle, float sweep,
- boolean useCenter, int paint);
- private static native void native_drawRoundRect(int nativeCanvas,
+ boolean useCenter,
+ long nativePaint);
+ private static native void native_drawRoundRect(long nativeCanvas,
RectF rect, float rx,
- float ry, int paint);
- private static native void native_drawPath(int nativeCanvas, int path,
- int paint);
- private native void native_drawBitmap(int nativeCanvas, int bitmap,
+ float ry, long nativePaint);
+ private static native void native_drawPath(long nativeCanvas,
+ long nativePath,
+ long nativePaint);
+ private native void native_drawBitmap(long nativeCanvas, long nativeBitmap,
float left, float top,
- int nativePaintOrZero,
+ long nativePaintOrZero,
int canvasDensity,
int screenDensity,
int bitmapDensity);
- private native void native_drawBitmap(int nativeCanvas, int bitmap,
+ private native void native_drawBitmap(long nativeCanvas, long nativeBitmap,
Rect src, RectF dst,
- int nativePaintOrZero,
+ long nativePaintOrZero,
int screenDensity,
int bitmapDensity);
- private static native void native_drawBitmap(int nativeCanvas, int bitmap,
+ private static native void native_drawBitmap(long nativeCanvas,
+ long nativeBitmap,
Rect src, Rect dst,
- int nativePaintOrZero,
+ long nativePaintOrZero,
int screenDensity,
int bitmapDensity);
- private static native void native_drawBitmap(int nativeCanvas, int[] colors,
+ private static native void native_drawBitmap(long nativeCanvas, int[] colors,
int offset, int stride, float x,
float y, int width, int height,
boolean hasAlpha,
- int nativePaintOrZero);
- private static native void nativeDrawBitmapMatrix(int nCanvas, int nBitmap,
- int nMatrix, int nPaint);
- private static native void nativeDrawBitmapMesh(int nCanvas, int nBitmap,
+ long nativePaintOrZero);
+ private static native void nativeDrawBitmapMatrix(long nativeCanvas,
+ long nativeBitmap,
+ long nativeMatrix,
+ long nativePaint);
+ private static native void nativeDrawBitmapMesh(long nativeCanvas,
+ long nativeBitmap,
int meshWidth, int meshHeight,
float[] verts, int vertOffset,
- int[] colors, int colorOffset, int nPaint);
- private static native void nativeDrawVertices(int nCanvas, int mode, int n,
+ int[] colors, int colorOffset,
+ long nativePaint);
+ private static native void nativeDrawVertices(long nativeCanvas, int mode, int n,
float[] verts, int vertOffset, float[] texs, int texOffset,
int[] colors, int colorOffset, short[] indices,
- int indexOffset, int indexCount, int nPaint);
-
- private static native void native_drawText(int nativeCanvas, char[] text,
+ int indexOffset, int indexCount, long nativePaint);
+
+ private static native void native_drawText(long nativeCanvas, char[] text,
int index, int count, float x,
- float y, int flags, int paint);
- private static native void native_drawText(int nativeCanvas, String text,
+ float y, int flags,
+ long nativePaint);
+ private static native void native_drawText(long nativeCanvas, String text,
int start, int end, float x,
- float y, int flags, int paint);
+ float y, int flags,
+ long nativePaint);
- private static native void native_drawTextRun(int nativeCanvas, String text,
+ private static native void native_drawTextRun(long nativeCanvas, String text,
int start, int end, int contextStart, int contextEnd,
- float x, float y, int flags, int paint);
+ float x, float y, int flags, long nativePaint);
- private static native void native_drawTextRun(int nativeCanvas, char[] text,
+ private static native void native_drawTextRun(long nativeCanvas, char[] text,
int start, int count, int contextStart, int contextCount,
- float x, float y, int flags, int paint);
+ float x, float y, int flags, long nativePaint);
- private static native void native_drawPosText(int nativeCanvas,
+ private static native void native_drawPosText(long nativeCanvas,
char[] text, int index,
int count, float[] pos,
- int paint);
- private static native void native_drawPosText(int nativeCanvas,
+ long nativePaint);
+ private static native void native_drawPosText(long nativeCanvas,
String text, float[] pos,
- int paint);
- private static native void native_drawTextOnPath(int nativeCanvas,
+ long nativePaint);
+ private static native void native_drawTextOnPath(long nativeCanvas,
char[] text, int index,
- int count, int path,
+ int count, long nativePath,
float hOffset,
float vOffset, int bidiFlags,
- int paint);
- private static native void native_drawTextOnPath(int nativeCanvas,
- String text, int path,
- float hOffset,
- float vOffset,
- int flags, int paint);
- private static native void finalizer(int nativeCanvas);
+ long nativePaint);
+ private static native void native_drawTextOnPath(long nativeCanvas,
+ String text, long nativePath,
+ float hOffset,
+ float vOffset,
+ int flags, long nativePaint);
+ private static native void finalizer(long nativeCanvas);
}
diff --git a/graphics/java/android/graphics/ColorFilter.java b/graphics/java/android/graphics/ColorFilter.java
index e5cf8301b0e3..8e432daf9a11 100644
--- a/graphics/java/android/graphics/ColorFilter.java
+++ b/graphics/java/android/graphics/ColorFilter.java
@@ -23,12 +23,12 @@ package android.graphics;
public class ColorFilter {
- int native_instance;
+ long native_instance;
/**
* @hide
*/
- public int nativeColorFilter;
+ public long nativeColorFilter;
protected void finalize() throws Throwable {
try {
@@ -38,5 +38,5 @@ public class ColorFilter {
}
}
- private static native void finalizer(int native_instance, int nativeColorFilter);
+ private static native void finalizer(long native_instance, long nativeColorFilter);
}
diff --git a/graphics/java/android/graphics/ColorMatrixColorFilter.java b/graphics/java/android/graphics/ColorMatrixColorFilter.java
index 4f32342dc0aa..21b7721225e8 100644
--- a/graphics/java/android/graphics/ColorMatrixColorFilter.java
+++ b/graphics/java/android/graphics/ColorMatrixColorFilter.java
@@ -45,6 +45,6 @@ public class ColorMatrixColorFilter extends ColorFilter {
nativeColorFilter = nColorMatrixFilter(native_instance, array);
}
- private static native int nativeColorMatrixFilter(float[] array);
- private static native int nColorMatrixFilter(int nativeFilter, float[] array);
+ private static native long nativeColorMatrixFilter(float[] array);
+ private static native long nColorMatrixFilter(long nativeFilter, float[] array);
}
diff --git a/graphics/java/android/graphics/ComposePathEffect.java b/graphics/java/android/graphics/ComposePathEffect.java
index beac78e1da45..3fc9eb5aea15 100644
--- a/graphics/java/android/graphics/ComposePathEffect.java
+++ b/graphics/java/android/graphics/ComposePathEffect.java
@@ -27,6 +27,7 @@ public class ComposePathEffect extends PathEffect {
innerpe.native_instance);
}
- private static native int nativeCreate(int outerpe, int innerpe);
+ private static native long nativeCreate(long nativeOuterpe,
+ long nativeInnerpe);
}
diff --git a/graphics/java/android/graphics/ComposeShader.java b/graphics/java/android/graphics/ComposeShader.java
index de0d3d6aa00b..5109ffd1a311 100644
--- a/graphics/java/android/graphics/ComposeShader.java
+++ b/graphics/java/android/graphics/ComposeShader.java
@@ -104,12 +104,12 @@ public class ComposeShader extends Shader {
return copy;
}
- private static native int nativeCreate1(int native_shaderA, int native_shaderB,
- int native_mode);
- private static native int nativeCreate2(int native_shaderA, int native_shaderB,
+ private static native long nativeCreate1(long native_shaderA, long native_shaderB,
+ long native_mode);
+ private static native long nativeCreate2(long native_shaderA, long native_shaderB,
int porterDuffMode);
- private static native int nativePostCreate1(int native_shader, int native_skiaShaderA,
- int native_skiaShaderB, int native_mode);
- private static native int nativePostCreate2(int native_shader, int native_skiaShaderA,
- int native_skiaShaderB, int porterDuffMode);
+ private static native long nativePostCreate1(long native_shader, long native_skiaShaderA,
+ long native_skiaShaderB, long native_mode);
+ private static native long nativePostCreate2(long native_shader, long native_skiaShaderA,
+ long native_skiaShaderB, int porterDuffMode);
}
diff --git a/graphics/java/android/graphics/CornerPathEffect.java b/graphics/java/android/graphics/CornerPathEffect.java
index 400c8864b620..8f4d7d9b1c49 100644
--- a/graphics/java/android/graphics/CornerPathEffect.java
+++ b/graphics/java/android/graphics/CornerPathEffect.java
@@ -28,6 +28,6 @@ public class CornerPathEffect extends PathEffect {
native_instance = nativeCreate(radius);
}
- private static native int nativeCreate(float radius);
+ private static native long nativeCreate(float radius);
}
diff --git a/graphics/java/android/graphics/DashPathEffect.java b/graphics/java/android/graphics/DashPathEffect.java
index 2bdecce57ebc..ef3ebe8089ca 100644
--- a/graphics/java/android/graphics/DashPathEffect.java
+++ b/graphics/java/android/graphics/DashPathEffect.java
@@ -38,6 +38,6 @@ public class DashPathEffect extends PathEffect {
native_instance = nativeCreate(intervals, phase);
}
- private static native int nativeCreate(float intervals[], float phase);
+ private static native long nativeCreate(float intervals[], float phase);
}
diff --git a/graphics/java/android/graphics/DiscretePathEffect.java b/graphics/java/android/graphics/DiscretePathEffect.java
index de8b2f0570e8..3b3c9c9be6c2 100644
--- a/graphics/java/android/graphics/DiscretePathEffect.java
+++ b/graphics/java/android/graphics/DiscretePathEffect.java
@@ -26,6 +26,6 @@ public class DiscretePathEffect extends PathEffect {
native_instance = nativeCreate(segmentLength, deviation);
}
- private static native int nativeCreate(float length, float deviation);
+ private static native long nativeCreate(float length, float deviation);
}
diff --git a/graphics/java/android/graphics/DrawFilter.java b/graphics/java/android/graphics/DrawFilter.java
index 1f64539920dd..ed38f378776c 100644
--- a/graphics/java/android/graphics/DrawFilter.java
+++ b/graphics/java/android/graphics/DrawFilter.java
@@ -25,7 +25,7 @@ package android.graphics;
public class DrawFilter {
// this is set by subclasses, but don't make it public
- /* package */ int mNativeInt; // pointer to native object
+ /* package */ long mNativeInt; // pointer to native object
protected void finalize() throws Throwable {
try {
@@ -35,6 +35,6 @@ public class DrawFilter {
}
}
- private static native void nativeDestructor(int nativeDrawFilter);
+ private static native void nativeDestructor(long nativeDrawFilter);
}
diff --git a/graphics/java/android/graphics/EmbossMaskFilter.java b/graphics/java/android/graphics/EmbossMaskFilter.java
index 5dd86113e360..a9e180fdb6c2 100644
--- a/graphics/java/android/graphics/EmbossMaskFilter.java
+++ b/graphics/java/android/graphics/EmbossMaskFilter.java
@@ -33,6 +33,6 @@ public class EmbossMaskFilter extends MaskFilter {
native_instance = nativeConstructor(direction, ambient, specular, blurRadius);
}
- private static native int nativeConstructor(float[] direction, float ambient, float specular, float blurRadius);
+ private static native long nativeConstructor(float[] direction, float ambient, float specular, float blurRadius);
}
diff --git a/graphics/java/android/graphics/Interpolator.java b/graphics/java/android/graphics/Interpolator.java
index 75851a636380..f695a9ea2cf4 100644
--- a/graphics/java/android/graphics/Interpolator.java
+++ b/graphics/java/android/graphics/Interpolator.java
@@ -151,13 +151,13 @@ public class Interpolator {
private int mValueCount;
private int mFrameCount;
- private final int native_instance;
+ private final long native_instance;
- private static native int nativeConstructor(int valueCount, int frameCount);
- private static native void nativeDestructor(int native_instance);
- private static native void nativeReset(int native_instance, int valueCount, int frameCount);
- private static native void nativeSetKeyFrame(int native_instance, int index, int msec, float[] values, float[] blend);
- private static native void nativeSetRepeatMirror(int native_instance, float repeatCount, boolean mirror);
- private static native int nativeTimeToValues(int native_instance, int msec, float[] values);
+ private static native long nativeConstructor(int valueCount, int frameCount);
+ private static native void nativeDestructor(long native_instance);
+ private static native void nativeReset(long native_instance, int valueCount, int frameCount);
+ private static native void nativeSetKeyFrame(long native_instance, int index, int msec, float[] values, float[] blend);
+ private static native void nativeSetRepeatMirror(long native_instance, float repeatCount, boolean mirror);
+ private static native int nativeTimeToValues(long native_instance, int msec, float[] values);
}
diff --git a/graphics/java/android/graphics/LargeBitmap.java b/graphics/java/android/graphics/LargeBitmap.java
index 6656b1752e91..238b32ae1e42 100644
--- a/graphics/java/android/graphics/LargeBitmap.java
+++ b/graphics/java/android/graphics/LargeBitmap.java
@@ -37,7 +37,7 @@ import java.nio.ShortBuffer;
* @hide
*/
public final class LargeBitmap {
- private int mNativeLargeBitmap;
+ private long mNativeLargeBitmap;
private boolean mRecycled;
/* Private constructor that must received an already allocated native
@@ -45,8 +45,8 @@ public final class LargeBitmap {
This can be called from JNI code.
*/
- private LargeBitmap(int lbm) {
- mNativeLargeBitmap = lbm;
+ private LargeBitmap(long nativeLbm) {
+ mNativeLargeBitmap = nativeLbm;
mRecycled = false;
}
@@ -119,10 +119,10 @@ public final class LargeBitmap {
recycle();
}
- private static native Bitmap nativeDecodeRegion(int lbm,
+ private static native Bitmap nativeDecodeRegion(long nativeLbm,
int start_x, int start_y, int width, int height,
BitmapFactory.Options options);
- private static native int nativeGetWidth(int lbm);
- private static native int nativeGetHeight(int lbm);
- private static native void nativeClean(int lbm);
+ private static native int nativeGetWidth(long nativeLbm);
+ private static native int nativeGetHeight(long nativeLbm);
+ private static native void nativeClean(long nativeLbm);
}
diff --git a/graphics/java/android/graphics/LayerRasterizer.java b/graphics/java/android/graphics/LayerRasterizer.java
index 9bd55a5d39a1..dc307c69ecc8 100644
--- a/graphics/java/android/graphics/LayerRasterizer.java
+++ b/graphics/java/android/graphics/LayerRasterizer.java
@@ -34,7 +34,7 @@ public class LayerRasterizer extends Rasterizer {
nativeAddLayer(native_instance, paint.mNativePaint, 0, 0);
}
- private static native int nativeConstructor();
- private static native void nativeAddLayer(int native_layer, int native_paint, float dx, float dy);
+ private static native long nativeConstructor();
+ private static native void nativeAddLayer(long native_layer, long native_paint, float dx, float dy);
}
diff --git a/graphics/java/android/graphics/LightingColorFilter.java b/graphics/java/android/graphics/LightingColorFilter.java
index c621de6055d0..fbd269493879 100644
--- a/graphics/java/android/graphics/LightingColorFilter.java
+++ b/graphics/java/android/graphics/LightingColorFilter.java
@@ -33,6 +33,6 @@ public class LightingColorFilter extends ColorFilter {
nativeColorFilter = nCreateLightingFilter(native_instance, mul, add);
}
- private static native int native_CreateLightingFilter(int mul, int add);
- private static native int nCreateLightingFilter(int nativeFilter, int mul, int add);
+ private static native long native_CreateLightingFilter(int mul, int add);
+ private static native long nCreateLightingFilter(long nativeFilter, int mul, int add);
}
diff --git a/graphics/java/android/graphics/LinearGradient.java b/graphics/java/android/graphics/LinearGradient.java
index 4c88de35b0e9..9ad3e4936edf 100644
--- a/graphics/java/android/graphics/LinearGradient.java
+++ b/graphics/java/android/graphics/LinearGradient.java
@@ -116,12 +116,12 @@ public class LinearGradient extends Shader {
return copy;
}
- private native int nativeCreate1(float x0, float y0, float x1, float y1,
+ private native long nativeCreate1(float x0, float y0, float x1, float y1,
int colors[], float positions[], int tileMode);
- private native int nativeCreate2(float x0, float y0, float x1, float y1,
+ private native long nativeCreate2(float x0, float y0, float x1, float y1,
int color0, int color1, int tileMode);
- private native int nativePostCreate1(int native_shader, float x0, float y0, float x1, float y1,
+ private native long nativePostCreate1(long native_shader, float x0, float y0, float x1, float y1,
int colors[], float positions[], int tileMode);
- private native int nativePostCreate2(int native_shader, float x0, float y0, float x1, float y1,
+ private native long nativePostCreate2(long native_shader, float x0, float y0, float x1, float y1,
int color0, int color1, int tileMode);
}
diff --git a/graphics/java/android/graphics/MaskFilter.java b/graphics/java/android/graphics/MaskFilter.java
index 4ebb61929391..27a7dda493da 100644
--- a/graphics/java/android/graphics/MaskFilter.java
+++ b/graphics/java/android/graphics/MaskFilter.java
@@ -27,6 +27,6 @@ public class MaskFilter {
nativeDestructor(native_instance);
}
- private static native void nativeDestructor(int native_filter);
- int native_instance;
+ private static native void nativeDestructor(long native_filter);
+ long native_instance;
}
diff --git a/graphics/java/android/graphics/Matrix.java b/graphics/java/android/graphics/Matrix.java
index 32e0c013103d..c8bcf2680d9a 100644
--- a/graphics/java/android/graphics/Matrix.java
+++ b/graphics/java/android/graphics/Matrix.java
@@ -219,7 +219,7 @@ public class Matrix {
/**
* @hide
*/
- public int native_instance;
+ public long native_instance;
/**
* Create an identity matrix
@@ -800,83 +800,86 @@ public class Matrix {
}
}
- /*package*/ final int ni() {
+ /*package*/ final long ni() {
return native_instance;
}
- private static native int native_create(int native_src_or_zero);
- private static native boolean native_isIdentity(int native_object);
- private static native boolean native_rectStaysRect(int native_object);
- private static native void native_reset(int native_object);
- private static native void native_set(int native_object, int other);
- private static native void native_setTranslate(int native_object,
+ private static native long native_create(long native_src_or_zero);
+ private static native boolean native_isIdentity(long native_object);
+ private static native boolean native_rectStaysRect(long native_object);
+ private static native void native_reset(long native_object);
+ private static native void native_set(long native_object,
+ long native_other);
+ private static native void native_setTranslate(long native_object,
float dx, float dy);
- private static native void native_setScale(int native_object,
+ private static native void native_setScale(long native_object,
float sx, float sy, float px, float py);
- private static native void native_setScale(int native_object,
+ private static native void native_setScale(long native_object,
float sx, float sy);
- private static native void native_setRotate(int native_object,
+ private static native void native_setRotate(long native_object,
float degrees, float px, float py);
- private static native void native_setRotate(int native_object,
+ private static native void native_setRotate(long native_object,
float degrees);
- private static native void native_setSinCos(int native_object,
+ private static native void native_setSinCos(long native_object,
float sinValue, float cosValue, float px, float py);
- private static native void native_setSinCos(int native_object,
+ private static native void native_setSinCos(long native_object,
float sinValue, float cosValue);
- private static native void native_setSkew(int native_object,
+ private static native void native_setSkew(long native_object,
float kx, float ky, float px, float py);
- private static native void native_setSkew(int native_object,
+ private static native void native_setSkew(long native_object,
float kx, float ky);
- private static native boolean native_setConcat(int native_object,
- int a, int b);
- private static native boolean native_preTranslate(int native_object,
+ private static native boolean native_setConcat(long native_object,
+ long native_a,
+ long native_b);
+ private static native boolean native_preTranslate(long native_object,
float dx, float dy);
- private static native boolean native_preScale(int native_object,
+ private static native boolean native_preScale(long native_object,
float sx, float sy, float px, float py);
- private static native boolean native_preScale(int native_object,
+ private static native boolean native_preScale(long native_object,
float sx, float sy);
- private static native boolean native_preRotate(int native_object,
+ private static native boolean native_preRotate(long native_object,
float degrees, float px, float py);
- private static native boolean native_preRotate(int native_object,
+ private static native boolean native_preRotate(long native_object,
float degrees);
- private static native boolean native_preSkew(int native_object,
+ private static native boolean native_preSkew(long native_object,
float kx, float ky, float px, float py);
- private static native boolean native_preSkew(int native_object,
+ private static native boolean native_preSkew(long native_object,
float kx, float ky);
- private static native boolean native_preConcat(int native_object,
- int other_matrix);
- private static native boolean native_postTranslate(int native_object,
+ private static native boolean native_preConcat(long native_object,
+ long native_other_matrix);
+ private static native boolean native_postTranslate(long native_object,
float dx, float dy);
- private static native boolean native_postScale(int native_object,
+ private static native boolean native_postScale(long native_object,
float sx, float sy, float px, float py);
- private static native boolean native_postScale(int native_object,
+ private static native boolean native_postScale(long native_object,
float sx, float sy);
- private static native boolean native_postRotate(int native_object,
+ private static native boolean native_postRotate(long native_object,
float degrees, float px, float py);
- private static native boolean native_postRotate(int native_object,
+ private static native boolean native_postRotate(long native_object,
float degrees);
- private static native boolean native_postSkew(int native_object,
+ private static native boolean native_postSkew(long native_object,
float kx, float ky, float px, float py);
- private static native boolean native_postSkew(int native_object,
+ private static native boolean native_postSkew(long native_object,
float kx, float ky);
- private static native boolean native_postConcat(int native_object,
- int other_matrix);
- private static native boolean native_setRectToRect(int native_object,
+ private static native boolean native_postConcat(long native_object,
+ long native_other_matrix);
+ private static native boolean native_setRectToRect(long native_object,
RectF src, RectF dst, int stf);
- private static native boolean native_setPolyToPoly(int native_object,
+ private static native boolean native_setPolyToPoly(long native_object,
float[] src, int srcIndex, float[] dst, int dstIndex, int pointCount);
- private static native boolean native_invert(int native_object, int inverse);
- private static native void native_mapPoints(int native_object,
+ private static native boolean native_invert(long native_object,
+ long native_inverse);
+ private static native void native_mapPoints(long native_object,
float[] dst, int dstIndex, float[] src, int srcIndex,
int ptCount, boolean isPts);
- private static native boolean native_mapRect(int native_object,
+ private static native boolean native_mapRect(long native_object,
RectF dst, RectF src);
- private static native float native_mapRadius(int native_object,
+ private static native float native_mapRadius(long native_object,
float radius);
- private static native void native_getValues(int native_object,
+ private static native void native_getValues(long native_object,
float[] values);
- private static native void native_setValues(int native_object,
+ private static native void native_setValues(long native_object,
float[] values);
- private static native boolean native_equals(int native_a, int native_b);
- private static native void finalizer(int native_instance);
+ private static native boolean native_equals(long native_a, long native_b);
+ private static native void finalizer(long native_instance);
}
diff --git a/graphics/java/android/graphics/Movie.java b/graphics/java/android/graphics/Movie.java
index 9419faf15ff8..b0a4553cf759 100644
--- a/graphics/java/android/graphics/Movie.java
+++ b/graphics/java/android/graphics/Movie.java
@@ -21,9 +21,9 @@ import java.io.InputStream;
import java.io.FileInputStream;
public class Movie {
- private final int mNativeMovie;
+ private final long mNativeMovie;
- private Movie(int nativeMovie) {
+ private Movie(long nativeMovie) {
if (nativeMovie == 0) {
throw new RuntimeException("native movie creation failed");
}
@@ -48,19 +48,19 @@ public class Movie {
return null;
}
if (is instanceof AssetManager.AssetInputStream) {
- final int asset = ((AssetManager.AssetInputStream) is).getAssetInt();
+ final long asset = ((AssetManager.AssetInputStream) is).getNativeAsset();
return nativeDecodeAsset(asset);
}
return nativeDecodeStream(is);
}
- private static native Movie nativeDecodeAsset(int asset);
+ private static native Movie nativeDecodeAsset(long asset);
private static native Movie nativeDecodeStream(InputStream is);
public static native Movie decodeByteArray(byte[] data, int offset,
int length);
- private static native void nativeDestructor(int nativeMovie);
+ private static native void nativeDestructor(long nativeMovie);
public static Movie decodeFile(String pathName) {
InputStream is;
diff --git a/graphics/java/android/graphics/NinePatch.java b/graphics/java/android/graphics/NinePatch.java
index 528d9def0dcc..69089b121489 100644
--- a/graphics/java/android/graphics/NinePatch.java
+++ b/graphics/java/android/graphics/NinePatch.java
@@ -39,7 +39,7 @@ public class NinePatch {
*
* @hide
*/
- public final int mNativeChunk;
+ public final long mNativeChunk;
private Paint mPaint;
private String mSrcName;
@@ -217,7 +217,7 @@ public class NinePatch {
* that are transparent.
*/
public final Region getTransparentRegion(Rect bounds) {
- int r = nativeGetTransparentRegion(mBitmap.ni(), mNativeChunk, bounds);
+ long r = nativeGetTransparentRegion(mBitmap.ni(), mNativeChunk, bounds);
return r != 0 ? new Region(r) : null;
}
@@ -236,11 +236,11 @@ public class NinePatch {
* If validation is successful, this method returns a native Res_png_9patch*
* object used by the renderers.
*/
- private static native int validateNinePatchChunk(int bitmap, byte[] chunk);
- private static native void nativeFinalize(int chunk);
- private static native void nativeDraw(int canvas_instance, RectF loc, int bitmap_instance,
- int c, int paint_instance_or_null, int destDensity, int srcDensity);
- private static native void nativeDraw(int canvas_instance, Rect loc, int bitmap_instance,
- int c, int paint_instance_or_null, int destDensity, int srcDensity);
- private static native int nativeGetTransparentRegion(int bitmap, int chunk, Rect location);
+ private static native long validateNinePatchChunk(long bitmap, byte[] chunk);
+ private static native void nativeFinalize(long chunk);
+ private static native void nativeDraw(long canvas_instance, RectF loc, long bitmap_instance,
+ long c, long paint_instance_or_null, int destDensity, int srcDensity);
+ private static native void nativeDraw(long canvas_instance, Rect loc, long bitmap_instance,
+ long c, long paint_instance_or_null, int destDensity, int srcDensity);
+ private static native long nativeGetTransparentRegion(long bitmap, long chunk, Rect location);
}
diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java
index 5fc2588e4411..33832a71d38f 100644
--- a/graphics/java/android/graphics/Paint.java
+++ b/graphics/java/android/graphics/Paint.java
@@ -32,7 +32,7 @@ public class Paint {
/**
* @hide
*/
- public int mNativePaint;
+ public long mNativePaint;
private ColorFilter mColorFilter;
private MaskFilter mMaskFilter;
@@ -943,7 +943,7 @@ public class Paint {
* @return shader
*/
public Shader setShader(Shader shader) {
- int shaderNative = 0;
+ long shaderNative = 0;
if (shader != null)
shaderNative = shader.native_instance;
native_setShader(mNativePaint, shaderNative);
@@ -967,7 +967,7 @@ public class Paint {
* @return filter
*/
public ColorFilter setColorFilter(ColorFilter filter) {
- int filterNative = 0;
+ long filterNative = 0;
if (filter != null)
filterNative = filter.native_instance;
native_setColorFilter(mNativePaint, filterNative);
@@ -994,7 +994,7 @@ public class Paint {
* @return xfermode
*/
public Xfermode setXfermode(Xfermode xfermode) {
- int xfermodeNative = 0;
+ long xfermodeNative = 0;
if (xfermode != null)
xfermodeNative = xfermode.native_instance;
native_setXfermode(mNativePaint, xfermodeNative);
@@ -1021,7 +1021,7 @@ public class Paint {
* @return effect
*/
public PathEffect setPathEffect(PathEffect effect) {
- int effectNative = 0;
+ long effectNative = 0;
if (effect != null) {
effectNative = effect.native_instance;
}
@@ -1050,7 +1050,7 @@ public class Paint {
* @return maskfilter
*/
public MaskFilter setMaskFilter(MaskFilter maskfilter) {
- int maskfilterNative = 0;
+ long maskfilterNative = 0;
if (maskfilter != null) {
maskfilterNative = maskfilter.native_instance;
}
@@ -1081,7 +1081,7 @@ public class Paint {
* @return typeface
*/
public Typeface setTypeface(Typeface typeface) {
- int typefaceNative = 0;
+ long typefaceNative = 0;
if (typeface != null) {
typefaceNative = typeface.native_instance;
}
@@ -1112,7 +1112,7 @@ public class Paint {
* @return rasterizer
*/
public Rasterizer setRasterizer(Rasterizer rasterizer) {
- int rasterizerNative = 0;
+ long rasterizerNative = 0;
if (rasterizer != null) {
rasterizerNative = rasterizer.native_instance;
}
@@ -2207,68 +2207,68 @@ public class Paint {
}
}
- private static native int native_init();
- private static native int native_initWithPaint(int paint);
- private static native void native_reset(int native_object);
- private static native void native_set(int native_dst, int native_src);
- private static native int native_getStyle(int native_object);
- private static native void native_setStyle(int native_object, int style);
- private static native int native_getStrokeCap(int native_object);
- private static native void native_setStrokeCap(int native_object, int cap);
- private static native int native_getStrokeJoin(int native_object);
- private static native void native_setStrokeJoin(int native_object,
+ private static native long native_init();
+ private static native long native_initWithPaint(long paint);
+ private static native void native_reset(long native_object);
+ private static native void native_set(long native_dst, long native_src);
+ private static native int native_getStyle(long native_object);
+ private static native void native_setStyle(long native_object, int style);
+ private static native int native_getStrokeCap(long native_object);
+ private static native void native_setStrokeCap(long native_object, int cap);
+ private static native int native_getStrokeJoin(long native_object);
+ private static native void native_setStrokeJoin(long native_object,
int join);
- private static native boolean native_getFillPath(int native_object,
- int src, int dst);
- private static native int native_setShader(int native_object, int shader);
- private static native int native_setColorFilter(int native_object,
- int filter);
- private static native int native_setXfermode(int native_object,
- int xfermode);
- private static native int native_setPathEffect(int native_object,
- int effect);
- private static native int native_setMaskFilter(int native_object,
- int maskfilter);
- private static native int native_setTypeface(int native_object,
- int typeface);
- private static native int native_setRasterizer(int native_object,
- int rasterizer);
-
- private static native int native_getTextAlign(int native_object);
- private static native void native_setTextAlign(int native_object,
+ private static native boolean native_getFillPath(long native_object,
+ long src, long dst);
+ private static native long native_setShader(long native_object, long shader);
+ private static native long native_setColorFilter(long native_object,
+ long filter);
+ private static native long native_setXfermode(long native_object,
+ long xfermode);
+ private static native long native_setPathEffect(long native_object,
+ long effect);
+ private static native long native_setMaskFilter(long native_object,
+ long maskfilter);
+ private static native long native_setTypeface(long native_object,
+ long typeface);
+ private static native long native_setRasterizer(long native_object,
+ long rasterizer);
+
+ private static native int native_getTextAlign(long native_object);
+ private static native void native_setTextAlign(long native_object,
int align);
- private static native void native_setTextLocale(int native_object,
+ private static native void native_setTextLocale(long native_object,
String locale);
- private static native int native_getTextWidths(int native_object,
+ private static native int native_getTextWidths(long native_object,
char[] text, int index, int count, int bidiFlags, float[] widths);
- private static native int native_getTextWidths(int native_object,
+ private static native int native_getTextWidths(long native_object,
String text, int start, int end, int bidiFlags, float[] widths);
- private static native int native_getTextGlyphs(int native_object,
+ private static native int native_getTextGlyphs(long native_object,
String text, int start, int end, int contextStart, int contextEnd,
int flags, char[] glyphs);
- private static native float native_getTextRunAdvances(int native_object,
+ private static native float native_getTextRunAdvances(long native_object,
char[] text, int index, int count, int contextIndex, int contextCount,
int flags, float[] advances, int advancesIndex);
- private static native float native_getTextRunAdvances(int native_object,
+ private static native float native_getTextRunAdvances(long native_object,
String text, int start, int end, int contextStart, int contextEnd,
int flags, float[] advances, int advancesIndex);
- private native int native_getTextRunCursor(int native_object, char[] text,
+ private native int native_getTextRunCursor(long native_object, char[] text,
int contextStart, int contextLength, int flags, int offset, int cursorOpt);
- private native int native_getTextRunCursor(int native_object, String text,
+ private native int native_getTextRunCursor(long native_object, String text,
int contextStart, int contextEnd, int flags, int offset, int cursorOpt);
- private static native void native_getTextPath(int native_object, int bidiFlags,
- char[] text, int index, int count, float x, float y, int path);
- private static native void native_getTextPath(int native_object, int bidiFlags,
- String text, int start, int end, float x, float y, int path);
- private static native void nativeGetStringBounds(int nativePaint,
+ private static native void native_getTextPath(long native_object, int bidiFlags,
+ char[] text, int index, int count, float x, float y, long path);
+ private static native void native_getTextPath(long native_object, int bidiFlags,
+ String text, int start, int end, float x, float y, long path);
+ private static native void nativeGetStringBounds(long nativePaint,
String text, int start, int end, int bidiFlags, Rect bounds);
- private static native void nativeGetCharArrayBounds(int nativePaint,
+ private static native void nativeGetCharArrayBounds(long nativePaint,
char[] text, int index, int count, int bidiFlags, Rect bounds);
- private static native void finalizer(int nativePaint);
+ private static native void finalizer(long nativePaint);
}
diff --git a/graphics/java/android/graphics/PaintFlagsDrawFilter.java b/graphics/java/android/graphics/PaintFlagsDrawFilter.java
index c833a12f078b..65a6218f83ec 100644
--- a/graphics/java/android/graphics/PaintFlagsDrawFilter.java
+++ b/graphics/java/android/graphics/PaintFlagsDrawFilter.java
@@ -38,6 +38,6 @@ public class PaintFlagsDrawFilter extends DrawFilter {
mNativeInt = nativeConstructor(clearBits, setBits);
}
- private static native int nativeConstructor(int clearBits, int setBits);
+ private static native long nativeConstructor(int clearBits, int setBits);
}
diff --git a/graphics/java/android/graphics/Path.java b/graphics/java/android/graphics/Path.java
index 5b04a9132612..b5a1f6407dc7 100644
--- a/graphics/java/android/graphics/Path.java
+++ b/graphics/java/android/graphics/Path.java
@@ -29,7 +29,7 @@ public class Path {
/**
* @hide
*/
- public final int mNativePath;
+ public final long mNativePath;
/**
* @hide
@@ -56,7 +56,7 @@ public class Path {
* @param src The path to copy from when initializing the new path
*/
public Path(Path src) {
- int valNative = 0;
+ long valNative = 0;
if (src != null) {
valNative = src.mNativePath;
isSimplePath = src.isSimplePath;
@@ -634,7 +634,7 @@ public class Path {
* the original path is modified.
*/
public void offset(float dx, float dy, Path dst) {
- int dstNative = 0;
+ long dstNative = 0;
if (dst != null) {
dstNative = dst.mNativePath;
dst.isSimplePath = false;
@@ -673,7 +673,7 @@ public class Path {
* then the the original path is modified
*/
public void transform(Matrix matrix, Path dst) {
- int dstNative = 0;
+ long dstNative = 0;
if (dst != null) {
dst.isSimplePath = false;
dstNative = dst.mNativePath;
@@ -699,54 +699,54 @@ public class Path {
}
}
- final int ni() {
+ final long ni() {
return mNativePath;
}
- private static native int init1();
- private static native int init2(int nPath);
- private static native void native_reset(int nPath);
- private static native void native_rewind(int nPath);
- private static native void native_set(int native_dst, int native_src);
- private static native int native_getFillType(int nPath);
- private static native void native_setFillType(int nPath, int ft);
- private static native boolean native_isEmpty(int nPath);
- private static native boolean native_isRect(int nPath, RectF rect);
- private static native void native_computeBounds(int nPath, RectF bounds);
- private static native void native_incReserve(int nPath, int extraPtCount);
- private static native void native_moveTo(int nPath, float x, float y);
- private static native void native_rMoveTo(int nPath, float dx, float dy);
- private static native void native_lineTo(int nPath, float x, float y);
- private static native void native_rLineTo(int nPath, float dx, float dy);
- private static native void native_quadTo(int nPath, float x1, float y1,
+ private static native long init1();
+ private static native long init2(long nPath);
+ private static native void native_reset(long nPath);
+ private static native void native_rewind(long nPath);
+ private static native void native_set(long native_dst, long native_src);
+ private static native int native_getFillType(long nPath);
+ private static native void native_setFillType(long nPath, int ft);
+ private static native boolean native_isEmpty(long nPath);
+ private static native boolean native_isRect(long nPath, RectF rect);
+ private static native void native_computeBounds(long nPath, RectF bounds);
+ private static native void native_incReserve(long nPath, int extraPtCount);
+ private static native void native_moveTo(long nPath, float x, float y);
+ private static native void native_rMoveTo(long nPath, float dx, float dy);
+ private static native void native_lineTo(long nPath, float x, float y);
+ private static native void native_rLineTo(long nPath, float dx, float dy);
+ private static native void native_quadTo(long nPath, float x1, float y1,
float x2, float y2);
- private static native void native_rQuadTo(int nPath, float dx1, float dy1,
+ private static native void native_rQuadTo(long nPath, float dx1, float dy1,
float dx2, float dy2);
- private static native void native_cubicTo(int nPath, float x1, float y1,
+ private static native void native_cubicTo(long nPath, float x1, float y1,
float x2, float y2, float x3, float y3);
- private static native void native_rCubicTo(int nPath, float x1, float y1,
+ private static native void native_rCubicTo(long nPath, float x1, float y1,
float x2, float y2, float x3, float y3);
- private static native void native_arcTo(int nPath, RectF oval,
+ private static native void native_arcTo(long nPath, RectF oval,
float startAngle, float sweepAngle, boolean forceMoveTo);
- private static native void native_close(int nPath);
- private static native void native_addRect(int nPath, RectF rect, int dir);
- private static native void native_addRect(int nPath, float left, float top,
+ private static native void native_close(long nPath);
+ private static native void native_addRect(long nPath, RectF rect, int dir);
+ private static native void native_addRect(long nPath, float left, float top,
float right, float bottom, int dir);
- private static native void native_addOval(int nPath, RectF oval, int dir);
- private static native void native_addCircle(int nPath, float x, float y, float radius, int dir);
- private static native void native_addArc(int nPath, RectF oval,
+ private static native void native_addOval(long nPath, RectF oval, int dir);
+ private static native void native_addCircle(long nPath, float x, float y, float radius, int dir);
+ private static native void native_addArc(long nPath, RectF oval,
float startAngle, float sweepAngle);
- private static native void native_addRoundRect(int nPath, RectF rect,
+ private static native void native_addRoundRect(long nPath, RectF rect,
float rx, float ry, int dir);
- private static native void native_addRoundRect(int nPath, RectF r, float[] radii, int dir);
- private static native void native_addPath(int nPath, int src, float dx, float dy);
- private static native void native_addPath(int nPath, int src);
- private static native void native_addPath(int nPath, int src, int matrix);
- private static native void native_offset(int nPath, float dx, float dy, int dst_path);
- private static native void native_offset(int nPath, float dx, float dy);
- private static native void native_setLastPoint(int nPath, float dx, float dy);
- private static native void native_transform(int nPath, int matrix, int dst_path);
- private static native void native_transform(int nPath, int matrix);
- private static native boolean native_op(int path1, int path2, int op, int result);
- private static native void finalizer(int nPath);
+ private static native void native_addRoundRect(long nPath, RectF r, float[] radii, int dir);
+ private static native void native_addPath(long nPath, long src, float dx, float dy);
+ private static native void native_addPath(long nPath, long src);
+ private static native void native_addPath(long nPath, long src, long matrix);
+ private static native void native_offset(long nPath, float dx, float dy, long dst_path);
+ private static native void native_offset(long nPath, float dx, float dy);
+ private static native void native_setLastPoint(long nPath, float dx, float dy);
+ private static native void native_transform(long nPath, long matrix, long dst_path);
+ private static native void native_transform(long nPath, long matrix);
+ private static native boolean native_op(long path1, long path2, int op, long result);
+ private static native void finalizer(long nPath);
}
diff --git a/graphics/java/android/graphics/PathDashPathEffect.java b/graphics/java/android/graphics/PathDashPathEffect.java
index e8ad5fd8c8bf..4f43f680ff3e 100644
--- a/graphics/java/android/graphics/PathDashPathEffect.java
+++ b/graphics/java/android/graphics/PathDashPathEffect.java
@@ -45,7 +45,7 @@ public class PathDashPathEffect extends PathEffect {
style.native_style);
}
- private static native int nativeCreate(int native_path, float advance,
+ private static native long nativeCreate(long native_path, float advance,
float phase, int native_style);
}
diff --git a/graphics/java/android/graphics/PathEffect.java b/graphics/java/android/graphics/PathEffect.java
index 9b2cd66b71e8..617dfca6a966 100644
--- a/graphics/java/android/graphics/PathEffect.java
+++ b/graphics/java/android/graphics/PathEffect.java
@@ -27,6 +27,6 @@ public class PathEffect {
nativeDestructor(native_instance);
}
- private static native void nativeDestructor(int native_patheffect);
- int native_instance;
+ private static native void nativeDestructor(long native_patheffect);
+ long native_instance;
}
diff --git a/graphics/java/android/graphics/PathMeasure.java b/graphics/java/android/graphics/PathMeasure.java
index 70628248aeb6..e56716f543e6 100644
--- a/graphics/java/android/graphics/PathMeasure.java
+++ b/graphics/java/android/graphics/PathMeasure.java
@@ -138,16 +138,16 @@ public class PathMeasure {
native_destroy(native_instance);
}
- private static native int native_create(int native_path, boolean forceClosed);
- private static native void native_setPath(int native_instance, int native_path, boolean forceClosed);
- private static native float native_getLength(int native_instance);
- private static native boolean native_getPosTan(int native_instance, float distance, float pos[], float tan[]);
- private static native boolean native_getMatrix(int native_instance, float distance, int native_matrix, int flags);
- private static native boolean native_getSegment(int native_instance, float startD, float stopD, int native_path, boolean startWithMoveTo);
- private static native boolean native_isClosed(int native_instance);
- private static native boolean native_nextContour(int native_instance);
- private static native void native_destroy(int native_instance);
+ private static native long native_create(long native_path, boolean forceClosed);
+ private static native void native_setPath(long native_instance, long native_path, boolean forceClosed);
+ private static native float native_getLength(long native_instance);
+ private static native boolean native_getPosTan(long native_instance, float distance, float pos[], float tan[]);
+ private static native boolean native_getMatrix(long native_instance, float distance, long native_matrix, int flags);
+ private static native boolean native_getSegment(long native_instance, float startD, float stopD, long native_path, boolean startWithMoveTo);
+ private static native boolean native_isClosed(long native_instance);
+ private static native boolean native_nextContour(long native_instance);
+ private static native void native_destroy(long native_instance);
- /* package */private final int native_instance;
+ /* package */private final long native_instance;
}
diff --git a/graphics/java/android/graphics/Picture.java b/graphics/java/android/graphics/Picture.java
index 71e02f63b309..25188e075cde 100644
--- a/graphics/java/android/graphics/Picture.java
+++ b/graphics/java/android/graphics/Picture.java
@@ -29,7 +29,7 @@ import java.io.OutputStream;
*/
public class Picture {
private Canvas mRecordingCanvas;
- private final int mNativePicture;
+ private final long mNativePicture;
/**
* @hide
@@ -63,7 +63,7 @@ public class Picture {
* into it.
*/
public Canvas beginRecording(int width, int height) {
- int ni = nativeBeginRecording(mNativePicture, width, height);
+ long ni = nativeBeginRecording(mNativePicture, width, height);
mRecordingCanvas = new RecordingCanvas(this, ni);
return mRecordingCanvas;
}
@@ -164,11 +164,11 @@ public class Picture {
}
}
- final int ni() {
+ final long ni() {
return mNativePicture;
}
- private Picture(int nativePicture, boolean fromStream) {
+ private Picture(long nativePicture, boolean fromStream) {
if (nativePicture == 0) {
throw new RuntimeException();
}
@@ -177,21 +177,21 @@ public class Picture {
}
// return empty picture if src is 0, or a copy of the native src
- private static native int nativeConstructor(int nativeSrcOr0);
- private static native int nativeCreateFromStream(InputStream stream,
+ private static native long nativeConstructor(long nativeSrcOr0);
+ private static native long nativeCreateFromStream(InputStream stream,
byte[] storage);
- private static native int nativeBeginRecording(int nativeCanvas,
+ private static native long nativeBeginRecording(long nativeCanvas,
int w, int h);
- private static native void nativeEndRecording(int nativeCanvas);
- private static native void nativeDraw(int nativeCanvas, int nativePicture);
- private static native boolean nativeWriteToStream(int nativePicture,
+ private static native void nativeEndRecording(long nativeCanvas);
+ private static native void nativeDraw(long nativeCanvas, long nativePicture);
+ private static native boolean nativeWriteToStream(long nativePicture,
OutputStream stream, byte[] storage);
- private static native void nativeDestructor(int nativePicture);
+ private static native void nativeDestructor(long nativePicture);
private static class RecordingCanvas extends Canvas {
private final Picture mPicture;
- public RecordingCanvas(Picture pict, int nativeCanvas) {
+ public RecordingCanvas(Picture pict, long nativeCanvas) {
super(nativeCanvas);
mPicture = pict;
}
diff --git a/graphics/java/android/graphics/PixelXorXfermode.java b/graphics/java/android/graphics/PixelXorXfermode.java
index 6075ec3927b7..0080e6536d77 100644
--- a/graphics/java/android/graphics/PixelXorXfermode.java
+++ b/graphics/java/android/graphics/PixelXorXfermode.java
@@ -29,5 +29,5 @@ public class PixelXorXfermode extends Xfermode {
native_instance = nativeCreate(opColor);
}
- private static native int nativeCreate(int opColor);
+ private static native long nativeCreate(int opColor);
}
diff --git a/graphics/java/android/graphics/PorterDuffColorFilter.java b/graphics/java/android/graphics/PorterDuffColorFilter.java
index ecc7c24eaf34..894284f56489 100644
--- a/graphics/java/android/graphics/PorterDuffColorFilter.java
+++ b/graphics/java/android/graphics/PorterDuffColorFilter.java
@@ -29,7 +29,7 @@ public class PorterDuffColorFilter extends ColorFilter {
nativeColorFilter = nCreatePorterDuffFilter(native_instance, srcColor, mode.nativeInt);
}
- private static native int native_CreatePorterDuffFilter(int srcColor, int porterDuffMode);
- private static native int nCreatePorterDuffFilter(int nativeFilter, int srcColor,
+ private static native long native_CreatePorterDuffFilter(int srcColor, int porterDuffMode);
+ private static native long nCreatePorterDuffFilter(long nativeFilter, int srcColor,
int porterDuffMode);
}
diff --git a/graphics/java/android/graphics/PorterDuffXfermode.java b/graphics/java/android/graphics/PorterDuffXfermode.java
index 6ba064cc05ef..d9d768907c61 100644
--- a/graphics/java/android/graphics/PorterDuffXfermode.java
+++ b/graphics/java/android/graphics/PorterDuffXfermode.java
@@ -32,5 +32,5 @@ public class PorterDuffXfermode extends Xfermode {
native_instance = nativeCreateXfermode(mode.nativeInt);
}
- private static native int nativeCreateXfermode(int mode);
+ private static native long nativeCreateXfermode(int mode);
}
diff --git a/graphics/java/android/graphics/RadialGradient.java b/graphics/java/android/graphics/RadialGradient.java
index f011e5c9c85e..f10e5d63819a 100644
--- a/graphics/java/android/graphics/RadialGradient.java
+++ b/graphics/java/android/graphics/RadialGradient.java
@@ -117,14 +117,14 @@ public class RadialGradient extends Shader {
return copy;
}
- private static native int nativeCreate1(float x, float y, float radius,
+ private static native long nativeCreate1(float x, float y, float radius,
int colors[], float positions[], int tileMode);
- private static native int nativeCreate2(float x, float y, float radius,
+ private static native long nativeCreate2(float x, float y, float radius,
int color0, int color1, int tileMode);
- private static native int nativePostCreate1(int native_shader, float x, float y, float radius,
+ private static native long nativePostCreate1(long native_shader, float x, float y, float radius,
int colors[], float positions[], int tileMode);
- private static native int nativePostCreate2(int native_shader, float x, float y, float radius,
+ private static native long nativePostCreate2(long native_shader, float x, float y, float radius,
int color0, int color1, int tileMode);
}
diff --git a/graphics/java/android/graphics/Rasterizer.java b/graphics/java/android/graphics/Rasterizer.java
index feb5f0c2f3af..817814c68633 100644
--- a/graphics/java/android/graphics/Rasterizer.java
+++ b/graphics/java/android/graphics/Rasterizer.java
@@ -27,7 +27,7 @@ public class Rasterizer {
finalizer(native_instance);
}
- private static native void finalizer(int native_instance);
+ private static native void finalizer(long native_instance);
- int native_instance;
+ long native_instance;
}
diff --git a/graphics/java/android/graphics/Region.java b/graphics/java/android/graphics/Region.java
index 72d0c435c3f3..727723d7f675 100644
--- a/graphics/java/android/graphics/Region.java
+++ b/graphics/java/android/graphics/Region.java
@@ -30,7 +30,7 @@ public class Region implements Parcelable {
/**
* @hide
*/
- public final int mNativeRegion;
+ public final long mNativeRegion;
// the native values for these must match up with the enum in SkRegion.h
public enum Op {
@@ -342,7 +342,7 @@ public class Region implements Parcelable {
* @return a new region created from the data in the parcel
*/
public Region createFromParcel(Parcel p) {
- int ni = nativeCreateFromParcel(p);
+ long ni = nativeCreateFromParcel(p);
if (ni == 0) {
throw new RuntimeException();
}
@@ -385,7 +385,7 @@ public class Region implements Parcelable {
}
}
- Region(int ni) {
+ Region(long ni) {
if (ni == 0) {
throw new RuntimeException();
}
@@ -394,38 +394,38 @@ public class Region implements Parcelable {
/* add dummy parameter so constructor can be called from jni without
triggering 'not cloneable' exception */
- private Region(int ni, int dummy) {
+ private Region(long ni, int dummy) {
this(ni);
}
- final int ni() {
+ final long ni() {
return mNativeRegion;
}
- private static native boolean nativeEquals(int native_r1, int native_r2);
+ private static native boolean nativeEquals(long native_r1, long native_r2);
- private static native int nativeConstructor();
- private static native void nativeDestructor(int native_region);
+ private static native long nativeConstructor();
+ private static native void nativeDestructor(long native_region);
- private static native void nativeSetRegion(int native_dst, int native_src);
- private static native boolean nativeSetRect(int native_dst, int left,
+ private static native void nativeSetRegion(long native_dst, long native_src);
+ private static native boolean nativeSetRect(long native_dst, int left,
int top, int right, int bottom);
- private static native boolean nativeSetPath(int native_dst, int native_path,
- int native_clip);
- private static native boolean nativeGetBounds(int native_region, Rect rect);
- private static native boolean nativeGetBoundaryPath(int native_region,
- int native_path);
+ private static native boolean nativeSetPath(long native_dst, long native_path,
+ long native_clip);
+ private static native boolean nativeGetBounds(long native_region, Rect rect);
+ private static native boolean nativeGetBoundaryPath(long native_region,
+ long native_path);
- private static native boolean nativeOp(int native_dst, int left, int top,
+ private static native boolean nativeOp(long native_dst, int left, int top,
int right, int bottom, int op);
- private static native boolean nativeOp(int native_dst, Rect rect,
- int native_region, int op);
- private static native boolean nativeOp(int native_dst, int native_region1,
- int native_region2, int op);
+ private static native boolean nativeOp(long native_dst, Rect rect,
+ long native_region, int op);
+ private static native boolean nativeOp(long native_dst, long native_region1,
+ long native_region2, int op);
- private static native int nativeCreateFromParcel(Parcel p);
- private static native boolean nativeWriteToParcel(int native_region,
+ private static native long nativeCreateFromParcel(Parcel p);
+ private static native boolean nativeWriteToParcel(long native_region,
Parcel p);
- private static native String nativeToString(int native_region);
+ private static native String nativeToString(long native_region);
}
diff --git a/graphics/java/android/graphics/RegionIterator.java b/graphics/java/android/graphics/RegionIterator.java
index 817f853c998f..8401adba09c4 100644
--- a/graphics/java/android/graphics/RegionIterator.java
+++ b/graphics/java/android/graphics/RegionIterator.java
@@ -45,10 +45,10 @@ public class RegionIterator {
nativeDestructor(mNativeIter);
}
- private static native int nativeConstructor(int native_region);
- private static native void nativeDestructor(int native_iter);
- private static native boolean nativeNext(int native_iter, Rect r);
-
- private final int mNativeIter;
+ private static native long nativeConstructor(long native_region);
+ private static native void nativeDestructor(long native_iter);
+ private static native boolean nativeNext(long native_iter, Rect r);
+
+ private final long mNativeIter;
}
diff --git a/graphics/java/android/graphics/Shader.java b/graphics/java/android/graphics/Shader.java
index afc68d869ada..94b4c4a56a5f 100644
--- a/graphics/java/android/graphics/Shader.java
+++ b/graphics/java/android/graphics/Shader.java
@@ -28,11 +28,11 @@ public class Shader {
*
* @hide
*/
- public int native_instance;
+ public long native_instance;
/**
* @hide
*/
- public int native_shader;
+ public long native_shader;
private Matrix mLocalMatrix;
@@ -112,7 +112,7 @@ public class Shader {
}
}
- private static native void nativeDestructor(int native_shader, int native_skiaShader);
- private static native void nativeSetLocalMatrix(int native_shader,
- int native_skiaShader, int matrix_instance);
+ private static native void nativeDestructor(long native_shader, long native_skiaShader);
+ private static native void nativeSetLocalMatrix(long native_shader,
+ long native_skiaShader, long matrix_instance);
}
diff --git a/graphics/java/android/graphics/SumPathEffect.java b/graphics/java/android/graphics/SumPathEffect.java
index cc7c778eab0a..8fedc317c428 100644
--- a/graphics/java/android/graphics/SumPathEffect.java
+++ b/graphics/java/android/graphics/SumPathEffect.java
@@ -27,6 +27,6 @@ public class SumPathEffect extends PathEffect {
second.native_instance);
}
- private static native int nativeCreate(int first, int second);
+ private static native long nativeCreate(long first, long second);
}
diff --git a/graphics/java/android/graphics/SurfaceTexture.java b/graphics/java/android/graphics/SurfaceTexture.java
index b910a24d9292..1f8e2231a85c 100644
--- a/graphics/java/android/graphics/SurfaceTexture.java
+++ b/graphics/java/android/graphics/SurfaceTexture.java
@@ -69,9 +69,9 @@ public class SurfaceTexture {
/**
* These fields are used by native code, do not access or modify.
*/
- private int mSurfaceTexture;
- private int mBufferQueue;
- private int mFrameAvailableListener;
+ private long mSurfaceTexture;
+ private long mBufferQueue;
+ private long mFrameAvailableListener;
/**
* Callback interface for being notified that a new stream frame is available.
diff --git a/graphics/java/android/graphics/SweepGradient.java b/graphics/java/android/graphics/SweepGradient.java
index e9cda39652f7..21239f7b55d0 100644
--- a/graphics/java/android/graphics/SweepGradient.java
+++ b/graphics/java/android/graphics/SweepGradient.java
@@ -106,12 +106,12 @@ public class SweepGradient extends Shader {
return copy;
}
- private static native int nativeCreate1(float x, float y, int colors[], float positions[]);
- private static native int nativeCreate2(float x, float y, int color0, int color1);
+ private static native long nativeCreate1(float x, float y, int colors[], float positions[]);
+ private static native long nativeCreate2(float x, float y, int color0, int color1);
- private static native int nativePostCreate1(int native_shader, float cx, float cy,
+ private static native long nativePostCreate1(long native_shader, float cx, float cy,
int[] colors, float[] positions);
- private static native int nativePostCreate2(int native_shader, float cx, float cy,
+ private static native long nativePostCreate2(long native_shader, float cx, float cy,
int color0, int color1);
}
diff --git a/graphics/java/android/graphics/TableMaskFilter.java b/graphics/java/android/graphics/TableMaskFilter.java
index a8a7ff0528e1..d0c1438285a8 100644
--- a/graphics/java/android/graphics/TableMaskFilter.java
+++ b/graphics/java/android/graphics/TableMaskFilter.java
@@ -28,7 +28,7 @@ public class TableMaskFilter extends MaskFilter {
native_instance = nativeNewTable(table);
}
- private TableMaskFilter(int ni) {
+ private TableMaskFilter(long ni) {
native_instance = ni;
}
@@ -40,7 +40,7 @@ public class TableMaskFilter extends MaskFilter {
return new TableMaskFilter(nativeNewGamma(gamma));
}
- private static native int nativeNewTable(byte[] table);
- private static native int nativeNewClip(int min, int max);
- private static native int nativeNewGamma(float gamma);
+ private static native long nativeNewTable(byte[] table);
+ private static native long nativeNewClip(int min, int max);
+ private static native long nativeNewGamma(float gamma);
}
diff --git a/graphics/java/android/graphics/Typeface.java b/graphics/java/android/graphics/Typeface.java
index c68c9f7dd9fd..936ea4f79f74 100644
--- a/graphics/java/android/graphics/Typeface.java
+++ b/graphics/java/android/graphics/Typeface.java
@@ -18,6 +18,7 @@ package android.graphics;
import android.content.res.AssetManager;
import android.util.SparseArray;
+import android.util.LongSparseArray;
import java.io.File;
@@ -45,10 +46,10 @@ public class Typeface {
public static final Typeface MONOSPACE;
static Typeface[] sDefaults;
- private static final SparseArray<SparseArray<Typeface>> sTypefaceCache =
- new SparseArray<SparseArray<Typeface>>(3);
+ private static final LongSparseArray<SparseArray<Typeface>> sTypefaceCache =
+ new LongSparseArray<SparseArray<Typeface>>(3);
- int native_instance;
+ long native_instance;
// Style
public static final int NORMAL = 0;
@@ -100,7 +101,7 @@ public class Typeface {
* @return The best matching typeface.
*/
public static Typeface create(Typeface family, int style) {
- int ni = 0;
+ long ni = 0;
if (family != null) {
// Return early if we're asked for the same face/style
if (family.mStyle == style) {
@@ -170,7 +171,7 @@ public class Typeface {
}
// don't allow clients to call this directly
- private Typeface(int ni) {
+ private Typeface(long ni) {
if (ni == 0) {
throw new RuntimeException("native typeface cannot be made");
}
@@ -214,15 +215,20 @@ public class Typeface {
@Override
public int hashCode() {
- int result = native_instance;
+ /*
+ * Modified method for hashCode with long native_instance derived from
+ * http://developer.android.com/reference/java/lang/Object.html
+ */
+ int result = 17;
+ result = 31 * result + (int) (native_instance ^ (native_instance >>> 32));
result = 31 * result + mStyle;
return result;
}
- private static native int nativeCreate(String familyName, int style);
- private static native int nativeCreateFromTypeface(int native_instance, int style);
- private static native void nativeUnref(int native_instance);
- private static native int nativeGetStyle(int native_instance);
- private static native int nativeCreateFromAsset(AssetManager mgr, String path);
- private static native int nativeCreateFromFile(String path);
+ private static native long nativeCreate(String familyName, int style);
+ private static native long nativeCreateFromTypeface(long native_instance, int style);
+ private static native void nativeUnref(long native_instance);
+ private static native int nativeGetStyle(long native_instance);
+ private static native long nativeCreateFromAsset(AssetManager mgr, String path);
+ private static native long nativeCreateFromFile(String path);
}
diff --git a/graphics/java/android/graphics/Xfermode.java b/graphics/java/android/graphics/Xfermode.java
index 2467bdc29bcc..883350d1ce68 100644
--- a/graphics/java/android/graphics/Xfermode.java
+++ b/graphics/java/android/graphics/Xfermode.java
@@ -38,7 +38,7 @@ public class Xfermode {
}
}
- private static native void finalizer(int native_instance);
+ private static native void finalizer(long native_instance);
- int native_instance;
+ long native_instance;
}
diff --git a/graphics/java/android/renderscript/Byte2.java b/graphics/java/android/renderscript/Byte2.java
index cf34f3a8ab59..f796de3e7551 100644
--- a/graphics/java/android/renderscript/Byte2.java
+++ b/graphics/java/android/renderscript/Byte2.java
@@ -25,6 +25,9 @@ import android.util.Log;
*
**/
public class Byte2 {
+ public byte x;
+ public byte y;
+
public Byte2() {
}
@@ -33,8 +36,357 @@ public class Byte2 {
y = initY;
}
- public byte x;
- public byte y;
+ /** @hide */
+ public Byte2(Byte2 source) {
+ this.x = source.x;
+ this.y = source.y;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ */
+ public void add(Byte2 a) {
+ this.x += a.x;
+ this.y += a.y;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte2 add(Byte2 a, Byte2 b) {
+ Byte2 result = new Byte2();
+ result.x = (byte)(a.x + b.x);
+ result.y = (byte)(a.y + b.y);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(byte value) {
+ x += value;
+ y += value;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte2 add(Byte2 a, byte b) {
+ Byte2 result = new Byte2();
+ result.x = (byte)(a.x + b);
+ result.y = (byte)(a.y + b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ */
+ public void sub(Byte2 a) {
+ this.x -= a.x;
+ this.y -= a.y;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte2 sub(Byte2 a, Byte2 b) {
+ Byte2 result = new Byte2();
+ result.x = (byte)(a.x - b.x);
+ result.y = (byte)(a.y - b.y);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(byte value) {
+ x -= value;
+ y -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte2 sub(Byte2 a, byte b) {
+ Byte2 result = new Byte2();
+ result.x = (byte)(a.x - b);
+ result.y = (byte)(a.y - b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ */
+ public void mul(Byte2 a) {
+ this.x *= a.x;
+ this.y *= a.y;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte2 mul(Byte2 a, Byte2 b) {
+ Byte2 result = new Byte2();
+ result.x = (byte)(a.x * b.x);
+ result.y = (byte)(a.y * b.y);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(byte value) {
+ x *= value;
+ y *= value;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte2 mul(Byte2 a, byte b) {
+ Byte2 result = new Byte2();
+ result.x = (byte)(a.x * b);
+ result.y = (byte)(a.y * b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ */
+ public void div(Byte2 a) {
+ this.x /= a.x;
+ this.y /= a.y;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte2 div(Byte2 a, Byte2 b) {
+ Byte2 result = new Byte2();
+ result.x = (byte)(a.x / b.x);
+ result.y = (byte)(a.y / b.y);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(byte value) {
+ x /= value;
+ y /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte2 div(Byte2 a, byte b) {
+ Byte2 result = new Byte2();
+ result.x = (byte)(a.x / b);
+ result.y = (byte)(a.y / b);
+
+ return result;
+ }
+
+ /** @hide
+ * get vector length
+ *
+ * @return
+ */
+ public byte length() {
+ return 2;
+ }
+
+ /** @hide
+ * set vector negate
+ */
+ public void negate() {
+ this.x = (byte)(-x);
+ this.y = (byte)(-y);
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public byte dotProduct(Byte2 a) {
+ return (byte)((x * a.x) + (y * a.y));
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static byte dotProduct(Byte2 a, Byte2 b) {
+ return (byte)((b.x * a.x) + (b.y * a.y));
+ }
+
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Byte2 a, byte factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ }
+
+ /** @hide
+ * set vector value by Byte2
+ *
+ * @param a
+ */
+ public void set(Byte2 a) {
+ this.x = a.x;
+ this.y = a.y;
+ }
+
+ /** @hide
+ * set the vector field value by Char
+ *
+ * @param a
+ * @param b
+ */
+ public void setValues(byte a, byte b) {
+ this.x = a;
+ this.y = b;
+ }
+
+ /** @hide
+ * return the element sum of vector
+ *
+ * @return
+ */
+ public byte elementSum() {
+ return (byte)(x + y);
+ }
+
+ /** @hide
+ * get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public byte get(int i) {
+ switch (i) {
+ case 0:
+ return x;
+ case 1:
+ return y;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, byte value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, byte value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * copy the vector to Char array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(byte[] data, int offset) {
+ data[offset] = x;
+ data[offset + 1] = y;
+ }
+
}
diff --git a/graphics/java/android/renderscript/Byte3.java b/graphics/java/android/renderscript/Byte3.java
index 266e94d221de..f2a95ac5b321 100644
--- a/graphics/java/android/renderscript/Byte3.java
+++ b/graphics/java/android/renderscript/Byte3.java
@@ -25,6 +25,10 @@ import android.util.Log;
*
**/
public class Byte3 {
+ public byte x;
+ public byte y;
+ public byte z;
+
public Byte3() {
}
@@ -34,9 +38,387 @@ public class Byte3 {
z = initZ;
}
- public byte x;
- public byte y;
- public byte z;
+ /** @hide */
+ public Byte3(Byte3 source) {
+ this.x = source.x;
+ this.y = source.y;
+ this.z = source.z;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ */
+ public void add(Byte3 a) {
+ this.x += a.x;
+ this.y += a.y;
+ this.z += a.z;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte3 add(Byte3 a, Byte3 b) {
+ Byte3 result = new Byte3();
+ result.x = (byte)(a.x + b.x);
+ result.y = (byte)(a.y + b.y);
+ result.z = (byte)(a.z + b.z);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(byte value) {
+ x += value;
+ y += value;
+ z += value;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte3 add(Byte3 a, byte b) {
+ Byte3 result = new Byte3();
+ result.x = (byte)(a.x + b);
+ result.y = (byte)(a.y + b);
+ result.z = (byte)(a.z + b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ */
+ public void sub(Byte3 a) {
+ this.x -= a.x;
+ this.y -= a.y;
+ this.z -= a.z;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte3 sub(Byte3 a, Byte3 b) {
+ Byte3 result = new Byte3();
+ result.x = (byte)(a.x - b.x);
+ result.y = (byte)(a.y - b.y);
+ result.z = (byte)(a.z - b.z);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(byte value) {
+ x -= value;
+ y -= value;
+ z -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte3 sub(Byte3 a, byte b) {
+ Byte3 result = new Byte3();
+ result.x = (byte)(a.x - b);
+ result.y = (byte)(a.y - b);
+ result.z = (byte)(a.z - b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ */
+ public void mul(Byte3 a) {
+ this.x *= a.x;
+ this.y *= a.y;
+ this.z *= a.z;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte3 mul(Byte3 a, Byte3 b) {
+ Byte3 result = new Byte3();
+ result.x = (byte)(a.x * b.x);
+ result.y = (byte)(a.y * b.y);
+ result.z = (byte)(a.z * b.z);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(byte value) {
+ x *= value;
+ y *= value;
+ z *= value;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte3 mul(Byte3 a, byte b) {
+ Byte3 result = new Byte3();
+ result.x = (byte)(a.x * b);
+ result.y = (byte)(a.y * b);
+ result.z = (byte)(a.z * b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ */
+ public void div(Byte3 a) {
+ this.x /= a.x;
+ this.y /= a.y;
+ this.z /= a.z;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte3 div(Byte3 a, Byte3 b) {
+ Byte3 result = new Byte3();
+ result.x = (byte)(a.x / b.x);
+ result.y = (byte)(a.y / b.y);
+ result.z = (byte)(a.z / b.z);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(byte value) {
+ x /= value;
+ y /= value;
+ z /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte3 div(Byte3 a, byte b) {
+ Byte3 result = new Byte3();
+ result.x = (byte)(a.x / b);
+ result.y = (byte)(a.y / b);
+ result.z = (byte)(a.z / b);
+
+ return result;
+ }
+
+ /** @hide
+ * get vector length
+ *
+ * @return
+ */
+ public byte length() {
+ return 3;
+ }
+
+ /** @hide
+ * set vector negate
+ */
+ public void negate() {
+ this.x = (byte)(-x);
+ this.y = (byte)(-y);
+ this.z = (byte)(-z);
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public byte dotProduct(Byte3 a) {
+ return (byte)((byte)((byte)(x * a.x) + (byte)(y * a.y)) + (byte)(z * a.z));
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static byte dotProduct(Byte3 a, Byte3 b) {
+ return (byte)((byte)((byte)(b.x * a.x) + (byte)(b.y * a.y)) + (byte)(b.z * a.z));
+ }
+
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Byte3 a, byte factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ z += a.z * factor;
+ }
+
+ /** @hide
+ * set vector value by Byte3
+ *
+ * @param a
+ */
+ public void set(Byte3 a) {
+ this.x = a.x;
+ this.y = a.y;
+ this.z = a.z;
+ }
+
+ /** @hide
+ * set the vector field value by Char
+ *
+ * @param a
+ * @param b
+ * @param c
+ */
+ public void setValues(byte a, byte b, byte c) {
+ this.x = a;
+ this.y = b;
+ this.z = c;
+ }
+
+ /** @hide
+ * return the element sum of vector
+ *
+ * @return
+ */
+ public byte elementSum() {
+ return (byte)(x + y + z);
+ }
+
+ /** @hide
+ * get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public byte get(int i) {
+ switch (i) {
+ case 0:
+ return x;
+ case 1:
+ return y;
+ case 2:
+ return z;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, byte value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ case 2:
+ z = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, byte value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ case 2:
+ z += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * copy the vector to Char array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(byte[] data, int offset) {
+ data[offset] = x;
+ data[offset + 1] = y;
+ data[offset + 2] = z;
+ }
}
diff --git a/graphics/java/android/renderscript/Byte4.java b/graphics/java/android/renderscript/Byte4.java
index 68c8f52a7862..b8a8a6b1ebfa 100644
--- a/graphics/java/android/renderscript/Byte4.java
+++ b/graphics/java/android/renderscript/Byte4.java
@@ -25,6 +25,11 @@ import android.util.Log;
*
**/
public class Byte4 {
+ public byte x;
+ public byte y;
+ public byte z;
+ public byte w;
+
public Byte4() {
}
@@ -34,11 +39,418 @@ public class Byte4 {
z = initZ;
w = initW;
}
+ /** @hide */
+ public Byte4(Byte4 source) {
+ this.x = source.x;
+ this.y = source.y;
+ this.z = source.z;
+ this.w = source.w;
+ }
- public byte x;
- public byte y;
- public byte z;
- public byte w;
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ */
+ public void add(Byte4 a) {
+ this.x += a.x;
+ this.y += a.y;
+ this.z += a.z;
+ this.w += a.w;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte4 add(Byte4 a, Byte4 b) {
+ Byte4 result = new Byte4();
+ result.x = (byte)(a.x + b.x);
+ result.y = (byte)(a.y + b.y);
+ result.z = (byte)(a.z + b.z);
+ result.w = (byte)(a.w + b.w);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(byte value) {
+ x += value;
+ y += value;
+ z += value;
+ w += value;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte4 add(Byte4 a, byte b) {
+ Byte4 result = new Byte4();
+ result.x = (byte)(a.x + b);
+ result.y = (byte)(a.y + b);
+ result.z = (byte)(a.z + b);
+ result.w = (byte)(a.w + b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ */
+ public void sub(Byte4 a) {
+ this.x -= a.x;
+ this.y -= a.y;
+ this.z -= a.z;
+ this.w -= a.w;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte4 sub(Byte4 a, Byte4 b) {
+ Byte4 result = new Byte4();
+ result.x = (byte)(a.x - b.x);
+ result.y = (byte)(a.y - b.y);
+ result.z = (byte)(a.z - b.z);
+ result.w = (byte)(a.w - b.w);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(byte value) {
+ x -= value;
+ y -= value;
+ z -= value;
+ w -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte4 sub(Byte4 a, byte b) {
+ Byte4 result = new Byte4();
+ result.x = (byte)(a.x - b);
+ result.y = (byte)(a.y - b);
+ result.z = (byte)(a.z - b);
+ result.w = (byte)(a.w - b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ */
+ public void mul(Byte4 a) {
+ this.x *= a.x;
+ this.y *= a.y;
+ this.z *= a.z;
+ this.w *= a.w;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte4 mul(Byte4 a, Byte4 b) {
+ Byte4 result = new Byte4();
+ result.x = (byte)(a.x * b.x);
+ result.y = (byte)(a.y * b.y);
+ result.z = (byte)(a.z * b.z);
+ result.w = (byte)(a.w * b.w);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(byte value) {
+ x *= value;
+ y *= value;
+ z *= value;
+ w *= value;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte4 mul(Byte4 a, byte b) {
+ Byte4 result = new Byte4();
+ result.x = (byte)(a.x * b);
+ result.y = (byte)(a.y * b);
+ result.z = (byte)(a.z * b);
+ result.w = (byte)(a.w * b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ */
+ public void div(Byte4 a) {
+ this.x /= a.x;
+ this.y /= a.y;
+ this.z /= a.z;
+ this.w /= a.w;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte4 div(Byte4 a, Byte4 b) {
+ Byte4 result = new Byte4();
+ result.x = (byte)(a.x / b.x);
+ result.y = (byte)(a.y / b.y);
+ result.z = (byte)(a.z / b.z);
+ result.w = (byte)(a.w / b.w);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(byte value) {
+ x /= value;
+ y /= value;
+ z /= value;
+ w /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Byte4 div(Byte4 a, byte b) {
+ Byte4 result = new Byte4();
+ result.x = (byte)(a.x / b);
+ result.y = (byte)(a.y / b);
+ result.z = (byte)(a.z / b);
+ result.w = (byte)(a.w / b);
+
+ return result;
+ }
+
+ /** @hide
+ * get vector length
+ *
+ * @return
+ */
+ public byte length() {
+ return 4;
+ }
+
+ /** @hide
+ * set vector negate
+ */
+ public void negate() {
+ this.x = (byte)(-x);
+ this.y = (byte)(-y);
+ this.z = (byte)(-z);
+ this.w = (byte)(-w);
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public byte dotProduct(Byte4 a) {
+ return (byte)((x * a.x) + (y * a.y) + (z * a.z) + (w * a.w));
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static byte dotProduct(Byte4 a, Byte4 b) {
+ return (byte)((b.x * a.x) + (b.y * a.y) + (b.z * a.z) + (b.w * a.w));
+ }
+
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Byte4 a, byte factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ z += a.z * factor;
+ w += a.w * factor;
+ }
+
+ /** @hide
+ * set vector value by Byte4
+ *
+ * @param a
+ */
+ public void set(Byte4 a) {
+ this.x = a.x;
+ this.y = a.y;
+ this.z = a.z;
+ this.w = a.w;
+ }
+
+ /** @hide
+ * set the vector field values
+ *
+ * @param a
+ * @param b
+ * @param c
+ * @param d
+ */
+ public void setValues(byte a, byte b, byte c, byte d) {
+ this.x = a;
+ this.y = b;
+ this.z = c;
+ this.w = d;
+ }
+
+ /** @hide
+ * return the element sum of vector
+ *
+ * @return
+ */
+ public byte elementSum() {
+ return (byte)(x + y + z + w);
+ }
+
+ /** @hide
+ * get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public byte get(int i) {
+ switch (i) {
+ case 0:
+ return x;
+ case 1:
+ return y;
+ case 2:
+ return z;
+ case 3:
+ return w;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, byte value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ case 2:
+ z = value;
+ return;
+ case 3:
+ w = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, byte value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ case 2:
+ z += value;
+ return;
+ case 3:
+ w += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * copy the vector to Char array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(byte[] data, int offset) {
+ data[offset] = x;
+ data[offset + 1] = y;
+ data[offset + 2] = z;
+ data[offset + 3] = w;
+ }
}
diff --git a/graphics/java/android/renderscript/Double2.java b/graphics/java/android/renderscript/Double2.java
index 29fd5151e935..4c7319d5a4b0 100644
--- a/graphics/java/android/renderscript/Double2.java
+++ b/graphics/java/android/renderscript/Double2.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2013 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.
@@ -16,28 +16,370 @@
package android.renderscript;
-import java.lang.Math;
-import android.util.Log;
-
-
/**
- * Class for exposing the native RenderScript double2 type back
- * to the Android system.
- *
- **/
+ * Vector version of the basic double type.
+ * Provides two double fields packed.
+ */
public class Double2 {
+ public double x;
+ public double y;
+
public Double2() {
}
- public Double2(double initX, double initY) {
- x = initX;
- y = initY;
+ /** @hide */
+ public Double2(Double2 data) {
+ this.x = data.x;
+ this.y = data.y;
}
- public double x;
- public double y;
-}
+ public Double2(double x, double y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double2 add(Double2 a, Double2 b) {
+ Double2 res = new Double2();
+ res.x = a.x + b.x;
+ res.y = a.y + b.y;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(Double2 value) {
+ x += value.x;
+ y += value.y;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(double value) {
+ x += value;
+ y += value;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double2 add(Double2 a, double b) {
+ Double2 res = new Double2();
+ res.x = a.x + b;
+ res.y = a.y + b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(Double2 value) {
+ x -= value.x;
+ y -= value.y;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double2 sub(Double2 a, Double2 b) {
+ Double2 res = new Double2();
+ res.x = a.x - b.x;
+ res.y = a.y - b.y;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(double value) {
+ x -= value;
+ y -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double2 sub(Double2 a, double b) {
+ Double2 res = new Double2();
+ res.x = a.x - b;
+ res.y = a.y - b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(Double2 value) {
+ x *= value.x;
+ y *= value.y;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double2 mul(Double2 a, Double2 b) {
+ Double2 res = new Double2();
+ res.x = a.x * b.x;
+ res.y = a.y * b.y;
+
+ return res;
+ }
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(double value) {
+ x *= value;
+ y *= value;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double2 mul(Double2 a, double b) {
+ Double2 res = new Double2();
+ res.x = a.x * b;
+ res.y = a.y * b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(Double2 value) {
+ x /= value.x;
+ y /= value.y;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double2 div(Double2 a, Double2 b) {
+ Double2 res = new Double2();
+ res.x = a.x / b.x;
+ res.y = a.y / b.y;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(double value) {
+ x /= value;
+ y /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double2 div(Double2 a, double b) {
+ Double2 res = new Double2();
+ res.x = a.x / b;
+ res.y = a.y / b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public double dotProduct(Double2 a) {
+ return (x * a.x) + (y * a.y);
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double dotProduct(Double2 a, Double2 b) {
+ return (b.x * a.x) + (b.y * a.y);
+ }
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Double2 a, double factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ }
+
+ /** @hide
+ * Set vector value by double2
+ *
+ * @param a
+ */
+ public void set(Double2 a) {
+ this.x = a.x;
+ this.y = a.y;
+ }
+
+ /** @hide
+ * Set vector negate
+ */
+ public void negate() {
+ x = -x;
+ y = -y;
+ }
+
+ /** @hide
+ * Get vector length
+ *
+ * @return
+ */
+ public int length() {
+ return 2;
+ }
+
+ /** @hide
+ * Return the element sum of vector
+ *
+ * @return
+ */
+ public double elementSum() {
+ return x + y;
+ }
+ /** @hide
+ * Get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public double get(int i) {
+ switch (i) {
+ case 0:
+ return x;
+ case 1:
+ return y;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * Set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, double value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * Add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, double value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+ /** @hide
+ * Set the vector field value
+ *
+ * @param x
+ * @param y
+ */
+ public void setValues(double x, double y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ /** @hide
+ * Copy the vector to double array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(double[] data, int offset) {
+ data[offset] = x;
+ data[offset + 1] = y;
+ }
+}
diff --git a/graphics/java/android/renderscript/Double3.java b/graphics/java/android/renderscript/Double3.java
index 818952ed78f0..b819716017e9 100644
--- a/graphics/java/android/renderscript/Double3.java
+++ b/graphics/java/android/renderscript/Double3.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2013 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.
@@ -16,30 +16,402 @@
package android.renderscript;
-import java.lang.Math;
-import android.util.Log;
-
-
/**
- * Class for exposing the native RenderScript double3 type back
- * to the Android system.
- *
- **/
+ * Vector version of the basic double type.
+ * Provides three double fields packed.
+ */
public class Double3 {
+ public double x;
+ public double y;
+ public double z;
+
public Double3() {
}
+ /** @hide */
+ public Double3(Double3 data) {
+ this.x = data.x;
+ this.y = data.y;
+ this.z = data.z;
+ }
- public Double3(double initX, double initY, double initZ) {
- x = initX;
- y = initY;
- z = initZ;
+ public Double3(double x, double y, double z) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
}
- public double x;
- public double y;
- public double z;
-}
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double3 add(Double3 a, Double3 b) {
+ Double3 res = new Double3();
+ res.x = a.x + b.x;
+ res.y = a.y + b.y;
+ res.z = a.z + b.z;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(Double3 value) {
+ x += value.x;
+ y += value.y;
+ z += value.z;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(double value) {
+ x += value;
+ y += value;
+ z += value;
+ }
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double3 add(Double3 a, double b) {
+ Double3 res = new Double3();
+ res.x = a.x + b;
+ res.y = a.y + b;
+ res.z = a.z + b;
+ return res;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(Double3 value) {
+ x -= value.x;
+ y -= value.y;
+ z -= value.z;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double3 sub(Double3 a, Double3 b) {
+ Double3 res = new Double3();
+ res.x = a.x - b.x;
+ res.y = a.y - b.y;
+ res.z = a.z - b.z;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(double value) {
+ x -= value;
+ y -= value;
+ z -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double3 sub(Double3 a, double b) {
+ Double3 res = new Double3();
+ res.x = a.x - b;
+ res.y = a.y - b;
+ res.z = a.z - b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(Double3 value) {
+ x *= value.x;
+ y *= value.y;
+ z *= value.z;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double3 mul(Double3 a, Double3 b) {
+ Double3 res = new Double3();
+ res.x = a.x * b.x;
+ res.y = a.y * b.y;
+ res.z = a.z * b.z;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(double value) {
+ x *= value;
+ y *= value;
+ z *= value;
+ }
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double3 mul(Double3 a, double b) {
+ Double3 res = new Double3();
+ res.x = a.x * b;
+ res.y = a.y * b;
+ res.z = a.z * b;
+ return res;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(Double3 value) {
+ x /= value.x;
+ y /= value.y;
+ z /= value.z;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double3 div(Double3 a, Double3 b) {
+ Double3 res = new Double3();
+ res.x = a.x / b.x;
+ res.y = a.y / b.y;
+ res.z = a.z / b.z;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(double value) {
+ x /= value;
+ y /= value;
+ z /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double3 div(Double3 a, double b) {
+ Double3 res = new Double3();
+ res.x = a.x / b;
+ res.y = a.y / b;
+ res.z = a.z / b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public double dotProduct(Double3 a) {
+ return (x * a.x) + (y * a.y) + (z * a.z);
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static double dotProduct(Double3 a, Double3 b) {
+ return (b.x * a.x) + (b.y * a.y) + (b.z * a.z);
+ }
+
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Double3 a, double factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ z += a.z * factor;
+ }
+
+ /** @hide
+ * Set vector value by double3
+ *
+ * @param a
+ */
+ public void set(Double3 a) {
+ this.x = a.x;
+ this.y = a.y;
+ this.z = a.z;
+ }
+
+ /** @hide
+ * Set vector negate
+ */
+ public void negate() {
+ x = -x;
+ y = -y;
+ z = -z;
+ }
+
+ /** @hide
+ * Get vector length
+ *
+ * @return
+ */
+ public int length() {
+ return 3;
+ }
+
+ /** @hide
+ * Return the element sum of vector
+ *
+ * @return
+ */
+ public double elementSum() {
+ return x + y + z;
+ }
+
+ /** @hide
+ * Get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public double get(int i) {
+ switch (i) {
+ case 0:
+ return x;
+ case 1:
+ return y;
+ case 2:
+ return z;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * Set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, double value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ case 2:
+ z = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * Add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, double value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ case 2:
+ z += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * Set the vector field value
+ *
+ * @param x
+ * @param y
+ * @param z
+ */
+ public void setValues(double x, double y, double z) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ }
+
+ /** @hide
+ * Copy the vector to double array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(double[] data, int offset) {
+ data[offset] = x;
+ data[offset + 1] = y;
+ data[offset + 2] = z;
+ }
+}
diff --git a/graphics/java/android/renderscript/Double4.java b/graphics/java/android/renderscript/Double4.java
index 7775ab7713d5..e4829f7426ae 100644
--- a/graphics/java/android/renderscript/Double4.java
+++ b/graphics/java/android/renderscript/Double4.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2013 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.
@@ -16,31 +16,435 @@
package android.renderscript;
-import java.lang.Math;
-import android.util.Log;
-
-
/**
- * Class for exposing the native RenderScript double4 type back
- * to the Android system.
- *
- **/
+ * Vector version of the basic double type.
+ * Provides four double fields packed.
+ */
public class Double4 {
+ public double x;
+ public double y;
+ public double z;
+ public double w;
+
public Double4() {
}
+ /** @hide */
+ public Double4(Double4 data) {
+ this.x = data.x;
+ this.y = data.y;
+ this.z = data.z;
+ this.w = data.w;
+ }
- public Double4(double initX, double initY, double initZ, double initW) {
- x = initX;
- y = initY;
- z = initZ;
- w = initW;
+ public Double4(double x, double y, double z, double w) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ this.w = w;
}
- public double x;
- public double y;
- public double z;
- public double w;
-}
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double4 add(Double4 a, Double4 b) {
+ Double4 res = new Double4();
+ res.x = a.x + b.x;
+ res.y = a.y + b.y;
+ res.z = a.z + b.z;
+ res.w = a.w + b.w;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(Double4 value) {
+ x += value.x;
+ y += value.y;
+ z += value.z;
+ w += value.w;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(double value) {
+ x += value;
+ y += value;
+ z += value;
+ w += value;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double4 add(Double4 a, double b) {
+ Double4 res = new Double4();
+ res.x = a.x + b;
+ res.y = a.y + b;
+ res.z = a.z + b;
+ res.w = a.w + b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(Double4 value) {
+ x -= value.x;
+ y -= value.y;
+ z -= value.z;
+ w -= value.w;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(double value) {
+ x -= value;
+ y -= value;
+ z -= value;
+ w -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double4 sub(Double4 a, double b) {
+ Double4 res = new Double4();
+ res.x = a.x - b;
+ res.y = a.y - b;
+ res.z = a.z - b;
+ res.w = a.w - b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double4 sub(Double4 a, Double4 b) {
+ Double4 res = new Double4();
+ res.x = a.x - b.x;
+ res.y = a.y - b.y;
+ res.z = a.z - b.z;
+ res.w = a.w - b.w;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(Double4 value) {
+ x *= value.x;
+ y *= value.y;
+ z *= value.z;
+ w *= value.w;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(double value) {
+ x *= value;
+ y *= value;
+ z *= value;
+ w *= value;
+ }
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double4 mul(Double4 a, Double4 b) {
+ Double4 res = new Double4();
+ res.x = a.x * b.x;
+ res.y = a.y * b.y;
+ res.z = a.z * b.z;
+ res.w = a.w * b.w;
+ return res;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double4 mul(Double4 a, double b) {
+ Double4 res = new Double4();
+ res.x = a.x * b;
+ res.y = a.y * b;
+ res.z = a.z * b;
+ res.w = a.w * b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(Double4 value) {
+ x /= value.x;
+ y /= value.y;
+ z /= value.z;
+ w /= value.w;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(double value) {
+ x /= value;
+ y /= value;
+ z /= value;
+ w /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double4 div(Double4 a, double b) {
+ Double4 res = new Double4();
+ res.x = a.x / b;
+ res.y = a.y / b;
+ res.z = a.z / b;
+ res.w = a.w / b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Double4 div(Double4 a, Double4 b) {
+ Double4 res = new Double4();
+ res.x = a.x / b.x;
+ res.y = a.y / b.y;
+ res.z = a.z / b.z;
+ res.w = a.w / b.w;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public double dotProduct(Double4 a) {
+ return (x * a.x) + (y * a.y) + (z * a.z) + (w * a.w);
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static double dotProduct(Double4 a, Double4 b) {
+ return (b.x * a.x) + (b.y * a.y) + (b.z * a.z) + (b.w * a.w);
+ }
+
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Double4 a, double factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ z += a.z * factor;
+ w += a.w * factor;
+ }
+
+ /** @hide
+ * Set vector value by double4
+ *
+ * @param a
+ */
+ public void set(Double4 a) {
+ this.x = a.x;
+ this.y = a.y;
+ this.z = a.z;
+ this.w = a.w;
+ }
+
+ /** @hide
+ * Set vector negate
+ */
+ public void negate() {
+ x = -x;
+ y = -y;
+ z = -z;
+ w = -w;
+ }
+ /** @hide
+ * Get vector length
+ *
+ * @return
+ */
+ public int length() {
+ return 4;
+ }
+
+ /** @hide
+ * Return the element sum of vector
+ *
+ * @return
+ */
+ public double elementSum() {
+ return x + y + z + w;
+ }
+
+ /** @hide
+ * Get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public double get(int i) {
+ switch (i) {
+ case 0:
+ return x;
+ case 1:
+ return y;
+ case 2:
+ return z;
+ case 3:
+ return w;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * Set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, double value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ case 2:
+ z = value;
+ return;
+ case 3:
+ w = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * Add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, double value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ case 2:
+ z += value;
+ return;
+ case 3:
+ w += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * Set the vector field value
+ *
+ * @param x
+ * @param y
+ * @param z
+ * @param w
+ */
+ public void setValues(double x, double y, double z, double w) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ this.w = w;
+ }
+
+ /** @hide
+ * Copy the vector to double array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(double[] data, int offset) {
+ data[offset] = x;
+ data[offset + 1] = y;
+ data[offset + 2] = z;
+ data[offset + 3] = w;
+ }
+}
diff --git a/graphics/java/android/renderscript/Float2.java b/graphics/java/android/renderscript/Float2.java
index 0f730feb17f3..26193d2d2f35 100644
--- a/graphics/java/android/renderscript/Float2.java
+++ b/graphics/java/android/renderscript/Float2.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2013 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.
@@ -16,27 +16,369 @@
package android.renderscript;
-import java.lang.Math;
-import android.util.Log;
-
-
/**
- * Class for exposing the native RenderScript float2 type back to the Android system.
- *
- **/
-public class Float2 {
+ * Vector version of the basic float type.
+ * Provides two float fields packed.
+ */
+public class Float2 {
+ public float x;
+ public float y;
+
public Float2() {
}
+ /** @hide */
+ public Float2(Float2 data) {
+ this.x = data.x;
+ this.y = data.y;
+ }
- public Float2(float initX, float initY) {
- x = initX;
- y = initY;
+ public Float2(float x, float y) {
+ this.x = x;
+ this.y = y;
}
- public float x;
- public float y;
-}
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float2 add(Float2 a, Float2 b) {
+ Float2 res = new Float2();
+ res.x = a.x + b.x;
+ res.y = a.y + b.y;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(Float2 value) {
+ x += value.x;
+ y += value.y;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(float value) {
+ x += value;
+ y += value;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float2 add(Float2 a, float b) {
+ Float2 res = new Float2();
+ res.x = a.x + b;
+ res.y = a.y + b;
+ return res;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(Float2 value) {
+ x -= value.x;
+ y -= value.y;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float2 sub(Float2 a, Float2 b) {
+ Float2 res = new Float2();
+ res.x = a.x - b.x;
+ res.y = a.y - b.y;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(float value) {
+ x -= value;
+ y -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float2 sub(Float2 a, float b) {
+ Float2 res = new Float2();
+ res.x = a.x - b;
+ res.y = a.y - b;
+ return res;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(Float2 value) {
+ x *= value.x;
+ y *= value.y;
+ }
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float2 mul(Float2 a, Float2 b) {
+ Float2 res = new Float2();
+ res.x = a.x * b.x;
+ res.y = a.y * b.y;
+
+ return res;
+ }
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(float value) {
+ x *= value;
+ y *= value;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float2 mul(Float2 a, float b) {
+ Float2 res = new Float2();
+ res.x = a.x * b;
+ res.y = a.y * b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(Float2 value) {
+ x /= value.x;
+ y /= value.y;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float2 div(Float2 a, Float2 b) {
+ Float2 res = new Float2();
+ res.x = a.x / b.x;
+ res.y = a.y / b.y;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(float value) {
+ x /= value;
+ y /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float2 div(Float2 a, float b) {
+ Float2 res = new Float2();
+ res.x = a.x / b;
+ res.y = a.y / b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public float dotProduct(Float2 a) {
+ return (x * a.x) + (y * a.y);
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static float dotProduct(Float2 a, Float2 b) {
+ return (b.x * a.x) + (b.y * a.y);
+ }
+
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Float2 a, float factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ }
+
+ /** @hide
+ * set vector value by float2
+ *
+ * @param a
+ */
+ public void set(Float2 a) {
+ this.x = a.x;
+ this.y = a.y;
+ }
+
+ /** @hide
+ * set vector negate
+ */
+ public void negate() {
+ x = -x;
+ y = -y;
+ }
+
+ /** @hide
+ * get vector length
+ *
+ * @return
+ */
+ public int length() {
+ return 2;
+ }
+
+ /** @hide
+ * return the element sum of vector
+ *
+ * @return
+ */
+ public float elementSum() {
+ return x + y;
+ }
+
+ /** @hide
+ * get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public float get(int i) {
+ switch (i) {
+ case 0:
+ return x;
+ case 1:
+ return y;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, float value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, float value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value
+ *
+ * @param x
+ * @param y
+ */
+ public void setValues(float x, float y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ /** @hide
+ * copy the vector to float array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(float[] data, int offset) {
+ data[offset] = x;
+ data[offset + 1] = y;
+ }
+}
diff --git a/graphics/java/android/renderscript/Float3.java b/graphics/java/android/renderscript/Float3.java
index 749865f12f16..555bdf6d6e4e 100644
--- a/graphics/java/android/renderscript/Float3.java
+++ b/graphics/java/android/renderscript/Float3.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2013 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.
@@ -16,28 +16,402 @@
package android.renderscript;
-import java.lang.Math;
-import android.util.Log;
-
-
/**
- * Class for exposing the native RenderScript float2 type back to the Android system.
- *
- **/
+ * Vector version of the basic float type.
+ * Provides three float fields packed.
+ */
public class Float3 {
+ public float x;
+ public float y;
+ public float z;
+
public Float3() {
}
- public Float3(float initX, float initY, float initZ) {
- x = initX;
- y = initY;
- z = initZ;
+ /** @hide */
+ public Float3(Float3 data) {
+ this.x = data.x;
+ this.y = data.y;
+ this.z = data.z;
}
- public float x;
- public float y;
- public float z;
-}
+ public Float3(float x, float y, float z) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float3 add(Float3 a, Float3 b) {
+ Float3 res = new Float3();
+ res.x = a.x + b.x;
+ res.y = a.y + b.y;
+ res.z = a.z + b.z;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(Float3 value) {
+ x += value.x;
+ y += value.y;
+ z += value.z;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(float value) {
+ x += value;
+ y += value;
+ z += value;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float3 add(Float3 a, float b) {
+ Float3 res = new Float3();
+ res.x = a.x + b;
+ res.y = a.y + b;
+ res.z = a.z + b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(Float3 value) {
+ x -= value.x;
+ y -= value.y;
+ z -= value.z;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float3 sub(Float3 a, Float3 b) {
+ Float3 res = new Float3();
+ res.x = a.x - b.x;
+ res.y = a.y - b.y;
+ res.z = a.z - b.z;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(float value) {
+ x -= value;
+ y -= value;
+ z -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float3 sub(Float3 a, float b) {
+ Float3 res = new Float3();
+ res.x = a.x - b;
+ res.y = a.y - b;
+ res.z = a.z - b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(Float3 value) {
+ x *= value.x;
+ y *= value.y;
+ z *= value.z;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float3 mul(Float3 a, Float3 b) {
+ Float3 res = new Float3();
+ res.x = a.x * b.x;
+ res.y = a.y * b.y;
+ res.z = a.z * b.z;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(float value) {
+ x *= value;
+ y *= value;
+ z *= value;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float3 mul(Float3 a, float b) {
+ Float3 res = new Float3();
+ res.x = a.x * b;
+ res.y = a.y * b;
+ res.z = a.z * b;
+
+ return res;
+ }
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(Float3 value) {
+ x /= value.x;
+ y /= value.y;
+ z /= value.z;
+ }
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float3 div(Float3 a, Float3 b) {
+ Float3 res = new Float3();
+ res.x = a.x / b.x;
+ res.y = a.y / b.y;
+ res.z = a.z / b.z;
+ return res;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(float value) {
+ x /= value;
+ y /= value;
+ z /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float3 div(Float3 a, float b) {
+ Float3 res = new Float3();
+ res.x = a.x / b;
+ res.y = a.y / b;
+ res.z = a.z / b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public Float dotProduct(Float3 a) {
+ return new Float((x * a.x) + (y * a.y) + (z * a.z));
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float dotProduct(Float3 a, Float3 b) {
+ return new Float((b.x * a.x) + (b.y * a.y) + (b.z * a.z));
+ }
+
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Float3 a, float factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ z += a.z * factor;
+ }
+ /** @hide
+ * set vector value by float3
+ *
+ * @param a
+ */
+ public void set(Float3 a) {
+ this.x = a.x;
+ this.y = a.y;
+ this.z = a.z;
+ }
+
+ /** @hide
+ * set vector negate
+ */
+ public void negate() {
+ x = -x;
+ y = -y;
+ z = -z;
+ }
+
+ /** @hide
+ * get vector length
+ *
+ * @return
+ */
+ public int length() {
+ return 3;
+ }
+
+ /** @hide
+ * return the element sum of vector
+ *
+ * @return
+ */
+ public Float elementSum() {
+ return new Float(x + y + z);
+ }
+
+ /** @hide
+ * get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public float get(int i) {
+ switch (i) {
+ case 0:
+ return x;
+ case 1:
+ return y;
+ case 2:
+ return z;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, float value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ case 2:
+ z = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, float value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ case 2:
+ z += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value
+ *
+ * @param x
+ * @param y
+ * @param z
+ */
+ public void setValues(float x, float y, float z) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ }
+
+ /** @hide
+ * copy the vector to float array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(float[] data, int offset) {
+ data[offset] = x;
+ data[offset + 1] = y;
+ data[offset + 2] = z;
+ }
+}
diff --git a/graphics/java/android/renderscript/Float4.java b/graphics/java/android/renderscript/Float4.java
index 7ddf6aa96d9b..6541b2ec7264 100644
--- a/graphics/java/android/renderscript/Float4.java
+++ b/graphics/java/android/renderscript/Float4.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2013 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.
@@ -16,30 +16,435 @@
package android.renderscript;
-import java.lang.Math;
-import android.util.Log;
-
-
/**
- * Class for exposing the native RenderScript float2 type back to the Android system.
- *
- **/
+ * Vector version of the basic float type.
+ * Provides four float fields packed.
+ */
public class Float4 {
+ public float x;
+ public float y;
+ public float z;
+ public float w;
+
public Float4() {
}
+ /** @hide */
+ public Float4(Float4 data) {
+ this.x = data.x;
+ this.y = data.y;
+ this.z = data.z;
+ this.w = data.w;
+ }
- public Float4(float initX, float initY, float initZ, float initW) {
- x = initX;
- y = initY;
- z = initZ;
- w = initW;
+ public Float4(float x, float y, float z, float w) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ this.w = w;
}
- public float x;
- public float y;
- public float z;
- public float w;
-}
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float4 add(Float4 a, Float4 b) {
+ Float4 res = new Float4();
+ res.x = a.x + b.x;
+ res.y = a.y + b.y;
+ res.z = a.z + b.z;
+ res.w = a.w + b.w;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(Float4 value) {
+ x += value.x;
+ y += value.y;
+ z += value.z;
+ w += value.w;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(float value) {
+ x += value;
+ y += value;
+ z += value;
+ w += value;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float4 add(Float4 a, float b) {
+ Float4 res = new Float4();
+ res.x = a.x + b;
+ res.y = a.y + b;
+ res.z = a.z + b;
+ res.w = a.w + b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(Float4 value) {
+ x -= value.x;
+ y -= value.y;
+ z -= value.z;
+ w -= value.w;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(float value) {
+ x -= value;
+ y -= value;
+ z -= value;
+ w -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float4 sub(Float4 a, float b) {
+ Float4 res = new Float4();
+ res.x = a.x - b;
+ res.y = a.y - b;
+ res.z = a.z - b;
+ res.w = a.w - b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float4 sub(Float4 a, Float4 b) {
+ Float4 res = new Float4();
+ res.x = a.x - b.x;
+ res.y = a.y - b.y;
+ res.z = a.z - b.z;
+ res.w = a.w - b.w;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(Float4 value) {
+ x *= value.x;
+ y *= value.y;
+ z *= value.z;
+ w *= value.w;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(float value) {
+ x *= value;
+ y *= value;
+ z *= value;
+ w *= value;
+ }
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float4 mul(Float4 a, Float4 b) {
+ Float4 res = new Float4();
+ res.x = a.x * b.x;
+ res.y = a.y * b.y;
+ res.z = a.z * b.z;
+ res.w = a.w * b.w;
+ return res;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float4 mul(Float4 a, float b) {
+ Float4 res = new Float4();
+ res.x = a.x * b;
+ res.y = a.y * b;
+ res.z = a.z * b;
+ res.w = a.w * b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(Float4 value) {
+ x /= value.x;
+ y /= value.y;
+ z /= value.z;
+ w /= value.w;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(float value) {
+ x /= value;
+ y /= value;
+ z /= value;
+ w /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float4 div(Float4 a, float b) {
+ Float4 res = new Float4();
+ res.x = a.x / b;
+ res.y = a.y / b;
+ res.z = a.z / b;
+ res.w = a.w / b;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Float4 div(Float4 a, Float4 b) {
+ Float4 res = new Float4();
+ res.x = a.x / b.x;
+ res.y = a.y / b.y;
+ res.z = a.z / b.z;
+ res.w = a.w / b.w;
+
+ return res;
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public float dotProduct(Float4 a) {
+ return (x * a.x) + (y * a.y) + (z * a.z) + (w * a.w);
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static float dotProduct(Float4 a, Float4 b) {
+ return (b.x * a.x) + (b.y * a.y) + (b.z * a.z) + (b.w * a.w);
+ }
+
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Float4 a, float factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ z += a.z * factor;
+ w += a.w * factor;
+ }
+
+ /** @hide
+ * set vector value by float4
+ *
+ * @param a
+ */
+ public void set(Float4 a) {
+ this.x = a.x;
+ this.y = a.y;
+ this.z = a.z;
+ this.w = a.w;
+ }
+
+ /** @hide
+ * set vector negate
+ */
+ public void negate() {
+ x = -x;
+ y = -y;
+ z = -z;
+ w = -w;
+ }
+ /** @hide
+ * get vector length
+ *
+ * @return
+ */
+ public int length() {
+ return 4;
+ }
+
+ /** @hide
+ * return the element sum of vector
+ *
+ * @return
+ */
+ public float elementSum() {
+ return x + y + z + w;
+ }
+
+ /** @hide
+ * get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public float get(int i) {
+ switch (i) {
+ case 0:
+ return x;
+ case 1:
+ return y;
+ case 2:
+ return z;
+ case 3:
+ return w;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, float value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ case 2:
+ z = value;
+ return;
+ case 3:
+ w = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, float value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ case 2:
+ z += value;
+ return;
+ case 3:
+ w += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value
+ *
+ * @param x
+ * @param y
+ * @param z
+ * @param w
+ */
+ public void setValues(float x, float y, float z, float w) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ this.w = w;
+ }
+
+ /** @hide
+ * copy the vector to float array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(float[] data, int offset) {
+ data[offset] = x;
+ data[offset + 1] = y;
+ data[offset + 2] = z;
+ data[offset + 3] = w;
+ }
+}
diff --git a/graphics/java/android/renderscript/Int2.java b/graphics/java/android/renderscript/Int2.java
index 71b5dd53cfe5..120957bcd726 100644
--- a/graphics/java/android/renderscript/Int2.java
+++ b/graphics/java/android/renderscript/Int2.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2013 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.
@@ -16,27 +16,425 @@
package android.renderscript;
-import java.lang.Math;
-import android.util.Log;
-
-
/**
- * Class for exposing the native RenderScript int2 type back to the Android system.
- *
- **/
+ * Vector version of the basic int type.
+ * Provides two int fields packed.
+ */
public class Int2 {
+ public int x;
+ public int y;
+
public Int2() {
}
- public Int2(int initX, int initY) {
- x = initX;
- y = initY;
+ /** @hide */
+ public Int2(int i) {
+ this.x = this.y = i;
}
- public int x;
- public int y;
-}
+ public Int2(int x, int y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ /** @hide */
+ public Int2(Int2 source) {
+ this.x = source.x;
+ this.y = source.y;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ */
+ public void add(Int2 a) {
+ this.x += a.x;
+ this.y += a.y;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int2 add(Int2 a, Int2 b) {
+ Int2 result = new Int2();
+ result.x = a.x + b.x;
+ result.y = a.y + b.y;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(int value) {
+ x += value;
+ y += value;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int2 add(Int2 a, int b) {
+ Int2 result = new Int2();
+ result.x = a.x + b;
+ result.y = a.y + b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ */
+ public void sub(Int2 a) {
+ this.x -= a.x;
+ this.y -= a.y;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int2 sub(Int2 a, Int2 b) {
+ Int2 result = new Int2();
+ result.x = a.x - b.x;
+ result.y = a.y - b.y;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(int value) {
+ x -= value;
+ y -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int2 sub(Int2 a, int b) {
+ Int2 result = new Int2();
+ result.x = a.x - b;
+ result.y = a.y - b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ */
+ public void mul(Int2 a) {
+ this.x *= a.x;
+ this.y *= a.y;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int2 mul(Int2 a, Int2 b) {
+ Int2 result = new Int2();
+ result.x = a.x * b.x;
+ result.y = a.y * b.y;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(int value) {
+ x *= value;
+ y *= value;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int2 mul(Int2 a, int b) {
+ Int2 result = new Int2();
+ result.x = a.x * b;
+ result.y = a.y * b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ */
+ public void div(Int2 a) {
+ this.x /= a.x;
+ this.y /= a.y;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int2 div(Int2 a, Int2 b) {
+ Int2 result = new Int2();
+ result.x = a.x / b.x;
+ result.y = a.y / b.y;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(int value) {
+ x /= value;
+ y /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int2 div(Int2 a, int b) {
+ Int2 result = new Int2();
+ result.x = a.x / b;
+ result.y = a.y / b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ */
+ public void mod(Int2 a) {
+ this.x %= a.x;
+ this.y %= a.y;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int2 mod(Int2 a, Int2 b) {
+ Int2 result = new Int2();
+ result.x = a.x % b.x;
+ result.y = a.y % b.y;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param value
+ */
+ public void mod(int value) {
+ x %= value;
+ y %= value;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int2 mod(Int2 a, int b) {
+ Int2 result = new Int2();
+ result.x = a.x % b;
+ result.y = a.y % b;
+
+ return result;
+ }
+ /** @hide
+ * get vector length
+ *
+ * @return
+ */
+ public int length() {
+ return 2;
+ }
+
+ /** @hide
+ * set vector negate
+ */
+ public void negate() {
+ this.x = -x;
+ this.y = -y;
+ }
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public int dotProduct(Int2 a) {
+ return (int)((x * a.x) + (y * a.y));
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static int dotProduct(Int2 a, Int2 b) {
+ return (int)((b.x * a.x) + (b.y * a.y));
+ }
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Int2 a, int factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ }
+
+ /** @hide
+ * set vector value by Int2
+ *
+ * @param a
+ */
+ public void set(Int2 a) {
+ this.x = a.x;
+ this.y = a.y;
+ }
+
+ /** @hide
+ * set the vector field value by Int
+ *
+ * @param a
+ * @param b
+ */
+ public void setValues(int a, int b) {
+ this.x = a;
+ this.y = b;
+ }
+ /** @hide
+ * return the element sum of vector
+ *
+ * @return
+ */
+ public int elementSum() {
+ return (int)(x + y);
+ }
+
+ /** @hide
+ * get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public int get(int i) {
+ switch (i) {
+ case 0:
+ return (int)(x);
+ case 1:
+ return (int)(y);
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, int value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, int value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * copy the vector to int array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(int[] data, int offset) {
+ data[offset] = (int)(x);
+ data[offset + 1] = (int)(y);
+ }
+}
diff --git a/graphics/java/android/renderscript/Int3.java b/graphics/java/android/renderscript/Int3.java
index 719c908b5cd8..c770395c9617 100644
--- a/graphics/java/android/renderscript/Int3.java
+++ b/graphics/java/android/renderscript/Int3.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2013 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.
@@ -16,29 +16,462 @@
package android.renderscript;
-import java.lang.Math;
-import android.util.Log;
-
-
/**
- * Class for exposing the native RenderScript int3 type back to the Android system.
- *
- **/
+ * Vector version of the basic int type.
+ * Provides three int fields packed.
+ */
public class Int3 {
+ public int x;
+ public int y;
+ public int z;
+
public Int3() {
}
+
+ /** @hide */
+ public Int3(int i) {
+ this.x = this.y = this.z = i;
+ }
- public Int3(int initX, int initY, int initZ) {
- x = initX;
- y = initY;
- z = initZ;
+ public Int3(int x, int y, int z) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
}
- public int x;
- public int y;
- public int z;
-}
+ /** @hide */
+ public Int3(Int3 source) {
+ this.x = source.x;
+ this.y = source.y;
+ this.z = source.z;
+ }
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ */
+ public void add(Int3 a) {
+ this.x += a.x;
+ this.y += a.y;
+ this.z += a.z;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int3 add(Int3 a, Int3 b) {
+ Int3 result = new Int3();
+ result.x = a.x + b.x;
+ result.y = a.y + b.y;
+ result.z = a.z + b.z;
+ return result;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(int value) {
+ x += value;
+ y += value;
+ z += value;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int3 add(Int3 a, int b) {
+ Int3 result = new Int3();
+ result.x = a.x + b;
+ result.y = a.y + b;
+ result.z = a.z + b;
+
+ return result;
+ }
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ */
+ public void sub(Int3 a) {
+ this.x -= a.x;
+ this.y -= a.y;
+ this.z -= a.z;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int3 sub(Int3 a, Int3 b) {
+ Int3 result = new Int3();
+ result.x = a.x - b.x;
+ result.y = a.y - b.y;
+ result.z = a.z - b.z;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(int value) {
+ x -= value;
+ y -= value;
+ z -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int3 sub(Int3 a, int b) {
+ Int3 result = new Int3();
+ result.x = a.x - b;
+ result.y = a.y - b;
+ result.z = a.z - b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ */
+ public void mul(Int3 a) {
+ this.x *= a.x;
+ this.y *= a.y;
+ this.z *= a.z;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int3 mul(Int3 a, Int3 b) {
+ Int3 result = new Int3();
+ result.x = a.x * b.x;
+ result.y = a.y * b.y;
+ result.z = a.z * b.z;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(int value) {
+ x *= value;
+ y *= value;
+ z *= value;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int3 mul(Int3 a, int b) {
+ Int3 result = new Int3();
+ result.x = a.x * b;
+ result.y = a.y * b;
+ result.z = a.z * b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ */
+ public void div(Int3 a) {
+ this.x /= a.x;
+ this.y /= a.y;
+ this.z /= a.z;
+ }
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int3 div(Int3 a, Int3 b) {
+ Int3 result = new Int3();
+ result.x = a.x / b.x;
+ result.y = a.y / b.y;
+ result.z = a.z / b.z;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(int value) {
+ x /= value;
+ y /= value;
+ z /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int3 div(Int3 a, int b) {
+ Int3 result = new Int3();
+ result.x = a.x / b;
+ result.y = a.y / b;
+ result.z = a.z / b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ */
+ public void mod(Int3 a) {
+ this.x %= a.x;
+ this.y %= a.y;
+ this.z %= a.z;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int3 mod(Int3 a, Int3 b) {
+ Int3 result = new Int3();
+ result.x = a.x % b.x;
+ result.y = a.y % b.y;
+ result.z = a.z % b.z;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param value
+ */
+ public void mod(int value) {
+ x %= value;
+ y %= value;
+ z %= value;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int3 mod(Int3 a, int b) {
+ Int3 result = new Int3();
+ result.x = a.x % b;
+ result.y = a.y % b;
+ result.z = a.z % b;
+
+ return result;
+ }
+
+ /** @hide
+ * get vector length
+ *
+ * @return
+ */
+ public int length() {
+ return 3;
+ }
+
+ /** @hide
+ * set vector negate
+ */
+ public void negate() {
+ this.x = -x;
+ this.y = -y;
+ this.z = -z;
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public int dotProduct(Int3 a) {
+ return (int)((x * a.x) + (y * a.y) + (z * a.z));
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static int dotProduct(Int3 a, Int3 b) {
+ return (int)((b.x * a.x) + (b.y * a.y) + (b.z * a.z));
+ }
+
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Int3 a, int factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ z += a.z * factor;
+ }
+
+ /** @hide
+ * set vector value by Int3
+ *
+ * @param a
+ */
+ public void set(Int3 a) {
+ this.x = a.x;
+ this.y = a.y;
+ this.z = a.z;
+ }
+
+ /** @hide
+ * set the vector field value by Int
+ *
+ * @param a
+ * @param b
+ * @param c
+ */
+ public void setValues(int a, int b, int c) {
+ this.x = a;
+ this.y = b;
+ this.z = c;
+ }
+
+ /** @hide
+ * return the element sum of vector
+ *
+ * @return
+ */
+ public int elementSum() {
+ return (int)(x + y + z);
+ }
+
+ /** @hide
+ * get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public int get(int i) {
+ switch (i) {
+ case 0:
+ return (int)(x);
+ case 1:
+ return (int)(y);
+ case 2:
+ return (int)(z);
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, int value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ case 2:
+ z = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, int value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ case 2:
+ z += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * copy the vector to int array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(int[] data, int offset) {
+ data[offset] = (int)(x);
+ data[offset + 1] = (int)(y);
+ data[offset + 2] = (int)(z);
+ }
+}
diff --git a/graphics/java/android/renderscript/Int4.java b/graphics/java/android/renderscript/Int4.java
index eefb34924113..1c0e2e2621aa 100644
--- a/graphics/java/android/renderscript/Int4.java
+++ b/graphics/java/android/renderscript/Int4.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2013 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.
@@ -16,30 +16,499 @@
package android.renderscript;
-import java.lang.Math;
-import android.util.Log;
-
-
/**
- * Class for exposing the native RenderScript int4 type back to the Android system.
- *
- **/
+ * Vector version of the basic int type.
+ * Provides four int fields packed.
+ */
public class Int4 {
+ public int x;
+ public int y;
+ public int z;
+ public int w;
+
public Int4() {
}
- public Int4(int initX, int initY, int initZ, int initW) {
- x = initX;
- y = initY;
- z = initZ;
- w = initW;
+ /** @hide */
+ public Int4(int i) {
+ this.x = this.y = this.z = this.w = i;
}
- public int x;
- public int y;
- public int z;
- public int w;
-}
+ public Int4(int x, int y, int z, int w) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ this.w = w;
+ }
+ /** @hide */
+ public Int4(Int4 source) {
+ this.x = source.x;
+ this.y = source.y;
+ this.z = source.z;
+ this.w = source.w;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ */
+ public void add(Int4 a) {
+ this.x += a.x;
+ this.y += a.y;
+ this.z += a.z;
+ this.w += a.w;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int4 add(Int4 a, Int4 b) {
+ Int4 result = new Int4();
+ result.x = a.x + b.x;
+ result.y = a.y + b.y;
+ result.z = a.z + b.z;
+ result.w = a.w + b.w;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(int value) {
+ x += value;
+ y += value;
+ z += value;
+ w += value;
+ }
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int4 add(Int4 a, int b) {
+ Int4 result = new Int4();
+ result.x = a.x + b;
+ result.y = a.y + b;
+ result.z = a.z + b;
+ result.w = a.w + b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ */
+ public void sub(Int4 a) {
+ this.x -= a.x;
+ this.y -= a.y;
+ this.z -= a.z;
+ this.w -= a.w;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int4 sub(Int4 a, Int4 b) {
+ Int4 result = new Int4();
+ result.x = a.x - b.x;
+ result.y = a.y - b.y;
+ result.z = a.z - b.z;
+ result.w = a.w - b.w;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(int value) {
+ x -= value;
+ y -= value;
+ z -= value;
+ w -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int4 sub(Int4 a, int b) {
+ Int4 result = new Int4();
+ result.x = a.x - b;
+ result.y = a.y - b;
+ result.z = a.z - b;
+ result.w = a.w - b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ */
+ public void mul(Int4 a) {
+ this.x *= a.x;
+ this.y *= a.y;
+ this.z *= a.z;
+ this.w *= a.w;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int4 mul(Int4 a, Int4 b) {
+ Int4 result = new Int4();
+ result.x = a.x * b.x;
+ result.y = a.y * b.y;
+ result.z = a.z * b.z;
+ result.w = a.w * b.w;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(int value) {
+ x *= value;
+ y *= value;
+ z *= value;
+ w *= value;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int4 mul(Int4 a, int b) {
+ Int4 result = new Int4();
+ result.x = a.x * b;
+ result.y = a.y * b;
+ result.z = a.z * b;
+ result.w = a.w * b;
+
+ return result;
+ }
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ */
+ public void div(Int4 a) {
+ this.x /= a.x;
+ this.y /= a.y;
+ this.z /= a.z;
+ this.w /= a.w;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int4 div(Int4 a, Int4 b) {
+ Int4 result = new Int4();
+ result.x = a.x / b.x;
+ result.y = a.y / b.y;
+ result.z = a.z / b.z;
+ result.w = a.w / b.w;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(int value) {
+ x /= value;
+ y /= value;
+ z /= value;
+ w /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int4 div(Int4 a, int b) {
+ Int4 result = new Int4();
+ result.x = a.x / b;
+ result.y = a.y / b;
+ result.z = a.z / b;
+ result.w = a.w / b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ */
+ public void mod(Int4 a) {
+ this.x %= a.x;
+ this.y %= a.y;
+ this.z %= a.z;
+ this.w %= a.w;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int4 mod(Int4 a, Int4 b) {
+ Int4 result = new Int4();
+ result.x = a.x % b.x;
+ result.y = a.y % b.y;
+ result.z = a.z % b.z;
+ result.w = a.w % b.w;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param value
+ */
+ public void mod(int value) {
+ x %= value;
+ y %= value;
+ z %= value;
+ w %= value;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Int4 mod(Int4 a, int b) {
+ Int4 result = new Int4();
+ result.x = a.x % b;
+ result.y = a.y % b;
+ result.z = a.z % b;
+ result.w = a.w % b;
+
+ return result;
+ }
+
+ /** @hide
+ * get vector length
+ *
+ * @return
+ */
+ public int length() {
+ return 4;
+ }
+
+ /** @hide
+ * set vector negate
+ */
+ public void negate() {
+ this.x = -x;
+ this.y = -y;
+ this.z = -z;
+ this.w = -w;
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public int dotProduct(Int4 a) {
+ return (int)((x * a.x) + (y * a.y) + (z * a.z) + (w * a.w));
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static int dotProduct(Int4 a, Int4 b) {
+ return (int)((b.x * a.x) + (b.y * a.y) + (b.z * a.z) + (b.w * a.w));
+ }
+
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Int4 a, int factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ z += a.z * factor;
+ w += a.w * factor;
+ }
+
+ /** @hide
+ * set vector value by Int4
+ *
+ * @param a
+ */
+ public void set(Int4 a) {
+ this.x = a.x;
+ this.y = a.y;
+ this.z = a.z;
+ this.w = a.w;
+ }
+
+ /** @hide
+ * set the vector field value by Int
+ *
+ * @param a
+ * @param b
+ * @param c
+ * @param d
+ */
+ public void setValues(int a, int b, int c, int d) {
+ this.x = a;
+ this.y = b;
+ this.z = c;
+ this.w = d;
+ }
+
+ /** @hide
+ * return the element sum of vector
+ *
+ * @return
+ */
+ public int elementSum() {
+ return (int)(x + y + z + w);
+ }
+
+ /** @hide
+ * get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public int get(int i) {
+ switch (i) {
+ case 0:
+ return (int)(x);
+ case 1:
+ return (int)(y);
+ case 2:
+ return (int)(z);
+ case 3:
+ return (int)(w);
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, int value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ case 2:
+ z = value;
+ return;
+ case 3:
+ w = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, int value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ case 2:
+ z += value;
+ return;
+ case 3:
+ w += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * copy the vector to int array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(int[] data, int offset) {
+ data[offset] = (int)(x);
+ data[offset + 1] = (int)(y);
+ data[offset + 2] = (int)(z);
+ data[offset + 3] = (int)(w);
+ }
+}
diff --git a/graphics/java/android/renderscript/Long2.java b/graphics/java/android/renderscript/Long2.java
index bd8382d3fbb7..fabf2046a48c 100644
--- a/graphics/java/android/renderscript/Long2.java
+++ b/graphics/java/android/renderscript/Long2.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2013 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.
@@ -16,26 +16,425 @@
package android.renderscript;
-import java.lang.Math;
-import android.util.Log;
-
-
/**
- * Class for exposing the native RenderScript long2 type back to the Android system.
- **/
+ * Vector version of the basic long type.
+ * Provides two long fields packed.
+ */
public class Long2 {
+ public long x;
+ public long y;
+
public Long2() {
}
- public Long2(long initX, long initY) {
- x = initX;
- y = initY;
+ /** @hide */
+ public Long2(long i) {
+ this.x = this.y = i;
}
- public long x;
- public long y;
-}
+ public Long2(long x, long y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ /** @hide */
+ public Long2(Long2 source) {
+ this.x = source.x;
+ this.y = source.y;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ */
+ public void add(Long2 a) {
+ this.x += a.x;
+ this.y += a.y;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long2 add(Long2 a, Long2 b) {
+ Long2 result = new Long2();
+ result.x = a.x + b.x;
+ result.y = a.y + b.y;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(long value) {
+ x += value;
+ y += value;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long2 add(Long2 a, long b) {
+ Long2 result = new Long2();
+ result.x = a.x + b;
+ result.y = a.y + b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ */
+ public void sub(Long2 a) {
+ this.x -= a.x;
+ this.y -= a.y;
+ }
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long2 sub(Long2 a, Long2 b) {
+ Long2 result = new Long2();
+ result.x = a.x - b.x;
+ result.y = a.y - b.y;
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(long value) {
+ x -= value;
+ y -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long2 sub(Long2 a, long b) {
+ Long2 result = new Long2();
+ result.x = a.x - b;
+ result.y = a.y - b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ */
+ public void mul(Long2 a) {
+ this.x *= a.x;
+ this.y *= a.y;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long2 mul(Long2 a, Long2 b) {
+ Long2 result = new Long2();
+ result.x = a.x * b.x;
+ result.y = a.y * b.y;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(long value) {
+ x *= value;
+ y *= value;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long2 mul(Long2 a, long b) {
+ Long2 result = new Long2();
+ result.x = a.x * b;
+ result.y = a.y * b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ */
+ public void div(Long2 a) {
+ this.x /= a.x;
+ this.y /= a.y;
+ }
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long2 div(Long2 a, Long2 b) {
+ Long2 result = new Long2();
+ result.x = a.x / b.x;
+ result.y = a.y / b.y;
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(long value) {
+ x /= value;
+ y /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long2 div(Long2 a, long b) {
+ Long2 result = new Long2();
+ result.x = a.x / b;
+ result.y = a.y / b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ */
+ public void mod(Long2 a) {
+ this.x %= a.x;
+ this.y %= a.y;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long2 mod(Long2 a, Long2 b) {
+ Long2 result = new Long2();
+ result.x = a.x % b.x;
+ result.y = a.y % b.y;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param value
+ */
+ public void mod(long value) {
+ x %= value;
+ y %= value;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long2 mod(Long2 a, long b) {
+ Long2 result = new Long2();
+ result.x = a.x % b;
+ result.y = a.y % b;
+
+ return result;
+ }
+
+ /** @hide
+ * get vector length
+ *
+ * @return
+ */
+ public long length() {
+ return 2;
+ }
+
+ /** @hide
+ * set vector negate
+ */
+ public void negate() {
+ this.x = -x;
+ this.y = -y;
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public long dotProduct(Long2 a) {
+ return (long)((x * a.x) + (y * a.y));
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static long dotProduct(Long2 a, Long2 b) {
+ return (long)((b.x * a.x) + (b.y * a.y));
+ }
+
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Long2 a, long factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ }
+
+ /** @hide
+ * set vector value by Long2
+ *
+ * @param a
+ */
+ public void set(Long2 a) {
+ this.x = a.x;
+ this.y = a.y;
+ }
+
+ /** @hide
+ * set the vector field value by Long
+ *
+ * @param a
+ * @param b
+ */
+ public void setValues(long a, long b) {
+ this.x = a;
+ this.y = b;
+ }
+
+ /** @hide
+ * return the element sum of vector
+ *
+ * @return
+ */
+ public long elementSum() {
+ return (long)(x + y);
+ }
+
+ /** @hide
+ * get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public long get(int i) {
+ switch (i) {
+ case 0:
+ return (long)(x);
+ case 1:
+ return (long)(y);
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, long value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, long value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * copy the vector to long array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(long[] data, int offset) {
+ data[offset] = (long)(x);
+ data[offset + 1] = (long)(y);
+ }
+}
diff --git a/graphics/java/android/renderscript/Long3.java b/graphics/java/android/renderscript/Long3.java
index 3e949428820c..88ff855de3a4 100644
--- a/graphics/java/android/renderscript/Long3.java
+++ b/graphics/java/android/renderscript/Long3.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2013 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.
@@ -16,28 +16,462 @@
package android.renderscript;
-import java.lang.Math;
-import android.util.Log;
-
-
/**
- * Class for exposing the native RenderScript long3 type back to the Android system.
- **/
+ * Vector version of the basic long type.
+ * Provides three long fields packed.
+ */
public class Long3 {
+ public long x;
+ public long y;
+ public long z;
+
public Long3() {
}
+
+ /** @hide */
+ public Long3(long i) {
+ this.x = this.y = this.z = i;
+ }
- public Long3(long initX, long initY, long initZ) {
- x = initX;
- y = initY;
- z = initZ;
+ public Long3(long x, long y, long z) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
}
- public long x;
- public long y;
- public long z;
-}
+ /** @hide */
+ public Long3(Long3 source) {
+ this.x = source.x;
+ this.y = source.y;
+ this.z = source.z;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ */
+ public void add(Long3 a) {
+ this.x += a.x;
+ this.y += a.y;
+ this.z += a.z;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long3 add(Long3 a, Long3 b) {
+ Long3 result = new Long3();
+ result.x = a.x + b.x;
+ result.y = a.y + b.y;
+ result.z = a.z + b.z;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(long value) {
+ x += value;
+ y += value;
+ z += value;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long3 add(Long3 a, long b) {
+ Long3 result = new Long3();
+ result.x = a.x + b;
+ result.y = a.y + b;
+ result.z = a.z + b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ */
+ public void sub(Long3 a) {
+ this.x -= a.x;
+ this.y -= a.y;
+ this.z -= a.z;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long3 sub(Long3 a, Long3 b) {
+ Long3 result = new Long3();
+ result.x = a.x - b.x;
+ result.y = a.y - b.y;
+ result.z = a.z - b.z;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(long value) {
+ x -= value;
+ y -= value;
+ z -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long3 sub(Long3 a, long b) {
+ Long3 result = new Long3();
+ result.x = a.x - b;
+ result.y = a.y - b;
+ result.z = a.z - b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ */
+ public void mul(Long3 a) {
+ this.x *= a.x;
+ this.y *= a.y;
+ this.z *= a.z;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long3 mul(Long3 a, Long3 b) {
+ Long3 result = new Long3();
+ result.x = a.x * b.x;
+ result.y = a.y * b.y;
+ result.z = a.z * b.z;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(long value) {
+ x *= value;
+ y *= value;
+ z *= value;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long3 mul(Long3 a, long b) {
+ Long3 result = new Long3();
+ result.x = a.x * b;
+ result.y = a.y * b;
+ result.z = a.z * b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ */
+ public void div(Long3 a) {
+ this.x /= a.x;
+ this.y /= a.y;
+ this.z /= a.z;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long3 div(Long3 a, Long3 b) {
+ Long3 result = new Long3();
+ result.x = a.x / b.x;
+ result.y = a.y / b.y;
+ result.z = a.z / b.z;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(long value) {
+ x /= value;
+ y /= value;
+ z /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long3 div(Long3 a, long b) {
+ Long3 result = new Long3();
+ result.x = a.x / b;
+ result.y = a.y / b;
+ result.z = a.z / b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ */
+ public void mod(Long3 a) {
+ this.x %= a.x;
+ this.y %= a.y;
+ this.z %= a.z;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long3 mod(Long3 a, Long3 b) {
+ Long3 result = new Long3();
+ result.x = a.x % b.x;
+ result.y = a.y % b.y;
+ result.z = a.z % b.z;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param value
+ */
+ public void mod(long value) {
+ x %= value;
+ y %= value;
+ z %= value;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long3 mod(Long3 a, long b) {
+ Long3 result = new Long3();
+ result.x = a.x % b;
+ result.y = a.y % b;
+ result.z = a.z % b;
+
+ return result;
+ }
+ /** @hide
+ * get vector length
+ *
+ * @return
+ */
+ public long length() {
+ return 3;
+ }
+
+ /** @hide
+ * set vector negate
+ */
+ public void negate() {
+ this.x = -x;
+ this.y = -y;
+ this.z = -z;
+ }
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public long dotProduct(Long3 a) {
+ return (long)((x * a.x) + (y * a.y) + (z * a.z));
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static long dotProduct(Long3 a, Long3 b) {
+ return (long)((b.x * a.x) + (b.y * a.y) + (b.z * a.z));
+ }
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Long3 a, long factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ z += a.z * factor;
+ }
+
+ /** @hide
+ * set vector value by Long3
+ *
+ * @param a
+ */
+ public void set(Long3 a) {
+ this.x = a.x;
+ this.y = a.y;
+ this.z = a.z;
+ }
+
+ /** @hide
+ * set the vector field value by Long
+ *
+ * @param a
+ * @param b
+ * @param c
+ */
+ public void setValues(long a, long b, long c) {
+ this.x = a;
+ this.y = b;
+ this.z = c;
+ }
+ /** @hide
+ * return the element sum of vector
+ *
+ * @return
+ */
+ public long elementSum() {
+ return (long)(x + y + z);
+ }
+
+ /** @hide
+ * get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public long get(int i) {
+ switch (i) {
+ case 0:
+ return (long)(x);
+ case 1:
+ return (long)(y);
+ case 2:
+ return (long)(z);
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, long value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ case 2:
+ z = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, long value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ case 2:
+ z += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * copy the vector to long array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(long[] data, int offset) {
+ data[offset] = (long)(x);
+ data[offset + 1] = (long)(y);
+ data[offset + 2] = (long)(z);
+ }
+}
diff --git a/graphics/java/android/renderscript/Long4.java b/graphics/java/android/renderscript/Long4.java
index 00fb7e6e4e28..757b91049596 100644
--- a/graphics/java/android/renderscript/Long4.java
+++ b/graphics/java/android/renderscript/Long4.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2013 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.
@@ -16,29 +16,499 @@
package android.renderscript;
-import java.lang.Math;
-import android.util.Log;
-
-
/**
- * Class for exposing the native RenderScript long4 type back to the Android system.
- **/
+ * Vector version of the basic long type.
+ * Provides four long fields packed.
+ */
public class Long4 {
+ public long x;
+ public long y;
+ public long z;
+ public long w;
+
public Long4() {
}
- public Long4(long initX, long initY, long initZ, long initW) {
- x = initX;
- y = initY;
- z = initZ;
- w = initW;
+ /** @hide */
+ public Long4(long i) {
+ this.x = this.y = this.z = this.w = i;
}
- public long x;
- public long y;
- public long z;
- public long w;
-}
+ public Long4(long x, long y, long z, long w) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ this.w = w;
+ }
+
+ /** @hide */
+ public Long4(Long4 source) {
+ this.x = source.x;
+ this.y = source.y;
+ this.z = source.z;
+ this.w = source.w;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ */
+ public void add(Long4 a) {
+ this.x += a.x;
+ this.y += a.y;
+ this.z += a.z;
+ this.w += a.w;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long4 add(Long4 a, Long4 b) {
+ Long4 result = new Long4();
+ result.x = a.x + b.x;
+ result.y = a.y + b.y;
+ result.z = a.z + b.z;
+ result.w = a.w + b.w;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(long value) {
+ x += value;
+ y += value;
+ z += value;
+ w += value;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long4 add(Long4 a, long b) {
+ Long4 result = new Long4();
+ result.x = a.x + b;
+ result.y = a.y + b;
+ result.z = a.z + b;
+ result.w = a.w + b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ */
+ public void sub(Long4 a) {
+ this.x -= a.x;
+ this.y -= a.y;
+ this.z -= a.z;
+ this.w -= a.w;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long4 sub(Long4 a, Long4 b) {
+ Long4 result = new Long4();
+ result.x = a.x - b.x;
+ result.y = a.y - b.y;
+ result.z = a.z - b.z;
+ result.w = a.w - b.w;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(long value) {
+ x -= value;
+ y -= value;
+ z -= value;
+ w -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long4 sub(Long4 a, long b) {
+ Long4 result = new Long4();
+ result.x = a.x - b;
+ result.y = a.y - b;
+ result.z = a.z - b;
+ result.w = a.w - b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ */
+ public void mul(Long4 a) {
+ this.x *= a.x;
+ this.y *= a.y;
+ this.z *= a.z;
+ this.w *= a.w;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long4 mul(Long4 a, Long4 b) {
+ Long4 result = new Long4();
+ result.x = a.x * b.x;
+ result.y = a.y * b.y;
+ result.z = a.z * b.z;
+ result.w = a.w * b.w;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(long value) {
+ x *= value;
+ y *= value;
+ z *= value;
+ w *= value;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long4 mul(Long4 a, long b) {
+ Long4 result = new Long4();
+ result.x = a.x * b;
+ result.y = a.y * b;
+ result.z = a.z * b;
+ result.w = a.w * b;
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ */
+ public void div(Long4 a) {
+ this.x /= a.x;
+ this.y /= a.y;
+ this.z /= a.z;
+ this.w /= a.w;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long4 div(Long4 a, Long4 b) {
+ Long4 result = new Long4();
+ result.x = a.x / b.x;
+ result.y = a.y / b.y;
+ result.z = a.z / b.z;
+ result.w = a.w / b.w;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(long value) {
+ x /= value;
+ y /= value;
+ z /= value;
+ w /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long4 div(Long4 a, long b) {
+ Long4 result = new Long4();
+ result.x = a.x / b;
+ result.y = a.y / b;
+ result.z = a.z / b;
+ result.w = a.w / b;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ */
+ public void mod(Long4 a) {
+ this.x %= a.x;
+ this.y %= a.y;
+ this.z %= a.z;
+ this.w %= a.w;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long4 mod(Long4 a, Long4 b) {
+ Long4 result = new Long4();
+ result.x = a.x % b.x;
+ result.y = a.y % b.y;
+ result.z = a.z % b.z;
+ result.w = a.w % b.w;
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param value
+ */
+ public void mod(long value) {
+ x %= value;
+ y %= value;
+ z %= value;
+ w %= value;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Long4 mod(Long4 a, long b) {
+ Long4 result = new Long4();
+ result.x = a.x % b;
+ result.y = a.y % b;
+ result.z = a.z % b;
+ result.w = a.w % b;
+
+ return result;
+ }
+
+ /** @hide
+ * get vector length
+ *
+ * @return
+ */
+ public long length() {
+ return 4;
+ }
+
+ /** @hide
+ * set vector negate
+ */
+ public void negate() {
+ this.x = -x;
+ this.y = -y;
+ this.z = -z;
+ this.w = -w;
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public long dotProduct(Long4 a) {
+ return (long)((x * a.x) + (y * a.y) + (z * a.z) + (w * a.w));
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static long dotProduct(Long4 a, Long4 b) {
+ return (long)((b.x * a.x) + (b.y * a.y) + (b.z * a.z) + (b.w * a.w));
+ }
+
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Long4 a, long factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ z += a.z * factor;
+ w += a.w * factor;
+ }
+
+ /** @hide
+ * set vector value by Long4
+ *
+ * @param a
+ */
+ public void set(Long4 a) {
+ this.x = a.x;
+ this.y = a.y;
+ this.z = a.z;
+ this.w = a.w;
+ }
+ /** @hide
+ * set the vector field value by Long
+ *
+ * @param a
+ * @param b
+ * @param c
+ * @param d
+ */
+ public void setValues(long a, long b, long c, long d) {
+ this.x = a;
+ this.y = b;
+ this.z = c;
+ this.w = d;
+ }
+
+ /** @hide
+ * return the element sum of vector
+ *
+ * @return
+ */
+ public long elementSum() {
+ return (long)(x + y + z + w);
+ }
+ /** @hide
+ * get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public long get(int i) {
+ switch (i) {
+ case 0:
+ return (long)(x);
+ case 1:
+ return (long)(y);
+ case 2:
+ return (long)(z);
+ case 3:
+ return (long)(w);
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, long value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ case 2:
+ z = value;
+ return;
+ case 3:
+ w = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, long value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ case 2:
+ z += value;
+ return;
+ case 3:
+ w += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * copy the vector to long array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(Long[] data, int offset) {
+ data[offset] = (long)(x);
+ data[offset + 1] = (long)(y);
+ data[offset + 2] = (long)(z);
+ data[offset + 3] = (long)(w);
+ }
+}
diff --git a/graphics/java/android/renderscript/Short2.java b/graphics/java/android/renderscript/Short2.java
index 7c6027f398a4..070d608dc181 100644
--- a/graphics/java/android/renderscript/Short2.java
+++ b/graphics/java/android/renderscript/Short2.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2013 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.
@@ -16,27 +16,425 @@
package android.renderscript;
-import java.lang.Math;
-import android.util.Log;
-
-
-/**
- * Class for exposing the native RenderScript Short2 type back to the Android system.
- *
- **/
+/**
+ * Vector version of the basic short type.
+ * Provides two short fields packed.
+ */
public class Short2 {
+ public short x;
+ public short y;
+
public Short2() {
}
- public Short2(short initX, short initY) {
- x = initX;
- y = initY;
+ /** @hide */
+ public Short2(short i) {
+ this.x = this.y = i;
}
- public short x;
- public short y;
-}
+ public Short2(short x, short y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ /** @hide */
+ public Short2(Short2 source) {
+ this.x = source.x;
+ this.y = source.y;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ */
+ public void add(Short2 a) {
+ this.x += a.x;
+ this.y += a.y;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short2 add(Short2 a, Short2 b) {
+ Short2 result = new Short2();
+ result.x = (short)(a.x + b.x);
+ result.y = (short)(a.y + b.y);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(short value) {
+ x += value;
+ y += value;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short2 add(Short2 a, short b) {
+ Short2 result = new Short2();
+ result.x = (short)(a.x + b);
+ result.y = (short)(a.y + b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ */
+ public void sub(Short2 a) {
+ this.x -= a.x;
+ this.y -= a.y;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short2 sub(Short2 a, Short2 b) {
+ Short2 result = new Short2();
+ result.x = (short)(a.x - b.x);
+ result.y = (short)(a.y - b.y);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(short value) {
+ x -= value;
+ y -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short2 sub(Short2 a, short b) {
+ Short2 result = new Short2();
+ result.x = (short)(a.x - b);
+ result.y = (short)(a.y - b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ */
+ public void mul(Short2 a) {
+ this.x *= a.x;
+ this.y *= a.y;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short2 mul(Short2 a, Short2 b) {
+ Short2 result = new Short2();
+ result.x = (short)(a.x * b.x);
+ result.y = (short)(a.y * b.y);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(short value) {
+ x *= value;
+ y *= value;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short2 mul(Short2 a, short b) {
+ Short2 result = new Short2();
+ result.x = (short)(a.x * b);
+ result.y = (short)(a.y * b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ */
+ public void div(Short2 a) {
+ this.x /= a.x;
+ this.y /= a.y;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short2 div(Short2 a, Short2 b) {
+ Short2 result = new Short2();
+ result.x = (short)(a.x / b.x);
+ result.y = (short)(a.y / b.y);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(short value) {
+ x /= value;
+ y /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short2 div(Short2 a, short b) {
+ Short2 result = new Short2();
+ result.x = (short)(a.x / b);
+ result.y = (short)(a.y / b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ */
+ public void mod(Short2 a) {
+ this.x %= a.x;
+ this.y %= a.y;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short2 mod(Short2 a, Short2 b) {
+ Short2 result = new Short2();
+ result.x = (short)(a.x % b.x);
+ result.y = (short)(a.y % b.y);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param value
+ */
+ public void mod(short value) {
+ x %= value;
+ y %= value;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short2 mod(Short2 a, short b) {
+ Short2 result = new Short2();
+ result.x = (short)(a.x % b);
+ result.y = (short)(a.y % b);
+
+ return result;
+ }
+ /** @hide
+ * get vector length
+ *
+ * @return
+ */
+ public short length() {
+ return 2;
+ }
+
+ /** @hide
+ * set vector negate
+ */
+ public void negate() {
+ this.x = (short)(-x);
+ this.y = (short)(-y);
+ }
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public short dotProduct(Short2 a) {
+ return (short)((x * a.x) + (y * a.y));
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static short dotProduct(Short2 a, Short2 b) {
+ return (short)((b.x * a.x) + (b.y * a.y));
+ }
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Short2 a, short factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ }
+
+ /** @hide
+ * set vector value by Short2
+ *
+ * @param a
+ */
+ public void set(Short2 a) {
+ this.x = a.x;
+ this.y = a.y;
+ }
+
+ /** @hide
+ * set the vector field value by Short
+ *
+ * @param a
+ * @param b
+ */
+ public void setValues(short a, short b) {
+ this.x = a;
+ this.y = b;
+ }
+ /** @hide
+ * return the element sum of vector
+ *
+ * @return
+ */
+ public short elementSum() {
+ return (short)(x + y);
+ }
+
+ /** @hide
+ * get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public short get(int i) {
+ switch (i) {
+ case 0:
+ return (short)(x);
+ case 1:
+ return (short)(y);
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, short value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, short value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * copy the vector to short array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(short[] data, int offset) {
+ data[offset] = (short)(x);
+ data[offset + 1] = (short)(y);
+ }
+}
diff --git a/graphics/java/android/renderscript/Short3.java b/graphics/java/android/renderscript/Short3.java
index 49de05ee58f3..661db0a89f3d 100644
--- a/graphics/java/android/renderscript/Short3.java
+++ b/graphics/java/android/renderscript/Short3.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2013 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.
@@ -16,29 +16,462 @@
package android.renderscript;
-import java.lang.Math;
-import android.util.Log;
-
-
/**
- * Class for exposing the native RenderScript short3 type back to the Android system.
- *
- **/
+ * Vector version of the basic short type.
+ * Provides three short fields packed.
+ */
public class Short3 {
+ public short x;
+ public short y;
+ public short z;
+
public Short3() {
}
- public Short3(short initX, short initY, short initZ) {
- x = initX;
- y = initY;
- z = initZ;
+ /** @hide */
+ public Short3(short i) {
+ this.x = this.y = this.z = i;
}
- public short x;
- public short y;
- public short z;
-}
+ public Short3(short x, short y, short z) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ }
+
+ /** @hide */
+ public Short3(Short3 source) {
+ this.x = source.x;
+ this.y = source.y;
+ this.z = source.z;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ */
+ public void add(Short3 a) {
+ this.x += a.x;
+ this.y += a.y;
+ this.z += a.z;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short3 add(Short3 a, Short3 b) {
+ Short3 result = new Short3();
+ result.x = (short)(a.x + b.x);
+ result.y = (short)(a.y + b.y);
+ result.z = (short)(a.z + b.z);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(short value) {
+ x += value;
+ y += value;
+ z += value;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short3 add(Short3 a, short b) {
+ Short3 result = new Short3();
+ result.x = (short)(a.x + b);
+ result.y = (short)(a.y + b);
+ result.z = (short)(a.z + b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ */
+ public void sub(Short3 a) {
+ this.x -= a.x;
+ this.y -= a.y;
+ this.z -= a.z;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short3 sub(Short3 a, Short3 b) {
+ Short3 result = new Short3();
+ result.x = (short)(a.x - b.x);
+ result.y = (short)(a.y - b.y);
+ result.z = (short)(a.z - b.z);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(short value) {
+ x -= value;
+ y -= value;
+ z -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short3 sub(Short3 a, short b) {
+ Short3 result = new Short3();
+ result.x = (short)(a.x - b);
+ result.y = (short)(a.y - b);
+ result.z = (short)(a.z - b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ */
+ public void mul(Short3 a) {
+ this.x *= a.x;
+ this.y *= a.y;
+ this.z *= a.z;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short3 mul(Short3 a, Short3 b) {
+ Short3 result = new Short3();
+ result.x = (short)(a.x * b.x);
+ result.y = (short)(a.y * b.y);
+ result.z = (short)(a.z * b.z);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(short value) {
+ x *= value;
+ y *= value;
+ z *= value;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short3 mul(Short3 a, short b) {
+ Short3 result = new Short3();
+ result.x = (short)(a.x * b);
+ result.y = (short)(a.y * b);
+ result.z = (short)(a.z * b);
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ */
+ public void div(Short3 a) {
+ this.x /= a.x;
+ this.y /= a.y;
+ this.z /= a.z;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short3 div(Short3 a, Short3 b) {
+ Short3 result = new Short3();
+ result.x = (short)(a.x / b.x);
+ result.y = (short)(a.y / b.y);
+ result.z = (short)(a.z / b.z);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(short value) {
+ x /= value;
+ y /= value;
+ z /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short3 div(Short3 a, short b) {
+ Short3 result = new Short3();
+ result.x = (short)(a.x / b);
+ result.y = (short)(a.y / b);
+ result.z = (short)(a.z / b);
+
+ return result;
+ }
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ */
+ public void mod(Short3 a) {
+ this.x %= a.x;
+ this.y %= a.y;
+ this.z %= a.z;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short3 mod(Short3 a, Short3 b) {
+ Short3 result = new Short3();
+ result.x = (short)(a.x % b.x);
+ result.y = (short)(a.y % b.y);
+ result.z = (short)(a.z % b.z);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param value
+ */
+ public void mod(short value) {
+ x %= value;
+ y %= value;
+ z %= value;
+ }
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short3 mod(Short3 a, short b) {
+ Short3 result = new Short3();
+ result.x = (short)(a.x % b);
+ result.y = (short)(a.y % b);
+ result.z = (short)(a.z % b);
+ return result;
+ }
+
+ /** @hide
+ * get vector length
+ *
+ * @return
+ */
+ public short length() {
+ return 3;
+ }
+
+ /** @hide
+ * set vector negate
+ */
+ public void negate() {
+ this.x = (short)(-x);
+ this.y = (short)(-y);
+ this.z = (short)(-z);
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public short dotProduct(Short3 a) {
+ return (short)((x * a.x) + (y * a.y) + (z * a.z));
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static short dotProduct(Short3 a, Short3 b) {
+ return (short)((b.x * a.x) + (b.y * a.y) + (b.z * a.z));
+ }
+
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Short3 a, short factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ z += a.z * factor;
+ }
+
+ /** @hide
+ * set vector value by Short3
+ *
+ * @param a
+ */
+ public void set(Short3 a) {
+ this.x = a.x;
+ this.y = a.y;
+ this.z = a.z;
+ }
+
+ /** @hide
+ * set the vector field value by Short
+ *
+ * @param a
+ * @param b
+ * @param c
+ */
+ public void setValues(short a, short b, short c) {
+ this.x = a;
+ this.y = b;
+ this.z = c;
+ }
+
+ /** @hide
+ * return the element sum of vector
+ *
+ * @return
+ */
+ public short elementSum() {
+ return (short)(x + y + z);
+ }
+
+ /** @hide
+ * get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public short get(int i) {
+ switch (i) {
+ case 0:
+ return (short)(x);
+ case 1:
+ return (short)(y);
+ case 2:
+ return (short)(z);
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, short value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ case 2:
+ z = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, short value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ case 2:
+ z += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * copy the vector to short array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(short[] data, int offset) {
+ data[offset] = (short)(x);
+ data[offset + 1] = (short)(y);
+ data[offset + 2] = (short)(z);
+ }
+}
diff --git a/graphics/java/android/renderscript/Short4.java b/graphics/java/android/renderscript/Short4.java
index a7807a4f9d95..a2d74f2ccf94 100644
--- a/graphics/java/android/renderscript/Short4.java
+++ b/graphics/java/android/renderscript/Short4.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2013 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.
@@ -16,30 +16,499 @@
package android.renderscript;
-import java.lang.Math;
-import android.util.Log;
-
-
/**
- * Class for exposing the native RenderScript short4 type back to the Android system.
- *
- **/
+ * Vector version of the basic short type.
+ * Provides four short fields packed.
+ */
public class Short4 {
+ public short x;
+ public short y;
+ public short z;
+ public short w;
+
public Short4() {
}
- public Short4(short initX, short initY, short initZ, short initW) {
- x = initX;
- y = initY;
- z = initZ;
- w = initW;
+ /** @hide */
+ public Short4(short i) {
+ this.x = this.y = this.z = this.w = i;
}
- public short x;
- public short y;
- public short z;
- public short w;
-}
+ public Short4(short x, short y, short z, short w) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ this.w = w;
+ }
+ /** @hide */
+ public Short4(Short4 source) {
+ this.x = source.x;
+ this.y = source.y;
+ this.z = source.z;
+ this.w = source.w;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ */
+ public void add(Short4 a) {
+ this.x += a.x;
+ this.y += a.y;
+ this.z += a.z;
+ this.w += a.w;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short4 add(Short4 a, Short4 b) {
+ Short4 result = new Short4();
+ result.x = (short)(a.x + b.x);
+ result.y = (short)(a.y + b.y);
+ result.z = (short)(a.z + b.z);
+ result.w = (short)(a.w + b.w);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector add
+ *
+ * @param value
+ */
+ public void add(short value) {
+ x += value;
+ y += value;
+ z += value;
+ w += value;
+ }
+ /** @hide
+ * Vector add
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short4 add(Short4 a, short b) {
+ Short4 result = new Short4();
+ result.x = (short)(a.x + b);
+ result.y = (short)(a.y + b);
+ result.z = (short)(a.z + b);
+ result.w = (short)(a.w + b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ */
+ public void sub(Short4 a) {
+ this.x -= a.x;
+ this.y -= a.y;
+ this.z -= a.z;
+ this.w -= a.w;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short4 sub(Short4 a, Short4 b) {
+ Short4 result = new Short4();
+ result.x = (short)(a.x - b.x);
+ result.y = (short)(a.y - b.y);
+ result.z = (short)(a.z - b.z);
+ result.w = (short)(a.w - b.w);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param value
+ */
+ public void sub(short value) {
+ x -= value;
+ y -= value;
+ z -= value;
+ w -= value;
+ }
+
+ /** @hide
+ * Vector subtraction
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short4 sub(Short4 a, short b) {
+ Short4 result = new Short4();
+ result.x = (short)(a.x - b);
+ result.y = (short)(a.y - b);
+ result.z = (short)(a.z - b);
+ result.w = (short)(a.w - b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ */
+ public void mul(Short4 a) {
+ this.x *= a.x;
+ this.y *= a.y;
+ this.z *= a.z;
+ this.w *= a.w;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short4 mul(Short4 a, Short4 b) {
+ Short4 result = new Short4();
+ result.x = (short)(a.x * b.x);
+ result.y = (short)(a.y * b.y);
+ result.z = (short)(a.z * b.z);
+ result.w = (short)(a.w * b.w);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param value
+ */
+ public void mul(short value) {
+ x *= value;
+ y *= value;
+ z *= value;
+ w *= value;
+ }
+
+ /** @hide
+ * Vector multiplication
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short4 mul(Short4 a, short b) {
+ Short4 result = new Short4();
+ result.x = (short)(a.x * b);
+ result.y = (short)(a.y * b);
+ result.z = (short)(a.z * b);
+ result.w = (short)(a.w * b);
+
+ return result;
+ }
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ */
+ public void div(Short4 a) {
+ this.x /= a.x;
+ this.y /= a.y;
+ this.z /= a.z;
+ this.w /= a.w;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short4 div(Short4 a, Short4 b) {
+ Short4 result = new Short4();
+ result.x = (short)(a.x / b.x);
+ result.y = (short)(a.y / b.y);
+ result.z = (short)(a.z / b.z);
+ result.w = (short)(a.w / b.w);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param value
+ */
+ public void div(short value) {
+ x /= value;
+ y /= value;
+ z /= value;
+ w /= value;
+ }
+
+ /** @hide
+ * Vector division
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short4 div(Short4 a, short b) {
+ Short4 result = new Short4();
+ result.x = (short)(a.x / b);
+ result.y = (short)(a.y / b);
+ result.z = (short)(a.z / b);
+ result.w = (short)(a.w / b);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ */
+ public void mod(Short4 a) {
+ this.x %= a.x;
+ this.y %= a.y;
+ this.z %= a.z;
+ this.w %= a.w;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short4 mod(Short4 a, Short4 b) {
+ Short4 result = new Short4();
+ result.x = (short)(a.x % b.x);
+ result.y = (short)(a.y % b.y);
+ result.z = (short)(a.z % b.z);
+ result.w = (short)(a.w % b.w);
+
+ return result;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param value
+ */
+ public void mod(short value) {
+ x %= value;
+ y %= value;
+ z %= value;
+ w %= value;
+ }
+
+ /** @hide
+ * Vector Modulo
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static Short4 mod(Short4 a, short b) {
+ Short4 result = new Short4();
+ result.x = (short)(a.x % b);
+ result.y = (short)(a.y % b);
+ result.z = (short)(a.z % b);
+ result.w = (short)(a.w % b);
+
+ return result;
+ }
+
+ /** @hide
+ * get vector length
+ *
+ * @return
+ */
+ public short length() {
+ return 4;
+ }
+
+ /** @hide
+ * set vector negate
+ */
+ public void negate() {
+ this.x = (short)(-x);
+ this.y = (short)(-y);
+ this.z = (short)(-z);
+ this.w = (short)(-w);
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @return
+ */
+ public short dotProduct(Short4 a) {
+ return (short)((x * a.x) + (y * a.y) + (z * a.z) + (w * a.w));
+ }
+
+ /** @hide
+ * Vector dot Product
+ *
+ * @param a
+ * @param b
+ * @return
+ */
+ public static short dotProduct(Short4 a, Short4 b) {
+ return (short)((b.x * a.x) + (b.y * a.y) + (b.z * a.z) + (b.w * a.w));
+ }
+
+ /** @hide
+ * Vector add Multiple
+ *
+ * @param a
+ * @param factor
+ */
+ public void addMultiple(Short4 a, short factor) {
+ x += a.x * factor;
+ y += a.y * factor;
+ z += a.z * factor;
+ w += a.w * factor;
+ }
+
+ /** @hide
+ * set vector value by Short4
+ *
+ * @param a
+ */
+ public void set(Short4 a) {
+ this.x = a.x;
+ this.y = a.y;
+ this.z = a.z;
+ this.w = a.w;
+ }
+
+ /** @hide
+ * set the vector field value by Short
+ *
+ * @param a
+ * @param b
+ * @param c
+ * @param d
+ */
+ public void setValues(short a, short b, short c, short d) {
+ this.x = a;
+ this.y = b;
+ this.z = c;
+ this.w = d;
+ }
+
+ /** @hide
+ * return the element sum of vector
+ *
+ * @return
+ */
+ public short elementSum() {
+ return (short)(x + y + z + w);
+ }
+
+ /** @hide
+ * get the vector field value by index
+ *
+ * @param i
+ * @return
+ */
+ public short get(int i) {
+ switch (i) {
+ case 0:
+ return (short)(x);
+ case 1:
+ return (short)(y);
+ case 2:
+ return (short)(z);
+ case 3:
+ return (short)(w);
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * set the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void setAt(int i, short value) {
+ switch (i) {
+ case 0:
+ x = value;
+ return;
+ case 1:
+ y = value;
+ return;
+ case 2:
+ z = value;
+ return;
+ case 3:
+ w = value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * add the vector field value by index
+ *
+ * @param i
+ * @param value
+ */
+ public void addAt(int i, short value) {
+ switch (i) {
+ case 0:
+ x += value;
+ return;
+ case 1:
+ y += value;
+ return;
+ case 2:
+ z += value;
+ return;
+ case 3:
+ w += value;
+ return;
+ default:
+ throw new IndexOutOfBoundsException("Index: i");
+ }
+ }
+
+ /** @hide
+ * copy the vector to short array
+ *
+ * @param data
+ * @param offset
+ */
+ public void copyTo(short[] data, int offset) {
+ data[offset] = (short)(x);
+ data[offset + 1] = (short)(y);
+ data[offset + 2] = (short)(z);
+ data[offset + 3] = (short)(w);
+ }
+}
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
index cbc4e5a96a28..afba1a66571c 100644
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ b/graphics/jni/android_renderscript_RenderScript.cpp
@@ -116,7 +116,7 @@ static void _nInit(JNIEnv *_env, jclass _this)
gContextId = _env->GetFieldID(_this, "mContext", "I");
jclass bitmapClass = _env->FindClass("android/graphics/Bitmap");
- gNativeBitmapID = _env->GetFieldID(bitmapClass, "mNativeBitmap", "I");
+ gNativeBitmapID = _env->GetFieldID(bitmapClass, "mNativeBitmap", "J");
}
// ---------------------------------------------------------------------------
@@ -522,7 +522,7 @@ static int
nAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mip, jobject jbitmap, jint usage)
{
SkBitmap const * nativeBitmap =
- (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID);
+ (SkBitmap const *)_env->GetLongField(jbitmap, gNativeBitmapID);
const SkBitmap& bitmap(*nativeBitmap);
bitmap.lockPixels();
@@ -538,7 +538,7 @@ static int
nAllocationCreateBitmapBackedAllocation(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mip, jobject jbitmap, jint usage)
{
SkBitmap const * nativeBitmap =
- (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID);
+ (SkBitmap const *)_env->GetLongField(jbitmap, gNativeBitmapID);
const SkBitmap& bitmap(*nativeBitmap);
bitmap.lockPixels();
@@ -554,7 +554,7 @@ static int
nAllocationCubeCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint type, jint mip, jobject jbitmap, jint usage)
{
SkBitmap const * nativeBitmap =
- (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID);
+ (SkBitmap const *)_env->GetLongField(jbitmap, gNativeBitmapID);
const SkBitmap& bitmap(*nativeBitmap);
bitmap.lockPixels();
@@ -570,7 +570,7 @@ static void
nAllocationCopyFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jobject jbitmap)
{
SkBitmap const * nativeBitmap =
- (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID);
+ (SkBitmap const *)_env->GetLongField(jbitmap, gNativeBitmapID);
const SkBitmap& bitmap(*nativeBitmap);
int w = bitmap.width();
int h = bitmap.height();
@@ -587,7 +587,7 @@ static void
nAllocationCopyToBitmap(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jobject jbitmap)
{
SkBitmap const * nativeBitmap =
- (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID);
+ (SkBitmap const *)_env->GetLongField(jbitmap, gNativeBitmapID);
const SkBitmap& bitmap(*nativeBitmap);
bitmap.lockPixels();
diff --git a/include/androidfw/AssetManager.h b/include/androidfw/AssetManager.h
index d95b45e98554..a01095782601 100644
--- a/include/androidfw/AssetManager.h
+++ b/include/androidfw/AssetManager.h
@@ -92,7 +92,7 @@ public:
* then on success, *cookie is set to the value corresponding to the
* newly-added asset source.
*/
- bool addAssetPath(const String8& path, void** cookie);
+ bool addAssetPath(const String8& path, int32_t* cookie);
/*
* Convenience for adding the standard system assets. Uses the
@@ -103,17 +103,17 @@ public:
/*
* Iterate over the asset paths in this manager. (Previously
* added via addAssetPath() and addDefaultAssets().) On first call,
- * 'cookie' must be NULL, resulting in the first cookie being returned.
- * Each next cookie will be returned there-after, until NULL indicating
+ * 'cookie' must be 0, resulting in the first cookie being returned.
+ * Each next cookie will be returned there-after, until -1 indicating
* the end has been reached.
*/
- void* nextAssetPath(void* cookie) const;
+ int32_t nextAssetPath(const int32_t cookie) const;
/*
* Return an asset path in the manager. 'which' must be between 0 and
* countAssetPaths().
*/
- String8 getAssetPath(void* cookie) const;
+ String8 getAssetPath(const int32_t cookie) const;
/*
* Set the current locale and vendor. The locale can change during
@@ -159,7 +159,7 @@ public:
* Explicit non-asset file. The file explicitly named by the cookie (the
* resource set to look in) and fileName will be opened and returned.
*/
- Asset* openNonAsset(void* cookie, const char* fileName, AccessMode mode);
+ Asset* openNonAsset(const int32_t cookie, const char* fileName, AccessMode mode);
/*
* Open a directory within the asset hierarchy.
@@ -183,7 +183,7 @@ public:
*
* To open the top-level directory, pass in "".
*/
- AssetDir* openNonAssetDir(void* cookie, const char* dirName);
+ AssetDir* openNonAssetDir(const int32_t cookie, const char* dirName);
/*
* Get the type of a file in the asset hierarchy. They will either
diff --git a/include/androidfw/ResourceTypes.h b/include/androidfw/ResourceTypes.h
index 97afa59bd7cd..5151b06aec5b 100644
--- a/include/androidfw/ResourceTypes.h
+++ b/include/androidfw/ResourceTypes.h
@@ -1020,7 +1020,7 @@ struct ResTable_config
// attrs_manifest.xml.
enum {
CONFIG_MCC = ACONFIGURATION_MCC,
- CONFIG_MNC = ACONFIGURATION_MCC,
+ CONFIG_MNC = ACONFIGURATION_MNC,
CONFIG_LOCALE = ACONFIGURATION_LOCALE,
CONFIG_TOUCHSCREEN = ACONFIGURATION_TOUCHSCREEN,
CONFIG_KEYBOARD = ACONFIGURATION_KEYBOARD,
diff --git a/include/androidfw/ZipFileRO.h b/include/androidfw/ZipFileRO.h
index 547e36a09864..ad5be1232e67 100644
--- a/include/androidfw/ZipFileRO.h
+++ b/include/androidfw/ZipFileRO.h
@@ -40,6 +40,8 @@
#include <unistd.h>
#include <time.h>
+typedef void* ZipArchiveHandle;
+
namespace android {
/*
@@ -51,18 +53,13 @@ typedef void* ZipEntryRO;
/*
* Open a Zip archive for reading.
*
- * We want "open" and "find entry by name" to be fast operations, and we
- * want to use as little memory as possible. We memory-map the file,
- * and load a hash table with pointers to the filenames (which aren't
- * null-terminated). The other fields are at a fixed offset from the
- * filename, so we don't need to extract those (but we do need to byte-read
- * and endian-swap them every time we want them).
+ * Implemented as a thin wrapper over system/core/libziparchive.
+ *
+ * "open" and "find entry by name" are fast operations and use as little
+ * memory as possible.
*
- * To speed comparisons when doing a lookup by name, we could make the mapping
- * "private" (copy-on-write) and null-terminate the filenames after verifying
- * the record structure. However, this requires a private mapping of
- * every page that the Central Directory touches. Easier to tuck a copy
- * of the string length into the hash table entry.
+ * We also support fast iteration over all entries in the file (with a
+ * stable, but unspecified iteration order).
*
* NOTE: If this is used on file descriptors inherited from a fork() operation,
* you must be on a platform that implements pread() to guarantee correctness
@@ -70,48 +67,44 @@ typedef void* ZipEntryRO;
*/
class ZipFileRO {
public:
- ZipFileRO()
- : mFd(-1), mFileName(NULL), mFileLength(-1),
- mDirectoryMap(NULL),
- mNumEntries(-1), mDirectoryOffset(-1),
- mHashTableSize(-1), mHashTable(NULL)
- {}
-
- ~ZipFileRO();
+ /* Zip compression methods we support */
+ enum {
+ kCompressStored = 0, // no compression
+ kCompressDeflated = 8, // standard deflate
+ };
/*
* Open an archive.
*/
- status_t open(const char* zipFileName);
+ static ZipFileRO* open(const char* zipFileName);
/*
* Find an entry, by name. Returns the entry identifier, or NULL if
* not found.
- *
- * If two entries have the same name, one will be chosen at semi-random.
*/
- ZipEntryRO findEntryByName(const char* fileName) const;
+ ZipEntryRO findEntryByName(const char* entryName) const;
+
/*
- * Return the #of entries in the Zip archive.
+ * Start iterating over the list of entries in the zip file. Requires
+ * a matching call to endIteration with the same cookie.
*/
- int getNumEntries(void) const {
- return mNumEntries;
- }
+ bool startIteration(void** cookie);
+
+ /**
+ * Return the next entry in iteration order, or NULL if there are no more
+ * entries in this archive.
+ */
+ ZipEntryRO nextEntry(void* cookie);
+
+ void endIteration(void* cookie);
+
+ void releaseEntry(ZipEntryRO entry) const;
/*
- * Return the Nth entry. Zip file entries are not stored in sorted
- * order, and updated entries may appear at the end, so anyone walking
- * the archive needs to avoid making ordering assumptions. We take
- * that further by returning the Nth non-empty entry in the hash table
- * rather than the Nth entry in the archive.
- *
- * Valid values are [0..numEntries).
- *
- * [This is currently O(n). If it needs to be fast we can allocate an
- * additional data structure or provide an iterator interface.]
+ * Return the #of entries in the Zip archive.
*/
- ZipEntryRO findEntryByIndex(int idx) const;
+ int getNumEntries();
/*
* Copy the filename into the supplied buffer. Returns 0 on success,
@@ -149,112 +142,27 @@ public:
*
* Returns "true" on success.
*/
- bool uncompressEntry(ZipEntryRO entry, void* buffer) const;
+ bool uncompressEntry(ZipEntryRO entry, void* buffer, size_t size) const;
/*
* Uncompress the data to an open file descriptor.
*/
bool uncompressEntry(ZipEntryRO entry, int fd) const;
- /* Zip compression methods we support */
- enum {
- kCompressStored = 0, // no compression
- kCompressDeflated = 8, // standard deflate
- };
-
- /*
- * Utility function: uncompress deflated data, buffer to buffer.
- */
- static bool inflateBuffer(void* outBuf, const void* inBuf,
- size_t uncompLen, size_t compLen);
-
- /*
- * Utility function: uncompress deflated data, buffer to fd.
- */
- static bool inflateBuffer(int fd, const void* inBuf,
- size_t uncompLen, size_t compLen);
-
- /*
- * Utility function to convert ZIP's time format to a timespec struct.
- */
- static inline void zipTimeToTimespec(long when, struct tm* timespec) {
- const long date = when >> 16;
- timespec->tm_year = ((date >> 9) & 0x7F) + 80; // Zip is years since 1980
- timespec->tm_mon = (date >> 5) & 0x0F;
- timespec->tm_mday = date & 0x1F;
-
- timespec->tm_hour = (when >> 11) & 0x1F;
- timespec->tm_min = (when >> 5) & 0x3F;
- timespec->tm_sec = (when & 0x1F) << 1;
- }
-
- /*
- * Some basic functions for raw data manipulation. "LE" means
- * Little Endian.
- */
- static inline unsigned short get2LE(const unsigned char* buf) {
- return buf[0] | (buf[1] << 8);
- }
- static inline unsigned long get4LE(const unsigned char* buf) {
- return buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24);
- }
+ ~ZipFileRO();
private:
- /* these are private and not defined */
+ /* these are private and not defined */
ZipFileRO(const ZipFileRO& src);
ZipFileRO& operator=(const ZipFileRO& src);
- /* locate and parse the central directory */
- bool mapCentralDirectory(void);
-
- /* parse the archive, prepping internal structures */
- bool parseZipArchive(void);
-
- /* add a new entry to the hash table */
- void addToHash(const char* str, int strLen, unsigned int hash);
-
- /* compute string hash code */
- static unsigned int computeHash(const char* str, int len);
-
- /* convert a ZipEntryRO back to a hash table index */
- int entryToIndex(const ZipEntryRO entry) const;
-
- /*
- * One entry in the hash table.
- */
- typedef struct HashEntry {
- const char* name;
- unsigned short nameLen;
- //unsigned int hash;
- } HashEntry;
-
- /* open Zip archive */
- int mFd;
-
- /* Lock for handling the file descriptor (seeks, etc) */
- mutable Mutex mFdLock;
-
- /* zip file name */
- char* mFileName;
-
- /* length of file */
- size_t mFileLength;
-
- /* mapped file */
- FileMap* mDirectoryMap;
-
- /* number of entries in the Zip archive */
- int mNumEntries;
-
- /* CD directory offset in the Zip archive */
- off64_t mDirectoryOffset;
+ ZipFileRO(ZipArchiveHandle handle, char* fileName) : mHandle(handle),
+ mFileName(fileName)
+ {
+ }
- /*
- * We know how many entries are in the Zip archive, so we have a
- * fixed-size hash table. We probe for an empty slot.
- */
- int mHashTableSize;
- HashEntry* mHashTable;
+ const ZipArchiveHandle mHandle;
+ char* mFileName;
};
}; // namespace android
diff --git a/include/androidfw/ZipUtils.h b/include/androidfw/ZipUtils.h
index 42c42b6c0f54..6bea25af808e 100644
--- a/include/androidfw/ZipUtils.h
+++ b/include/androidfw/ZipUtils.h
@@ -21,6 +21,7 @@
#define __LIBS_ZIPUTILS_H
#include <stdio.h>
+#include <time.h>
namespace android {
@@ -33,9 +34,11 @@ public:
* General utility function for uncompressing "deflate" data from a file
* to a buffer.
*/
+ static bool inflateToBuffer(FILE* fp, void* buf, long uncompressedLen,
+ long compressedLen);
static bool inflateToBuffer(int fd, void* buf, long uncompressedLen,
long compressedLen);
- static bool inflateToBuffer(FILE* fp, void* buf, long uncompressedLen,
+ static bool inflateToBuffer(void *in, void* buf, long uncompressedLen,
long compressedLen);
/*
@@ -57,6 +60,19 @@ public:
static bool examineGzip(FILE* fp, int* pCompressionMethod,
long* pUncompressedLen, long* pCompressedLen, unsigned long* pCRC32);
+ /*
+ * Utility function to convert ZIP's time format to a timespec struct.
+ */
+ static inline void zipTimeToTimespec(long when, struct tm* timespec) {
+ const long date = when >> 16;
+ timespec->tm_year = ((date >> 9) & 0x7F) + 80; // Zip is years since 1980
+ timespec->tm_mon = (date >> 5) & 0x0F;
+ timespec->tm_mday = date & 0x1F;
+
+ timespec->tm_hour = (when >> 11) & 0x1F;
+ timespec->tm_min = (when >> 5) & 0x3F;
+ timespec->tm_sec = (when & 0x1F) << 1;
+ }
private:
ZipUtils() {}
~ZipUtils() {}
diff --git a/libs/androidfw/Android.mk b/libs/androidfw/Android.mk
index d80612be1303..d21197e3a673 100644
--- a/libs/androidfw/Android.mk
+++ b/libs/androidfw/Android.mk
@@ -53,7 +53,7 @@ LOCAL_CFLAGS += -DSTATIC_ANDROIDFW_FOR_TOOLS
LOCAL_C_INCLUDES := \
external/zlib
-LOCAL_STATIC_LIBRARIES := liblog
+LOCAL_STATIC_LIBRARIES := liblog libziparchive-host libutils
include $(BUILD_HOST_STATIC_LIBRARY)
@@ -72,9 +72,12 @@ LOCAL_SHARED_LIBRARIES := \
libutils \
libz
+LOCAL_STATIC_LIBRARIES := libziparchive
+
LOCAL_C_INCLUDES := \
external/icu4c/common \
- external/zlib
+ external/zlib \
+ system/core/include
LOCAL_MODULE:= libandroidfw
diff --git a/libs/androidfw/Asset.cpp b/libs/androidfw/Asset.cpp
index cb7628d1d5b1..ce6cc38b8357 100644
--- a/libs/androidfw/Asset.cpp
+++ b/libs/androidfw/Asset.cpp
@@ -843,7 +843,7 @@ void _CompressedAsset::close(void)
* The first time this is called, we expand the compressed data into a
* buffer.
*/
-const void* _CompressedAsset::getBuffer(bool wordAligned)
+const void* _CompressedAsset::getBuffer(bool)
{
unsigned char* buf = NULL;
@@ -860,7 +860,7 @@ const void* _CompressedAsset::getBuffer(bool wordAligned)
}
if (mMap != NULL) {
- if (!ZipFileRO::inflateBuffer(buf, mMap->getDataPtr(),
+ if (!ZipUtils::inflateToBuffer(mMap->getDataPtr(), buf,
mUncompressedLen, mCompressedLen))
goto bail;
} else {
diff --git a/libs/androidfw/AssetManager.cpp b/libs/androidfw/AssetManager.cpp
index 6667dafe4521..52ab361846f6 100644
--- a/libs/androidfw/AssetManager.cpp
+++ b/libs/androidfw/AssetManager.cpp
@@ -165,7 +165,7 @@ AssetManager::~AssetManager(void)
delete[] mVendor;
}
-bool AssetManager::addAssetPath(const String8& path, void** cookie)
+bool AssetManager::addAssetPath(const String8& path, int32_t* cookie)
{
AutoMutex _l(mLock);
@@ -192,7 +192,7 @@ bool AssetManager::addAssetPath(const String8& path, void** cookie)
for (size_t i=0; i<mAssetPaths.size(); i++) {
if (mAssetPaths[i].path == ap.path) {
if (cookie) {
- *cookie = (void*)(i+1);
+ *cookie = static_cast<int32_t>(i+1);
}
return true;
}
@@ -205,7 +205,7 @@ bool AssetManager::addAssetPath(const String8& path, void** cookie)
// new paths are always added at the end
if (cookie) {
- *cookie = (void*)mAssetPaths.size();
+ *cookie = static_cast<int32_t>(mAssetPaths.size());
}
// add overlay packages for /system/framework; apps are handled by the
@@ -305,10 +305,11 @@ bool AssetManager::getZipEntryCrcLocked(const String8& zipPath, const char* entr
if (entry == NULL) {
return false;
}
- if (!zip->getEntryInfo(entry, NULL, NULL, NULL, NULL, NULL, (long*)pCrc)) {
- return false;
- }
- return true;
+
+ const bool gotInfo = zip->getEntryInfo(entry, NULL, NULL, NULL, NULL, NULL, (long*)pCrc);
+ zip->releaseEntry(entry);
+
+ return gotInfo;
}
bool AssetManager::createIdmapFileLocked(const String8& originalPath, const String8& overlayPath,
@@ -394,17 +395,17 @@ bool AssetManager::addDefaultAssets()
return addAssetPath(path, NULL);
}
-void* AssetManager::nextAssetPath(void* cookie) const
+int32_t AssetManager::nextAssetPath(const int32_t cookie) const
{
AutoMutex _l(mLock);
- size_t next = ((size_t)cookie)+1;
- return next > mAssetPaths.size() ? NULL : (void*)next;
+ const size_t next = static_cast<size_t>(cookie) + 1;
+ return next > mAssetPaths.size() ? -1 : next;
}
-String8 AssetManager::getAssetPath(void* cookie) const
+String8 AssetManager::getAssetPath(const int32_t cookie) const
{
AutoMutex _l(mLock);
- const size_t which = ((size_t)cookie)-1;
+ const size_t which = static_cast<size_t>(cookie) - 1;
if (which < mAssetPaths.size()) {
return mAssetPaths[which].path;
}
@@ -432,7 +433,7 @@ void AssetManager::setLocaleLocked(const char* locale)
delete[] mLocale;
}
mLocale = strdupNew(locale);
-
+
updateResourceParamsLocked();
}
@@ -574,15 +575,14 @@ Asset* AssetManager::openNonAsset(const char* fileName, AccessMode mode)
return NULL;
}
-Asset* AssetManager::openNonAsset(void* cookie, const char* fileName, AccessMode mode)
+Asset* AssetManager::openNonAsset(const int32_t cookie, const char* fileName, AccessMode mode)
{
- const size_t which = ((size_t)cookie)-1;
+ const size_t which = static_cast<size_t>(cookie) - 1;
AutoMutex _l(mLock);
LOG_FATAL_IF(mAssetPaths.size() == 0, "No assets added to AssetManager");
-
if (mCacheMode != CACHE_OFF && !mCacheValid)
loadFileNameCacheLocked();
@@ -675,7 +675,7 @@ const ResTable* AssetManager::getResTable(bool required) const
mZipSet.setZipResourceTableAsset(ap.path, ass);
}
}
-
+
if (i == 0 && ass != NULL) {
// If this is the first resource table in the asset
// manager, then we are going to cache it so that we
@@ -689,7 +689,7 @@ const ResTable* AssetManager::getResTable(bool required) const
}
} else {
ALOGV("loading resource table %s\n", ap.path.string());
- Asset* ass = const_cast<AssetManager*>(this)->
+ ass = const_cast<AssetManager*>(this)->
openNonAssetInPathLocked("resources.arsc",
Asset::ACCESS_BUFFER,
ap);
@@ -821,16 +821,14 @@ Asset* AssetManager::openNonAssetInPathLocked(const char* fileName, AccessMode m
String8 path(fileName);
/* check the appropriate Zip file */
- ZipFileRO* pZip;
- ZipEntryRO entry;
-
- pZip = getZipFileLocked(ap);
+ ZipFileRO* pZip = getZipFileLocked(ap);
if (pZip != NULL) {
//printf("GOT zip, checking NA '%s'\n", (const char*) path);
- entry = pZip->findEntryByName(path.string());
+ ZipEntryRO entry = pZip->findEntryByName(path.string());
if (entry != NULL) {
//printf("FOUND NA in Zip file for %s\n", appName ? appName : kAppCommon);
pAsset = openAssetFromZipLocked(pZip, entry, mode, path);
+ pZip->releaseEntry(entry);
}
}
@@ -891,7 +889,7 @@ Asset* AssetManager::openInLocaleVendorLocked(const char* fileName, AccessMode m
/* look at the filesystem on disk */
String8 path(createPathNameLocked(ap, locale, vendor));
path.appendPath(fileName);
-
+
String8 excludeName(path);
excludeName.append(kExcludeExtension);
if (::getFileType(excludeName.string()) != kFileTypeNonexistent) {
@@ -899,28 +897,28 @@ Asset* AssetManager::openInLocaleVendorLocked(const char* fileName, AccessMode m
//printf("+++ excluding '%s'\n", (const char*) excludeName);
return kExcludedAsset;
}
-
+
pAsset = openAssetFromFileLocked(path, mode);
-
+
if (pAsset == NULL) {
/* try again, this time with ".gz" */
path.append(".gz");
pAsset = openAssetFromFileLocked(path, mode);
}
-
+
if (pAsset != NULL)
pAsset->setAssetSource(path);
} else {
/* find in cache */
String8 path(createPathNameLocked(ap, locale, vendor));
path.appendPath(fileName);
-
+
AssetDir::FileInfo tmpInfo;
bool found = false;
-
+
String8 excludeName(path);
excludeName.append(kExcludeExtension);
-
+
if (mCache.indexOf(excludeName) != NAME_NOT_FOUND) {
/* go no farther */
//printf("+++ Excluding '%s'\n", (const char*) excludeName);
@@ -975,17 +973,15 @@ Asset* AssetManager::openInLocaleVendorLocked(const char* fileName, AccessMode m
path.appendPath(fileName);
/* check the appropriate Zip file */
- ZipFileRO* pZip;
- ZipEntryRO entry;
-
- pZip = getZipFileLocked(ap);
+ ZipFileRO* pZip = getZipFileLocked(ap);
if (pZip != NULL) {
//printf("GOT zip, checking '%s'\n", (const char*) path);
- entry = pZip->findEntryByName(path.string());
+ ZipEntryRO entry = pZip->findEntryByName(path.string());
if (entry != NULL) {
//printf("FOUND in Zip file for %s/%s-%s\n",
// appName, locale, vendor);
pAsset = openAssetFromZipLocked(pZip, entry, mode, path);
+ pZip->releaseEntry(entry);
}
}
@@ -1209,7 +1205,7 @@ AssetDir* AssetManager::openDir(const char* dirName)
*
* Pass in "" for the root dir.
*/
-AssetDir* AssetManager::openNonAssetDir(void* cookie, const char* dirName)
+AssetDir* AssetManager::openNonAssetDir(const int32_t cookie, const char* dirName)
{
AutoMutex _l(mLock);
@@ -1228,7 +1224,7 @@ AssetDir* AssetManager::openNonAssetDir(void* cookie, const char* dirName)
pMergedInfo = new SortedVector<AssetDir::FileInfo>;
- const size_t which = ((size_t)cookie)-1;
+ const size_t which = static_cast<size_t>(cookie) - 1;
if (which < mAssetPaths.size()) {
const asset_path& ap = mAssetPaths.itemAt(which);
@@ -1487,11 +1483,16 @@ bool AssetManager::scanAndMergeZipLocked(SortedVector<AssetDir::FileInfo>* pMerg
* semantics.
*/
int dirNameLen = dirName.length();
- for (int i = 0; i < pZip->getNumEntries(); i++) {
- ZipEntryRO entry;
+ void *iterationCookie;
+ if (!pZip->startIteration(&iterationCookie)) {
+ ALOGW("ZipFileRO::startIteration returned false");
+ return false;
+ }
+
+ ZipEntryRO entry;
+ while ((entry = pZip->nextEntry(iterationCookie)) != NULL) {
char nameBuf[256];
- entry = pZip->findEntryByIndex(i);
if (pZip->getEntryFileName(entry, nameBuf, sizeof(nameBuf)) != 0) {
// TODO: fix this if we expect to have long names
ALOGE("ARGH: name too long?\n");
@@ -1541,6 +1542,8 @@ bool AssetManager::scanAndMergeZipLocked(SortedVector<AssetDir::FileInfo>* pMerg
}
}
+ pZip->endIteration(iterationCookie);
+
/*
* Add the set of unique directories.
*/
@@ -1739,7 +1742,7 @@ bool AssetManager::fncScanAndMergeDirLocked(
// XXX This is broken -- the filename cache needs to hold the base
// asset path separately from its filename.
-
+
partialPath = createPathNameLocked(ap, locale, vendor);
if (dirName[0] != '\0') {
partialPath.appendPath(dirName);
@@ -1814,12 +1817,10 @@ AssetManager::SharedZip::SharedZip(const String8& path, time_t modWhen)
mResourceTableAsset(NULL), mResourceTable(NULL)
{
//ALOGI("Creating SharedZip %p %s\n", this, (const char*)mPath);
- mZipFile = new ZipFileRO;
ALOGV("+++ opening zip '%s'\n", mPath.string());
- if (mZipFile->open(mPath.string()) != NO_ERROR) {
+ mZipFile = ZipFileRO::open(mPath.string());
+ if (mZipFile == NULL) {
ALOGD("failed to open Zip archive '%s'\n", mPath.string());
- delete mZipFile;
- mZipFile = NULL;
}
}
diff --git a/libs/androidfw/ObbFile.cpp b/libs/androidfw/ObbFile.cpp
index 21e06c8db5cd..ec59f0666c02 100644
--- a/libs/androidfw/ObbFile.cpp
+++ b/libs/androidfw/ObbFile.cpp
@@ -133,7 +133,7 @@ bool ObbFile::parseObbFile(int fd)
{
lseek64(fd, fileLength - kFooterTagSize, SEEK_SET);
- char *footer = new char[kFooterTagSize];
+ char footer[kFooterTagSize];
actual = TEMP_FAILURE_RETRY(read(fd, footer, kFooterTagSize));
if (actual != kFooterTagSize) {
ALOGW("couldn't read footer signature: %s\n", strerror(errno));
diff --git a/libs/androidfw/ZipFileRO.cpp b/libs/androidfw/ZipFileRO.cpp
index ec5f95c8b4f7..1ab18ad056dc 100644
--- a/libs/androidfw/ZipFileRO.cpp
+++ b/libs/androidfw/ZipFileRO.cpp
@@ -24,6 +24,7 @@
#include <utils/Compat.h>
#include <utils/misc.h>
#include <utils/threads.h>
+#include <ziparchive/zip_archive.h>
#include <zlib.h>
@@ -43,619 +44,127 @@
using namespace android;
-/*
- * Zip file constants.
- */
-#define kEOCDSignature 0x06054b50
-#define kEOCDLen 22
-#define kEOCDDiskNumber 4 // number of the current disk
-#define kEOCDDiskNumberForCD 6 // disk number with the Central Directory
-#define kEOCDNumEntries 8 // offset to #of entries in file
-#define kEOCDTotalNumEntries 10 // offset to total #of entries in spanned archives
-#define kEOCDSize 12 // size of the central directory
-#define kEOCDFileOffset 16 // offset to central directory
-#define kEOCDCommentSize 20 // offset to the length of the file comment
-
-#define kMaxCommentLen 65535 // longest possible in ushort
-#define kMaxEOCDSearch (kMaxCommentLen + kEOCDLen)
-
-#define kLFHSignature 0x04034b50
-#define kLFHLen 30 // excluding variable-len fields
-#define kLFHGPBFlags 6 // offset to GPB flags
-#define kLFHNameLen 26 // offset to filename length
-#define kLFHExtraLen 28 // offset to extra length
-
-#define kCDESignature 0x02014b50
-#define kCDELen 46 // excluding variable-len fields
-#define kCDEGPBFlags 8 // offset to GPB flags
-#define kCDEMethod 10 // offset to compression method
-#define kCDEModWhen 12 // offset to modification timestamp
-#define kCDECRC 16 // offset to entry CRC
-#define kCDECompLen 20 // offset to compressed length
-#define kCDEUncompLen 24 // offset to uncompressed length
-#define kCDENameLen 28 // offset to filename length
-#define kCDEExtraLen 30 // offset to extra length
-#define kCDECommentLen 32 // offset to comment length
-#define kCDELocalOffset 42 // offset to local hdr
-
-/* General Purpose Bit Flag */
-#define kGPFEncryptedFlag (1 << 0)
-#define kGPFUnsupportedMask (kGPFEncryptedFlag)
+class _ZipEntryRO {
+public:
+ ZipEntry entry;
+ ZipEntryName name;
+ void *cookie;
-/*
- * The values we return for ZipEntryRO use 0 as an invalid value, so we
- * want to adjust the hash table index by a fixed amount. Using a large
- * value helps insure that people don't mix & match arguments, e.g. to
- * findEntryByIndex().
- */
-#define kZipEntryAdj 10000
+ _ZipEntryRO() : cookie(NULL) {
+ }
-ZipFileRO::~ZipFileRO() {
- free(mHashTable);
- if (mDirectoryMap)
- mDirectoryMap->release();
- if (mFd >= 0)
- TEMP_FAILURE_RETRY(close(mFd));
- if (mFileName)
- free(mFileName);
-}
+private:
+ _ZipEntryRO(const _ZipEntryRO& other);
+ _ZipEntryRO& operator=(const _ZipEntryRO& other);
+};
-/*
- * Convert a ZipEntryRO to a hash table index, verifying that it's in a
- * valid range.
- */
-int ZipFileRO::entryToIndex(const ZipEntryRO entry) const
-{
- long ent = ((intptr_t) entry) - kZipEntryAdj;
- if (ent < 0 || ent >= mHashTableSize || mHashTable[ent].name == NULL) {
- ALOGW("Invalid ZipEntryRO %p (%ld)\n", entry, ent);
- return -1;
- }
- return ent;
+ZipFileRO::~ZipFileRO() {
+ CloseArchive(mHandle);
+ free(mFileName);
}
-
/*
* Open the specified file read-only. We memory-map the entire thing and
* close the file before returning.
*/
-status_t ZipFileRO::open(const char* zipFileName)
+/* static */ ZipFileRO* ZipFileRO::open(const char* zipFileName)
{
- int fd = -1;
-
- assert(mDirectoryMap == NULL);
-
- /*
- * Open and map the specified file.
- */
- fd = TEMP_FAILURE_RETRY(::open(zipFileName, O_RDONLY | O_BINARY));
- if (fd < 0) {
- ALOGW("Unable to open zip '%s': %s\n", zipFileName, strerror(errno));
- return NAME_NOT_FOUND;
- }
-
- mFileLength = lseek64(fd, 0, SEEK_END);
- if (mFileLength < kEOCDLen) {
- TEMP_FAILURE_RETRY(close(fd));
- return UNKNOWN_ERROR;
- }
-
- if (mFileName != NULL) {
- free(mFileName);
+ ZipArchiveHandle handle;
+ const int32_t error = OpenArchive(zipFileName, &handle);
+ if (error) {
+ ALOGW("Error opening archive %s: %s", zipFileName, ErrorCodeString(error));
+ return NULL;
}
- mFileName = strdup(zipFileName);
- mFd = fd;
+ return new ZipFileRO(handle, strdup(zipFileName));
+}
- /*
- * Find the Central Directory and store its size and number of entries.
- */
- if (!mapCentralDirectory()) {
- goto bail;
- }
- /*
- * Verify Central Directory and create data structures for fast access.
- */
- if (!parseZipArchive()) {
- goto bail;
+ZipEntryRO ZipFileRO::findEntryByName(const char* entryName) const
+{
+ _ZipEntryRO* data = new _ZipEntryRO;
+ const int32_t error = FindEntry(mHandle, entryName, &(data->entry));
+ if (error) {
+ delete data;
+ return NULL;
}
- return OK;
+ data->name.name = entryName;
+ data->name.name_length = strlen(entryName);
-bail:
- free(mFileName);
- mFileName = NULL;
- TEMP_FAILURE_RETRY(close(fd));
- return UNKNOWN_ERROR;
+ return (ZipEntryRO) data;
}
/*
- * Parse the Zip archive, verifying its contents and initializing internal
- * data structures.
+ * Get the useful fields from the zip entry.
+ *
+ * Returns "false" if the offsets to the fields or the contents of the fields
+ * appear to be bogus.
*/
-bool ZipFileRO::mapCentralDirectory(void)
+bool ZipFileRO::getEntryInfo(ZipEntryRO entry, int* pMethod, size_t* pUncompLen,
+ size_t* pCompLen, off64_t* pOffset, long* pModWhen, long* pCrc32) const
{
- ssize_t readAmount = kMaxEOCDSearch;
- if (readAmount > (ssize_t) mFileLength)
- readAmount = mFileLength;
-
- if (readAmount < kEOCDSize) {
- ALOGW("File too short to be a zip file");
- return false;
- }
-
- unsigned char* scanBuf = (unsigned char*) malloc(readAmount);
- if (scanBuf == NULL) {
- ALOGW("couldn't allocate scanBuf: %s", strerror(errno));
- free(scanBuf);
- return false;
- }
-
- /*
- * Make sure this is a Zip archive.
- */
- if (lseek64(mFd, 0, SEEK_SET) != 0) {
- ALOGW("seek to start failed: %s", strerror(errno));
- free(scanBuf);
- return false;
- }
-
- ssize_t actual = TEMP_FAILURE_RETRY(read(mFd, scanBuf, sizeof(int32_t)));
- if (actual != (ssize_t) sizeof(int32_t)) {
- ALOGI("couldn't read first signature from zip archive: %s", strerror(errno));
- free(scanBuf);
- return false;
- }
-
- unsigned int header = get4LE(scanBuf);
- if (header != kLFHSignature) {
- ALOGV("Not a Zip archive (found 0x%08x)\n", header);
- free(scanBuf);
- return false;
- }
+ const _ZipEntryRO* zipEntry = reinterpret_cast<_ZipEntryRO*>(entry);
+ const ZipEntry& ze = zipEntry->entry;
- /*
- * Perform the traditional EOCD snipe hunt.
- *
- * We're searching for the End of Central Directory magic number,
- * which appears at the start of the EOCD block. It's followed by
- * 18 bytes of EOCD stuff and up to 64KB of archive comment. We
- * need to read the last part of the file into a buffer, dig through
- * it to find the magic number, parse some values out, and use those
- * to determine the extent of the CD.
- *
- * We start by pulling in the last part of the file.
- */
- off64_t searchStart = mFileLength - readAmount;
-
- if (lseek64(mFd, searchStart, SEEK_SET) != searchStart) {
- ALOGW("seek %ld failed: %s\n", (long) searchStart, strerror(errno));
- free(scanBuf);
- return false;
- }
- actual = TEMP_FAILURE_RETRY(read(mFd, scanBuf, readAmount));
- if (actual != (ssize_t) readAmount) {
- ALOGW("Zip: read " ZD ", expected " ZD ". Failed: %s\n",
- (ZD_TYPE) actual, (ZD_TYPE) readAmount, strerror(errno));
- free(scanBuf);
- return false;
- }
-
- /*
- * Scan backward for the EOCD magic. In an archive without a trailing
- * comment, we'll find it on the first try. (We may want to consider
- * doing an initial minimal read; if we don't find it, retry with a
- * second read as above.)
- */
- int i;
- for (i = readAmount - kEOCDLen; i >= 0; i--) {
- if (scanBuf[i] == 0x50 && get4LE(&scanBuf[i]) == kEOCDSignature) {
- ALOGV("+++ Found EOCD at buf+%d\n", i);
- break;
- }
+ if (pMethod != NULL) {
+ *pMethod = ze.method;
}
- if (i < 0) {
- ALOGD("Zip: EOCD not found, %s is not zip\n", mFileName);
- free(scanBuf);
- return false;
+ if (pUncompLen != NULL) {
+ *pUncompLen = ze.uncompressed_length;
}
-
- off64_t eocdOffset = searchStart + i;
- const unsigned char* eocdPtr = scanBuf + i;
-
- assert(eocdOffset < mFileLength);
-
- /*
- * Grab the CD offset and size, and the number of entries in the
- * archive. After that, we can release our EOCD hunt buffer.
- */
- unsigned int diskNumber = get2LE(eocdPtr + kEOCDDiskNumber);
- unsigned int diskWithCentralDir = get2LE(eocdPtr + kEOCDDiskNumberForCD);
- unsigned int numEntries = get2LE(eocdPtr + kEOCDNumEntries);
- unsigned int totalNumEntries = get2LE(eocdPtr + kEOCDTotalNumEntries);
- unsigned int centralDirSize = get4LE(eocdPtr + kEOCDSize);
- unsigned int centralDirOffset = get4LE(eocdPtr + kEOCDFileOffset);
- unsigned int commentSize = get2LE(eocdPtr + kEOCDCommentSize);
- free(scanBuf);
-
- // Verify that they look reasonable.
- if ((long long) centralDirOffset + (long long) centralDirSize > (long long) eocdOffset) {
- ALOGW("bad offsets (dir %ld, size %u, eocd %ld)\n",
- (long) centralDirOffset, centralDirSize, (long) eocdOffset);
- return false;
+ if (pCompLen != NULL) {
+ *pCompLen = ze.compressed_length;
}
- if (numEntries == 0) {
- ALOGW("empty archive?\n");
- return false;
- } else if (numEntries != totalNumEntries || diskNumber != 0 || diskWithCentralDir != 0) {
- ALOGW("spanned archives not supported");
- return false;
- }
-
- // Check to see if comment is a sane size
- if ((commentSize > (mFileLength - kEOCDLen))
- || (eocdOffset > (mFileLength - kEOCDLen) - commentSize)) {
- ALOGW("comment size runs off end of file");
- return false;
+ if (pOffset != NULL) {
+ *pOffset = ze.offset;
}
-
- ALOGV("+++ numEntries=%d dirSize=%d dirOffset=%d\n",
- numEntries, centralDirSize, centralDirOffset);
-
- mDirectoryMap = new FileMap();
- if (mDirectoryMap == NULL) {
- ALOGW("Unable to create directory map: %s", strerror(errno));
- return false;
+ if (pModWhen != NULL) {
+ *pModWhen = ze.mod_time;
}
-
- if (!mDirectoryMap->create(mFileName, mFd, centralDirOffset, centralDirSize, true)) {
- ALOGW("Unable to map '%s' (" ZD " to " ZD "): %s\n", mFileName,
- (ZD_TYPE) centralDirOffset, (ZD_TYPE) (centralDirOffset + centralDirSize), strerror(errno));
- return false;
+ if (pCrc32 != NULL) {
+ *pCrc32 = ze.crc32;
}
- mNumEntries = numEntries;
- mDirectoryOffset = centralDirOffset;
-
return true;
}
-
-/*
- * Round up to the next highest power of 2.
- *
- * Found on http://graphics.stanford.edu/~seander/bithacks.html.
- */
-static unsigned int roundUpPower2(unsigned int val)
+bool ZipFileRO::startIteration(void** cookie)
{
- val--;
- val |= val >> 1;
- val |= val >> 2;
- val |= val >> 4;
- val |= val >> 8;
- val |= val >> 16;
- val++;
-
- return val;
-}
-
-bool ZipFileRO::parseZipArchive(void)
-{
- bool result = false;
- const unsigned char* cdPtr = (const unsigned char*) mDirectoryMap->getDataPtr();
- size_t cdLength = mDirectoryMap->getDataLength();
- int numEntries = mNumEntries;
-
- /*
- * Create hash table. We have a minimum 75% load factor, possibly as
- * low as 50% after we round off to a power of 2.
- */
- mHashTableSize = roundUpPower2(1 + (numEntries * 4) / 3);
- mHashTable = (HashEntry*) calloc(mHashTableSize, sizeof(HashEntry));
-
- /*
- * Walk through the central directory, adding entries to the hash
- * table.
- */
- const unsigned char* ptr = cdPtr;
- for (int i = 0; i < numEntries; i++) {
- if (get4LE(ptr) != kCDESignature) {
- ALOGW("Missed a central dir sig (at %d)\n", i);
- goto bail;
- }
- if (ptr + kCDELen > cdPtr + cdLength) {
- ALOGW("Ran off the end (at %d)\n", i);
- goto bail;
- }
-
- long localHdrOffset = (long) get4LE(ptr + kCDELocalOffset);
- if (localHdrOffset >= mDirectoryOffset) {
- ALOGW("bad LFH offset %ld at entry %d\n", localHdrOffset, i);
- goto bail;
- }
-
- unsigned int gpbf = get2LE(ptr + kCDEGPBFlags);
- if ((gpbf & kGPFUnsupportedMask) != 0) {
- ALOGW("Invalid General Purpose Bit Flag: %d", gpbf);
- goto bail;
- }
-
- unsigned int nameLen = get2LE(ptr + kCDENameLen);
- unsigned int extraLen = get2LE(ptr + kCDEExtraLen);
- unsigned int commentLen = get2LE(ptr + kCDECommentLen);
-
- const char *name = (const char *) ptr + kCDELen;
-
- /* Check name for NULL characters */
- if (memchr(name, 0, nameLen) != NULL) {
- ALOGW("Filename contains NUL byte");
- goto bail;
- }
-
- /* add the CDE filename to the hash table */
- unsigned int hash = computeHash(name, nameLen);
- addToHash(name, nameLen, hash);
-
- /* We don't care about the comment or extra data. */
- ptr += kCDELen + nameLen + extraLen + commentLen;
- if ((size_t)(ptr - cdPtr) > cdLength) {
- ALOGW("bad CD advance (%d vs " ZD ") at entry %d\n",
- (int) (ptr - cdPtr), (ZD_TYPE) cdLength, i);
- goto bail;
- }
+ _ZipEntryRO* ze = new _ZipEntryRO;
+ int32_t error = StartIteration(mHandle, &(ze->cookie), NULL /* prefix */);
+ if (error) {
+ ALOGW("Could not start iteration over %s: %s", mFileName, ErrorCodeString(error));
+ delete ze;
+ return false;
}
- ALOGV("+++ zip good scan %d entries\n", numEntries);
- result = true;
-
-bail:
- return result;
-}
-
-/*
- * Simple string hash function for non-null-terminated strings.
- */
-/*static*/ unsigned int ZipFileRO::computeHash(const char* str, int len)
-{
- unsigned int hash = 0;
- while (len--)
- hash = hash * 31 + *str++;
-
- return hash;
+ *cookie = ze;
+ return true;
}
-/*
- * Add a new entry to the hash table.
- */
-void ZipFileRO::addToHash(const char* str, int strLen, unsigned int hash)
+ZipEntryRO ZipFileRO::nextEntry(void* cookie)
{
- int ent = hash & (mHashTableSize-1);
-
- /*
- * We over-allocate the table, so we're guaranteed to find an empty slot.
- */
- while (mHashTable[ent].name != NULL)
- ent = (ent + 1) & (mHashTableSize-1);
-
- mHashTable[ent].name = str;
- mHashTable[ent].nameLen = strLen;
-}
-
-/*
- * Find a matching entry.
- *
- * Returns NULL if not found.
- */
-ZipEntryRO ZipFileRO::findEntryByName(const char* fileName) const
-{
- /*
- * If the ZipFileRO instance is not initialized, the entry number will
- * end up being garbage since mHashTableSize is -1.
- */
- if (mHashTableSize <= 0) {
- return NULL;
- }
-
- int nameLen = strlen(fileName);
- unsigned int hash = computeHash(fileName, nameLen);
- int ent = hash & (mHashTableSize-1);
-
- while (mHashTable[ent].name != NULL) {
- if (mHashTable[ent].nameLen == nameLen &&
- memcmp(mHashTable[ent].name, fileName, nameLen) == 0)
- {
- /* match */
- return (ZipEntryRO)(long)(ent + kZipEntryAdj);
+ _ZipEntryRO* ze = reinterpret_cast<_ZipEntryRO*>(cookie);
+ int32_t error = Next(ze->cookie, &(ze->entry), &(ze->name));
+ if (error) {
+ if (error != -1) {
+ ALOGW("Error iteration over %s: %s", mFileName, ErrorCodeString(error));
}
-
- ent = (ent + 1) & (mHashTableSize-1);
+ return NULL;
}
- return NULL;
+ return &(ze->entry);
}
-/*
- * Find the Nth entry.
- *
- * This currently involves walking through the sparse hash table, counting
- * non-empty entries. If we need to speed this up we can either allocate
- * a parallel lookup table or (perhaps better) provide an iterator interface.
- */
-ZipEntryRO ZipFileRO::findEntryByIndex(int idx) const
+void ZipFileRO::endIteration(void* cookie)
{
- if (idx < 0 || idx >= mNumEntries) {
- ALOGW("Invalid index %d\n", idx);
- return NULL;
- }
-
- for (int ent = 0; ent < mHashTableSize; ent++) {
- if (mHashTable[ent].name != NULL) {
- if (idx-- == 0)
- return (ZipEntryRO) (intptr_t)(ent + kZipEntryAdj);
- }
- }
-
- return NULL;
+ delete reinterpret_cast<_ZipEntryRO*>(cookie);
}
-/*
- * Get the useful fields from the zip entry.
- *
- * Returns "false" if the offsets to the fields or the contents of the fields
- * appear to be bogus.
- */
-bool ZipFileRO::getEntryInfo(ZipEntryRO entry, int* pMethod, size_t* pUncompLen,
- size_t* pCompLen, off64_t* pOffset, long* pModWhen, long* pCrc32) const
+void ZipFileRO::releaseEntry(ZipEntryRO entry) const
{
- bool ret = false;
-
- const int ent = entryToIndex(entry);
- if (ent < 0) {
- ALOGW("cannot find entry");
- return false;
- }
-
- HashEntry hashEntry = mHashTable[ent];
-
- /*
- * Recover the start of the central directory entry from the filename
- * pointer. The filename is the first entry past the fixed-size data,
- * so we can just subtract back from that.
- */
- const unsigned char* ptr = (const unsigned char*) hashEntry.name;
- off64_t cdOffset = mDirectoryOffset;
-
- ptr -= kCDELen;
-
- int method = get2LE(ptr + kCDEMethod);
- if (pMethod != NULL)
- *pMethod = method;
-
- if (pModWhen != NULL)
- *pModWhen = get4LE(ptr + kCDEModWhen);
- if (pCrc32 != NULL)
- *pCrc32 = get4LE(ptr + kCDECRC);
-
- size_t compLen = get4LE(ptr + kCDECompLen);
- if (pCompLen != NULL)
- *pCompLen = compLen;
- size_t uncompLen = get4LE(ptr + kCDEUncompLen);
- if (pUncompLen != NULL)
- *pUncompLen = uncompLen;
-
- /*
- * If requested, determine the offset of the start of the data. All we
- * have is the offset to the Local File Header, which is variable size,
- * so we have to read the contents of the struct to figure out where
- * the actual data starts.
- *
- * We also need to make sure that the lengths are not so large that
- * somebody trying to map the compressed or uncompressed data runs
- * off the end of the mapped region.
- *
- * Note we don't verify compLen/uncompLen if they don't request the
- * dataOffset, because dataOffset is expensive to determine. However,
- * if they don't have the file offset, they're not likely to be doing
- * anything with the contents.
- */
- if (pOffset != NULL) {
- long localHdrOffset = get4LE(ptr + kCDELocalOffset);
- if (localHdrOffset + kLFHLen >= cdOffset) {
- ALOGE("ERROR: bad local hdr offset in zip\n");
- return false;
- }
-
- unsigned char lfhBuf[kLFHLen];
-
-#ifdef HAVE_PREAD
- /*
- * This file descriptor might be from zygote's preloaded assets,
- * so we need to do an pread64() instead of a lseek64() + read() to
- * guarantee atomicity across the processes with the shared file
- * descriptors.
- */
- ssize_t actual =
- TEMP_FAILURE_RETRY(pread64(mFd, lfhBuf, sizeof(lfhBuf), localHdrOffset));
-
- if (actual != sizeof(lfhBuf)) {
- ALOGW("failed reading lfh from offset %ld\n", localHdrOffset);
- return false;
- }
-
- if (get4LE(lfhBuf) != kLFHSignature) {
- ALOGW("didn't find signature at start of lfh; wanted: offset=%ld data=0x%08x; "
- "got: data=0x%08lx\n",
- localHdrOffset, kLFHSignature, get4LE(lfhBuf));
- return false;
- }
-#else /* HAVE_PREAD */
- /*
- * For hosts don't have pread64() we cannot guarantee atomic reads from
- * an offset in a file. Android should never run on those platforms.
- * File descriptors inherited from a fork() share file offsets and
- * there would be nothing to protect from two different processes
- * calling lseek64() concurrently.
- */
-
- {
- AutoMutex _l(mFdLock);
-
- if (lseek64(mFd, localHdrOffset, SEEK_SET) != localHdrOffset) {
- ALOGW("failed seeking to lfh at offset %ld\n", localHdrOffset);
- return false;
- }
-
- ssize_t actual =
- TEMP_FAILURE_RETRY(read(mFd, lfhBuf, sizeof(lfhBuf)));
- if (actual != sizeof(lfhBuf)) {
- ALOGW("failed reading lfh from offset %ld\n", localHdrOffset);
- return false;
- }
-
- if (get4LE(lfhBuf) != kLFHSignature) {
- off64_t actualOffset = lseek64(mFd, 0, SEEK_CUR);
- ALOGW("didn't find signature at start of lfh; wanted: offset=%ld data=0x%08x; "
- "got: offset=" ZD " data=0x%08lx\n",
- localHdrOffset, kLFHSignature, (ZD_TYPE) actualOffset, get4LE(lfhBuf));
- return false;
- }
- }
-#endif /* HAVE_PREAD */
-
- unsigned int gpbf = get2LE(lfhBuf + kLFHGPBFlags);
- if ((gpbf & kGPFUnsupportedMask) != 0) {
- ALOGW("Invalid General Purpose Bit Flag: %d", gpbf);
- return false;
- }
-
- off64_t dataOffset = localHdrOffset + kLFHLen
- + get2LE(lfhBuf + kLFHNameLen) + get2LE(lfhBuf + kLFHExtraLen);
- if (dataOffset >= cdOffset) {
- ALOGW("bad data offset %ld in zip\n", (long) dataOffset);
- return false;
- }
-
- /* check lengths */
- if ((dataOffset >= cdOffset) || (compLen > (cdOffset - dataOffset))) {
- ALOGW("bad compressed length in zip (%ld + " ZD " > %ld)\n",
- (long) dataOffset, (ZD_TYPE) compLen, (long) cdOffset);
- return false;
- }
-
- if (method == kCompressStored &&
- ((dataOffset >= cdOffset) ||
- (uncompLen > (cdOffset - dataOffset))))
- {
- ALOGE("ERROR: bad uncompressed length in zip (%ld + " ZD " > %ld)\n",
- (long) dataOffset, (ZD_TYPE) uncompLen, (long) cdOffset);
- return false;
- }
-
- *pOffset = dataOffset;
- }
-
- return true;
+ delete reinterpret_cast<_ZipEntryRO*>(entry);
}
/*
@@ -664,16 +173,17 @@ bool ZipFileRO::getEntryInfo(ZipEntryRO entry, int* pMethod, size_t* pUncompLen,
int ZipFileRO::getEntryFileName(ZipEntryRO entry, char* buffer, int bufLen)
const
{
- int ent = entryToIndex(entry);
- if (ent < 0)
- return -1;
+ const _ZipEntryRO* zipEntry = reinterpret_cast<_ZipEntryRO*>(entry);
+ const uint16_t requiredSize = zipEntry->name.name_length + 1;
- int nameLen = mHashTable[ent].nameLen;
- if (bufLen < nameLen+1)
- return nameLen+1;
+ if (bufLen < requiredSize) {
+ ALOGW("Buffer too short, requires %d bytes for entry name", requiredSize);
+ return requiredSize;
+ }
+
+ memcpy(buffer, zipEntry->name.name, requiredSize - 1);
+ buffer[requiredSize - 1] = '\0';
- memcpy(buffer, mHashTable[ent].name, nameLen);
- buffer[nameLen] = '\0';
return 0;
}
@@ -682,32 +192,19 @@ int ZipFileRO::getEntryFileName(ZipEntryRO entry, char* buffer, int bufLen)
*/
FileMap* ZipFileRO::createEntryFileMap(ZipEntryRO entry) const
{
- /*
- * TODO: the efficient way to do this is to modify FileMap to allow
- * sub-regions of a file to be mapped. A reference-counting scheme
- * can manage the base memory mapping. For now, we just create a brand
- * new mapping off of the Zip archive file descriptor.
- */
-
- FileMap* newMap;
- int method;
- size_t uncompLen;
- size_t compLen;
- off64_t offset;
-
- if (!getEntryInfo(entry, &method, &uncompLen, &compLen, &offset, NULL, NULL)) {
- return NULL;
- }
+ const _ZipEntryRO *zipEntry = reinterpret_cast<_ZipEntryRO*>(entry);
+ const ZipEntry& ze = zipEntry->entry;
+ int fd = GetFileDescriptor(mHandle);
+ size_t actualLen = 0;
- size_t actualLen;
- if (method == kCompressStored) {
- actualLen = uncompLen;
+ if (ze.method == kCompressStored) {
+ actualLen = ze.uncompressed_length;
} else {
- actualLen = compLen;
+ actualLen = ze.compressed_length;
}
- newMap = new FileMap();
- if (!newMap->create(mFileName, mFd, offset, actualLen, true)) {
+ FileMap* newMap = new FileMap();
+ if (!newMap->create(mFileName, fd, ze.offset, actualLen, true)) {
newMap->release();
return NULL;
}
@@ -721,64 +218,17 @@ FileMap* ZipFileRO::createEntryFileMap(ZipEntryRO entry) const
* This doesn't verify the data's CRC, which might be useful for
* uncompressed data. The caller should be able to manage it.
*/
-bool ZipFileRO::uncompressEntry(ZipEntryRO entry, void* buffer) const
+bool ZipFileRO::uncompressEntry(ZipEntryRO entry, void* buffer, size_t size) const
{
- const size_t kSequentialMin = 32768;
- bool result = false;
- int ent = entryToIndex(entry);
- if (ent < 0) {
+ _ZipEntryRO *zipEntry = reinterpret_cast<_ZipEntryRO*>(entry);
+ const int32_t error = ExtractToMemory(mHandle, &(zipEntry->entry),
+ (uint8_t*) buffer, size);
+ if (error) {
+ ALOGW("ExtractToMemory failed with %s", ErrorCodeString(error));
return false;
}
- int method;
- size_t uncompLen, compLen;
- off64_t offset;
- const unsigned char* ptr;
- FileMap *file;
-
- if (!getEntryInfo(entry, &method, &uncompLen, &compLen, &offset, NULL, NULL)) {
- goto bail;
- }
-
- file = createEntryFileMap(entry);
- if (file == NULL) {
- goto bail;
- }
-
- ptr = (const unsigned char*) file->getDataPtr();
-
- /*
- * Experiment with madvise hint. When we want to uncompress a file,
- * we pull some stuff out of the central dir entry and then hit a
- * bunch of compressed or uncompressed data sequentially. The CDE
- * visit will cause a limited amount of read-ahead because it's at
- * the end of the file. We could end up doing lots of extra disk
- * access if the file we're prying open is small. Bottom line is we
- * probably don't want to turn MADV_SEQUENTIAL on and leave it on.
- *
- * So, if the compressed size of the file is above a certain minimum
- * size, temporarily boost the read-ahead in the hope that the extra
- * pair of system calls are negated by a reduction in page faults.
- */
- if (compLen > kSequentialMin)
- file->advise(FileMap::SEQUENTIAL);
-
- if (method == kCompressStored) {
- memcpy(buffer, ptr, uncompLen);
- } else {
- if (!inflateBuffer(buffer, ptr, uncompLen, compLen))
- goto unmap;
- }
-
- if (compLen > kSequentialMin)
- file->advise(FileMap::NORMAL);
-
- result = true;
-
-unmap:
- file->release();
-bail:
- return result;
+ return true;
}
/*
@@ -788,208 +238,12 @@ bail:
*/
bool ZipFileRO::uncompressEntry(ZipEntryRO entry, int fd) const
{
- bool result = false;
- int ent = entryToIndex(entry);
- if (ent < 0) {
+ _ZipEntryRO *zipEntry = reinterpret_cast<_ZipEntryRO*>(entry);
+ const int32_t error = ExtractEntryToFile(mHandle, &(zipEntry->entry), fd);
+ if (error) {
+ ALOGW("ExtractToMemory failed with %s", ErrorCodeString(error));
return false;
}
- int method;
- size_t uncompLen, compLen;
- off64_t offset;
- const unsigned char* ptr;
- FileMap *file;
-
- if (!getEntryInfo(entry, &method, &uncompLen, &compLen, &offset, NULL, NULL)) {
- goto bail;
- }
-
- file = createEntryFileMap(entry);
- if (file == NULL) {
- goto bail;
- }
-
- ptr = (const unsigned char*) file->getDataPtr();
-
- if (method == kCompressStored) {
- ssize_t actual = TEMP_FAILURE_RETRY(write(fd, ptr, uncompLen));
- if (actual < 0) {
- ALOGE("Write failed: %s\n", strerror(errno));
- goto unmap;
- } else if ((size_t) actual != uncompLen) {
- ALOGE("Partial write during uncompress (" ZD " of " ZD ")\n",
- (ZD_TYPE) actual, (ZD_TYPE) uncompLen);
- goto unmap;
- } else {
- ALOGI("+++ successful write\n");
- }
- } else {
- if (!inflateBuffer(fd, ptr, uncompLen, compLen)) {
- goto unmap;
- }
- }
-
- result = true;
-
-unmap:
- file->release();
-bail:
- return result;
-}
-
-/*
- * Uncompress "deflate" data from one buffer to another.
- */
-/*static*/ bool ZipFileRO::inflateBuffer(void* outBuf, const void* inBuf,
- size_t uncompLen, size_t compLen)
-{
- bool result = false;
- z_stream zstream;
- int zerr;
-
- /*
- * Initialize the zlib stream struct.
- */
- memset(&zstream, 0, sizeof(zstream));
- zstream.zalloc = Z_NULL;
- zstream.zfree = Z_NULL;
- zstream.opaque = Z_NULL;
- zstream.next_in = (Bytef*)inBuf;
- zstream.avail_in = compLen;
- zstream.next_out = (Bytef*) outBuf;
- zstream.avail_out = uncompLen;
- zstream.data_type = Z_UNKNOWN;
-
- /*
- * Use the undocumented "negative window bits" feature to tell zlib
- * that there's no zlib header waiting for it.
- */
- zerr = inflateInit2(&zstream, -MAX_WBITS);
- if (zerr != Z_OK) {
- if (zerr == Z_VERSION_ERROR) {
- ALOGE("Installed zlib is not compatible with linked version (%s)\n",
- ZLIB_VERSION);
- } else {
- ALOGE("Call to inflateInit2 failed (zerr=%d)\n", zerr);
- }
- goto bail;
- }
-
- /*
- * Expand data.
- */
- zerr = inflate(&zstream, Z_FINISH);
- if (zerr != Z_STREAM_END) {
- ALOGW("Zip inflate failed, zerr=%d (nIn=%p aIn=%u nOut=%p aOut=%u)\n",
- zerr, zstream.next_in, zstream.avail_in,
- zstream.next_out, zstream.avail_out);
- goto z_bail;
- }
-
- /* paranoia */
- if (zstream.total_out != uncompLen) {
- ALOGW("Size mismatch on inflated file (%ld vs " ZD ")\n",
- zstream.total_out, (ZD_TYPE) uncompLen);
- goto z_bail;
- }
-
- result = true;
-
-z_bail:
- inflateEnd(&zstream); /* free up any allocated structures */
-
-bail:
- return result;
-}
-
-/*
- * Uncompress "deflate" data from one buffer to an open file descriptor.
- */
-/*static*/ bool ZipFileRO::inflateBuffer(int fd, const void* inBuf,
- size_t uncompLen, size_t compLen)
-{
- bool result = false;
- const size_t kWriteBufSize = 32768;
- unsigned char writeBuf[kWriteBufSize];
- z_stream zstream;
- int zerr;
-
- /*
- * Initialize the zlib stream struct.
- */
- memset(&zstream, 0, sizeof(zstream));
- zstream.zalloc = Z_NULL;
- zstream.zfree = Z_NULL;
- zstream.opaque = Z_NULL;
- zstream.next_in = (Bytef*)inBuf;
- zstream.avail_in = compLen;
- zstream.next_out = (Bytef*) writeBuf;
- zstream.avail_out = sizeof(writeBuf);
- zstream.data_type = Z_UNKNOWN;
-
- /*
- * Use the undocumented "negative window bits" feature to tell zlib
- * that there's no zlib header waiting for it.
- */
- zerr = inflateInit2(&zstream, -MAX_WBITS);
- if (zerr != Z_OK) {
- if (zerr == Z_VERSION_ERROR) {
- ALOGE("Installed zlib is not compatible with linked version (%s)\n",
- ZLIB_VERSION);
- } else {
- ALOGE("Call to inflateInit2 failed (zerr=%d)\n", zerr);
- }
- goto bail;
- }
-
- /*
- * Loop while we have more to do.
- */
- do {
- /*
- * Expand data.
- */
- zerr = inflate(&zstream, Z_NO_FLUSH);
- if (zerr != Z_OK && zerr != Z_STREAM_END) {
- ALOGW("zlib inflate: zerr=%d (nIn=%p aIn=%u nOut=%p aOut=%u)\n",
- zerr, zstream.next_in, zstream.avail_in,
- zstream.next_out, zstream.avail_out);
- goto z_bail;
- }
-
- /* write when we're full or when we're done */
- if (zstream.avail_out == 0 ||
- (zerr == Z_STREAM_END && zstream.avail_out != sizeof(writeBuf)))
- {
- long writeSize = zstream.next_out - writeBuf;
- int cc = TEMP_FAILURE_RETRY(write(fd, writeBuf, writeSize));
- if (cc < 0) {
- ALOGW("write failed in inflate: %s", strerror(errno));
- goto z_bail;
- } else if (cc != (int) writeSize) {
- ALOGW("write failed in inflate (%d vs %ld)", cc, writeSize);
- goto z_bail;
- }
-
- zstream.next_out = writeBuf;
- zstream.avail_out = sizeof(writeBuf);
- }
- } while (zerr == Z_OK);
-
- assert(zerr == Z_STREAM_END); /* other errors should've been caught */
-
- /* paranoia */
- if (zstream.total_out != uncompLen) {
- ALOGW("Size mismatch on inflated file (%ld vs " ZD ")\n",
- zstream.total_out, (ZD_TYPE) uncompLen);
- goto z_bail;
- }
-
- result = true;
-
-z_bail:
- inflateEnd(&zstream); /* free up any allocated structures */
-
-bail:
- return result;
+ return true;
}
diff --git a/libs/androidfw/ZipUtils.cpp b/libs/androidfw/ZipUtils.cpp
index 997eb7d85edd..e9ac2fe25f58 100644
--- a/libs/androidfw/ZipUtils.cpp
+++ b/libs/androidfw/ZipUtils.cpp
@@ -33,19 +33,29 @@
using namespace android;
+static inline unsigned long get4LE(const unsigned char* buf) {
+ return buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24);
+}
+
+
+static const unsigned long kReadBufSize = 32768;
+
/*
* Utility function that expands zip/gzip "deflate" compressed data
* into a buffer.
*
- * "fd" is an open file positioned at the start of the "deflate" data
+ * (This is a clone of the previous function, but it takes a FILE* instead
+ * of an fd. We could pass fileno(fd) to the above, but we can run into
+ * trouble when "fp" has a different notion of what fd's file position is.)
+ *
+ * "fp" is an open file positioned at the start of the "deflate" data
* "buf" must hold at least "uncompressedLen" bytes.
*/
-/*static*/ bool ZipUtils::inflateToBuffer(int fd, void* buf,
+/*static*/ template<typename T> bool inflateToBuffer(T& reader, void* buf,
long uncompressedLen, long compressedLen)
{
bool result = false;
- const unsigned long kReadBufSize = 32768;
- unsigned char* readBuf = NULL;
+
z_stream zstream;
int zerr;
unsigned long compRemaining;
@@ -53,15 +63,12 @@ using namespace android;
assert(uncompressedLen >= 0);
assert(compressedLen >= 0);
- readBuf = new unsigned char[kReadBufSize];
- if (readBuf == NULL)
- goto bail;
compRemaining = compressedLen;
/*
* Initialize the zlib stream.
*/
- memset(&zstream, 0, sizeof(zstream));
+ memset(&zstream, 0, sizeof(zstream));
zstream.zalloc = Z_NULL;
zstream.zfree = Z_NULL;
zstream.opaque = Z_NULL;
@@ -71,10 +78,10 @@ using namespace android;
zstream.avail_out = uncompressedLen;
zstream.data_type = Z_UNKNOWN;
- /*
- * Use the undocumented "negative window bits" feature to tell zlib
- * that there's no zlib header waiting for it.
- */
+ /*
+ * Use the undocumented "negative window bits" feature to tell zlib
+ * that there's no zlib header waiting for it.
+ */
zerr = inflateInit2(&zstream, -MAX_WBITS);
if (zerr != Z_OK) {
if (zerr == Z_VERSION_ERROR) {
@@ -99,18 +106,18 @@ using namespace android;
ALOGV("+++ reading %ld bytes (%ld left)\n",
getSize, compRemaining);
- int cc = TEMP_FAILURE_RETRY(read(fd, readBuf, getSize));
- if (cc < 0) {
- ALOGW("inflate read failed: %s", strerror(errno));
- } else if (cc != (int) getSize) {
- ALOGW("inflate read failed (%d vs %ld)", cc, getSize);
+ unsigned char* nextBuffer = NULL;
+ const unsigned long nextSize = reader.read(&nextBuffer, getSize);
+
+ if (nextSize < getSize || nextBuffer == NULL) {
+ ALOGD("inflate read failed (%ld vs %ld)\n", nextSize, getSize);
goto z_bail;
}
- compRemaining -= getSize;
+ compRemaining -= nextSize;
- zstream.next_in = readBuf;
- zstream.avail_in = getSize;
+ zstream.next_in = nextBuffer;
+ zstream.avail_in = nextSize;
}
/* uncompress the data */
@@ -138,121 +145,99 @@ z_bail:
inflateEnd(&zstream); /* free up any allocated structures */
bail:
- delete[] readBuf;
return result;
}
-/*
- * Utility function that expands zip/gzip "deflate" compressed data
- * into a buffer.
- *
- * (This is a clone of the previous function, but it takes a FILE* instead
- * of an fd. We could pass fileno(fd) to the above, but we can run into
- * trouble when "fp" has a different notion of what fd's file position is.)
- *
- * "fp" is an open file positioned at the start of the "deflate" data
- * "buf" must hold at least "uncompressedLen" bytes.
- */
-/*static*/ bool ZipUtils::inflateToBuffer(FILE* fp, void* buf,
- long uncompressedLen, long compressedLen)
-{
- bool result = false;
- const unsigned long kReadBufSize = 32768;
- unsigned char* readBuf = NULL;
- z_stream zstream;
- int zerr;
- unsigned long compRemaining;
-
- assert(uncompressedLen >= 0);
- assert(compressedLen >= 0);
-
- readBuf = new unsigned char[kReadBufSize];
- if (readBuf == NULL)
- goto bail;
- compRemaining = compressedLen;
-
- /*
- * Initialize the zlib stream.
- */
- memset(&zstream, 0, sizeof(zstream));
- zstream.zalloc = Z_NULL;
- zstream.zfree = Z_NULL;
- zstream.opaque = Z_NULL;
- zstream.next_in = NULL;
- zstream.avail_in = 0;
- zstream.next_out = (Bytef*) buf;
- zstream.avail_out = uncompressedLen;
- zstream.data_type = Z_UNKNOWN;
-
- /*
- * Use the undocumented "negative window bits" feature to tell zlib
- * that there's no zlib header waiting for it.
- */
- zerr = inflateInit2(&zstream, -MAX_WBITS);
- if (zerr != Z_OK) {
- if (zerr == Z_VERSION_ERROR) {
- ALOGE("Installed zlib is not compatible with linked version (%s)\n",
- ZLIB_VERSION);
- } else {
- ALOGE("Call to inflateInit2 failed (zerr=%d)\n", zerr);
- }
- goto bail;
+class FileReader {
+public:
+ FileReader(FILE* fp) :
+ mFp(fp), mReadBuf(new unsigned char[kReadBufSize])
+ {
+ }
+
+ ~FileReader() {
+ delete[] mReadBuf;
+ }
+
+ long read(unsigned char** nextBuffer, long readSize) const {
+ *nextBuffer = mReadBuf;
+ return fread(mReadBuf, 1, readSize, mFp);
+ }
+
+ FILE* mFp;
+ unsigned char* mReadBuf;
+};
+
+class FdReader {
+public:
+ FdReader(int fd) :
+ mFd(fd), mReadBuf(new unsigned char[kReadBufSize])
+ {
+ }
+
+ ~FdReader() {
+ delete[] mReadBuf;
+ }
+
+ long read(unsigned char** nextBuffer, long readSize) const {
+ *nextBuffer = mReadBuf;
+ return TEMP_FAILURE_RETRY(::read(mFd, mReadBuf, readSize));
+ }
+
+ int mFd;
+ unsigned char* mReadBuf;
+};
+
+class BufferReader {
+public:
+ BufferReader(void* input, size_t inputSize) :
+ mInput(reinterpret_cast<unsigned char*>(input)),
+ mInputSize(inputSize),
+ mBufferReturned(false)
+ {
}
- /*
- * Loop while we have data.
- */
- do {
- unsigned long getSize;
-
- /* read as much as we can */
- if (zstream.avail_in == 0) {
- getSize = (compRemaining > kReadBufSize) ?
- kReadBufSize : compRemaining;
- ALOGV("+++ reading %ld bytes (%ld left)\n",
- getSize, compRemaining);
-
- int cc = fread(readBuf, 1, getSize, fp);
- if (cc != (int) getSize) {
- ALOGD("inflate read failed (%d vs %ld)\n",
- cc, getSize);
- goto z_bail;
- }
-
- compRemaining -= getSize;
-
- zstream.next_in = readBuf;
- zstream.avail_in = getSize;
+ long read(unsigned char** nextBuffer, long readSize) {
+ if (!mBufferReturned) {
+ mBufferReturned = true;
+ *nextBuffer = mInput;
+ return mInputSize;
}
- /* uncompress the data */
- zerr = inflate(&zstream, Z_NO_FLUSH);
- if (zerr != Z_OK && zerr != Z_STREAM_END) {
- ALOGD("zlib inflate call failed (zerr=%d)\n", zerr);
- goto z_bail;
- }
+ *nextBuffer = NULL;
+ return 0;
+ }
- /* output buffer holds all, so no need to write the output */
- } while (zerr == Z_OK);
+ unsigned char* mInput;
+ const size_t mInputSize;
+ bool mBufferReturned;
+};
- assert(zerr == Z_STREAM_END); /* other errors should've been caught */
+/*static*/ bool ZipUtils::inflateToBuffer(FILE* fp, void* buf,
+ long uncompressedLen, long compressedLen)
+{
+ FileReader reader(fp);
+ return ::inflateToBuffer<FileReader>(reader, buf,
+ uncompressedLen, compressedLen);
+}
- if ((long) zstream.total_out != uncompressedLen) {
- ALOGW("Size mismatch on inflated file (%ld vs %ld)\n",
- zstream.total_out, uncompressedLen);
- goto z_bail;
- }
+/*static*/ bool ZipUtils::inflateToBuffer(int fd, void* buf,
+ long uncompressedLen, long compressedLen)
+{
+ FdReader reader(fd);
+ return ::inflateToBuffer<FdReader>(reader, buf,
+ uncompressedLen, compressedLen);
+}
- // success!
- result = true;
+/*static*/ bool ZipUtils::inflateToBuffer(void* in, void* buf,
+ long uncompressedLen, long compressedLen)
+{
+ BufferReader reader(in, compressedLen);
+ return ::inflateToBuffer<BufferReader>(reader, buf,
+ uncompressedLen, compressedLen);
+}
-z_bail:
- inflateEnd(&zstream); /* free up any allocated structures */
-bail:
- delete[] readBuf;
- return result;
-}
/*
* Look at the contents of a gzip archive. We want to know where the
@@ -338,8 +323,8 @@ bail:
fseek(fp, curPosn, SEEK_SET);
*pCompressionMethod = method;
- *pCRC32 = ZipFileRO::get4LE(&buf[0]);
- *pUncompressedLen = ZipFileRO::get4LE(&buf[4]);
+ *pCRC32 = get4LE(&buf[0]);
+ *pUncompressedLen = get4LE(&buf[4]);
return true;
}
diff --git a/libs/androidfw/tests/Android.mk b/libs/androidfw/tests/Android.mk
index 05222128f3fc..3c55375fc8aa 100644
--- a/libs/androidfw/tests/Android.mk
+++ b/libs/androidfw/tests/Android.mk
@@ -5,7 +5,7 @@ include $(CLEAR_VARS)
# Build the unit tests.
test_src_files := \
ObbFile_test.cpp \
- ZipFileRO_test.cpp
+ ZipUtils_test.cpp
shared_libraries := \
libandroidfw \
diff --git a/libs/androidfw/tests/ZipFileRO_test.cpp b/libs/androidfw/tests/ZipUtils_test.cpp
index cb9c721a912d..c6038b597f4e 100644
--- a/libs/androidfw/tests/ZipFileRO_test.cpp
+++ b/libs/androidfw/tests/ZipUtils_test.cpp
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-#define LOG_TAG "ZipFileRO_test"
+#define LOG_TAG "ZipUtils_test"
#include <utils/Log.h>
-#include <androidfw/ZipFileRO.h>
+#include <androidfw/ZipUtils.h>
#include <gtest/gtest.h>
@@ -25,7 +25,7 @@
namespace android {
-class ZipFileROTest : public testing::Test {
+class ZipUtilsTest : public testing::Test {
protected:
virtual void SetUp() {
}
@@ -34,13 +34,13 @@ protected:
}
};
-TEST_F(ZipFileROTest, ZipTimeConvertSuccess) {
+TEST_F(ZipUtilsTest, ZipTimeConvertSuccess) {
struct tm t;
// 2011-06-29 14:40:40
long when = 0x3EDD7514;
- ZipFileRO::zipTimeToTimespec(when, &t);
+ ZipUtils::zipTimeToTimespec(when, &t);
EXPECT_EQ(2011, t.tm_year + 1900)
<< "Year was improperly converted.";
diff --git a/services/common_time/Android.mk b/libs/common_time/Android.mk
index 75eb5281f692..75eb5281f692 100644
--- a/services/common_time/Android.mk
+++ b/libs/common_time/Android.mk
diff --git a/services/common_time/clock_recovery.cpp b/libs/common_time/clock_recovery.cpp
index 3a7c70c3e17d..3a7c70c3e17d 100644
--- a/services/common_time/clock_recovery.cpp
+++ b/libs/common_time/clock_recovery.cpp
diff --git a/services/common_time/clock_recovery.h b/libs/common_time/clock_recovery.h
index b6c87ffaf37e..b6c87ffaf37e 100644
--- a/services/common_time/clock_recovery.h
+++ b/libs/common_time/clock_recovery.h
diff --git a/services/common_time/common_clock.cpp b/libs/common_time/common_clock.cpp
index c9eb3884440d..c9eb3884440d 100644
--- a/services/common_time/common_clock.cpp
+++ b/libs/common_time/common_clock.cpp
diff --git a/services/common_time/common_clock.h b/libs/common_time/common_clock.h
index b786fdceba5f..b786fdceba5f 100644
--- a/services/common_time/common_clock.h
+++ b/libs/common_time/common_clock.h
diff --git a/services/common_time/common_clock_service.cpp b/libs/common_time/common_clock_service.cpp
index 9ca6f3523084..9ca6f3523084 100644
--- a/services/common_time/common_clock_service.cpp
+++ b/libs/common_time/common_clock_service.cpp
diff --git a/services/common_time/common_clock_service.h b/libs/common_time/common_clock_service.h
index bd663f06d43a..bd663f06d43a 100644
--- a/services/common_time/common_clock_service.h
+++ b/libs/common_time/common_clock_service.h
diff --git a/services/common_time/common_time_config_service.cpp b/libs/common_time/common_time_config_service.cpp
index 958561818423..958561818423 100644
--- a/services/common_time/common_time_config_service.cpp
+++ b/libs/common_time/common_time_config_service.cpp
diff --git a/services/common_time/common_time_config_service.h b/libs/common_time/common_time_config_service.h
index 89806dd87e29..89806dd87e29 100644
--- a/services/common_time/common_time_config_service.h
+++ b/libs/common_time/common_time_config_service.h
diff --git a/services/common_time/common_time_server.cpp b/libs/common_time/common_time_server.cpp
index 21e706fa0722..21e706fa0722 100644
--- a/services/common_time/common_time_server.cpp
+++ b/libs/common_time/common_time_server.cpp
diff --git a/services/common_time/common_time_server.h b/libs/common_time/common_time_server.h
index 6e1805086978..6e1805086978 100644
--- a/services/common_time/common_time_server.h
+++ b/libs/common_time/common_time_server.h
diff --git a/services/common_time/common_time_server_api.cpp b/libs/common_time/common_time_server_api.cpp
index e15707181bca..e15707181bca 100644
--- a/services/common_time/common_time_server_api.cpp
+++ b/libs/common_time/common_time_server_api.cpp
diff --git a/services/common_time/common_time_server_packets.cpp b/libs/common_time/common_time_server_packets.cpp
index 9833c37f2519..9833c37f2519 100644
--- a/services/common_time/common_time_server_packets.cpp
+++ b/libs/common_time/common_time_server_packets.cpp
diff --git a/services/common_time/common_time_server_packets.h b/libs/common_time/common_time_server_packets.h
index 57ba8a256308..57ba8a256308 100644
--- a/services/common_time/common_time_server_packets.h
+++ b/libs/common_time/common_time_server_packets.h
diff --git a/services/common_time/diag_thread.cpp b/libs/common_time/diag_thread.cpp
index 4cb955131099..4cb955131099 100644
--- a/services/common_time/diag_thread.cpp
+++ b/libs/common_time/diag_thread.cpp
diff --git a/services/common_time/diag_thread.h b/libs/common_time/diag_thread.h
index c630e0d9b525..c630e0d9b525 100644
--- a/services/common_time/diag_thread.h
+++ b/libs/common_time/diag_thread.h
diff --git a/services/common_time/main.cpp b/libs/common_time/main.cpp
index 49eb30abab66..49eb30abab66 100644
--- a/services/common_time/main.cpp
+++ b/libs/common_time/main.cpp
diff --git a/services/common_time/utils.cpp b/libs/common_time/utils.cpp
index ed2c77ddb3a5..ed2c77ddb3a5 100644
--- a/services/common_time/utils.cpp
+++ b/libs/common_time/utils.cpp
diff --git a/services/common_time/utils.h b/libs/common_time/utils.h
index c28cf0ac33d7..c28cf0ac33d7 100644
--- a/services/common_time/utils.h
+++ b/libs/common_time/utils.h
diff --git a/libs/hwui/FontRenderer.cpp b/libs/hwui/FontRenderer.cpp
index 00e78708dd31..0be17ff868b4 100644
--- a/libs/hwui/FontRenderer.cpp
+++ b/libs/hwui/FontRenderer.cpp
@@ -732,7 +732,9 @@ void FontRenderer::blurImage(uint8_t** image, int32_t width, int32_t height, int
if (mRs == 0) {
mRs = new RSC::RS();
- if (!mRs->init(RSC::RS_INIT_LOW_LATENCY | RSC::RS_INIT_SYNCHRONOUS)) {
+ // a null path is OK because there are no custom kernels used
+ // hence nothing gets cached by RS
+ if (!mRs->init("", RSC::RS_INIT_LOW_LATENCY | RSC::RS_INIT_SYNCHRONOUS)) {
ALOGE("blur RS failed to init");
}
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 35fc804594b5..4d76bed20424 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -1076,7 +1076,13 @@ void OpenGLRenderer::composeLayer(sp<Snapshot> current, sp<Snapshot> previous) {
}
} else if (!rect.isEmpty()) {
dirtyLayer(rect.left, rect.top, rect.right, rect.bottom);
+
+ save(0);
+ // the layer contains screen buffer content that shouldn't be alpha modulated
+ // (and any necessary alpha modulation was handled drawing into the layer)
+ mSnapshot->alpha = 1.0f;
composeLayerRect(layer, rect, true);
+ restore();
}
dirtyClip();
diff --git a/libs/hwui/SkiaShader.h b/libs/hwui/SkiaShader.h
index a63431cc32e6..cc56c5042196 100644
--- a/libs/hwui/SkiaShader.h
+++ b/libs/hwui/SkiaShader.h
@@ -145,7 +145,7 @@ struct SkiaBitmapShader: public SkiaShader {
GLuint* textureUnit);
private:
- SkiaBitmapShader() {
+ SkiaBitmapShader() : mBitmap(NULL), mTexture(NULL) {
}
SkBitmap* mBitmap;
diff --git a/services/input/Android.mk b/libs/input/Android.mk
index 6e944ef5cc96..6e944ef5cc96 100644
--- a/services/input/Android.mk
+++ b/libs/input/Android.mk
diff --git a/services/input/EventHub.cpp b/libs/input/EventHub.cpp
index 4d70d5f1ee08..fc324f8ce677 100644
--- a/services/input/EventHub.cpp
+++ b/libs/input/EventHub.cpp
@@ -509,8 +509,9 @@ bool EventHub::hasScanCode(int32_t deviceId, int32_t scanCode) const {
bool EventHub::hasLed(int32_t deviceId, int32_t led) const {
AutoMutex _l(mLock);
Device* device = getDeviceLocked(deviceId);
- if (device && led >= 0 && led <= LED_MAX) {
- if (test_bit(led, device->ledBitmask)) {
+ int32_t sc;
+ if (device && mapLed(device, led, &sc) == NO_ERROR) {
+ if (test_bit(sc, device->ledBitmask)) {
return true;
}
}
@@ -520,12 +521,17 @@ bool EventHub::hasLed(int32_t deviceId, int32_t led) const {
void EventHub::setLedState(int32_t deviceId, int32_t led, bool on) {
AutoMutex _l(mLock);
Device* device = getDeviceLocked(deviceId);
- if (device && !device->isVirtual() && led >= 0 && led <= LED_MAX) {
+ setLedStateLocked(device, led, on);
+}
+
+void EventHub::setLedStateLocked(Device* device, int32_t led, bool on) {
+ int32_t sc;
+ if (device && !device->isVirtual() && mapLed(device, led, &sc) != NAME_NOT_FOUND) {
struct input_event ev;
ev.time.tv_sec = 0;
ev.time.tv_usec = 0;
ev.type = EV_LED;
- ev.code = led;
+ ev.code = sc;
ev.value = on ? 1 : 0;
ssize_t nWrite;
@@ -570,6 +576,57 @@ bool EventHub::setKeyboardLayoutOverlay(int32_t deviceId,
return false;
}
+static String8 generateDescriptor(InputDeviceIdentifier& identifier) {
+ String8 rawDescriptor;
+ rawDescriptor.appendFormat(":%04x:%04x:", identifier.vendor,
+ identifier.product);
+ // TODO add handling for USB devices to not uniqueify kbs that show up twice
+ if (!identifier.uniqueId.isEmpty()) {
+ rawDescriptor.append("uniqueId:");
+ rawDescriptor.append(identifier.uniqueId);
+ } else if (identifier.nonce != 0) {
+ rawDescriptor.appendFormat("nonce:%04x", identifier.nonce);
+ }
+
+ if (identifier.vendor == 0 && identifier.product == 0) {
+ // If we don't know the vendor and product id, then the device is probably
+ // built-in so we need to rely on other information to uniquely identify
+ // the input device. Usually we try to avoid relying on the device name or
+ // location but for built-in input device, they are unlikely to ever change.
+ if (!identifier.name.isEmpty()) {
+ rawDescriptor.append("name:");
+ rawDescriptor.append(identifier.name);
+ } else if (!identifier.location.isEmpty()) {
+ rawDescriptor.append("location:");
+ rawDescriptor.append(identifier.location);
+ }
+ }
+ identifier.descriptor = sha1(rawDescriptor);
+ return rawDescriptor;
+}
+
+void EventHub::assignDescriptorLocked(InputDeviceIdentifier& identifier) {
+ // Compute a device descriptor that uniquely identifies the device.
+ // The descriptor is assumed to be a stable identifier. Its value should not
+ // change between reboots, reconnections, firmware updates or new releases
+ // of Android. In practice we sometimes get devices that cannot be uniquely
+ // identified. In this case we enforce uniqueness between connected devices.
+ // Ideally, we also want the descriptor to be short and relatively opaque.
+
+ identifier.nonce = 0;
+ String8 rawDescriptor = generateDescriptor(identifier);
+ if (identifier.uniqueId.isEmpty()) {
+ // If it didn't have a unique id check for conflicts and enforce
+ // uniqueness if necessary.
+ while(getDeviceByDescriptorLocked(identifier.descriptor) != NULL) {
+ identifier.nonce++;
+ rawDescriptor = generateDescriptor(identifier);
+ }
+ }
+ ALOGV("Created descriptor: raw=%s, cooked=%s", rawDescriptor.string(),
+ identifier.descriptor.string());
+}
+
void EventHub::vibrate(int32_t deviceId, nsecs_t duration) {
AutoMutex _l(mLock);
Device* device = getDeviceLocked(deviceId);
@@ -626,6 +683,17 @@ void EventHub::cancelVibrate(int32_t deviceId) {
}
}
+EventHub::Device* EventHub::getDeviceByDescriptorLocked(String8& descriptor) const {
+ size_t size = mDevices.size();
+ for (size_t i = 0; i < size; i++) {
+ Device* device = mDevices.valueAt(i);
+ if (descriptor.compare(device->identifier.descriptor) == 0) {
+ return device;
+ }
+ }
+ return NULL;
+}
+
EventHub::Device* EventHub::getDeviceLocked(int32_t deviceId) const {
if (deviceId == BUILT_IN_KEYBOARD_ID) {
deviceId = mBuiltInKeyboardId;
@@ -1065,7 +1133,7 @@ status_t EventHub::openDeviceLocked(const char *devicePath) {
}
// Fill in the descriptor.
- setDescriptor(identifier);
+ assignDescriptorLocked(identifier);
// Make file descriptor non-blocking for use with poll().
if (fcntl(fd, F_SETFL, O_NONBLOCK)) {
@@ -1237,8 +1305,10 @@ status_t EventHub::openDeviceLocked(const char *devicePath) {
device->classes |= INPUT_DEVICE_CLASS_EXTERNAL;
}
- if (device->classes & (INPUT_DEVICE_CLASS_JOYSTICK | INPUT_DEVICE_CLASS_GAMEPAD)) {
+ if (device->classes & (INPUT_DEVICE_CLASS_JOYSTICK | INPUT_DEVICE_CLASS_DPAD)
+ && device->classes & INPUT_DEVICE_CLASS_GAMEPAD) {
device->controllerNumber = getNextControllerNumberLocked(device);
+ setLedForController(device);
}
// Register with epoll.
@@ -1254,6 +1324,12 @@ status_t EventHub::openDeviceLocked(const char *devicePath) {
// Enable wake-lock behavior on kernels that support it.
// TODO: Only need this for devices that can really wake the system.
+#ifndef EVIOCSSUSPENDBLOCK
+ // uapi headers don't include EVIOCSSUSPENDBLOCK, and future kernels
+ // will use an epoll flag instead, so as long as we want to support
+ // this feature, we need to be prepared to define the ioctl ourselves.
+#define EVIOCSSUSPENDBLOCK _IOW('E', 0x91, int)
+#endif
bool usingSuspendBlockIoctl = !ioctl(fd, EVIOCSSUSPENDBLOCK, 1);
// Tell the kernel that we want to use the monotonic clock for reporting timestamps
@@ -1293,7 +1369,7 @@ void EventHub::createVirtualKeyboardLocked() {
InputDeviceIdentifier identifier;
identifier.name = "Virtual";
identifier.uniqueId = "<virtual>";
- setDescriptor(identifier);
+ assignDescriptorLocked(identifier);
Device* device = new Device(-1, VIRTUAL_KEYBOARD_ID, String8("<virtual>"), identifier);
device->classes = INPUT_DEVICE_CLASS_KEYBOARD
@@ -1372,6 +1448,11 @@ void EventHub::releaseControllerNumberLocked(Device* device) {
mControllerNumbers.clearBit(static_cast<uint32_t>(num - 1));
}
+void EventHub::setLedForController(Device* device) {
+ for (int i = 0; i < MAX_CONTROLLER_LEDS; i++) {
+ setLedStateLocked(device, ALED_CONTROLLER_1 + i, device->controllerNumber == i + 1);
+ }
+}
bool EventHub::hasKeycodeLocked(Device* device, int keycode) const {
if (!device->keyMap.haveKeyLayout() || !device->keyBitmask) {
@@ -1391,6 +1472,21 @@ bool EventHub::hasKeycodeLocked(Device* device, int keycode) const {
return false;
}
+status_t EventHub::mapLed(Device* device, int32_t led, int32_t* outScanCode) const {
+ if (!device->keyMap.haveKeyLayout() || !device->ledBitmask) {
+ return NAME_NOT_FOUND;
+ }
+
+ int32_t scanCode;
+ if(device->keyMap.keyLayoutMap->findScanCodeForLed(led, &scanCode) != NAME_NOT_FOUND) {
+ if(scanCode >= 0 && scanCode <= LED_MAX && test_bit(scanCode, device->ledBitmask)) {
+ *outScanCode = scanCode;
+ return NO_ERROR;
+ }
+ }
+ return NAME_NOT_FOUND;
+}
+
status_t EventHub::closeDeviceByPathLocked(const char *devicePath) {
Device* device = getDeviceByPathLocked(devicePath);
if (device) {
diff --git a/services/input/EventHub.h b/libs/input/EventHub.h
index ae28f016f726..86c05af591ff 100644
--- a/services/input/EventHub.h
+++ b/libs/input/EventHub.h
@@ -231,6 +231,8 @@ public:
uint8_t* outFlags) const = 0;
virtual bool hasScanCode(int32_t deviceId, int32_t scanCode) const = 0;
+
+ /* LED related functions expect Android LED constants, not scan codes or HID usages */
virtual bool hasLed(int32_t deviceId, int32_t led) const = 0;
virtual void setLedState(int32_t deviceId, int32_t led, bool on) = 0;
@@ -371,6 +373,7 @@ private:
status_t openDeviceLocked(const char *devicePath);
void createVirtualKeyboardLocked();
void addDeviceLocked(Device* device);
+ void assignDescriptorLocked(InputDeviceIdentifier& identifier);
status_t closeDeviceByPathLocked(const char *devicePath);
void closeDeviceLocked(Device* device);
@@ -380,6 +383,7 @@ private:
void scanDevicesLocked();
status_t readNotifyLocked();
+ Device* getDeviceByDescriptorLocked(String8& descriptor) const;
Device* getDeviceLocked(int32_t deviceId) const;
Device* getDeviceByPathLocked(const char* devicePath) const;
@@ -393,6 +397,10 @@ private:
int32_t getNextControllerNumberLocked(Device* device);
void releaseControllerNumberLocked(Device* device);
+ void setLedForController(Device* device);
+
+ status_t mapLed(Device* device, int32_t led, int32_t* outScanCode) const;
+ void setLedStateLocked(Device* device, int32_t led, bool on);
// Protect all internal state.
mutable Mutex mLock;
diff --git a/services/input/InputApplication.cpp b/libs/input/InputApplication.cpp
index a99e637fdf43..a99e637fdf43 100644
--- a/services/input/InputApplication.cpp
+++ b/libs/input/InputApplication.cpp
diff --git a/services/input/InputApplication.h b/libs/input/InputApplication.h
index 1f5504c2d234..1f5504c2d234 100644
--- a/services/input/InputApplication.h
+++ b/libs/input/InputApplication.h
diff --git a/services/input/InputDispatcher.cpp b/libs/input/InputDispatcher.cpp
index 10a639e7aaad..4d447878da4b 100644
--- a/services/input/InputDispatcher.cpp
+++ b/libs/input/InputDispatcher.cpp
@@ -1020,7 +1020,14 @@ void InputDispatcher::resumeAfterTargetsNotReadyTimeoutLocked(nsecs_t newTimeout
sp<InputWindowHandle> windowHandle = connection->inputWindowHandle;
if (windowHandle != NULL) {
- mTouchState.removeWindow(windowHandle);
+ const InputWindowInfo* info = windowHandle->getInfo();
+ if (info) {
+ ssize_t stateIndex = mTouchStatesByDisplay.indexOfKey(info->displayId);
+ if (stateIndex >= 0) {
+ mTouchStatesByDisplay.editValueAt(stateIndex).removeWindow(
+ windowHandle);
+ }
+ }
}
if (connection->status == Connection::STATUS_NORMAL) {
@@ -1161,11 +1168,21 @@ int32_t InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime,
InjectionPermission injectionPermission = INJECTION_PERMISSION_UNKNOWN;
sp<InputWindowHandle> newHoverWindowHandle;
- bool isSplit = mTouchState.split;
- bool switchedDevice = mTouchState.deviceId >= 0 && mTouchState.displayId >= 0
- && (mTouchState.deviceId != entry->deviceId
- || mTouchState.source != entry->source
- || mTouchState.displayId != displayId);
+ // Copy current touch state into mTempTouchState.
+ // This state is always reset at the end of this function, so if we don't find state
+ // for the specified display then our initial state will be empty.
+ const TouchState* oldState = NULL;
+ ssize_t oldStateIndex = mTouchStatesByDisplay.indexOfKey(displayId);
+ if (oldStateIndex >= 0) {
+ oldState = &mTouchStatesByDisplay.valueAt(oldStateIndex);
+ mTempTouchState.copyFrom(*oldState);
+ }
+
+ bool isSplit = mTempTouchState.split;
+ bool switchedDevice = mTempTouchState.deviceId >= 0 && mTempTouchState.displayId >= 0
+ && (mTempTouchState.deviceId != entry->deviceId
+ || mTempTouchState.source != entry->source
+ || mTempTouchState.displayId != displayId);
bool isHoverAction = (maskedAction == AMOTION_EVENT_ACTION_HOVER_MOVE
|| maskedAction == AMOTION_EVENT_ACTION_HOVER_ENTER
|| maskedAction == AMOTION_EVENT_ACTION_HOVER_EXIT);
@@ -1175,11 +1192,10 @@ int32_t InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime,
bool wrongDevice = false;
if (newGesture) {
bool down = maskedAction == AMOTION_EVENT_ACTION_DOWN;
- if (switchedDevice && mTouchState.down && !down) {
+ if (switchedDevice && mTempTouchState.down && !down) {
#if DEBUG_FOCUS
ALOGD("Dropping event because a pointer for a different device is already down.");
#endif
- mTempTouchState.copyFrom(mTouchState);
injectionResult = INPUT_EVENT_INJECTION_FAILED;
switchedDevice = false;
wrongDevice = true;
@@ -1191,8 +1207,6 @@ int32_t InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime,
mTempTouchState.source = entry->source;
mTempTouchState.displayId = displayId;
isSplit = false;
- } else {
- mTempTouchState.copyFrom(mTouchState);
}
if (newGesture || (isSplit && maskedAction == AMOTION_EVENT_ACTION_POINTER_DOWN)) {
@@ -1515,32 +1529,31 @@ Failed:
if (isHoverAction) {
// Started hovering, therefore no longer down.
- if (mTouchState.down) {
+ if (oldState && oldState->down) {
#if DEBUG_FOCUS
ALOGD("Conflicting pointer actions: Hover received while pointer was down.");
#endif
*outConflictingPointerActions = true;
}
- mTouchState.reset();
+ mTempTouchState.reset();
if (maskedAction == AMOTION_EVENT_ACTION_HOVER_ENTER
|| maskedAction == AMOTION_EVENT_ACTION_HOVER_MOVE) {
- mTouchState.deviceId = entry->deviceId;
- mTouchState.source = entry->source;
- mTouchState.displayId = displayId;
+ mTempTouchState.deviceId = entry->deviceId;
+ mTempTouchState.source = entry->source;
+ mTempTouchState.displayId = displayId;
}
} else if (maskedAction == AMOTION_EVENT_ACTION_UP
|| maskedAction == AMOTION_EVENT_ACTION_CANCEL) {
// All pointers up or canceled.
- mTouchState.reset();
+ mTempTouchState.reset();
} else if (maskedAction == AMOTION_EVENT_ACTION_DOWN) {
// First pointer went down.
- if (mTouchState.down) {
+ if (oldState && oldState->down) {
#if DEBUG_FOCUS
ALOGD("Conflicting pointer actions: Down received while already down.");
#endif
*outConflictingPointerActions = true;
}
- mTouchState.copyFrom(mTempTouchState);
} else if (maskedAction == AMOTION_EVENT_ACTION_POINTER_UP) {
// One pointer went up.
if (isSplit) {
@@ -1559,12 +1572,20 @@ Failed:
i += 1;
}
}
- mTouchState.copyFrom(mTempTouchState);
- } else if (maskedAction == AMOTION_EVENT_ACTION_SCROLL) {
- // Discard temporary touch state since it was only valid for this action.
- } else {
- // Save changes to touch state as-is for all other actions.
- mTouchState.copyFrom(mTempTouchState);
+ }
+
+ // Save changes unless the action was scroll in which case the temporary touch
+ // state was only valid for this one action.
+ if (maskedAction != AMOTION_EVENT_ACTION_SCROLL) {
+ if (mTempTouchState.displayId >= 0) {
+ if (oldStateIndex >= 0) {
+ mTouchStatesByDisplay.editValueAt(oldStateIndex).copyFrom(mTempTouchState);
+ } else {
+ mTouchStatesByDisplay.add(displayId, mTempTouchState);
+ }
+ } else if (oldStateIndex >= 0) {
+ mTouchStatesByDisplay.removeItemsAt(oldStateIndex);
+ }
}
// Update hover state.
@@ -2316,7 +2337,7 @@ InputDispatcher::splitMotionEvent(const MotionEntry* originalMotionEntry, BitSet
originalMotionEntry->yPrecision,
originalMotionEntry->downTime,
originalMotionEntry->displayId,
- splitPointerCount, splitPointerProperties, splitPointerCoords);
+ splitPointerCount, splitPointerProperties, splitPointerCoords, 0, 0);
if (originalMotionEntry->injectionState) {
splitMotionEntry->injectionState = originalMotionEntry->injectionState;
@@ -2488,7 +2509,7 @@ void InputDispatcher::notifyMotion(const NotifyMotionArgs* args) {
args->action, args->flags, args->metaState, args->buttonState,
args->edgeFlags, args->xPrecision, args->yPrecision, args->downTime,
args->displayId,
- args->pointerCount, args->pointerProperties, args->pointerCoords);
+ args->pointerCount, args->pointerProperties, args->pointerCoords, 0, 0);
needWake = enqueueInboundEventLocked(newEntry);
mLock.unlock();
@@ -2536,7 +2557,7 @@ void InputDispatcher::notifyDeviceReset(const NotifyDeviceResetArgs* args) {
}
}
-int32_t InputDispatcher::injectInputEvent(const InputEvent* event,
+int32_t InputDispatcher::injectInputEvent(const InputEvent* event, int32_t displayId,
int32_t injectorPid, int32_t injectorUid, int32_t syncMode, int32_t timeoutMillis,
uint32_t policyFlags) {
#if DEBUG_INBOUND_EVENT_DETAILS
@@ -2587,7 +2608,6 @@ int32_t InputDispatcher::injectInputEvent(const InputEvent* event,
case AINPUT_EVENT_TYPE_MOTION: {
const MotionEvent* motionEvent = static_cast<const MotionEvent*>(event);
- int32_t displayId = ADISPLAY_ID_DEFAULT;
int32_t action = motionEvent->getAction();
size_t pointerCount = motionEvent->getPointerCount();
const PointerProperties* pointerProperties = motionEvent->getPointerProperties();
@@ -2610,7 +2630,8 @@ int32_t InputDispatcher::injectInputEvent(const InputEvent* event,
motionEvent->getEdgeFlags(),
motionEvent->getXPrecision(), motionEvent->getYPrecision(),
motionEvent->getDownTime(), displayId,
- uint32_t(pointerCount), pointerProperties, samplePointerCoords);
+ uint32_t(pointerCount), pointerProperties, samplePointerCoords,
+ motionEvent->getXOffset(), motionEvent->getYOffset());
lastInjectedEntry = firstInjectedEntry;
for (size_t i = motionEvent->getHistorySize(); i > 0; i--) {
sampleEventTimes += 1;
@@ -2622,7 +2643,8 @@ int32_t InputDispatcher::injectInputEvent(const InputEvent* event,
motionEvent->getEdgeFlags(),
motionEvent->getXPrecision(), motionEvent->getYPrecision(),
motionEvent->getDownTime(), displayId,
- uint32_t(pointerCount), pointerProperties, samplePointerCoords);
+ uint32_t(pointerCount), pointerProperties, samplePointerCoords,
+ motionEvent->getXOffset(), motionEvent->getYOffset());
lastInjectedEntry->next = nextInjectedEntry;
lastInjectedEntry = nextInjectedEntry;
}
@@ -2847,22 +2869,25 @@ void InputDispatcher::setInputWindows(const Vector<sp<InputWindowHandle> >& inpu
mFocusedWindowHandle = newFocusedWindowHandle;
}
- for (size_t i = 0; i < mTouchState.windows.size(); i++) {
- TouchedWindow& touchedWindow = mTouchState.windows.editItemAt(i);
- if (!hasWindowHandleLocked(touchedWindow.windowHandle)) {
+ for (size_t d = 0; d < mTouchStatesByDisplay.size(); d++) {
+ TouchState& state = mTouchStatesByDisplay.editValueAt(d);
+ for (size_t i = 0; i < state.windows.size(); i++) {
+ TouchedWindow& touchedWindow = state.windows.editItemAt(i);
+ if (!hasWindowHandleLocked(touchedWindow.windowHandle)) {
#if DEBUG_FOCUS
- ALOGD("Touched window was removed: %s",
- touchedWindow.windowHandle->getName().string());
+ ALOGD("Touched window was removed: %s",
+ touchedWindow.windowHandle->getName().string());
#endif
- sp<InputChannel> touchedInputChannel =
- touchedWindow.windowHandle->getInputChannel();
- if (touchedInputChannel != NULL) {
- CancelationOptions options(CancelationOptions::CANCEL_POINTER_EVENTS,
- "touched window was removed");
- synthesizeCancelationEventsForInputChannelLocked(
- touchedInputChannel, options);
+ sp<InputChannel> touchedInputChannel =
+ touchedWindow.windowHandle->getInputChannel();
+ if (touchedInputChannel != NULL) {
+ CancelationOptions options(CancelationOptions::CANCEL_POINTER_EVENTS,
+ "touched window was removed");
+ synthesizeCancelationEventsForInputChannelLocked(
+ touchedInputChannel, options);
+ }
+ state.windows.removeAt(i--);
}
- mTouchState.windows.removeAt(i--);
}
}
@@ -3003,23 +3028,27 @@ bool InputDispatcher::transferTouchFocus(const sp<InputChannel>& fromChannel,
}
bool found = false;
- for (size_t i = 0; i < mTouchState.windows.size(); i++) {
- const TouchedWindow& touchedWindow = mTouchState.windows[i];
- if (touchedWindow.windowHandle == fromWindowHandle) {
- int32_t oldTargetFlags = touchedWindow.targetFlags;
- BitSet32 pointerIds = touchedWindow.pointerIds;
-
- mTouchState.windows.removeAt(i);
-
- int32_t newTargetFlags = oldTargetFlags
- & (InputTarget::FLAG_FOREGROUND
- | InputTarget::FLAG_SPLIT | InputTarget::FLAG_DISPATCH_AS_IS);
- mTouchState.addOrUpdateWindow(toWindowHandle, newTargetFlags, pointerIds);
-
- found = true;
- break;
+ for (size_t d = 0; d < mTouchStatesByDisplay.size(); d++) {
+ TouchState& state = mTouchStatesByDisplay.editValueAt(d);
+ for (size_t i = 0; i < state.windows.size(); i++) {
+ const TouchedWindow& touchedWindow = state.windows[i];
+ if (touchedWindow.windowHandle == fromWindowHandle) {
+ int32_t oldTargetFlags = touchedWindow.targetFlags;
+ BitSet32 pointerIds = touchedWindow.pointerIds;
+
+ state.windows.removeAt(i);
+
+ int32_t newTargetFlags = oldTargetFlags
+ & (InputTarget::FLAG_FOREGROUND
+ | InputTarget::FLAG_SPLIT | InputTarget::FLAG_DISPATCH_AS_IS);
+ state.addOrUpdateWindow(toWindowHandle, newTargetFlags, pointerIds);
+
+ found = true;
+ goto Found;
+ }
}
}
+Found:
if (! found) {
#if DEBUG_FOCUS
@@ -3063,7 +3092,7 @@ void InputDispatcher::resetAndDropEverythingLocked(const char* reason) {
drainInboundQueueLocked();
resetANRTimeoutsLocked();
- mTouchState.reset();
+ mTouchStatesByDisplay.clear();
mLastHoverWindowHandle.clear();
}
@@ -3098,22 +3127,28 @@ void InputDispatcher::dumpDispatchStateLocked(String8& dump) {
dump.appendFormat(INDENT "FocusedWindow: name='%s'\n",
mFocusedWindowHandle != NULL ? mFocusedWindowHandle->getName().string() : "<null>");
- dump.appendFormat(INDENT "TouchDown: %s\n", toString(mTouchState.down));
- dump.appendFormat(INDENT "TouchSplit: %s\n", toString(mTouchState.split));
- dump.appendFormat(INDENT "TouchDeviceId: %d\n", mTouchState.deviceId);
- dump.appendFormat(INDENT "TouchSource: 0x%08x\n", mTouchState.source);
- dump.appendFormat(INDENT "TouchDisplayId: %d\n", mTouchState.displayId);
- if (!mTouchState.windows.isEmpty()) {
- dump.append(INDENT "TouchedWindows:\n");
- for (size_t i = 0; i < mTouchState.windows.size(); i++) {
- const TouchedWindow& touchedWindow = mTouchState.windows[i];
- dump.appendFormat(INDENT2 "%d: name='%s', pointerIds=0x%0x, targetFlags=0x%x\n",
- i, touchedWindow.windowHandle->getName().string(),
- touchedWindow.pointerIds.value,
- touchedWindow.targetFlags);
+ if (!mTouchStatesByDisplay.isEmpty()) {
+ dump.appendFormat(INDENT "TouchStatesByDisplay:\n");
+ for (size_t i = 0; i < mTouchStatesByDisplay.size(); i++) {
+ const TouchState& state = mTouchStatesByDisplay.valueAt(i);
+ dump.appendFormat(INDENT2 "%d: down=%s, split=%s, deviceId=%d, source=0x%08x\n",
+ state.displayId, toString(state.down), toString(state.split),
+ state.deviceId, state.source);
+ if (!state.windows.isEmpty()) {
+ dump.append(INDENT3 "Windows:\n");
+ for (size_t i = 0; i < state.windows.size(); i++) {
+ const TouchedWindow& touchedWindow = state.windows[i];
+ dump.appendFormat(INDENT4 "%d: name='%s', pointerIds=0x%0x, targetFlags=0x%x\n",
+ i, touchedWindow.windowHandle->getName().string(),
+ touchedWindow.pointerIds.value,
+ touchedWindow.targetFlags);
+ }
+ } else {
+ dump.append(INDENT3 "Windows: <none>\n");
+ }
}
} else {
- dump.append(INDENT "TouchedWindows: <none>\n");
+ dump.append(INDENT "TouchStates: <no displays touched>\n");
}
if (!mWindowHandles.isEmpty()) {
@@ -3898,7 +3933,8 @@ InputDispatcher::MotionEntry::MotionEntry(nsecs_t eventTime,
int32_t metaState, int32_t buttonState,
int32_t edgeFlags, float xPrecision, float yPrecision,
nsecs_t downTime, int32_t displayId, uint32_t pointerCount,
- const PointerProperties* pointerProperties, const PointerCoords* pointerCoords) :
+ const PointerProperties* pointerProperties, const PointerCoords* pointerCoords,
+ float xOffset, float yOffset) :
EventEntry(TYPE_MOTION, eventTime, policyFlags),
eventTime(eventTime),
deviceId(deviceId), source(source), action(action), flags(flags),
@@ -3908,6 +3944,9 @@ InputDispatcher::MotionEntry::MotionEntry(nsecs_t eventTime,
for (uint32_t i = 0; i < pointerCount; i++) {
this->pointerProperties[i].copyFrom(pointerProperties[i]);
this->pointerCoords[i].copyFrom(pointerCoords[i]);
+ if (xOffset || yOffset) {
+ this->pointerCoords[i].applyOffset(xOffset, yOffset);
+ }
}
}
@@ -4201,7 +4240,8 @@ void InputDispatcher::InputState::synthesizeCancelationEvents(nsecs_t currentTim
memento.flags, 0, 0, 0,
memento.xPrecision, memento.yPrecision, memento.downTime,
memento.displayId,
- memento.pointerCount, memento.pointerProperties, memento.pointerCoords));
+ memento.pointerCount, memento.pointerProperties, memento.pointerCoords,
+ 0, 0));
}
}
}
diff --git a/services/input/InputDispatcher.h b/libs/input/InputDispatcher.h
index 190e7b221058..29854b2d56e4 100644
--- a/services/input/InputDispatcher.h
+++ b/libs/input/InputDispatcher.h
@@ -297,7 +297,7 @@ public:
*
* This method may be called on any thread (usually by the input manager).
*/
- virtual int32_t injectInputEvent(const InputEvent* event,
+ virtual int32_t injectInputEvent(const InputEvent* event, int32_t displayId,
int32_t injectorPid, int32_t injectorUid, int32_t syncMode, int32_t timeoutMillis,
uint32_t policyFlags) = 0;
@@ -381,7 +381,7 @@ public:
virtual void notifySwitch(const NotifySwitchArgs* args);
virtual void notifyDeviceReset(const NotifyDeviceResetArgs* args);
- virtual int32_t injectInputEvent(const InputEvent* event,
+ virtual int32_t injectInputEvent(const InputEvent* event, int32_t displayId,
int32_t injectorPid, int32_t injectorUid, int32_t syncMode, int32_t timeoutMillis,
uint32_t policyFlags);
@@ -525,7 +525,8 @@ private:
int32_t metaState, int32_t buttonState, int32_t edgeFlags,
float xPrecision, float yPrecision,
nsecs_t downTime, int32_t displayId, uint32_t pointerCount,
- const PointerProperties* pointerProperties, const PointerCoords* pointerCoords);
+ const PointerProperties* pointerProperties, const PointerCoords* pointerCoords,
+ float xOffset, float yOffset);
virtual void appendDescription(String8& msg) const;
protected:
@@ -959,7 +960,7 @@ private:
bool isSlippery() const;
};
- TouchState mTouchState;
+ KeyedVector<int32_t, TouchState> mTouchStatesByDisplay;
TouchState mTempTouchState;
// Focused application.
diff --git a/services/input/InputListener.cpp b/libs/input/InputListener.cpp
index 85bb0ed5242e..85bb0ed5242e 100644
--- a/services/input/InputListener.cpp
+++ b/libs/input/InputListener.cpp
diff --git a/services/input/InputListener.h b/libs/input/InputListener.h
index 78ae10f70dfb..78ae10f70dfb 100644
--- a/services/input/InputListener.h
+++ b/libs/input/InputListener.h
diff --git a/services/input/InputManager.cpp b/libs/input/InputManager.cpp
index 6a6547bdf03c..6a6547bdf03c 100644
--- a/services/input/InputManager.cpp
+++ b/libs/input/InputManager.cpp
diff --git a/services/input/InputManager.h b/libs/input/InputManager.h
index a213b2dfaa51..a213b2dfaa51 100644
--- a/services/input/InputManager.h
+++ b/libs/input/InputManager.h
diff --git a/services/input/InputReader.cpp b/libs/input/InputReader.cpp
index 03852a5ffcff..3c037fb8b668 100644
--- a/services/input/InputReader.cpp
+++ b/libs/input/InputReader.cpp
@@ -911,7 +911,7 @@ void InputDevice::configure(nsecs_t when, const InputReaderConfiguration* config
if (!changes || (changes & InputReaderConfiguration::CHANGE_KEYBOARD_LAYOUTS)) {
if (!(mClasses & INPUT_DEVICE_CLASS_VIRTUAL)) {
sp<KeyCharacterMap> keyboardLayout =
- mContext->getPolicy()->getKeyboardLayoutOverlay(mIdentifier.descriptor);
+ mContext->getPolicy()->getKeyboardLayoutOverlay(mIdentifier);
if (mContext->getEventHub()->setKeyboardLayoutOverlay(mId, keyboardLayout)) {
bumpGeneration();
}
@@ -2197,9 +2197,9 @@ int32_t KeyboardInputMapper::getMetaState() {
}
void KeyboardInputMapper::resetLedState() {
- initializeLedState(mCapsLockLedState, LED_CAPSL);
- initializeLedState(mNumLockLedState, LED_NUML);
- initializeLedState(mScrollLockLedState, LED_SCROLLL);
+ initializeLedState(mCapsLockLedState, ALED_CAPS_LOCK);
+ initializeLedState(mNumLockLedState, ALED_NUM_LOCK);
+ initializeLedState(mScrollLockLedState, ALED_SCROLL_LOCK);
updateLedState(true);
}
@@ -2210,11 +2210,11 @@ void KeyboardInputMapper::initializeLedState(LedState& ledState, int32_t led) {
}
void KeyboardInputMapper::updateLedState(bool reset) {
- updateLedStateForModifier(mCapsLockLedState, LED_CAPSL,
+ updateLedStateForModifier(mCapsLockLedState, ALED_CAPS_LOCK,
AMETA_CAPS_LOCK_ON, reset);
- updateLedStateForModifier(mNumLockLedState, LED_NUML,
+ updateLedStateForModifier(mNumLockLedState, ALED_NUM_LOCK,
AMETA_NUM_LOCK_ON, reset);
- updateLedStateForModifier(mScrollLockLedState, LED_SCROLLL,
+ updateLedStateForModifier(mScrollLockLedState, ALED_SCROLL_LOCK,
AMETA_SCROLL_LOCK_ON, reset);
}
@@ -2831,6 +2831,13 @@ void TouchInputMapper::configureParameters() {
mParameters.deviceType == Parameters::DEVICE_TYPE_TOUCH_SCREEN
&& getDevice()->isExternal();
}
+
+ // Initial downs on external touch devices should wake the device.
+ // Normally we don't do this for internal touch screens to prevent them from waking
+ // up in your pocket but you can enable it using the input device configuration.
+ mParameters.wake = getDevice()->isExternal();
+ getDevice()->getConfiguration().tryGetProperty(String8("touch.wake"),
+ mParameters.wake);
}
void TouchInputMapper::dumpParameters(String8& dump) {
@@ -3733,11 +3740,7 @@ void TouchInputMapper::sync(nsecs_t when) {
getContext()->fadePointer();
}
- // Initial downs on external touch devices should wake the device.
- // We don't do this for internal touch screens to prevent them from waking
- // up in your pocket.
- // TODO: Use the input device configuration to control this behavior more finely.
- if (getDevice()->isExternal()) {
+ if (mParameters.wake) {
policyFlags |= POLICY_FLAG_WAKE_DROPPED;
}
}
diff --git a/services/input/InputReader.h b/libs/input/InputReader.h
index a8bb63671b60..6b5ce341fee3 100644
--- a/services/input/InputReader.h
+++ b/libs/input/InputReader.h
@@ -281,7 +281,8 @@ public:
virtual void notifyInputDevicesChanged(const Vector<InputDeviceInfo>& inputDevices) = 0;
/* Gets the keyboard layout for a particular input device. */
- virtual sp<KeyCharacterMap> getKeyboardLayoutOverlay(const String8& inputDeviceDescriptor) = 0;
+ virtual sp<KeyCharacterMap> getKeyboardLayoutOverlay(
+ const InputDeviceIdentifier& identifier) = 0;
/* Gets a user-supplied alias for a particular input device, or an empty string if none. */
virtual String8 getDeviceAlias(const InputDeviceIdentifier& identifier) = 0;
@@ -1214,6 +1215,8 @@ protected:
GESTURE_MODE_SPOTS,
};
GestureMode gestureMode;
+
+ bool wake;
} mParameters;
// Immutable calibration parameters in parsed form.
diff --git a/services/input/InputWindow.cpp b/libs/input/InputWindow.cpp
index fe61918e1d86..fe61918e1d86 100644
--- a/services/input/InputWindow.cpp
+++ b/libs/input/InputWindow.cpp
diff --git a/services/input/InputWindow.h b/libs/input/InputWindow.h
index 28fa7ab42d44..28fa7ab42d44 100644
--- a/services/input/InputWindow.h
+++ b/libs/input/InputWindow.h
diff --git a/services/input/PointerController.cpp b/libs/input/PointerController.cpp
index 9af521b7aba2..9af521b7aba2 100644
--- a/services/input/PointerController.cpp
+++ b/libs/input/PointerController.cpp
diff --git a/services/input/PointerController.h b/libs/input/PointerController.h
index 790c0bbd5ca9..790c0bbd5ca9 100644
--- a/services/input/PointerController.h
+++ b/libs/input/PointerController.h
diff --git a/services/input/SpriteController.cpp b/libs/input/SpriteController.cpp
index fd9c66ba04cf..fd9c66ba04cf 100644
--- a/services/input/SpriteController.cpp
+++ b/libs/input/SpriteController.cpp
diff --git a/services/input/SpriteController.h b/libs/input/SpriteController.h
index 75e4843d38dc..75e4843d38dc 100644
--- a/services/input/SpriteController.h
+++ b/libs/input/SpriteController.h
diff --git a/services/input/tests/Android.mk b/libs/input/tests/Android.mk
index 9278f413c3a0..9278f413c3a0 100644
--- a/services/input/tests/Android.mk
+++ b/libs/input/tests/Android.mk
diff --git a/services/input/tests/InputDispatcher_test.cpp b/libs/input/tests/InputDispatcher_test.cpp
index 26b4fab794d8..fc89a9b18905 100644
--- a/services/input/tests/InputDispatcher_test.cpp
+++ b/libs/input/tests/InputDispatcher_test.cpp
@@ -27,6 +27,9 @@ static const nsecs_t ARBITRARY_TIME = 1234;
// An arbitrary device id.
static const int32_t DEVICE_ID = 1;
+// An arbitrary display id.
+static const int32_t DISPLAY_ID = 0;
+
// An arbitrary injector pid / uid pair that has permission to inject events.
static const int32_t INJECTOR_PID = 999;
static const int32_t INJECTOR_UID = 1001;
@@ -126,7 +129,8 @@ TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesKeyEvents) {
event.initialize(DEVICE_ID, AINPUT_SOURCE_KEYBOARD,
/*action*/ -1, 0,
AKEYCODE_A, KEY_A, AMETA_NONE, 0, ARBITRARY_TIME, ARBITRARY_TIME);
- ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(&event,
+ ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(
+ &event, DISPLAY_ID,
INJECTOR_PID, INJECTOR_UID, INPUT_EVENT_INJECTION_SYNC_NONE, 0, 0))
<< "Should reject key events with undefined action.";
@@ -134,7 +138,8 @@ TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesKeyEvents) {
event.initialize(DEVICE_ID, AINPUT_SOURCE_KEYBOARD,
AKEY_EVENT_ACTION_MULTIPLE, 0,
AKEYCODE_A, KEY_A, AMETA_NONE, 0, ARBITRARY_TIME, ARBITRARY_TIME);
- ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(&event,
+ ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(
+ &event, DISPLAY_ID,
INJECTOR_PID, INJECTOR_UID, INPUT_EVENT_INJECTION_SYNC_NONE, 0, 0))
<< "Should reject key events with ACTION_MULTIPLE.";
}
@@ -154,7 +159,8 @@ TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesMotionEvents) {
/*action*/ -1, 0, 0, AMETA_NONE, 0, 0, 0, 0, 0,
ARBITRARY_TIME, ARBITRARY_TIME,
/*pointerCount*/ 1, pointerProperties, pointerCoords);
- ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(&event,
+ ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(
+ &event, DISPLAY_ID,
INJECTOR_PID, INJECTOR_UID, INPUT_EVENT_INJECTION_SYNC_NONE, 0, 0))
<< "Should reject motion events with undefined action.";
@@ -164,7 +170,8 @@ TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesMotionEvents) {
0, 0, AMETA_NONE, 0, 0, 0, 0, 0,
ARBITRARY_TIME, ARBITRARY_TIME,
/*pointerCount*/ 1, pointerProperties, pointerCoords);
- ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(&event,
+ ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(
+ &event, DISPLAY_ID,
INJECTOR_PID, INJECTOR_UID, INPUT_EVENT_INJECTION_SYNC_NONE, 0, 0))
<< "Should reject motion events with pointer down index too large.";
@@ -173,7 +180,8 @@ TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesMotionEvents) {
0, 0, AMETA_NONE, 0, 0, 0, 0, 0,
ARBITRARY_TIME, ARBITRARY_TIME,
/*pointerCount*/ 1, pointerProperties, pointerCoords);
- ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(&event,
+ ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(
+ &event, DISPLAY_ID,
INJECTOR_PID, INJECTOR_UID, INPUT_EVENT_INJECTION_SYNC_NONE, 0, 0))
<< "Should reject motion events with pointer down index too small.";
@@ -183,7 +191,8 @@ TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesMotionEvents) {
0, 0, AMETA_NONE, 0, 0, 0, 0, 0,
ARBITRARY_TIME, ARBITRARY_TIME,
/*pointerCount*/ 1, pointerProperties, pointerCoords);
- ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(&event,
+ ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(
+ &event, DISPLAY_ID,
INJECTOR_PID, INJECTOR_UID, INPUT_EVENT_INJECTION_SYNC_NONE, 0, 0))
<< "Should reject motion events with pointer up index too large.";
@@ -192,7 +201,8 @@ TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesMotionEvents) {
0, 0, AMETA_NONE, 0, 0, 0, 0, 0,
ARBITRARY_TIME, ARBITRARY_TIME,
/*pointerCount*/ 1, pointerProperties, pointerCoords);
- ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(&event,
+ ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(
+ &event, DISPLAY_ID,
INJECTOR_PID, INJECTOR_UID, INPUT_EVENT_INJECTION_SYNC_NONE, 0, 0))
<< "Should reject motion events with pointer up index too small.";
@@ -201,7 +211,8 @@ TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesMotionEvents) {
AMOTION_EVENT_ACTION_DOWN, 0, 0, AMETA_NONE, 0, 0, 0, 0, 0,
ARBITRARY_TIME, ARBITRARY_TIME,
/*pointerCount*/ 0, pointerProperties, pointerCoords);
- ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(&event,
+ ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(
+ &event, DISPLAY_ID,
INJECTOR_PID, INJECTOR_UID, INPUT_EVENT_INJECTION_SYNC_NONE, 0, 0))
<< "Should reject motion events with 0 pointers.";
@@ -209,7 +220,8 @@ TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesMotionEvents) {
AMOTION_EVENT_ACTION_DOWN, 0, 0, AMETA_NONE, 0, 0, 0, 0, 0,
ARBITRARY_TIME, ARBITRARY_TIME,
/*pointerCount*/ MAX_POINTERS + 1, pointerProperties, pointerCoords);
- ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(&event,
+ ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(
+ &event, DISPLAY_ID,
INJECTOR_PID, INJECTOR_UID, INPUT_EVENT_INJECTION_SYNC_NONE, 0, 0))
<< "Should reject motion events with more than MAX_POINTERS pointers.";
@@ -219,7 +231,8 @@ TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesMotionEvents) {
AMOTION_EVENT_ACTION_DOWN, 0, 0, AMETA_NONE, 0, 0, 0, 0, 0,
ARBITRARY_TIME, ARBITRARY_TIME,
/*pointerCount*/ 1, pointerProperties, pointerCoords);
- ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(&event,
+ ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(
+ &event, DISPLAY_ID,
INJECTOR_PID, INJECTOR_UID, INPUT_EVENT_INJECTION_SYNC_NONE, 0, 0))
<< "Should reject motion events with pointer ids less than 0.";
@@ -228,7 +241,8 @@ TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesMotionEvents) {
AMOTION_EVENT_ACTION_DOWN, 0, 0, AMETA_NONE, 0, 0, 0, 0, 0,
ARBITRARY_TIME, ARBITRARY_TIME,
/*pointerCount*/ 1, pointerProperties, pointerCoords);
- ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(&event,
+ ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(
+ &event, DISPLAY_ID,
INJECTOR_PID, INJECTOR_UID, INPUT_EVENT_INJECTION_SYNC_NONE, 0, 0))
<< "Should reject motion events with pointer ids greater than MAX_POINTER_ID.";
@@ -239,7 +253,8 @@ TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesMotionEvents) {
AMOTION_EVENT_ACTION_DOWN, 0, 0, AMETA_NONE, 0, 0, 0, 0, 0,
ARBITRARY_TIME, ARBITRARY_TIME,
/*pointerCount*/ 2, pointerProperties, pointerCoords);
- ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(&event,
+ ASSERT_EQ(INPUT_EVENT_INJECTION_FAILED, mDispatcher->injectInputEvent(
+ &event, DISPLAY_ID,
INJECTOR_PID, INJECTOR_UID, INPUT_EVENT_INJECTION_SYNC_NONE, 0, 0))
<< "Should reject motion events with duplicate pointer ids.";
}
diff --git a/services/input/tests/InputReader_test.cpp b/libs/input/tests/InputReader_test.cpp
index f0687324d242..aaa973db4b6f 100644
--- a/services/input/tests/InputReader_test.cpp
+++ b/libs/input/tests/InputReader_test.cpp
@@ -186,7 +186,7 @@ private:
mInputDevices = inputDevices;
}
- virtual sp<KeyCharacterMap> getKeyboardLayoutOverlay(const String8& inputDeviceDescriptor) {
+ virtual sp<KeyCharacterMap> getKeyboardLayoutOverlay(const InputDeviceIdentifier& identifier) {
return NULL;
}
diff --git a/media/java/android/media/AmrInputStream.java b/media/java/android/media/AmrInputStream.java
index 8b7eee2b7baf..e2115e441a5c 100644
--- a/media/java/android/media/AmrInputStream.java
+++ b/media/java/android/media/AmrInputStream.java
@@ -41,7 +41,7 @@ public final class AmrInputStream extends InputStream
private InputStream mInputStream;
// native handle
- private int mGae;
+ private long mGae;
// result amr stream
private final byte[] mBuf = new byte[SAMPLES_PER_FRAME * 2];
@@ -130,11 +130,11 @@ public final class AmrInputStream extends InputStream
//
// AudioRecord JNI interface
//
- private static native int GsmAmrEncoderNew();
- private static native void GsmAmrEncoderInitialize(int gae);
- private static native int GsmAmrEncoderEncode(int gae,
+ private static native long GsmAmrEncoderNew();
+ private static native void GsmAmrEncoderInitialize(long gae);
+ private static native int GsmAmrEncoderEncode(long gae,
byte[] pcm, int pcmOffset, byte[] amr, int amrOffset) throws IOException;
- private static native void GsmAmrEncoderCleanup(int gae);
- private static native void GsmAmrEncoderDelete(int gae);
+ private static native void GsmAmrEncoderCleanup(long gae);
+ private static native void GsmAmrEncoderDelete(long gae);
}
diff --git a/media/java/android/media/AudioRecord.java b/media/java/android/media/AudioRecord.java
index f49ef2e4c131..461b52f5c55e 100644
--- a/media/java/android/media/AudioRecord.java
+++ b/media/java/android/media/AudioRecord.java
@@ -107,13 +107,13 @@ public class AudioRecord
* Accessed by native methods: provides access to C++ AudioRecord object
*/
@SuppressWarnings("unused")
- private int mNativeRecorderInJavaObj;
+ private long mNativeRecorderInJavaObj;
/**
* Accessed by native methods: provides access to the callback data.
*/
@SuppressWarnings("unused")
- private int mNativeCallbackCookie;
+ private long mNativeCallbackCookie;
//---------------------------------------------------------
diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java
index 78a37c546979..01a6fc2cff33 100644
--- a/media/java/android/media/AudioTrack.java
+++ b/media/java/android/media/AudioTrack.java
@@ -221,13 +221,13 @@ public class AudioTrack
* Accessed by native methods: provides access to C++ AudioTrack object.
*/
@SuppressWarnings("unused")
- private int mNativeTrackInJavaObj;
+ private long mNativeTrackInJavaObj;
/**
* Accessed by native methods: provides access to the JNI data (i.e. resources used by
* the native AudioTrack object, but not stored in it).
*/
@SuppressWarnings("unused")
- private int mJniData;
+ private long mJniData;
//--------------------------------------------------------------------------
diff --git a/media/java/android/media/FaceDetector.java b/media/java/android/media/FaceDetector.java
index cf900cece4c3..61991e3735f6 100644
--- a/media/java/android/media/FaceDetector.java
+++ b/media/java/android/media/FaceDetector.java
@@ -191,9 +191,9 @@ public class FaceDetector {
native private void fft_get_face(Face face, int i);
native private void fft_destroy();
- private int mFD;
- private int mSDK;
- private int mDCR;
+ private long mFD;
+ private long mSDK;
+ private long mDCR;
private int mWidth;
private int mHeight;
private int mMaxFaces;
diff --git a/media/java/android/media/JetPlayer.java b/media/java/android/media/JetPlayer.java
index 06cda34ace73..bd91fc55cd7c 100644
--- a/media/java/android/media/JetPlayer.java
+++ b/media/java/android/media/JetPlayer.java
@@ -127,7 +127,7 @@ public class JetPlayer
* Accessed by native methods: provides access to C++ JetPlayer object
*/
@SuppressWarnings("unused")
- private int mNativePlayerInJavaObj;
+ private long mNativePlayerInJavaObj;
//--------------------------------------------
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index 5175830dd091..ddf88dfdffdc 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -644,5 +644,5 @@ final public class MediaCodec {
native_init();
}
- private int mNativeContext;
+ private long mNativeContext;
}
diff --git a/media/java/android/media/MediaCrypto.java b/media/java/android/media/MediaCrypto.java
index 40a132635386..c7c3fc2696dc 100644
--- a/media/java/android/media/MediaCrypto.java
+++ b/media/java/android/media/MediaCrypto.java
@@ -88,5 +88,5 @@ public final class MediaCrypto {
native_init();
}
- private int mNativeContext;
+ private long mNativeContext;
}
diff --git a/media/java/android/media/MediaDrm.java b/media/java/android/media/MediaDrm.java
index 6b278d490ba2..f5a703b72317 100644
--- a/media/java/android/media/MediaDrm.java
+++ b/media/java/android/media/MediaDrm.java
@@ -100,7 +100,7 @@ public final class MediaDrm {
private EventHandler mEventHandler;
private OnEventListener mOnEventListener;
- private int mNativeContext;
+ private long mNativeContext;
/**
* Query if the given scheme identified by its UUID is supported on
diff --git a/media/java/android/media/MediaExtractor.java b/media/java/android/media/MediaExtractor.java
index e558c07d3c87..c3e5035cfe53 100644
--- a/media/java/android/media/MediaExtractor.java
+++ b/media/java/android/media/MediaExtractor.java
@@ -352,5 +352,5 @@ final public class MediaExtractor {
native_init();
}
- private int mNativeContext;
+ private long mNativeContext;
}
diff --git a/media/java/android/media/MediaMetadataRetriever.java b/media/java/android/media/MediaMetadataRetriever.java
index 90144530565b..db27d09caa51 100644
--- a/media/java/android/media/MediaMetadataRetriever.java
+++ b/media/java/android/media/MediaMetadataRetriever.java
@@ -42,7 +42,7 @@ public class MediaMetadataRetriever
// The field below is accessed by native methods
@SuppressWarnings("unused")
- private int mNativeContext;
+ private long mNativeContext;
private static final int EMBEDDED_PICTURE_TYPE_ANY = 0xFFFF;
diff --git a/media/java/android/media/MediaMuxer.java b/media/java/android/media/MediaMuxer.java
index 65a9308b70f5..e5c97e7035c4 100644
--- a/media/java/android/media/MediaMuxer.java
+++ b/media/java/android/media/MediaMuxer.java
@@ -65,8 +65,6 @@ import java.util.Map;
final public class MediaMuxer {
- private int mNativeContext;
-
static {
System.loadLibrary("media_jni");
}
@@ -84,16 +82,16 @@ final public class MediaMuxer {
};
// All the native functions are listed here.
- private static native int nativeSetup(FileDescriptor fd, int format);
- private static native void nativeRelease(int nativeObject);
- private static native void nativeStart(int nativeObject);
- private static native void nativeStop(int nativeObject);
- private static native int nativeAddTrack(int nativeObject, String[] keys,
+ private static native long nativeSetup(FileDescriptor fd, int format);
+ private static native void nativeRelease(long nativeObject);
+ private static native void nativeStart(long nativeObject);
+ private static native void nativeStop(long nativeObject);
+ private static native int nativeAddTrack(long nativeObject, String[] keys,
Object[] values);
- private static native void nativeSetOrientationHint(int nativeObject,
+ private static native void nativeSetOrientationHint(long nativeObject,
int degrees);
- private static native void nativeSetLocation(int nativeObject, int latitude, int longitude);
- private static native void nativeWriteSampleData(int nativeObject,
+ private static native void nativeSetLocation(long nativeObject, int latitude, int longitude);
+ private static native void nativeWriteSampleData(long nativeObject,
int trackIndex, ByteBuffer byteBuf,
int offset, int size, long presentationTimeUs, int flags);
@@ -108,7 +106,7 @@ final public class MediaMuxer {
private final CloseGuard mCloseGuard = CloseGuard.get();
private int mLastTrackIndex = -1;
- private int mNativeObject;
+ private long mNativeObject;
/**
* Constructor.
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index 706258a9cd85..b34cea8f459c 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -572,8 +572,8 @@ public class MediaPlayer implements SubtitleController.Listener
// macro invocation in IMediaPlayer.cpp
private final static String IMEDIA_PLAYER = "android.media.IMediaPlayer";
- private int mNativeContext; // accessed by native methods
- private int mNativeSurfaceTexture; // accessed by native methods
+ private long mNativeContext; // accessed by native methods
+ private long mNativeSurfaceTexture; // accessed by native methods
private int mListenerContext; // accessed by native methods
private SurfaceHolder mSurfaceHolder;
private EventHandler mEventHandler;
diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java
index 8dcbd6b6f8d9..5a9d577dd5b5 100644
--- a/media/java/android/media/MediaRecorder.java
+++ b/media/java/android/media/MediaRecorder.java
@@ -81,7 +81,7 @@ public class MediaRecorder
// The two fields below are accessed by native methods
@SuppressWarnings("unused")
- private int mNativeContext;
+ private long mNativeContext;
@SuppressWarnings("unused")
private Surface mSurface;
diff --git a/media/java/android/media/MediaRouter.java b/media/java/android/media/MediaRouter.java
index de202278c40b..a4d491d86b68 100644
--- a/media/java/android/media/MediaRouter.java
+++ b/media/java/android/media/MediaRouter.java
@@ -16,8 +16,6 @@
package android.media;
-import com.android.internal.util.Objects;
-
import android.Manifest;
import android.app.ActivityThread;
import android.content.BroadcastReceiver;
@@ -43,6 +41,7 @@ import android.view.Display;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.Objects;
import java.util.concurrent.CopyOnWriteArrayList;
/**
@@ -493,11 +492,11 @@ public class MediaRouter {
boolean volumeChanged = false;
boolean presentationDisplayChanged = false;
- if (!Objects.equal(route.mName, globalRoute.name)) {
+ if (!Objects.equals(route.mName, globalRoute.name)) {
route.mName = globalRoute.name;
changed = true;
}
- if (!Objects.equal(route.mDescription, globalRoute.description)) {
+ if (!Objects.equals(route.mDescription, globalRoute.description)) {
route.mDescription = globalRoute.description;
changed = true;
}
diff --git a/media/java/android/media/MediaScanner.java b/media/java/android/media/MediaScanner.java
index de3041ed5208..53835e2dbeb2 100644
--- a/media/java/android/media/MediaScanner.java
+++ b/media/java/android/media/MediaScanner.java
@@ -301,7 +301,7 @@ public class MediaScanner
// 148 and up don't seem to have been defined yet.
};
- private int mNativeContext;
+ private long mNativeContext;
private Context mContext;
private String mPackageName;
private IContentProvider mMediaProvider;
diff --git a/media/java/android/media/RemoteDisplay.java b/media/java/android/media/RemoteDisplay.java
index 7afce1aad7fc..4e937a5dc459 100644
--- a/media/java/android/media/RemoteDisplay.java
+++ b/media/java/android/media/RemoteDisplay.java
@@ -38,12 +38,12 @@ public final class RemoteDisplay {
private final Listener mListener;
private final Handler mHandler;
- private int mPtr;
+ private long mPtr;
- private native int nativeListen(String iface);
- private native void nativeDispose(int ptr);
- private native void nativePause(int ptr);
- private native void nativeResume(int ptr);
+ private native long nativeListen(String iface);
+ private native void nativeDispose(long ptr);
+ private native void nativePause(long ptr);
+ private native void nativeResume(long ptr);
private RemoteDisplay(Listener listener, Handler handler) {
mListener = listener;
diff --git a/media/java/android/media/SoundPool.java b/media/java/android/media/SoundPool.java
index 06af5de693b3..fbfc5746673a 100644
--- a/media/java/android/media/SoundPool.java
+++ b/media/java/android/media/SoundPool.java
@@ -443,7 +443,7 @@ public class SoundPool {
private final static String TAG = "SoundPool";
private final static boolean DEBUG = false;
- private int mNativeContext; // accessed by native methods
+ private long mNativeContext; // accessed by native methods
private EventHandler mEventHandler;
private SoundPool.OnLoadCompleteListener mOnLoadCompleteListener;
diff --git a/media/java/android/media/ToneGenerator.java b/media/java/android/media/ToneGenerator.java
index 5592105a66bc..713f147dd4ae 100644
--- a/media/java/android/media/ToneGenerator.java
+++ b/media/java/android/media/ToneGenerator.java
@@ -887,5 +887,5 @@ public class ToneGenerator
protected void finalize() { native_finalize(); }
@SuppressWarnings("unused")
- private int mNativeContext; // accessed by native methods
+ private long mNativeContext; // accessed by native methods
}
diff --git a/media/java/android/media/audiofx/AudioEffect.java b/media/java/android/media/audiofx/AudioEffect.java
index 1e1ef8c44768..cc121a3f7dc1 100644
--- a/media/java/android/media/audiofx/AudioEffect.java
+++ b/media/java/android/media/audiofx/AudioEffect.java
@@ -315,8 +315,8 @@ public class AudioEffect {
private int mId;
// accessed by native methods
- private int mNativeAudioEffect;
- private int mJniData;
+ private long mNativeAudioEffect;
+ private long mJniData;
/**
* Effect descriptor
diff --git a/media/java/android/media/audiofx/Visualizer.java b/media/java/android/media/audiofx/Visualizer.java
index fb7f7183dae9..ff04201faba5 100644
--- a/media/java/android/media/audiofx/Visualizer.java
+++ b/media/java/android/media/audiofx/Visualizer.java
@@ -184,8 +184,8 @@ public class Visualizer {
private OnServerDiedListener mServerDiedListener = null;
// accessed by native methods
- private int mNativeVisualizer;
- private int mJniData;
+ private long mNativeVisualizer;
+ private long mJniData;
//--------------------------------------------------------------------------
// Constructor, Finalize
diff --git a/media/java/android/media/videoeditor/MediaArtistNativeHelper.java b/media/java/android/media/videoeditor/MediaArtistNativeHelper.java
index f4fccbe13d0f..2b0b3e20a59f 100644
--- a/media/java/android/media/videoeditor/MediaArtistNativeHelper.java
+++ b/media/java/android/media/videoeditor/MediaArtistNativeHelper.java
@@ -118,7 +118,7 @@ class MediaArtistNativeHelper {
private boolean mErrorFlagSet = false;
@SuppressWarnings("unused")
- private int mManualEditContext;
+ private long mManualEditContext;
/* Listeners */
diff --git a/media/java/android/mtp/MtpDatabase.java b/media/java/android/mtp/MtpDatabase.java
index cf1238a2f4a2..9ceefc346678 100755
--- a/media/java/android/mtp/MtpDatabase.java
+++ b/media/java/android/mtp/MtpDatabase.java
@@ -1036,7 +1036,7 @@ public class MtpDatabase {
}
// used by the JNI code
- private int mNativeContext;
+ private long mNativeContext;
private native final void native_setup();
private native final void native_finalize();
diff --git a/media/java/android/mtp/MtpDevice.java b/media/java/android/mtp/MtpDevice.java
index 3272fedbd64f..8310579066c5 100644
--- a/media/java/android/mtp/MtpDevice.java
+++ b/media/java/android/mtp/MtpDevice.java
@@ -237,7 +237,7 @@ public final class MtpDevice {
}
// used by the JNI code
- private int mNativeContext;
+ private long mNativeContext;
private native boolean native_open(String deviceName, int fd);
private native void native_close();
diff --git a/media/java/android/mtp/MtpServer.java b/media/java/android/mtp/MtpServer.java
index f561cc0bbbad..266f78e823ee 100644
--- a/media/java/android/mtp/MtpServer.java
+++ b/media/java/android/mtp/MtpServer.java
@@ -22,7 +22,7 @@ package android.mtp;
*/
public class MtpServer implements Runnable {
- private int mNativeContext; // accessed by native methods
+ private long mNativeContext; // accessed by native methods
static {
System.loadLibrary("media_jni");
diff --git a/media/jni/android_media_AmrInputStream.cpp b/media/jni/android_media_AmrInputStream.cpp
index b5220fed9494..3df653015fbd 100644
--- a/media/jni/android_media_AmrInputStream.cpp
+++ b/media/jni/android_media_AmrInputStream.cpp
@@ -49,17 +49,17 @@ struct GsmAmrEncoderState {
int32_t mLastModeUsed;
};
-static jint android_media_AmrInputStream_GsmAmrEncoderNew
+static jlong android_media_AmrInputStream_GsmAmrEncoderNew
(JNIEnv *env, jclass clazz) {
GsmAmrEncoderState* gae = new GsmAmrEncoderState();
if (gae == NULL) {
jniThrowRuntimeException(env, "Out of memory");
}
- return (jint)gae;
+ return (jlong)gae;
}
static void android_media_AmrInputStream_GsmAmrEncoderInitialize
- (JNIEnv *env, jclass clazz, jint gae) {
+ (JNIEnv *env, jclass clazz, jlong gae) {
GsmAmrEncoderState *state = (GsmAmrEncoderState *) gae;
int32_t nResult = AMREncodeInit(&state->mEncState, &state->mSidState, false);
if (nResult != OK) {
@@ -70,7 +70,7 @@ static void android_media_AmrInputStream_GsmAmrEncoderInitialize
static jint android_media_AmrInputStream_GsmAmrEncoderEncode
(JNIEnv *env, jclass clazz,
- jint gae, jbyteArray pcm, jint pcmOffset, jbyteArray amr, jint amrOffset) {
+ jlong gae, jbyteArray pcm, jint pcmOffset, jbyteArray amr, jint amrOffset) {
jbyte inBuf[BYTES_PER_FRAME];
jbyte outBuf[MAX_OUTPUT_BUFFER_SIZE];
@@ -86,7 +86,7 @@ static jint android_media_AmrInputStream_GsmAmrEncoderEncode
if (length < 0) {
jniThrowExceptionFmt(env, "java/io/IOException",
"Failed to encode a frame with error code: %d", length);
- return -1;
+ return (jint)-1;
}
// The 1st byte of PV AMR frames are WMF (Wireless Multimedia Forum)
@@ -101,30 +101,30 @@ static jint android_media_AmrInputStream_GsmAmrEncoderEncode
env->SetByteArrayRegion(amr, amrOffset, length, outBuf);
- return length;
+ return (jint)length;
}
static void android_media_AmrInputStream_GsmAmrEncoderCleanup
- (JNIEnv *env, jclass clazz, jint gae) {
- GsmAmrEncoderState *state = (GsmAmrEncoderState *)gae;
+ (JNIEnv *env, jclass clazz, jlong gae) {
+ GsmAmrEncoderState *state = (GsmAmrEncoderState *) gae;
AMREncodeExit(&state->mEncState, &state->mSidState);
state->mEncState = NULL;
state->mSidState = NULL;
}
static void android_media_AmrInputStream_GsmAmrEncoderDelete
- (JNIEnv *env, jclass clazz, jint gae) {
+ (JNIEnv *env, jclass clazz, jlong gae) {
delete (GsmAmrEncoderState*)gae;
}
// ----------------------------------------------------------------------------
static JNINativeMethod gMethods[] = {
- {"GsmAmrEncoderNew", "()I", (void*)android_media_AmrInputStream_GsmAmrEncoderNew},
- {"GsmAmrEncoderInitialize", "(I)V", (void*)android_media_AmrInputStream_GsmAmrEncoderInitialize},
- {"GsmAmrEncoderEncode", "(I[BI[BI)I", (void*)android_media_AmrInputStream_GsmAmrEncoderEncode},
- {"GsmAmrEncoderCleanup", "(I)V", (void*)android_media_AmrInputStream_GsmAmrEncoderCleanup},
- {"GsmAmrEncoderDelete", "(I)V", (void*)android_media_AmrInputStream_GsmAmrEncoderDelete},
+ {"GsmAmrEncoderNew", "()J", (void*)android_media_AmrInputStream_GsmAmrEncoderNew},
+ {"GsmAmrEncoderInitialize", "(J)V", (void*)android_media_AmrInputStream_GsmAmrEncoderInitialize},
+ {"GsmAmrEncoderEncode", "(J[BI[BI)I", (void*)android_media_AmrInputStream_GsmAmrEncoderEncode},
+ {"GsmAmrEncoderCleanup", "(J)V", (void*)android_media_AmrInputStream_GsmAmrEncoderCleanup},
+ {"GsmAmrEncoderDelete", "(J)V", (void*)android_media_AmrInputStream_GsmAmrEncoderDelete},
};
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp
index b8d437cc97b6..221ea57f8ed8 100644
--- a/media/jni/android_media_MediaCodec.cpp
+++ b/media/jni/android_media_MediaCodec.cpp
@@ -328,20 +328,20 @@ using namespace android;
static sp<JMediaCodec> setMediaCodec(
JNIEnv *env, jobject thiz, const sp<JMediaCodec> &codec) {
- sp<JMediaCodec> old = (JMediaCodec *)env->GetIntField(thiz, gFields.context);
+ sp<JMediaCodec> old = (JMediaCodec *)env->GetLongField(thiz, gFields.context);
if (codec != NULL) {
codec->incStrong(thiz);
}
if (old != NULL) {
old->decStrong(thiz);
}
- env->SetIntField(thiz, gFields.context, (int)codec.get());
+ env->SetLongField(thiz, gFields.context, (jlong)codec.get());
return old;
}
static sp<JMediaCodec> getMediaCodec(JNIEnv *env, jobject thiz) {
- return (JMediaCodec *)env->GetIntField(thiz, gFields.context);
+ return (JMediaCodec *)env->GetLongField(thiz, gFields.context);
}
static void android_media_MediaCodec_release(JNIEnv *env, jobject thiz) {
@@ -710,7 +710,7 @@ static jint android_media_MediaCodec_dequeueInputBuffer(
status_t err = codec->dequeueInputBuffer(&index, timeoutUs);
if (err == OK) {
- return index;
+ return (jint) index;
}
return throwExceptionAsNecessary(env, err);
@@ -732,7 +732,7 @@ static jint android_media_MediaCodec_dequeueOutputBuffer(
env, bufferInfo, &index, timeoutUs);
if (err == OK) {
- return index;
+ return (jint) index;
}
return throwExceptionAsNecessary(env, err);
@@ -885,7 +885,7 @@ static void android_media_MediaCodec_native_init(JNIEnv *env) {
env, env->FindClass("android/media/MediaCodec"));
CHECK(clazz.get() != NULL);
- gFields.context = env->GetFieldID(clazz.get(), "mNativeContext", "I");
+ gFields.context = env->GetFieldID(clazz.get(), "mNativeContext", "J");
CHECK(gFields.context != NULL);
clazz.reset(env->FindClass("android/media/MediaCodec$CryptoInfo"));
diff --git a/media/jni/android_media_MediaCrypto.cpp b/media/jni/android_media_MediaCrypto.cpp
index d0f56ea57cb7..a6f8dcdda7ba 100644
--- a/media/jni/android_media_MediaCrypto.cpp
+++ b/media/jni/android_media_MediaCrypto.cpp
@@ -38,7 +38,7 @@ struct fields_t {
static fields_t gFields;
static sp<JCrypto> getCrypto(JNIEnv *env, jobject thiz) {
- return (JCrypto *)env->GetIntField(thiz, gFields.context);
+ return (JCrypto *)env->GetLongField(thiz, gFields.context);
}
JCrypto::JCrypto(
@@ -146,14 +146,14 @@ using namespace android;
static sp<JCrypto> setCrypto(
JNIEnv *env, jobject thiz, const sp<JCrypto> &crypto) {
- sp<JCrypto> old = (JCrypto *)env->GetIntField(thiz, gFields.context);
+ sp<JCrypto> old = (JCrypto *)env->GetLongField(thiz, gFields.context);
if (crypto != NULL) {
crypto->incStrong(thiz);
}
if (old != NULL) {
old->decStrong(thiz);
}
- env->SetIntField(thiz, gFields.context, (int)crypto.get());
+ env->SetLongField(thiz, gFields.context, (jlong)crypto.get());
return old;
}
@@ -166,7 +166,7 @@ static void android_media_MediaCrypto_native_init(JNIEnv *env) {
jclass clazz = env->FindClass("android/media/MediaCrypto");
CHECK(clazz != NULL);
- gFields.context = env->GetFieldID(clazz, "mNativeContext", "I");
+ gFields.context = env->GetFieldID(clazz, "mNativeContext", "J");
CHECK(gFields.context != NULL);
}
@@ -232,7 +232,7 @@ static jboolean android_media_MediaCrypto_isCryptoSchemeSupportedNative(
env,
"java/lang/IllegalArgumentException",
NULL);
- return false;
+ return JNI_FALSE;
}
jboolean isCopy;
@@ -243,27 +243,27 @@ static jboolean android_media_MediaCrypto_isCryptoSchemeSupportedNative(
env->ReleaseByteArrayElements(uuidObj, uuid, 0);
uuid = NULL;
- return result;
+ return result ? JNI_TRUE : JNI_FALSE;
}
static jboolean android_media_MediaCrypto_requiresSecureDecoderComponent(
JNIEnv *env, jobject thiz, jstring mimeObj) {
if (mimeObj == NULL) {
jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
- return false;
+ return JNI_FALSE;
}
sp<JCrypto> crypto = getCrypto(env, thiz);
if (crypto == NULL) {
jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
- return false;
+ return JNI_FALSE;
}
const char *mime = env->GetStringUTFChars(mimeObj, NULL);
if (mime == NULL) {
- return false;
+ return JNI_FALSE;
}
bool result = crypto->requiresSecureDecoderComponent(mime);
@@ -271,7 +271,7 @@ static jboolean android_media_MediaCrypto_requiresSecureDecoderComponent(
env->ReleaseStringUTFChars(mimeObj, mime);
mime = NULL;
- return result;
+ return result ? JNI_TRUE : JNI_FALSE;
}
static JNINativeMethod gMethods[] = {
diff --git a/media/jni/android_media_MediaDrm.cpp b/media/jni/android_media_MediaDrm.cpp
index bbb74d25bed1..052d97dc9a70 100644
--- a/media/jni/android_media_MediaDrm.cpp
+++ b/media/jni/android_media_MediaDrm.cpp
@@ -186,6 +186,7 @@ void JNIDrmListener::notify(DrmPlugin::EventType eventType, int extra,
nativeParcel->setData(obj->data(), obj->dataSize());
env->CallStaticVoidMethod(mClass, gFields.post_event, mObject,
jeventType, extra, jParcel);
+ env->DeleteLocalRef(jParcel);
}
}
@@ -267,7 +268,7 @@ static bool throwExceptionAsNecessary(
}
static sp<IDrm> GetDrm(JNIEnv *env, jobject thiz) {
- JDrm *jdrm = (JDrm *)env->GetIntField(thiz, gFields.context);
+ JDrm *jdrm = (JDrm *)env->GetLongField(thiz, gFields.context);
return jdrm ? jdrm->getDrm() : NULL;
}
@@ -484,14 +485,14 @@ using namespace android;
static sp<JDrm> setDrm(
JNIEnv *env, jobject thiz, const sp<JDrm> &drm) {
- sp<JDrm> old = (JDrm *)env->GetIntField(thiz, gFields.context);
+ sp<JDrm> old = (JDrm *)env->GetLongField(thiz, gFields.context);
if (drm != NULL) {
drm->incStrong(thiz);
}
if (old != NULL) {
old->decStrong(thiz);
}
- env->SetIntField(thiz, gFields.context, (int)drm.get());
+ env->SetLongField(thiz, gFields.context, reinterpret_cast<jlong>(drm.get()));
return old;
}
@@ -520,7 +521,7 @@ static void android_media_MediaDrm_release(JNIEnv *env, jobject thiz) {
static void android_media_MediaDrm_native_init(JNIEnv *env) {
jclass clazz;
FIND_CLASS(clazz, "android/media/MediaDrm");
- GET_FIELD_ID(gFields.context, clazz, "mNativeContext", "I");
+ GET_FIELD_ID(gFields.context, clazz, "mNativeContext", "J");
GET_STATIC_METHOD_ID(gFields.post_event, clazz, "postEventFromNative",
"(Ljava/lang/Object;IILjava/lang/Object;)V");
diff --git a/media/jni/android_media_MediaExtractor.cpp b/media/jni/android_media_MediaExtractor.cpp
index 1ac45d4452e3..705de88bba91 100644
--- a/media/jni/android_media_MediaExtractor.cpp
+++ b/media/jni/android_media_MediaExtractor.cpp
@@ -88,7 +88,7 @@ class JavaDataSourceBridge : public DataSource {
env->GetByteArrayRegion(byteArrayObj, 0, size, (jbyte*) buffer);
env->DeleteLocalRef(byteArrayObj);
if (env->ExceptionCheck()) {
- ALOGW("Exception occurred while reading %d at %lld", size, offset);
+ ALOGW("Exception occurred while reading %zu at %lld", size, offset);
LOGW_EX(env);
env->ExceptionClear();
return -1;
@@ -198,7 +198,7 @@ status_t JMediaExtractor::readSampleData(
void *dst = env->GetDirectBufferAddress(byteBuf);
- jlong dstSize;
+ size_t dstSize;
jbyteArray byteArray = NULL;
if (dst == NULL) {
@@ -219,9 +219,9 @@ status_t JMediaExtractor::readSampleData(
jboolean isCopy;
dst = env->GetByteArrayElements(byteArray, &isCopy);
- dstSize = env->GetArrayLength(byteArray);
+ dstSize = (size_t) env->GetArrayLength(byteArray);
} else {
- dstSize = env->GetDirectBufferCapacity(byteBuf);
+ dstSize = (size_t) env->GetDirectBufferCapacity(byteBuf);
}
if (dstSize < offset) {
@@ -299,7 +299,7 @@ using namespace android;
static sp<JMediaExtractor> setMediaExtractor(
JNIEnv *env, jobject thiz, const sp<JMediaExtractor> &extractor) {
sp<JMediaExtractor> old =
- (JMediaExtractor *)env->GetIntField(thiz, gFields.context);
+ (JMediaExtractor *)env->GetLongField(thiz, gFields.context);
if (extractor != NULL) {
extractor->incStrong(thiz);
@@ -307,13 +307,13 @@ static sp<JMediaExtractor> setMediaExtractor(
if (old != NULL) {
old->decStrong(thiz);
}
- env->SetIntField(thiz, gFields.context, (int)extractor.get());
+ env->SetLongField(thiz, gFields.context, (jlong)extractor.get());
return old;
}
static sp<JMediaExtractor> getMediaExtractor(JNIEnv *env, jobject thiz) {
- return (JMediaExtractor *)env->GetIntField(thiz, gFields.context);
+ return (JMediaExtractor *)env->GetLongField(thiz, gFields.context);
}
static void android_media_MediaExtractor_release(JNIEnv *env, jobject thiz) {
@@ -329,7 +329,7 @@ static jint android_media_MediaExtractor_getTrackCount(
return -1;
}
- return extractor->countTracks();
+ return (jint) extractor->countTracks();
}
static jobject android_media_MediaExtractor_getTrackFormatNative(
@@ -430,19 +430,19 @@ static jboolean android_media_MediaExtractor_advance(
if (extractor == NULL) {
jniThrowException(env, "java/lang/IllegalStateException", NULL);
- return false;
+ return JNI_FALSE;
}
status_t err = extractor->advance();
if (err == ERROR_END_OF_STREAM) {
- return false;
+ return JNI_FALSE;
} else if (err != OK) {
jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
- return false;
+ return JNI_FALSE;
}
- return true;
+ return JNI_TRUE;
}
static jint android_media_MediaExtractor_readSampleData(
@@ -461,10 +461,10 @@ static jint android_media_MediaExtractor_readSampleData(
return -1;
} else if (err != OK) {
jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
- return false;
+ return -1;
}
- return sampleSize;
+ return (jint) sampleSize;
}
static jint android_media_MediaExtractor_getSampleTrackIndex(
@@ -483,10 +483,10 @@ static jint android_media_MediaExtractor_getSampleTrackIndex(
return -1;
} else if (err != OK) {
jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
- return false;
+ return -1;
}
- return trackIndex;
+ return (jint) trackIndex;
}
static jlong android_media_MediaExtractor_getSampleTime(
@@ -505,10 +505,10 @@ static jlong android_media_MediaExtractor_getSampleTime(
return -1ll;
} else if (err != OK) {
jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
- return false;
+ return -1ll;
}
- return sampleTimeUs;
+ return (jlong) sampleTimeUs;
}
static jint android_media_MediaExtractor_getSampleFlags(
@@ -517,20 +517,20 @@ static jint android_media_MediaExtractor_getSampleFlags(
if (extractor == NULL) {
jniThrowException(env, "java/lang/IllegalStateException", NULL);
- return -1ll;
+ return -1;
}
uint32_t sampleFlags;
status_t err = extractor->getSampleFlags(&sampleFlags);
if (err == ERROR_END_OF_STREAM) {
- return -1ll;
+ return -1;
} else if (err != OK) {
jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
- return false;
+ return -1;
}
- return sampleFlags;
+ return (jint) sampleFlags;
}
static jboolean android_media_MediaExtractor_getSampleCryptoInfo(
@@ -539,27 +539,27 @@ static jboolean android_media_MediaExtractor_getSampleCryptoInfo(
if (extractor == NULL) {
jniThrowException(env, "java/lang/IllegalStateException", NULL);
- return -1ll;
+ return JNI_FALSE;
}
sp<MetaData> meta;
status_t err = extractor->getSampleMeta(&meta);
if (err != OK) {
- return false;
+ return JNI_FALSE;
}
uint32_t type;
const void *data;
size_t size;
if (!meta->findData(kKeyEncryptedSizes, &type, &data, &size)) {
- return false;
+ return JNI_FALSE;
}
size_t numSubSamples = size / sizeof(size_t);
if (numSubSamples == 0) {
- return false;
+ return JNI_FALSE;
}
jintArray numBytesOfEncryptedDataObj = env->NewIntArray(numSubSamples);
@@ -576,7 +576,7 @@ static jboolean android_media_MediaExtractor_getSampleCryptoInfo(
if (meta->findData(kKeyPlainSizes, &type, &data, &size)) {
if (size != encSize) {
// The two must be of the same length.
- return false;
+ return JNI_FALSE;
}
numBytesOfPlainDataObj = env->NewIntArray(numSubSamples);
@@ -593,7 +593,7 @@ static jboolean android_media_MediaExtractor_getSampleCryptoInfo(
if (meta->findData(kKeyCryptoKey, &type, &data, &size)) {
if (size != 16) {
// Keys must be 16 bytes in length.
- return false;
+ return JNI_FALSE;
}
keyObj = env->NewByteArray(size);
@@ -608,7 +608,7 @@ static jboolean android_media_MediaExtractor_getSampleCryptoInfo(
if (meta->findData(kKeyCryptoIV, &type, &data, &size)) {
if (size != 16) {
// IVs must be 16 bytes in length.
- return false;
+ return JNI_FALSE;
}
ivObj = env->NewByteArray(size);
@@ -634,14 +634,14 @@ static jboolean android_media_MediaExtractor_getSampleCryptoInfo(
ivObj,
mode);
- return true;
+ return JNI_TRUE;
}
static void android_media_MediaExtractor_native_init(JNIEnv *env) {
jclass clazz = env->FindClass("android/media/MediaExtractor");
CHECK(clazz != NULL);
- gFields.context = env->GetFieldID(clazz, "mNativeContext", "I");
+ gFields.context = env->GetFieldID(clazz, "mNativeContext", "J");
CHECK(gFields.context != NULL);
clazz = env->FindClass("android/media/MediaCodec$CryptoInfo");
@@ -770,7 +770,7 @@ static jlong android_media_MediaExtractor_getCachedDurationUs(
return -1ll;
}
- return cachedDurationUs;
+ return (jlong) cachedDurationUs;
}
static jboolean android_media_MediaExtractor_hasCacheReachedEOS(
@@ -779,16 +779,16 @@ static jboolean android_media_MediaExtractor_hasCacheReachedEOS(
if (extractor == NULL) {
jniThrowException(env, "java/lang/IllegalStateException", NULL);
- return true;
+ return JNI_TRUE;
}
int64_t cachedDurationUs;
bool eos;
if (!extractor->getCachedDuration(&cachedDurationUs, &eos)) {
- return true;
+ return JNI_TRUE;
}
- return eos;
+ return eos ? JNI_TRUE : JNI_FALSE;
}
static void android_media_MediaExtractor_native_finalize(
diff --git a/media/jni/android_media_MediaMetadataRetriever.cpp b/media/jni/android_media_MediaMetadataRetriever.cpp
index 297dadfe3dd4..a52b24d56f2a 100644
--- a/media/jni/android_media_MediaMetadataRetriever.cpp
+++ b/media/jni/android_media_MediaMetadataRetriever.cpp
@@ -67,15 +67,15 @@ static void process_media_retriever_call(JNIEnv *env, status_t opStatus, const c
static MediaMetadataRetriever* getRetriever(JNIEnv* env, jobject thiz)
{
// No lock is needed, since it is called internally by other methods that are protected
- MediaMetadataRetriever* retriever = (MediaMetadataRetriever*) env->GetIntField(thiz, fields.context);
+ MediaMetadataRetriever* retriever = (MediaMetadataRetriever*) env->GetLongField(thiz, fields.context);
return retriever;
}
-static void setRetriever(JNIEnv* env, jobject thiz, int retriever)
+static void setRetriever(JNIEnv* env, jobject thiz, MediaMetadataRetriever* retriever)
{
// No lock is needed, since it is called internally by other methods that are protected
- MediaMetadataRetriever *old = (MediaMetadataRetriever*) env->GetIntField(thiz, fields.context);
- env->SetIntField(thiz, fields.context, retriever);
+ MediaMetadataRetriever *old = (MediaMetadataRetriever*) env->GetLongField(thiz, fields.context);
+ env->SetLongField(thiz, fields.context, (jlong) retriever);
}
static void
@@ -146,10 +146,10 @@ static void android_media_MediaMetadataRetriever_setDataSourceFD(JNIEnv *env, jo
int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
if (offset < 0 || length < 0 || fd < 0) {
if (offset < 0) {
- ALOGE("negative offset (%lld)", offset);
+ ALOGE("negative offset (%lld)", (long long)offset);
}
if (length < 0) {
- ALOGE("negative length (%lld)", length);
+ ALOGE("negative length (%lld)", (long long)length);
}
if (fd < 0) {
ALOGE("invalid file descriptor");
@@ -264,7 +264,7 @@ static jobject android_media_MediaMetadataRetriever_getFrameAtTime(JNIEnv *env,
config);
SkBitmap *bitmap =
- (SkBitmap *) env->GetIntField(jBitmap, fields.nativeBitmap);
+ (SkBitmap *) env->GetLongField(jBitmap, fields.nativeBitmap);
bitmap->lockPixels();
rotate((uint16_t*)bitmap->getPixels(),
@@ -359,7 +359,7 @@ static void android_media_MediaMetadataRetriever_release(JNIEnv *env, jobject th
Mutex::Autolock lock(sLock);
MediaMetadataRetriever* retriever = getRetriever(env, thiz);
delete retriever;
- setRetriever(env, thiz, 0);
+ setRetriever(env, thiz, (MediaMetadataRetriever*) 0);
}
static void android_media_MediaMetadataRetriever_native_finalize(JNIEnv *env, jobject thiz)
@@ -379,7 +379,7 @@ static void android_media_MediaMetadataRetriever_native_init(JNIEnv *env)
return;
}
- fields.context = env->GetFieldID(clazz, "mNativeContext", "I");
+ fields.context = env->GetFieldID(clazz, "mNativeContext", "J");
if (fields.context == NULL) {
return;
}
@@ -406,7 +406,7 @@ static void android_media_MediaMetadataRetriever_native_init(JNIEnv *env)
if (fields.createScaledBitmapMethod == NULL) {
return;
}
- fields.nativeBitmap = env->GetFieldID(fields.bitmapClazz, "mNativeBitmap", "I");
+ fields.nativeBitmap = env->GetFieldID(fields.bitmapClazz, "mNativeBitmap", "J");
if (fields.nativeBitmap == NULL) {
return;
}
@@ -435,7 +435,7 @@ static void android_media_MediaMetadataRetriever_native_setup(JNIEnv *env, jobje
jniThrowException(env, "java/lang/RuntimeException", "Out of memory");
return;
}
- setRetriever(env, thiz, (int)retriever);
+ setRetriever(env, thiz, retriever);
}
// JNI mapping between Java methods and native methods
diff --git a/media/jni/android_media_MediaMuxer.cpp b/media/jni/android_media_MediaMuxer.cpp
index 457b956e3745..2c16a050f6b3 100644
--- a/media/jni/android_media_MediaMuxer.cpp
+++ b/media/jni/android_media_MediaMuxer.cpp
@@ -31,7 +31,6 @@
namespace android {
struct fields_t {
- jfieldID context;
jmethodID arrayID;
};
@@ -42,7 +41,7 @@ static fields_t gFields;
using namespace android;
static jint android_media_MediaMuxer_addTrack(
- JNIEnv *env, jclass clazz, jint nativeObject, jobjectArray keys,
+ JNIEnv *env, jclass clazz, jlong nativeObject, jobjectArray keys,
jobjectArray values) {
sp<MediaMuxer> muxer(reinterpret_cast<MediaMuxer *>(nativeObject));
if (muxer == NULL) {
@@ -72,7 +71,7 @@ static jint android_media_MediaMuxer_addTrack(
}
static void android_media_MediaMuxer_writeSampleData(
- JNIEnv *env, jclass clazz, jint nativeObject, jint trackIndex,
+ JNIEnv *env, jclass clazz, jlong nativeObject, jint trackIndex,
jobject byteBuf, jint offset, jint size, jlong timeUs, jint flags) {
sp<MediaMuxer> muxer(reinterpret_cast<MediaMuxer *>(nativeObject));
if (muxer == NULL) {
@@ -147,7 +146,7 @@ static jint android_media_MediaMuxer_native_setup(
}
static void android_media_MediaMuxer_setOrientationHint(
- JNIEnv *env, jclass clazz, jint nativeObject, jint degrees) {
+ JNIEnv *env, jclass clazz, jlong nativeObject, jint degrees) {
sp<MediaMuxer> muxer(reinterpret_cast<MediaMuxer *>(nativeObject));
if (muxer == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
@@ -177,7 +176,7 @@ static void android_media_MediaMuxer_setLocation(
}
static void android_media_MediaMuxer_start(JNIEnv *env, jclass clazz,
- jint nativeObject) {
+ jlong nativeObject) {
sp<MediaMuxer> muxer(reinterpret_cast<MediaMuxer *>(nativeObject));
if (muxer == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
@@ -195,7 +194,7 @@ static void android_media_MediaMuxer_start(JNIEnv *env, jclass clazz,
}
static void android_media_MediaMuxer_stop(JNIEnv *env, jclass clazz,
- jint nativeObject) {
+ jlong nativeObject) {
sp<MediaMuxer> muxer(reinterpret_cast<MediaMuxer *>(nativeObject));
if (muxer == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
@@ -213,7 +212,7 @@ static void android_media_MediaMuxer_stop(JNIEnv *env, jclass clazz,
}
static void android_media_MediaMuxer_native_release(
- JNIEnv *env, jclass clazz, jint nativeObject) {
+ JNIEnv *env, jclass clazz, jlong nativeObject) {
sp<MediaMuxer> muxer(reinterpret_cast<MediaMuxer *>(nativeObject));
if (muxer != NULL) {
muxer->decStrong(clazz);
@@ -222,26 +221,26 @@ static void android_media_MediaMuxer_native_release(
static JNINativeMethod gMethods[] = {
- { "nativeAddTrack", "(I[Ljava/lang/String;[Ljava/lang/Object;)I",
+ { "nativeAddTrack", "(J[Ljava/lang/String;[Ljava/lang/Object;)I",
(void *)android_media_MediaMuxer_addTrack },
- { "nativeSetOrientationHint", "(II)V",
+ { "nativeSetOrientationHint", "(JI)V",
(void *)android_media_MediaMuxer_setOrientationHint},
- { "nativeSetLocation", "(III)V",
+ { "nativeSetLocation", "(JII)V",
(void *)android_media_MediaMuxer_setLocation},
- { "nativeStart", "(I)V", (void *)android_media_MediaMuxer_start},
+ { "nativeStart", "(J)V", (void *)android_media_MediaMuxer_start},
- { "nativeWriteSampleData", "(IILjava/nio/ByteBuffer;IIJI)V",
+ { "nativeWriteSampleData", "(JILjava/nio/ByteBuffer;IIJI)V",
(void *)android_media_MediaMuxer_writeSampleData },
- { "nativeStop", "(I)V", (void *)android_media_MediaMuxer_stop},
+ { "nativeStop", "(J)V", (void *)android_media_MediaMuxer_stop},
- { "nativeSetup", "(Ljava/io/FileDescriptor;I)I",
+ { "nativeSetup", "(Ljava/io/FileDescriptor;I)J",
(void *)android_media_MediaMuxer_native_setup },
- { "nativeRelease", "(I)V",
+ { "nativeRelease", "(J)V",
(void *)android_media_MediaMuxer_native_release },
};
@@ -252,12 +251,6 @@ int register_android_media_MediaMuxer(JNIEnv *env) {
int err = AndroidRuntime::registerNativeMethods(env,
"android/media/MediaMuxer", gMethods, NELEM(gMethods));
- jclass clazz = env->FindClass("android/media/MediaMuxer");
- CHECK(clazz != NULL);
-
- gFields.context = env->GetFieldID(clazz, "mNativeContext", "I");
- CHECK(gFields.context != NULL);
-
jclass byteBufClass = env->FindClass("java/nio/ByteBuffer");
CHECK(byteBufClass != NULL);
diff --git a/media/jni/android_media_MediaPlayer.cpp b/media/jni/android_media_MediaPlayer.cpp
index 4be9cd611ded..9d0d5a6eef78 100644
--- a/media/jni/android_media_MediaPlayer.cpp
+++ b/media/jni/android_media_MediaPlayer.cpp
@@ -133,21 +133,21 @@ void JNIMediaPlayerListener::notify(int msg, int ext1, int ext2, const Parcel *o
static sp<MediaPlayer> getMediaPlayer(JNIEnv* env, jobject thiz)
{
Mutex::Autolock l(sLock);
- MediaPlayer* const p = (MediaPlayer*)env->GetIntField(thiz, fields.context);
+ MediaPlayer* const p = (MediaPlayer*)env->GetLongField(thiz, fields.context);
return sp<MediaPlayer>(p);
}
static sp<MediaPlayer> setMediaPlayer(JNIEnv* env, jobject thiz, const sp<MediaPlayer>& player)
{
Mutex::Autolock l(sLock);
- sp<MediaPlayer> old = (MediaPlayer*)env->GetIntField(thiz, fields.context);
+ sp<MediaPlayer> old = (MediaPlayer*)env->GetLongField(thiz, fields.context);
if (player.get()) {
player->incStrong((void*)setMediaPlayer);
}
if (old != 0) {
old->decStrong((void*)setMediaPlayer);
}
- env->SetIntField(thiz, fields.context, (int)player.get());
+ env->SetLongField(thiz, fields.context, (jlong)player.get());
return old;
}
@@ -244,7 +244,7 @@ android_media_MediaPlayer_setDataSourceFD(JNIEnv *env, jobject thiz, jobject fil
static sp<IGraphicBufferProducer>
getVideoSurfaceTexture(JNIEnv* env, jobject thiz) {
- IGraphicBufferProducer * const p = (IGraphicBufferProducer*)env->GetIntField(thiz, fields.surface_texture);
+ IGraphicBufferProducer * const p = (IGraphicBufferProducer*)env->GetLongField(thiz, fields.surface_texture);
return sp<IGraphicBufferProducer>(p);
}
@@ -293,7 +293,7 @@ setVideoSurface(JNIEnv *env, jobject thiz, jobject jsurface, jboolean mediaPlaye
}
}
- env->SetIntField(thiz, fields.surface_texture, (int)new_st.get());
+ env->SetLongField(thiz, fields.surface_texture, (jlong)new_st.get());
// This will fail if the media player has not been initialized yet. This
// can be the case if setDisplay() on MediaPlayer.java has been called
@@ -384,7 +384,7 @@ android_media_MediaPlayer_isPlaying(JNIEnv *env, jobject thiz)
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
if (mp == NULL ) {
jniThrowException(env, "java/lang/IllegalStateException", NULL);
- return false;
+ return JNI_FALSE;
}
const jboolean is_playing = mp->isPlaying();
@@ -393,7 +393,7 @@ android_media_MediaPlayer_isPlaying(JNIEnv *env, jobject thiz)
}
static void
-android_media_MediaPlayer_seekTo(JNIEnv *env, jobject thiz, int msec)
+android_media_MediaPlayer_seekTo(JNIEnv *env, jobject thiz, jint msec)
{
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
if (mp == NULL ) {
@@ -404,7 +404,7 @@ android_media_MediaPlayer_seekTo(JNIEnv *env, jobject thiz, int msec)
process_media_player_call( env, thiz, mp->seekTo(msec), NULL, NULL );
}
-static int
+static jint
android_media_MediaPlayer_getVideoWidth(JNIEnv *env, jobject thiz)
{
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
@@ -418,10 +418,10 @@ android_media_MediaPlayer_getVideoWidth(JNIEnv *env, jobject thiz)
w = 0;
}
ALOGV("getVideoWidth: %d", w);
- return w;
+ return (jint) w;
}
-static int
+static jint
android_media_MediaPlayer_getVideoHeight(JNIEnv *env, jobject thiz)
{
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
@@ -435,11 +435,11 @@ android_media_MediaPlayer_getVideoHeight(JNIEnv *env, jobject thiz)
h = 0;
}
ALOGV("getVideoHeight: %d", h);
- return h;
+ return (jint) h;
}
-static int
+static jint
android_media_MediaPlayer_getCurrentPosition(JNIEnv *env, jobject thiz)
{
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
@@ -450,10 +450,10 @@ android_media_MediaPlayer_getCurrentPosition(JNIEnv *env, jobject thiz)
int msec;
process_media_player_call( env, thiz, mp->getCurrentPosition(&msec), NULL, NULL );
ALOGV("getCurrentPosition: %d (msec)", msec);
- return msec;
+ return (jint) msec;
}
-static int
+static jint
android_media_MediaPlayer_getDuration(JNIEnv *env, jobject thiz)
{
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
@@ -464,7 +464,7 @@ android_media_MediaPlayer_getDuration(JNIEnv *env, jobject thiz)
int msec;
process_media_player_call( env, thiz, mp->getDuration(&msec), NULL, NULL );
ALOGV("getDuration: %d (msec)", msec);
- return msec;
+ return (jint) msec;
}
static void
@@ -480,7 +480,7 @@ android_media_MediaPlayer_reset(JNIEnv *env, jobject thiz)
}
static void
-android_media_MediaPlayer_setAudioStreamType(JNIEnv *env, jobject thiz, int streamtype)
+android_media_MediaPlayer_setAudioStreamType(JNIEnv *env, jobject thiz, jint streamtype)
{
ALOGV("setAudioStreamType: %d", streamtype);
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
@@ -510,21 +510,21 @@ android_media_MediaPlayer_isLooping(JNIEnv *env, jobject thiz)
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
if (mp == NULL ) {
jniThrowException(env, "java/lang/IllegalStateException", NULL);
- return false;
+ return JNI_FALSE;
}
- return mp->isLooping();
+ return mp->isLooping() ? JNI_TRUE : JNI_FALSE;
}
static void
-android_media_MediaPlayer_setVolume(JNIEnv *env, jobject thiz, float leftVolume, float rightVolume)
+android_media_MediaPlayer_setVolume(JNIEnv *env, jobject thiz, jfloat leftVolume, jfloat rightVolume)
{
- ALOGV("setVolume: left %f right %f", leftVolume, rightVolume);
+ ALOGV("setVolume: left %f right %f", (float) leftVolume, (float) rightVolume);
sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
if (mp == NULL ) {
jniThrowException(env, "java/lang/IllegalStateException", NULL);
return;
}
- process_media_player_call( env, thiz, mp->setVolume(leftVolume, rightVolume), NULL, NULL );
+ process_media_player_call( env, thiz, mp->setVolume((float) leftVolume, (float) rightVolume), NULL, NULL );
}
// Sends the request and reply parcels to the media player via the
@@ -544,7 +544,7 @@ android_media_MediaPlayer_invoke(JNIEnv *env, jobject thiz,
// Don't use process_media_player_call which use the async loop to
// report errors, instead returns the status.
- return media_player->invoke(*request, reply);
+ return (jint) media_player->invoke(*request, reply);
}
// Sends the new filter to the client.
@@ -564,7 +564,7 @@ android_media_MediaPlayer_setMetadataFilter(JNIEnv *env, jobject thiz, jobject r
return UNKNOWN_ERROR;
}
- return media_player->setMetadataFilter(*filter);
+ return (jint) media_player->setMetadataFilter(*filter);
}
static jboolean
@@ -574,14 +574,14 @@ android_media_MediaPlayer_getMetadata(JNIEnv *env, jobject thiz, jboolean update
sp<MediaPlayer> media_player = getMediaPlayer(env, thiz);
if (media_player == NULL ) {
jniThrowException(env, "java/lang/IllegalStateException", NULL);
- return false;
+ return JNI_FALSE;
}
Parcel *metadata = parcelForJavaObject(env, reply);
if (metadata == NULL ) {
jniThrowException(env, "java/lang/RuntimeException", "Reply parcel is null");
- return false;
+ return JNI_FALSE;
}
metadata->freeData();
@@ -589,7 +589,11 @@ android_media_MediaPlayer_getMetadata(JNIEnv *env, jobject thiz, jboolean update
// metadata. Note however that the parcel actually starts with the
// return code so you should not rewind the parcel using
// setDataPosition(0).
- return media_player->getMetadata(update_only, apply_filter, metadata) == OK;
+ if (media_player->getMetadata(update_only, apply_filter, metadata) == OK) {
+ return JNI_TRUE;
+ } else {
+ return JNI_FALSE;
+ }
}
// This function gets some field IDs, which in turn causes class initialization.
@@ -605,7 +609,7 @@ android_media_MediaPlayer_native_init(JNIEnv *env)
return;
}
- fields.context = env->GetFieldID(clazz, "mNativeContext", "I");
+ fields.context = env->GetFieldID(clazz, "mNativeContext", "J");
if (fields.context == NULL) {
return;
}
@@ -616,7 +620,7 @@ android_media_MediaPlayer_native_init(JNIEnv *env)
return;
}
- fields.surface_texture = env->GetFieldID(clazz, "mNativeSurfaceTexture", "I");
+ fields.surface_texture = env->GetFieldID(clazz, "mNativeSurfaceTexture", "J");
if (fields.surface_texture == NULL) {
return;
}
@@ -696,7 +700,7 @@ static jint android_media_MediaPlayer_get_audio_session_id(JNIEnv *env, jobject
return 0;
}
- return mp->getAudioSessionId();
+ return (jint) mp->getAudioSessionId();
}
static void
@@ -733,7 +737,7 @@ android_media_MediaPlayer_pullBatteryData(JNIEnv *env, jobject thiz, jobject jav
Parcel *reply = parcelForJavaObject(env, java_reply);
- return service->pullBatteryData(reply);
+ return (jint) service->pullBatteryData(reply);
}
static jint
@@ -772,7 +776,7 @@ android_media_MediaPlayer_setRetransmitEndpoint(JNIEnv *env, jobject thiz,
jniThrowException(env, "java/lang/IllegalStateException", NULL);
}
- return ret;
+ return (jint) ret;
}
static void
@@ -826,16 +830,19 @@ android_media_MediaPlayer_updateProxyConfig(
jstring exclusionListObj = (jstring)env->CallObjectMethod(
proxyProps, fields.proxyConfigGetExclusionList);
- const char *exclusionList =
- env->GetStringUTFChars(exclusionListObj, NULL);
-
if (host != NULL && exclusionListObj != NULL) {
- thisplayer->updateProxyConfig(host, port, exclusionList);
- }
+ const char *exclusionList = env->GetStringUTFChars(exclusionListObj, NULL);
+
+ if (exclusionList != NULL) {
+ thisplayer->updateProxyConfig(host, port, exclusionList);
- if (exclusionList != NULL) {
- env->ReleaseStringUTFChars(exclusionListObj, exclusionList);
- exclusionList = NULL;
+ env->ReleaseStringUTFChars(exclusionListObj, exclusionList);
+ exclusionList = NULL;
+ } else {
+ thisplayer->updateProxyConfig(host, port, "");
+ }
+ } else if (host != NULL) {
+ thisplayer->updateProxyConfig(host, port, "");
}
if (host != NULL) {
diff --git a/media/jni/android_media_MediaProfiles.cpp b/media/jni/android_media_MediaProfiles.cpp
index 3fbb8ba09ba3..48a91321f57c 100644
--- a/media/jni/android_media_MediaProfiles.cpp
+++ b/media/jni/android_media_MediaProfiles.cpp
@@ -48,7 +48,7 @@ static jint
android_media_MediaProfiles_native_get_num_file_formats(JNIEnv *env, jobject thiz)
{
ALOGV("native_get_num_file_formats");
- return sProfiles->getOutputFileFormats().size();
+ return (jint) sProfiles->getOutputFileFormats().size();
}
static jint
@@ -119,7 +119,7 @@ static jint
android_media_MediaProfiles_native_get_num_audio_encoders(JNIEnv *env, jobject thiz)
{
ALOGV("native_get_num_audio_encoders");
- return sProfiles->getAudioEncoders().size();
+ return (jint) sProfiles->getAudioEncoders().size();
}
static jobject
@@ -223,18 +223,18 @@ android_media_MediaProfiles_native_has_camcorder_profile(JNIEnv *env, jobject th
{
ALOGV("native_has_camcorder_profile: %d %d", id, quality);
if (!isCamcorderQualityKnown(quality)) {
- return false;
+ return JNI_FALSE;
}
camcorder_quality q = static_cast<camcorder_quality>(quality);
- return sProfiles->hasCamcorderProfile(id, q);
+ return sProfiles->hasCamcorderProfile(id, q) ? JNI_TRUE : JNI_FALSE;
}
static jint
android_media_MediaProfiles_native_get_num_video_decoders(JNIEnv *env, jobject thiz)
{
ALOGV("native_get_num_video_decoders");
- return sProfiles->getVideoDecoders().size();
+ return (jint) sProfiles->getVideoDecoders().size();
}
static jint
@@ -255,7 +255,7 @@ static jint
android_media_MediaProfiles_native_get_num_audio_decoders(JNIEnv *env, jobject thiz)
{
ALOGV("native_get_num_audio_decoders");
- return sProfiles->getAudioDecoders().size();
+ return (jint) sProfiles->getAudioDecoders().size();
}
static jint
@@ -276,7 +276,7 @@ static jint
android_media_MediaProfiles_native_get_num_image_encoding_quality_levels(JNIEnv *env, jobject thiz, jint cameraId)
{
ALOGV("native_get_num_image_encoding_quality_levels");
- return sProfiles->getImageEncodingQualityLevels(cameraId).size();
+ return (jint) sProfiles->getImageEncodingQualityLevels(cameraId).size();
}
static jint
@@ -284,7 +284,7 @@ android_media_MediaProfiles_native_get_image_encoding_quality_level(JNIEnv *env,
{
ALOGV("native_get_image_encoding_quality_level");
Vector<int> levels = sProfiles->getImageEncodingQualityLevels(cameraId);
- if (index < 0 || index >= levels.size()) {
+ if (index < 0 || index >= (jint) levels.size()) {
jniThrowException(env, "java/lang/IllegalArgumentException", "out of array boundary");
return -1;
}
diff --git a/media/jni/android_media_MediaRecorder.cpp b/media/jni/android_media_MediaRecorder.cpp
index 98885911b86f..0cfd2ffd6718 100644
--- a/media/jni/android_media_MediaRecorder.cpp
+++ b/media/jni/android_media_MediaRecorder.cpp
@@ -128,21 +128,21 @@ static bool process_media_recorder_call(JNIEnv *env, status_t opStatus, const ch
static sp<MediaRecorder> getMediaRecorder(JNIEnv* env, jobject thiz)
{
Mutex::Autolock l(sLock);
- MediaRecorder* const p = (MediaRecorder*)env->GetIntField(thiz, fields.context);
+ MediaRecorder* const p = (MediaRecorder*)env->GetLongField(thiz, fields.context);
return sp<MediaRecorder>(p);
}
static sp<MediaRecorder> setMediaRecorder(JNIEnv* env, jobject thiz, const sp<MediaRecorder>& recorder)
{
Mutex::Autolock l(sLock);
- sp<MediaRecorder> old = (MediaRecorder*)env->GetIntField(thiz, fields.context);
+ sp<MediaRecorder> old = (MediaRecorder*)env->GetLongField(thiz, fields.context);
if (recorder.get()) {
recorder->incStrong(thiz);
}
if (old != 0) {
old->decStrong(thiz);
}
- env->SetIntField(thiz, fields.context, (int)recorder.get());
+ env->SetLongField(thiz, fields.context, (jlong)recorder.get());
return old;
}
@@ -334,14 +334,14 @@ android_media_MediaRecorder_prepare(JNIEnv *env, jobject thiz)
process_media_recorder_call(env, mr->prepare(), "java/io/IOException", "prepare failed.");
}
-static int
+static jint
android_media_MediaRecorder_native_getMaxAmplitude(JNIEnv *env, jobject thiz)
{
ALOGV("getMaxAmplitude");
sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
int result = 0;
process_media_recorder_call(env, mr->getMaxAmplitude(&result), "java/lang/RuntimeException", "getMaxAmplitude failed.");
- return result;
+ return (jint) result;
}
static void
@@ -392,7 +392,7 @@ android_media_MediaRecorder_native_init(JNIEnv *env)
return;
}
- fields.context = env->GetFieldID(clazz, "mNativeContext", "I");
+ fields.context = env->GetFieldID(clazz, "mNativeContext", "J");
if (fields.context == NULL) {
return;
}
diff --git a/media/jni/android_media_MediaScanner.cpp b/media/jni/android_media_MediaScanner.cpp
index 4e3d14e33810..84028b7e136a 100644
--- a/media/jni/android_media_MediaScanner.cpp
+++ b/media/jni/android_media_MediaScanner.cpp
@@ -226,12 +226,12 @@ private:
static MediaScanner *getNativeScanner_l(JNIEnv* env, jobject thiz)
{
- return (MediaScanner *) env->GetIntField(thiz, fields.context);
+ return (MediaScanner *) env->GetLongField(thiz, fields.context);
}
static void setNativeScanner_l(JNIEnv* env, jobject thiz, MediaScanner *s)
{
- env->SetIntField(thiz, fields.context, (int)s);
+ env->SetLongField(thiz, fields.context, (jlong)s);
}
static void
@@ -381,7 +381,7 @@ android_media_MediaScanner_native_init(JNIEnv *env)
return;
}
- fields.context = env->GetFieldID(clazz, "mNativeContext", "I");
+ fields.context = env->GetFieldID(clazz, "mNativeContext", "J");
if (fields.context == NULL) {
return;
}
@@ -398,7 +398,7 @@ android_media_MediaScanner_native_setup(JNIEnv *env, jobject thiz)
return;
}
- env->SetIntField(thiz, fields.context, (int)mp);
+ env->SetLongField(thiz, fields.context, (jlong)mp);
}
static void
diff --git a/media/jni/android_mtp_MtpDatabase.cpp b/media/jni/android_mtp_MtpDatabase.cpp
index 067e7a6af8b0..6b0bd0d9f8b7 100644
--- a/media/jni/android_mtp_MtpDatabase.cpp
+++ b/media/jni/android_mtp_MtpDatabase.cpp
@@ -80,7 +80,7 @@ static jfieldID field_mStringValues;
MtpDatabase* getMtpDatabase(JNIEnv *env, jobject database) {
- return (MtpDatabase *)env->GetIntField(database, field_context);
+ return (MtpDatabase *)env->GetLongField(database, field_context);
}
// ----------------------------------------------------------------------------
@@ -1087,17 +1087,17 @@ static void
android_mtp_MtpDatabase_setup(JNIEnv *env, jobject thiz)
{
MyMtpDatabase* database = new MyMtpDatabase(env, thiz);
- env->SetIntField(thiz, field_context, (int)database);
+ env->SetLongField(thiz, field_context, (jlong)database);
checkAndClearExceptionFromCallback(env, __FUNCTION__);
}
static void
android_mtp_MtpDatabase_finalize(JNIEnv *env, jobject thiz)
{
- MyMtpDatabase* database = (MyMtpDatabase *)env->GetIntField(thiz, field_context);
+ MyMtpDatabase* database = (MyMtpDatabase *)env->GetLongField(thiz, field_context);
database->cleanup(env);
delete database;
- env->SetIntField(thiz, field_context, 0);
+ env->SetLongField(thiz, field_context, 0);
checkAndClearExceptionFromCallback(env, __FUNCTION__);
}
@@ -1229,7 +1229,7 @@ int register_android_mtp_MtpDatabase(JNIEnv *env)
return -1;
}
- field_context = env->GetFieldID(clazz, "mNativeContext", "I");
+ field_context = env->GetFieldID(clazz, "mNativeContext", "J");
if (field_context == NULL) {
ALOGE("Can't find MtpDatabase.mNativeContext");
return -1;
diff --git a/media/jni/android_mtp_MtpDevice.cpp b/media/jni/android_mtp_MtpDevice.cpp
index b61b66c76c87..8e013a03316e 100644
--- a/media/jni/android_mtp_MtpDevice.cpp
+++ b/media/jni/android_mtp_MtpDevice.cpp
@@ -88,7 +88,7 @@ static jfieldID field_objectInfo_keywords;
MtpDevice* get_device_from_object(JNIEnv* env, jobject javaDevice)
{
- return (MtpDevice*)env->GetIntField(javaDevice, field_context);
+ return (MtpDevice*)env->GetLongField(javaDevice, field_context);
}
static void checkAndClearExceptionFromCallback(JNIEnv* env, const char* methodName) {
@@ -106,15 +106,15 @@ android_mtp_MtpDevice_open(JNIEnv *env, jobject thiz, jstring deviceName, jint f
{
const char *deviceNameStr = env->GetStringUTFChars(deviceName, NULL);
if (deviceNameStr == NULL) {
- return false;
+ return JNI_FALSE;
}
MtpDevice* device = MtpDevice::open(deviceNameStr, fd);
env->ReleaseStringUTFChars(deviceName, deviceNameStr);
if (device)
- env->SetIntField(thiz, field_context, (int)device);
- return (device != NULL);
+ env->SetLongField(thiz, field_context, (jlong)device);
+ return (jboolean)(device != NULL);
}
static void
@@ -124,7 +124,7 @@ android_mtp_MtpDevice_close(JNIEnv *env, jobject thiz)
if (device) {
device->close();
delete device;
- env->SetIntField(thiz, field_context, 0);
+ env->SetLongField(thiz, field_context, 0);
}
}
@@ -356,10 +356,11 @@ static jboolean
android_mtp_MtpDevice_delete_object(JNIEnv *env, jobject thiz, jint object_id)
{
MtpDevice* device = get_device_from_object(env, thiz);
- if (device)
- return device->deleteObject(object_id);
- else
- return NULL;
+ if (device && device->deleteObject(object_id)) {
+ return JNI_TRUE;
+ } else {
+ return JNI_FALSE;
+ }
}
static jlong
@@ -367,7 +368,7 @@ android_mtp_MtpDevice_get_parent(JNIEnv *env, jobject thiz, jint object_id)
{
MtpDevice* device = get_device_from_object(env, thiz);
if (device)
- return device->getParent(object_id);
+ return (jlong)device->getParent(object_id);
else
return -1;
}
@@ -377,7 +378,7 @@ android_mtp_MtpDevice_get_storage_id(JNIEnv *env, jobject thiz, jint object_id)
{
MtpDevice* device = get_device_from_object(env, thiz);
if (device)
- return device->getStorageID(object_id);
+ return (jlong)device->getStorageID(object_id);
else
return -1;
}
@@ -389,15 +390,15 @@ android_mtp_MtpDevice_import_file(JNIEnv *env, jobject thiz, jint object_id, jst
if (device) {
const char *destPathStr = env->GetStringUTFChars(dest_path, NULL);
if (destPathStr == NULL) {
- return false;
+ return JNI_FALSE;
}
- bool result = device->readObject(object_id, destPathStr, AID_SDCARD_RW, 0664);
+ jboolean result = device->readObject(object_id, destPathStr, AID_SDCARD_RW, 0664);
env->ReleaseStringUTFChars(dest_path, destPathStr);
return result;
}
- return false;
+ return JNI_FALSE;
}
// ----------------------------------------------------------------------------
@@ -618,7 +619,7 @@ int register_android_mtp_MtpDevice(JNIEnv *env)
ALOGE("Can't find android/mtp/MtpDevice");
return -1;
}
- field_context = env->GetFieldID(clazz, "mNativeContext", "I");
+ field_context = env->GetFieldID(clazz, "mNativeContext", "J");
if (field_context == NULL) {
ALOGE("Can't find MtpDevice.mNativeContext");
return -1;
diff --git a/media/jni/android_mtp_MtpServer.cpp b/media/jni/android_mtp_MtpServer.cpp
index 5252a3afc20f..9d7f1c2614c4 100644
--- a/media/jni/android_mtp_MtpServer.cpp
+++ b/media/jni/android_mtp_MtpServer.cpp
@@ -53,7 +53,7 @@ static Mutex sMutex;
extern MtpDatabase* getMtpDatabase(JNIEnv *env, jobject database);
static inline MtpServer* getMtpServer(JNIEnv *env, jobject thiz) {
- return (MtpServer*)env->GetIntField(thiz, field_MtpServer_nativeContext);
+ return (MtpServer*)env->GetLongField(thiz, field_MtpServer_nativeContext);
}
static void
@@ -63,7 +63,7 @@ android_mtp_MtpServer_setup(JNIEnv *env, jobject thiz, jobject javaDatabase, jbo
if (fd >= 0) {
MtpServer* server = new MtpServer(fd, getMtpDatabase(env, javaDatabase),
usePtp, AID_MEDIA_RW, 0664, 0775);
- env->SetIntField(thiz, field_MtpServer_nativeContext, (int)server);
+ env->SetLongField(thiz, field_MtpServer_nativeContext, (jlong)server);
} else {
ALOGE("could not open MTP driver, errno: %d", errno);
}
@@ -87,7 +87,7 @@ android_mtp_MtpServer_cleanup(JNIEnv *env, jobject thiz)
MtpServer* server = getMtpServer(env, thiz);
if (server) {
delete server;
- env->SetIntField(thiz, field_MtpServer_nativeContext, 0);
+ env->SetLongField(thiz, field_MtpServer_nativeContext, 0);
} else {
ALOGE("server is null in cleanup");
}
@@ -226,7 +226,7 @@ int register_android_mtp_MtpServer(JNIEnv *env)
ALOGE("Can't find android/mtp/MtpServer");
return -1;
}
- field_MtpServer_nativeContext = env->GetFieldID(clazz, "mNativeContext", "I");
+ field_MtpServer_nativeContext = env->GetFieldID(clazz, "mNativeContext", "J");
if (field_MtpServer_nativeContext == NULL) {
ALOGE("Can't find MtpServer.mNativeContext");
return -1;
diff --git a/media/jni/audioeffect/android_media_AudioEffect.cpp b/media/jni/audioeffect/android_media_AudioEffect.cpp
index bcab4f3c363a..be37aa8317e7 100644
--- a/media/jni/audioeffect/android_media_AudioEffect.cpp
+++ b/media/jni/audioeffect/android_media_AudioEffect.cpp
@@ -214,7 +214,7 @@ android_media_AudioEffect_native_init(JNIEnv *env)
// nativeTrackInJavaObj
fields.fidNativeAudioEffect = env->GetFieldID(
fields.clazzEffect,
- "mNativeAudioEffect", "I");
+ "mNativeAudioEffect", "J");
if (fields.fidNativeAudioEffect == NULL) {
ALOGE("Can't find AudioEffect.%s", "mNativeAudioEffect");
return;
@@ -222,7 +222,7 @@ android_media_AudioEffect_native_init(JNIEnv *env)
// fidJniData;
fields.fidJniData = env->GetFieldID(
fields.clazzEffect,
- "mJniData", "I");
+ "mJniData", "J");
if (fields.fidJniData == NULL) {
ALOGE("Can't find AudioEffect.%s", "mJniData");
return;
@@ -388,11 +388,11 @@ android_media_AudioEffect_native_setup(JNIEnv *env, jobject thiz, jobject weak_t
env->SetObjectArrayElement(javadesc, 0, jdesc);
- env->SetIntField(thiz, fields.fidNativeAudioEffect, (int)lpAudioEffect);
+ env->SetLongField(thiz, fields.fidNativeAudioEffect, (jlong)lpAudioEffect);
- env->SetIntField(thiz, fields.fidJniData, (int)lpJniStorage);
+ env->SetLongField(thiz, fields.fidJniData, (jlong)lpJniStorage);
- return AUDIOEFFECT_SUCCESS;
+ return (jint) AUDIOEFFECT_SUCCESS;
// failures:
setup_failure:
@@ -404,12 +404,12 @@ setup_failure:
if (lpAudioEffect) {
delete lpAudioEffect;
}
- env->SetIntField(thiz, fields.fidNativeAudioEffect, 0);
+ env->SetLongField(thiz, fields.fidNativeAudioEffect, 0);
if (lpJniStorage) {
delete lpJniStorage;
}
- env->SetIntField(thiz, fields.fidJniData, 0);
+ env->SetLongField(thiz, fields.fidJniData, 0);
if (uuidStr != NULL) {
env->ReleaseStringUTFChars(uuid, uuidStr);
@@ -419,27 +419,27 @@ setup_failure:
env->ReleaseStringUTFChars(type, typeStr);
}
- return lStatus;
+ return (jint)lStatus;
}
// ----------------------------------------------------------------------------
static void android_media_AudioEffect_native_finalize(JNIEnv *env, jobject thiz) {
- ALOGV("android_media_AudioEffect_native_finalize jobject: %x\n", (int)thiz);
+ ALOGV("android_media_AudioEffect_native_finalize jobject: %p\n", thiz);
// delete the AudioEffect object
- AudioEffect* lpAudioEffect = (AudioEffect *)env->GetIntField(
+ AudioEffect* lpAudioEffect = (AudioEffect *)env->GetLongField(
thiz, fields.fidNativeAudioEffect);
if (lpAudioEffect) {
- ALOGV("deleting AudioEffect: %x\n", (int)lpAudioEffect);
+ ALOGV("deleting AudioEffect: %p\n", lpAudioEffect);
delete lpAudioEffect;
}
// delete the JNI data
- AudioEffectJniStorage* lpJniStorage = (AudioEffectJniStorage *)env->GetIntField(
+ AudioEffectJniStorage* lpJniStorage = (AudioEffectJniStorage *)env->GetLongField(
thiz, fields.fidJniData);
if (lpJniStorage) {
- ALOGV("deleting pJniStorage: %x\n", (int)lpJniStorage);
+ ALOGV("deleting pJniStorage: %p\n", lpJniStorage);
delete lpJniStorage;
}
}
@@ -451,15 +451,15 @@ static void android_media_AudioEffect_native_release(JNIEnv *env, jobject thiz)
android_media_AudioEffect_native_finalize(env, thiz);
// + reset the native resources in the Java object so any attempt to access
// them after a call to release fails.
- env->SetIntField(thiz, fields.fidNativeAudioEffect, 0);
- env->SetIntField(thiz, fields.fidJniData, 0);
+ env->SetLongField(thiz, fields.fidNativeAudioEffect, 0);
+ env->SetLongField(thiz, fields.fidJniData, 0);
}
static jint
android_media_AudioEffect_native_setEnabled(JNIEnv *env, jobject thiz, jboolean enabled)
{
// retrieve the AudioEffect object
- AudioEffect* lpAudioEffect = (AudioEffect *)env->GetIntField(
+ AudioEffect* lpAudioEffect = (AudioEffect *)env->GetLongField(
thiz, fields.fidNativeAudioEffect);
if (lpAudioEffect == NULL) {
@@ -468,23 +468,27 @@ android_media_AudioEffect_native_setEnabled(JNIEnv *env, jobject thiz, jboolean
return AUDIOEFFECT_ERROR_NO_INIT;
}
- return translateError(lpAudioEffect->setEnabled(enabled));
+ return (jint) translateError(lpAudioEffect->setEnabled(enabled));
}
static jboolean
android_media_AudioEffect_native_getEnabled(JNIEnv *env, jobject thiz)
{
// retrieve the AudioEffect object
- AudioEffect* lpAudioEffect = (AudioEffect *)env->GetIntField(
+ AudioEffect* lpAudioEffect = (AudioEffect *)env->GetLongField(
thiz, fields.fidNativeAudioEffect);
if (lpAudioEffect == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
"Unable to retrieve AudioEffect pointer for getEnabled()");
- return false;
+ return JNI_FALSE;
}
- return (jboolean)lpAudioEffect->getEnabled();
+ if (lpAudioEffect->getEnabled()) {
+ return JNI_TRUE;
+ } else {
+ return JNI_FALSE;
+ }
}
@@ -492,24 +496,24 @@ static jboolean
android_media_AudioEffect_native_hasControl(JNIEnv *env, jobject thiz)
{
// retrieve the AudioEffect object
- AudioEffect* lpAudioEffect = (AudioEffect *)env->GetIntField(
+ AudioEffect* lpAudioEffect = (AudioEffect *)env->GetLongField(
thiz, fields.fidNativeAudioEffect);
if (lpAudioEffect == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
"Unable to retrieve AudioEffect pointer for hasControl()");
- return false;
+ return JNI_FALSE;
}
if (lpAudioEffect->initCheck() == NO_ERROR) {
- return true;
+ return JNI_TRUE;
} else {
- return false;
+ return JNI_FALSE;
}
}
static jint android_media_AudioEffect_native_setParameter(JNIEnv *env,
- jobject thiz, int psize, jbyteArray pJavaParam, int vsize,
+ jobject thiz, jint psize, jbyteArray pJavaParam, jint vsize,
jbyteArray pJavaValue) {
// retrieve the AudioEffect object
jbyte* lpValue = NULL;
@@ -518,7 +522,7 @@ static jint android_media_AudioEffect_native_setParameter(JNIEnv *env,
effect_param_t *p;
int voffset;
- AudioEffect* lpAudioEffect = (AudioEffect *) env->GetIntField(thiz,
+ AudioEffect* lpAudioEffect = (AudioEffect *) env->GetLongField(thiz,
fields.fidNativeAudioEffect);
if (lpAudioEffect == NULL) {
@@ -567,7 +571,7 @@ setParameter_Exit:
if (lpValue != NULL) {
env->ReleasePrimitiveArrayCritical(pJavaValue, lpValue, 0);
}
- return translateError(lStatus);
+ return (jint) translateError(lStatus);
}
static jint
@@ -581,7 +585,7 @@ android_media_AudioEffect_native_getParameter(JNIEnv *env,
effect_param_t *p;
int voffset;
- AudioEffect* lpAudioEffect = (AudioEffect *) env->GetIntField(thiz,
+ AudioEffect* lpAudioEffect = (AudioEffect *) env->GetLongField(thiz,
fields.fidNativeAudioEffect);
if (lpAudioEffect == NULL) {
@@ -637,7 +641,7 @@ getParameter_Exit:
if (lStatus == NO_ERROR) {
return vsize;
}
- return translateError(lStatus);
+ return (jint) translateError(lStatus);
}
static jint android_media_AudioEffect_native_command(JNIEnv *env, jobject thiz,
@@ -648,7 +652,7 @@ static jint android_media_AudioEffect_native_command(JNIEnv *env, jobject thiz,
jint lStatus = AUDIOEFFECT_ERROR_BAD_VALUE;
// retrieve the AudioEffect object
- AudioEffect* lpAudioEffect = (AudioEffect *) env->GetIntField(thiz,
+ AudioEffect* lpAudioEffect = (AudioEffect *) env->GetLongField(thiz,
fields.fidNativeAudioEffect);
if (lpAudioEffect == NULL) {
diff --git a/media/jni/audioeffect/android_media_Visualizer.cpp b/media/jni/audioeffect/android_media_Visualizer.cpp
index 40cd06b28283..8463d94ad3ff 100644
--- a/media/jni/audioeffect/android_media_Visualizer.cpp
+++ b/media/jni/audioeffect/android_media_Visualizer.cpp
@@ -231,7 +231,7 @@ static void captureCallback(void* user,
static Visualizer *getVisualizer(JNIEnv* env, jobject thiz)
{
- Visualizer *v = (Visualizer *)env->GetIntField(
+ Visualizer *v = (Visualizer *)env->GetLongField(
thiz, fields.fidNativeVisualizer);
if (v == NULL) {
jniThrowException(env, "java/lang/IllegalStateException",
@@ -282,7 +282,7 @@ android_media_visualizer_native_init(JNIEnv *env)
// nativeTrackInJavaObj
fields.fidNativeVisualizer = env->GetFieldID(
fields.clazzEffect,
- "mNativeVisualizer", "I");
+ "mNativeVisualizer", "J");
if (fields.fidNativeVisualizer == NULL) {
ALOGE("Can't find Visualizer.%s", "mNativeVisualizer");
return;
@@ -290,7 +290,7 @@ android_media_visualizer_native_init(JNIEnv *env)
// fidJniData;
fields.fidJniData = env->GetFieldID(
fields.clazzEffect,
- "mJniData", "I");
+ "mJniData", "J");
if (fields.fidJniData == NULL) {
ALOGE("Can't find Visualizer.%s", "mJniData");
return;
@@ -391,9 +391,9 @@ android_media_visualizer_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
env->ReleasePrimitiveArrayCritical(jId, nId, 0);
nId = NULL;
- env->SetIntField(thiz, fields.fidNativeVisualizer, (int)lpVisualizer);
+ env->SetLongField(thiz, fields.fidNativeVisualizer, (jlong)lpVisualizer);
- env->SetIntField(thiz, fields.fidJniData, (int)lpJniStorage);
+ env->SetLongField(thiz, fields.fidJniData, (jlong)lpJniStorage);
return VISUALIZER_SUCCESS;
@@ -407,33 +407,33 @@ setup_failure:
if (lpVisualizer) {
delete lpVisualizer;
}
- env->SetIntField(thiz, fields.fidNativeVisualizer, 0);
+ env->SetLongField(thiz, fields.fidNativeVisualizer, 0);
if (lpJniStorage) {
delete lpJniStorage;
}
- env->SetIntField(thiz, fields.fidJniData, 0);
+ env->SetLongField(thiz, fields.fidJniData, 0);
- return lStatus;
+ return (jint) lStatus;
}
// ----------------------------------------------------------------------------
static void android_media_visualizer_native_finalize(JNIEnv *env, jobject thiz) {
- ALOGV("android_media_visualizer_native_finalize jobject: %x\n", (int)thiz);
+ ALOGV("android_media_visualizer_native_finalize jobject: %p\n", thiz);
// delete the Visualizer object
- Visualizer* lpVisualizer = (Visualizer *)env->GetIntField(
+ Visualizer* lpVisualizer = (Visualizer *)env->GetLongField(
thiz, fields.fidNativeVisualizer);
if (lpVisualizer) {
- ALOGV("deleting Visualizer: %x\n", (int)lpVisualizer);
+ ALOGV("deleting Visualizer: %p\n", lpVisualizer);
delete lpVisualizer;
}
// delete the JNI data
- visualizerJniStorage* lpJniStorage = (visualizerJniStorage *)env->GetIntField(
+ visualizerJniStorage* lpJniStorage = (visualizerJniStorage *)env->GetLongField(
thiz, fields.fidJniData);
if (lpJniStorage) {
- ALOGV("deleting pJniStorage: %x\n", (int)lpJniStorage);
+ ALOGV("deleting pJniStorage: %p\n", lpJniStorage);
delete lpJniStorage;
}
}
@@ -445,8 +445,8 @@ static void android_media_visualizer_native_release(JNIEnv *env, jobject thiz)
android_media_visualizer_native_finalize(env, thiz);
// + reset the native resources in the Java object so any attempt to access
// them after a call to release fails.
- env->SetIntField(thiz, fields.fidNativeVisualizer, 0);
- env->SetIntField(thiz, fields.fidJniData, 0);
+ env->SetLongField(thiz, fields.fidNativeVisualizer, 0);
+ env->SetLongField(thiz, fields.fidJniData, 0);
}
static jint
@@ -460,7 +460,7 @@ android_media_visualizer_native_setEnabled(JNIEnv *env, jobject thiz, jboolean e
jint retVal = translateError(lpVisualizer->setEnabled(enabled));
if (!enabled) {
- visualizerJniStorage* lpJniStorage = (visualizerJniStorage *)env->GetIntField(
+ visualizerJniStorage* lpJniStorage = (visualizerJniStorage *)env->GetLongField(
thiz, fields.fidJniData);
if (NULL != lpJniStorage)
@@ -475,10 +475,14 @@ android_media_visualizer_native_getEnabled(JNIEnv *env, jobject thiz)
{
Visualizer* lpVisualizer = getVisualizer(env, thiz);
if (lpVisualizer == NULL) {
- return false;
+ return JNI_FALSE;
}
- return (jboolean)lpVisualizer->getEnabled();
+ if (lpVisualizer->getEnabled()) {
+ return JNI_TRUE;
+ } else {
+ return JNI_FALSE;
+ }
}
static jintArray
@@ -496,7 +500,7 @@ android_media_visualizer_native_getCaptureSizeRange(JNIEnv *env, jobject thiz)
static jint
android_media_visualizer_native_getMaxCaptureRate(JNIEnv *env, jobject thiz)
{
- return Visualizer::getMaxCaptureRate();
+ return (jint) Visualizer::getMaxCaptureRate();
}
static jint
@@ -517,7 +521,7 @@ android_media_visualizer_native_getCaptureSize(JNIEnv *env, jobject thiz)
if (lpVisualizer == NULL) {
return -1;
}
- return lpVisualizer->getCaptureSize();
+ return (jint) lpVisualizer->getCaptureSize();
}
static jint
@@ -538,7 +542,7 @@ android_media_visualizer_native_getScalingMode(JNIEnv *env, jobject thiz)
if (lpVisualizer == NULL) {
return -1;
}
- return lpVisualizer->getScalingMode();
+ return (jint)lpVisualizer->getScalingMode();
}
static jint
@@ -568,7 +572,7 @@ android_media_visualizer_native_getSamplingRate(JNIEnv *env, jobject thiz)
if (lpVisualizer == NULL) {
return -1;
}
- return lpVisualizer->getSamplingRate();
+ return (jint) lpVisualizer->getSamplingRate();
}
static jint
@@ -634,7 +638,7 @@ android_media_setPeriodicCapture(JNIEnv *env, jobject thiz, jint rate, jboolean
if (lpVisualizer == NULL) {
return VISUALIZER_ERROR_NO_INIT;
}
- visualizerJniStorage* lpJniStorage = (visualizerJniStorage *)env->GetIntField(thiz,
+ visualizerJniStorage* lpJniStorage = (visualizerJniStorage *)env->GetLongField(thiz,
fields.fidJniData);
if (lpJniStorage == NULL) {
return VISUALIZER_ERROR_NO_INIT;
diff --git a/media/jni/mediaeditor/VideoEditorClasses.cpp b/media/jni/mediaeditor/VideoEditorClasses.cpp
index d8099dd2fd07..d29fad30c21d 100644
--- a/media/jni/mediaeditor/VideoEditorClasses.cpp
+++ b/media/jni/mediaeditor/VideoEditorClasses.cpp
@@ -609,7 +609,7 @@ VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(EffectSettings, EFFECT_SETTINGS_CLASS_NAME)
VIDEOEDIT_JAVA_DEFINE_FIELDS(Engine)
{
- VIDEOEDIT_JAVA_FIELD_INIT("mManualEditContext", "I")
+ VIDEOEDIT_JAVA_FIELD_INIT("mManualEditContext", "J")
};
VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(Engine, MANUAL_EDIT_ENGINE_CLASS_NAME)
@@ -3096,7 +3096,7 @@ videoEditClasses_getContext(
if (*pResult)
{
// Retrieve the context pointer.
- pContext = (void *)pEnv->GetIntField(object, fieldIds.context);
+ pContext = (void *)pEnv->GetLongField(object, fieldIds.context);
}
// Return the context pointer.
@@ -3132,15 +3132,15 @@ videoEditClasses_setContext(
{
// Set the context field.
VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "The context value from JAVA before setting is = 0x%x",
- pEnv->GetIntField(object, fieldIds.context));
+ "The context value from JAVA before setting is = %p",
+ (void *)pEnv->GetLongField(object, fieldIds.context));
- pEnv->SetIntField(object, fieldIds.context, (int)pContext);
- M4OSA_TRACE1_1("The context value in JNI is = 0x%x",pContext);
+ pEnv->SetLongField(object, fieldIds.context, (jlong)pContext);
+ M4OSA_TRACE1_1("The context value in JNI is = %p",pContext);
VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "The context value from JAVA after setting is = 0x%x",
- pEnv->GetIntField(object, fieldIds.context));
+ "The context value from JAVA after setting is = %p",
+ (void *)pEnv->GetLongField(object, fieldIds.context));
}
}
diff --git a/media/jni/mediaeditor/VideoEditorMain.cpp b/media/jni/mediaeditor/VideoEditorMain.cpp
index c1ad516977da..058012bb02e2 100644
--- a/media/jni/mediaeditor/VideoEditorMain.cpp
+++ b/media/jni/mediaeditor/VideoEditorMain.cpp
@@ -170,7 +170,7 @@ static void videoEditor_stopEncoding(
static void videoEditor_release(
JNIEnv* pEnv,
jobject thiz);
-static int videoEditor_getPixels(
+static jint videoEditor_getPixels(
JNIEnv* env,
jobject thiz,
jstring path,
@@ -178,7 +178,7 @@ static int videoEditor_getPixels(
M4OSA_UInt32 width,
M4OSA_UInt32 height,
M4OSA_UInt32 timeMS);
-static int videoEditor_getPixelsList(
+static jint videoEditor_getPixelsList(
JNIEnv* env,
jobject thiz,
jstring path,
@@ -209,7 +209,7 @@ videoEditor_populateSettings(
jobject object,
jobject audioSettingObject);
-static int videoEditor_stopPreview(JNIEnv* pEnv,
+static jint videoEditor_stopPreview(JNIEnv* pEnv,
jobject thiz);
static jobject
@@ -218,7 +218,7 @@ videoEditor_getProperties(
jobject thiz,
jstring file);
-static int videoEditor_renderPreviewFrame(JNIEnv* pEnv,
+static jint videoEditor_renderPreviewFrame(JNIEnv* pEnv,
jobject thiz,
jobject mSurface,
jlong fromMs,
@@ -231,7 +231,7 @@ static int videoEditor_registerManualEditMethods(
static void jniPreviewProgressCallback(void* cookie, M4OSA_UInt32 msgType,
void *argc);
-static int videoEditor_renderMediaItemPreviewFrame(JNIEnv* pEnv,
+static jint videoEditor_renderMediaItemPreviewFrame(JNIEnv* pEnv,
jobject thiz,
jobject mSurface,
jstring filePath,
@@ -241,7 +241,7 @@ static int videoEditor_renderMediaItemPreviewFrame(JNIEnv* pEnv,
jint surfaceHeight,
jlong fromMs);
-static int videoEditor_generateAudioWaveFormSync ( JNIEnv* pEnv,
+static jint videoEditor_generateAudioWaveFormSync ( JNIEnv* pEnv,
jobject thiz,
jstring pcmfilePath,
jstring outGraphfilePath,
@@ -258,7 +258,7 @@ M4OSA_ERR videoEditor_generateAudio(JNIEnv* pEnv,ManualEditContext* pContext,
M4OSA_Char* infilePath,
M4OSA_Char* pcmfilePath );
-static int
+static jint
videoEditor_generateClip(
JNIEnv* pEnv,
jobject thiz,
@@ -572,7 +572,7 @@ static M4OSA_ERR checkClipVideoProfileAndLevel(M4DECODER_VideoDecoders *pDecoder
return result;
}
-static int videoEditor_stopPreview(JNIEnv* pEnv,
+static jint videoEditor_stopPreview(JNIEnv* pEnv,
jobject thiz)
{
ManualEditContext* pContext = M4OSA_NULL;
@@ -594,7 +594,7 @@ static int videoEditor_stopPreview(JNIEnv* pEnv,
pContext->mOverlayFileName = NULL;
}
- return lastProgressTimeMs;
+ return (jint)lastProgressTimeMs;
}
static void videoEditor_clearSurface(JNIEnv* pEnv,
@@ -654,7 +654,7 @@ static void videoEditor_clearSurface(JNIEnv* pEnv,
}
-static int videoEditor_renderPreviewFrame(JNIEnv* pEnv,
+static jint videoEditor_renderPreviewFrame(JNIEnv* pEnv,
jobject thiz,
jobject mSurface,
jlong fromMs,
@@ -976,10 +976,10 @@ static int videoEditor_renderPreviewFrame(JNIEnv* pEnv,
free(yuvPlane);
}
- return tnTimeMs;
+ return (jint)tnTimeMs;
}
-static int videoEditor_renderMediaItemPreviewFrame(JNIEnv* pEnv,
+static jint videoEditor_renderMediaItemPreviewFrame(JNIEnv* pEnv,
jobject thiz,
jobject mSurface,
jstring filePath,
@@ -1033,7 +1033,7 @@ static int videoEditor_renderMediaItemPreviewFrame(JNIEnv* pEnv,
/* get thumbnail*/
result = ThumbnailOpen(&tnContext,(const M4OSA_Char*)pString, M4OSA_TRUE);
if (result != M4NO_ERROR || tnContext == M4OSA_NULL) {
- return timeMs;
+ return (jint)timeMs;
}
framesizeYuv = ((frameWidth)*(frameHeight)*1.5);
@@ -1046,7 +1046,7 @@ static int videoEditor_renderMediaItemPreviewFrame(JNIEnv* pEnv,
ThumbnailClose(tnContext);
pMessage = videoEditJava_getErrorName(M4ERR_ALLOC);
jniThrowException(pEnv, "java/lang/RuntimeException", pMessage);
- return timeMs;
+ return (jint)timeMs;
}
result = ThumbnailGetPixels16(tnContext, (M4OSA_Int16 *)pixelArray,
@@ -1055,7 +1055,7 @@ static int videoEditor_renderMediaItemPreviewFrame(JNIEnv* pEnv,
if (result != M4NO_ERROR) {
free(pixelArray);
ThumbnailClose(tnContext);
- return fromMs;
+ return (jint)fromMs;
}
#ifdef DUMPTOFILESYSTEM
@@ -1131,10 +1131,10 @@ static int videoEditor_renderMediaItemPreviewFrame(JNIEnv* pEnv,
pEnv->ReleaseStringUTFChars(filePath, pString);
}
- return timeMs;
+ return (jint)timeMs;
}
-int videoEditor_generateAudioRawFile( JNIEnv* pEnv,
+jint videoEditor_generateAudioRawFile( JNIEnv* pEnv,
jobject thiz,
jstring infilePath,
jstring pcmfilePath)
@@ -1178,7 +1178,7 @@ int videoEditor_generateAudioRawFile( JNIEnv* pEnv,
pEnv->ReleaseStringUTFChars(pcmfilePath, pStringOutPCMFilePath);
}
- return result;
+ return (jint)result;
}
M4OSA_ERR videoEditor_generateAudio(JNIEnv* pEnv,ManualEditContext* pContext,
@@ -2182,7 +2182,7 @@ videoEditor_getProperties(
return object;
}
-static int videoEditor_getPixels(
+static jint videoEditor_getPixels(
JNIEnv* env,
jobject thiz,
jstring path,
@@ -2234,10 +2234,10 @@ static int videoEditor_getPixels(
env->ReleaseStringUTFChars(path, pString);
}
- return timeMS;
+ return (jint)timeMS;
}
-static int videoEditor_getPixelsList(
+static jint videoEditor_getPixelsList(
JNIEnv* env,
jobject thiz,
jstring path,
@@ -2257,7 +2257,7 @@ static int videoEditor_getPixelsList(
const char *pString = env->GetStringUTFChars(path, NULL);
if (pString == M4OSA_NULL) {
jniThrowException(env, "java/lang/RuntimeException", "Input string null");
- return M4ERR_ALLOC;
+ return (jint)M4ERR_ALLOC;
}
err = ThumbnailOpen(&mContext,(const M4OSA_Char*)pString, M4OSA_FALSE);
@@ -2266,7 +2266,7 @@ static int videoEditor_getPixelsList(
if (pString != NULL) {
env->ReleaseStringUTFChars(path, pString);
}
- return err;
+ return (jint)err;
}
jlong duration = (endTime - startTime);
@@ -2307,7 +2307,7 @@ static int videoEditor_getPixelsList(
"ThumbnailGetPixels32 failed");
}
- return err;
+ return (jint)err;
}
static M4OSA_ERR
@@ -2892,7 +2892,7 @@ M4OSA_ERR videoEditor_processClip(
}
/*+ PROGRESS CB */
-static int
+static jint
videoEditor_generateClip(
JNIEnv* pEnv,
jobject thiz,
@@ -2934,7 +2934,7 @@ videoEditor_generateClip(
}
ALOGV("videoEditor_generateClip END 0x%x", (unsigned int) result);
- return result;
+ return (jint)result;
}
static void
@@ -3556,7 +3556,7 @@ M4OSA_ERR M4MA_generateAudioGraphFile(JNIEnv* pEnv, M4OSA_Char* pInputFileURL,
return err;
}
-static int videoEditor_generateAudioWaveFormSync (JNIEnv* pEnv, jobject thiz,
+static jint videoEditor_generateAudioWaveFormSync (JNIEnv* pEnv, jobject thiz,
jstring pcmfilePath,
jstring outGraphfilePath,
jint frameDuration, jint channels,
@@ -3619,7 +3619,7 @@ out:
VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR",
"videoEditor_generateAudioWaveFormSync pContext->bSkipState ");
- return result;
+ return (jint)result;
}
/******** End Audio Graph *******/
diff --git a/media/jni/soundpool/android_media_SoundPool_SoundPoolImpl.cpp b/media/jni/soundpool/android_media_SoundPool_SoundPoolImpl.cpp
index 260485063f62..9cc55abe2f1b 100644
--- a/media/jni/soundpool/android_media_SoundPool_SoundPoolImpl.cpp
+++ b/media/jni/soundpool/android_media_SoundPool_SoundPoolImpl.cpp
@@ -34,11 +34,11 @@ static struct fields_t {
} fields;
static inline SoundPool* MusterSoundPool(JNIEnv *env, jobject thiz) {
- return (SoundPool*)env->GetIntField(thiz, fields.mNativeContext);
+ return (SoundPool*)env->GetLongField(thiz, fields.mNativeContext);
}
// ----------------------------------------------------------------------------
-static int
+static jint
android_media_SoundPool_SoundPoolImpl_load_URL(JNIEnv *env, jobject thiz, jstring path, jint priority)
{
ALOGV("android_media_SoundPool_SoundPoolImpl_load_URL");
@@ -50,29 +50,29 @@ android_media_SoundPool_SoundPoolImpl_load_URL(JNIEnv *env, jobject thiz, jstrin
const char* s = env->GetStringUTFChars(path, NULL);
int id = ap->load(s, priority);
env->ReleaseStringUTFChars(path, s);
- return id;
+ return (jint) id;
}
-static int
+static jint
android_media_SoundPool_SoundPoolImpl_load_FD(JNIEnv *env, jobject thiz, jobject fileDescriptor,
jlong offset, jlong length, jint priority)
{
ALOGV("android_media_SoundPool_SoundPoolImpl_load_FD");
SoundPool *ap = MusterSoundPool(env, thiz);
if (ap == NULL) return 0;
- return ap->load(jniGetFDFromFileDescriptor(env, fileDescriptor),
+ return (jint) ap->load(jniGetFDFromFileDescriptor(env, fileDescriptor),
int64_t(offset), int64_t(length), int(priority));
}
-static bool
+static jboolean
android_media_SoundPool_SoundPoolImpl_unload(JNIEnv *env, jobject thiz, jint sampleID) {
ALOGV("android_media_SoundPool_SoundPoolImpl_unload\n");
SoundPool *ap = MusterSoundPool(env, thiz);
- if (ap == NULL) return 0;
- return ap->unload(sampleID);
+ if (ap == NULL) return JNI_FALSE;
+ return ap->unload(sampleID) ? JNI_TRUE : JNI_FALSE;
}
-static int
+static jint
android_media_SoundPool_SoundPoolImpl_play(JNIEnv *env, jobject thiz, jint sampleID,
jfloat leftVolume, jfloat rightVolume, jint priority, jint loop,
jfloat rate)
@@ -80,7 +80,7 @@ android_media_SoundPool_SoundPoolImpl_play(JNIEnv *env, jobject thiz, jint sampl
ALOGV("android_media_SoundPool_SoundPoolImpl_play\n");
SoundPool *ap = MusterSoundPool(env, thiz);
if (ap == NULL) return 0;
- return ap->play(sampleID, leftVolume, rightVolume, priority, loop, rate);
+ return (jint) ap->play(sampleID, leftVolume, rightVolume, priority, loop, rate);
}
static void
@@ -130,22 +130,22 @@ android_media_SoundPool_SoundPoolImpl_stop(JNIEnv *env, jobject thiz, jint chann
static void
android_media_SoundPool_SoundPoolImpl_setVolume(JNIEnv *env, jobject thiz, jint channelID,
- float leftVolume, float rightVolume)
+ jfloat leftVolume, jfloat rightVolume)
{
ALOGV("android_media_SoundPool_SoundPoolImpl_setVolume");
SoundPool *ap = MusterSoundPool(env, thiz);
if (ap == NULL) return;
- ap->setVolume(channelID, leftVolume, rightVolume);
+ ap->setVolume(channelID, (float) leftVolume, (float) rightVolume);
}
static void
android_media_SoundPool_SoundPoolImpl_setPriority(JNIEnv *env, jobject thiz, jint channelID,
- int priority)
+ jint priority)
{
ALOGV("android_media_SoundPool_SoundPoolImpl_setPriority");
SoundPool *ap = MusterSoundPool(env, thiz);
if (ap == NULL) return;
- ap->setPriority(channelID, priority);
+ ap->setPriority(channelID, (int) priority);
}
static void
@@ -160,12 +160,12 @@ android_media_SoundPool_SoundPoolImpl_setLoop(JNIEnv *env, jobject thiz, jint ch
static void
android_media_SoundPool_SoundPoolImpl_setRate(JNIEnv *env, jobject thiz, jint channelID,
- float rate)
+ jfloat rate)
{
ALOGV("android_media_SoundPool_SoundPoolImpl_setRate");
SoundPool *ap = MusterSoundPool(env, thiz);
if (ap == NULL) return;
- ap->setRate(channelID, rate);
+ ap->setRate(channelID, (float) rate);
}
static void android_media_callback(SoundPoolEvent event, SoundPool* soundPool, void* user)
@@ -185,7 +185,7 @@ android_media_SoundPool_SoundPoolImpl_native_setup(JNIEnv *env, jobject thiz, jo
}
// save pointer to SoundPool C++ object in opaque field in Java object
- env->SetIntField(thiz, fields.mNativeContext, (int)ap);
+ env->SetLongField(thiz, fields.mNativeContext, (jlong) ap);
// set callback with weak reference
jobject globalWeakRef = env->NewGlobalRef(weakRef);
@@ -208,7 +208,7 @@ android_media_SoundPool_SoundPoolImpl_release(JNIEnv *env, jobject thiz)
// clear callback and native context
ap->setCallback(NULL, NULL);
- env->SetIntField(thiz, fields.mNativeContext, 0);
+ env->SetLongField(thiz, fields.mNativeContext, 0);
delete ap;
}
}
@@ -299,7 +299,7 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved)
goto bail;
}
- fields.mNativeContext = env->GetFieldID(clazz, "mNativeContext", "I");
+ fields.mNativeContext = env->GetFieldID(clazz, "mNativeContext", "J");
if (fields.mNativeContext == NULL) {
ALOGE("Can't find SoundPoolImpl.mNativeContext");
goto bail;
diff --git a/media/lib/java/com/android/media/remotedisplay/RemoteDisplay.java b/media/lib/java/com/android/media/remotedisplay/RemoteDisplay.java
index 5e15702355f6..6cfc0e856b73 100644
--- a/media/lib/java/com/android/media/remotedisplay/RemoteDisplay.java
+++ b/media/lib/java/com/android/media/remotedisplay/RemoteDisplay.java
@@ -16,12 +16,12 @@
package com.android.media.remotedisplay;
-import com.android.internal.util.Objects;
-
import android.media.MediaRouter;
import android.media.RemoteDisplayState.RemoteDisplayInfo;
import android.text.TextUtils;
+import java.util.Objects;
+
/**
* Represents a remote display that has been discovered.
*/
@@ -87,7 +87,7 @@ public class RemoteDisplay {
}
public void setName(String name) {
- if (!Objects.equal(mMutableInfo.name, name)) {
+ if (!Objects.equals(mMutableInfo.name, name)) {
mMutableInfo.name = name;
mImmutableInfo = null;
}
@@ -98,7 +98,7 @@ public class RemoteDisplay {
}
public void setDescription(String description) {
- if (!Objects.equal(mMutableInfo.description, description)) {
+ if (!Objects.equals(mMutableInfo.description, description)) {
mMutableInfo.description = description;
mImmutableInfo = null;
}
diff --git a/media/mca/filterfw/jni/jni_gl_environment.cpp b/media/mca/filterfw/jni/jni_gl_environment.cpp
index 9abf19134a79..6da7b7c766fd 100644
--- a/media/mca/filterfw/jni/jni_gl_environment.cpp
+++ b/media/mca/filterfw/jni/jni_gl_environment.cpp
@@ -119,12 +119,12 @@ static sp<MediaRecorder> getMediaRecorder(JNIEnv* env, jobject jmediarecorder) {
return NULL;
}
- jfieldID context = env->GetFieldID(clazz, "mNativeContext", "I");
+ jfieldID context = env->GetFieldID(clazz, "mNativeContext", "J");
if (context == NULL) {
return NULL;
}
- MediaRecorder* const p = (MediaRecorder*)env->GetIntField(jmediarecorder, context);
+ MediaRecorder* const p = (MediaRecorder*)env->GetLongField(jmediarecorder, context);
env->DeleteLocalRef(clazz);
return sp<MediaRecorder>(p);
}
diff --git a/native/android/input.cpp b/native/android/input.cpp
index e9d08b4d839f..fc521386e6e1 100644
--- a/native/android/input.cpp
+++ b/native/android/input.cpp
@@ -273,7 +273,7 @@ float AMotionEvent_getHistoricalAxisValue(const AInputEvent* motion_event,
void AInputQueue_attachLooper(AInputQueue* queue, ALooper* looper,
int ident, ALooper_callbackFunc callback, void* data) {
InputQueue* iq = static_cast<InputQueue*>(queue);
- Looper* l = static_cast<Looper*>(looper);
+ Looper* l = reinterpret_cast<Looper*>(looper);
iq->attachLooper(l, ident, callback, data);
}
diff --git a/native/android/looper.cpp b/native/android/looper.cpp
index 455e950da033..24cb2342501d 100644
--- a/native/android/looper.cpp
+++ b/native/android/looper.cpp
@@ -25,20 +25,28 @@ using android::Looper;
using android::sp;
using android::IPCThreadState;
+static inline Looper* ALooper_to_Looper(ALooper* alooper) {
+ return reinterpret_cast<Looper*>(alooper);
+}
+
+static inline ALooper* Looper_to_ALooper(Looper* looper) {
+ return reinterpret_cast<ALooper*>(looper);
+}
+
ALooper* ALooper_forThread() {
- return Looper::getForThread().get();
+ return Looper_to_ALooper(Looper::getForThread().get());
}
ALooper* ALooper_prepare(int opts) {
- return Looper::prepare(opts).get();
+ return Looper_to_ALooper(Looper::prepare(opts).get());
}
void ALooper_acquire(ALooper* looper) {
- static_cast<Looper*>(looper)->incStrong((void*)ALooper_acquire);
+ ALooper_to_Looper(looper)->incStrong((void*)ALooper_acquire);
}
void ALooper_release(ALooper* looper) {
- static_cast<Looper*>(looper)->decStrong((void*)ALooper_acquire);
+ ALooper_to_Looper(looper)->decStrong((void*)ALooper_acquire);
}
int ALooper_pollOnce(int timeoutMillis, int* outFd, int* outEvents, void** outData) {
@@ -64,14 +72,14 @@ int ALooper_pollAll(int timeoutMillis, int* outFd, int* outEvents, void** outDat
}
void ALooper_wake(ALooper* looper) {
- static_cast<Looper*>(looper)->wake();
+ ALooper_to_Looper(looper)->wake();
}
int ALooper_addFd(ALooper* looper, int fd, int ident, int events,
ALooper_callbackFunc callback, void* data) {
- return static_cast<Looper*>(looper)->addFd(fd, ident, events, callback, data);
+ return ALooper_to_Looper(looper)->addFd(fd, ident, events, callback, data);
}
int ALooper_removeFd(ALooper* looper, int fd) {
- return static_cast<Looper*>(looper)->removeFd(fd);
+ return ALooper_to_Looper(looper)->removeFd(fd);
}
diff --git a/opengl/java/android/opengl/EGLLogWrapper.java b/opengl/java/android/opengl/EGLLogWrapper.java
index 36e88a2b8f0b..c6779575504a 100644
--- a/opengl/java/android/opengl/EGLLogWrapper.java
+++ b/opengl/java/android/opengl/EGLLogWrapper.java
@@ -326,7 +326,7 @@ class EGLLogWrapper implements EGL11 {
}
public boolean eglSwapBuffers(EGLDisplay display, EGLSurface surface) {
- begin("eglInitialize");
+ begin("eglSwapBuffers");
arg("display", display);
arg("surface", surface);
end();
diff --git a/packages/BackupRestoreConfirmation/res/values-en-rIN/strings.xml b/packages/BackupRestoreConfirmation/res/values-en-rIN/strings.xml
deleted file mode 100644
index d096d98a1a51..000000000000
--- a/packages/BackupRestoreConfirmation/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="backup_confirm_title" msgid="827563724209303345">"Full backup"</string>
- <string name="restore_confirm_title" msgid="5469365809567486602">"Full restoration"</string>
- <string name="backup_confirm_text" msgid="1878021282758896593">"A full backup of all data to a connected desktop computer has been requested. Do you want to allow this to happen?\n\nIf you did not request the backup yourself, do not allow the operation to proceed."</string>
- <string name="allow_backup_button_label" msgid="4217228747769644068">"Back up my data"</string>
- <string name="deny_backup_button_label" msgid="6009119115581097708">"Do not back up"</string>
- <string name="restore_confirm_text" msgid="7499866728030461776">"A full restore of all data from a connected desktop computer has been requested. Do you want to allow this to happen?\n\nIf you did not request the restore yourself, do not allow the operation to proceed. This will replace any data currently on the device!"</string>
- <string name="allow_restore_button_label" msgid="3081286752277127827">"Restore my data"</string>
- <string name="deny_restore_button_label" msgid="1724367334453104378">"Do not restore"</string>
- <string name="current_password_text" msgid="8268189555578298067">"Please enter your current backup password below:"</string>
- <string name="device_encryption_restore_text" msgid="1570864916855208992">"Please enter your device encryption password below."</string>
- <string name="device_encryption_backup_text" msgid="5866590762672844664">"Please enter your device encryption password below. This will also be used to encrypt the backup archive."</string>
- <string name="backup_enc_password_text" msgid="4981585714795233099">"Please enter a password to use for encrypting the full backup data. If this is left blank, your current backup password will be used:"</string>
- <string name="backup_enc_password_optional" msgid="1350137345907579306">"If you wish to encrypt the full backup data, enter a password below:"</string>
- <string name="restore_enc_password_text" msgid="6140898525580710823">"If the restore data is encrypted, please enter the password below:"</string>
- <string name="toast_backup_started" msgid="550354281452756121">"Backup starting..."</string>
- <string name="toast_backup_ended" msgid="3818080769548726424">"Backup finished"</string>
- <string name="toast_restore_started" msgid="7881679218971277385">"Restoration starting..."</string>
- <string name="toast_restore_ended" msgid="1764041639199696132">"Restoration ended"</string>
- <string name="toast_timeout" msgid="5276598587087626877">"Operation timed out"</string>
-</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-et-rEE/strings.xml b/packages/BackupRestoreConfirmation/res/values-et-rEE/strings.xml
deleted file mode 100644
index 0f5fde2c9a2e..000000000000
--- a/packages/BackupRestoreConfirmation/res/values-et-rEE/strings.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="backup_confirm_title" msgid="827563724209303345">"Täielik varundus"</string>
- <string name="restore_confirm_title" msgid="5469365809567486602">"Täielik taastamine"</string>
- <string name="backup_confirm_text" msgid="1878021282758896593">"Taotleti kõikide andmete varundamist ühendatud lauaarvutist. Kas soovite seda lubada?\n\nKui te ei taotlenud varundust, siis ärge lubage toimingut jätkata."</string>
- <string name="allow_backup_button_label" msgid="4217228747769644068">"Varunda mu andmed"</string>
- <string name="deny_backup_button_label" msgid="6009119115581097708">"Ära varunda"</string>
- <string name="restore_confirm_text" msgid="7499866728030461776">"Taotletud on kõikide andmete taastamist ühendatud lauaarvutist. Kas soovite seda lubada?\n\nKui te ei taotlenud taastamist, siis ärge lubage toimingut jätkata. See asendab kõik praegu seadmes olevad andmed."</string>
- <string name="allow_restore_button_label" msgid="3081286752277127827">"Taasta mu andmed"</string>
- <string name="deny_restore_button_label" msgid="1724367334453104378">"Ära taasta"</string>
- <string name="current_password_text" msgid="8268189555578298067">"Sisestage allpool praegune varunduse parool:"</string>
- <string name="device_encryption_restore_text" msgid="1570864916855208992">"Sisestage allpool oma seadme krüpteerimise parool."</string>
- <string name="device_encryption_backup_text" msgid="5866590762672844664">"Sisestage allpool oma seadme krüpteerimise parool. Seda kasutatakse ka varukoopiate arhiivi krüpteerimiseks."</string>
- <string name="backup_enc_password_text" msgid="4981585714795233099">"Sisestage parool kõikide varundatud andmete krüpteerimise jaoks. Kui jätate selle tühjaks, siis kasutatakse teie praegust varunduse parooli:"</string>
- <string name="backup_enc_password_optional" msgid="1350137345907579306">"Kui soovite kõik varundusandmed krüpteerida, siis sisestage allpool parool:"</string>
- <string name="restore_enc_password_text" msgid="6140898525580710823">"Kui taasteandmed on krüpteeritud, siis sisestage allpool parool."</string>
- <string name="toast_backup_started" msgid="550354281452756121">"Algab varundamine ..."</string>
- <string name="toast_backup_ended" msgid="3818080769548726424">"Varundamine jõudis lõpule"</string>
- <string name="toast_restore_started" msgid="7881679218971277385">"Algab taastamine ..."</string>
- <string name="toast_restore_ended" msgid="1764041639199696132">"Taastamine jõudis lõpule"</string>
- <string name="toast_timeout" msgid="5276598587087626877">"Toiming aegus"</string>
-</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-fr-rCA/strings.xml b/packages/BackupRestoreConfirmation/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 8a70fb5def2b..000000000000
--- a/packages/BackupRestoreConfirmation/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="backup_confirm_title" msgid="827563724209303345">"Sauvegarde complète"</string>
- <string name="restore_confirm_title" msgid="5469365809567486602">"Restauration complète"</string>
- <string name="backup_confirm_text" msgid="1878021282758896593">"Vous avez demandé une sauvegarde complète de l\'ensemble des données vers un ordinateur de bureau connecté. Voulez-vous l\'autoriser?\n\nSi vous n\'avez pas demandé la sauvegarde vous-même, n\'autorisez pas la poursuite de l\'opération."</string>
- <string name="allow_backup_button_label" msgid="4217228747769644068">"Sauvegarder mes données"</string>
- <string name="deny_backup_button_label" msgid="6009119115581097708">"Ne pas sauvegarder"</string>
- <string name="restore_confirm_text" msgid="7499866728030461776">"Vous avez demandé une restauration complète de l\'ensemble des données à partir d\'un ordinateur de bureau connecté. Voulez-vous l\'autoriser?\n\nSi vous n\'avez pas demandé vous-même la restauration, n\'autorisez pas sa poursuite. Cette opération remplacera toutes les données actuellement sur l\'appareil!"</string>
- <string name="allow_restore_button_label" msgid="3081286752277127827">"Restaurer mes données"</string>
- <string name="deny_restore_button_label" msgid="1724367334453104378">"Ne pas restaurer"</string>
- <string name="current_password_text" msgid="8268189555578298067">"Veuillez saisir votre mot de passe de sauvegarde actuel ci-dessous :"</string>
- <string name="device_encryption_restore_text" msgid="1570864916855208992">"Veuillez saisir le mot de passe de chiffrement de l\'appareil ci-dessous."</string>
- <string name="device_encryption_backup_text" msgid="5866590762672844664">"Veuillez saisir le mot de passe de chiffrement de l\'appareil ci-dessous. Il permettra également de chiffrer les archives de sauvegarde."</string>
- <string name="backup_enc_password_text" msgid="4981585714795233099">"Veuillez saisir un mot de passe à utiliser pour chiffrer les données de sauvegarde complète. Si ce champ n\'est pas renseigné, votre mot de passe de sauvegarde actuel sera utilisé :"</string>
- <string name="backup_enc_password_optional" msgid="1350137345907579306">"Si vous souhaitez chiffrer l\'ensemble des données de sauvegarde, veuillez saisir un mot de passe ci-dessous :"</string>
- <string name="restore_enc_password_text" msgid="6140898525580710823">"Si les données de restauration sont chiffrées, veuillez saisir le mot de passe ci-dessous :"</string>
- <string name="toast_backup_started" msgid="550354281452756121">"Démarrage de la sauvegarde…"</string>
- <string name="toast_backup_ended" msgid="3818080769548726424">"Sauvegarde terminée."</string>
- <string name="toast_restore_started" msgid="7881679218971277385">"Démarrage de la restauration…"</string>
- <string name="toast_restore_ended" msgid="1764041639199696132">"Restauration terminée."</string>
- <string name="toast_timeout" msgid="5276598587087626877">"L\'opération a expiré."</string>
-</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-hi/strings.xml b/packages/BackupRestoreConfirmation/res/values-hi/strings.xml
index 0b298047283e..dd0c64596edf 100644
--- a/packages/BackupRestoreConfirmation/res/values-hi/strings.xml
+++ b/packages/BackupRestoreConfirmation/res/values-hi/strings.xml
@@ -16,22 +16,22 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="backup_confirm_title" msgid="827563724209303345">"पूर्ण सुरक्षा"</string>
+ <string name="backup_confirm_title" msgid="827563724209303345">"पूर्ण बैकअप"</string>
<string name="restore_confirm_title" msgid="5469365809567486602">"पूर्ण पुनर्स्‍थापना"</string>
- <string name="backup_confirm_text" msgid="1878021282758896593">"कनेक्‍ट कि‍ए गए डेस्‍कटॉप कंप्‍यूटर से सभी डेटा के संपूर्ण सुरक्षा का अनुरोध कि‍या गया है. क्‍या आप इसकी अनुमति‍ देना चाहते हैं?\n\nयदि‍ आपने स्‍वयं बैकअप का अनुरोध नहीं कि‍या है, तो प्रक्रि‍या जारी रखने की अनुमति‍ न दें."</string>
+ <string name="backup_confirm_text" msgid="1878021282758896593">"कनेक्‍ट कि‍ए गए डेस्‍कटॉप कंप्‍यूटर से सभी डेटा के संपूर्ण बैकअप का अनुरोध कि‍या गया है. क्‍या आप इसकी अनुमति‍ देना चाहते हैं?\n\nयदि‍ आपने स्‍वयं बैकअप का अनुरोध नहीं कि‍या है, तो प्रक्रि‍या जारी रखने की अनुमति‍ न दें."</string>
<string name="allow_backup_button_label" msgid="4217228747769644068">"मेरे डेटा का बैकअप लें"</string>
<string name="deny_backup_button_label" msgid="6009119115581097708">"बैकअप न लें"</string>
<string name="restore_confirm_text" msgid="7499866728030461776">"कनेक्‍ट कि‍ए गए डेस्‍कटॉप कंप्‍यूटर से सभी डेटा की पूर्ण पुनर्स्थापना का अनुरोध कि‍या गया है. क्‍या आप इसकी अनुमति‍ देना चाहते हैं?\n\nयदि‍ आपने स्‍वयं पुनर्प्राप्ति‍ का अनुरोध नहीं कि‍या है, तो प्रक्रि‍या जारी रखने की अनुमति‍ न दें. इससे वर्तमान में आपके उपकरण पर मौजूद डेटा बदल जाएगा!"</string>
<string name="allow_restore_button_label" msgid="3081286752277127827">"मेरा डेटा पुनर्स्थापित करें"</string>
<string name="deny_restore_button_label" msgid="1724367334453104378">"पुनर्स्‍थापित न करें"</string>
- <string name="current_password_text" msgid="8268189555578298067">"कृपया नीचे अपना वर्तमान सुरक्षित करने का पासवर्ड डालें:"</string>
+ <string name="current_password_text" msgid="8268189555578298067">"कृपया नीचे अपना वर्तमान बैकअप पासवर्ड डालें:"</string>
<string name="device_encryption_restore_text" msgid="1570864916855208992">"कृपया नीचे अपना उपकरण एन्‍क्रिप्शन पासवर्ड डालें."</string>
- <string name="device_encryption_backup_text" msgid="5866590762672844664">"कृपया अपना उपकरण सुरक्षित तरीका पासवर्ड नीचे दर्ज करें. बैकअप संग्रहण को एन्‍क्रिप्‍ट करने के लिए भी इसका उपयोग किया जाएगा."</string>
- <string name="backup_enc_password_text" msgid="4981585714795233099">"कृपया संपूर्ण सुरक्षित डेटा को एन्‍क्रि‍प्‍ट करने में उपयोग के लि‍ए पासवर्ड डालें. यदि‍ यह खाली छोड़ दि‍या जाता है, तो आपके वर्तमान बैकअप पासवर्ड का उपयोग कि‍या जाएगा:"</string>
- <string name="backup_enc_password_optional" msgid="1350137345907579306">"यदि‍ आप संपूर्ण सुरक्षित डेटा को एन्‍क्रि‍प्‍ट करना चाहते हैं, तो नीचे पासवर्ड डालें:"</string>
+ <string name="device_encryption_backup_text" msgid="5866590762672844664">"कृपया अपना उपकरण एन्क्रिप्शन पासवर्ड नीचे दर्ज करें. बैकअप संग्रहण को एन्‍क्रिप्‍ट करने के लिए भी इसका उपयोग किया जाएगा."</string>
+ <string name="backup_enc_password_text" msgid="4981585714795233099">"कृपया संपूर्ण बैकअप डेटा को एन्‍क्रि‍प्‍ट करने में उपयोग के लि‍ए पासवर्ड डालें. यदि‍ यह खाली छोड़ दि‍या जाता है, तो आपके वर्तमान बैकअप पासवर्ड का उपयोग कि‍या जाएगा:"</string>
+ <string name="backup_enc_password_optional" msgid="1350137345907579306">"यदि‍ आप संपूर्ण बैकअप डेटा एन्‍क्रि‍प्‍ट करना चाहते हैं, तो नीचे पासवर्ड डालें:"</string>
<string name="restore_enc_password_text" msgid="6140898525580710823">"यदि‍ पुनर्स्थापित डेटा को एन्‍क्रि‍प्‍ट कि‍या गया है, तो कृपया नीचे पासवर्ड डालें:"</string>
- <string name="toast_backup_started" msgid="550354281452756121">"सुरक्षित करना शुरु हो रहा है..."</string>
- <string name="toast_backup_ended" msgid="3818080769548726424">"सुरक्षित करना पूर्ण"</string>
+ <string name="toast_backup_started" msgid="550354281452756121">"बैकअप प्रारंभ हो रहा है..."</string>
+ <string name="toast_backup_ended" msgid="3818080769548726424">"बैकअप पूर्ण"</string>
<string name="toast_restore_started" msgid="7881679218971277385">"पुनर्स्‍थापना प्रारंभ हो रही है..."</string>
<string name="toast_restore_ended" msgid="1764041639199696132">"पुनर्स्‍थापना समाप्त"</string>
<string name="toast_timeout" msgid="5276598587087626877">"कार्यवाही समयबाह्य हो गई"</string>
diff --git a/packages/BackupRestoreConfirmation/res/values-hy-rAM/strings.xml b/packages/BackupRestoreConfirmation/res/values-hy-rAM/strings.xml
deleted file mode 100644
index 4db9080721da..000000000000
--- a/packages/BackupRestoreConfirmation/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="backup_confirm_title" msgid="827563724209303345">"Ամբողջական պահուստավորում"</string>
- <string name="restore_confirm_title" msgid="5469365809567486602">"Ամբողջական վերականգնում"</string>
- <string name="backup_confirm_text" msgid="1878021282758896593">"Կապակցված աշխատասեղանով համակարգչի վրա բոլոր տվյալների լրիվ պահուստավորման հարցում է արվել: Ցանկանու՞մ եք թույլատրել հարցման կատարումը:\n\nԵթե դուք ինքներդ պահուստավորման հարցում չեք արել, թույլ մի տվեք, որպեսզի գործողությունը շարունակվի:"</string>
- <string name="allow_backup_button_label" msgid="4217228747769644068">"Պահուստավորել իմ տվյալները"</string>
- <string name="deny_backup_button_label" msgid="6009119115581097708">"Չպահուստավորել"</string>
- <string name="restore_confirm_text" msgid="7499866728030461776">"Հայցվել է բոլոր տվյալների ամբողջական վերականգնում միացված աշխատանքային համակարգչից: Ցանկանու՞մ եք թույլատրել, որ դա տեղի ունենա:\n\nԵթե վերականգնումը ինքներդ չեք հայցել, թուjլ մի տվեք, որ գործողությունը շարունակվի: Դա կփոխարինի ներկայում հեռախոսի մեջ գտնվող ցանկացած տվյալ:"</string>
- <string name="allow_restore_button_label" msgid="3081286752277127827">"Վերականգնել իմ տվյալները"</string>
- <string name="deny_restore_button_label" msgid="1724367334453104378">"Չվերականգնել"</string>
- <string name="current_password_text" msgid="8268189555578298067">"Խնդրում ենք մուտքագրել ձեր ընթացիկ պահուստային գաղտնաբառը ներքևում`"</string>
- <string name="device_encryption_restore_text" msgid="1570864916855208992">"Խնդրում ենք մուտքագրել ձեր սարքի կոդավորված գաղտնաբառը ներքևում:"</string>
- <string name="device_encryption_backup_text" msgid="5866590762672844664">"Խնդրում ենք մուտքագրել ձեր սարքի կոդավորված գաղտնաբառը ներքևում: Այն նաև կօգտագործվի պահուստային արխիվի կոդավորման համար:"</string>
- <string name="backup_enc_password_text" msgid="4981585714795233099">"Խնդրում ենք մուտքագրել գաղտնաբառը` ամբողջական պահուստավորվող տվյալները կոդավորելու համար: Եթե ​​այն դատարկ թողնեք, ապա կօգտագործվի ձեր առկա պահուստավորման գաղտնաբառը`"</string>
- <string name="backup_enc_password_optional" msgid="1350137345907579306">"Եթե ​​ցանկանում եք կոդավորել ամբողջական պահուստավորված տվյալները, մուտքագրեք գաղտնաբառ ստորև`"</string>
- <string name="restore_enc_password_text" msgid="6140898525580710823">"Եթե ​​վերականգնվող տվյալները կոդավորված են, խնդրում ենք մուտքագրել գաղտնաբառը ստորև`"</string>
- <string name="toast_backup_started" msgid="550354281452756121">"Պահուստավորումը սկսվում է..."</string>
- <string name="toast_backup_ended" msgid="3818080769548726424">"Պահուստավորումն ավարտվեց"</string>
- <string name="toast_restore_started" msgid="7881679218971277385">"Վերականգնումը մեկնարկեց..."</string>
- <string name="toast_restore_ended" msgid="1764041639199696132">"Վերականգնումն ավարտվեց"</string>
- <string name="toast_timeout" msgid="5276598587087626877">"Գործողության ժամանակը սպառվեց"</string>
-</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-ka-rGE/strings.xml b/packages/BackupRestoreConfirmation/res/values-ka-rGE/strings.xml
deleted file mode 100644
index 9c6f67ec6eb1..000000000000
--- a/packages/BackupRestoreConfirmation/res/values-ka-rGE/strings.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="backup_confirm_title" msgid="827563724209303345">"სრული სარეზერვო კოპირება"</string>
- <string name="restore_confirm_title" msgid="5469365809567486602">"სრულად აღდგენა"</string>
- <string name="backup_confirm_text" msgid="1878021282758896593">"მოთხოვნილ იქნა სამაგიდო კომპიუტერთან დაკავშირებული ყველა მონაცემის სრულყოფილი სარეზერვო ასლები. \n\nთუ სარეზერვო ასლები თქვენ არ მოგითხოვიათ, არ დაუშვათ ამ ოპერაციის გაგრძელება."</string>
- <string name="allow_backup_button_label" msgid="4217228747769644068">"ჩემი მონაცემების სარეზერვო კოპირება"</string>
- <string name="deny_backup_button_label" msgid="6009119115581097708">"სარეზერვო ასლები არ გააკეთო"</string>
- <string name="restore_confirm_text" msgid="7499866728030461776">"დაკავშირებული დესკტოპ კომპიუტერიდან მოხდა ყველა მონაცემის სრული აღდგენის მოთხოვნა. გსურთ, დაუშვათ ეს?\n\nთუ თქვენ თვითონ არ მოითხოვეთ აღდგენა, არ დაუშვათ ამ ოპერაციის გაგრძელება. ის ჩაანაცვლებს მოწყობილობაზე ამჟამად არსებულ ნებისმიერ მონაცემს!"</string>
- <string name="allow_restore_button_label" msgid="3081286752277127827">"ჩემი მონაცემების აღდგენა"</string>
- <string name="deny_restore_button_label" msgid="1724367334453104378">"არ აღადგინო"</string>
- <string name="current_password_text" msgid="8268189555578298067">"გთხოვთ, ქვემოთ მიუთითოთ თქვენი ამჟამინდელი სათადარიგო პაროლი:"</string>
- <string name="device_encryption_restore_text" msgid="1570864916855208992">"გთხოვთ, ქვემოთ მიუთითოთ თქვენი მოწყობილობის დაშიფვრის პაროლი."</string>
- <string name="device_encryption_backup_text" msgid="5866590762672844664">"გთხოვთ, ქვემოთ მიუთითოთ თქვენი მოწყობილობის დაშიფვრის პაროლი. ეს ასევე გამოყენებული იქნება სათადარიგო არქივის დაშიფრვისათვის."</string>
- <string name="backup_enc_password_text" msgid="4981585714795233099">"გთხოვთ შეიყვანოთ ყველა სამარქაფო ასლის დაშიფრვის პაროლი. თუ ამ ველს ცარიელს დატოვებთ, გამოყენებული იქნება მიმდინარე პაროლი:"</string>
- <string name="backup_enc_password_optional" msgid="1350137345907579306">"თუ გსურთ სრული ლოკალური სარეზერვო კოპიის დაშიფრვა, შეიყვანეთ პაროლი ქვემოთ:"</string>
- <string name="restore_enc_password_text" msgid="6140898525580710823">"თუ აღსადგენი მონაცემები დაშიფრულია, გთხოვთ, შეიყვანოთ პაროლი ქვემოთ:"</string>
- <string name="toast_backup_started" msgid="550354281452756121">"ასლების მომზადება იწყება..."</string>
- <string name="toast_backup_ended" msgid="3818080769548726424">"სარეზერვო კოპირება დასრულებულია"</string>
- <string name="toast_restore_started" msgid="7881679218971277385">"აღდგენა იწყება..."</string>
- <string name="toast_restore_ended" msgid="1764041639199696132">"აღდგენა დასრულდა"</string>
- <string name="toast_timeout" msgid="5276598587087626877">"ოპერაციის დროის ლიმიტი ამოიწურა"</string>
-</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-km-rKH/strings.xml b/packages/BackupRestoreConfirmation/res/values-km-rKH/strings.xml
deleted file mode 100644
index 956fdd71dc1a..000000000000
--- a/packages/BackupRestoreConfirmation/res/values-km-rKH/strings.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="backup_confirm_title" msgid="827563724209303345">"ការ​បម្រុង​ទុក​ពេញលេញ"</string>
- <string name="restore_confirm_title" msgid="5469365809567486602">"ស្ដារ​ឡើងវិញ​ពេញលេញ"</string>
- <string name="backup_confirm_text" msgid="1878021282758896593">"ការ​បម្រុងទុក​ទិន្នន័យ​ទាំងអស់​ពេញលេញ​​ទៅ​កុំព្យូទ័រ​ដែល​បាន​ភ្ជាប់​ត្រូវ​បាន​ស្នើ។ តើ​អ្នក​ចង់ឲ្យ​វា​កើត​ឡើង​ដែរ​ឬទេ??\n\nបើ​អ្នក​មិន​បាន​ស្នើ​ការ​បម្រុងទុក​ដោយ​ខ្លួន​អ្នក​ផ្ទាល់​ទេ កុំ​អនុញ្ញាត​ប្រតិបត្តិការ​នេះ។"</string>
- <string name="allow_backup_button_label" msgid="4217228747769644068">"បម្រុង​ទុក​ទិន្នន័យ​របស់​ខ្ញុំ"</string>
- <string name="deny_backup_button_label" msgid="6009119115581097708">"កុំ​បម្រុង​ទុក"</string>
- <string name="restore_confirm_text" msgid="7499866728030461776">"ការ​ស្ដារ​ទិន្នន័យ​ទាំងអស់​ពេញលេញ​ពី​កុំព្យូទ័រ​ដែល​បាន​តភ្ជាប់​ត្រូវ​បាន​ស្នើ។ តើ​អ្នក​ចង់​អនុញ្ញាត​ដែរ​ឬទេ?\n\n បើ​អ្នក​មិន​បាន​ស្នើ​ការ​ស្ដារ​ខ្លួន​ឯង​ទេ កុំ​អនុញ្ញាត។ វា​នឹង​ជំនួស​ទិន្នន័យ​ណាមួយ​ដែល​មាន​លើ​ឧបករណ៍!"</string>
- <string name="allow_restore_button_label" msgid="3081286752277127827">"ស្ដារ​ទិន្នន័យ​របស់​ខ្ញុំ"</string>
- <string name="deny_restore_button_label" msgid="1724367334453104378">"កុំ​ស្ដារ​ឡើងវិញ"</string>
- <string name="current_password_text" msgid="8268189555578298067">"សូម​បញ្ចូល​ពាក្យ​សម្ងាត់​បម្រុង​ទុក​បច្ចុប្បន្ន​របស់​អ្នក​ខាង​ក្រោម៖"</string>
- <string name="device_encryption_restore_text" msgid="1570864916855208992">"សូម​បញ្ចូល​ពាក្យ​សម្ងាត់​ដាក់​លេខ​កូដ​​ឧបករណ៍​របស់​​អ្នក​ខាង​ក្រោម។"</string>
- <string name="device_encryption_backup_text" msgid="5866590762672844664">"សូម​បញ្ចូល​ពាក្យ​សម្ងាត់​ដាក់​លេខ​កូដ​ឧបករណ៍​របស់​អ្នក​ខាង​ក្រោម។ វា​នឹង​ត្រូវ​បាន​ប្រើ ដើម្បី​ដាក់​លេខ​កូដ​ប័ណ្ណសារ​បម្រុងទុក​ផង​ដែរ។"</string>
- <string name="backup_enc_password_text" msgid="4981585714795233099">"សូម​បញ្ចូល​ពាក្យ​សម្ងាត់​ដើម្បី​ប្រើ​សម្រាប់​ដាក់លេខ​កូដ​ទិន្នន័យ​បម្រុងទុក​ពេញលេញ។ បើ​ទុក​វា​ទទេ ពាក្យ​សម្ងាត់​បម្រុងទុក​បច្ចុប្បន្ន​របស់​អ្នក​នឹង​ត្រូវ​បាន​ប្រើ៖"</string>
- <string name="backup_enc_password_optional" msgid="1350137345907579306">"បើ​អ្នក​ចង់​ដាក់​លេខ​កូដ​ទិន្នន័យ​បម្រុងទុក​ពេញលេញ បញ្ចូល​ពាក្យ​សម្ងាត់​ខាង​ក្រោម៖"</string>
- <string name="restore_enc_password_text" msgid="6140898525580710823">"បើ​​ទិន្នន័យ​ស្ដារ​ត្រូវ​បាន​ដាក់​លេខ​កូដ សូម​បញ្ចូល​ពាក្យ​សម្ងាត់​ខាង​ក្រោម៖"</string>
- <string name="toast_backup_started" msgid="550354281452756121">"កំពុង​ចាប់ផ្ដើម​បម្រុងទុក..."</string>
- <string name="toast_backup_ended" msgid="3818080769548726424">"ការ​​បម្រុង​ទុក​បាន​បញ្ចប់"</string>
- <string name="toast_restore_started" msgid="7881679218971277385">"ការ​ស្ដារ​កំពុង​ចាប់ផ្ដើម..."</string>
- <string name="toast_restore_ended" msgid="1764041639199696132">"ការ​ស្តា​រ​បាន​បញ្ចប់"</string>
- <string name="toast_timeout" msgid="5276598587087626877">"ប្រតិបត្តិការ​អស់​ពេល"</string>
-</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-lo-rLA/strings.xml b/packages/BackupRestoreConfirmation/res/values-lo-rLA/strings.xml
deleted file mode 100644
index fb28502a7e56..000000000000
--- a/packages/BackupRestoreConfirmation/res/values-lo-rLA/strings.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="backup_confirm_title" msgid="827563724209303345">"ສຳຮອງຂໍ້ມູນເຕັມຮູບແບບ"</string>
- <string name="restore_confirm_title" msgid="5469365809567486602">"ກູ້ຂໍ້ມູນເຕັມຮູບແບບ"</string>
- <string name="backup_confirm_text" msgid="1878021282758896593">"ມີການຮ້ອງຂໍໃຫ້ສຳຮອງຂໍ້ມູນທັງໝົດ ໄປໃສ່ຄອມພິວເຕີຕັ້ງໂຕະທີ່ເຊື່ອມຕໍ່ຢູ່. ທ່ານຈະອະນຸມັດໃຫ້ດຳເນີນການຫຼືບໍ່?\n\nຫາກທ່ານບໍ່ໄດ້ຮ້ອງຂໍໃຫ້ສຳຮອງຂໍ້ມູນດ້ວຍຕົນເອງ, ກະລຸນາຢ່າອະນຸຍາດໃຫ້ດຳເນີນການຕໍ່ໄປ."</string>
- <string name="allow_backup_button_label" msgid="4217228747769644068">"ສຳຮອງຂໍ້ມູນຂອງຂ້ອຍ"</string>
- <string name="deny_backup_button_label" msgid="6009119115581097708">"ບໍ່ໃຫ້ສຳຮອງຂໍ້ມູນ"</string>
- <string name="restore_confirm_text" msgid="7499866728030461776">"ການກູ້ຂໍ້ມູນທັງໝົດຈາກຄອມພິວເຕີທີ່ເຊື່ອມຕໍ່ຢູ່ນັ້ນຖືກຮ້ອງຂໍແລ້ວ. ທ່ານຕ້ອງການອະນຸຍາດໃຫ້ການກະທຳນີ້ເກີດຂຶ້ນບໍ່?\n\nຫາກທ່ານບໍ່ໄດ້ເຮັດການຮ້ອງຂໍ້ການກູ້ຂໍ້ມູນດ້ວຍໂຕທ່ານເອງ, ທ່ານບໍ່ຄວນອະນຸຍາດໃຫ້ມີການດຳເນີນການໃດໆ ເນື່ອງຈາກມັນຈະໄປຂຽນທັບຂໍ້ມູນທັງໝົດທີ່ຢູ່ໃນອຸປະກອນ!"</string>
- <string name="allow_restore_button_label" msgid="3081286752277127827">"ກູ້ຄືນຂໍ້ມູນຂອງຂ້ອຍ"</string>
- <string name="deny_restore_button_label" msgid="1724367334453104378">"ບໍ່ໃຫ້ກູ້ຄືນ"</string>
- <string name="current_password_text" msgid="8268189555578298067">"ກະລຸນາປ້ອນລະຫັດຜ່ານການສຳຮອງຂໍ້ມູນທີ່ທ່ານໃຊ້ຢູ່ໃສ່ດ້ານລຸ່ມ:"</string>
- <string name="device_encryption_restore_text" msgid="1570864916855208992">"ກະລຸນາປ້ອນລະຫັດຜ່ານການເຂົ້າລະຫັດອຸປະກອນຂອງທ່ານໃສ່ດ້ານລຸ່ມ."</string>
- <string name="device_encryption_backup_text" msgid="5866590762672844664">"ກະລຸນາປ້ອນລະຫັດຜ່ານການເຂົ້າລະຫັດອຸປະກອນຂອງທ່ານໃສ່ດ້ານລຸ່ມ. ລະຫັດນີ້ຍັງຈະໃຊ້ເພື່ອເຂົ້າລະຫັດຂໍ້ມູນທີ່ສຳຮອງໄວ້."</string>
- <string name="backup_enc_password_text" msgid="4981585714795233099">"ກະລຸນາປ້ອນລະຫັດຜ່ານ ເພື່ອໃຊ້ໃນການເຂົ້າລະຫັດການສຳຮອງຂໍ້ມູນເຕັມຮູບແບບ. ຖ້າປ່ອຍໃຫ້ເປົ່າຫວ່າງໄວ້, ລະຫັດຜ່ານສຳຮອງຂໍ້ມູນທີ່ທ່ານໃຊ້ຢູ່ຈະຖືກນຳໃຊ້ແທນ:"</string>
- <string name="backup_enc_password_optional" msgid="1350137345907579306">"ຫາກທ່ານຕ້ອງການທີ່ຈະເຂົ້າລະຫັດໃຫ້ກັບການສຳຮອງຂໍ້ມູນທັງໝົດ, ກະລຸນາໃສ່ລະຫັດທາງລຸ່ມນີ້:"</string>
- <string name="restore_enc_password_text" msgid="6140898525580710823">"ຫາກຂໍ້ມູນສຳຮອງຖືກເຂົ້າລະຫັດໄວ້, ກະລຸນາໃສ່ລະຫັດຜ່ານທາງດ້ານລຸ່ມນີ້:"</string>
- <string name="toast_backup_started" msgid="550354281452756121">"ກຳລັງເລີ່ມການສຳຮອງຂໍ້ມູນ..."</string>
- <string name="toast_backup_ended" msgid="3818080769548726424">"ສຳຮອງຂໍ້ມູນສຳເລັດແລ້ວ"</string>
- <string name="toast_restore_started" msgid="7881679218971277385">"ການກູ້ຂໍ້ມູນກຳລັງຈະເລີ່ມ..."</string>
- <string name="toast_restore_ended" msgid="1764041639199696132">"ການກູ້ຂໍ້ມູນສິ້ນສຸດແລ້ວ"</string>
- <string name="toast_timeout" msgid="5276598587087626877">"ໝົດເວລາປະຕິບັດການ"</string>
-</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-mn-rMN/strings.xml b/packages/BackupRestoreConfirmation/res/values-mn-rMN/strings.xml
deleted file mode 100644
index b2738c0e86ba..000000000000
--- a/packages/BackupRestoreConfirmation/res/values-mn-rMN/strings.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="backup_confirm_title" msgid="827563724209303345">"Бүрэн нөөшлөх"</string>
- <string name="restore_confirm_title" msgid="5469365809567486602">"Бүрэн сэргээх"</string>
- <string name="backup_confirm_text" msgid="1878021282758896593">"Холбогдсон байгаа десктоп компьютерлүү бүх датаг бүрэн нөөшлөх хүсэлт тавигдав. Та энийг зөвшөөрөх үү?\n\nХэрэв та нөөшлөлт хийх хүсэлт хийгээгүй бол энийг зөвшөөрч болохгүй."</string>
- <string name="allow_backup_button_label" msgid="4217228747769644068">"Миний датаг нөөшлөх"</string>
- <string name="deny_backup_button_label" msgid="6009119115581097708">"Нөөшлөхгүй"</string>
- <string name="restore_confirm_text" msgid="7499866728030461776">"Холбогдсон байгаа десктоп компьютерээс бүх датаг бүрэн сэргээх хүсэлт тавигдав. Та энийг зөвшөөрөх үү?\n\nХэрэв та сэргээх хүсэлт хийгээгүй бол энийг зөвшөөрч болохгүй. Энэ нь төхөөрөмж дээр одоо байгаа дурын датаг орлуулах болно!"</string>
- <string name="allow_restore_button_label" msgid="3081286752277127827">"Миний датаг сэргээх"</string>
- <string name="deny_restore_button_label" msgid="1724367334453104378">"Сэргээхгүй"</string>
- <string name="current_password_text" msgid="8268189555578298067">"Одоогийн нөөшлөх нууц үгийг доор оруулна уу:"</string>
- <string name="device_encryption_restore_text" msgid="1570864916855208992">"Төхөөрөмж шифрлэх нууц үгийг доор оруулна уу."</string>
- <string name="device_encryption_backup_text" msgid="5866590762672844664">"Төхөөрөмж шифрлэх нууц үгийг доор оруулна уу. Энэ нууц үгийг нөөшлөх архивийг шифрлэхэд бас ашиглана."</string>
- <string name="backup_enc_password_text" msgid="4981585714795233099">"Бүрэн дата нөөшлөлтийг шифрлэхэд ашиглах нууц үгийг оруулна уу. Хэрэв та хоосон үлдээвэл таны одоогийн нөөшлөлтийн нууц үг ашиглагдах болно:"</string>
- <string name="backup_enc_password_optional" msgid="1350137345907579306">"Хэрэв та бүрэн нөөшлөх датаг шифрлэх бол доор нууц үгийг оруулна уу:"</string>
- <string name="restore_enc_password_text" msgid="6140898525580710823">"Хэрэв сэргээх дата шифрлэгдсэн бол доор нууц үгийг оруулна уу:"</string>
- <string name="toast_backup_started" msgid="550354281452756121">"Нөөшлөж эхлэх..."</string>
- <string name="toast_backup_ended" msgid="3818080769548726424">"Нөөшлөлт дуусав"</string>
- <string name="toast_restore_started" msgid="7881679218971277385">"Сэргээлт эхлэж байна..."</string>
- <string name="toast_restore_ended" msgid="1764041639199696132">"Сэргээлт дуусав"</string>
- <string name="toast_timeout" msgid="5276598587087626877">"Ажиллагааны хугацаа хэтрэв"</string>
-</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-ms-rMY/strings.xml b/packages/BackupRestoreConfirmation/res/values-ms-rMY/strings.xml
deleted file mode 100644
index 65a9ede7482d..000000000000
--- a/packages/BackupRestoreConfirmation/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="backup_confirm_title" msgid="827563724209303345">"Sandaran penuh"</string>
- <string name="restore_confirm_title" msgid="5469365809567486602">"Pemulihan penuh"</string>
- <string name="backup_confirm_text" msgid="1878021282758896593">"Sandaran lengkap bagi semua data ke komputer meja yang bersambung telah diminta. Adakah anda mahu membenarkan ini berlaku?\n\nJika anda tidak meminta sandaran ini sendiri, jangan benarkan operasi diteruskan."</string>
- <string name="allow_backup_button_label" msgid="4217228747769644068">"Sandarkan data saya"</string>
- <string name="deny_backup_button_label" msgid="6009119115581097708">"Jangan buat sandaran"</string>
- <string name="restore_confirm_text" msgid="7499866728030461776">"Pemulihan penuh semua data dari komputer meja yang bersambung telah diminta. Adakah anda mahu membenarkan ini berlaku?\n\nJika anda tidak meminta pemulihan ini sendiri, jangan benarkan operasi ini diteruskan. Ini akan menggantikan sebarang data semasa pada peranti!"</string>
- <string name="allow_restore_button_label" msgid="3081286752277127827">"Pulihkan data saya"</string>
- <string name="deny_restore_button_label" msgid="1724367334453104378">"Jangan kembalikan"</string>
- <string name="current_password_text" msgid="8268189555578298067">"Sila masukkan kata laluan sandaran semasa anda di bawah:"</string>
- <string name="device_encryption_restore_text" msgid="1570864916855208992">"Sila masukkan kata laluan penyulitan peranti anda di bawah."</string>
- <string name="device_encryption_backup_text" msgid="5866590762672844664">"Sila masukkan kata laluan penyulitan peranti anda di bawah. Ini juga akan digunakan untuk menyulitkan arkib sandaran."</string>
- <string name="backup_enc_password_text" msgid="4981585714795233099">"Sila masukkan kata laluan yang hendak digunakan untuk menyulitkan data sandaran lengkap. Jika dibiarkan kosong, kata laluan sandaran semasa anda akan digunakan:"</string>
- <string name="backup_enc_password_optional" msgid="1350137345907579306">"Jika anda ingin menyulitkan data sandaran lengkap, masukkan kata laluan di bawah:"</string>
- <string name="restore_enc_password_text" msgid="6140898525580710823">"Jika pemulihan data disulitkan, sila masukkan kata laluan di bawah:"</string>
- <string name="toast_backup_started" msgid="550354281452756121">"Sandaran bermula..."</string>
- <string name="toast_backup_ended" msgid="3818080769548726424">"Sandaran selesai"</string>
- <string name="toast_restore_started" msgid="7881679218971277385">"Pemulihan bermula..."</string>
- <string name="toast_restore_ended" msgid="1764041639199696132">"Pemulihan berakhir"</string>
- <string name="toast_timeout" msgid="5276598587087626877">"Operasi tamat masa"</string>
-</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-zh-rHK/strings.xml b/packages/BackupRestoreConfirmation/res/values-zh-rHK/strings.xml
deleted file mode 100644
index d3bcd6e97582..000000000000
--- a/packages/BackupRestoreConfirmation/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="backup_confirm_title" msgid="827563724209303345">"完整備份"</string>
- <string name="restore_confirm_title" msgid="5469365809567486602">"完整還原"</string>
- <string name="backup_confirm_text" msgid="1878021282758896593">"系統收到將所有資料完整備份到連線桌上電腦的要求,請問您允許進行備份嗎?\n\n如果您本人並未提出備份要求,請勿允許繼續進行這項作業。"</string>
- <string name="allow_backup_button_label" msgid="4217228747769644068">"備份我的資料"</string>
- <string name="deny_backup_button_label" msgid="6009119115581097708">"不要備份"</string>
- <string name="restore_confirm_text" msgid="7499866728030461776">"系統收到從連線的桌上電腦完整還原所有資料的要求,請問您允許進行還原嗎?\n\n如果您本人並未提出還原要求,請勿允許繼續進行這項作業。這項作業將取代裝置上現有的全部資料!"</string>
- <string name="allow_restore_button_label" msgid="3081286752277127827">"還原我的資料"</string>
- <string name="deny_restore_button_label" msgid="1724367334453104378">"不要還原"</string>
- <string name="current_password_text" msgid="8268189555578298067">"在下面輸入您目前的備份密碼:"</string>
- <string name="device_encryption_restore_text" msgid="1570864916855208992">"請在下面輸入您的裝置加密密碼。"</string>
- <string name="device_encryption_backup_text" msgid="5866590762672844664">"請在下面輸入您的裝置加密密碼,這也會用來將封存備份加密。"</string>
- <string name="backup_enc_password_text" msgid="4981585714795233099">"請輸入為完整備份資料加密的專用密碼。如果留空,系統將使用您目前的備份密碼:"</string>
- <string name="backup_enc_password_optional" msgid="1350137345907579306">"如果您想將完整的備份資料加密,請在下面輸入一組密碼:"</string>
- <string name="restore_enc_password_text" msgid="6140898525580710823">"如果還原的資料經過加密處理,請在下面輸入密碼:"</string>
- <string name="toast_backup_started" msgid="550354281452756121">"正在開始備份..."</string>
- <string name="toast_backup_ended" msgid="3818080769548726424">"備份完畢"</string>
- <string name="toast_restore_started" msgid="7881679218971277385">"正在開始還原..."</string>
- <string name="toast_restore_ended" msgid="1764041639199696132">"還原完畢"</string>
- <string name="toast_timeout" msgid="5276598587087626877">"操作逾時"</string>
-</resources>
diff --git a/packages/BackupRestoreConfirmation/res/values-zu/strings.xml b/packages/BackupRestoreConfirmation/res/values-zu/strings.xml
index 955b26f88c6f..b62b7afaee97 100644
--- a/packages/BackupRestoreConfirmation/res/values-zu/strings.xml
+++ b/packages/BackupRestoreConfirmation/res/values-zu/strings.xml
@@ -29,7 +29,7 @@
<string name="device_encryption_backup_text" msgid="5866590762672844664">"Uyacelwa ukuba ufake iphasiwedi efakwe kudivayisi yakho ngezansi. lokhu kuzosetshenziswa ukufaka kusilondoloza sokusiza lapho kudingeka."</string>
<string name="backup_enc_password_text" msgid="4981585714795233099">"Sicela ufake iphasiwedi ezosetshenziselwa ukubhala ngokufihlekileyo imininingo eyesekwe ngokulondoloza. Uma lokhu kushiywe kungabhalwe lutho, kuzosetshenziswa iphasiwedi yokweseka ngokulondoloza yamanje:"</string>
<string name="backup_enc_password_optional" msgid="1350137345907579306">"Uma ufuna ukufaka ikhowudi kwimininingo yonke eyesekelwe ngokulondoloza faka i-passowrd engezansi:"</string>
- <string name="restore_enc_password_text" msgid="6140898525580710823">"Uma uhlelo lokusebenza yokubuyiselwa esimweni kwmininingo ibhalwe ngokufihlekileyo, sicela ufake iphasiwedi engezansi:"</string>
+ <string name="restore_enc_password_text" msgid="6140898525580710823">"Uma insiza yokubuyiselwa esimweni kwmininingo ibhalwe ngokufihlekileyo, sicela ufake iphasiwedi engezansi:"</string>
<string name="toast_backup_started" msgid="550354281452756121">"Ukulondoloza kuyaqala..."</string>
<string name="toast_backup_ended" msgid="3818080769548726424">"Ukulondoloza kuphelile"</string>
<string name="toast_restore_started" msgid="7881679218971277385">"Ukubuyisa kuyaqala..."</string>
diff --git a/packages/DefaultContainerService/res/values-et-rEE/strings.xml b/packages/DefaultContainerService/res/values-et-rEE/strings.xml
deleted file mode 100644
index 216d715996c7..000000000000
--- a/packages/DefaultContainerService/res/values-et-rEE/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">"Package Access Helper"</string>
-</resources>
diff --git a/packages/DefaultContainerService/res/values-ka-rGE/strings.xml b/packages/DefaultContainerService/res/values-ka-rGE/strings.xml
deleted file mode 100644
index 216d715996c7..000000000000
--- a/packages/DefaultContainerService/res/values-ka-rGE/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">"Package Access Helper"</string>
-</resources>
diff --git a/packages/DefaultContainerService/res/values-km-rKH/strings.xml b/packages/DefaultContainerService/res/values-km-rKH/strings.xml
deleted file mode 100644
index 1006d56a0c9e..000000000000
--- a/packages/DefaultContainerService/res/values-km-rKH/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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/DefaultContainerService/res/values-lo-rLA/strings.xml b/packages/DefaultContainerService/res/values-lo-rLA/strings.xml
deleted file mode 100644
index 216d715996c7..000000000000
--- a/packages/DefaultContainerService/res/values-lo-rLA/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">"Package Access Helper"</string>
-</resources>
diff --git a/packages/DefaultContainerService/res/values-mn-rMN/strings.xml b/packages/DefaultContainerService/res/values-mn-rMN/strings.xml
deleted file mode 100644
index d9fe6477ca11..000000000000
--- a/packages/DefaultContainerService/res/values-mn-rMN/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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/DefaultContainerService/res/values-ms-rMY/strings.xml b/packages/DefaultContainerService/res/values-ms-rMY/strings.xml
deleted file mode 100644
index 77d79273cc0c..000000000000
--- a/packages/DefaultContainerService/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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">"Pembantu Akses Pakej"</string>
-</resources>
diff --git a/packages/DefaultContainerService/res/values-zh-rHK/strings.xml b/packages/DefaultContainerService/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 9a43509436fb..000000000000
--- a/packages/DefaultContainerService/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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/res/values-af/strings.xml b/packages/DocumentsUI/res/values-af/strings.xml
deleted file mode 100644
index 41fd63acf5bb..000000000000
--- a/packages/DocumentsUI/res/values-af/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokumente"</string>
- <string name="title_open" msgid="4353228937663917801">"Maak oop vanaf"</string>
- <string name="title_save" msgid="2433679664882857999">"Stoor na"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Skep vouer"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Roosteraansig"</string>
- <string name="menu_list" msgid="7279285939892417279">"Lysaansig"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Sorteer volgens"</string>
- <string name="menu_search" msgid="3816712084502856974">"Soek"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Instellings"</string>
- <string name="menu_open" msgid="432922957274920903">"Maak oop"</string>
- <string name="menu_save" msgid="2394743337684426338">"Stoor"</string>
- <string name="menu_share" msgid="3075149983979628146">"Deel"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Vee uit"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> gekies"</string>
- <string name="sort_name" msgid="9183560467917256779">"Volgens naam"</string>
- <string name="sort_date" msgid="586080032956151448">"Volgens datum gewysig"</string>
- <string name="sort_size" msgid="3350681319735474741">"Volgens grootte"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Wys wortels"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Versteek wortels"</string>
- <string name="save_error" msgid="6167009778003223664">"Kon nie dokument stoor nie"</string>
- <string name="create_error" msgid="3735649141335444215">"Kon nie vouer skep nie"</string>
- <string name="query_error" msgid="1222448261663503501">"Kon nie navraag doen oor dokumente nie"</string>
- <string name="root_recent" msgid="4470053704320518133">"Onlangs"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> gratis"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Bergingdienste"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Kortpaaie"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Toestelle"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Nog programme"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Wys gevorderde toestelle"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Wys lêergrootte"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Wys toestelgrootte"</string>
- <string name="empty" msgid="7858882803708117596">"Geen items nie"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Kan lêer nie oopmaak nie"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Kan sommige dokumente nie uitvee nie"</string>
- <string name="share_via" msgid="8966594246261344259">"Deel via"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-am/strings.xml b/packages/DocumentsUI/res/values-am/strings.xml
deleted file mode 100644
index c77a8ee90f2b..000000000000
--- a/packages/DocumentsUI/res/values-am/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"ሰነዶች"</string>
- <string name="title_open" msgid="4353228937663917801">"ክፈት ከ"</string>
- <string name="title_save" msgid="2433679664882857999">"አስቀምጥ ወደ"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"አቃፊ ፍጠር"</string>
- <string name="menu_grid" msgid="6878021334497835259">"የፍርግርግ እይታ"</string>
- <string name="menu_list" msgid="7279285939892417279">"የዝርዝር እይታ"</string>
- <string name="menu_sort" msgid="7677740407158414452">"ደርድር በ"</string>
- <string name="menu_search" msgid="3816712084502856974">"ፈልግ"</string>
- <string name="menu_settings" msgid="6008033148948428823">"ቅንብሮች"</string>
- <string name="menu_open" msgid="432922957274920903">"ክፈት"</string>
- <string name="menu_save" msgid="2394743337684426338">"አስቀምጥ"</string>
- <string name="menu_share" msgid="3075149983979628146">"አጋራ"</string>
- <string name="menu_delete" msgid="8138799623850614177">"ሰርዝ"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> ተመርጠዋል"</string>
- <string name="sort_name" msgid="9183560467917256779">"በስም"</string>
- <string name="sort_date" msgid="586080032956151448">"በተለወጠበት ቀን"</string>
- <string name="sort_size" msgid="3350681319735474741">"በመጠን"</string>
- <string name="drawer_open" msgid="4545466532430226949">"ስሮችን አሳይ"</string>
- <string name="drawer_close" msgid="7602734368552123318">"ስሮችን ደብቅ"</string>
- <string name="save_error" msgid="6167009778003223664">"ሰነድ ማስቀመጥ አልተሳካም"</string>
- <string name="create_error" msgid="3735649141335444215">"አቃፊ መፍጠር አልተሳካም"</string>
- <string name="query_error" msgid="1222448261663503501">"ለሰነዶች መጠይቅ መስራት አልተሳካም"</string>
- <string name="root_recent" msgid="4470053704320518133">"የቅርብ ጊዜ"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ነፃ"</string>
- <string name="root_type_service" msgid="2178854894416775409">"የማከማቻ አገልግሎቶች"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"አቋራጮች"</string>
- <string name="root_type_device" msgid="7121342474653483538">"መሣሪያዎች"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"ተጨማሪ መተግበሪያዎች"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"የላቁ መሳሪያዎችን አሳይ"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"የፋይል መጠን አሳይ"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"የመሳሪያ መጠን አሳይ"</string>
- <string name="empty" msgid="7858882803708117596">"ምንም ንጥሎች የሉም"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"ፋይል መክፈት አይቻልም"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"አንዳንድ ሰነዶችን መሰረዝ አልተቻለም"</string>
- <string name="share_via" msgid="8966594246261344259">"በሚከተለው በኩል ያጋሩ"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ar/strings.xml b/packages/DocumentsUI/res/values-ar/strings.xml
deleted file mode 100644
index c59c0ee2cb48..000000000000
--- a/packages/DocumentsUI/res/values-ar/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"مستندات"</string>
- <string name="title_open" msgid="4353228937663917801">"فتح من"</string>
- <string name="title_save" msgid="2433679664882857999">"حفظ في"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"إنشاء مجلد"</string>
- <string name="menu_grid" msgid="6878021334497835259">"عرض الشبكة"</string>
- <string name="menu_list" msgid="7279285939892417279">"عرض القائمة"</string>
- <string name="menu_sort" msgid="7677740407158414452">"ترتيب بحسب"</string>
- <string name="menu_search" msgid="3816712084502856974">"بحث"</string>
- <string name="menu_settings" msgid="6008033148948428823">"الإعدادات"</string>
- <string name="menu_open" msgid="432922957274920903">"فتح"</string>
- <string name="menu_save" msgid="2394743337684426338">"حفظ"</string>
- <string name="menu_share" msgid="3075149983979628146">"مشاركة"</string>
- <string name="menu_delete" msgid="8138799623850614177">"حذف"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"تم تحديد <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"بحسب الاسم"</string>
- <string name="sort_date" msgid="586080032956151448">"بحسب تاريخ التعديل"</string>
- <string name="sort_size" msgid="3350681319735474741">"بحسب الحجم"</string>
- <string name="drawer_open" msgid="4545466532430226949">"عرض الجذور"</string>
- <string name="drawer_close" msgid="7602734368552123318">"إخفاء الجذور"</string>
- <string name="save_error" msgid="6167009778003223664">"أخفق حفظ المستند"</string>
- <string name="create_error" msgid="3735649141335444215">"أخفق إنشاء المجلد"</string>
- <string name="query_error" msgid="1222448261663503501">"أخفق إرسال طلب بحث عن المستندات"</string>
- <string name="root_recent" msgid="4470053704320518133">"الأخيرة"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> خالية"</string>
- <string name="root_type_service" msgid="2178854894416775409">"خدمات التخزين"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"اختصارات"</string>
- <string name="root_type_device" msgid="7121342474653483538">"أجهزة"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"المزيد من التطبيقات"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"عرض الأجهزة المتقدمة"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"عرض حجم الملف"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"عرض حجم الجهاز"</string>
- <string name="empty" msgid="7858882803708117596">"ليس هناك أي عناصر"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"لا يمكن فتح الملف"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"تعذر حذف بعض المستندات"</string>
- <string name="share_via" msgid="8966594246261344259">"مشاركة عبر"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-az-rAZ/strings.xml b/packages/DocumentsUI/res/values-az-rAZ/strings.xml
deleted file mode 100644
index 137498277522..000000000000
--- a/packages/DocumentsUI/res/values-az-rAZ/strings.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Sənədlər"</string>
- <string name="title_open" msgid="4353228937663917801">"Vasitəsilə açın"</string>
- <string name="title_save" msgid="2433679664882857999">"buraya saxlayın"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Qovluq yaradın"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Torlu görünüş"</string>
- <string name="menu_list" msgid="7279285939892417279">"Siyahı görünüşü"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Bunlardan biri üzrə sırala"</string>
- <string name="menu_search" msgid="3816712084502856974">"Axtarış"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Ayarlar"</string>
- <string name="menu_open" msgid="432922957274920903">"Açın"</string>
- <string name="menu_save" msgid="2394743337684426338">"Yadda saxlayın"</string>
- <string name="menu_share" msgid="3075149983979628146">"Paylaşın"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Sil"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> seçilmiş"</string>
- <string name="sort_name" msgid="9183560467917256779">"Ad üzrə"</string>
- <string name="sort_date" msgid="586080032956151448">"Tarix üzrə dəyişmiş"</string>
- <string name="sort_size" msgid="3350681319735474741">"Ölçü üzrə"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Kökləri göstərin"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Kökləri gizlədin"</string>
- <string name="save_error" msgid="6167009778003223664">"Sənədi yadda saxlaya bilmədi"</string>
- <string name="root_recent" msgid="4470053704320518133">"Son"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ödənişsiz"</string>
- <!-- no translation found for root_type_service (2178854894416775409) -->
- <skip />
- <string name="root_type_shortcut" msgid="3318760609471618093">"Qısa yollar"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Cihazlar"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Daha çox tətbiq"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Qabaqcıl cihazları görüntüləyin"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Fayl ölçüsünü görüntüləyin"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Cihaz ölçüsünü görüntüləyin"</string>
- <string name="empty" msgid="7858882803708117596">"Element yoxdur"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Faylı aça bilmir"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Bəzi sənədləri silə bilmir"</string>
- <string name="share_via" msgid="8966594246261344259">"Bunun vasitəsilə paylaş:"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-az/strings.xml b/packages/DocumentsUI/res/values-az/strings.xml
deleted file mode 100644
index 806118bcc102..000000000000
--- a/packages/DocumentsUI/res/values-az/strings.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Sənədlər"</string>
- <string name="title_open" msgid="4353228937663917801">"Vasitəsilə açın"</string>
- <string name="title_save" msgid="2433679664882857999">"buraya saxlayın"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Qovluq yaradın"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Torlu görünüş"</string>
- <string name="menu_list" msgid="7279285939892417279">"Siyahı görünüşü"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Bunlardan biri üzrə sırala"</string>
- <string name="menu_search" msgid="3816712084502856974">"Axtarış"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Ayarlar"</string>
- <string name="menu_open" msgid="432922957274920903">"Açın"</string>
- <string name="menu_save" msgid="2394743337684426338">"Yadda saxlayın"</string>
- <string name="menu_share" msgid="3075149983979628146">"Paylaşın"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Sil"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> seçilmiş"</string>
- <string name="sort_name" msgid="9183560467917256779">"Ad üzrə"</string>
- <string name="sort_date" msgid="586080032956151448">"Tarix üzrə dəyişmiş"</string>
- <string name="sort_size" msgid="3350681319735474741">"Ölçü üzrə"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Kökləri göstərin"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Kökləri gizlədin"</string>
- <string name="save_error" msgid="6167009778003223664">"Sənədi yadda saxlaya bilmədi"</string>
- <string name="root_recent" msgid="4470053704320518133">"Son"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ödənişsiz"</string>
- <string name="root_type_service" msgid="2857362700576006694">"Xidmətlər"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Qısa yollar"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Cihazlar"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Daha çox tətbiq"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Qabaqcıl cihazları görüntüləyin"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Fayl ölçüsünü görüntüləyin"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Cihaz ölçüsünü görüntüləyin"</string>
- <string name="empty" msgid="7858882803708117596">"Element yoxdur"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Faylı aça bilmir"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Bəzi sənədləri silə bilmir"</string>
- <string name="more" msgid="7117420986529297171">"Daha çox"</string>
- <string name="loading" msgid="7933681260296021180">"Yüklənir…"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-bg/strings.xml b/packages/DocumentsUI/res/values-bg/strings.xml
deleted file mode 100644
index c3242b2d0fa6..000000000000
--- a/packages/DocumentsUI/res/values-bg/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Документи"</string>
- <string name="title_open" msgid="4353228937663917801">"Отваряне от"</string>
- <string name="title_save" msgid="2433679664882857999">"Запазване в/ъв"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Създаване на папка"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Изглед в мрежа"</string>
- <string name="menu_list" msgid="7279285939892417279">"Списъчен изглед"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Сортиране по"</string>
- <string name="menu_search" msgid="3816712084502856974">"Търсене"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Настройки"</string>
- <string name="menu_open" msgid="432922957274920903">"Отваряне"</string>
- <string name="menu_save" msgid="2394743337684426338">"Запазване"</string>
- <string name="menu_share" msgid="3075149983979628146">"Споделяне"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Изтриване"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"Избрахте <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"По име"</string>
- <string name="sort_date" msgid="586080032956151448">"По дата на промяната"</string>
- <string name="sort_size" msgid="3350681319735474741">"По размер"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Показване на основните елементи"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Скриване на основните елементи"</string>
- <string name="save_error" msgid="6167009778003223664">"Запазването на документа не бе успешно"</string>
- <string name="create_error" msgid="3735649141335444215">"Създаването на папката не бе успешно"</string>
- <string name="query_error" msgid="1222448261663503501">"Заявката за документи не бе успешна"</string>
- <string name="root_recent" msgid="4470053704320518133">"Скорошно"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"Свободно: <xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Услуги за съхранение"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Преки пътища"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Устройства"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Още приложения"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Устройства с разширени ф-ии"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Показване на файловия размер"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Показване на размера на устройството"</string>
- <string name="empty" msgid="7858882803708117596">"Няма елементи"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Файлът не може да се отвори"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Някои документи не могат да бъдат изтрити"</string>
- <string name="share_via" msgid="8966594246261344259">"Споделяне чрез"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ca/strings.xml b/packages/DocumentsUI/res/values-ca/strings.xml
deleted file mode 100644
index 68c7b0e2b4e7..000000000000
--- a/packages/DocumentsUI/res/values-ca/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Documents"</string>
- <string name="title_open" msgid="4353228937663917801">"Obre des de"</string>
- <string name="title_save" msgid="2433679664882857999">"Desa a"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Crea una carpeta"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Visualització de quadrícula"</string>
- <string name="menu_list" msgid="7279285939892417279">"Visualització de llista"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Ordena per"</string>
- <string name="menu_search" msgid="3816712084502856974">"Cerca"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Configuració"</string>
- <string name="menu_open" msgid="432922957274920903">"Obre"</string>
- <string name="menu_save" msgid="2394743337684426338">"Desa"</string>
- <string name="menu_share" msgid="3075149983979628146">"Comparteix"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Suprimeix"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"Seleccionats: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"Per nom"</string>
- <string name="sort_date" msgid="586080032956151448">"Per data de modificació"</string>
- <string name="sort_size" msgid="3350681319735474741">"Per mida"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Mostra les arrels"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Amaga les arrels"</string>
- <string name="save_error" msgid="6167009778003223664">"No s\'ha pogut desar el document."</string>
- <string name="create_error" msgid="3735649141335444215">"No s\'ha pogut crear la carpeta"</string>
- <string name="query_error" msgid="1222448261663503501">"No s\'han pogut consultar els documents"</string>
- <string name="root_recent" msgid="4470053704320518133">"Recent"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> lliures"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Serveis d\'emmagatzematge"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Dreceres"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Dispositius"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Més aplicacions"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Mostra els dispositius avançats"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Mostra la mida del fitxer"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Mostra la mida del dispositiu"</string>
- <string name="empty" msgid="7858882803708117596">"Sense elements"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"No es pot obrir el fitxer."</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"No es poden suprimir alguns documents."</string>
- <string name="share_via" msgid="8966594246261344259">"Comparteix mitjançant"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-cs/strings.xml b/packages/DocumentsUI/res/values-cs/strings.xml
deleted file mode 100644
index f089c8b5b796..000000000000
--- a/packages/DocumentsUI/res/values-cs/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokumenty"</string>
- <string name="title_open" msgid="4353228937663917801">"Otevřít z"</string>
- <string name="title_save" msgid="2433679664882857999">"Uložit do"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Vytvořit složku"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Mřížka"</string>
- <string name="menu_list" msgid="7279285939892417279">"Seznam"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Řadit podle"</string>
- <string name="menu_search" msgid="3816712084502856974">"Hledat"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Nastavení"</string>
- <string name="menu_open" msgid="432922957274920903">"Otevřít"</string>
- <string name="menu_save" msgid="2394743337684426338">"Uložit"</string>
- <string name="menu_share" msgid="3075149983979628146">"Sdílet"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Smazat"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"Vybráno: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"Podle názvu"</string>
- <string name="sort_date" msgid="586080032956151448">"Podle data úpravy"</string>
- <string name="sort_size" msgid="3350681319735474741">"Podle velikosti"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Zobrazit kořeny"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Skrýt kořeny"</string>
- <string name="save_error" msgid="6167009778003223664">"Uložení dokumentu se nezdařilo"</string>
- <string name="create_error" msgid="3735649141335444215">"Složku se nepodařilo vytvořit"</string>
- <string name="query_error" msgid="1222448261663503501">"Seznam dokumentů se nepodařilo načíst"</string>
- <string name="root_recent" msgid="4470053704320518133">"Poslední"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"Volný prostor: <xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Služby úložiště"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Klávesové zkratky"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Zařízení"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Další aplikace"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Zobrazit pokročilá zařízení"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Zobrazit velikost souboru"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Zobrazit velikost zařízení"</string>
- <string name="empty" msgid="7858882803708117596">"Žádné položky"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Soubor nelze otevřít"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Některé dokumenty nelze smazat"</string>
- <string name="share_via" msgid="8966594246261344259">"Sdílet pomocí"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-da/strings.xml b/packages/DocumentsUI/res/values-da/strings.xml
deleted file mode 100644
index 816f9a72845e..000000000000
--- a/packages/DocumentsUI/res/values-da/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokumenter"</string>
- <string name="title_open" msgid="4353228937663917801">"Åbn fra"</string>
- <string name="title_save" msgid="2433679664882857999">"Gem på"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Opret mappe"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Gittervisning"</string>
- <string name="menu_list" msgid="7279285939892417279">"Listevisning"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Sortér efter"</string>
- <string name="menu_search" msgid="3816712084502856974">"Søg"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Indstillinger"</string>
- <string name="menu_open" msgid="432922957274920903">"Åbn"</string>
- <string name="menu_save" msgid="2394743337684426338">"Gem"</string>
- <string name="menu_share" msgid="3075149983979628146">"Del"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Slet"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> er valgt"</string>
- <string name="sort_name" msgid="9183560467917256779">"Efter navn"</string>
- <string name="sort_date" msgid="586080032956151448">"Efter ændringsdato"</string>
- <string name="sort_size" msgid="3350681319735474741">"Efter størrelse"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Vis rødder"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Skjul rødder"</string>
- <string name="save_error" msgid="6167009778003223664">"Dokumentet kunne ikke gemmes"</string>
- <string name="create_error" msgid="3735649141335444215">"Mappen kunne ikke oprettes"</string>
- <string name="query_error" msgid="1222448261663503501">"Dokumenterne kunne ikke forespørges."</string>
- <string name="root_recent" msgid="4470053704320518133">"Seneste"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ledig plads"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Lagringstjenester"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Genveje"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Enheder"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Flere apps"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Vis avancerede enheder"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Vis filstørrelse"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Vis enhedens størrelse"</string>
- <string name="empty" msgid="7858882803708117596">"Ingen elementer"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Filen kan ikke åbnes"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Nogle dokumenter kan ikke slettes"</string>
- <string name="share_via" msgid="8966594246261344259">"Del via"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-de/strings.xml b/packages/DocumentsUI/res/values-de/strings.xml
deleted file mode 100644
index 3b448d9bd692..000000000000
--- a/packages/DocumentsUI/res/values-de/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokumente"</string>
- <string name="title_open" msgid="4353228937663917801">"Öffnen von"</string>
- <string name="title_save" msgid="2433679664882857999">"Speichern unter"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Ordner erstellen"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Rasteransicht"</string>
- <string name="menu_list" msgid="7279285939892417279">"Listenansicht"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Sortieren nach"</string>
- <string name="menu_search" msgid="3816712084502856974">"Suchen"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Einstellungen"</string>
- <string name="menu_open" msgid="432922957274920903">"Öffnen"</string>
- <string name="menu_save" msgid="2394743337684426338">"Speichern"</string>
- <string name="menu_share" msgid="3075149983979628146">"Teilen"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Löschen"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> ausgewählt"</string>
- <string name="sort_name" msgid="9183560467917256779">"Nach Name"</string>
- <string name="sort_date" msgid="586080032956151448">"Nach Änderungsdatum"</string>
- <string name="sort_size" msgid="3350681319735474741">"Nach Größe"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Root-Verzeichnis anzeigen"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Root-Verzeichnis ausblenden"</string>
- <string name="save_error" msgid="6167009778003223664">"Dokument konnte nicht gespeichert werden."</string>
- <string name="create_error" msgid="3735649141335444215">"Ordner konnte nicht erstellt werden."</string>
- <string name="query_error" msgid="1222448261663503501">"Fehler bei der Anforderung von Dokumenten"</string>
- <string name="root_recent" msgid="4470053704320518133">"Letzte"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> verfügbar"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Speicherdienste"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Verknüpfungen"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Geräte"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Weitere Apps"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Erweiterte Geräte anzeigen"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Dateigröße anzeigen"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Geräteabmessungen anzeigen"</string>
- <string name="empty" msgid="7858882803708117596">"Keine Elemente"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Datei kann nicht geöffnet werden."</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Einige Dokumente konnten nicht gelöscht werden."</string>
- <string name="share_via" msgid="8966594246261344259">"Teilen über"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-el/strings.xml b/packages/DocumentsUI/res/values-el/strings.xml
deleted file mode 100644
index aec3318a3f36..000000000000
--- a/packages/DocumentsUI/res/values-el/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Έγγραφα"</string>
- <string name="title_open" msgid="4353228937663917801">"Άνοιγμα από"</string>
- <string name="title_save" msgid="2433679664882857999">"Αποθήκευση σε"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Δημιουργία φακέλου"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Προβολή πλέγματος"</string>
- <string name="menu_list" msgid="7279285939892417279">"Προβολή λίστας"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Ταξινόμηση κατά"</string>
- <string name="menu_search" msgid="3816712084502856974">"Αναζήτηση"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Ρυθμίσεις"</string>
- <string name="menu_open" msgid="432922957274920903">"Άνοιγμα"</string>
- <string name="menu_save" msgid="2394743337684426338">"Αποθήκευση"</string>
- <string name="menu_share" msgid="3075149983979628146">"Κοινή χρήση"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Διαγραφή"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"Επιλέχθηκαν <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"Κατά όνομα"</string>
- <string name="sort_date" msgid="586080032956151448">"Κατά ημερομηνία τροποποίησης"</string>
- <string name="sort_size" msgid="3350681319735474741">"Κατά μέγεθος"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Εμφάνιση ρίζας"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Απόκρυψη ρίζας"</string>
- <string name="save_error" msgid="6167009778003223664">"Αποτυχία αποθήκευσης του εγγράφου"</string>
- <string name="create_error" msgid="3735649141335444215">"Αποτυχία δημιουργίας φακέλου"</string>
- <string name="query_error" msgid="1222448261663503501">"Αποτυχία υποβολής ερωτήματος για έγγραφα"</string>
- <string name="root_recent" msgid="4470053704320518133">"Πρόσφατα"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ελεύθερα"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Υπηρεσίες αποθήκευσης"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Συντομεύσεις"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Συσκευές"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Περισσότερες εφαρμογές"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Εμφάνιση προηγμένων συσκευών"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Εμφάνιση μεγέθους αρχείου"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Εμφάνιση μεγέθους συσκευής"</string>
- <string name="empty" msgid="7858882803708117596">"Δεν υπάρχουν στοιχεία"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Δεν είναι δυνατό το άνοιγμα του αρχείου"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Δεν είναι δυνατή η διαγραφή ορισμένων εγγράφων"</string>
- <string name="share_via" msgid="8966594246261344259">"Κοινή χρήση μέσω"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-en-rGB/strings.xml b/packages/DocumentsUI/res/values-en-rGB/strings.xml
deleted file mode 100644
index a95e7f157a45..000000000000
--- a/packages/DocumentsUI/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Documents"</string>
- <string name="title_open" msgid="4353228937663917801">"Open from"</string>
- <string name="title_save" msgid="2433679664882857999">"Save to"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Create folder"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Grid view"</string>
- <string name="menu_list" msgid="7279285939892417279">"List view"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Sort by"</string>
- <string name="menu_search" msgid="3816712084502856974">"Search"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Settings"</string>
- <string name="menu_open" msgid="432922957274920903">"Open"</string>
- <string name="menu_save" msgid="2394743337684426338">"Save"</string>
- <string name="menu_share" msgid="3075149983979628146">"Share"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Delete"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> selected"</string>
- <string name="sort_name" msgid="9183560467917256779">"By name"</string>
- <string name="sort_date" msgid="586080032956151448">"By date modified"</string>
- <string name="sort_size" msgid="3350681319735474741">"By size"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Show roots"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Hide roots"</string>
- <string name="save_error" msgid="6167009778003223664">"Failed to save document"</string>
- <string name="create_error" msgid="3735649141335444215">"Failed to create folder"</string>
- <string name="query_error" msgid="1222448261663503501">"Failed to query documents"</string>
- <string name="root_recent" msgid="4470053704320518133">"Recent"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> free"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Storage services"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Shortcuts"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Devices"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"More apps"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Display advanced devices"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Display file size"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Display device size"</string>
- <string name="empty" msgid="7858882803708117596">"No items"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Cannot open file"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Unable to delete some documents"</string>
- <string name="share_via" msgid="8966594246261344259">"Share via"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-en-rIN/strings.xml b/packages/DocumentsUI/res/values-en-rIN/strings.xml
deleted file mode 100644
index a95e7f157a45..000000000000
--- a/packages/DocumentsUI/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Documents"</string>
- <string name="title_open" msgid="4353228937663917801">"Open from"</string>
- <string name="title_save" msgid="2433679664882857999">"Save to"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Create folder"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Grid view"</string>
- <string name="menu_list" msgid="7279285939892417279">"List view"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Sort by"</string>
- <string name="menu_search" msgid="3816712084502856974">"Search"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Settings"</string>
- <string name="menu_open" msgid="432922957274920903">"Open"</string>
- <string name="menu_save" msgid="2394743337684426338">"Save"</string>
- <string name="menu_share" msgid="3075149983979628146">"Share"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Delete"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> selected"</string>
- <string name="sort_name" msgid="9183560467917256779">"By name"</string>
- <string name="sort_date" msgid="586080032956151448">"By date modified"</string>
- <string name="sort_size" msgid="3350681319735474741">"By size"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Show roots"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Hide roots"</string>
- <string name="save_error" msgid="6167009778003223664">"Failed to save document"</string>
- <string name="create_error" msgid="3735649141335444215">"Failed to create folder"</string>
- <string name="query_error" msgid="1222448261663503501">"Failed to query documents"</string>
- <string name="root_recent" msgid="4470053704320518133">"Recent"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> free"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Storage services"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Shortcuts"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Devices"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"More apps"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Display advanced devices"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Display file size"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Display device size"</string>
- <string name="empty" msgid="7858882803708117596">"No items"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Cannot open file"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Unable to delete some documents"</string>
- <string name="share_via" msgid="8966594246261344259">"Share via"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-es-rUS/strings.xml b/packages/DocumentsUI/res/values-es-rUS/strings.xml
deleted file mode 100644
index 4a3ff33c3bb5..000000000000
--- a/packages/DocumentsUI/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Documentos"</string>
- <string name="title_open" msgid="4353228937663917801">"Abrir desde"</string>
- <string name="title_save" msgid="2433679664882857999">"Guardar en"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Crear carpeta"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Vista de cuadrícula"</string>
- <string name="menu_list" msgid="7279285939892417279">"Vista de lista"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Ordenar por"</string>
- <string name="menu_search" msgid="3816712084502856974">"Buscar"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Configuración"</string>
- <string name="menu_open" msgid="432922957274920903">"Abrir"</string>
- <string name="menu_save" msgid="2394743337684426338">"Guardar"</string>
- <string name="menu_share" msgid="3075149983979628146">"Compartir"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Eliminar"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> seleccionado(s)"</string>
- <string name="sort_name" msgid="9183560467917256779">"Por nombre"</string>
- <string name="sort_date" msgid="586080032956151448">"Por fecha de modificación"</string>
- <string name="sort_size" msgid="3350681319735474741">"Por tamaño"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Mostrar raíces"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Ocultar raíces"</string>
- <string name="save_error" msgid="6167009778003223664">"Error al guardar el documento"</string>
- <string name="create_error" msgid="3735649141335444215">"Error al crear la carpeta"</string>
- <string name="query_error" msgid="1222448261663503501">"Error al consultar documentos"</string>
- <string name="root_recent" msgid="4470053704320518133">"Recientes"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> de espacio libre"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Almacenamiento"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Accesos directos"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Dispositivos"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Más aplicaciones"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Mostrar dispositivos avanzados"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Mostrar tamaño del archivo"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Mostrar tamaño del dispositivo"</string>
- <string name="empty" msgid="7858882803708117596">"Sin elementos"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"No se puede abrir el archivo."</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"No es posible eliminar algunos documentos."</string>
- <string name="share_via" msgid="8966594246261344259">"Compartir mediante"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-es/strings.xml b/packages/DocumentsUI/res/values-es/strings.xml
deleted file mode 100644
index 1682542a8a28..000000000000
--- a/packages/DocumentsUI/res/values-es/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Documentos"</string>
- <string name="title_open" msgid="4353228937663917801">"Abrir desde"</string>
- <string name="title_save" msgid="2433679664882857999">"Guardar en"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Crear carpeta"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Vista de cuadrícula"</string>
- <string name="menu_list" msgid="7279285939892417279">"Vista de lista"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Ordenar por"</string>
- <string name="menu_search" msgid="3816712084502856974">"Buscar"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Ajustes"</string>
- <string name="menu_open" msgid="432922957274920903">"Abrir"</string>
- <string name="menu_save" msgid="2394743337684426338">"Guardar"</string>
- <string name="menu_share" msgid="3075149983979628146">"Compartir"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Eliminar"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"Seleccionado: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"Por nombre"</string>
- <string name="sort_date" msgid="586080032956151448">"Por fecha de modificación"</string>
- <string name="sort_size" msgid="3350681319735474741">"Por tamaño"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Mostrar raíces"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Ocultar raíces"</string>
- <string name="save_error" msgid="6167009778003223664">"Error al guardar documento"</string>
- <string name="create_error" msgid="3735649141335444215">"Error al crear la carpeta"</string>
- <string name="query_error" msgid="1222448261663503501">"Error al consultar lista de documentos"</string>
- <string name="root_recent" msgid="4470053704320518133">"Reciente"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> de espacio libre"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Servicios almacenamiento"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Accesos directos"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Dispositivos"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Más aplicaciones"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Mostrar dispositivos avanzados"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Mostrar tamaño del archivo"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Mostrar tamaño del dispositivo"</string>
- <string name="empty" msgid="7858882803708117596">"Sin elementos"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Error al abrir el archivo"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"No es posible eliminar algunos documentos"</string>
- <string name="share_via" msgid="8966594246261344259">"Compartir a través de"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-et-rEE/strings.xml b/packages/DocumentsUI/res/values-et-rEE/strings.xml
deleted file mode 100644
index 5412956587ca..000000000000
--- a/packages/DocumentsUI/res/values-et-rEE/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokumendid"</string>
- <string name="title_open" msgid="4353228937663917801">"Ava:"</string>
- <string name="title_save" msgid="2433679664882857999">"Salvesta:"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Loo kaust"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Ruudustikkuva"</string>
- <string name="menu_list" msgid="7279285939892417279">"Loendikuva"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Sortimisalus:"</string>
- <string name="menu_search" msgid="3816712084502856974">"Otsing"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Seaded"</string>
- <string name="menu_open" msgid="432922957274920903">"Ava"</string>
- <string name="menu_save" msgid="2394743337684426338">"Salvesta"</string>
- <string name="menu_share" msgid="3075149983979628146">"Jaga"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Kustuta"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> on valitud"</string>
- <string name="sort_name" msgid="9183560467917256779">"Nime järgi"</string>
- <string name="sort_date" msgid="586080032956151448">"Muutmiskuupäeva järgi"</string>
- <string name="sort_size" msgid="3350681319735474741">"Suuruse järgi"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Kuva juured"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Peida juured"</string>
- <string name="save_error" msgid="6167009778003223664">"Dokumendi salvestamine ebaõnnestus"</string>
- <string name="create_error" msgid="3735649141335444215">"Kausta loomine ebaõnnestus"</string>
- <string name="query_error" msgid="1222448261663503501">"Dokumentide päring ebaõnnestus"</string>
- <string name="root_recent" msgid="4470053704320518133">"Hiljutised"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> on vaba"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Mäluruumi teenused"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Otseteed"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Seadmed"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Rohkem rakendusi"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Kuva tippseadmed"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Kuva faili suurus"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Kuva seadme suurus"</string>
- <string name="empty" msgid="7858882803708117596">"Üksusi ei ole"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Faili ei saa avada"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Mõnda dokumenti ei õnnestu kustutada"</string>
- <string name="share_via" msgid="8966594246261344259">"Jagage teenusega"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-fa/strings.xml b/packages/DocumentsUI/res/values-fa/strings.xml
deleted file mode 100644
index c922b374ef71..000000000000
--- a/packages/DocumentsUI/res/values-fa/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"اسناد"</string>
- <string name="title_open" msgid="4353228937663917801">"باز کردن از"</string>
- <string name="title_save" msgid="2433679664882857999">"ذخیره در"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"ایجاد پوشه"</string>
- <string name="menu_grid" msgid="6878021334497835259">"نمای جدولی"</string>
- <string name="menu_list" msgid="7279285939892417279">"نمای فهرست‌وار"</string>
- <string name="menu_sort" msgid="7677740407158414452">"مرتب‌سازی بر اساس"</string>
- <string name="menu_search" msgid="3816712084502856974">"جستجو"</string>
- <string name="menu_settings" msgid="6008033148948428823">"تنظیمات"</string>
- <string name="menu_open" msgid="432922957274920903">"باز کردن"</string>
- <string name="menu_save" msgid="2394743337684426338">"ذخیره"</string>
- <string name="menu_share" msgid="3075149983979628146">"اشتراک‌گذاری"</string>
- <string name="menu_delete" msgid="8138799623850614177">"حذف"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> انتخاب شد"</string>
- <string name="sort_name" msgid="9183560467917256779">"بر اساس نام"</string>
- <string name="sort_date" msgid="586080032956151448">"بر اساس تاریخ اصلاح"</string>
- <string name="sort_size" msgid="3350681319735474741">"بر اساس اندازه"</string>
- <string name="drawer_open" msgid="4545466532430226949">"نمایش ریشه‌ها"</string>
- <string name="drawer_close" msgid="7602734368552123318">"پنهان کردن ریشه‌ها"</string>
- <string name="save_error" msgid="6167009778003223664">"ذخیره سند انجام نشد"</string>
- <string name="create_error" msgid="3735649141335444215">"ایجاد پوشه انجام نشد"</string>
- <string name="query_error" msgid="1222448261663503501">"جستجوی اسناد ناموفق بود"</string>
- <string name="root_recent" msgid="4470053704320518133">"اخیر"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> آزاد"</string>
- <string name="root_type_service" msgid="2178854894416775409">"خدمات ذخیره‌سازی"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"میانبرها"</string>
- <string name="root_type_device" msgid="7121342474653483538">"دستگاه‌ها"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"برنامه‌های بیشتر"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"نمایش دستگاه‌های پیشرفته"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"نمایش اندازه فایل"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"نمایش اندازه صفحه نمایش"</string>
- <string name="empty" msgid="7858882803708117596">"موردی موجود نیست"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"فایل باز نمی‌شود"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"برخی از اسناد حذف نمی‌شوند"</string>
- <string name="share_via" msgid="8966594246261344259">"اشتراک‌گذاری از طریق"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-fi/strings.xml b/packages/DocumentsUI/res/values-fi/strings.xml
deleted file mode 100644
index 5e40ecde5a4e..000000000000
--- a/packages/DocumentsUI/res/values-fi/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Asiakirjat"</string>
- <string name="title_open" msgid="4353228937663917801">"Avoinna alkaen"</string>
- <string name="title_save" msgid="2433679664882857999">"Tallenna kohteeseen"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Luo kansio"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Ruudukkonäkymä"</string>
- <string name="menu_list" msgid="7279285939892417279">"Luettelonäkymä"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Lajitteluperuste"</string>
- <string name="menu_search" msgid="3816712084502856974">"Haku"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Asetukset"</string>
- <string name="menu_open" msgid="432922957274920903">"Avaa"</string>
- <string name="menu_save" msgid="2394743337684426338">"Tallenna"</string>
- <string name="menu_share" msgid="3075149983979628146">"Jaa"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Poista"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> valittua"</string>
- <string name="sort_name" msgid="9183560467917256779">"Nimen mukaan"</string>
- <string name="sort_date" msgid="586080032956151448">"Muokkauspäivän mukaan"</string>
- <string name="sort_size" msgid="3350681319735474741">"Koon mukaan"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Näytä juuret"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Piilota juuret"</string>
- <string name="save_error" msgid="6167009778003223664">"Asiakirjan tallennus epäonnistui"</string>
- <string name="create_error" msgid="3735649141335444215">"Kansion luominen epäonnistui"</string>
- <string name="query_error" msgid="1222448261663503501">"Dokumenttikysely epäonnistui"</string>
- <string name="root_recent" msgid="4470053704320518133">"Viimeisimmät"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> vapaana"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Tallennuspalvelut"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Pikakuvakkeet"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Laitteet"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Lisää sovelluksia"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Näytä kehittyneet laitteet"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Näytä tiedoston koko"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Näytä laitteen koko"</string>
- <string name="empty" msgid="7858882803708117596">"Ei kohteita"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Tiedostoa ei voi avata"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Joitakin asiakirjoja ei voi poistaa"</string>
- <string name="share_via" msgid="8966594246261344259">"Jaa sovelluksessa"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-fr-rCA/strings.xml b/packages/DocumentsUI/res/values-fr-rCA/strings.xml
deleted file mode 100644
index a8373794396d..000000000000
--- a/packages/DocumentsUI/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Documents"</string>
- <string name="title_open" msgid="4353228937663917801">"Ouvert à partir de"</string>
- <string name="title_save" msgid="2433679664882857999">"Enregistrer dans"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Créer un dossier"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Grille"</string>
- <string name="menu_list" msgid="7279285939892417279">"Liste"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Trier par"</string>
- <string name="menu_search" msgid="3816712084502856974">"Rechercher"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Paramètres"</string>
- <string name="menu_open" msgid="432922957274920903">"Ouvrir"</string>
- <string name="menu_save" msgid="2394743337684426338">"Enregistrer"</string>
- <string name="menu_share" msgid="3075149983979628146">"Partager"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Supprimer"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> sélectionné(s)"</string>
- <string name="sort_name" msgid="9183560467917256779">"Par nom"</string>
- <string name="sort_date" msgid="586080032956151448">"Par date de modification"</string>
- <string name="sort_size" msgid="3350681319735474741">"Par taille"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Afficher les racines"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Masquer les racines"</string>
- <string name="save_error" msgid="6167009778003223664">"Échec de l\'enregistrement du document"</string>
- <string name="create_error" msgid="3735649141335444215">"Échec de la création du dossier"</string>
- <string name="query_error" msgid="1222448261663503501">"Échec de la demande de document"</string>
- <string name="root_recent" msgid="4470053704320518133">"Récents"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> disponible"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Services de stockage"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Raccourcis"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Appareils"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Plus d\'applications"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Afficher les appareils avancés"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Afficher la taille du fichier"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Taille de l\'écran de l\'appareil"</string>
- <string name="empty" msgid="7858882803708117596">"Aucun élément"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Impossible d\'ouvrir le fichier"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Impossible de supprimer certains documents"</string>
- <string name="share_via" msgid="8966594246261344259">"Partager par"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-fr/strings.xml b/packages/DocumentsUI/res/values-fr/strings.xml
deleted file mode 100644
index ff9aeda303c8..000000000000
--- a/packages/DocumentsUI/res/values-fr/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Documents"</string>
- <string name="title_open" msgid="4353228937663917801">"Ouvrir à partir de"</string>
- <string name="title_save" msgid="2433679664882857999">"Enregistrer sous"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Créer un dossier"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Grille"</string>
- <string name="menu_list" msgid="7279285939892417279">"Liste"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Trier par"</string>
- <string name="menu_search" msgid="3816712084502856974">"Rechercher"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Paramètres"</string>
- <string name="menu_open" msgid="432922957274920903">"Ouvrir"</string>
- <string name="menu_save" msgid="2394743337684426338">"Enregistrer"</string>
- <string name="menu_share" msgid="3075149983979628146">"Partager"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Supprimer"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> élément(s) sélectionné(s)"</string>
- <string name="sort_name" msgid="9183560467917256779">"Par nom"</string>
- <string name="sort_date" msgid="586080032956151448">"Par date de modification"</string>
- <string name="sort_size" msgid="3350681319735474741">"Par taille"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Afficher les répertoires racines"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Masquer les répertoires racines"</string>
- <string name="save_error" msgid="6167009778003223664">"Échec de l\'enregistrement du document."</string>
- <string name="create_error" msgid="3735649141335444215">"Échec de la création du dossier."</string>
- <string name="query_error" msgid="1222448261663503501">"Échec de la demande de documents."</string>
- <string name="root_recent" msgid="4470053704320518133">"Récents"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"Espace disponible : <xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Services de stockage"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Raccourcis"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Appareils"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Autres applications"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Afficher les appareils avancés"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Afficher la taille des fichiers"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Afficher la capacité de stockage des appareils"</string>
- <string name="empty" msgid="7858882803708117596">"Aucun élément"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Impossible d\'ouvrir le fichier."</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Impossible de supprimer certains documents."</string>
- <string name="share_via" msgid="8966594246261344259">"Partager via"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-hi/strings.xml b/packages/DocumentsUI/res/values-hi/strings.xml
deleted file mode 100644
index 4ce02db1ef29..000000000000
--- a/packages/DocumentsUI/res/values-hi/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"दस्तावेज़"</string>
- <string name="title_open" msgid="4353228937663917801">"यहां से खोलें"</string>
- <string name="title_save" msgid="2433679664882857999">"यहां सहेजें"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"फ़ोल्डर बनाएं"</string>
- <string name="menu_grid" msgid="6878021334497835259">"ग्रिड दृश्य"</string>
- <string name="menu_list" msgid="7279285939892417279">"सूची दृश्य"</string>
- <string name="menu_sort" msgid="7677740407158414452">"इससे क्रमित करें"</string>
- <string name="menu_search" msgid="3816712084502856974">"खोजें"</string>
- <string name="menu_settings" msgid="6008033148948428823">"सेटिंग"</string>
- <string name="menu_open" msgid="432922957274920903">"खोलें"</string>
- <string name="menu_save" msgid="2394743337684426338">"सहेजें"</string>
- <string name="menu_share" msgid="3075149983979628146">"साझा करें"</string>
- <string name="menu_delete" msgid="8138799623850614177">"हटाएं"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> चयनित"</string>
- <string name="sort_name" msgid="9183560467917256779">"नाम के अनुसार"</string>
- <string name="sort_date" msgid="586080032956151448">"बदलाव के दिनांक के अनुसार"</string>
- <string name="sort_size" msgid="3350681319735474741">"आकार के अनुसार"</string>
- <string name="drawer_open" msgid="4545466532430226949">"रूट दिखाएं"</string>
- <string name="drawer_close" msgid="7602734368552123318">"रूट छिपाएं"</string>
- <string name="save_error" msgid="6167009778003223664">"दस्तावेज़ सहेजने में विफल रहा"</string>
- <string name="create_error" msgid="3735649141335444215">"फ़ोल्डर बनाने में विफल"</string>
- <string name="query_error" msgid="1222448261663503501">"दस्तावेजों के लिए क्वेरी करने में विफल रहा"</string>
- <string name="root_recent" msgid="4470053704320518133">"हाल ही के"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> रिक्त"</string>
- <string name="root_type_service" msgid="2178854894416775409">"संग्रहण सेवाएं"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"शॉर्टकट"</string>
- <string name="root_type_device" msgid="7121342474653483538">"उपकरण"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"अधिक एप्स"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"उन्नत उपकरणों को दिखाएं"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"फ़ाइल का आकार दिखाएं"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"उपकरण का आकार दिखाएं"</string>
- <string name="empty" msgid="7858882803708117596">"कोई आइटम नहीं"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"फ़ाइल नहीं खोली जा सकती"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"कुछ दस्तावेज़ों को हटाने में अक्षम"</string>
- <string name="share_via" msgid="8966594246261344259">"इसके द्वारा साझा करें"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-hr/strings.xml b/packages/DocumentsUI/res/values-hr/strings.xml
deleted file mode 100644
index 73c2f04b7feb..000000000000
--- a/packages/DocumentsUI/res/values-hr/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokumenti"</string>
- <string name="title_open" msgid="4353228937663917801">"Otvori iz"</string>
- <string name="title_save" msgid="2433679664882857999">"Spremi u"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Izradi mapu"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Prikaz rešetke"</string>
- <string name="menu_list" msgid="7279285939892417279">"Prikaz popisa"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Poredano po"</string>
- <string name="menu_search" msgid="3816712084502856974">"Pretraživanje"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Postavke"</string>
- <string name="menu_open" msgid="432922957274920903">"Otvaranje"</string>
- <string name="menu_save" msgid="2394743337684426338">"Spremi"</string>
- <string name="menu_share" msgid="3075149983979628146">"Dijeli"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Izbriši"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"Odabrano: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"Po korisniku"</string>
- <string name="sort_date" msgid="586080032956151448">"Po datumu izmjene"</string>
- <string name="sort_size" msgid="3350681319735474741">"Po veličini"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Prikaži korijene"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Sakrij korijene"</string>
- <string name="save_error" msgid="6167009778003223664">"Nije uspjelo spremanje dokumenta"</string>
- <string name="create_error" msgid="3735649141335444215">"Izrada mape nije uspjela"</string>
- <string name="query_error" msgid="1222448261663503501">"Traženje dokumenata nije uspjelo"</string>
- <string name="root_recent" msgid="4470053704320518133">"Nedavno"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> besplatno"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Usluge pohrane"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Prečaci"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Uređaji"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Više aplikacija"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Prikaži napredne uređaje"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Prikaži veličinu datoteke"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Prikaži veličinu uređaja"</string>
- <string name="empty" msgid="7858882803708117596">"Nema stavki"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Datoteku nije moguće otvoriti"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Nije moguće izbrisati neke dokumente"</string>
- <string name="share_via" msgid="8966594246261344259">"Dijeli putem"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-hu/strings.xml b/packages/DocumentsUI/res/values-hu/strings.xml
deleted file mode 100644
index db7854b43d98..000000000000
--- a/packages/DocumentsUI/res/values-hu/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokumentumok"</string>
- <string name="title_open" msgid="4353228937663917801">"Megnyitás innen"</string>
- <string name="title_save" msgid="2433679664882857999">"Mentés ide"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Mappa létrehozása"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Rács"</string>
- <string name="menu_list" msgid="7279285939892417279">"Lista"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Rendezés"</string>
- <string name="menu_search" msgid="3816712084502856974">"Keresés"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Beállítások"</string>
- <string name="menu_open" msgid="432922957274920903">"Megnyitás"</string>
- <string name="menu_save" msgid="2394743337684426338">"Mentés"</string>
- <string name="menu_share" msgid="3075149983979628146">"Megosztás"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Törlés"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> kiválasztva"</string>
- <string name="sort_name" msgid="9183560467917256779">"Név szerint"</string>
- <string name="sort_date" msgid="586080032956151448">"Módosítás dátuma szerint"</string>
- <string name="sort_size" msgid="3350681319735474741">"Méret szerint"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Gyökérszint megjelenítése"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Gyökérszint elrejtése"</string>
- <string name="save_error" msgid="6167009778003223664">"Nem sikerült menteni a dokumentumot"</string>
- <string name="create_error" msgid="3735649141335444215">"Nem sikerült létrehozni a mappát"</string>
- <string name="query_error" msgid="1222448261663503501">"A dokumentumok lekérése nem sikerült"</string>
- <string name="root_recent" msgid="4470053704320518133">"Legutóbbiak"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> szabad"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Tárhelyszolgáltatások"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Parancsikonok"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Eszközök"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"További alkalmazások"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Speciális eszközök megjelenítése"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Fájlméret megjelenítése"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Eszközméret megjelenítése"</string>
- <string name="empty" msgid="7858882803708117596">"Nincsenek elemek"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"A fájlt nem lehet megnyitni"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Néhány dokumentumot nem lehet törölni"</string>
- <string name="share_via" msgid="8966594246261344259">"Megosztás itt:"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-hy-rAM/strings.xml b/packages/DocumentsUI/res/values-hy-rAM/strings.xml
deleted file mode 100644
index c683f3ebf2f2..000000000000
--- a/packages/DocumentsUI/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Փաստաթղթեր"</string>
- <string name="title_open" msgid="4353228937663917801">"Բացել այստեղից"</string>
- <string name="title_save" msgid="2433679664882857999">"Պահել այստեղ"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Ստեղծել թղթապանակ"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Ցանցային տեսք"</string>
- <string name="menu_list" msgid="7279285939892417279">"Ցուցակի տեսք"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Դասավորել ըստ"</string>
- <string name="menu_search" msgid="3816712084502856974">"Որոնել"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Կարգավորումներ"</string>
- <string name="menu_open" msgid="432922957274920903">"Բացել"</string>
- <string name="menu_save" msgid="2394743337684426338">"Պահել"</string>
- <string name="menu_share" msgid="3075149983979628146">"Համօգտագործել"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Ջնջել"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> ընտրված"</string>
- <string name="sort_name" msgid="9183560467917256779">"Ըստ անվան"</string>
- <string name="sort_date" msgid="586080032956151448">"Ըստ փոփոխման ամսաթվի"</string>
- <string name="sort_size" msgid="3350681319735474741">"Ըստ չափի"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Ցույց տալ արմատները"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Թաքցնել արմատները"</string>
- <string name="save_error" msgid="6167009778003223664">"Չհաջողվեց պահել փաստաթուղթը"</string>
- <string name="create_error" msgid="3735649141335444215">"Չհաջողվեց ստեղծել թղթապանակը"</string>
- <string name="query_error" msgid="1222448261663503501">"Փաստաթղթերին հարցում կատարելիս սխալ տեղի ունեցավ"</string>
- <string name="root_recent" msgid="4470053704320518133">"Վերջին"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ազատ է"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Պահուստի ծառայություններ"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Դյուրանցումներ"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Սարքեր"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Հավելյալ ծրագրեր"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Ցուցադրել ընդլայնված սարքերը"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Ցուցադրել ֆայլի չափը"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Ցուցադրել սարքի չափը"</string>
- <string name="empty" msgid="7858882803708117596">"Տարրեր չկան"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Հնարավոր չէ բացել ֆայլը"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Անհնար է ջնջել որոշ փաստաթղթեր"</string>
- <string name="share_via" msgid="8966594246261344259">"Տարածել"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-in/strings.xml b/packages/DocumentsUI/res/values-in/strings.xml
deleted file mode 100644
index 519b936dd40f..000000000000
--- a/packages/DocumentsUI/res/values-in/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokumen"</string>
- <string name="title_open" msgid="4353228937663917801">"Buka dari"</string>
- <string name="title_save" msgid="2433679664882857999">"Simpan ke"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Buat folder"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Tampilan kisi"</string>
- <string name="menu_list" msgid="7279285939892417279">"Tampilan daftar"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Sortir menurut"</string>
- <string name="menu_search" msgid="3816712084502856974">"Telusuri"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Setelan"</string>
- <string name="menu_open" msgid="432922957274920903">"Buka"</string>
- <string name="menu_save" msgid="2394743337684426338">"Simpan"</string>
- <string name="menu_share" msgid="3075149983979628146">"Bagikan"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Hapus"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> dipilih"</string>
- <string name="sort_name" msgid="9183560467917256779">"Menurut nama"</string>
- <string name="sort_date" msgid="586080032956151448">"Menurut tanggal diubah"</string>
- <string name="sort_size" msgid="3350681319735474741">"Menurut ukuran"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Tampilkan akar"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Sembunyikan akar"</string>
- <string name="save_error" msgid="6167009778003223664">"Gagal menyimpan dokumen"</string>
- <string name="create_error" msgid="3735649141335444215">"Gagal membuat folder"</string>
- <string name="query_error" msgid="1222448261663503501">"Gagal mengirim kueri untuk dokumen"</string>
- <string name="root_recent" msgid="4470053704320518133">"Terkini"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> bebas"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Layanan penyimpanan"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Pintasan"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Perangkat"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Aplikasi lain"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Tampilkan perangkat lanjutan"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Tampilkan ukuran file"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Tampilkan ukuran perangkat"</string>
- <string name="empty" msgid="7858882803708117596">"Tidak ada item"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Tidak dapat membuka file"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Tidak dapat menghapus beberapa dokumen"</string>
- <string name="share_via" msgid="8966594246261344259">"Bagikan melalui"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-it/strings.xml b/packages/DocumentsUI/res/values-it/strings.xml
deleted file mode 100644
index 28323b6f0081..000000000000
--- a/packages/DocumentsUI/res/values-it/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Documenti"</string>
- <string name="title_open" msgid="4353228937663917801">"Apri da"</string>
- <string name="title_save" msgid="2433679664882857999">"Salva in"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Crea cartella"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Visualizzazione griglia"</string>
- <string name="menu_list" msgid="7279285939892417279">"Visualizzazione elenco"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Ordina per"</string>
- <string name="menu_search" msgid="3816712084502856974">"Cerca"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Impostazioni"</string>
- <string name="menu_open" msgid="432922957274920903">"Apri"</string>
- <string name="menu_save" msgid="2394743337684426338">"Salva"</string>
- <string name="menu_share" msgid="3075149983979628146">"Condividi"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Elimina"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> selezionati"</string>
- <string name="sort_name" msgid="9183560467917256779">"Per nome"</string>
- <string name="sort_date" msgid="586080032956151448">"Per data di modifica"</string>
- <string name="sort_size" msgid="3350681319735474741">"Per dimensioni"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Mostra nodi principali"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Nascondi nodi principali"</string>
- <string name="save_error" msgid="6167009778003223664">"Impossibile salvare il documento"</string>
- <string name="create_error" msgid="3735649141335444215">"Impossibile creare la cartella"</string>
- <string name="query_error" msgid="1222448261663503501">"Impossibile chiedere documenti"</string>
- <string name="root_recent" msgid="4470053704320518133">"Recente"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> liberi"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Servizi di archiviazione"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Scorciatoie"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Dispositivi"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Altre app"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Visualizza dispositivi avanzati"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Visualizza dimensioni file"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Visualizza dimensioni dispositivi"</string>
- <string name="empty" msgid="7858882803708117596">"Nessun articolo"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Impossibile aprire il file"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Impossibile eliminare alcuni documenti"</string>
- <string name="share_via" msgid="8966594246261344259">"Condividi via"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-iw/strings.xml b/packages/DocumentsUI/res/values-iw/strings.xml
deleted file mode 100644
index 712c0602b492..000000000000
--- a/packages/DocumentsUI/res/values-iw/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"מסמכים"</string>
- <string name="title_open" msgid="4353228937663917801">"פתח מ-"</string>
- <string name="title_save" msgid="2433679664882857999">"שמור ב-"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"צור תיקיה"</string>
- <string name="menu_grid" msgid="6878021334497835259">"תצוגת רשת"</string>
- <string name="menu_list" msgid="7279285939892417279">"תצוגת רשימה"</string>
- <string name="menu_sort" msgid="7677740407158414452">"מיין לפי"</string>
- <string name="menu_search" msgid="3816712084502856974">"חפש"</string>
- <string name="menu_settings" msgid="6008033148948428823">"הגדרות"</string>
- <string name="menu_open" msgid="432922957274920903">"פתח"</string>
- <string name="menu_save" msgid="2394743337684426338">"שמור"</string>
- <string name="menu_share" msgid="3075149983979628146">"שתף"</string>
- <string name="menu_delete" msgid="8138799623850614177">"מחק"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> נבחרו"</string>
- <string name="sort_name" msgid="9183560467917256779">"לפי שם"</string>
- <string name="sort_date" msgid="586080032956151448">"לפי תאריך שינוי"</string>
- <string name="sort_size" msgid="3350681319735474741">"לפי גודל"</string>
- <string name="drawer_open" msgid="4545466532430226949">"הצג שורשים"</string>
- <string name="drawer_close" msgid="7602734368552123318">"הסתר שורשים"</string>
- <string name="save_error" msgid="6167009778003223664">"שמירת המסמך נכשלה"</string>
- <string name="create_error" msgid="3735649141335444215">"יצירת התיקיה נכשלה"</string>
- <string name="query_error" msgid="1222448261663503501">"שאילתת המסמכים נכשלה"</string>
- <string name="root_recent" msgid="4470053704320518133">"מהזמן האחרון"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> של שטח פנוי"</string>
- <string name="root_type_service" msgid="2178854894416775409">"שירותי אחסון"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"קיצורי דרך"</string>
- <string name="root_type_device" msgid="7121342474653483538">"מכשירים"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"עוד אפליקציות"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"הצג מכשירים מתקדמים"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"הצג את גודל הקובץ"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"הצג את גודל המכשיר"</string>
- <string name="empty" msgid="7858882803708117596">"אין פריטים"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"לא ניתן לפתוח את הקובץ"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"לא ניתן למחוק חלק מהמסמכים"</string>
- <string name="share_via" msgid="8966594246261344259">"שתף באמצעות"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ja/strings.xml b/packages/DocumentsUI/res/values-ja/strings.xml
deleted file mode 100644
index 996496d377a0..000000000000
--- a/packages/DocumentsUI/res/values-ja/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"ドキュメント"</string>
- <string name="title_open" msgid="4353228937663917801">"次から開く:"</string>
- <string name="title_save" msgid="2433679664882857999">"次に保存:"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"フォルダを作成"</string>
- <string name="menu_grid" msgid="6878021334497835259">"グリッド表示"</string>
- <string name="menu_list" msgid="7279285939892417279">"リスト表示"</string>
- <string name="menu_sort" msgid="7677740407158414452">"並べ替え"</string>
- <string name="menu_search" msgid="3816712084502856974">"検索"</string>
- <string name="menu_settings" msgid="6008033148948428823">"設定"</string>
- <string name="menu_open" msgid="432922957274920903">"開く"</string>
- <string name="menu_save" msgid="2394743337684426338">"保存"</string>
- <string name="menu_share" msgid="3075149983979628146">"共有"</string>
- <string name="menu_delete" msgid="8138799623850614177">"削除"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g>件選択済み"</string>
- <string name="sort_name" msgid="9183560467917256779">"名前順"</string>
- <string name="sort_date" msgid="586080032956151448">"更新日順"</string>
- <string name="sort_size" msgid="3350681319735474741">"サイズ順"</string>
- <string name="drawer_open" msgid="4545466532430226949">"ルートを表示する"</string>
- <string name="drawer_close" msgid="7602734368552123318">"ルートを非表示にする"</string>
- <string name="save_error" msgid="6167009778003223664">"ドキュメントを保存できませんでした"</string>
- <string name="create_error" msgid="3735649141335444215">"フォルダを作成できませんでした"</string>
- <string name="query_error" msgid="1222448261663503501">"ドキュメントのクエリに失敗しました"</string>
- <string name="root_recent" msgid="4470053704320518133">"最近"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"空き容量: <xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="root_type_service" msgid="2178854894416775409">"ストレージサービス"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"ショートカット"</string>
- <string name="root_type_device" msgid="7121342474653483538">"端末"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"その他のアプリ"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"端末の詳細設定を表示"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"ファイルのサイズを表示"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"端末のサイズを表示"</string>
- <string name="empty" msgid="7858882803708117596">"アイテムがありません"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"ファイルを開けません"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"一部のドキュメントを削除できません"</string>
- <string name="share_via" msgid="8966594246261344259">"共有ツール"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ka-rGE/strings.xml b/packages/DocumentsUI/res/values-ka-rGE/strings.xml
deleted file mode 100644
index f3e1274850b2..000000000000
--- a/packages/DocumentsUI/res/values-ka-rGE/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"დოკუმენტები"</string>
- <string name="title_open" msgid="4353228937663917801">"გახსნა აქედან:"</string>
- <string name="title_save" msgid="2433679664882857999">"შენახვა აქ:"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"საქაღალდის შექმნა"</string>
- <string name="menu_grid" msgid="6878021334497835259">"ბადის ხედი"</string>
- <string name="menu_list" msgid="7279285939892417279">"სიის ხედი"</string>
- <string name="menu_sort" msgid="7677740407158414452">"სორტირება:"</string>
- <string name="menu_search" msgid="3816712084502856974">"ძიება"</string>
- <string name="menu_settings" msgid="6008033148948428823">"პარამეტრები"</string>
- <string name="menu_open" msgid="432922957274920903">"გახსნა"</string>
- <string name="menu_save" msgid="2394743337684426338">"შენახვა"</string>
- <string name="menu_share" msgid="3075149983979628146">"გაზიარება"</string>
- <string name="menu_delete" msgid="8138799623850614177">"წაშლა"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> მონიშნული"</string>
- <string name="sort_name" msgid="9183560467917256779">"სახელით"</string>
- <string name="sort_date" msgid="586080032956151448">"ცვლილების თარიღით"</string>
- <string name="sort_size" msgid="3350681319735474741">"ზომით"</string>
- <string name="drawer_open" msgid="4545466532430226949">"ფესვების ჩვენება"</string>
- <string name="drawer_close" msgid="7602734368552123318">"ფესვების დამალვა"</string>
- <string name="save_error" msgid="6167009778003223664">"დოკუმენტის შენახვა ვერ მოხერხდა"</string>
- <string name="create_error" msgid="3735649141335444215">"საქაღალდის შექმნა ვერ მოხერხდა"</string>
- <string name="query_error" msgid="1222448261663503501">"დოკუმენტებზე მოთხოვნა ვერ გაიგზავნა"</string>
- <string name="root_recent" msgid="4470053704320518133">"ბოლო"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> თავისუფალია"</string>
- <string name="root_type_service" msgid="2178854894416775409">"მეხსიერების სერვისები"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"მალსახმობები"</string>
- <string name="root_type_device" msgid="7121342474653483538">"მოწყობილობები"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"მეტი აპები"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"კომპლექსური მოწყობილობების ჩვენება"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"ფაილის ზომის ჩვენება"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"მოწყობილობის ზომის ჩვენება"</string>
- <string name="empty" msgid="7858882803708117596">"ერთეულები არ არის"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"ფაილის გახსნა ვერ ხერხდება"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"ზოგიერთი დოკუმენტის წაშლა ვერ ხერხდება"</string>
- <string name="share_via" msgid="8966594246261344259">"გაზიარება:"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-km-rKH/strings.xml b/packages/DocumentsUI/res/values-km-rKH/strings.xml
deleted file mode 100644
index 80f36984552c..000000000000
--- a/packages/DocumentsUI/res/values-km-rKH/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"ឯកសារ"</string>
- <string name="title_open" msgid="4353228937663917801">"បើក​ពី"</string>
- <string name="title_save" msgid="2433679664882857999">"រក្សា​ទុក​ទៅ"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"បង្កើត​ថត"</string>
- <string name="menu_grid" msgid="6878021334497835259">"ទិដ្ឋភាព​ក្រឡា"</string>
- <string name="menu_list" msgid="7279285939892417279">"ទិដ្ឋភាព​បញ្ជី"</string>
- <string name="menu_sort" msgid="7677740407158414452">"តម្រៀប​តាម"</string>
- <string name="menu_search" msgid="3816712084502856974">"ស្វែងរក"</string>
- <string name="menu_settings" msgid="6008033148948428823">"ការ​កំណត់"</string>
- <string name="menu_open" msgid="432922957274920903">"បើក"</string>
- <string name="menu_save" msgid="2394743337684426338">"រក្សាទុក"</string>
- <string name="menu_share" msgid="3075149983979628146">"ចែករំលែក"</string>
- <string name="menu_delete" msgid="8138799623850614177">"លុប"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"បាន​ជ្រើស <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"តាម​ឈ្មោះ"</string>
- <string name="sort_date" msgid="586080032956151448">"តាម​កាលបរិច្ឆេទ​បាន​កែប្រែ"</string>
- <string name="sort_size" msgid="3350681319735474741">"តាម​​ទំហំ"</string>
- <string name="drawer_open" msgid="4545466532430226949">"បង្ហាញ roots"</string>
- <string name="drawer_close" msgid="7602734368552123318">"លាក់ roots"</string>
- <string name="save_error" msgid="6167009778003223664">"បាន​បរាជ័យ​ក្នុង​ការ​រក្សា​ទុក​ឯកសារ"</string>
- <string name="create_error" msgid="3735649141335444215">"បាន​បរាជ័យ​ក្នុង​ការ​បង្កើត​ថត"</string>
- <string name="query_error" msgid="1222448261663503501">"បាន​បរាជ័យ​ក្នុង​ការ​​ច្រោះ​ឯកសារ"</string>
- <string name="root_recent" msgid="4470053704320518133">"ថ្មីៗ"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"ទំនេរ <xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="root_type_service" msgid="2178854894416775409">"សេវាកម្ម​ផ្ដល់​ឧបករណ៍​ផ្ទុក"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"ផ្លូវកាត់"</string>
- <string name="root_type_device" msgid="7121342474653483538">"ឧបករណ៍"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"កម្ម​វិធី​​ច្រើន​ទៀត"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"បង្ហាញ​ឧបករណ៍​កម្រិត​ខ្ពស់"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"បង្ហាញ​ទំហំ​ឯកសារ"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"បង្ហាញ​ទំហំ​ឧបករណ៍"</string>
- <string name="empty" msgid="7858882803708117596">"គ្មានធាតុ"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"មិន​អាច​បើក​ឯកសារ"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"មិន​អាច​លុប​ឯកសារ​មួយ​ចំនួន"</string>
- <string name="share_via" msgid="8966594246261344259">"ចែករំលែក​តាម"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ko/strings.xml b/packages/DocumentsUI/res/values-ko/strings.xml
deleted file mode 100644
index 2cd0d44b3d22..000000000000
--- a/packages/DocumentsUI/res/values-ko/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"문서"</string>
- <string name="title_open" msgid="4353228937663917801">"열기:"</string>
- <string name="title_save" msgid="2433679664882857999">"저장 위치:"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"폴더 만들기"</string>
- <string name="menu_grid" msgid="6878021334497835259">"바둑판식 보기"</string>
- <string name="menu_list" msgid="7279285939892417279">"목록 보기"</string>
- <string name="menu_sort" msgid="7677740407158414452">"정렬 기준"</string>
- <string name="menu_search" msgid="3816712084502856974">"검색"</string>
- <string name="menu_settings" msgid="6008033148948428823">"설정"</string>
- <string name="menu_open" msgid="432922957274920903">"열기"</string>
- <string name="menu_save" msgid="2394743337684426338">"저장"</string>
- <string name="menu_share" msgid="3075149983979628146">"공유"</string>
- <string name="menu_delete" msgid="8138799623850614177">"삭제"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g>개 선택됨"</string>
- <string name="sort_name" msgid="9183560467917256779">"이름순"</string>
- <string name="sort_date" msgid="586080032956151448">"수정된 날짜순"</string>
- <string name="sort_size" msgid="3350681319735474741">"크기순"</string>
- <string name="drawer_open" msgid="4545466532430226949">"루트 표시"</string>
- <string name="drawer_close" msgid="7602734368552123318">"루트 숨기기"</string>
- <string name="save_error" msgid="6167009778003223664">"문서 저장 실패"</string>
- <string name="create_error" msgid="3735649141335444215">"폴더를 만들지 못함"</string>
- <string name="query_error" msgid="1222448261663503501">"문서를 검색하지 못했습니다."</string>
- <string name="root_recent" msgid="4470053704320518133">"최근"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> 남음"</string>
- <string name="root_type_service" msgid="2178854894416775409">"저장용량 서비스"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"바로가기"</string>
- <string name="root_type_device" msgid="7121342474653483538">"기기"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"앱 더보기"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"고급 기기 표시"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"파일 크기 표시"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"기기 크기 표시"</string>
- <string name="empty" msgid="7858882803708117596">"항목 없음"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"파일을 열 수 없음"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"일부 문서를 삭제할 수 없음"</string>
- <string name="share_via" msgid="8966594246261344259">"공유 방법"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-lo-rLA/strings.xml b/packages/DocumentsUI/res/values-lo-rLA/strings.xml
deleted file mode 100644
index 9a6f32fe642b..000000000000
--- a/packages/DocumentsUI/res/values-lo-rLA/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"ເອ​ກະ​ສານ"</string>
- <string name="title_open" msgid="4353228937663917801">"ເປີດ​ຈາກ"</string>
- <string name="title_save" msgid="2433679664882857999">"ບັນທຶກໄປທີ່"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"ສ້າງໂຟນເດີ"</string>
- <string name="menu_grid" msgid="6878021334497835259">"ມຸມມອງແບບຊ່ອງ"</string>
- <string name="menu_list" msgid="7279285939892417279">"ມຸມມອງແບບລາຍຊື່"</string>
- <string name="menu_sort" msgid="7677740407158414452">"ຮຽງລຳດັບຕາມ"</string>
- <string name="menu_search" msgid="3816712084502856974">"ຊອກຫາ"</string>
- <string name="menu_settings" msgid="6008033148948428823">"ການຕັ້ງຄ່າ"</string>
- <string name="menu_open" msgid="432922957274920903">"ເປີດ"</string>
- <string name="menu_save" msgid="2394743337684426338">"ບັນທຶກ"</string>
- <string name="menu_share" msgid="3075149983979628146">"ແບ່ງປັນ"</string>
- <string name="menu_delete" msgid="8138799623850614177">"ລຶບ"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"ເລືອກແລ້ວ <xliff:g id="COUNT">%1$d</xliff:g> ລາຍການ"</string>
- <string name="sort_name" msgid="9183560467917256779">"ຕາມຊື່"</string>
- <string name="sort_date" msgid="586080032956151448">"ຕາມວັນທີທີ່ແກ້ໄຂ"</string>
- <string name="sort_size" msgid="3350681319735474741">"ຕາມຂະໜາດ"</string>
- <string name="drawer_open" msgid="4545466532430226949">"ສະແດງ roots"</string>
- <string name="drawer_close" msgid="7602734368552123318">"ເຊື່ອງ roots"</string>
- <string name="save_error" msgid="6167009778003223664">"ການບັນທຶກເອກະສານລົ້ມເຫລວ"</string>
- <string name="create_error" msgid="3735649141335444215">"ການ​ສ້າງ​ໂຟນ​ເດີລົ້ມເຫຼວ"</string>
- <string name="query_error" msgid="1222448261663503501">"ການຊອກຫາເອກະສານລົ້ມເຫຼວ"</string>
- <string name="root_recent" msgid="4470053704320518133">"ຫາກໍໃຊ້"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"ຟຣີ <xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="root_type_service" msgid="2178854894416775409">"ບໍລິການບ່ອນຈັດເກັບຂໍ້ມູນ"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"ທາງລັດ"</string>
- <string name="root_type_device" msgid="7121342474653483538">"ອຸປະກອນ"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"ແອັບຯອື່ນໆ"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"ສະແດງອຸປະກອນຂັ້ນສູງ"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"ສະແດງຂະໜາດໄຟລ໌"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"ສະແດງຂະໜາດອຸປະກອນ"</string>
- <string name="empty" msgid="7858882803708117596">"ບໍ່ມີລາຍການ"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"ບໍ່ສາມດາເປີດໄຟລ໌ໄດ້"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"ບໍ່ສາມາດລຶບບາງເອກະສານໄດ້"</string>
- <string name="share_via" msgid="8966594246261344259">"ແບ່ງປັນຜ່ານ"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-lt/strings.xml b/packages/DocumentsUI/res/values-lt/strings.xml
deleted file mode 100644
index f861b9967151..000000000000
--- a/packages/DocumentsUI/res/values-lt/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokumentai"</string>
- <string name="title_open" msgid="4353228937663917801">"Atidaryti iš"</string>
- <string name="title_save" msgid="2433679664882857999">"Išsaugoti į"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Kurti aplanką"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Tinklelio rodinys"</string>
- <string name="menu_list" msgid="7279285939892417279">"Sąrašo rodinys"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Rūšiuoti pagal"</string>
- <string name="menu_search" msgid="3816712084502856974">"Ieškoti"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Nustatymai"</string>
- <string name="menu_open" msgid="432922957274920903">"Atidaryti"</string>
- <string name="menu_save" msgid="2394743337684426338">"Išsaugoti"</string>
- <string name="menu_share" msgid="3075149983979628146">"Bendrinti"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Ištrinti"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"Pasirinkta: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"Pagal pavadinimą"</string>
- <string name="sort_date" msgid="586080032956151448">"Pagal keitimo datą"</string>
- <string name="sort_size" msgid="3350681319735474741">"Pagal dydį"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Rodyti šaknis"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Slėpti šaknis"</string>
- <string name="save_error" msgid="6167009778003223664">"Nepavyko išsaugoti dokumento"</string>
- <string name="create_error" msgid="3735649141335444215">"Nepavyko sukurti aplanko"</string>
- <string name="query_error" msgid="1222448261663503501">"Nepavyko pateikti dokumentų užklausų"</string>
- <string name="root_recent" msgid="4470053704320518133">"Naujausi"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"Laisvos vietos: <xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Saugyklos paslaugos"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Spartieji klavišai"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Įrenginiai"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Daugiau programų"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Rodyti išplėstinius įrenginius"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Rodyti failo dydį"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Rodyti įrenginio dydį"</string>
- <string name="empty" msgid="7858882803708117596">"Nėra elementų"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Nepavyksta atidaryti failo"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Nepavyko ištrinti kai kurių dokumentų"</string>
- <string name="share_via" msgid="8966594246261344259">"Bendrinti naudojant"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-lv/strings.xml b/packages/DocumentsUI/res/values-lv/strings.xml
deleted file mode 100644
index 651a59fe0d73..000000000000
--- a/packages/DocumentsUI/res/values-lv/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokumenti"</string>
- <string name="title_open" msgid="4353228937663917801">"Atvēršana no:"</string>
- <string name="title_save" msgid="2433679664882857999">"Saglabāšana:"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Izveidot mapi"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Režģis"</string>
- <string name="menu_list" msgid="7279285939892417279">"Saraksts"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Kārtot pēc"</string>
- <string name="menu_search" msgid="3816712084502856974">"Meklēt"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Iestatījumi"</string>
- <string name="menu_open" msgid="432922957274920903">"Atvērt"</string>
- <string name="menu_save" msgid="2394743337684426338">"Saglabāt"</string>
- <string name="menu_share" msgid="3075149983979628146">"Kopīgot"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Dzēst"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"Atlasīts: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"Pēc nosaukuma"</string>
- <string name="sort_date" msgid="586080032956151448">"Pēc pārveidošanas datuma"</string>
- <string name="sort_size" msgid="3350681319735474741">"Pēc lieluma"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Rādīt saknes"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Slēpt saknes"</string>
- <string name="save_error" msgid="6167009778003223664">"Neizdevās saglabāt dokumentu."</string>
- <string name="create_error" msgid="3735649141335444215">"Neizdevās izveidot mapi."</string>
- <string name="query_error" msgid="1222448261663503501">"Neizdevās atrast vaicājumā norādītos dokumentus."</string>
- <string name="root_recent" msgid="4470053704320518133">"Pēdējie"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"Brīva vieta: <xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Glabāšanas pakalpojumi"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Saīsnes"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Ierīces"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Vairāk lietotņu"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Attēlot papildu ierīces"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Attēlot faila lielumu"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Attēlot ierīces izmēru"</string>
- <string name="empty" msgid="7858882803708117596">"Nav vienumu"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Nevar atvērt failu."</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Nevar dzēst dažus dokumentus."</string>
- <string name="share_via" msgid="8966594246261344259">"Kopīgot, izmantojot"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-mn-rMN/strings.xml b/packages/DocumentsUI/res/values-mn-rMN/strings.xml
deleted file mode 100644
index 22c9fcd8f428..000000000000
--- a/packages/DocumentsUI/res/values-mn-rMN/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Документүүд"</string>
- <string name="title_open" msgid="4353228937663917801">"Нээх"</string>
- <string name="title_save" msgid="2433679664882857999">"Хадгалах"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Фолдер үүсгэх"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Эгнүүлж харах"</string>
- <string name="menu_list" msgid="7279285939892417279">"Жагсааж харах"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Эрэмбэлэх"</string>
- <string name="menu_search" msgid="3816712084502856974">"Хайх"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Тохиргоо"</string>
- <string name="menu_open" msgid="432922957274920903">"Нээх"</string>
- <string name="menu_save" msgid="2394743337684426338">"Хадгалах"</string>
- <string name="menu_share" msgid="3075149983979628146">"Хуваалцах"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Устгах"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> сонгогдсон"</string>
- <string name="sort_name" msgid="9183560467917256779">"Нэрээр"</string>
- <string name="sort_date" msgid="586080032956151448">"Өөрчлөгдсөн огноогоор"</string>
- <string name="sort_size" msgid="3350681319735474741">"Хэмжээгээр"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Язгуурыг харуулах"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Язгуурыг нууцлах"</string>
- <string name="save_error" msgid="6167009778003223664">"Документыг хадгалж чадсангүй"</string>
- <string name="create_error" msgid="3735649141335444215">"Фолдер үүсгэж чадсангүй"</string>
- <string name="query_error" msgid="1222448261663503501">"Документын хүсэлт гаргаж чадсангүй"</string>
- <string name="root_recent" msgid="4470053704320518133">"Саяхны"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> чөлөөтэй"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Сангийн үйлчилгээ"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Товчлол"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Төхөөрөмжүүд"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Өөр апп-ууд"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Дэвшилтэт төхөөрөмжүүдийг харуулах"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Файлын хэмжээг харуулах"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Төхөөрөмжийн хэмжээг харуулах"</string>
- <string name="empty" msgid="7858882803708117596">"Хоосон"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Файлыг нээх боломжгүй"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Зарим документуудыг устгах боломжгүй"</string>
- <string name="share_via" msgid="8966594246261344259">"Дараахаар дамжуулан хуваалцах"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-mn/strings.xml b/packages/DocumentsUI/res/values-mn/strings.xml
deleted file mode 100644
index 66637b8fc315..000000000000
--- a/packages/DocumentsUI/res/values-mn/strings.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Документүүд"</string>
- <string name="title_open" msgid="4353228937663917801">"Нээх"</string>
- <string name="title_save" msgid="2433679664882857999">"Хадгалах"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Фолдер үүсгэх"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Эгнүүлж харах"</string>
- <string name="menu_list" msgid="7279285939892417279">"Жагсааж харах"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Эрэмбэлэх"</string>
- <string name="menu_search" msgid="3816712084502856974">"Хайх"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Тохиргоо"</string>
- <string name="menu_open" msgid="432922957274920903">"Нээх"</string>
- <string name="menu_save" msgid="2394743337684426338">"Хадгалах"</string>
- <string name="menu_share" msgid="3075149983979628146">"Хуваалцах"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Устгах"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> сонгогдсон"</string>
- <string name="sort_name" msgid="9183560467917256779">"Нэрээр"</string>
- <string name="sort_date" msgid="586080032956151448">"Өөрчлөгдсөн огноогоор"</string>
- <string name="sort_size" msgid="3350681319735474741">"Хэмжээгээр"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Язгуурыг харуулах"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Язгуурыг нууцлах"</string>
- <string name="save_error" msgid="6167009778003223664">"Документыг хадгалж чадсангүй"</string>
- <string name="root_recent" msgid="4470053704320518133">"Саяхны"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> чөлөөтэй"</string>
- <string name="root_type_service" msgid="2857362700576006694">"Үйлчилгээнүүд"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Товчлол"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Төхөөрөмжүүд"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Өөр апп-ууд"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Дэвшилтэт төхөөрөмжүүдийг харуулах"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Файлын хэмжээг харуулах"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Төхөөрөмжийн хэмжээг харуулах"</string>
- <string name="empty" msgid="7858882803708117596">"Хоосон"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Файлыг нээх боломжгүй"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Зарим документуудыг устгах боломжгүй"</string>
- <string name="more" msgid="7117420986529297171">"Цааш"</string>
- <string name="loading" msgid="7933681260296021180">"Ачааллаж байна..."</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ms-rMY/strings.xml b/packages/DocumentsUI/res/values-ms-rMY/strings.xml
deleted file mode 100644
index 7e09c57b1f86..000000000000
--- a/packages/DocumentsUI/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokumen"</string>
- <string name="title_open" msgid="4353228937663917801">"Buka dari"</string>
- <string name="title_save" msgid="2433679664882857999">"Simpan ke"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Buat folder"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Paparan grid"</string>
- <string name="menu_list" msgid="7279285939892417279">"Paparan senarai"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Isih mengikut"</string>
- <string name="menu_search" msgid="3816712084502856974">"Cari"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Tetapan"</string>
- <string name="menu_open" msgid="432922957274920903">"Buka"</string>
- <string name="menu_save" msgid="2394743337684426338">"Simpan"</string>
- <string name="menu_share" msgid="3075149983979628146">"Kongsi"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Padam"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> dipilih"</string>
- <string name="sort_name" msgid="9183560467917256779">"Mengikut nama"</string>
- <string name="sort_date" msgid="586080032956151448">"Diubah suai mengikut tarikh"</string>
- <string name="sort_size" msgid="3350681319735474741">"Mengikut saiz"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Tunjukkan akar"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Sembunyikan akar"</string>
- <string name="save_error" msgid="6167009778003223664">"Gagal menyimpan dokumen"</string>
- <string name="create_error" msgid="3735649141335444215">"Gagal membuat folder"</string>
- <string name="query_error" msgid="1222448261663503501">"Gagal menanyakan dokumen"</string>
- <string name="root_recent" msgid="4470053704320518133">"Terbaharu"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> kosong"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Perkhidmatan storan"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Pintasan"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Peranti"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Lebih banyak apl"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Paparkan peranti terperinci"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Paparkan saiz fail"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Paparkan saiz peranti"</string>
- <string name="empty" msgid="7858882803708117596">"Tiada item"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Tidak dapat membuka fail"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Tidak dapat memadam beberapa dokumen"</string>
- <string name="share_via" msgid="8966594246261344259">"Kongsi melalui"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-nb/strings.xml b/packages/DocumentsUI/res/values-nb/strings.xml
deleted file mode 100644
index 8831bd833232..000000000000
--- a/packages/DocumentsUI/res/values-nb/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokumenter"</string>
- <string name="title_open" msgid="4353228937663917801">"Åpne fra"</string>
- <string name="title_save" msgid="2433679664882857999">"Lagre i"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Opprett en mappe"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Rutenettvisning"</string>
- <string name="menu_list" msgid="7279285939892417279">"Listevisning"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Sortér etter"</string>
- <string name="menu_search" msgid="3816712084502856974">"Søk"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Innstillinger"</string>
- <string name="menu_open" msgid="432922957274920903">"Åpne"</string>
- <string name="menu_save" msgid="2394743337684426338">"Lagre"</string>
- <string name="menu_share" msgid="3075149983979628146">"Del"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Slett"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> valgt"</string>
- <string name="sort_name" msgid="9183560467917256779">"Etter navn"</string>
- <string name="sort_date" msgid="586080032956151448">"«Etter dato» endret"</string>
- <string name="sort_size" msgid="3350681319735474741">"Etter størrelse"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Vis røtter"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Skjul røtter"</string>
- <string name="save_error" msgid="6167009778003223664">"Kunne ikke lagre dokumentet"</string>
- <string name="create_error" msgid="3735649141335444215">"Kunne ikke opprette mappen"</string>
- <string name="query_error" msgid="1222448261663503501">"Kunne ikke undersøke dokumenter"</string>
- <string name="root_recent" msgid="4470053704320518133">"Siste"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> gratis"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Lagringstjenester"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Snarveier"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Enheter"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Flere apper"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Vis avanserte enheter"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Vis filstørrelse"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Vis enhetsstørrelse"</string>
- <string name="empty" msgid="7858882803708117596">"Ingen elementer"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Kan ikke åpne filen"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Enkelte dokumenter kunne ikke slettes"</string>
- <string name="share_via" msgid="8966594246261344259">"Del via"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ne-rNP/strings.xml b/packages/DocumentsUI/res/values-ne-rNP/strings.xml
deleted file mode 100644
index d2606df8d6df..000000000000
--- a/packages/DocumentsUI/res/values-ne-rNP/strings.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"कागजातहरू"</string>
- <string name="title_open" msgid="4353228937663917801">"यसबाट खोल्नुहोस्"</string>
- <string name="title_save" msgid="2433679664882857999">"यसमा सुरक्षित गर्नुहोस्"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"फोल्डर सिर्जना गर्नुहोस्"</string>
- <string name="menu_grid" msgid="6878021334497835259">"ग्रिड दृश्य"</string>
- <string name="menu_list" msgid="7279285939892417279">"सूची दृश्य"</string>
- <string name="menu_sort" msgid="7677740407158414452">"यसद्वारा क्रमवद्घ गर्नुहोस्"</string>
- <string name="menu_search" msgid="3816712084502856974">"खोज्नुहोस्"</string>
- <string name="menu_settings" msgid="6008033148948428823">"सेटिङहरू"</string>
- <string name="menu_open" msgid="432922957274920903">"खोल्नुहोस्"</string>
- <string name="menu_save" msgid="2394743337684426338">"सुरक्षित गर्नुहोस्"</string>
- <string name="menu_share" msgid="3075149983979628146">"साझेदारी गर्नुहोस्"</string>
- <string name="menu_delete" msgid="8138799623850614177">"मेटाउनुहोस्"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> चयन गरियो"</string>
- <string name="sort_name" msgid="9183560467917256779">"नाम अनुसार"</string>
- <string name="sort_date" msgid="586080032956151448">"परिमार्जित मिति अनुसार"</string>
- <string name="sort_size" msgid="3350681319735474741">"आकार अनुसार"</string>
- <string name="drawer_open" msgid="4545466532430226949">"मूलहरू देखाउनुहोस्"</string>
- <string name="drawer_close" msgid="7602734368552123318">"मूलहरू लुकाउनुहोस्"</string>
- <string name="save_error" msgid="6167009778003223664">"कागजात सुरक्षित गर्न विफल भयो"</string>
- <string name="root_recent" msgid="4470053704320518133">"हालैको"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> खाली"</string>
- <!-- no translation found for root_type_service (2178854894416775409) -->
- <skip />
- <string name="root_type_shortcut" msgid="3318760609471618093">"सर्टकटहरू"</string>
- <string name="root_type_device" msgid="7121342474653483538">"उपकरणहरू"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"थप अनुप्रयोगहरू"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"उन्नत उपकरणहरू प्रदर्शन गर्नुहोस्"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"फाइल आकार प्रदर्शन गर्नुहोस्"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"उपकरण आकार प्रदर्शन गर्नुहोस्"</string>
- <string name="empty" msgid="7858882803708117596">"कुनै वस्तु छैन।"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"फाइल खोल्न सक्दैन"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"केही कागजातहरू मेट्न असमर्थ छ"</string>
- <string name="share_via" msgid="8966594246261344259">"माध्यमबाट साझेदारी गर्नुहोस्"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-nl/strings.xml b/packages/DocumentsUI/res/values-nl/strings.xml
deleted file mode 100644
index 08862e8e3052..000000000000
--- a/packages/DocumentsUI/res/values-nl/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Documenten"</string>
- <string name="title_open" msgid="4353228937663917801">"Openen vanuit"</string>
- <string name="title_save" msgid="2433679664882857999">"Opslaan in"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Map maken"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Rasterweergave"</string>
- <string name="menu_list" msgid="7279285939892417279">"Lijstweergave"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Sorteren op"</string>
- <string name="menu_search" msgid="3816712084502856974">"Zoeken"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Instellingen"</string>
- <string name="menu_open" msgid="432922957274920903">"Openen"</string>
- <string name="menu_save" msgid="2394743337684426338">"Opslaan"</string>
- <string name="menu_share" msgid="3075149983979628146">"Delen"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Verwijderen"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> geselecteerd"</string>
- <string name="sort_name" msgid="9183560467917256779">"Op naam"</string>
- <string name="sort_date" msgid="586080032956151448">"Op aanpassingsdatum"</string>
- <string name="sort_size" msgid="3350681319735474741">"Op grootte"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Roots weergeven"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Roots verbergen"</string>
- <string name="save_error" msgid="6167009778003223664">"Kan document niet opslaan"</string>
- <string name="create_error" msgid="3735649141335444215">"Kan map niet maken"</string>
- <string name="query_error" msgid="1222448261663503501">"Kan geen query\'s voor documenten verzenden"</string>
- <string name="root_recent" msgid="4470053704320518133">"Recent"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> vrij"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Opslagservices"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Sneltoetsen"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Apparaten"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Meer apps"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Geavanceerde apparaten weergeven"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Bestandsgrootte weergeven"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Apparaatgrootte weergeven"</string>
- <string name="empty" msgid="7858882803708117596">"Geen items"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Kan bestand niet openen"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Kan bepaalde documenten niet verwijderen"</string>
- <string name="share_via" msgid="8966594246261344259">"Delen via"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-pl/strings.xml b/packages/DocumentsUI/res/values-pl/strings.xml
deleted file mode 100644
index f4e55826ed97..000000000000
--- a/packages/DocumentsUI/res/values-pl/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokumenty"</string>
- <string name="title_open" msgid="4353228937663917801">"Otwórz z"</string>
- <string name="title_save" msgid="2433679664882857999">"Zapisz w"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Utwórz folder"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Widok siatki"</string>
- <string name="menu_list" msgid="7279285939892417279">"Widok listy"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Sortuj według"</string>
- <string name="menu_search" msgid="3816712084502856974">"Szukaj"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Ustawienia"</string>
- <string name="menu_open" msgid="432922957274920903">"Otwórz"</string>
- <string name="menu_save" msgid="2394743337684426338">"Zapisz"</string>
- <string name="menu_share" msgid="3075149983979628146">"Udostępnij"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Usuń"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"Wybrano: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"Według nazwy"</string>
- <string name="sort_date" msgid="586080032956151448">"Według daty edycji"</string>
- <string name="sort_size" msgid="3350681319735474741">"Według rozmiaru"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Pokaż elementy główne"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Ukryj elementy główne"</string>
- <string name="save_error" msgid="6167009778003223664">"Nie udało się zapisać dokumentu"</string>
- <string name="create_error" msgid="3735649141335444215">"Nie udało się utworzyć folderu"</string>
- <string name="query_error" msgid="1222448261663503501">"Nie udało się pobrać listy dokumentów"</string>
- <string name="root_recent" msgid="4470053704320518133">"Ostatnie"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> wolne"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Usługi pamięci masowej"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Skróty"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Urządzenia"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Więcej aplikacji"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Wyświetl urządzenia zaawansowane"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Wyświetl rozmiar pliku"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Wyświetl rozmiar urządzenia"</string>
- <string name="empty" msgid="7858882803708117596">"Brak elementów"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Nie można otworzyć pliku"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Nie można usunąć niektórych dokumentów"</string>
- <string name="share_via" msgid="8966594246261344259">"Udostępnij przez"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-pt-rPT/strings.xml b/packages/DocumentsUI/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 1c1ba8bc28e2..000000000000
--- a/packages/DocumentsUI/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Documentos"</string>
- <string name="title_open" msgid="4353228937663917801">"Abrir de"</string>
- <string name="title_save" msgid="2433679664882857999">"Guardar em"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Criar pasta"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Vista de grelha"</string>
- <string name="menu_list" msgid="7279285939892417279">"Vista de lista"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Ordenar por"</string>
- <string name="menu_search" msgid="3816712084502856974">"Pesquisar"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Definições"</string>
- <string name="menu_open" msgid="432922957274920903">"Abrir"</string>
- <string name="menu_save" msgid="2394743337684426338">"Guardar"</string>
- <string name="menu_share" msgid="3075149983979628146">"Partilhar"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Eliminar"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> selecionado(s)"</string>
- <string name="sort_name" msgid="9183560467917256779">"Por nome"</string>
- <string name="sort_date" msgid="586080032956151448">"Por data de modificação"</string>
- <string name="sort_size" msgid="3350681319735474741">"Por tamanho"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Mostrar raízes"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Ocultar raízes"</string>
- <string name="save_error" msgid="6167009778003223664">"Falha ao guardar o documento"</string>
- <string name="create_error" msgid="3735649141335444215">"Falha ao criar a pasta"</string>
- <string name="query_error" msgid="1222448261663503501">"Falha ao consultar os documentos"</string>
- <string name="root_recent" msgid="4470053704320518133">"Recentes"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> espaço livre"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Serv. de armazenamento"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Atalhos"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Dispositivos"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Mais aplicações"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Apresentar dispositivos avançados"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Apresentar tamanho do ficheiro"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Apresentar tamanho do dispositivo"</string>
- <string name="empty" msgid="7858882803708117596">"Sem itens"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Não é possível abrir o ficheiro"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Não é possível eliminar alguns documentos"</string>
- <string name="share_via" msgid="8966594246261344259">"Partilhar através de"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-pt/strings.xml b/packages/DocumentsUI/res/values-pt/strings.xml
deleted file mode 100644
index 78fcaf8c9d08..000000000000
--- a/packages/DocumentsUI/res/values-pt/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Documentos"</string>
- <string name="title_open" msgid="4353228937663917801">"Abrir de"</string>
- <string name="title_save" msgid="2433679664882857999">"Salvar em"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Criar pasta"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Visualização em grade"</string>
- <string name="menu_list" msgid="7279285939892417279">"Visualização em lista"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Classificar por"</string>
- <string name="menu_search" msgid="3816712084502856974">"Pesquisar"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Configurações"</string>
- <string name="menu_open" msgid="432922957274920903">"Abrir"</string>
- <string name="menu_save" msgid="2394743337684426338">"Salvar"</string>
- <string name="menu_share" msgid="3075149983979628146">"Compartilhar"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Excluir"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> selecionados"</string>
- <string name="sort_name" msgid="9183560467917256779">"Por nome"</string>
- <string name="sort_date" msgid="586080032956151448">"Por data de modificação"</string>
- <string name="sort_size" msgid="3350681319735474741">"Por tamanho"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Mostrar raízes"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Ocultar raízes"</string>
- <string name="save_error" msgid="6167009778003223664">"Falha ao salvar o documento"</string>
- <string name="create_error" msgid="3735649141335444215">"Falha ao criar a pasta"</string>
- <string name="query_error" msgid="1222448261663503501">"Falha ao consultar documentos"</string>
- <string name="root_recent" msgid="4470053704320518133">"Recentes"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> livres"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Serviços de armazenamento"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Atalhos"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Dispositivos"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Mais aplicativos"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Mostrar dispositivos avançados"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Mostrar tamanho do arquivo"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Mostrar tamanho do dispositivo"</string>
- <string name="empty" msgid="7858882803708117596">"Nenhum item"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Não é possível abrir o arquivo"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Não foi possível excluir alguns documentos"</string>
- <string name="share_via" msgid="8966594246261344259">"Compartilhar via"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ro/strings.xml b/packages/DocumentsUI/res/values-ro/strings.xml
deleted file mode 100644
index 5fd44c896e40..000000000000
--- a/packages/DocumentsUI/res/values-ro/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Documente"</string>
- <string name="title_open" msgid="4353228937663917801">"Deschideți din"</string>
- <string name="title_save" msgid="2433679664882857999">"Salvați în"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Creați un dosar"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Afișare tip grilă"</string>
- <string name="menu_list" msgid="7279285939892417279">"Afișare tip listă"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Sortați după"</string>
- <string name="menu_search" msgid="3816712084502856974">"Căutați"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Setări"</string>
- <string name="menu_open" msgid="432922957274920903">"Deschideți"</string>
- <string name="menu_save" msgid="2394743337684426338">"Salvați"</string>
- <string name="menu_share" msgid="3075149983979628146">"Distribuiți"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Ștergeți"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> selectate"</string>
- <string name="sort_name" msgid="9183560467917256779">"După nume"</string>
- <string name="sort_date" msgid="586080032956151448">"După data modificării"</string>
- <string name="sort_size" msgid="3350681319735474741">"După dimensiune"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Afișați directoarele rădăcină"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Ascundeți directoarele rădăcină"</string>
- <string name="save_error" msgid="6167009778003223664">"Salvarea documentului nu a reușit"</string>
- <string name="create_error" msgid="3735649141335444215">"Eroare la crearea dosarului"</string>
- <string name="query_error" msgid="1222448261663503501">"Interogarea referitoare la documente nu a reușit"</string>
- <string name="root_recent" msgid="4470053704320518133">"Recente"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> spațiu liber"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Servicii de stocare"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Comenzi rapide"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Dispozitive"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Alte aplicații"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Afișați dispozitive avansate"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Afișați dimensiunile fișierelor"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Afișați capacitatea de stocare a dispozitivelor"</string>
- <string name="empty" msgid="7858882803708117596">"Nu există elemente"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Fișierul nu poate fi deschis"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Unele documente nu au putut fi șterse"</string>
- <string name="share_via" msgid="8966594246261344259">"Distribuiți prin"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ru/strings.xml b/packages/DocumentsUI/res/values-ru/strings.xml
deleted file mode 100644
index 85fd70e03ba6..000000000000
--- a/packages/DocumentsUI/res/values-ru/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Документы"</string>
- <string name="title_open" msgid="4353228937663917801">"Открыть"</string>
- <string name="title_save" msgid="2433679664882857999">"Сохранить"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Новая папка"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Таблица"</string>
- <string name="menu_list" msgid="7279285939892417279">"Список"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Сортировать"</string>
- <string name="menu_search" msgid="3816712084502856974">"Поиск"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Настройки"</string>
- <string name="menu_open" msgid="432922957274920903">"Открыть"</string>
- <string name="menu_save" msgid="2394743337684426338">"Сохранить"</string>
- <string name="menu_share" msgid="3075149983979628146">"Поделиться"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Удалить"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"Выбрано: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"По названию"</string>
- <string name="sort_date" msgid="586080032956151448">"По дате изменения"</string>
- <string name="sort_size" msgid="3350681319735474741">"По размеру"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Показать"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Скрыть"</string>
- <string name="save_error" msgid="6167009778003223664">"Не удалось сохранить документ"</string>
- <string name="create_error" msgid="3735649141335444215">"Не удалось создать папку"</string>
- <string name="query_error" msgid="1222448261663503501">"Не удалось отправить запрос"</string>
- <string name="root_recent" msgid="4470053704320518133">"Недавние"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"Свободно <xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Службы хранения"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Ярлыки"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Устройства"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Другие приложения"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Показать другие устройства"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Показать размер файла"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Показать размер устройства"</string>
- <string name="empty" msgid="7858882803708117596">"Ничего нет"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Не удалось открыть файл"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Не удалось удалить некоторые документы"</string>
- <string name="share_via" msgid="8966594246261344259">"Поделиться"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-si-rLK/strings.xml b/packages/DocumentsUI/res/values-si-rLK/strings.xml
deleted file mode 100644
index 6263b824e6c3..000000000000
--- a/packages/DocumentsUI/res/values-si-rLK/strings.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"ලේඛන"</string>
- <string name="title_open" msgid="4353228937663917801">"විවෘත වන්නේ"</string>
- <string name="title_save" msgid="2433679664882857999">"සුරකින්නේ"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"ෆෝල්ඩරයක් සාදන්න"</string>
- <string name="menu_grid" msgid="6878021334497835259">"ජාල පෙනුම"</string>
- <string name="menu_list" msgid="7279285939892417279">"ලැයිස්තු පෙනුම"</string>
- <string name="menu_sort" msgid="7677740407158414452">"අනුපිළිවෙලට සකසා ඇත්තේ"</string>
- <string name="menu_search" msgid="3816712084502856974">"සෙවීම"</string>
- <string name="menu_settings" msgid="6008033148948428823">"සැකසීම්"</string>
- <string name="menu_open" msgid="432922957274920903">"විවෘත කරන්න"</string>
- <string name="menu_save" msgid="2394743337684426338">"සුරකින්න"</string>
- <string name="menu_share" msgid="3075149983979628146">"බෙදාගන්න"</string>
- <string name="menu_delete" msgid="8138799623850614177">"මකන්න"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> ක් තෝරාගන්නා ලදි"</string>
- <string name="sort_name" msgid="9183560467917256779">"නමින්"</string>
- <string name="sort_date" msgid="586080032956151448">"වෙනස් කරන ලද දිනයෙන්"</string>
- <string name="sort_size" msgid="3350681319735474741">"ප්‍රමාණය මගින්"</string>
- <string name="drawer_open" msgid="4545466532430226949">"මුල් පෙන්වන්න"</string>
- <string name="drawer_close" msgid="7602734368552123318">"මුල් සඟවන්න"</string>
- <string name="save_error" msgid="6167009778003223664">"ලේඛනය සුරැකීමට අපොහොසත් විය"</string>
- <string name="root_recent" msgid="4470053704320518133">"මෑත"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ඉතිරියි"</string>
- <!-- no translation found for root_type_service (2178854894416775409) -->
- <skip />
- <string name="root_type_shortcut" msgid="3318760609471618093">"කෙටිමං"</string>
- <string name="root_type_device" msgid="7121342474653483538">"උපාංග"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"තවත් යෙදුම්"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"උසස් උපාංග දර්ශනය කරන්න"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"ගොනු ප්‍රමාණය දර්ශනය කරන්න"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"උපාංග ප්‍රමාණය දර්ශනය කරන්න"</string>
- <string name="empty" msgid="7858882803708117596">"අයිතම නැත"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"ගොනුව විවෘත කළ නොහැක"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"සමහර ලේඛන මැකීමට නොහැකි විය"</string>
- <string name="share_via" msgid="8966594246261344259">"හරහා බෙදාගන්න"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sk/strings.xml b/packages/DocumentsUI/res/values-sk/strings.xml
deleted file mode 100644
index 2a96b1a6de8a..000000000000
--- a/packages/DocumentsUI/res/values-sk/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokumenty"</string>
- <string name="title_open" msgid="4353228937663917801">"Otvoriť z"</string>
- <string name="title_save" msgid="2433679664882857999">"Uložiť do"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Vytvoriť priečinok"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Zobrazenie mriežky"</string>
- <string name="menu_list" msgid="7279285939892417279">"Zobrazenie zoznamu"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Zoradiť podľa"</string>
- <string name="menu_search" msgid="3816712084502856974">"Hľadať"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Nastavenia"</string>
- <string name="menu_open" msgid="432922957274920903">"Otvoriť"</string>
- <string name="menu_save" msgid="2394743337684426338">"Uložiť"</string>
- <string name="menu_share" msgid="3075149983979628146">"Zdieľať"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Odstrániť"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"Vybraté: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"Podľa názvu"</string>
- <string name="sort_date" msgid="586080032956151448">"Podľa dátumu zmeny"</string>
- <string name="sort_size" msgid="3350681319735474741">"Podľa veľkosti"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Zobraziť korene"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Skryť korene"</string>
- <string name="save_error" msgid="6167009778003223664">"Dokument sa nepodarilo uložiť"</string>
- <string name="create_error" msgid="3735649141335444215">"Priečinok sa nepodarilo vytvoriť"</string>
- <string name="query_error" msgid="1222448261663503501">"Zoznam dokumentov sa nepodarilo načítať"</string>
- <string name="root_recent" msgid="4470053704320518133">"Nedávne"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"Voľné: <xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Služby úložiska"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Skratky"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Zariadenia"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Ďalšie aplikácie"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Zobraziť rozšírené zariadenia"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Zobraziť veľkosť súboru"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Zobraziť veľkosť zariadenia"</string>
- <string name="empty" msgid="7858882803708117596">"Žiadne položky"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Súbor sa nepodarilo otvoriť"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Niektoré dokumenty sa nepodarilo odstrániť"</string>
- <string name="share_via" msgid="8966594246261344259">"Zdieľať pomocou"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sl/strings.xml b/packages/DocumentsUI/res/values-sl/strings.xml
deleted file mode 100644
index f984a0a1a782..000000000000
--- a/packages/DocumentsUI/res/values-sl/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokumenti"</string>
- <string name="title_open" msgid="4353228937663917801">"Odpiranje iz"</string>
- <string name="title_save" msgid="2433679664882857999">"Shranjevanje v"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Ustvarjanje mape"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Mrežni pogled"</string>
- <string name="menu_list" msgid="7279285939892417279">"Pogled seznama"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Razvrsti glede na"</string>
- <string name="menu_search" msgid="3816712084502856974">"Iskanje"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Nastavitve"</string>
- <string name="menu_open" msgid="432922957274920903">"Odpri"</string>
- <string name="menu_save" msgid="2394743337684426338">"Shrani"</string>
- <string name="menu_share" msgid="3075149983979628146">"Skupna raba"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Izbriši"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"Št. izbranih: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"Po imenu"</string>
- <string name="sort_date" msgid="586080032956151448">"Po datumu spremembe"</string>
- <string name="sort_size" msgid="3350681319735474741">"Po velikosti"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Pokaži korene"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Skrij korene"</string>
- <string name="save_error" msgid="6167009778003223664">"Dokumenta ni bilo mogoče shraniti"</string>
- <string name="create_error" msgid="3735649141335444215">"Mape ni bilo mogoče ustvariti"</string>
- <string name="query_error" msgid="1222448261663503501">"Poizvedba za dokumente ni uspela"</string>
- <string name="root_recent" msgid="4470053704320518133">"Nedavno"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"Prosto: <xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Storitve shrambe"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Bližnjice"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Naprave"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Več aplikacij"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Prikaz naprednih naprav"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Prikaz velikosti datoteke"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Prikaz velikosti naprave"</string>
- <string name="empty" msgid="7858882803708117596">"Ni elementov"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Datoteke ni mogoče odpreti"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Nekaterih dokumentov ni mogoče izbrisati"</string>
- <string name="share_via" msgid="8966594246261344259">"Deli z drugimi prek"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sr/strings.xml b/packages/DocumentsUI/res/values-sr/strings.xml
deleted file mode 100644
index eb0b19796802..000000000000
--- a/packages/DocumentsUI/res/values-sr/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Документи"</string>
- <string name="title_open" msgid="4353228937663917801">"Отвори са"</string>
- <string name="title_save" msgid="2433679664882857999">"Сачувај у"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Направи директоријум"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Приказ мреже"</string>
- <string name="menu_list" msgid="7279285939892417279">"Приказ листе"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Сортирај према"</string>
- <string name="menu_search" msgid="3816712084502856974">"Претражи"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Подешавања"</string>
- <string name="menu_open" msgid="432922957274920903">"Отвори"</string>
- <string name="menu_save" msgid="2394743337684426338">"Сачувај"</string>
- <string name="menu_share" msgid="3075149983979628146">"Дели"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Избриши"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"Изабрано је <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"Према имену"</string>
- <string name="sort_date" msgid="586080032956151448">"Према датуму измене"</string>
- <string name="sort_size" msgid="3350681319735474741">"Према величини"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Прикажи основне елементе"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Сакриј основне елементе"</string>
- <string name="save_error" msgid="6167009778003223664">"Чување документа није успело"</string>
- <string name="create_error" msgid="3735649141335444215">"Директоријум није направљен"</string>
- <string name="query_error" msgid="1222448261663503501">"Слање упита за документе није успело"</string>
- <string name="root_recent" msgid="4470053704320518133">"Недавно"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"Слободно је <xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Услуге складиштења"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Пречице"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Уређаји"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Још апликација"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Прикажи напредне уређаје"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Прикажи величину датотеке"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Прикажи величину уређаја"</string>
- <string name="empty" msgid="7858882803708117596">"Нема ставки"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Није могуће отворити датотеку"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Није могуће избрисати неке документе"</string>
- <string name="share_via" msgid="8966594246261344259">"Делите преко"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sv/strings.xml b/packages/DocumentsUI/res/values-sv/strings.xml
deleted file mode 100644
index 7aa5c501f4b1..000000000000
--- a/packages/DocumentsUI/res/values-sv/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokument"</string>
- <string name="title_open" msgid="4353228937663917801">"Öppna från"</string>
- <string name="title_save" msgid="2433679664882857999">"Spara till"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Skapa mapp"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Rutnätsvy"</string>
- <string name="menu_list" msgid="7279285939892417279">"Listvy"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Sortera efter"</string>
- <string name="menu_search" msgid="3816712084502856974">"Sök"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Inställningar"</string>
- <string name="menu_open" msgid="432922957274920903">"Öppna"</string>
- <string name="menu_save" msgid="2394743337684426338">"Spara"</string>
- <string name="menu_share" msgid="3075149983979628146">"Dela"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Ta bort"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"Har valt <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"Efter namn"</string>
- <string name="sort_date" msgid="586080032956151448">"Efter ändringsdatum"</string>
- <string name="sort_size" msgid="3350681319735474741">"Efter storlek"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Visa rötter"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Dölj rötter"</string>
- <string name="save_error" msgid="6167009778003223664">"Det gick inte att spara dokumentet"</string>
- <string name="create_error" msgid="3735649141335444215">"Det gick inte att skapa mappen"</string>
- <string name="query_error" msgid="1222448261663503501">"Det gick inte att söka efter dokument"</string>
- <string name="root_recent" msgid="4470053704320518133">"Senaste"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ledigt"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Lagringstjänster"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Genvägar"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Enheter"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Fler appar"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Visa avancerade enheter"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Visa filstorlek"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Bildskärmsstorlek"</string>
- <string name="empty" msgid="7858882803708117596">"Inga objekt"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Det går inte att öppna filen"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Det gick inte att ta bort vissa dokument"</string>
- <string name="share_via" msgid="8966594246261344259">"Dela via"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sw/strings.xml b/packages/DocumentsUI/res/values-sw/strings.xml
deleted file mode 100644
index 299fda717cef..000000000000
--- a/packages/DocumentsUI/res/values-sw/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Hati"</string>
- <string name="title_open" msgid="4353228937663917801">"Fungua kutoka"</string>
- <string name="title_save" msgid="2433679664882857999">"Hifadhi kwenye"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Unda folda"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Mwonekano gridi"</string>
- <string name="menu_list" msgid="7279285939892417279">"Mwonekano orodha"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Panga kwa"</string>
- <string name="menu_search" msgid="3816712084502856974">"Utafutaji"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Mipangilio"</string>
- <string name="menu_open" msgid="432922957274920903">"Fungua"</string>
- <string name="menu_save" msgid="2394743337684426338">"Hifadhi"</string>
- <string name="menu_share" msgid="3075149983979628146">"Shiriki"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Futa"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> zimechaguliwa"</string>
- <string name="sort_name" msgid="9183560467917256779">"Kwa jina"</string>
- <string name="sort_date" msgid="586080032956151448">"Kwa tarehe viliporekebishwa"</string>
- <string name="sort_size" msgid="3350681319735474741">"Kwa ukubwa"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Onyesha usuli"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Ficha usuli"</string>
- <string name="save_error" msgid="6167009778003223664">"Imeshindwa kuhifadhi hati"</string>
- <string name="create_error" msgid="3735649141335444215">"Ilishindwa kuunda folda"</string>
- <string name="query_error" msgid="1222448261663503501">"Ilishindwa kuhoji hati"</string>
- <string name="root_recent" msgid="4470053704320518133">"Hivi karibuni"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> bila malipo"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Huduma za hifadhi"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Njia za mkato"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Vifaa"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Programu zaidi"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Onyesha vifaa mahiri"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Onyesha ukubwa wa faili"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Onyesha ukubwa wa kifaa"</string>
- <string name="empty" msgid="7858882803708117596">"Hakuna vipengee"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Haiwezi kufungua faili"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Imeshindwa kufuta baadhi ya hati"</string>
- <string name="share_via" msgid="8966594246261344259">"Shiriki kupitia"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-th/strings.xml b/packages/DocumentsUI/res/values-th/strings.xml
deleted file mode 100644
index 6ac88105c466..000000000000
--- a/packages/DocumentsUI/res/values-th/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"เอกสาร"</string>
- <string name="title_open" msgid="4353228937663917801">"เปิดจาก"</string>
- <string name="title_save" msgid="2433679664882857999">"บันทึกไปยัง"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"สร้างโฟลเดอร์"</string>
- <string name="menu_grid" msgid="6878021334497835259">"มุมมองตาราง"</string>
- <string name="menu_list" msgid="7279285939892417279">"มุมมองรายการ"</string>
- <string name="menu_sort" msgid="7677740407158414452">"จัดเรียงตาม"</string>
- <string name="menu_search" msgid="3816712084502856974">"ค้นหา"</string>
- <string name="menu_settings" msgid="6008033148948428823">"การตั้งค่า"</string>
- <string name="menu_open" msgid="432922957274920903">"เปิด"</string>
- <string name="menu_save" msgid="2394743337684426338">"บันทึก"</string>
- <string name="menu_share" msgid="3075149983979628146">"แชร์"</string>
- <string name="menu_delete" msgid="8138799623850614177">"ลบ"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"เลือกไว้ <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"ตามชื่อ"</string>
- <string name="sort_date" msgid="586080032956151448">"ตามวันที่ที่ปรับเปลี่ยน"</string>
- <string name="sort_size" msgid="3350681319735474741">"ตามขนาด"</string>
- <string name="drawer_open" msgid="4545466532430226949">"แสดงราก"</string>
- <string name="drawer_close" msgid="7602734368552123318">"ซ่อนราก"</string>
- <string name="save_error" msgid="6167009778003223664">"การบันทึกเอกสารล้มเหลว"</string>
- <string name="create_error" msgid="3735649141335444215">"การสร้างโฟลเดอร์ล้มเหลว"</string>
- <string name="query_error" msgid="1222448261663503501">"การค้นหาเอกสารล้มเหลว"</string>
- <string name="root_recent" msgid="4470053704320518133">"ล่าสุด"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"ว่าง <xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="root_type_service" msgid="2178854894416775409">"บริการที่เก็บข้อมูล"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"ทางลัด"</string>
- <string name="root_type_device" msgid="7121342474653483538">"อุปกรณ์"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"แอปเพิ่มเติม"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"แสดงอุปกรณ์ขั้นสูง"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"แสดงขนาดของไฟล์"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"แสดงขนาดของอุปกรณ์"</string>
- <string name="empty" msgid="7858882803708117596">"ไม่มีรายการ"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"ไม่สามารถเปิดไฟล์ได้"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"ไม่สามารถลบเอกสารบางรายการ"</string>
- <string name="share_via" msgid="8966594246261344259">"แชร์ผ่าน"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-tl/strings.xml b/packages/DocumentsUI/res/values-tl/strings.xml
deleted file mode 100644
index e0fd8c85413e..000000000000
--- a/packages/DocumentsUI/res/values-tl/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Mga Dokumento"</string>
- <string name="title_open" msgid="4353228937663917801">"Buksan mula sa"</string>
- <string name="title_save" msgid="2433679664882857999">"I-save sa"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Gumawa ng folder"</string>
- <string name="menu_grid" msgid="6878021334497835259">"View ng grid"</string>
- <string name="menu_list" msgid="7279285939892417279">"View ng listahan"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Pag-uri-uriin ayon sa"</string>
- <string name="menu_search" msgid="3816712084502856974">"Maghanap"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Mga Setting"</string>
- <string name="menu_open" msgid="432922957274920903">"Buksan"</string>
- <string name="menu_save" msgid="2394743337684426338">"I-save"</string>
- <string name="menu_share" msgid="3075149983979628146">"Ibahagi"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Tanggalin"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> ang pinili"</string>
- <string name="sort_name" msgid="9183560467917256779">"Ayon sa pangalan"</string>
- <string name="sort_date" msgid="586080032956151448">"Ayon sa petsa ng pagbago"</string>
- <string name="sort_size" msgid="3350681319735474741">"Ayon sa laki"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Ipakita ang mga root"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Itago ang mga root"</string>
- <string name="save_error" msgid="6167009778003223664">"Hindi na-save ang dokumento"</string>
- <string name="create_error" msgid="3735649141335444215">"Hindi nagawa ang folder"</string>
- <string name="query_error" msgid="1222448261663503501">"Hindi na-query ang mga dokumento"</string>
- <string name="root_recent" msgid="4470053704320518133">"Kamakailan"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ang libre"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Mga serbisyo ng storage"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Mga Shortcut"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Mga Device"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Higit pang apps"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Ipakita ang mga advanced na device"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Ipakita ang laki ng file"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Ipakita ang laki ng device"</string>
- <string name="empty" msgid="7858882803708117596">"Walang mga item"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Hindi mabuksan ang file"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Hindi matanggal ang ilang dokumento"</string>
- <string name="share_via" msgid="8966594246261344259">"Ibahagi sa pamamagitan ng"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-tr/strings.xml b/packages/DocumentsUI/res/values-tr/strings.xml
deleted file mode 100644
index 699a5cda9807..000000000000
--- a/packages/DocumentsUI/res/values-tr/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Dokümanlar"</string>
- <string name="title_open" msgid="4353228937663917801">"Şuradan aç:"</string>
- <string name="title_save" msgid="2433679664882857999">"Şuraya kaydet:"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Klasör oluştur"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Tablo görünümü"</string>
- <string name="menu_list" msgid="7279285939892417279">"Liste görünümü"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Sıralama ölçütü"</string>
- <string name="menu_search" msgid="3816712084502856974">"Ara"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Ayarlar"</string>
- <string name="menu_open" msgid="432922957274920903">"Aç"</string>
- <string name="menu_save" msgid="2394743337684426338">"Kaydet"</string>
- <string name="menu_share" msgid="3075149983979628146">"Paylaş"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Sil"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> tane seçildi"</string>
- <string name="sort_name" msgid="9183560467917256779">"Ada göre"</string>
- <string name="sort_date" msgid="586080032956151448">"Değişiklik tarihine göre"</string>
- <string name="sort_size" msgid="3350681319735474741">"Boyuta göre"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Kökleri göster"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Kökleri sakla"</string>
- <string name="save_error" msgid="6167009778003223664">"Doküman kaydedilemedi"</string>
- <string name="create_error" msgid="3735649141335444215">"Klasör oluşturulamadı"</string>
- <string name="query_error" msgid="1222448261663503501">"Dokümanlar sorgulanamadı"</string>
- <string name="root_recent" msgid="4470053704320518133">"En son"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> boş"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Depolama hizmetleri"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Kısayollar"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Cihazlar"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Diğer uygulamalar"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Gelişmiş cihazları göster"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Dosya boyutunu göster"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Cihaz boyutunu göster"</string>
- <string name="empty" msgid="7858882803708117596">"Öğe yok"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Dosya açılamıyor"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Bazı dokümanlar silinemiyor"</string>
- <string name="share_via" msgid="8966594246261344259">"Şunu kullanarak paylaş:"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-uk/strings.xml b/packages/DocumentsUI/res/values-uk/strings.xml
deleted file mode 100644
index f87b6a27f18c..000000000000
--- a/packages/DocumentsUI/res/values-uk/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Документи"</string>
- <string name="title_open" msgid="4353228937663917801">"Відкрити в"</string>
- <string name="title_save" msgid="2433679664882857999">"Зберегти в"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Створити папку"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Режим таблиці"</string>
- <string name="menu_list" msgid="7279285939892417279">"Режим списку"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Параметри сортування"</string>
- <string name="menu_search" msgid="3816712084502856974">"Пошук"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Налаштування"</string>
- <string name="menu_open" msgid="432922957274920903">"Відкрити"</string>
- <string name="menu_save" msgid="2394743337684426338">"Зберегти"</string>
- <string name="menu_share" msgid="3075149983979628146">"Поділитися"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Видалити"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"Вибрано <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"За назвою"</string>
- <string name="sort_date" msgid="586080032956151448">"За датою змінення"</string>
- <string name="sort_size" msgid="3350681319735474741">"За розміром"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Показати кореневі каталоги"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Сховати кореневі каталоги"</string>
- <string name="save_error" msgid="6167009778003223664">"Не вдалося зберегти документ"</string>
- <string name="create_error" msgid="3735649141335444215">"Помилка створення папки"</string>
- <string name="query_error" msgid="1222448261663503501">"Помилка надсилання запиту на документи"</string>
- <string name="root_recent" msgid="4470053704320518133">"Останні"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> вільного місця"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Онлайн-сховища"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Ярлики"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Пристрої"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Інші програми"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Показати покращені пристрої"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Показати розмір файлу"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Показати розмір пристрою"</string>
- <string name="empty" msgid="7858882803708117596">"Немає елементів"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Не вдалося відкрити файл"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Не вдалося видалити деякі документи"</string>
- <string name="share_via" msgid="8966594246261344259">"Надіслати через"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-vi/strings.xml b/packages/DocumentsUI/res/values-vi/strings.xml
deleted file mode 100644
index 41e29fa9e9b9..000000000000
--- a/packages/DocumentsUI/res/values-vi/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Tài liệu"</string>
- <string name="title_open" msgid="4353228937663917801">"Mở từ"</string>
- <string name="title_save" msgid="2433679664882857999">"Lưu vào"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Tạo thư mục"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Chế độ xem lưới"</string>
- <string name="menu_list" msgid="7279285939892417279">"Chế độ xem danh sách"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Sắp xếp theo"</string>
- <string name="menu_search" msgid="3816712084502856974">"Tìm kiếm"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Cài đặt"</string>
- <string name="menu_open" msgid="432922957274920903">"Mở"</string>
- <string name="menu_save" msgid="2394743337684426338">"Lưu"</string>
- <string name="menu_share" msgid="3075149983979628146">"Chia sẻ"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Xóa"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"Đã chọn <xliff:g id="COUNT">%1$d</xliff:g>"</string>
- <string name="sort_name" msgid="9183560467917256779">"Theo tên"</string>
- <string name="sort_date" msgid="586080032956151448">"Theo ngày sửa đổi"</string>
- <string name="sort_size" msgid="3350681319735474741">"Theo kích thước"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Hiển thị gốc"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Ẩn gốc"</string>
- <string name="save_error" msgid="6167009778003223664">"Không lưu tài liệu được"</string>
- <string name="create_error" msgid="3735649141335444215">"Không thể tạo thư mục"</string>
- <string name="query_error" msgid="1222448261663503501">"Không truy vấn được tài liệu"</string>
- <string name="root_recent" msgid="4470053704320518133">"Gần đây"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> còn trống"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Dịch vụ lưu trữ"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Lối tắt"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Thiết bị"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Các ứng dụng khác"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Hiển thị các thiết bị nâng cao"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Hiển thị kích thước tệp"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Hiển thị kích thước thiết bị"</string>
- <string name="empty" msgid="7858882803708117596">"Không có mục nào"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Không thể mở tệp"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Không thể xóa một số tài liệu"</string>
- <string name="share_via" msgid="8966594246261344259">"Chia sẻ qua"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-zh-rCN/strings.xml b/packages/DocumentsUI/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 742cda7e3eb4..000000000000
--- a/packages/DocumentsUI/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"文档"</string>
- <string name="title_open" msgid="4353228937663917801">"打开文件"</string>
- <string name="title_save" msgid="2433679664882857999">"保存文件"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"新建文件夹"</string>
- <string name="menu_grid" msgid="6878021334497835259">"网格视图"</string>
- <string name="menu_list" msgid="7279285939892417279">"列表视图"</string>
- <string name="menu_sort" msgid="7677740407158414452">"排序依据"</string>
- <string name="menu_search" msgid="3816712084502856974">"搜索"</string>
- <string name="menu_settings" msgid="6008033148948428823">"设置"</string>
- <string name="menu_open" msgid="432922957274920903">"打开"</string>
- <string name="menu_save" msgid="2394743337684426338">"保存"</string>
- <string name="menu_share" msgid="3075149983979628146">"分享"</string>
- <string name="menu_delete" msgid="8138799623850614177">"删除"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"已选择<xliff:g id="COUNT">%1$d</xliff:g>项"</string>
- <string name="sort_name" msgid="9183560467917256779">"按名称"</string>
- <string name="sort_date" msgid="586080032956151448">"按修改日期"</string>
- <string name="sort_size" msgid="3350681319735474741">"按大小"</string>
- <string name="drawer_open" msgid="4545466532430226949">"显示根目录"</string>
- <string name="drawer_close" msgid="7602734368552123318">"隐藏根目录"</string>
- <string name="save_error" msgid="6167009778003223664">"无法保存文档"</string>
- <string name="create_error" msgid="3735649141335444215">"无法创建文件夹"</string>
- <string name="query_error" msgid="1222448261663503501">"无法查询文档"</string>
- <string name="root_recent" msgid="4470053704320518133">"最近"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"可用空间:<xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="root_type_service" msgid="2178854894416775409">"存储服务"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"捷径"</string>
- <string name="root_type_device" msgid="7121342474653483538">"设备"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"更多应用"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"显示高级设备"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"显示文件大小"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"显示设备大小"</string>
- <string name="empty" msgid="7858882803708117596">"无任何文件"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"无法打开文件"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"无法删除部分文档"</string>
- <string name="share_via" msgid="8966594246261344259">"分享方式"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-zh-rHK/strings.xml b/packages/DocumentsUI/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 67ed58738e7e..000000000000
--- a/packages/DocumentsUI/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"文件"</string>
- <string name="title_open" msgid="4353228937663917801">"開啟自"</string>
- <string name="title_save" msgid="2433679664882857999">"儲存至"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"建立資料夾"</string>
- <string name="menu_grid" msgid="6878021334497835259">"格狀檢視"</string>
- <string name="menu_list" msgid="7279285939892417279">"清單檢視"</string>
- <string name="menu_sort" msgid="7677740407158414452">"排序方式"</string>
- <string name="menu_search" msgid="3816712084502856974">"搜尋"</string>
- <string name="menu_settings" msgid="6008033148948428823">"設定"</string>
- <string name="menu_open" msgid="432922957274920903">"開啟"</string>
- <string name="menu_save" msgid="2394743337684426338">"儲存"</string>
- <string name="menu_share" msgid="3075149983979628146">"分享"</string>
- <string name="menu_delete" msgid="8138799623850614177">"刪除"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"已選取 <xliff:g id="COUNT">%1$d</xliff:g> 個"</string>
- <string name="sort_name" msgid="9183560467917256779">"按名稱"</string>
- <string name="sort_date" msgid="586080032956151448">"按修改日期"</string>
- <string name="sort_size" msgid="3350681319735474741">"按大小"</string>
- <string name="drawer_open" msgid="4545466532430226949">"顯示根目錄"</string>
- <string name="drawer_close" msgid="7602734368552123318">"隱藏根目錄"</string>
- <string name="save_error" msgid="6167009778003223664">"無法儲存文件"</string>
- <string name="create_error" msgid="3735649141335444215">"無法建立資料夾"</string>
- <string name="query_error" msgid="1222448261663503501">"無法查詢文件"</string>
- <string name="root_recent" msgid="4470053704320518133">"近期用過"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"可用空間:<xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="root_type_service" msgid="2178854894416775409">"儲存空間服務"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"捷徑"</string>
- <string name="root_type_device" msgid="7121342474653483538">"裝置"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"更多應用程式"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"顯示進階裝置"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"顯示檔案大小"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"顯示裝置大小"</string>
- <string name="empty" msgid="7858882803708117596">"沒有項目"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"無法開啟檔案"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"無法刪除部分文件"</string>
- <string name="share_via" msgid="8966594246261344259">"分享方式:"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-zh-rTW/strings.xml b/packages/DocumentsUI/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 269583a7f038..000000000000
--- a/packages/DocumentsUI/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"文件"</string>
- <string name="title_open" msgid="4353228937663917801">"開啟工具"</string>
- <string name="title_save" msgid="2433679664882857999">"儲存至"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"建立資料夾"</string>
- <string name="menu_grid" msgid="6878021334497835259">"格狀檢視"</string>
- <string name="menu_list" msgid="7279285939892417279">"清單檢視"</string>
- <string name="menu_sort" msgid="7677740407158414452">"排序依據"</string>
- <string name="menu_search" msgid="3816712084502856974">"搜尋"</string>
- <string name="menu_settings" msgid="6008033148948428823">"設定"</string>
- <string name="menu_open" msgid="432922957274920903">"開啟"</string>
- <string name="menu_save" msgid="2394743337684426338">"儲存"</string>
- <string name="menu_share" msgid="3075149983979628146">"共用"</string>
- <string name="menu_delete" msgid="8138799623850614177">"刪除"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"已選取 <xliff:g id="COUNT">%1$d</xliff:g> 個項目"</string>
- <string name="sort_name" msgid="9183560467917256779">"依名稱"</string>
- <string name="sort_date" msgid="586080032956151448">"依修改日期"</string>
- <string name="sort_size" msgid="3350681319735474741">"依大小"</string>
- <string name="drawer_open" msgid="4545466532430226949">"顯示根目錄"</string>
- <string name="drawer_close" msgid="7602734368552123318">"隱藏根目錄"</string>
- <string name="save_error" msgid="6167009778003223664">"無法儲存文件"</string>
- <string name="create_error" msgid="3735649141335444215">"無法建立資料夾"</string>
- <string name="query_error" msgid="1222448261663503501">"無法查詢文件"</string>
- <string name="root_recent" msgid="4470053704320518133">"最近使用過的項目"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"可用空間:<xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="root_type_service" msgid="2178854894416775409">"儲存空間服務"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"捷徑"</string>
- <string name="root_type_device" msgid="7121342474653483538">"裝置"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"更多應用程式"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"顯示進階裝置"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"顯示檔案大小"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"顯示裝置大小"</string>
- <string name="empty" msgid="7858882803708117596">"沒有項目"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"無法開啟檔案"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"無法刪除部分文件"</string>
- <string name="share_via" msgid="8966594246261344259">"分享方式:"</string>
-</resources>
diff --git a/packages/DocumentsUI/res/values-zu/strings.xml b/packages/DocumentsUI/res/values-zu/strings.xml
deleted file mode 100644
index bedd2cdf8ede..000000000000
--- a/packages/DocumentsUI/res/values-zu/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="2783841764617238354">"Amadokhumenti"</string>
- <string name="title_open" msgid="4353228937663917801">"Vula kusuka ku-"</string>
- <string name="title_save" msgid="2433679664882857999">"Londoloza ku-"</string>
- <string name="menu_create_dir" msgid="5947289605844398389">"Dala ifolda"</string>
- <string name="menu_grid" msgid="6878021334497835259">"Ukubuka kwegridi"</string>
- <string name="menu_list" msgid="7279285939892417279">"Ukubuka uhlu"</string>
- <string name="menu_sort" msgid="7677740407158414452">"Hlunga nge-"</string>
- <string name="menu_search" msgid="3816712084502856974">"Sesha"</string>
- <string name="menu_settings" msgid="6008033148948428823">"Izilungiselelo"</string>
- <string name="menu_open" msgid="432922957274920903">"Vula"</string>
- <string name="menu_save" msgid="2394743337684426338">"Londoloza"</string>
- <string name="menu_share" msgid="3075149983979628146">"Yabelana"</string>
- <string name="menu_delete" msgid="8138799623850614177">"Susa"</string>
- <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> okukhethiwe"</string>
- <string name="sort_name" msgid="9183560467917256779">"Ngegama"</string>
- <string name="sort_date" msgid="586080032956151448">"Ngedethi yokuguqula"</string>
- <string name="sort_size" msgid="3350681319735474741">"Ngosayizi"</string>
- <string name="drawer_open" msgid="4545466532430226949">"Bonisa izimpande"</string>
- <string name="drawer_close" msgid="7602734368552123318">"Fihla izimpande"</string>
- <string name="save_error" msgid="6167009778003223664">"Yehlulekile ukulondoloza idokhumenti"</string>
- <string name="create_error" msgid="3735649141335444215">"Yehlulekile ukudala ifolda"</string>
- <string name="query_error" msgid="1222448261663503501">"Ihlulekile ukubuza amadokhumenti"</string>
- <string name="root_recent" msgid="4470053704320518133">"Okwakamuva"</string>
- <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> okhululekile"</string>
- <string name="root_type_service" msgid="2178854894416775409">"Amasevisi wesitoreji"</string>
- <string name="root_type_shortcut" msgid="3318760609471618093">"Izinqamuleli"</string>
- <string name="root_type_device" msgid="7121342474653483538">"Amadivayisi"</string>
- <string name="root_type_apps" msgid="8838065367985945189">"Izinhlelo zokusebenza eziningi"</string>
- <string name="pref_advanced_devices" msgid="903257239609301276">"Bonisa amadivayisi aphakeme"</string>
- <string name="pref_file_size" msgid="2826879315743961459">"Bonisa usayizi wefayela"</string>
- <string name="pref_device_size" msgid="3542106883278997222">"Bonisa usayizi wedivayisi"</string>
- <string name="empty" msgid="7858882803708117596">"Azikho izinto"</string>
- <string name="toast_no_application" msgid="1339885974067891667">"Ayikwazi ukuvula ifayela"</string>
- <string name="toast_failed_delete" msgid="2180678019407244069">"Ayikwazi ukususa amanye amadokhumenti"</string>
- <string name="share_via" msgid="8966594246261344259">"Yabelana nge-"</string>
-</resources>
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java b/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java
index f6b43c744934..f1dca1d618a6 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java
@@ -40,7 +40,6 @@ import com.android.documentsui.DocumentsActivity.State;
import com.android.documentsui.model.RootInfo;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.Objects;
import com.google.android.collect.Lists;
import com.google.android.collect.Sets;
import com.google.common.collect.ArrayListMultimap;
@@ -51,6 +50,7 @@ import libcore.io.IoUtils;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
+import java.util.Objects;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -295,7 +295,7 @@ public class RootsCache {
private RootInfo getRootLocked(String authority, String rootId) {
for (RootInfo root : mRoots.get(authority)) {
- if (Objects.equal(root.rootId, rootId)) {
+ if (Objects.equals(root.rootId, rootId)) {
return root;
}
}
@@ -308,7 +308,7 @@ public class RootsCache {
synchronized (mLock) {
final int rootIcon = root.derivedIcon != 0 ? root.derivedIcon : root.icon;
for (RootInfo test : mRoots.get(root.authority)) {
- if (Objects.equal(test.rootId, root.rootId)) {
+ if (Objects.equals(test.rootId, root.rootId)) {
continue;
}
final int testIcon = test.derivedIcon != 0 ? test.derivedIcon : test.icon;
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java b/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java
index 931dac9f31b8..923c79c06a14 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java
@@ -46,13 +46,13 @@ import android.widget.TextView;
import com.android.documentsui.DocumentsActivity.State;
import com.android.documentsui.model.DocumentInfo;
import com.android.documentsui.model.RootInfo;
-import com.android.internal.util.Objects;
import com.google.common.collect.Lists;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
+import java.util.Objects;
/**
* Display list of known storage backend roots.
@@ -157,7 +157,7 @@ public class RootsFragment extends Fragment {
final Object item = mAdapter.getItem(i);
if (item instanceof RootItem) {
final RootInfo testRoot = ((RootItem) item).root;
- if (Objects.equal(testRoot, root)) {
+ if (Objects.equals(testRoot, root)) {
mList.setItemChecked(i, true);
return;
}
diff --git a/packages/ExternalStorageProvider/res/values-am/strings.xml b/packages/ExternalStorageProvider/res/values-am/strings.xml
deleted file mode 100644
index 230fb066e783..000000000000
--- a/packages/ExternalStorageProvider/res/values-am/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"ውጫዊ ማከማቻ"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"ውስጣዊ ማከማቻ"</string>
- <string name="root_documents" msgid="4051252304075469250">"ሰነዶች"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-ar/strings.xml b/packages/ExternalStorageProvider/res/values-ar/strings.xml
deleted file mode 100644
index b20a0563bd01..000000000000
--- a/packages/ExternalStorageProvider/res/values-ar/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"وحدة تخزين خارجية"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"وحدة تخزين داخلية"</string>
- <string name="root_documents" msgid="4051252304075469250">"مستندات"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-bg/strings.xml b/packages/ExternalStorageProvider/res/values-bg/strings.xml
deleted file mode 100644
index f5dce3189393..000000000000
--- a/packages/ExternalStorageProvider/res/values-bg/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Външно хранилище"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Вътрешно хранилище"</string>
- <string name="root_documents" msgid="4051252304075469250">"Документи"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-ca/strings.xml b/packages/ExternalStorageProvider/res/values-ca/strings.xml
deleted file mode 100644
index 15e9d4604a8b..000000000000
--- a/packages/ExternalStorageProvider/res/values-ca/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Emmagatzematge extern"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Emmagatzematge intern"</string>
- <string name="root_documents" msgid="4051252304075469250">"Documents"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-cs/strings.xml b/packages/ExternalStorageProvider/res/values-cs/strings.xml
deleted file mode 100644
index b68a928e8a6c..000000000000
--- a/packages/ExternalStorageProvider/res/values-cs/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Externí úložiště"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Interní úložiště"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokumenty"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-da/strings.xml b/packages/ExternalStorageProvider/res/values-da/strings.xml
deleted file mode 100644
index a9ecb691d727..000000000000
--- a/packages/ExternalStorageProvider/res/values-da/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Ekstern lagring"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Intern lagring"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokumenter"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-de/strings.xml b/packages/ExternalStorageProvider/res/values-de/strings.xml
deleted file mode 100644
index 318634a2ee22..000000000000
--- a/packages/ExternalStorageProvider/res/values-de/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Externer Speicher"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Interner Speicher"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokumente"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-el/strings.xml b/packages/ExternalStorageProvider/res/values-el/strings.xml
deleted file mode 100644
index b3aa792521bc..000000000000
--- a/packages/ExternalStorageProvider/res/values-el/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Εξωτερικός αποθηκευτικός χώρος"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Εσωτερικός αποθηκευτικός χώρος"</string>
- <string name="root_documents" msgid="4051252304075469250">"Έγγραφα"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-en-rGB/strings.xml b/packages/ExternalStorageProvider/res/values-en-rGB/strings.xml
deleted file mode 100644
index f88eb9e32044..000000000000
--- a/packages/ExternalStorageProvider/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"External Storage"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Internal storage"</string>
- <string name="root_documents" msgid="4051252304075469250">"Documents"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-en-rIN/strings.xml b/packages/ExternalStorageProvider/res/values-en-rIN/strings.xml
deleted file mode 100644
index f88eb9e32044..000000000000
--- a/packages/ExternalStorageProvider/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"External Storage"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Internal storage"</string>
- <string name="root_documents" msgid="4051252304075469250">"Documents"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-es-rUS/strings.xml b/packages/ExternalStorageProvider/res/values-es-rUS/strings.xml
deleted file mode 100644
index e7e38b56e1b2..000000000000
--- a/packages/ExternalStorageProvider/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Almacenamiento externo"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Almacenamiento interno"</string>
- <string name="root_documents" msgid="4051252304075469250">"Documentos"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-es/strings.xml b/packages/ExternalStorageProvider/res/values-es/strings.xml
deleted file mode 100644
index e7e38b56e1b2..000000000000
--- a/packages/ExternalStorageProvider/res/values-es/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Almacenamiento externo"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Almacenamiento interno"</string>
- <string name="root_documents" msgid="4051252304075469250">"Documentos"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-et-rEE/strings.xml b/packages/ExternalStorageProvider/res/values-et-rEE/strings.xml
deleted file mode 100644
index 6824e9d7d637..000000000000
--- a/packages/ExternalStorageProvider/res/values-et-rEE/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Väline talletusruum"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Sisemine salvestusruum"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokumendid"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-fa/strings.xml b/packages/ExternalStorageProvider/res/values-fa/strings.xml
deleted file mode 100644
index 8471fc7e0463..000000000000
--- a/packages/ExternalStorageProvider/res/values-fa/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"فضای ذخیره خارجی"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"حافظهٔ داخلی"</string>
- <string name="root_documents" msgid="4051252304075469250">"اسناد"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-fi/strings.xml b/packages/ExternalStorageProvider/res/values-fi/strings.xml
deleted file mode 100644
index 9d1fbaac24c2..000000000000
--- a/packages/ExternalStorageProvider/res/values-fi/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Ulkoinen tallennustila"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Sisäinen tallennustila"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokumentit"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-fr-rCA/strings.xml b/packages/ExternalStorageProvider/res/values-fr-rCA/strings.xml
deleted file mode 100644
index b3fdd48416e7..000000000000
--- a/packages/ExternalStorageProvider/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Stockage externe"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Mémoire de stockage interne"</string>
- <string name="root_documents" msgid="4051252304075469250">"Documents"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-fr/strings.xml b/packages/ExternalStorageProvider/res/values-fr/strings.xml
deleted file mode 100644
index b3fdd48416e7..000000000000
--- a/packages/ExternalStorageProvider/res/values-fr/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Stockage externe"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Mémoire de stockage interne"</string>
- <string name="root_documents" msgid="4051252304075469250">"Documents"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-hi/strings.xml b/packages/ExternalStorageProvider/res/values-hi/strings.xml
deleted file mode 100644
index 1227bd4eabd5..000000000000
--- a/packages/ExternalStorageProvider/res/values-hi/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"बाहरी संग्रहण"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"मोबाइल संग्रहण"</string>
- <string name="root_documents" msgid="4051252304075469250">"दस्तावेज़"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-hr/strings.xml b/packages/ExternalStorageProvider/res/values-hr/strings.xml
deleted file mode 100644
index a74f8e87288d..000000000000
--- a/packages/ExternalStorageProvider/res/values-hr/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Vanjska pohrana"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Unutarnja pohrana"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokumenti"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-hu/strings.xml b/packages/ExternalStorageProvider/res/values-hu/strings.xml
deleted file mode 100644
index 3f72b418f289..000000000000
--- a/packages/ExternalStorageProvider/res/values-hu/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Külső tárhely"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Belső tárhely"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokumentumok"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-hy-rAM/strings.xml b/packages/ExternalStorageProvider/res/values-hy-rAM/strings.xml
deleted file mode 100644
index 5360124566ae..000000000000
--- a/packages/ExternalStorageProvider/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Արտաքին պահոց"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Ներքին պահոց"</string>
- <string name="root_documents" msgid="4051252304075469250">"Փաստաթղթեր"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-in/strings.xml b/packages/ExternalStorageProvider/res/values-in/strings.xml
deleted file mode 100644
index 42acde7b8e32..000000000000
--- a/packages/ExternalStorageProvider/res/values-in/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Penyimpanan Eksternal"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Penyimpanan internal"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokumen"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-it/strings.xml b/packages/ExternalStorageProvider/res/values-it/strings.xml
deleted file mode 100644
index 957b5ffe22e7..000000000000
--- a/packages/ExternalStorageProvider/res/values-it/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Archivio esterno"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Memoria interna"</string>
- <string name="root_documents" msgid="4051252304075469250">"Documenti"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-iw/strings.xml b/packages/ExternalStorageProvider/res/values-iw/strings.xml
deleted file mode 100644
index 775506a79df2..000000000000
--- a/packages/ExternalStorageProvider/res/values-iw/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"אחסון חיצוני"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"אחסון פנימי"</string>
- <string name="root_documents" msgid="4051252304075469250">"מסמכים"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-ja/strings.xml b/packages/ExternalStorageProvider/res/values-ja/strings.xml
deleted file mode 100644
index 188fca29a4c8..000000000000
--- a/packages/ExternalStorageProvider/res/values-ja/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"外部ストレージ"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"内部ストレージ"</string>
- <string name="root_documents" msgid="4051252304075469250">"ドキュメント"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-ka-rGE/strings.xml b/packages/ExternalStorageProvider/res/values-ka-rGE/strings.xml
deleted file mode 100644
index cc04860036d5..000000000000
--- a/packages/ExternalStorageProvider/res/values-ka-rGE/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"გარე მეხსიერება"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"შიდა მეხსიერება"</string>
- <string name="root_documents" msgid="4051252304075469250">"დოკუმენტები"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-km-rKH/strings.xml b/packages/ExternalStorageProvider/res/values-km-rKH/strings.xml
deleted file mode 100644
index 9cf76d4053e4..000000000000
--- a/packages/ExternalStorageProvider/res/values-km-rKH/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"ឧបករណ៍​​ផ្ទុក​ខាងក្រៅ"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"ឧបករណ៍​ផ្ទុក​ខាង​ក្នុង"</string>
- <string name="root_documents" msgid="4051252304075469250">"ឯកសារ"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-ko/strings.xml b/packages/ExternalStorageProvider/res/values-ko/strings.xml
deleted file mode 100644
index 849d37e602f5..000000000000
--- a/packages/ExternalStorageProvider/res/values-ko/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"외부 저장소"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"내부 저장소"</string>
- <string name="root_documents" msgid="4051252304075469250">"문서"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-lo-rLA/strings.xml b/packages/ExternalStorageProvider/res/values-lo-rLA/strings.xml
deleted file mode 100644
index cecd9f5683a9..000000000000
--- a/packages/ExternalStorageProvider/res/values-lo-rLA/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"ບ່ອນຈັດເກັບຂໍ້ມູນພາຍນອກ"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"ບ່ອນຈັດເກັບຂໍ້ມູນພາຍໃນ"</string>
- <string name="root_documents" msgid="4051252304075469250">"ເອ​ກະ​ສານ"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-lt/strings.xml b/packages/ExternalStorageProvider/res/values-lt/strings.xml
deleted file mode 100644
index 240ea8900089..000000000000
--- a/packages/ExternalStorageProvider/res/values-lt/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Išorinė atmintinė"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Vidinė atmintinė"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokumentai"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-lv/strings.xml b/packages/ExternalStorageProvider/res/values-lv/strings.xml
deleted file mode 100644
index d308fe830798..000000000000
--- a/packages/ExternalStorageProvider/res/values-lv/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Ārējā krātuve"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Iekšējā atmiņa"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokumenti"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-mn-rMN/strings.xml b/packages/ExternalStorageProvider/res/values-mn-rMN/strings.xml
deleted file mode 100644
index 3d7b7f73881b..000000000000
--- a/packages/ExternalStorageProvider/res/values-mn-rMN/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Гадаад сан"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Дотоод сан"</string>
- <string name="root_documents" msgid="4051252304075469250">"Документүүд"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-mn/strings.xml b/packages/ExternalStorageProvider/res/values-mn/strings.xml
deleted file mode 100644
index 0193cdbfc554..000000000000
--- a/packages/ExternalStorageProvider/res/values-mn/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Гадаад сан"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Дотоод сан"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-ms-rMY/strings.xml b/packages/ExternalStorageProvider/res/values-ms-rMY/strings.xml
deleted file mode 100644
index cb4d73653148..000000000000
--- a/packages/ExternalStorageProvider/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Storan Luaran"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Storan dalaman"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokumen"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-nb/strings.xml b/packages/ExternalStorageProvider/res/values-nb/strings.xml
deleted file mode 100644
index a9ecb691d727..000000000000
--- a/packages/ExternalStorageProvider/res/values-nb/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Ekstern lagring"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Intern lagring"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokumenter"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-ne-rNP/strings.xml b/packages/ExternalStorageProvider/res/values-ne-rNP/strings.xml
deleted file mode 100644
index 8a9454e0689a..000000000000
--- a/packages/ExternalStorageProvider/res/values-ne-rNP/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"बाह्य भण्डारण"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"आन्तरिक भण्डारण"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-nl/strings.xml b/packages/ExternalStorageProvider/res/values-nl/strings.xml
deleted file mode 100644
index bde61665d971..000000000000
--- a/packages/ExternalStorageProvider/res/values-nl/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Externe opslag"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Interne opslag"</string>
- <string name="root_documents" msgid="4051252304075469250">"Documenten"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-pl/strings.xml b/packages/ExternalStorageProvider/res/values-pl/strings.xml
deleted file mode 100644
index 6c5e7d78b0db..000000000000
--- a/packages/ExternalStorageProvider/res/values-pl/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Pamięć zewnętrzna"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Pamięć wewnętrzna"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokumenty"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-pt-rPT/strings.xml b/packages/ExternalStorageProvider/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 77c89b8bee83..000000000000
--- a/packages/ExternalStorageProvider/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Armazenamento externo"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Armazenamento interno"</string>
- <string name="root_documents" msgid="4051252304075469250">"Documentos"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-pt/strings.xml b/packages/ExternalStorageProvider/res/values-pt/strings.xml
deleted file mode 100644
index 77c89b8bee83..000000000000
--- a/packages/ExternalStorageProvider/res/values-pt/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Armazenamento externo"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Armazenamento interno"</string>
- <string name="root_documents" msgid="4051252304075469250">"Documentos"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-ro/strings.xml b/packages/ExternalStorageProvider/res/values-ro/strings.xml
deleted file mode 100644
index abd0b98a1f0e..000000000000
--- a/packages/ExternalStorageProvider/res/values-ro/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Stocare externă"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Stocare internă"</string>
- <string name="root_documents" msgid="4051252304075469250">"Documente"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-ru/strings.xml b/packages/ExternalStorageProvider/res/values-ru/strings.xml
deleted file mode 100644
index b6c109513bb0..000000000000
--- a/packages/ExternalStorageProvider/res/values-ru/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Внешний накопитель"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Внутренняя память"</string>
- <string name="root_documents" msgid="4051252304075469250">"Документы"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-si-rLK/strings.xml b/packages/ExternalStorageProvider/res/values-si-rLK/strings.xml
deleted file mode 100644
index de3f3e872cf5..000000000000
--- a/packages/ExternalStorageProvider/res/values-si-rLK/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"බාහිර ආචයනය"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"අභ්‍යන්තර ආචයනය"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-sk/strings.xml b/packages/ExternalStorageProvider/res/values-sk/strings.xml
deleted file mode 100644
index fd424c8390c6..000000000000
--- a/packages/ExternalStorageProvider/res/values-sk/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Externý ukladací priestor"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Interný ukladací priestor"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokumenty"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-sl/strings.xml b/packages/ExternalStorageProvider/res/values-sl/strings.xml
deleted file mode 100644
index 6ffa6987ebf4..000000000000
--- a/packages/ExternalStorageProvider/res/values-sl/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Zunanja shramba"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Notranja shramba"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokumenti"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-sr/strings.xml b/packages/ExternalStorageProvider/res/values-sr/strings.xml
deleted file mode 100644
index 54238a43080d..000000000000
--- a/packages/ExternalStorageProvider/res/values-sr/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Спољна меморија"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Интерна меморија"</string>
- <string name="root_documents" msgid="4051252304075469250">"Документи"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-sv/strings.xml b/packages/ExternalStorageProvider/res/values-sv/strings.xml
deleted file mode 100644
index 6eac11ec1d37..000000000000
--- a/packages/ExternalStorageProvider/res/values-sv/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Extern lagring"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Intern lagring"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokument"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-sw/strings.xml b/packages/ExternalStorageProvider/res/values-sw/strings.xml
deleted file mode 100644
index 0d0e4835c6e5..000000000000
--- a/packages/ExternalStorageProvider/res/values-sw/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Hifadhi ya Nje"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Hifadhi ya ndani"</string>
- <string name="root_documents" msgid="4051252304075469250">"Hati"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-th/strings.xml b/packages/ExternalStorageProvider/res/values-th/strings.xml
deleted file mode 100644
index 796635ee3522..000000000000
--- a/packages/ExternalStorageProvider/res/values-th/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"ที่จัดเก็บข้อมูลภายนอก"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"ที่จัดเก็บข้อมูลภายใน"</string>
- <string name="root_documents" msgid="4051252304075469250">"เอกสาร"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-tl/strings.xml b/packages/ExternalStorageProvider/res/values-tl/strings.xml
deleted file mode 100644
index 529cdc2c8924..000000000000
--- a/packages/ExternalStorageProvider/res/values-tl/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"External Storage"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Internal storage"</string>
- <string name="root_documents" msgid="4051252304075469250">"Mga Dokumento"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-tr/strings.xml b/packages/ExternalStorageProvider/res/values-tr/strings.xml
deleted file mode 100644
index d6bd52a8a8fa..000000000000
--- a/packages/ExternalStorageProvider/res/values-tr/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Harici Depolama"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Dahili depolama"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokümanlar"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-uk/strings.xml b/packages/ExternalStorageProvider/res/values-uk/strings.xml
deleted file mode 100644
index b8206e0684a2..000000000000
--- a/packages/ExternalStorageProvider/res/values-uk/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Зовнішня пам’ять"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Внутрішня пам’ять"</string>
- <string name="root_documents" msgid="4051252304075469250">"Документи"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-vi/strings.xml b/packages/ExternalStorageProvider/res/values-vi/strings.xml
deleted file mode 100644
index b171c933fed4..000000000000
--- a/packages/ExternalStorageProvider/res/values-vi/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Bộ nhớ ngoài"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Bộ nhớ trong"</string>
- <string name="root_documents" msgid="4051252304075469250">"Tài liệu"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-zh-rCN/strings.xml b/packages/ExternalStorageProvider/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 7df77dd8a919..000000000000
--- a/packages/ExternalStorageProvider/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"外部存储设备"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"内部存储空间"</string>
- <string name="root_documents" msgid="4051252304075469250">"文档"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-zh-rHK/strings.xml b/packages/ExternalStorageProvider/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 62d8afb372fb..000000000000
--- a/packages/ExternalStorageProvider/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"外部儲存空間"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"內部儲存空間"</string>
- <string name="root_documents" msgid="4051252304075469250">"文件"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-zh-rTW/strings.xml b/packages/ExternalStorageProvider/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 62d8afb372fb..000000000000
--- a/packages/ExternalStorageProvider/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"外部儲存空間"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"內部儲存空間"</string>
- <string name="root_documents" msgid="4051252304075469250">"文件"</string>
-</resources>
diff --git a/packages/ExternalStorageProvider/res/values-zu/strings.xml b/packages/ExternalStorageProvider/res/values-zu/strings.xml
deleted file mode 100644
index 4a0a845eac20..000000000000
--- a/packages/ExternalStorageProvider/res/values-zu/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="7123375275748530234">"Isitoreji sangaphandle"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Isitoreji sangaphakathi"</string>
- <string name="root_documents" msgid="4051252304075469250">"Amadokhumenti"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-af/strings.xml b/packages/FusedLocation/res/values-af/strings.xml
deleted file mode 100644
index a321abe25a1f..000000000000
--- a/packages/FusedLocation/res/values-af/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Saamgesmelte ligging"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-am/strings.xml b/packages/FusedLocation/res/values-am/strings.xml
deleted file mode 100644
index 9c4d9d585530..000000000000
--- a/packages/FusedLocation/res/values-am/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"ፍዩዥን አካባቢ"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-ar/strings.xml b/packages/FusedLocation/res/values-ar/strings.xml
deleted file mode 100644
index dfbcf7a68c0f..000000000000
--- a/packages/FusedLocation/res/values-ar/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"الموقع المدمج"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-bg/strings.xml b/packages/FusedLocation/res/values-bg/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-bg/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-ca/strings.xml b/packages/FusedLocation/res/values-ca/strings.xml
deleted file mode 100644
index bdd55dd23cb4..000000000000
--- a/packages/FusedLocation/res/values-ca/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Ubicació unificada"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-cs/strings.xml b/packages/FusedLocation/res/values-cs/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-cs/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-da/strings.xml b/packages/FusedLocation/res/values-da/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-da/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-de/strings.xml b/packages/FusedLocation/res/values-de/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-de/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-el/strings.xml b/packages/FusedLocation/res/values-el/strings.xml
deleted file mode 100644
index 1243b2140f64..000000000000
--- a/packages/FusedLocation/res/values-el/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Ενοποιημένη τοποθεσία"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-en-rGB/strings.xml b/packages/FusedLocation/res/values-en-rGB/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-en-rIN/strings.xml b/packages/FusedLocation/res/values-en-rIN/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-es-rUS/strings.xml b/packages/FusedLocation/res/values-es-rUS/strings.xml
deleted file mode 100644
index ec9531439ca5..000000000000
--- a/packages/FusedLocation/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Ubicación combinada"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-es/strings.xml b/packages/FusedLocation/res/values-es/strings.xml
deleted file mode 100644
index ec9531439ca5..000000000000
--- a/packages/FusedLocation/res/values-es/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Ubicación combinada"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-et-rEE/strings.xml b/packages/FusedLocation/res/values-et-rEE/strings.xml
deleted file mode 100644
index fcf4ef74139d..000000000000
--- a/packages/FusedLocation/res/values-et-rEE/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Liidetud asukoht"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-fa/strings.xml b/packages/FusedLocation/res/values-fa/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-fa/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-fi/strings.xml b/packages/FusedLocation/res/values-fi/strings.xml
deleted file mode 100644
index 2d308b3e470b..000000000000
--- a/packages/FusedLocation/res/values-fi/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Yhdistetty sijainti"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-fr-rCA/strings.xml b/packages/FusedLocation/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-fr/strings.xml b/packages/FusedLocation/res/values-fr/strings.xml
deleted file mode 100644
index 8604c394e8eb..000000000000
--- a/packages/FusedLocation/res/values-fr/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Localisation via les tables de fusion"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-hi/strings.xml b/packages/FusedLocation/res/values-hi/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-hi/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-hr/strings.xml b/packages/FusedLocation/res/values-hr/strings.xml
deleted file mode 100644
index b2a2cc97aca6..000000000000
--- a/packages/FusedLocation/res/values-hr/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Lokacija iz kombiniranih izvora"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-hu/strings.xml b/packages/FusedLocation/res/values-hu/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-hu/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-hy-rAM/strings.xml b/packages/FusedLocation/res/values-hy-rAM/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-in/strings.xml b/packages/FusedLocation/res/values-in/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-in/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-it/strings.xml b/packages/FusedLocation/res/values-it/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-it/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-iw/strings.xml b/packages/FusedLocation/res/values-iw/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-iw/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-ja/strings.xml b/packages/FusedLocation/res/values-ja/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-ja/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-ka-rGE/strings.xml b/packages/FusedLocation/res/values-ka-rGE/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-ka-rGE/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-km-rKH/strings.xml b/packages/FusedLocation/res/values-km-rKH/strings.xml
deleted file mode 100644
index 649e4f77e299..000000000000
--- a/packages/FusedLocation/res/values-km-rKH/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"ភ្ជាប់​ទីតាំង"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-ko/strings.xml b/packages/FusedLocation/res/values-ko/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-ko/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-lo-rLA/strings.xml b/packages/FusedLocation/res/values-lo-rLA/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-lo-rLA/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-lt/strings.xml b/packages/FusedLocation/res/values-lt/strings.xml
deleted file mode 100644
index 245c0b0087b0..000000000000
--- a/packages/FusedLocation/res/values-lt/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Suderinta vietovė"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-lv/strings.xml b/packages/FusedLocation/res/values-lv/strings.xml
deleted file mode 100644
index 8c40cb22107b..000000000000
--- a/packages/FusedLocation/res/values-lv/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Apvienota atrašanās vieta"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-mn-rMN/strings.xml b/packages/FusedLocation/res/values-mn-rMN/strings.xml
deleted file mode 100644
index 8055ca84c3f7..000000000000
--- a/packages/FusedLocation/res/values-mn-rMN/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Нэгдмэл байршил"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-ms-rMY/strings.xml b/packages/FusedLocation/res/values-ms-rMY/strings.xml
deleted file mode 100644
index d345cb8a9f3f..000000000000
--- a/packages/FusedLocation/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Lokasi Terlakur"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-nb/strings.xml b/packages/FusedLocation/res/values-nb/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-nb/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-nl/strings.xml b/packages/FusedLocation/res/values-nl/strings.xml
deleted file mode 100644
index b3003c891ab0..000000000000
--- a/packages/FusedLocation/res/values-nl/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Samengestelde locatie"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-pl/strings.xml b/packages/FusedLocation/res/values-pl/strings.xml
deleted file mode 100644
index b3a9e2a779ce..000000000000
--- a/packages/FusedLocation/res/values-pl/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Przybliżona lokalizacja"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-pt-rPT/strings.xml b/packages/FusedLocation/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-pt/strings.xml b/packages/FusedLocation/res/values-pt/strings.xml
deleted file mode 100644
index cf5f5bf8caa3..000000000000
--- a/packages/FusedLocation/res/values-pt/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Localização fundida"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-ro/strings.xml b/packages/FusedLocation/res/values-ro/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-ro/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-ru/strings.xml b/packages/FusedLocation/res/values-ru/strings.xml
deleted file mode 100644
index 40d9e6fd6d31..000000000000
--- a/packages/FusedLocation/res/values-ru/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Геоданные из нескольких источников"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-sk/strings.xml b/packages/FusedLocation/res/values-sk/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-sk/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-sl/strings.xml b/packages/FusedLocation/res/values-sl/strings.xml
deleted file mode 100644
index 928c50b7fd92..000000000000
--- a/packages/FusedLocation/res/values-sl/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Kombinirana lokacija"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-sr/strings.xml b/packages/FusedLocation/res/values-sr/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-sr/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-sv/strings.xml b/packages/FusedLocation/res/values-sv/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-sv/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-sw/strings.xml b/packages/FusedLocation/res/values-sw/strings.xml
deleted file mode 100644
index 60c235e70507..000000000000
--- a/packages/FusedLocation/res/values-sw/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Eneo Hakika"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-th/strings.xml b/packages/FusedLocation/res/values-th/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-th/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-tl/strings.xml b/packages/FusedLocation/res/values-tl/strings.xml
deleted file mode 100644
index 94a25071da9a..000000000000
--- a/packages/FusedLocation/res/values-tl/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Naka-fuse na Lokasyon"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-tr/strings.xml b/packages/FusedLocation/res/values-tr/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-tr/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-uk/strings.xml b/packages/FusedLocation/res/values-uk/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-uk/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-vi/strings.xml b/packages/FusedLocation/res/values-vi/strings.xml
deleted file mode 100644
index e0e83a8be82e..000000000000
--- a/packages/FusedLocation/res/values-vi/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Vị trí được hợp nhất"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-zh-rCN/strings.xml b/packages/FusedLocation/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-zh-rHK/strings.xml b/packages/FusedLocation/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-zh-rTW/strings.xml b/packages/FusedLocation/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 0d2cccc66dc0..000000000000
--- a/packages/FusedLocation/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Fused Location"</string>
-</resources>
diff --git a/packages/FusedLocation/res/values-zu/strings.xml b/packages/FusedLocation/res/values-zu/strings.xml
deleted file mode 100644
index 62d4359e8c8a..000000000000
--- a/packages/FusedLocation/res/values-zu/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="5379477904423203699">"Indawo ehlanganisiwe"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-af/strings.xml b/packages/InputDevices/res/values-af/strings.xml
deleted file mode 100644
index 748bae03acd7..000000000000
--- a/packages/InputDevices/res/values-af/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Invoertoestelle"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android-sleutelbord"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Engels (VK)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Engels (VS)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Engels (VS), internasionale styl"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Engels (VS), Colemak-styl"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Engels (VS), Dvorak-styl"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Duits"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Frans"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Frans (Kanada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Russies"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Russies, Mac-styl"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Spaans"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Switserse Frans"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Switserse Duits"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgies"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgaars"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiaans"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Deens"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Noors"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Sweeds"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Fins"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroasies"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tsjeggies"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estnies"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hongaars"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Yslands"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brasiliaans"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portugees"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slowaaks"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Sloweens"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turks"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Oekraïens"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-am/strings.xml b/packages/InputDevices/res/values-am/strings.xml
deleted file mode 100644
index d4097f49c996..000000000000
--- a/packages/InputDevices/res/values-am/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"የግቤት መሣሪያዎች"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"የAndroid የቁልፍ ሰሌዳ"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"እንግሊዝኛ (ዩኬ)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"እንግሊዘኛ (ዩ.ኤስ.)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"እንግሊዘኛ (ዩ. ኤስ.)፣ አለም አቀፍ ቅጥ"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"እንግሊዘኛ (ዩ. ኤስ.)፣ የኮልማርክ ቅጥ"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"እንግሊዘኛ (ዩ. ኤስ.)፣ የድቮራክ ቅጥ"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"ጀርመን"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"ፈረንሳይኛ"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"ፈረንሳይኛ (ካናዳ)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"ሩስያኛ"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"ሩስያኛ፣ Mac ቅጥ"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"ስፓኒሽ"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"የስዊዝ ፈረንሳይኛ"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"የስዊዝ ጀርመን"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"ቤልጂየምኛ"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"ቡልጋሪኛ"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"ጣሊያንኛ"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"ዴኒሽ"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"ኖርዌጂያን"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"ስዊድንኛ"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ፊኒሽ"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ክሮሽያንኛ"</string>
- <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_brazilian" msgid="5117896443147781939">"የብራዚል"</string>
- <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_ukrainian" msgid="8176637744389480417">"ዩክረኒኛ"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-ar/strings.xml b/packages/InputDevices/res/values-ar/strings.xml
deleted file mode 100644
index abf096768e54..000000000000
--- a/packages/InputDevices/res/values-ar/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"أجهزة إدخال بيانات"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"لوحة مفاتيح Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"الإنجليزية (المملكة المتحدة)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"الإنجليزية (الولايات المتحدة)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"الإنجليزية (الولايات المتحدة)، النمط الدولي"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"الإنجليزية (الولايات المتحدة)، نمط Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"الإنجليزية (الولايات المتحدة)، نمط Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"الألمانية"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"الفرنسية"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"الفرنسية (كندا)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"الروسية"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"الروسية، نمط Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"الإسبانية"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"الفرنسية السويسرية"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"الألمانية السويسرية"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"البلجيكية"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"البلغارية"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"الإيطالية"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"الدانماركية"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"النرويجية"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"السويدية"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"الفنلندية"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"الكرواتية"</string>
- <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_brazilian" msgid="5117896443147781939">"البرازيلية"</string>
- <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_ukrainian" msgid="8176637744389480417">"الأوكرانية"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-bg/strings.xml b/packages/InputDevices/res/values-bg/strings.xml
deleted file mode 100644
index 0c413a403d64..000000000000
--- a/packages/InputDevices/res/values-bg/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Входни устройства"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Клавиатура на Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"английски (Великобритания)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"английски (САЩ)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"англ. (САЩ) – стил „Mеждународна“"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"английски (САЩ) – стил „Коулмак“"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"английски (САЩ) – стил „Дворак“"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"немски"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"френски"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"френски (Канада)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"руски"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"руски – стил „Mac“"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"испански"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"швейцарски френски"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"швейцарски немски"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"белгийски"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"български"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"италиански"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"датски"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"норвежки"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"шведски"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"финландски"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"хърватски"</string>
- <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_brazilian" msgid="5117896443147781939">"португалски (Бразилия)"</string>
- <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_ukrainian" msgid="8176637744389480417">"украински"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-ca/strings.xml b/packages/InputDevices/res/values-ca/strings.xml
deleted file mode 100644
index 2021b8f19804..000000000000
--- a/packages/InputDevices/res/values-ca/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Dispositius d’entrada"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Teclat Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Anglès (RU)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Anglès (EUA)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Anglès (EUA), estil internacional"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Anglès (EUA), estil Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Anglès (EUA), estil Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Alemany"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Francès"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Francès (Canadà)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Rus"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Rus, estil Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Espanyol"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Francès suís"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Alemany suís"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belga"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Búlgar"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italià"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danès"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Noruec"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Suec"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finès"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croat"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Txec"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonià"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hongarès"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandès"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brasiler"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portuguès"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Eslovac"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Eslovè"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turc"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ucraïnès"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-cs/strings.xml b/packages/InputDevices/res/values-cs/strings.xml
deleted file mode 100644
index 33b420e14019..000000000000
--- a/packages/InputDevices/res/values-cs/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Vstupní zařízení"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Klávesnice Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"anglické (Spojené království)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"anglické (USA)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"anglické (USA), mezinárodní"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"anglické (USA), styl Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"anglické (USA), styl Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"německé"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"francouzské"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"francouzské (Kanada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"ruské"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"ruské, styl Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"španělské"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"švýcarské (francouzština)"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"švýcarské (němčina)"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"belgické"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"bulharské"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"italské"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"dánské"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"norské"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"švédské"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finské"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"chorvatské"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"české"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estonské"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"maďarské"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandské"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"brazilské"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"portugalské"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"slovenské"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"slovinské"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"turecké"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"ukrajinské"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-da/strings.xml b/packages/InputDevices/res/values-da/strings.xml
deleted file mode 100644
index 5eb30b17dbfd..000000000000
--- a/packages/InputDevices/res/values-da/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Inputenheder"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android-tastatur"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Engelsk (UK)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Engelsk (USA)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Engelsk (USA), international stil"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Engelsk (USA), Colemak-stil"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Engelsk (USA), Dvorak-stil"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Tysk"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Fransk"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Fransk (Canada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Russisk"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Russisk, Mac-stil"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Spansk"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"schweizisk fransk"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"schweizertysk"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgisk"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgarsk"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiensk"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Dansk"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norsk"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Svensk"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finsk"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatisk"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tjekkisk"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estisk"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungarsk"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandsk"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brasiliansk"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portugisisk"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slovakisk"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Slovensk"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Tyrkisk"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"ukrainsk"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-de/strings.xml b/packages/InputDevices/res/values-de/strings.xml
deleted file mode 100644
index b5c3b50c9f7a..000000000000
--- a/packages/InputDevices/res/values-de/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Eingabegeräte"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android-Tastatur"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Englisch (Großbritannien)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Englisch (USA)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Englisch (USA), international"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Englisch (USA), Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Englisch (USA), Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Deutsch"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Französisch"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Französisch (Kanada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Russisch"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Russisch, Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Spanisch"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Schweizer Französisch"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Schweizerdeutsch"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgisch"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgarisch"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italienisch"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Dänisch"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norwegisch"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Schwedisch"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnisch"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatisch"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tschechisch"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estnisch"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungarisch"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Isländisch"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brasilianisch"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portugiesisch"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slowakisch"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Slowenisch"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Türkisch"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ukrainisch"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-el/strings.xml b/packages/InputDevices/res/values-el/strings.xml
deleted file mode 100644
index bcf7b86bf11e..000000000000
--- a/packages/InputDevices/res/values-el/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Συσκευές εισόδου"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Πληκτρολόγιο Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Αγγλικά (Η.Β.)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Αγγλικά (Η.Π.Α.)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Αγγλικά (Η.Π.Α.), τύπου International"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Αγγλικά (Η.Π.Α.), τύπου Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Αγγλικά (Η.Π.Α.), τύπου Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Γερμανικά"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Γαλλικά"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Γαλλικά (Καναδά)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Ρωσικά"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Russian, τύπου Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Ισπανικά"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Γαλλικά Ελβετίας"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Γερμανικά Ελβετίας"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Βελγίου"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Βουλγαρικά"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Ιταλικά"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Δανικά"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Νορβηγικά"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Σουηδικά"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Φινλανδικά"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Κροατικά"</string>
- <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_brazilian" msgid="5117896443147781939">"Βραζιλίας"</string>
- <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_ukrainian" msgid="8176637744389480417">"Ουκρανικά"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-en-rGB/strings.xml b/packages/InputDevices/res/values-en-rGB/strings.xml
deleted file mode 100644
index 2d794a687464..000000000000
--- a/packages/InputDevices/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Input Devices"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android keyboard"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"English (UK)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"English (US)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"English (US), International style"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"English (US), Colemak style"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"English (US), Dvorak style"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"German"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"French"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"French (Canada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Russian"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Russian, Mac style"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Spanish"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Swiss French"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Swiss German"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgian"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgarian"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italian"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danish"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norwegian"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Swedish"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnish"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croatian"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czech"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonian"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungarian"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Icelandic"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brazilian"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portuguese"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slovak"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Slovenian"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turkish"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ukrainian"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-en-rIN/strings.xml b/packages/InputDevices/res/values-en-rIN/strings.xml
deleted file mode 100644
index 2d794a687464..000000000000
--- a/packages/InputDevices/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Input Devices"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android keyboard"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"English (UK)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"English (US)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"English (US), International style"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"English (US), Colemak style"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"English (US), Dvorak style"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"German"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"French"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"French (Canada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Russian"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Russian, Mac style"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Spanish"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Swiss French"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Swiss German"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgian"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgarian"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italian"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danish"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norwegian"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Swedish"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnish"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croatian"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czech"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonian"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungarian"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Icelandic"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brazilian"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portuguese"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slovak"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Slovenian"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turkish"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ukrainian"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-es-rUS/strings.xml b/packages/InputDevices/res/values-es-rUS/strings.xml
deleted file mode 100644
index 2d61b804d92e..000000000000
--- a/packages/InputDevices/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Dispositivos de entrada"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Teclado de Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Inglés (Reino Unido)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Inglés (EE. UU.)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Inglés (EE. UU.), internacional"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Inglés (EE. UU.), Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Inglés (EE. UU.), Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Alemán"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Francés"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Francés (Canadá)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Ruso"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Ruso, Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Español"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Francés de Suiza"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Alemán de Suiza"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belga"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Búlgaro"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiano"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danés"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Noruego"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Sueco"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandés"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croata"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Checo"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonio"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Húngaro"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandés"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brasileño"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portugués"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Eslovaco"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Esloveno"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turco"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ucraniano"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-es/strings.xml b/packages/InputDevices/res/values-es/strings.xml
deleted file mode 100644
index 82ea4d6c5ce1..000000000000
--- a/packages/InputDevices/res/values-es/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Dispositivos de entrada"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Teclado de Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Inglés (Reino Unido)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Inglés (EE.UU.)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Inglés (EE.UU.), estilo internacional"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Inglés (EE.UU.), estilo Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Inglés (EE.UU.), estilo Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Alemán"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Francés"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Francés (Canadá)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Ruso"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Ruso, estilo Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Español"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Francés de Suiza"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Alemán suizo"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belga"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Búlgaro"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiano"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danés"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Noruego"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Sueco"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandés"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croata"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Checo"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonio"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Húngaro"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandés"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brasileño"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portugués"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Eslovaco"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Esloveno"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turco"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ucraniano"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-et-rEE/strings.xml b/packages/InputDevices/res/values-et-rEE/strings.xml
deleted file mode 100644
index 5b4fa3b2baf7..000000000000
--- a/packages/InputDevices/res/values-et-rEE/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Sisendseadmed"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Androidi klaviatuur"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Inglise (Ühendkuningriik)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Inglise (USA)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Inglise (USA), rahvusvaheline stiil"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Inglise (USA), Colemaki stiil"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Inglise (USA), Dvoraki stiil"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Saksa"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Prantsuse"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Prantsuse (Kanada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Vene"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Vene, Maci stiil"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Hispaania"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Šveitsi prantsuse"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Šveitsisaksa"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgia"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgaaria"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Itaalia"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Taani"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norra"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Rootsi"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Soome"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Horvaatia"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tšehhi"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Eesti"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungari"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandi"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brasiilia"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portugali"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slovaki"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Sloveenia"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Türgi"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ukraina"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-fa/strings.xml b/packages/InputDevices/res/values-fa/strings.xml
deleted file mode 100644
index d6a842ee66e7..000000000000
--- a/packages/InputDevices/res/values-fa/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Input Devices"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"صفحه‌کلید Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"انگلیسی (بریتانیا)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"انگلیسی (امریکا)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"انگلیسی (ایالات متحده)، سبک بین‌المللی"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"انگلیسی (ایالات متحده)، سبک Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"انگلیسی (ایالات متحده)، سبک Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"آلمانی"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"فرانسوی"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"فرانسوی (کانادا)‏"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"روسی"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"روسی، سبک Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"اسپانیایی"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"فرانسوی سوئیس"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"آلمانی سوئیسی"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"بلژیکی"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"بلغاری"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"ایتالیایی"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"دانمارکی"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"نروژی"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"سوئدی"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"فنلاندی"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"کرواسی"</string>
- <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_brazilian" msgid="5117896443147781939">"برزیلی"</string>
- <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_ukrainian" msgid="8176637744389480417">"اوکراینی"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-fi/strings.xml b/packages/InputDevices/res/values-fi/strings.xml
deleted file mode 100644
index 428eb30ab159..000000000000
--- a/packages/InputDevices/res/values-fi/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Syöttölaitteet"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android-näppäimistö"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"englanti (Iso-Britannia)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"englanti (Yhdysvallat)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"englanti (Yhdysvallat), kansainvälinen"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"englanti (Yhdysvallat), Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"englanti (Yhdysvallat), Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"saksa"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"ranska"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"ranska (Kanada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"venäjä"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"venäjä, Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"espanja"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"sveitsinranska"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"sveitsinsaksa"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"belgialainen"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"bulgaria"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"italia"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"tanska"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"norja"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"ruotsi"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"suomi"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"kroaatti"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"tšekki"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"viro"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"unkari"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islanti"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"brasilialainen"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"portugali"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"slovakki"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"sloveeni"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"turkki"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"ukraina"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-fr-rCA/strings.xml b/packages/InputDevices/res/values-fr-rCA/strings.xml
deleted file mode 100644
index c9476349fb31..000000000000
--- a/packages/InputDevices/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Périphériques d\'entrée"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Clavier Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Anglais (britannique)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Anglais (États-Unis)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Anglais (États-Unis), international"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Anglais (États-Unis), type Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Anglais (États-Unis), type Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Allemand"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Français"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Français (Canada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Russe"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Russe, type Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Espagnol"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Français (Suisse)"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Allemand (Suisse)"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belge"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgare"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italien"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danois"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norvégien"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Suédois"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnois"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croate"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tchèque"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonien"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hongrois"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandais"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brésilien"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portugais"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slovaque"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Slovène"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turc"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ukrainien"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-fr/strings.xml b/packages/InputDevices/res/values-fr/strings.xml
deleted file mode 100644
index fa02e5f69d09..000000000000
--- a/packages/InputDevices/res/values-fr/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Périphériques d\'entrée"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Clavier Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Anglais (Royaume-Uni)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Anglais (États-Unis)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Anglais (États-Unis), international"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Anglais (États-Unis), type Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Anglais (États-Unis), type Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Allemand"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Français"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Français (Canada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Russe"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Russe, type Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Espagnol"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Français (Suisse)"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Allemand (Suisse)"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belge"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgare"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italien"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danois"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norvégien"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Suédois"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnois"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croate"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tchèque"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonien"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hongrois"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandais"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brésilien"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portugais"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slovaque"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Slovène"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turc"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ukrainien"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-hi/strings.xml b/packages/InputDevices/res/values-hi/strings.xml
deleted file mode 100644
index 8e1864e74ec3..000000000000
--- a/packages/InputDevices/res/values-hi/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"इनपुट उपकरण"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android कीबोर्ड"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"अंग्रेज़ी (यूके)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"अंग्रेज़ी (यूएस)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"अंग्रेज़ी (यूएस), अंतर्राष्ट्रीय शैली"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"अंग्रेज़ी (यूएस), कोलमैक शैली"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"अंग्रेज़ी (यूएस), ड्वोरक शैली"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"जर्मन"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"फ़्रांसीसी"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"फ़्रांसीसी (कनाडा)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"रूसी"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"रूसी, मैक शैली"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"स्पैनिश"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"स्विस फ़्रांसीसी"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"स्विस जर्मन"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"बेल्जियाई"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"बुल्‍गारियाई"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"इतालवी"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"डैनिश"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"नार्वेजियाई"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"स्वीडिश"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"फ़िनिश"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"क्रोएशियाई"</string>
- <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_brazilian" msgid="5117896443147781939">"ब्राज़ीलियाई"</string>
- <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_ukrainian" msgid="8176637744389480417">"यूक्रेनियाई"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-hr/strings.xml b/packages/InputDevices/res/values-hr/strings.xml
deleted file mode 100644
index fd3d59472b21..000000000000
--- a/packages/InputDevices/res/values-hr/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Uređaji za unos"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Androidova tipkovnica"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"engleska (UK)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"engleska (SAD)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"engleska (SAD), međunarodna"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"engleska (SAD), Colemakov raspored"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"engleska (SAD), Dvorakov raspored"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"njemačka"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"francuska"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"francuska (Kanada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"ruska"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"ruska, raspored Maca"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"španjolska"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"švicarsko-francuska"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"švicarsko-njemačka"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"belgijska"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"bugarska"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"talijanska"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"danska"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"norveška"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"švedska"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finska"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"hrvatska"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"češka"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estonska"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"mađarska"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandska"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"brazilska"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"portugalska"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"slovačka"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"slovenska"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"turska"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"ukrajinska"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-hu/strings.xml b/packages/InputDevices/res/values-hu/strings.xml
deleted file mode 100644
index 0cdbfb2c581d..000000000000
--- a/packages/InputDevices/res/values-hu/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Beviteli eszközök"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android-billentyűzet"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"angol (Egyesült Királyság)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"angol (USA)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"angol (USA), nemzetközi stílus"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"angol (USA), Colemak-stílus"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"angol (USA), Dvorak-stílus"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"német"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"francia"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"francia (Kanada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"orosz"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"orosz, Mac-stílus"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"spanyol"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"svájci francia"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"svájci német"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"belga"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"bolgár"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"olasz"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"dán"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"norvég"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"svéd"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finn"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"horvát"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"cseh"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"észt"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"magyar"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"izlandi"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"brazil"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"portugál"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"szlovák"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"szlovén"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"török"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"ukrán"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-hy-rAM/strings.xml b/packages/InputDevices/res/values-hy-rAM/strings.xml
deleted file mode 100644
index a73fb897fea3..000000000000
--- a/packages/InputDevices/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Մուտքագրման ​​սարքեր"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android ստեղնաշար"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Անգլերեն (ՄԲ)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Անգլերեն (ԱՄՆ)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Անգլերեն (ԱՄՆ), միջազգային տեսակ"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Անգլերեն (ԱՄՆ), Colemak տեսակ"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Անգլերեն (ԱՄՆ), Dvorak տեսակ"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Գերմաներեն"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"ֆրանսերեն"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Ֆրանսերեն (Կանադա)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Ռուսերեն"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Ռուսերեն, Mac տեսակ"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Իսպաներեն"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Շվեյցարական ֆրանսերեն"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Շվեյցարական գերմաներեն"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Բելգիական"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Բուլղարերեն"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Իտալերեն"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Դանիերեն"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Նորվեգերեն"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Շվեդերեն"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Ֆիններեն"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Խորվաթերեն"</string>
- <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_brazilian" msgid="5117896443147781939">"Բրազիլերեն"</string>
- <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_ukrainian" msgid="8176637744389480417">"Ուկրաիներեն"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-in/strings.xml b/packages/InputDevices/res/values-in/strings.xml
deleted file mode 100644
index 11e2dd0a2ffa..000000000000
--- a/packages/InputDevices/res/values-in/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Perangkat Masukan"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Keyboard Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Inggris (Britania)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Inggris (Amerika)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Inggris (AS), gaya Internasional"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Inggris (AS), gaya Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Inggris (AS), gaya Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Jerman"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Prancis"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Prancis (Kanada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Rusia"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Rusia, gaya Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Spanyol"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Prancis Swiss"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Jerman Swiss"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgia"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgaria"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italia"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Denmark"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norwegia"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Swedia"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandia"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroasia"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Cheska"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonia"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungaria"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandia"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brasil"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portugis"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slowakia"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Slovenia"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turki"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ukraina"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-it/strings.xml b/packages/InputDevices/res/values-it/strings.xml
deleted file mode 100644
index dbb7301092b5..000000000000
--- a/packages/InputDevices/res/values-it/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Dispositivi di input"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Tastiera Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Inglese (UK)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Inglese (USA)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Inglese (USA), stile internazionale"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Inglese (USA), stile Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Inglese (USA), stile Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Tedesco"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Francese"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Francese (Canada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Russo"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Russo, stile Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Spagnolo"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Francese svizzero"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Tedesco svizzero"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belga"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgaro"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiano"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danese"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norvegese"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Svedese"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandese"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croato"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Ceco"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estone"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungherese"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandese"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brasiliano"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portoghese"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slovacco"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Sloveno"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turco"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ucraino"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-iw/strings.xml b/packages/InputDevices/res/values-iw/strings.xml
deleted file mode 100644
index 5fab322cea5d..000000000000
--- a/packages/InputDevices/res/values-iw/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"התקני קלט"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"מקלדת Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"אנגלית (בריטניה)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"אנגלית (ארה\"ב)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"אנגלית (ארה\"ב), סגנון בינ\"ל"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"אנגלית (ארה\"ב), סגנון Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"אנגלית (ארה\"ב), סגנון Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"גרמנית"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"צרפתית"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"צרפתית (קנדה)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"רוסית"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"רוסית, סגנון Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"ספרדית"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"צרפתית שוויצרית"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"גרמנית שוויצרית"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"בלגית"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"בולגרית"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"איטלקית"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"דנית"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"נורווגית"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"שוודית"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"פינית"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"קרואטית"</string>
- <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_brazilian" msgid="5117896443147781939">"ברזילאית"</string>
- <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_ukrainian" msgid="8176637744389480417">"אוקראינית"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-ja/strings.xml b/packages/InputDevices/res/values-ja/strings.xml
deleted file mode 100644
index 950b727c834e..000000000000
--- a/packages/InputDevices/res/values-ja/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Input Devices"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Androidキーボード"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"英語(イギリス)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"英語(アメリカ)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"英語(アメリカ)、インターナショナル配列"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"英語(アメリカ)、Colemak配列"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"英語(アメリカ)、Dvorak配列"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"ドイツ語"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"フランス語"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"フランス語(カナダ)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"ロシア語"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"ロシア語(Mac配列)"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"スペイン語"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"フランス語(スイス)"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"ドイツ語(スイス)"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"ベルギー語"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"ブルガリア語"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"イタリア語"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"デンマーク語"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"ノルウェー語"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"スウェーデン語"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"フィンランド語"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"クロアチア語"</string>
- <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_brazilian" msgid="5117896443147781939">"ブラジル配列"</string>
- <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_ukrainian" msgid="8176637744389480417">"ウクライナ語"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-ka-rGE/strings.xml b/packages/InputDevices/res/values-ka-rGE/strings.xml
deleted file mode 100644
index 17ca30240df1..000000000000
--- a/packages/InputDevices/res/values-ka-rGE/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Input Devices"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android-ის კლავიატურა"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"ინგლისური (ბრიტ.)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"ინგლისური (აშშ)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"ინგლისური (აშშ), საერთაშორისო სტილი"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"ანგლისური (აშშ), Colemak სტილი"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"ინგლისური (აშშ), Dvorak სტილი"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"გერმანული"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"ფრანგული"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"ფრანგული (კანადა)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"რუსული"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"რუსული, Mac სტილი"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"ესპანური"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"შვეიცარიული ფრანგული"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"შვეიცარიული გერმანული"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"ბელგიური"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"ბულგარული"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"იტალიური"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"დანიური"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"ნორვეგიული"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"შვედური"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ფინური"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ხორვატიული"</string>
- <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_brazilian" msgid="5117896443147781939">"ბრაზილიური"</string>
- <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_ukrainian" msgid="8176637744389480417">"უკრაინული"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-km-rKH/strings.xml b/packages/InputDevices/res/values-km-rKH/strings.xml
deleted file mode 100644
index 9a8c99b453ac..000000000000
--- a/packages/InputDevices/res/values-km-rKH/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"ឧបករណ៍​បញ្ចូល"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"ក្ដារចុច​ Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"អង់គ្លេស (​ចក្រភព​អង់គ្លេស)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"អង់គ្លេស (​សហរដ្ឋ​អាមេរិក)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"អង់គ្លេស (សហរដ្ឋ​អាមេរិក​)​, ​​រចនាប័ទ្ម​​អន្តរជាតិ"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"អង់គ្លេស (សហរដ្ឋ​អាមេរិក​)​, ​​រចនាប័ទ្ម Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"អង់គ្លេស (សហរដ្ឋ​អាមេរិក​)​, ​​រចនាប័ទ្ម Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"អាល្លឺម៉ង់"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"បារាំង"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"បារាំង (កាណាដា​)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"រុស្សី"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"រុស្សី ​រចនាប័ទ្ម Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"អេស្ប៉ាញ"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"​​បារាំង​ ស្វីស"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"អាល្លឺម៉ង់ ស្វីស"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"បែលហ្ស៊ិក"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"ប៊ុលហ្ការី"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"អ៊ីតាលី"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"ដាណឺម៉ាក"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"ន័រវែស"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"ស៊ុយអែដ"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ហ្វាំងឡង់"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ក្រូអាត"</string>
- <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_brazilian" msgid="5117896443147781939">"ប្រេស៊ីល"</string>
- <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_ukrainian" msgid="8176637744389480417">"អ៊ុយក្រែន"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-ko/strings.xml b/packages/InputDevices/res/values-ko/strings.xml
deleted file mode 100644
index 8071586acf3f..000000000000
--- a/packages/InputDevices/res/values-ko/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"입력 기기"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android 키보드"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"영어(영국)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"영어(미국)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"영어(미국), 글로벌 스타일"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"영어(미국), 콜맥 스타일"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"영어(미국), 드보락 스타일"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"독일어"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"프랑스어"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"프랑스어(캐나다)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"러시아어"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"러시아어, Mac 스타일"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"스페인어"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"프랑스어(스위스)"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"독일어(스위스)"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"벨기에어"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"불가리아어"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"이탈리아어"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"덴마크어"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"노르웨이어"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"스웨덴어"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"핀란드어"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"크로아티아어"</string>
- <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_brazilian" msgid="5117896443147781939">"브라질어"</string>
- <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_ukrainian" msgid="8176637744389480417">"우크라이나어"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-lo-rLA/strings.xml b/packages/InputDevices/res/values-lo-rLA/strings.xml
deleted file mode 100644
index 2c97e115bd68..000000000000
--- a/packages/InputDevices/res/values-lo-rLA/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"ອຸປະກອນປ້ອນຂໍ້ມູນ"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"ແປ້ນພິມ Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"ອັງກິດ (ສະຫະລັດຊະອານາຈັກ)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"ອັງກິດ (ສະຫະລັດຯ)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"ອັງກິດ (ສະຫະລັດຯ), ແບບສາກົນ"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"ອັງກິດ (ສະຫະລັດຯ), ແບບ Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"ອັງກິດ (ສະຫະລັດຯ), ແບບ Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"ເຢຍລະມັນ"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"ຝຣັ່ງ"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"ຝຣັ່ງ (ຄານາດາ)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"ຣັດເຊຍ"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"ຣັດຊຽຍ, ແບບ Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"ສະແປນນິດ"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"ສະວິສ ຝຣັ່ງ"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"ສະວິສ ເຢຍລະມັນ"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"ເບວຢ້ຽນ"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"ຮັງກາຣຽນ"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"ອິຕາລຽນ"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"ເດັນນິຊ"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"ນໍເວກຽນ"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"ສະວີດິຊ"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ຟິນນິຊ"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ໂຄຣເອທຽນ"</string>
- <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_brazilian" msgid="5117896443147781939">"ບຣາຊິລຽນ"</string>
- <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_ukrainian" msgid="8176637744389480417">"ຢູເຄຣນຽນ"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-lt/strings.xml b/packages/InputDevices/res/values-lt/strings.xml
deleted file mode 100644
index 177d4180d485..000000000000
--- a/packages/InputDevices/res/values-lt/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Įvesties įrenginiai"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"„Android“ klaviatūra"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Anglų k. (JK)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Anglų k. (JAV)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Anglų k. (JAV), tarptautinis stilius"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Anglų k. (JAV), „Colemak“ stilius"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Anglų k. (JAV), „Dvorak“ stilius"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Vokiečių k."</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Prancūzų k."</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Prancūzų k. (Kanada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Rusų k."</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Rusų k., „Mac“ stilius"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Ispanų k."</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Šveicarijos prancūzų k."</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Šveicarijos vokiečių k."</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgų k."</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgarų k."</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italų k."</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danų k."</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norvegų k."</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Švedų k."</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Suomių k."</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatų k."</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Čekų k."</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estų k."</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Vengrų k."</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandų k."</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brazilų k."</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portugalų k."</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slovakų k."</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Slovėnų k."</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turkų k."</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ukrainiečių k."</string>
-</resources>
diff --git a/packages/InputDevices/res/values-lv/strings.xml b/packages/InputDevices/res/values-lv/strings.xml
deleted file mode 100644
index 07a86544f9c6..000000000000
--- a/packages/InputDevices/res/values-lv/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Ievadierīces"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android tastatūra"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Angļu (Lielbritānija)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Angļu (ASV)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Angļu (ASV), starptautiska"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Angļu (ASV), Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Angļu (ASV), Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Vācu"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Franču"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Franču (Kanāda)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Krievu"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Krievu, Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Spāņu"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Franču (Šveice)"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Vācu (Šveice)"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Beļģu"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgāru"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Itāļu"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Dāņu"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norvēģu"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Zviedru"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Somu"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Horvātu"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Čehu"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Igauņu"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungāru"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Īslandiešu"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brazīļu"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portugāļu"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slovāku"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Slovēņu"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turku"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ukraiņu"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-mn-rMN/strings.xml b/packages/InputDevices/res/values-mn-rMN/strings.xml
deleted file mode 100644
index 0cfb08534c2c..000000000000
--- a/packages/InputDevices/res/values-mn-rMN/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Оруулах Төхөөрөмж"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Андройд гар"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Англи (ИБ)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Англи (АНУ)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Англи (АНУ), Олон улсын стиль"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Англи (АНУ), Колемак стиль"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Англи (АНУ), Дворак стиль"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Герман"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Франц"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Франц (Канад)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Орос"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Орос, Maк стиль"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Испани"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Швейцарийн Франц"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Швейцарийн Герман"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Бельги"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Болгар"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Итали"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Дани"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Норвеги"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Швед"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Финлянд"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Хорват"</string>
- <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_brazilian" msgid="5117896443147781939">"Бразил"</string>
- <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_ukrainian" msgid="8176637744389480417">"Украйн"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-ms-rMY/strings.xml b/packages/InputDevices/res/values-ms-rMY/strings.xml
deleted file mode 100644
index e08c39cf3b49..000000000000
--- a/packages/InputDevices/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Peranti Input"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Papan kekunci Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Bahasa Inggeris (UK)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Bahasa Inggeris (Australia)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Bahasa Inggeris (AS), gaya A/bangsa"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Bahasa Inggeris (AS), gaya Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Bahasa Inggeris (AS), gaya Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Bahasa Jerman"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Bahasa Perancis"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Bahasa Perancis (Kanada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Bahasa Rusia"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Bahasa Rusia, gaya Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Bahasa Sepanyol"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Perancis Switzerland"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Jerman Switzerland"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Bahasa Belgium"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bahasa Bulgaria"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Bahasa Itali"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Bahasa Denmark"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Bahasa Norway"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Bahasa Sweden"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Bahasa Finland"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Bahasa Croatia"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Bahasa Czech"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Bahasa Estonia"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Bahasa Hungary"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Bahasa Iceland"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Bahasa Brazil"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Bahasa Portugis"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Bahasa Slovakia"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Bahasa Slovenia"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Bahasa Turki"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Bahasa Ukraine"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-nb/strings.xml b/packages/InputDevices/res/values-nb/strings.xml
deleted file mode 100644
index b646061fe96e..000000000000
--- a/packages/InputDevices/res/values-nb/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Inndataenheter"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android-tastatur"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Engelsk (Storbritannia)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Engelsk (USA)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Engelsk (USA), internasjonal stil"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Engelsk (USA), Colemak-stil"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Engelsk (USA), Dvorak-stil"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Tysk"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Fransk"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Fransk (Canada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Russisk"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Russisk, Mac-stil"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Spansk"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Sveitsisk fransk"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Sveitsisk standardtysk"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgisk"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgarsk"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiensk"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Dansk"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norsk"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Svensk"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finsk"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatisk"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tsjekkisk"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estisk"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungarsk"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandsk"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brasiliansk"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portugisisk"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slovakisk"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Slovensk"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Tyrkisk"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ukrainsk"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-nl/strings.xml b/packages/InputDevices/res/values-nl/strings.xml
deleted file mode 100644
index 56d84c95c55d..000000000000
--- a/packages/InputDevices/res/values-nl/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Invoerapparaten"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android-toetsenbord"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Engels (Verenigd Koninkrijk)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Engels (Verenigde Staten)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Engels (VS), internationaal"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Engels (VS), Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Engels (VS), Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Duits"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Frans"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Frans (Canada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Russisch"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Russisch, Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Spaans"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Zwitsers Frans"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Zwitsers Duits"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgisch"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgaars"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiaans"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Deens"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Noors"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Zweeds"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Fins"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatisch"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tsjechisch"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estlands"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hongaars"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"IJslands"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Braziliaans"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portugees"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slowaaks"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Sloveens"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turks"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Oekraïens"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-pl/strings.xml b/packages/InputDevices/res/values-pl/strings.xml
deleted file mode 100644
index 4522215c08ee..000000000000
--- a/packages/InputDevices/res/values-pl/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Urządzenia wejściowe"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Klawiatura Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Angielski (Wielka Brytania)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Angielski (USA)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Angielski (USA), międzynarodowy"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Angielski (USA), Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Angielski (USA), Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Niemiecki"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Francuski"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Francuski (Kanada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Rosyjski"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Rosyjski, Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Hiszpański"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Francuski (Szwajcaria)"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Niemiecki (Szwajcaria)"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgijski"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bułgarski"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Włoski"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Duński"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norweski"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Szwedzki"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Fiński"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Chorwacki"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czeski"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estoński"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Węgierski"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandzki"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brazylijski"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portugalski"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Słowacki"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Słoweński"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turecki"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ukraiński"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-pt-rPT/strings.xml b/packages/InputDevices/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 9a639cd49340..000000000000
--- a/packages/InputDevices/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Dispositivos de entrada"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Teclado do Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Inglês (RU)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Inglês (EUA)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Inglês (EUA), est. Internacional"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Inglês (EUA), estilo Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Inglês (EUA), estilo Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Alemão"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Francês"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Francês (Canadá)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Russo"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Russo, estilo Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Espanhol"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Francês (Suíça)"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Alemão (Suíça)"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belga"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Búlgaro"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiano"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Dinamarquês"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norueguês"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Sueco"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandês"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croata"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Checo"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estónio"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Húngaro"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandês"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brasileiro"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Português"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Eslovaco"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Esloveno"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turco"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ucraniano"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-pt/strings.xml b/packages/InputDevices/res/values-pt/strings.xml
deleted file mode 100644
index 05a0cd09af7e..000000000000
--- a/packages/InputDevices/res/values-pt/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Dispositivos de entrada"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Teclado do Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Inglês (Reino Unido)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Inglês (EUA)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Inglês (EUA), estilo internacional"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Inglês (EUA), estilo Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Inglês (EUA), estilo Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Alemão"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Francês"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Francês (Canadá)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Russo"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Russo, estilo Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Espanhol"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Francês suíço"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Alemão suíço"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belga"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Búlgaro"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiano"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Dinamarquês"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norueguês"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Sueco"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandês"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croata"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tcheco"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estoniano"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Húngaro"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandês"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brasileiro"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Português"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Eslovaco"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Esloveno"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turco"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ucraniano"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-ro/strings.xml b/packages/InputDevices/res/values-ro/strings.xml
deleted file mode 100644
index 6ec5b254efd9..000000000000
--- a/packages/InputDevices/res/values-ro/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Dispozitive de introducere de date"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Tastatură Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Englez (Regatul Unit)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Englez (S.U.A.)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Englez (S.U.A.), stil internațional"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Englez (S.U.A.), stil Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Englez (S.U.A.), stil Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"German"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Francez"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Francez (Canada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Rus"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Rus, stil Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Spaniol"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Francez (Elveția)"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"German (Elveția)"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgian"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgar"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italian"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danez"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norvegian"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Suedez"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandez"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croat"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Ceh"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonian"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Maghiar"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandez"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brazilian"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portughez"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slovac"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Sloven"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turc"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ucrainean"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-ru/strings.xml b/packages/InputDevices/res/values-ru/strings.xml
deleted file mode 100644
index 5a80358249e5..000000000000
--- a/packages/InputDevices/res/values-ru/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Устройства ввода"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Клавиатура Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"английский (Великобритания)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"английский (США)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"English (US), International style"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"English (US), Colemak style"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"English (US), Dvorak style"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"немецкий"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"французский"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Французский (Канада)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"русский"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Russian, Mac style"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"испанский"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"швейцарский французский"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"швейцарский немецкий"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Нидерландский (Бельгия)"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Болгарский"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"итальянский"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"датский"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"норвежский"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"шведский"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"финский"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"хорватский"</string>
- <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_brazilian" msgid="5117896443147781939">"Португальский (Бразилия)"</string>
- <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_ukrainian" msgid="8176637744389480417">"украинский"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-sk/strings.xml b/packages/InputDevices/res/values-sk/strings.xml
deleted file mode 100644
index 01ab042c5b4d..000000000000
--- a/packages/InputDevices/res/values-sk/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Vstupné zariadenia"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Klávesnica Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"anglické (Spojené kráľovstvo)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"anglické (USA)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"anglické (USA), medzinárodné"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"anglické (USA), štýl Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"anglické (USA), štýl Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"nemecké"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"francúzske"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"francúzske (Kanada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"ruské"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"ruské, štýl Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"španielske"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"švajčiarske (francúzština)"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"švajčiarske (nemčina)"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"belgické"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"bulharské"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"talianske"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"dánske"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"nórske"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"švédske"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"fínske"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"chorvátske"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"české"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estónske"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"maďarské"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandské"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"brazílske"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"portugalské"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"slovenské"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"slovinské"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"turecké"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"ukrajinské"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-sl/strings.xml b/packages/InputDevices/res/values-sl/strings.xml
deleted file mode 100644
index 30ff3c456d57..000000000000
--- a/packages/InputDevices/res/values-sl/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Vhodne naprave"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Tipkovnica Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"angleška (Združeno kraljestvo)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"angleška (ZDA)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"angleška (ZDA), mednarodni slog"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"angleška (ZDA), slog Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"angleška (ZDA), slog Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"nemška"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"francoska"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"francoska (Kanada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"ruska"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"ruska, slog Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"španska"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"švicarska francoska"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"švicarska nemška"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"belgijska"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"bolgarska"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"italijanska"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"danska"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"norveška"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"švedska"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finska"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"hrvaška"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"češka"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estonska"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"madžarska"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandska"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"brazilska"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"portugalska"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"slovaška"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"slovenska"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"turška"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"ukrajinska"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-sr/strings.xml b/packages/InputDevices/res/values-sr/strings.xml
deleted file mode 100644
index 4b7910c52ce5..000000000000
--- a/packages/InputDevices/res/values-sr/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Улазни уређаји"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android тастатура"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"енглески (Уједињено Краљевство)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"енглески (САД)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"енглески (САД), међународни стил"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"енглески (САД), Colemak стил"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"енглески (САД), Dvorak стил"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"немачки"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"француски"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"француски (Канада)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"руски"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"руски, Mac стил"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"шпански"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"швајцарски француски"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"швајцарски немачки"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"белгијски"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"бугарски"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"италијански"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"дански"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"норвешки"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"шведски"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"фински"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"хрватски"</string>
- <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_brazilian" msgid="5117896443147781939">"бразилски"</string>
- <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_ukrainian" msgid="8176637744389480417">"украјински"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-sv/strings.xml b/packages/InputDevices/res/values-sv/strings.xml
deleted file mode 100644
index 25a5ae856ed0..000000000000
--- a/packages/InputDevices/res/values-sv/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Indataenheter"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Androids tangentbord"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Engelskt (Storbritannien)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Engelskt (USA)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Engelskt (USA), internationellt"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Engelskt (USA), colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Engelskt (USA), dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Tyskt"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Franskt"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Franskt (Kanada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Ryskt"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Ryskt, Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Spanskt"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Franskt (Schweiz)"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Tyskt (Schweiz)"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgiskt"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgariskt"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italienskt"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danskt"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norskt"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Svenskt"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finskt"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatiskt"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tjeckiskt"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estniskt"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungerskt"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Isländskt"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Portugisiskt (Brasilien)"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portugisiskt"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slovakiskt"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Slovenskt"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turkiskt"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ukrainskt"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-sw/strings.xml b/packages/InputDevices/res/values-sw/strings.xml
deleted file mode 100644
index 65c9f59e7637..000000000000
--- a/packages/InputDevices/res/values-sw/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Vifaa Ingizi"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Kibodi ya Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Kiingereza (Uingereza)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Kingereza (Marekani)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Kiingereza (Marekani), Muundo wa Kimataifa"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Kiingereza (Marekani), Muundo wa Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Kiingereza (Marekani), Muundo wa Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Kijerumani"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Kifaransa"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Kifaransa (Kanada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Kirusi"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Kirusi, Muundo wa Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Kihispania"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Kifaransa cha Uswisi"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Kijerumani cha Uswisi"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Kibelgiji"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Kibulgaria"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Kiitaliano"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Kidenmarki"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Kinorwei"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Kiswidi"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Kifinlandi"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kikroeshia"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Kicheki"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Kiestonia"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Kihungari"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Kiaislandi"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Kibrazili"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Kireno"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Kislovakia"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Kislovenia"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Kituruki"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Kiukrania"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-th/strings.xml b/packages/InputDevices/res/values-th/strings.xml
deleted file mode 100644
index 0cc7d47ed5c9..000000000000
--- a/packages/InputDevices/res/values-th/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"อุปกรณ์อินพุต"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"แป้นพิมพ์แอนดรอยด์"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"อังกฤษ (สหราชอาณาจักร)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"อังกฤษ (อเมริกัน)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"อังกฤษ (อเมริกัน), รูปแบบนานาชาติ"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"อังกฤษ (อเมริกัน), รูปแบบ Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"อังกฤษ (อเมริกัน), รูปแบบ Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"เยอรมัน"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"ฝรั่งเศส"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"ฝรั่งเศส (แคนาดา)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"รัสเซีย"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"รัสเซีย, รูปแบบ Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"สเปน"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"ฝรั่งเศส (สวิส)"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"เยอรมันสวิส"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"เบลเยียม"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"บัลแกเรีย"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"อิตาลี"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"เดนมาร์ก"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"นอร์เวย์"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"สวีเดน"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ฟินแลนด์"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"โครเอเชีย"</string>
- <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_brazilian" msgid="5117896443147781939">"บราซิล"</string>
- <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_ukrainian" msgid="8176637744389480417">"ยูเครน"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-tl/strings.xml b/packages/InputDevices/res/values-tl/strings.xml
deleted file mode 100644
index 08f34d2de4e6..000000000000
--- a/packages/InputDevices/res/values-tl/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Mga Input Device"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android keyboard"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Ingles (UK)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Ingles (US)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Ingles (US), istilong International"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Ingles (US), istilong Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Ingles (US), istilong Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"German"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"French"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"French (Canada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Russian"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Russian, istilong Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Spanish"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Swiss French"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Swiss German"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgian"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgarian"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italian"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danish"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norwegian"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Swedish"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnish"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croatian"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czech"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonian"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungarian"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Icelandic"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brazilian"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portuguese"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slovak"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Slovenian"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Turkish"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ukrainian"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-tr/strings.xml b/packages/InputDevices/res/values-tr/strings.xml
deleted file mode 100644
index d146b3552713..000000000000
--- a/packages/InputDevices/res/values-tr/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Giriş Cihazları"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android klavyesi"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"İngilizce (İngiltere)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"İngilizce (ABD)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"İngilizce (ABD) Uluslararası stil"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"İngilizce (ABD) Colemak stili"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"İngilizce (ABD) Dvorak stili"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Almanca"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Fransızca"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Fransızca (Kanada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Rusça"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Rusça, Mac stili"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"İspanyolca"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"İsviçre Fransızcası"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"İsviçre Almancası"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belçika dili"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgarca"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"İtalyanca"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danca"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norveççe"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"İsveççe"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Fince"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Hırvatça"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Çekçe"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonca"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Macarca"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"İzlandaca"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Brezilya dili"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Portekizce"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Slovakça"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Slovence"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Türkçe"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Ukraynaca"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-uk/strings.xml b/packages/InputDevices/res/values-uk/strings.xml
deleted file mode 100644
index ee6ffc7cec13..000000000000
--- a/packages/InputDevices/res/values-uk/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Пристрої вводу"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Клавіатура Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"англійська (Великобританія)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"англійська (США)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"англійська (США), міжнародна"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"англійська (США), розкладка Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"англійська (США), розкладка Дворака"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"німецька"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"французька"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"французька (Канада)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"російська"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"російська, розкладка Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"іспанська"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"французька (Швейцарія)"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"німецька (Швейцарія)"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"бельгійська"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"болгарська"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"італійська"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"данська"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"норвезька"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"шведська"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"фінська"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"хорватська"</string>
- <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_brazilian" msgid="5117896443147781939">"бразильська"</string>
- <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_ukrainian" msgid="8176637744389480417">"українська"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-vi/strings.xml b/packages/InputDevices/res/values-vi/strings.xml
deleted file mode 100644
index 7a65e459c1be..000000000000
--- a/packages/InputDevices/res/values-vi/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Thiết bị đầu vào"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Bàn phím Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Tiếng Anh (Anh)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Tiếng Anh (Mỹ)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Tiếng Anh (Mỹ), kiểu Quốc tế"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Tiếng Anh (Mỹ), kiểu Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Tiếng Anh (Mỹ), kiểu Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Tiếng Đức"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Tiếng Pháp"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Tiếng Pháp (Canada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Tiếng Nga"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Tiếng Nga, kiểu Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Tiếng Tây Ban Nha"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Tiếng Pháp ở Thụy Sĩ"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Tiếng Đức Thụy Sĩ"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Tiếng Bỉ"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Tiếng Bungary"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Tiếng Ý"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Tiếng Đan Mạch"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Tiếng Na Uy"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Tiếng Thụy Điển"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Tiếng Phần Lan"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Tiếng Croatia"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tiếng Séc"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Tiếng Estonia"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Tiếng Hungary"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Tiếng Ai-xơ-len"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Tiếng Brazil"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Tiếng Bồ Đào Nha"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Tiếng Slovak"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Tiếng Sloven"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Tiếng Thổ Nhĩ Kỳ"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Tiếng Ukraina"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-zh-rCN/strings.xml b/packages/InputDevices/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 2e18180bf661..000000000000
--- a/packages/InputDevices/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"输入设备"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android 键盘"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"英语(英式)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"英语(美式)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"英语(美式),国际风格"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"英语(美式),Colemak 风格"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"英语(美式),Dvorak 风格"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"德语"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"法语"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"法语(加拿大)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"俄语"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"俄语,Mac 风格"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"西班牙语"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"瑞士法语"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"瑞士德语"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"比利时语"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"保加利亚语"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"意大利语"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"丹麦语"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"挪威语"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"瑞典语"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"芬兰语"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"克罗地亚语"</string>
- <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_brazilian" msgid="5117896443147781939">"巴西语"</string>
- <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_ukrainian" msgid="8176637744389480417">"乌克兰语"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-zh-rHK/strings.xml b/packages/InputDevices/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 839c54646b89..000000000000
--- a/packages/InputDevices/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"輸入裝置"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android 鍵盤"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"英文 (英國)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"英文 (美國)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"英文 (美國),國際樣式"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"英文 (美國),Colemak 樣式"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"英文 (美國),Dvorak 樣式"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"德文"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"法文"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"法文 (加拿大)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"俄文"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"俄文,Mac 樣式"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"西班牙文"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"法文 (瑞士)"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"德文(瑞士)"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"比利時文"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"保加利亞文"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"意大利文"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"丹麥文"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"挪威文"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"瑞典文"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"芬蘭文"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"克羅地亞文"</string>
- <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_brazilian" msgid="5117896443147781939">"巴西文"</string>
- <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_ukrainian" msgid="8176637744389480417">"烏克蘭文"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-zh-rTW/strings.xml b/packages/InputDevices/res/values-zh-rTW/strings.xml
deleted file mode 100644
index ba9f132d8f62..000000000000
--- a/packages/InputDevices/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"輸入裝置"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android 鍵盤"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"英文 (英國)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"英文 (美國)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"英文 (美國),國際樣式"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"英文 (美國),Colemak 樣式"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"英文 (美國),Dvorak 樣式"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"德文"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"法文"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"法文 (加拿大)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"俄文"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"俄文,Mac 樣式"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"西班牙文"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"法文 (瑞士)"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"德文 (瑞士)"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"比利時式"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"保加利亞文"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"義大利文"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"丹麥文"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"挪威文"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"瑞典文"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"芬蘭文"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"克羅埃西亞文"</string>
- <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_brazilian" msgid="5117896443147781939">"巴西式"</string>
- <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_ukrainian" msgid="8176637744389480417">"烏克蘭文"</string>
-</resources>
diff --git a/packages/InputDevices/res/values-zu/strings.xml b/packages/InputDevices/res/values-zu/strings.xml
deleted file mode 100644
index fbf1074c35d7..000000000000
--- a/packages/InputDevices/res/values-zu/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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="8016145283189546017">"Amadivayisi wokufaka"</string>
- <string name="keyboard_layouts_label" msgid="6688773268302087545">"Ikhibhodi ye-Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"I-English (UK)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"I-English (US)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"I-English (US), isitayela sakwamanye amazwe"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"I-English (US), isitayela se-Colemak"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"I-English (US), isitayela se-Dvorak"</string>
- <string name="keyboard_layout_german_label" msgid="8451565865467909999">"Isi-German"</string>
- <string name="keyboard_layout_french_label" msgid="813450119589383723">"Isi-French"</string>
- <string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Isi-French (Canada)"</string>
- <string name="keyboard_layout_russian_label" msgid="8724879775815042968">"Isi-Russian"</string>
- <string name="keyboard_layout_russian_mac_label" msgid="3795866869038264796">"Isi-Russian, isitayela se-Mac"</string>
- <string name="keyboard_layout_spanish_label" msgid="7091555148131908240">"Isi-Spanish"</string>
- <string name="keyboard_layout_swiss_french_label" msgid="4659191025396371684">"Isi-Swiss French"</string>
- <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Isi-Swiss German"</string>
- <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Isi-Belgian"</string>
- <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Isi-Bulgarian"</string>
- <string name="keyboard_layout_italian" msgid="6497079660449781213">"Isi-Italian"</string>
- <string name="keyboard_layout_danish" msgid="8036432066627127851">"Isi-Danish"</string>
- <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Isi-Norwegian"</string>
- <string name="keyboard_layout_swedish" msgid="732959109088479351">"Isi-Swedish"</string>
- <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Isi-Finnish"</string>
- <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Isi-Croatian"</string>
- <string name="keyboard_layout_czech" msgid="1349256901452975343">"Isi-Czech"</string>
- <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Isi-Estonian"</string>
- <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Isi-Hungarian"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Isi-Icelandic"</string>
- <string name="keyboard_layout_brazilian" msgid="5117896443147781939">"Isi-Brazilian"</string>
- <string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Isi-Portuguese"</string>
- <string name="keyboard_layout_slovak" msgid="2469379934672837296">"Isi-Slovak"</string>
- <string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Isi-Slovenian"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Isi-Turkish"</string>
- <string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Isi-Ukrainian"</string>
-</resources>
diff --git a/packages/Keyguard/Android.mk b/packages/Keyguard/Android.mk
index f6f441d002fb..1f2b5fb51372 100644
--- a/packages/Keyguard/Android.mk
+++ b/packages/Keyguard/Android.mk
@@ -18,8 +18,6 @@ include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-subdir-Iaidl-files)
-LOCAL_JAVA_LIBRARIES := services
-
LOCAL_PACKAGE_NAME := Keyguard
LOCAL_CERTIFICATE := platform
diff --git a/packages/Keyguard/res/values-af/strings.xml b/packages/Keyguard/res/values-af/strings.xml
index 834f2f66cc5f..7e1f0bf80d0b 100644
--- a/packages/Keyguard/res/values-af/strings.xml
+++ b/packages/Keyguard/res/values-af/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Laatwag-knoppie"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Speel-knoppie"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Stop-knoppie"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Laaik baie"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Laaik niks"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Hart"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Ontsluit om voort te gaan"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Begin gekanselleer"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Laat los <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> om uit te vee."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> sal nie uitgevee word nie."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-am/strings.xml b/packages/Keyguard/res/values-am/strings.xml
index 6b4980d04d31..2f6dab08e91a 100644
--- a/packages/Keyguard/res/values-am/strings.xml
+++ b/packages/Keyguard/res/values-am/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"ለአፍታ አቁም አዝራር"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"የአጫውት አዝራር"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"አቁም አዝራር"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"አሪፍ"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"ደባሪ"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"ልብ"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"ለመቀጠል ይክፈቱ"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"ማስጀመር ተሰርዟል"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"ለመሰረዝ <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>ን ጣል ያድርጉ።"</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> አይሰርዝም።"</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-ar/strings.xml b/packages/Keyguard/res/values-ar/strings.xml
index fa778b3293b2..bcfe7db32f4e 100644
--- a/packages/Keyguard/res/values-ar/strings.xml
+++ b/packages/Keyguard/res/values-ar/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"زر الإيقاف المؤقت"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"زر التشغيل"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"زر الإيقاف"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"رائعة"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"معارضة"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"قلب"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"إلغاء القفل للمتابعة"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"تم إلغاء التشغيل"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"أسقط <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> للحذف."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"لن يتم حذف <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ب ت ث"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-be/strings.xml b/packages/Keyguard/res/values-be/strings.xml
index b34d44193ae3..81020a030f23 100644
--- a/packages/Keyguard/res/values-be/strings.xml
+++ b/packages/Keyguard/res/values-be/strings.xml
@@ -71,20 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Кнопка паўзы"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Кнопка прайгравання"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Кнопка спынення"</string>
- <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) -->
- <skip />
- <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) -->
- <skip />
- <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) -->
- <skip />
- <!-- no translation found for keyguard_accessibility_show_bouncer (5425837272418176176) -->
- <skip />
- <!-- no translation found for keyguard_accessibility_hide_bouncer (7896992171878309358) -->
- <skip />
- <!-- no translation found for keyguard_accessibility_delete_widget_start (4096550552634391451) -->
- <skip />
- <!-- no translation found for keyguard_accessibility_delete_widget_end (508833506780909393) -->
- <skip />
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"Alt"</string>
diff --git a/packages/Keyguard/res/values-bg/strings.xml b/packages/Keyguard/res/values-bg/strings.xml
index 468570f3f483..869ab7b8f674 100644
--- a/packages/Keyguard/res/values-bg/strings.xml
+++ b/packages/Keyguard/res/values-bg/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Бутон за пауза"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Бутон за пускане"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Бутон за спиране"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Харесва ми"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Не ми харесва"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Сърце"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Отключете, за да продължите"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Стартирането е анулирано"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Пуснете <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>, за да изтриете."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> няма да се изтрие."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"АБВ"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-ca/strings.xml b/packages/Keyguard/res/values-ca/strings.xml
index 1b7672316b03..4f97c6b9c03b 100644
--- a/packages/Keyguard/res/values-ca/strings.xml
+++ b/packages/Keyguard/res/values-ca/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Botó de pausa"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Botó de reproducció"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Botó de parada"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"M\'agrada"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"No m\'agrada"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Cor"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Desbloqueja per continuar"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"S\'ha cancel·lat l\'inici"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Deixa anar <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> per suprimir-lo."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"No se suprimirà <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-cs/strings.xml b/packages/Keyguard/res/values-cs/strings.xml
index b4598cbb3045..ec2833c56811 100644
--- a/packages/Keyguard/res/values-cs/strings.xml
+++ b/packages/Keyguard/res/values-cs/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Tlačítko Pozastavit"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Tlačítko Přehrát"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Tlačítko Zastavit"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Líbí se mi"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Nelíbí se mi"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Srdíčko"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Pokračujte odemknutím"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Spuštění zrušeno"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Uvolněním dotyku widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> vymažete."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> nebude vymazán."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"Alt"</string>
diff --git a/packages/Keyguard/res/values-da/strings.xml b/packages/Keyguard/res/values-da/strings.xml
index 0cff37cf642f..cfc746416eff 100644
--- a/packages/Keyguard/res/values-da/strings.xml
+++ b/packages/Keyguard/res/values-da/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Pause-knap"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Afspil-knap"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Stop-knap"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Synes om"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Synes ikke om"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Hjerte"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Lås op for at gå videre"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Starten blev annulleret"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Slip <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> for at slette."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> slettes ikke."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-de/strings.xml b/packages/Keyguard/res/values-de/strings.xml
index d42e1b900a3f..85d1a4f9ab71 100644
--- a/packages/Keyguard/res/values-de/strings.xml
+++ b/packages/Keyguard/res/values-de/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Schaltfläche für Pause"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Schaltfläche für Wiedergabe"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Schaltfläche für Stopp"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Mag ich"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Mag ich nicht"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Herz"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Zum Fortfahren entsperren"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Start abgebrochen"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Legen Sie <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> zum Löschen ab."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> wird nicht gelöscht."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-el/strings.xml b/packages/Keyguard/res/values-el/strings.xml
index 2d67df0d69e8..e86f24ddaa8d 100644
--- a/packages/Keyguard/res/values-el/strings.xml
+++ b/packages/Keyguard/res/values-el/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Κουμπί παύσης"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Κουμπί αναπαραγωγής"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Κουμπί διακοπής"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Επιδοκιμασία"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Αποδοκιμασία"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Καρδιά"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Ξεκλειδώστε για να συνεχίσετε"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Η εκκίνηση ακυρώθηκε"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Αποθέστε <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> για διαγραφή."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> δεν θα διαγραφεί."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ΑΒΓ"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-en-rGB/strings.xml b/packages/Keyguard/res/values-en-rGB/strings.xml
index 892bab73e1f8..967c3fa26212 100644
--- a/packages/Keyguard/res/values-en-rGB/strings.xml
+++ b/packages/Keyguard/res/values-en-rGB/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Pause button"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Play button"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Stop button"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Thumbs up"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Thumbs down"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Heart"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Unlock to continue"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Launch cancelled"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Drop <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> to delete."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> will not be deleted."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-en-rIN/strings.xml b/packages/Keyguard/res/values-en-rIN/strings.xml
deleted file mode 100644
index 892bab73e1f8..000000000000
--- a/packages/Keyguard/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Type PIN code"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Touch 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>
- <string name="keyguard_label_text" msgid="861796461028298424">"To unlock, press Menu, then 0."</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Maximum Face Unlock attempts exceeded"</string>
- <string name="keyguard_charged" msgid="3272223906073492454">"Charged"</string>
- <string name="keyguard_plugged_in" msgid="8117572000639998388">"Charging, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="keyguard_low_battery" msgid="8143808018719173859">"Connect your charger."</string>
- <string name="keyguard_instructions_when_pattern_disabled" msgid="1332288268600329841">"Press Menu to unlock."</string>
- <string name="keyguard_network_locked_message" msgid="9169717779058037168">"Network locked"</string>
- <string name="keyguard_missing_sim_message_short" msgid="494980561304211931">"No SIM card"</string>
- <string name="keyguard_missing_sim_message" product="tablet" msgid="1445849005909260039">"No SIM card in tablet."</string>
- <string name="keyguard_missing_sim_message" product="default" msgid="3481110395508637643">"No SIM card in phone."</string>
- <string name="keyguard_missing_sim_instructions" msgid="5210891509995942250">"Insert a SIM card."</string>
- <string name="keyguard_missing_sim_instructions_long" msgid="5968985489463870358">"The SIM card is missing or not readable. Insert a SIM card."</string>
- <string name="keyguard_permanent_disabled_sim_message_short" msgid="8340813989586622356">"Unusable SIM card."</string>
- <string name="keyguard_permanent_disabled_sim_instructions" msgid="5892940909699723544">"Your SIM card has been permanently disabled.\n Contact your wireless service provider for another SIM card."</string>
- <string name="keyguard_sim_locked_message" msgid="6875773413306380902">"SIM card is locked."</string>
- <string name="keyguard_sim_puk_locked_message" msgid="3747232467471801633">"SIM card is PUK-locked."</string>
- <string name="keyguard_sim_unlock_progress_dialog_message" msgid="7975221805033614426">"Unlocking SIM card…"</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d of %3$d."</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Add widget"</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Empty"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Unlock area expanded."</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Unlock area collapsed."</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> widget."</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"User selector"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Status"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Camera"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Media controls"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Widget reordering started."</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Widget reordering ended."</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> deleted."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Expand unlock area."</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Slide unlock."</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Pattern unlock."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Face unlock."</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Pin unlock."</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Password unlock."</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Pattern area."</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Slide area."</string>
- <string name="keyguard_accessibility_transport_prev_description" msgid="1337286538318543555">"Previous track button"</string>
- <string name="keyguard_accessibility_transport_next_description" msgid="7073928300444909320">"Next track button"</string>
- <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Pause button"</string>
- <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Play button"</string>
- <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Stop button"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Thumbs up"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Thumbs down"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Heart"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Unlock to continue"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Launch cancelled"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Drop <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> to delete."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> will not be deleted."</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Cancel"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Delete"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Done"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Mode change"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"Unlock"</string>
- <string name="description_target_camera" msgid="969071997552486814">"Camera"</string>
- <string name="description_target_silent" msgid="893551287746522182">"Silent"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"Sound on"</string>
- <string name="description_target_search" msgid="3091587249776033139">"Search"</string>
- <string name="description_direction_up" msgid="7169032478259485180">"Slide up for <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_direction_down" msgid="5087739728639014595">"Slide down for <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_direction_left" msgid="7207478719805562165">"Slide left for <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_direction_right" msgid="8034433242579600980">"Slide right for <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="user_switched" msgid="3768006783166984410">"Current user <xliff:g id="NAME">%1$s</xliff:g>."</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"Emergency call"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Forgot Pattern"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"Wrong Pattern"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"Wrong Password"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"Wrong PIN"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Try again in <xliff:g id="NUMBER">%d</xliff:g> seconds."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"Draw your pattern"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Enter SIM PIN"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"Enter PIN"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"Enter Password"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM is now disabled. Enter PUK code to continue. Contact carrier for details."</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Enter desired PIN code"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Confirm desired PIN code"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Unlocking SIM card…"</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Incorrect PIN code."</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Type a PIN that is 4 to 8 numbers."</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK code should be 8 numbers or more."</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"Re-enter the correct PUK code. Repeated attempts will permanently disable the SIM."</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN codes do not match"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Too many pattern attempts"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"To unlock, sign in with your Google account."</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"Username (email)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"Password"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"Sign in"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"Invalid username or password."</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Forgot your username or password?\nVisit "<b>"google.com/accounts/recovery"</b>"."</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"Checking account…"</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"You have incorrectly typed your PIN <xliff:g id="NUMBER_0">%d</xliff:g> times. \n\nTry again in <xliff:g id="NUMBER_1">%d</xliff:g> seconds."</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"You have incorrectly typed your password <xliff:g id="NUMBER_0">%d</xliff:g> times. \n\nTry again in <xliff:g id="NUMBER_1">%d</xliff:g> seconds."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"You have incorrectly drawn your unlock pattern <xliff:g id="NUMBER_0">%d</xliff:g> times. \n\nTry again in <xliff:g id="NUMBER_1">%d</xliff:g> seconds."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"You have incorrectly attempted to unlock the tablet <xliff:g id="NUMBER_0">%d</xliff:g> times. After <xliff:g id="NUMBER_1">%d</xliff:g> more unsuccessful attempts, the tablet will be reset to factory default and all user data will be lost."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"You have incorrectly attempted to unlock the phone <xliff:g id="NUMBER_0">%d</xliff:g> times. After <xliff:g id="NUMBER_1">%d</xliff:g> more unsuccessful attempts, the phone will be reset to factory default and all user data will be lost."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"You have incorrectly attempted to unlock the tablet <xliff:g id="NUMBER">%d</xliff:g> times. The tablet will now be reset to factory default."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"You have incorrectly attempted to unlock the phone <xliff:g id="NUMBER">%d</xliff:g> times. The phone will now be reset to factory default."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"You have incorrectly drawn your unlock pattern <xliff:g id="NUMBER_0">%d</xliff:g> times. After <xliff:g id="NUMBER_1">%d</xliff:g> more unsuccessful attempts, you will be asked to unlock your tablet using an email account.\n\n Try again in <xliff:g id="NUMBER_2">%d</xliff:g> seconds."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"You have incorrectly drawn your unlock pattern <xliff:g id="NUMBER_0">%d</xliff:g> times. After <xliff:g id="NUMBER_1">%d</xliff:g> more unsuccessful attempts, you will be asked to unlock your phone using an email account.\n\n Try again in <xliff:g id="NUMBER_2">%d</xliff:g> seconds."</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Remove"</string>
- <string name="keyguard_transport_prev_description" msgid="8229108430245669854">"Previous track button"</string>
- <string name="keyguard_transport_next_description" msgid="4299258300283778305">"Next track button"</string>
- <string name="keyguard_transport_pause_description" msgid="5093073338238310224">"Pause button"</string>
- <string name="keyguard_transport_play_description" msgid="2924628863741150956">"Play button"</string>
- <string name="keyguard_transport_stop_description" msgid="3084179324810575787">"Stop button"</string>
- <string name="keyguard_carrier_default" msgid="8700650403054042153">"No service."</string>
-</resources>
diff --git a/packages/Keyguard/res/values-es-rUS/strings.xml b/packages/Keyguard/res/values-es-rUS/strings.xml
index 2278efd5a4ab..787581a84019 100644
--- a/packages/Keyguard/res/values-es-rUS/strings.xml
+++ b/packages/Keyguard/res/values-es-rUS/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Botón de pausa"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Botón de reproducción"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Botón de detención"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Votos a favor"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Votos en contra"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Corazón"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Desbloquea para continuar."</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Se canceló el inicio."</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Suelta <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> para eliminarlo."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"No se eliminará <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-es/strings.xml b/packages/Keyguard/res/values-es/strings.xml
index 330926bd182e..d0c79ebabf40 100644
--- a/packages/Keyguard/res/values-es/strings.xml
+++ b/packages/Keyguard/res/values-es/strings.xml
@@ -30,7 +30,7 @@
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorrecto"</string>
<string name="keyguard_label_text" msgid="861796461028298424">"Para desbloquear el teléfono, pulsa la tecla de menú y, a continuación, pulsa 0."</string>
<string name="faceunlock_multiple_failures" msgid="754137583022792429">"Se ha superado el número máximo de intentos de desbloqueo facial."</string>
- <string name="keyguard_charged" msgid="3272223906073492454">"Cargada"</string>
+ <string name="keyguard_charged" msgid="3272223906073492454">"Cargado"</string>
<string name="keyguard_plugged_in" msgid="8117572000639998388">"Cargando (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
<string name="keyguard_low_battery" msgid="8143808018719173859">"Conecta el cargador."</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="1332288268600329841">"Ve al menú para desbloquear la pantalla."</string>
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Botón de pausa"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Botón de reproducción"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Botón para detener la reproducción"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Me gusta"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"No me gusta"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Corazón"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Desbloquear para continuar"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Inicio cancelado"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Suelta <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> para eliminarlo."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> no se eliminará."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-et-rEE/strings.xml b/packages/Keyguard/res/values-et-rEE/strings.xml
deleted file mode 100644
index a2a4091b624e..000000000000
--- a/packages/Keyguard/res/values-et-rEE/strings.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Sisestage PIN-kood"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Puudutage 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>
- <string name="keyguard_label_text" msgid="861796461028298424">"Avamiseks vajutage menüüklahvi, seejärel klahvi 0."</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Maksimaalne teenusega Face Unlock avamise katsete arv on ületatud"</string>
- <string name="keyguard_charged" msgid="3272223906073492454">"Laetud"</string>
- <string name="keyguard_plugged_in" msgid="8117572000639998388">"Laadimine, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="keyguard_low_battery" msgid="8143808018719173859">"Ühendage laadija."</string>
- <string name="keyguard_instructions_when_pattern_disabled" msgid="1332288268600329841">"Avamiseks vajutage menüüklahvi."</string>
- <string name="keyguard_network_locked_message" msgid="9169717779058037168">"Võrk on suletud"</string>
- <string name="keyguard_missing_sim_message_short" msgid="494980561304211931">"SIM-kaarti pole"</string>
- <string name="keyguard_missing_sim_message" product="tablet" msgid="1445849005909260039">"Tahvelarvutis pole SIM-kaarti."</string>
- <string name="keyguard_missing_sim_message" product="default" msgid="3481110395508637643">"Telefonis pole SIM-kaarti."</string>
- <string name="keyguard_missing_sim_instructions" msgid="5210891509995942250">"Sisestage SIM-kaart."</string>
- <string name="keyguard_missing_sim_instructions_long" msgid="5968985489463870358">"SIM-kaart puudub või on loetamatu. Sisestage SIM-kaart."</string>
- <string name="keyguard_permanent_disabled_sim_message_short" msgid="8340813989586622356">"Kasutamiskõlbmatu SIM-kaart."</string>
- <string name="keyguard_permanent_disabled_sim_instructions" msgid="5892940909699723544">"SIM-kaart on jäädavalt keelatud.\n Uue SIM-kaardi saamiseks võtke ühendust oma mobiilsideoperaatoriga."</string>
- <string name="keyguard_sim_locked_message" msgid="6875773413306380902">"SIM-kaart on lukus."</string>
- <string name="keyguard_sim_puk_locked_message" msgid="3747232467471801633">"SIM-kaart on PUK-lukus."</string>
- <string name="keyguard_sim_unlock_progress_dialog_message" msgid="7975221805033614426">"SIM-kaardi avamine ..."</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Vidin %2$d/%3$d."</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Vidina lisamine."</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Tühi"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Avamisala on laiendatud."</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Avamisala on ahendatud."</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Vidin <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Kasutaja valija"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Olek"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kaamera"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Meedia juhtnupud"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Vidina ümberkorraldamine algas."</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Vidina ümberkorraldamine lõppes."</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Vidin <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> on kustutatud."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Avamisala laiendamine."</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Lohistamisega avamine."</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Mustriga avamine."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Näoga avamine."</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PIN-koodiga avamine."</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Parooliga avamine."</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Mustri ala."</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Lohistamisala."</string>
- <string name="keyguard_accessibility_transport_prev_description" msgid="1337286538318543555">"Nupp Eelmine lugu"</string>
- <string name="keyguard_accessibility_transport_next_description" msgid="7073928300444909320">"Nupp Järgmine lugu"</string>
- <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Nupp Peata"</string>
- <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Nupp Esita"</string>
- <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Nupp Peata"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Meeldib"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Ei meeldi"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Süda"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Jätkamiseks tühistage lukustus"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Käivitamine on tühistatud"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Kustutamiseks laske vidin <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> lahti."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"Vidinat <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ei kustutata."</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Tühista"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Kustuta"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Valmis"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Režiimi muutmine"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Tõstuklahv"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Sisestusklahv"</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"Luku avamine"</string>
- <string name="description_target_camera" msgid="969071997552486814">"Kaamera"</string>
- <string name="description_target_silent" msgid="893551287746522182">"Hääletu"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"Heli on sees"</string>
- <string name="description_target_search" msgid="3091587249776033139">"Otsing"</string>
- <string name="description_direction_up" msgid="7169032478259485180">"Lohistage üles: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_direction_down" msgid="5087739728639014595">"Lohistage alla: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_direction_left" msgid="7207478719805562165">"Lohistage vasakule: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_direction_right" msgid="8034433242579600980">"Lohistage paremale: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="user_switched" msgid="3768006783166984410">"Praegune kasutaja <xliff:g id="NAME">%1$s</xliff:g>."</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"Hädaabikõne"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Unustasin mustri"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"Vale muster"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"Vale parool"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"Vale PIN-kood"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Proovige uuesti <xliff:g id="NUMBER">%d</xliff:g> sekundi pärast."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"Joonistage oma muster"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Sisestage SIM-i PIN-kood"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"Sisestage PIN-kood"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"Sisestage parool"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM on nüüd keelatud. Jätkamiseks sisestage PUK-kood. Üksikasju küsige operaatorilt."</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Sisestage soovitud PIN-kood"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Kinnitage soovitud PIN-kood"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM-kaardi avamine ..."</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Vale PIN-kood."</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Sisestage 4–8-numbriline PIN-kood."</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK-koodi pikkus peab olema vähemalt 8 numbrit."</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"Sisestage uuesti õige PUK-kood. Korduvkatsete korral keelatakse SIM jäädavalt."</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN-koodid ei ole vastavuses"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Liiga palju mustrikatseid"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"Avamiseks logige sisse oma Google\'i kontoga."</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"Kasutajanimi (e-post)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"Parool"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"Logi sisse"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"Vale kasutajanimi või parool."</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Kas unustasite kasutajanime või parooli?\nKülastage aadressi "<b>"google.com/accounts/recovery"</b>"."</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"Konto kontrollimine ..."</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Olete PIN-koodi <xliff:g id="NUMBER_0">%d</xliff:g> korda valesti sisestanud.\n\nProovige <xliff:g id="NUMBER_1">%d</xliff:g> sekundi pärast uuesti."</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Olete parooli <xliff:g id="NUMBER_0">%d</xliff:g> korda valesti sisestanud. \n\nProovige uuesti <xliff:g id="NUMBER_1">%d</xliff:g> sekundi pärast."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Joonistasite oma avamismustri <xliff:g id="NUMBER_0">%d</xliff:g> korda valesti.\n\nProovige <xliff:g id="NUMBER_1">%d</xliff:g> sekundi pärast uuesti."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Olete üritanud <xliff:g id="NUMBER_0">%d</xliff:g> korda tahvelarvutit valesti avada. Pärast veel <xliff:g id="NUMBER_1">%d</xliff:g> ebaõnnestunud katset lähtestatakse tahvelarvuti tehase vaikeseadetele ja kõik kasutajaandmed lähevad kaotsi."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Olete üritanud <xliff:g id="NUMBER_0">%d</xliff:g> korda telefoni valesti avada. Pärast veel <xliff:g id="NUMBER_1">%d</xliff:g> ebaõnnestunud katset lähtestatakse telefon tehase vaikeseadetele ja kõik kasutajaandmed lähevad kaotsi."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Olete püüdnud tahvelarvutit <xliff:g id="NUMBER">%d</xliff:g> korda valesti avada. Tahvelarvuti lähtestatakse nüüd tehase vaikeseadetele."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Olete püüdnud telefoni <xliff:g id="NUMBER">%d</xliff:g> korda valesti avada. Telefon lähtestatakse nüüd tehase vaikeseadetele."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Joonistasite oma avamismustri <xliff:g id="NUMBER_0">%d</xliff:g> korda valesti. Pärast veel <xliff:g id="NUMBER_1">%d</xliff:g> ebaõnnestunud katset palutakse teil tahvelarvuti avada meilikontoga.\n\n Proovige uuesti <xliff:g id="NUMBER_2">%d</xliff:g> sekundi pärast."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Joonistasite oma avamismustri <xliff:g id="NUMBER_0">%d</xliff:g> korda valesti. Pärast veel <xliff:g id="NUMBER_1">%d</xliff:g> ebaõnnestunud katset palutakse teil telefon avada meilikontoga.\n\n Proovige uuesti <xliff:g id="NUMBER_2">%d</xliff:g> sekundi pärast."</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Eemalda"</string>
- <string name="keyguard_transport_prev_description" msgid="8229108430245669854">"Nupp Eelmine lugu"</string>
- <string name="keyguard_transport_next_description" msgid="4299258300283778305">"Nupp Järgmine lugu"</string>
- <string name="keyguard_transport_pause_description" msgid="5093073338238310224">"Nupp Peata"</string>
- <string name="keyguard_transport_play_description" msgid="2924628863741150956">"Nupp Esita"</string>
- <string name="keyguard_transport_stop_description" msgid="3084179324810575787">"Nupp Peata"</string>
- <string name="keyguard_carrier_default" msgid="8700650403054042153">"Teenus puudub."</string>
-</resources>
diff --git a/packages/Keyguard/res/values-fa/strings.xml b/packages/Keyguard/res/values-fa/strings.xml
index 4b0bce5bb290..83c5a3450e80 100644
--- a/packages/Keyguard/res/values-fa/strings.xml
+++ b/packages/Keyguard/res/values-fa/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"دکمه توقف موقت"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"دکمه پخش"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"دکمه توقف"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"رأی موافق"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"رأی مخالف"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"قلب"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"برای ادامه قفل را باز کنید"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"راه‌اندازی لغو شد"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"جهت حذف، <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> را بکشید."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> پاک نخواهد شد."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-fi/strings.xml b/packages/Keyguard/res/values-fi/strings.xml
index 68d8227543b5..dbca50dc1f22 100644
--- a/packages/Keyguard/res/values-fi/strings.xml
+++ b/packages/Keyguard/res/values-fi/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Tauko-painike"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Toista-painike"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Keskeytä-painike"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Tykkään"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"En tykkää"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Sydän"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Jatka poistamalla lukitus"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Käynnistys peruutettu"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Poista <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> pudottamalla."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"Kohdetta <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ei poisteta."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-fr-rCA/strings.xml b/packages/Keyguard/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 8d07cfd442ab..000000000000
--- a/packages/Keyguard/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Saisissez le NIP."</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><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 NIP pour déverrouiller le clavier."</string>
- <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"NIP erroné."</string>
- <string name="keyguard_label_text" msgid="861796461028298424">"Pour déverrouiller le téléphone, appuyez sur \"Menu\", puis sur 0."</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Nombre maximal autorisé de tentatives Face Unlock atteint."</string>
- <string name="keyguard_charged" msgid="3272223906073492454">"Chargé"</string>
- <string name="keyguard_plugged_in" msgid="8117572000639998388">"En charge (<xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>)"</string>
- <string name="keyguard_low_battery" msgid="8143808018719173859">"Branchez votre chargeur."</string>
- <string name="keyguard_instructions_when_pattern_disabled" msgid="1332288268600329841">"Appuyez sur \"Menu\" pour déverrouiller l\'appareil."</string>
- <string name="keyguard_network_locked_message" msgid="9169717779058037168">"Réseau verrouillé"</string>
- <string name="keyguard_missing_sim_message_short" msgid="494980561304211931">"Aucune carte SIM"</string>
- <string name="keyguard_missing_sim_message" product="tablet" msgid="1445849005909260039">"Aucune carte SIM n\'est insérée dans la tablette."</string>
- <string name="keyguard_missing_sim_message" product="default" msgid="3481110395508637643">"Aucune carte SIM n\'est insérée dans le téléphone."</string>
- <string name="keyguard_missing_sim_instructions" msgid="5210891509995942250">"Insérez une carte SIM."</string>
- <string name="keyguard_missing_sim_instructions_long" msgid="5968985489463870358">"Carte SIM absente ou illisible. Veuillez insérer une carte SIM."</string>
- <string name="keyguard_permanent_disabled_sim_message_short" msgid="8340813989586622356">"Carte SIM inutilisable."</string>
- <string name="keyguard_permanent_disabled_sim_instructions" msgid="5892940909699723544">"Votre carte SIM a été définitivement désactivée.\n Veuillez contacter votre opérateur de téléphonie mobile pour en obtenir une autre."</string>
- <string name="keyguard_sim_locked_message" msgid="6875773413306380902">"La carte SIM est verrouillée."</string>
- <string name="keyguard_sim_puk_locked_message" msgid="3747232467471801633">"La carte SIM est verrouillée par clé PUK."</string>
- <string name="keyguard_sim_unlock_progress_dialog_message" msgid="7975221805033614426">"Déverrouillage de la carte SIM en cours…"</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d sur %3$d."</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Ajouter un widget"</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Vide"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Développement de la zone de déverrouillage"</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Réduction de la zone de déverrouillage"</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>"</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Sélecteur d\'utilisateur"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"État"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Caméra"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Commandes multimédias"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Début de la réorganisation des widgets"</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Fin de la réorganisation des widgets"</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Le widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> a été supprimé."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Développer la zone de déverrouillage"</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Déverrouillage en faisant glisser votre doigt sur l\'écran"</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Déverrouillage par schéma"</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Déverrouillage par reconnaissance faciale"</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Déverrouillage par NIP"</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Déverrouillage par mot de passe"</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Zone du schéma"</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Zone où faire glisser votre doigt sur l\'écran"</string>
- <string name="keyguard_accessibility_transport_prev_description" msgid="1337286538318543555">"Bouton pour revenir au titre précédent"</string>
- <string name="keyguard_accessibility_transport_next_description" msgid="7073928300444909320">"Bouton pour atteindre le titre suivant"</string>
- <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Bouton de pause"</string>
- <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Bouton de lecture"</string>
- <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Bouton d\'arrêt"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"J\'aime"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Je n\'aime pas"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Cœur"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Déverrouiller pour continuer"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Lancement annulé"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Déposez <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> pour supprimer."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ne sera pas supprimé."</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Annuler"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Supprimer"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Terminé"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Changement de mode"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Maj"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Entrée"</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"Déverrouiller"</string>
- <string name="description_target_camera" msgid="969071997552486814">"Appareil photo"</string>
- <string name="description_target_silent" msgid="893551287746522182">"Mode silencieux"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"Son activé"</string>
- <string name="description_target_search" msgid="3091587249776033139">"Recherche"</string>
- <string name="description_direction_up" msgid="7169032478259485180">"Faire glisser le doigt vers le haut : <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>"</string>
- <string name="description_direction_down" msgid="5087739728639014595">"Faire glisser le doigt vers le bas : <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>"</string>
- <string name="description_direction_left" msgid="7207478719805562165">"Faites glisser votre doigt vers la gauche pour <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_direction_right" msgid="8034433242579600980">"Faites glisser votre doigt vers la droite pour <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="user_switched" msgid="3768006783166984410">"Utilisateur actuel : <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"Appel d\'urgence"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"J\'ai oublié le schéma"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"Schéma incorrect."</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"Mot de passe incorrect."</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"NIP incorrect."</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Réessayez dans <xliff:g id="NUMBER">%d</xliff:g> secondes."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"Dessinez votre schéma."</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Saisissez le NIP de la carte SIM"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"Saisissez le NIP."</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"Saisissez votre mot de passe."</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"La carte SIM est maintenant désactivée. Saisissez le code PUK pour continuer. Contactez votre opérateur pour en savoir plus."</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Saisir le NIP souhaité"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Confirmer le NIP souhaité"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Déblocage de la carte SIM en cours…"</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"NIP erroné."</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Saisissez un NIP comprenant entre quatre et huit chiffres"</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Le code PUK doit contenir au moins 8 chiffres."</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"Veuillez saisir de nouveau le code PUK correct. Des tentatives répétées désactivent définitivement la carte SIM."</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Les codes PIN ne correspondent pas."</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Trop de tentatives."</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"Pour déverrouiller l\'appareil, connectez-vous avec votre compte Google."</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"Nom d\'utilisateur (courriel)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"Mot de passe"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"Connexion"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"Nom d\'utilisateur ou mot de passe non valide."</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Vous avez oublié votre nom d\'utilisateur ou votre mot de passe?\nRendez-vous sur la page "<b>"google.com/accounts/recovery"</b>"."</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"Vérification du compte en cours…"</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Vous avez saisi un NIP incorrect à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. \n\nVeuillez réessayer dans <xliff:g id="NUMBER_1">%d</xliff:g> secondes."</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Vous avez saisi un mot de passe incorrect à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. \n\nVeuillez réessayer dans <xliff:g id="NUMBER_1">%d</xliff:g> secondes."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Vous avez dessiné un schéma de déverrouillage incorrect à <xliff:g id="NUMBER_0">%d</xliff:g> reprises.\n\nVeuillez réessayer dans <xliff:g id="NUMBER_1">%d</xliff:g> secondes."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Vous avez tenté de déverrouiller la tablette de façon incorrecte à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. Si vous échouez encore <xliff:g id="NUMBER_1">%d</xliff:g> fois, sa configuration d\'usine sera rétablie, et toutes les données utilisateur seront perdues."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Vous avez tenté de déverrouiller le téléphone de façon incorrecte à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. Si vous échouez encore <xliff:g id="NUMBER_1">%d</xliff:g> fois, sa configuration d\'usine sera rétablie, et toutes les données utilisateur seront perdues."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Vous avez tenté de déverrouiller la tablette de façon incorrecte à <xliff:g id="NUMBER">%d</xliff:g> reprises. Sa configuration d\'usine va être rétablie."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Vous avez tenté de déverrouiller le téléphone de façon incorrecte à <xliff:g id="NUMBER">%d</xliff:g> reprises. Sa configuration d\'usine va être rétablie."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Vous avez dessiné un schéma de déverrouillage incorrect à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. Si vous échouez encore <xliff:g id="NUMBER_1">%d</xliff:g> fois, vous devrez déverrouiller votre tablette à l\'aide d\'un compte de messagerie électronique.\n\n Veuillez réessayer dans <xliff:g id="NUMBER_2">%d</xliff:g> secondes."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Vous avez dessiné un schéma de déverrouillage incorrect à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. Si vous échouez encore <xliff:g id="NUMBER_1">%d</xliff:g> fois, vous devrez déverrouiller votre téléphone à l\'aide d\'un compte de messagerie électronique.\n\n Veuillez réessayer dans <xliff:g id="NUMBER_2">%d</xliff:g> secondes."</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Supprimer"</string>
- <string name="keyguard_transport_prev_description" msgid="8229108430245669854">"Bouton pour revenir au titre précédent"</string>
- <string name="keyguard_transport_next_description" msgid="4299258300283778305">"Bouton pour atteindre le titre suivant"</string>
- <string name="keyguard_transport_pause_description" msgid="5093073338238310224">"Bouton de pause"</string>
- <string name="keyguard_transport_play_description" msgid="2924628863741150956">"Bouton de lecture"</string>
- <string name="keyguard_transport_stop_description" msgid="3084179324810575787">"Bouton d\'arrêt"</string>
- <string name="keyguard_carrier_default" msgid="8700650403054042153">"Aucun service"</string>
-</resources>
diff --git a/packages/Keyguard/res/values-fr/strings.xml b/packages/Keyguard/res/values-fr/strings.xml
index 37fb8fbe103a..250a13611740 100644
--- a/packages/Keyguard/res/values-fr/strings.xml
+++ b/packages/Keyguard/res/values-fr/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Bouton de pause"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Bouton de lecture"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Bouton d\'arrêt"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"J\'aime"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Je n\'aime pas"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Cœur"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Déverrouillez l\'appareil pour continuer."</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Lancement annulé."</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Relâchez le widget \"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>\" pour le supprimer."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"Le widget \"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>\" ne va pas être supprimé."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-hi/strings.xml b/packages/Keyguard/res/values-hi/strings.xml
index 058a2f77a0ed..714d9fb2001d 100644
--- a/packages/Keyguard/res/values-hi/strings.xml
+++ b/packages/Keyguard/res/values-hi/strings.xml
@@ -60,24 +60,17 @@
<string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"विजेट <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> को हटा दिया गया."</string>
<string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"अनलॉक क्षेत्र विस्तृत करें."</string>
<string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"स्लाइड अनलॉक."</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"आकार अनलॉक."</string>
+ <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"प्रतिमान अनलॉक."</string>
<string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"फेस अनलॉक."</string>
<string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"पिन अनलॉक."</string>
<string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"पासवर्ड अनलॉक."</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"आकार क्षेत्र."</string>
+ <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"प्रतिमान क्षेत्र."</string>
<string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"स्लाइड क्षेत्र."</string>
<string name="keyguard_accessibility_transport_prev_description" msgid="1337286538318543555">"पिछला ट्रैक बटन"</string>
<string name="keyguard_accessibility_transport_next_description" msgid="7073928300444909320">"अगला ट्रैक बटन"</string>
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"पॉज़ करें बटन"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"चलाएं बटन"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"रोकें बटन"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"पसंद"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"नापसंद"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"दिल"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"जारी रखने के लिए अनलॉक करें"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"लॉन्‍च रद्द कर दिया गया"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"हटाने के लिए <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> खींचें."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> को नहीं हटाया जाएगा."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
@@ -99,12 +92,12 @@
<string name="description_direction_right" msgid="8034433242579600980">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> के लिए दाएं स्‍लाइड करें."</string>
<string name="user_switched" msgid="3768006783166984410">"वर्तमान उपयोगकर्ता <xliff:g id="NAME">%1$s</xliff:g>."</string>
<string name="kg_emergency_call_label" msgid="684946192523830531">"आपातकालीन कॉल"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"आकार भूल गए"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"गलत आकार"</string>
+ <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"प्रतिमान भूल गए"</string>
+ <string name="kg_wrong_pattern" msgid="1850806070801358830">"गलत प्रतिमान"</string>
<string name="kg_wrong_password" msgid="2333281762128113157">"गलत पासवर्ड"</string>
<string name="kg_wrong_pin" msgid="1131306510833563801">"गलत PIN"</string>
<string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"<xliff:g id="NUMBER">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"अपना आकार आरेखित करें"</string>
+ <string name="kg_pattern_instructions" msgid="398978611683075868">"अपना प्रतिमान आरेखित करें"</string>
<string name="kg_sim_pin_instructions" msgid="2319508550934557331">"सिम PIN डालें"</string>
<string name="kg_pin_instructions" msgid="2377242233495111557">"PIN डालें"</string>
<string name="kg_password_instructions" msgid="5753646556186936819">"पासवर्ड डालें"</string>
@@ -117,23 +110,23 @@
<string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK कोड 8 या अधिक संख्या वाला होना चाहिए."</string>
<string name="kg_invalid_puk" msgid="3638289409676051243">"सही PUK कोड पुन: डालें. बार-बार प्रयास करने से सिम स्थायी रूप से अक्षम हो जाएगी."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"पिन कोड का मिलान नहीं होता"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"बहुत अधिक आकार प्रयास"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"अनलॉक करने के लिए, अपने Google खाते से प्रवेश करें."</string>
+ <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"बहुत अधिक प्रतिमान प्रयास"</string>
+ <string name="kg_login_instructions" msgid="1100551261265506448">"अनलॉक करने के लिए, अपने Google खाते से साइन इन करें."</string>
<string name="kg_login_username_hint" msgid="5718534272070920364">"उपयोगकर्ता नाम (ईमेल)"</string>
<string name="kg_login_password_hint" msgid="9057289103827298549">"पासवर्ड"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"प्रवेश करें"</string>
+ <string name="kg_login_submit_button" msgid="5355904582674054702">"साइन इन करें"</string>
<string name="kg_login_invalid_input" msgid="5754664119319872197">"अमान्य उपयोगकर्ता नाम या पासवर्ड."</string>
<string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"अपना उपयोगकर्ता नाम या पासवर्ड भूल गए?\n "<b>"google.com/accounts/recovery"</b>" पर जाएं."</string>
<string name="kg_login_checking_password" msgid="1052685197710252395">"खाते की जांच की जा रही है…"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"आप अपना PIN <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से लिख चुके हैं. \n\n <xliff:g id="NUMBER_1">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string>
<string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"आप अपना पासवर्ड <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से लिख चुके हैं. \n\n <xliff:g id="NUMBER_1">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"आपने अपना अनलॉक आकार <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से आरेखित किया है. \n\n <xliff:g id="NUMBER_1">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string>
+ <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"आपने अपना अनलॉक प्रतिमान <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से आरेखित किया है. \n\n <xliff:g id="NUMBER_1">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"आप टेबलेट को अनलॉक करने के लिए <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से प्रयास कर चुके हैं. <xliff:g id="NUMBER_1">%d</xliff:g> और असफल प्रयासों के बाद, टेबलेट फ़ैक्टरी डिफ़ॉल्ट पर रीसेट हो जाएगा और सभी उपयोगकर्ता डेटा खो जाएगा."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"आप फ़ोन को अनलॉक करने के लिए <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से प्रयास कर चुके हैं. <xliff:g id="NUMBER_1">%d</xliff:g> और असफल प्रयासों के बाद, फ़ोन फ़ैक्टरी डिफ़ॉल्ट पर रीसेट हो जाएगा और सभी उपयोगकर्ता डेटा खो जाएगा."</string>
<string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"आप टेबलेट को अनलॉक करने के लिए <xliff:g id="NUMBER">%d</xliff:g> बार गलत तरीके से प्रयास कर चुके हैं. टेबलेट अब फ़ैक्‍टरी डिफ़ॉल्‍ट पर रीसेट हो जाएगा."</string>
<string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"आप फ़ोन को अनलॉक करने के लिए <xliff:g id="NUMBER">%d</xliff:g> बार गलत तरीके से प्रयास कर चुके हैं. फ़ोन अब फ़ैक्टरी डिफ़ॉल्ट पर रीसेट हो जाएगा."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"आपने अपने अनलॉक आकार को <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से आरेखित किया है. <xliff:g id="NUMBER_1">%d</xliff:g> और असफल प्रयासों के बाद, आपसे अपने टेबलेट को किसी ईमेल खाते के उपयोग से अनलॉक करने के लिए कहा जाएगा.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"आपने अपने अनलॉक आकार को <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से आरेखित किया है. <xliff:g id="NUMBER_1">%d</xliff:g> और असफल प्रयासों के बाद, आपसे अपने फ़ोन को किसी ईमेल खाते का उपयोग करके अनलॉक करने के लिए कहा जाएगा.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string>
+ <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"आपने अपने अनलॉक प्रतिमान को <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से आरेखित किया है. <xliff:g id="NUMBER_1">%d</xliff:g> और असफल प्रयासों के बाद, आपसे अपने टेबलेट को किसी ईमेल खाते के उपयोग से अनलॉक करने के लिए कहा जाएगा.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string>
+ <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"आपने अपने अनलॉक प्रतिमान को <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से आरेखित किया है. <xliff:g id="NUMBER_1">%d</xliff:g> और असफल प्रयासों के बाद, आपसे अपने फ़ोन को किसी ईमेल खाते का उपयोग करके अनलॉक करने के लिए कहा जाएगा.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string>
<string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"निकालें"</string>
<string name="keyguard_transport_prev_description" msgid="8229108430245669854">"पिछला ट्रैक बटन"</string>
diff --git a/packages/Keyguard/res/values-hr/strings.xml b/packages/Keyguard/res/values-hr/strings.xml
index 99270a918ccf..70e630553f34 100644
--- a/packages/Keyguard/res/values-hr/strings.xml
+++ b/packages/Keyguard/res/values-hr/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Gumb Pauza"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Gumb Reprodukcija"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Gumb Zaustavi"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Palac gore"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Palac dolje"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Srce"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Otključajte za nastavak"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Pokretanje je otkazano"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Ispustite widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> da biste ga izbrisali."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> neće se izbrisati."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-hu/strings.xml b/packages/Keyguard/res/values-hu/strings.xml
index 81a56c57438e..611602e60cce 100644
--- a/packages/Keyguard/res/values-hu/strings.xml
+++ b/packages/Keyguard/res/values-hu/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Szünet gomb"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Lejátszás gomb"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Leállítás gomb"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Tetszik"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Nem tetszik"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Szív"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"A folytatáshoz oldja fel a billentyűzárat"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Indítás törölve"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Engedje el a(z) <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> törléséhez."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"A(z) <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> nem lesz törölve."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-hy-rAM/strings.xml b/packages/Keyguard/res/values-hy-rAM/strings.xml
deleted file mode 100644
index 2c10d39d1da3..000000000000
--- a/packages/Keyguard/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Մուտքագրեք PIN կոդը"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><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>
- <string name="keyguard_label_text" msgid="861796461028298424">"Ապակողպման համար սեղմեք Ցանկ, ապա 0:"</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Առավելագույն Դեմքով ապակողպման փորձերը գերազանցված են"</string>
- <string name="keyguard_charged" msgid="3272223906073492454">"Լիցքավորված է"</string>
- <string name="keyguard_plugged_in" msgid="8117572000639998388">"Լիցքավորում, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="keyguard_low_battery" msgid="8143808018719173859">"Միացրեք ձեր լիցքավորիչը:"</string>
- <string name="keyguard_instructions_when_pattern_disabled" msgid="1332288268600329841">"Ապակողպելու համար սեղմեք Ցանկը:"</string>
- <string name="keyguard_network_locked_message" msgid="9169717779058037168">"Ցանցը կողպված է"</string>
- <string name="keyguard_missing_sim_message_short" msgid="494980561304211931">"SIM քարտ չկա"</string>
- <string name="keyguard_missing_sim_message" product="tablet" msgid="1445849005909260039">"Գրասալիկում SIM քարտ չկա:"</string>
- <string name="keyguard_missing_sim_message" product="default" msgid="3481110395508637643">"Հեռախոսի մեջ SIM քարտ չկա:"</string>
- <string name="keyguard_missing_sim_instructions" msgid="5210891509995942250">"Զետեղեք SIM քարտը:"</string>
- <string name="keyguard_missing_sim_instructions_long" msgid="5968985489463870358">"SIM քարտը բացակայում է կամ չի կարող կարդացվել: Մտցրեք SIM քարտ:"</string>
- <string name="keyguard_permanent_disabled_sim_message_short" msgid="8340813989586622356">"Անպիտան SIM քարտ:"</string>
- <string name="keyguard_permanent_disabled_sim_instructions" msgid="5892940909699723544">"Ձեր SIM քարտը ընդմիշտ կասեցվել է:\nԿապվեք ձեր բջջային ծառայության մատակարարի հետ նոր SIM քարտ ձեռք բերելու համար:"</string>
- <string name="keyguard_sim_locked_message" msgid="6875773413306380902">"SIM քարտը կողպված է:"</string>
- <string name="keyguard_sim_puk_locked_message" msgid="3747232467471801633">"SIM քարտը PUK-ով կողպված է:"</string>
- <string name="keyguard_sim_unlock_progress_dialog_message" msgid="7975221805033614426">"SIM քարտը ապակողպվում է..."</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Վիջեթ %2$d of %3$d:"</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Ավելացնել վիջեթ:"</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Դատարկ"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Ապակողպման տարածքն ընդլայնված է:"</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Ապակողպման տարածքը ետ է ծալված:"</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> վիջեթ:"</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Օգտվողի ընտրիչ"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Կարգավիճակ"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Ֆոտոխցիկ"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Մեդիա կարգավորումներ"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Վիջեթների վերադասավորումը մեկնարկել է:"</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Վիջեթի վերադասավորումն ավարտվեց:"</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Վիջեթ <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>-ը ջնջված է:"</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Ընդլայնել ապակողպման տարածությունը:"</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Էջի ապակողպում:"</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Սխեմայով ապակողպում:"</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Դեմքով ապակողպում:"</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Pin-ն ապակողպված է:"</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Գաղտնաբառի ապակողպում:"</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Սխեմայի տարածք:"</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Սահեցման տարածք:"</string>
- <string name="keyguard_accessibility_transport_prev_description" msgid="1337286538318543555">"Նախորդ հետագծի կոճակը"</string>
- <string name="keyguard_accessibility_transport_next_description" msgid="7073928300444909320">"Հաջորդ հետագծի կոճակը"</string>
- <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Դադարի կոճակ"</string>
- <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Նվագարկման կոճակ"</string>
- <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Կանգի կոճակ"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Լավն է"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Լավը չէ"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Սիրտ"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Շարունակելու համար ապակողպեք"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Գործարկումը չեղարկվեց"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> վիջեթը ջնջելու համար բաց թողեք այն այստեղ:"</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> վիջեթը չի ջնջվի:"</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Չեղարկել"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Ջնջել"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Կատարված է"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Ռեժիմի փոփոխում"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Մուտք"</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"Ապակողպել"</string>
- <string name="description_target_camera" msgid="969071997552486814">"Ֆոտոխցիկ"</string>
- <string name="description_target_silent" msgid="893551287746522182">"Լուռ"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"Ձայնը միացնել"</string>
- <string name="description_target_search" msgid="3091587249776033139">"Որոնել"</string>
- <string name="description_direction_up" msgid="7169032478259485180">"Սահեցրեք վերև <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-ի համար:"</string>
- <string name="description_direction_down" msgid="5087739728639014595">"Սահեցրեք ցած <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-ի համար:"</string>
- <string name="description_direction_left" msgid="7207478719805562165">"Սահեցրեք ձախ` <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-ի համար:"</string>
- <string name="description_direction_right" msgid="8034433242579600980">"Սահեցրեք աջ` <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-ի համար:"</string>
- <string name="user_switched" msgid="3768006783166984410">"Ներկայիս օգտվողը <xliff:g id="NAME">%1$s</xliff:g>:"</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"Արտակարգ իրավիճակի հեռախոսազանգ"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Մոռացել եմ սխեման"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"Սխալ սխեմա"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"Սխալ գաղտնաբառ"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"Սխալ PIN"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Փորձեք կրկին <xliff:g id="NUMBER">%d</xliff:g> վայրկյանից:"</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"Հավաքեք ձեր սխեման"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Մուտքագրեք SIM-ի PIN-ը"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"Մուտքագրեք PIN-ը"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"Մուտքագրեք գաղտնաբառը"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM-ը այս պահին անջատված է: Մուտքագրեք PUK կոդը շարունակելու համար: Մանրամասների համար կապվեք օպերատորի հետ:"</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Մուտքագրեք ցանկալի PIN ծածկագիրը"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Հաստատեք ցանկալի PIN ծածկագիրը"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Ապակողպում է SIM քարտը ..."</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Սխալ PIN ծածկագիր:"</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Մուտքագրեք PIN, որը 4-ից 8 թիվ է:"</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK կոդը պետք է լինի 8 կամ ավելի թիվ:"</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"Վերամուտքագրեք ճիշտ PUK ծածկագիրը: Կրկնվող փորձերը ընդմիշտ կկասեցնեն SIM քարտը:"</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN ծածկագրերը չեն համընկնում"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Չափից շատ սխեմայի փորձեր"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"Ապակողպելու համար` մուտք գործեք ձեր Google հաշվով:"</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"Օգտանուն (էլփոստ)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"Գաղտնաբառը"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"Մուտք գործել"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"Սխալ օգտանուն կամ գաղտնաբառ:"</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Մոռացե՞լ եք ձեր օգտանունը կամ գաղտնաբառը:\nԱյցելեք "<b>"google.com /accounts/recovery"</b>":"</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"Հաշիվը ստուգվում է..."</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Դուք <xliff:g id="NUMBER_0">%d</xliff:g> անգամ սխալ եք մուտքագրել ձեր PIN-ը: \n\nՓորձեք կրկին <xliff:g id="NUMBER_1">%d</xliff:g> վայրկյանից:"</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Դուք սխալ եք մուտքագրել ձեր գաղտնաբառը <xliff:g id="NUMBER_0">%d</xliff:g> անգամ: \n\nՓորձեք կրկին <xliff:g id="NUMBER_1">%d</xliff:g> վայրկյանից:"</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Դուք <xliff:g id="NUMBER_0">%d</xliff:g> անգամ սխալ եք հավաքել ձեր ապակողպման սխեման: \n\nՓորձեք կրկին <xliff:g id="NUMBER_1">%d</xliff:g> վայրկյանից:"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Դուք <xliff:g id="NUMBER_0">%d</xliff:g> անգամ սխալ փորձ եք արել գրասալիկն ապակողպելու համար: <xliff:g id="NUMBER_1">%d</xliff:g> անգամից ավել անհաջող փորձերից հետո գրասալիկը կվերակարգավորվի գործարանային լռելյայնի, և օգտվողի բոլոր տվյալները կկորեն:"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Դուք <xliff:g id="NUMBER_0">%d</xliff:g> անգամ սխալ փորձ եք արել հեռախոսն ապակողպելու համար: <xliff:g id="NUMBER_1">%d</xliff:g> անգամից ավել անհաջող փորձերից հետո հեռախոսը կվերակարգավորվի գործարանային լռելյայնի, և օգտվողի բոլոր տվյալները կկորեն:"</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Դուք <xliff:g id="NUMBER">%d</xliff:g> անգամ սխալ փորձ եք արել գրասալիկն ապակողպելու համար: Գրասալիկն այժմ կվերակարգավորվի գործարանային լռելյայնի:"</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Դուք <xliff:g id="NUMBER">%d</xliff:g> անգամ սխալ փորձ եք արել հեռախոսն ապակողպելու համար: Հեռախոսն այժմ կվերակարգավորվի գործարանային լռելյայնի:"</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Դուք սխալ եք հավաքել ձեր ապակողպման սխեման <xliff:g id="NUMBER_0">%d</xliff:g> անգամ: Եվս <xliff:g id="NUMBER_1">%d</xliff:g> անհաջող փորձից հետո ձեզանից կպահանջվի ապակողպել ձեր գրասալիկը` օգտագործելով էլփոստի հաշիվ:\n\n Փորձեք կրկին <xliff:g id="NUMBER_2">%d</xliff:g> վայրկյանից:"</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Դուք <xliff:g id="NUMBER_0">%d</xliff:g> անգամ սխալ եք հավաքել ձեր ապակողպման նմուշը: <xliff:g id="NUMBER_1">%d</xliff:g> անգամից ավել անհաջող փորձերից հետո ձեզ կառաջարկվի ապակողպել ձեր հեռախոսը` օգտագործելով էլփոստի հաշիվ:\n\n Փորձեք կրկին <xliff:g id="NUMBER_2">%d</xliff:g> վայրկյանից:"</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Հեռացնել"</string>
- <string name="keyguard_transport_prev_description" msgid="8229108430245669854">"Նախորդ հետագծի կոճակ"</string>
- <string name="keyguard_transport_next_description" msgid="4299258300283778305">"Հաջորդ հետագծի կոճակ"</string>
- <string name="keyguard_transport_pause_description" msgid="5093073338238310224">"Դադարի կոճակ"</string>
- <string name="keyguard_transport_play_description" msgid="2924628863741150956">"Նվագարկման կոճակ"</string>
- <string name="keyguard_transport_stop_description" msgid="3084179324810575787">"Դադարի կոճակ"</string>
- <string name="keyguard_carrier_default" msgid="8700650403054042153">"Ծառայություն չկա:"</string>
-</resources>
diff --git a/packages/Keyguard/res/values-in/strings.xml b/packages/Keyguard/res/values-in/strings.xml
index 3b2de3d206c1..9f731ab38775 100644
--- a/packages/Keyguard/res/values-in/strings.xml
+++ b/packages/Keyguard/res/values-in/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Tombol jeda"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Tombol putar"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Tombol hentikan"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Bagus"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Jelek"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Hati"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Buka kunci untuk melanjutkan"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Peluncuran dibatalkan"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Jatuhkan <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> untuk menghapus."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> tidak akan dihapus."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-it/strings.xml b/packages/Keyguard/res/values-it/strings.xml
index 360f0b5cc8e8..4eda34863105 100644
--- a/packages/Keyguard/res/values-it/strings.xml
+++ b/packages/Keyguard/res/values-it/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Pulsante Pausa"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Pulsante Riproduci"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Pulsante di arresto"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Mi piace"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Pollice giù"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Cuore"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Sblocca per continuare"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Avvio annullato"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Rilascia <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> per eliminarlo."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> non sarà eliminato."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-iw/strings.xml b/packages/Keyguard/res/values-iw/strings.xml
index e6218b12230c..8d363099a7bb 100644
--- a/packages/Keyguard/res/values-iw/strings.xml
+++ b/packages/Keyguard/res/values-iw/strings.xml
@@ -29,7 +29,7 @@
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"הקלד קוד PIN לביטול הנעילה"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"קוד PIN שגוי"</string>
<string name="keyguard_label_text" msgid="861796461028298424">"כדי לבטל את הנעילה, לחץ על \'תפריט\' ולאחר מכן על 0."</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"חרגת ממספר הניסיונות המרבי של זיהוי פנים"</string>
+ <string name="faceunlock_multiple_failures" msgid="754137583022792429">"חרגת ממספר הניסיונות המרבי של זיהוי פרצוף"</string>
<string name="keyguard_charged" msgid="3272223906073492454">"טעון"</string>
<string name="keyguard_plugged_in" msgid="8117572000639998388">"טוען, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="keyguard_low_battery" msgid="8143808018719173859">"חבר את המטען."</string>
@@ -61,7 +61,7 @@
<string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"הרחב את אזור ביטול הנעילה."</string>
<string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"ביטול נעילה באמצעות הסטה."</string>
<string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"ביטול נעילה באמצעות ציור קו."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"ביטול נעילה באמצעות זיהוי פנים."</string>
+ <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"ביטול נעילה באמצעות זיהוי פרצוף."</string>
<string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"ביטול נעילה באמצעות מספר PIN."</string>
<string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"ביטול נעילה באמצעות סיסמה."</string>
<string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"אזור ציור קו."</string>
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"לחצן \'השהה\'"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"לחצן \'הפעל\'"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"לחצן \'הפסק\'"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"אהבתי"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"לא אהבתי"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"לב"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"בטל נעילה כדי להמשיך"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"ההפעלה בוטלה"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"שחרר את <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> למחיקה."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> לא יימחק."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"אבג"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-ja/strings.xml b/packages/Keyguard/res/values-ja/strings.xml
index c7e0447386a6..92e308b9ed64 100644
--- a/packages/Keyguard/res/values-ja/strings.xml
+++ b/packages/Keyguard/res/values-ja/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"一時停止ボタン"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"再生ボタン"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"停止ボタン"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"グッド"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"イマイチ"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"ハート"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"続行するにはロックを解除してください"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"起動をキャンセルしました"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"削除するには<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>をドロップしてください。"</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>は削除されません。"</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-ka-rGE/strings.xml b/packages/Keyguard/res/values-ka-rGE/strings.xml
deleted file mode 100644
index f643178025f1..000000000000
--- a/packages/Keyguard/res/values-ka-rGE/strings.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="keyguard_password_enter_pin_code" msgid="3037685796058495017">"აკრიფეთ PIN კოდი"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384">"შეეხეთ "<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>
- <string name="keyguard_label_text" msgid="861796461028298424">"განბლოკვისათვის დააჭირეთ მენიუს და შემდეგ 0-ს."</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"სახის ამოცნობით განბლოკვის მცდელობამ დაშვებულ რაოდენობას გადააჭარბა"</string>
- <string name="keyguard_charged" msgid="3272223906073492454">"დამუხტულია"</string>
- <string name="keyguard_plugged_in" msgid="8117572000639998388">"მიმდინარეობს დამუხტვა (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
- <string name="keyguard_low_battery" msgid="8143808018719173859">"შეაერთეთ დამტენი."</string>
- <string name="keyguard_instructions_when_pattern_disabled" msgid="1332288268600329841">"განბლოკვისთვის დააჭირეთ მენიუს."</string>
- <string name="keyguard_network_locked_message" msgid="9169717779058037168">"ქსელი ჩაკეტილია"</string>
- <string name="keyguard_missing_sim_message_short" msgid="494980561304211931">"SIM ბარათი არ არის"</string>
- <string name="keyguard_missing_sim_message" product="tablet" msgid="1445849005909260039">"ტაბლეტში არ დევს SIM ბარათი."</string>
- <string name="keyguard_missing_sim_message" product="default" msgid="3481110395508637643">"არ არის SIM ბარათი ტელეფონში."</string>
- <string name="keyguard_missing_sim_instructions" msgid="5210891509995942250">"ჩადეთ SIM ბარათი."</string>
- <string name="keyguard_missing_sim_instructions_long" msgid="5968985489463870358">"SIM ბარათი არ არის ან არ იკითხება. ჩადეთ SIM ბარათი."</string>
- <string name="keyguard_permanent_disabled_sim_message_short" msgid="8340813989586622356">"არამოხმარებადი SIM ბარათი."</string>
- <string name="keyguard_permanent_disabled_sim_instructions" msgid="5892940909699723544">"თქვენი SIM ბარათი გამუდმებით გამორთული იყო.\n დაუკავშირდით თქვენი უკაბელო სერვისის პროვაიდერს სხვა SIM ბარათისთვის."</string>
- <string name="keyguard_sim_locked_message" msgid="6875773413306380902">"SIM ბარათი დაბლოკილია."</string>
- <string name="keyguard_sim_puk_locked_message" msgid="3747232467471801633">"SIM ბარათი დაბლოკილია PUK კოდით."</string>
- <string name="keyguard_sim_unlock_progress_dialog_message" msgid="7975221805033614426">"მიმდინარეობს SIM ბარათის განბლოკვა…"</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. ვიჯეტი %2$d of %3$d."</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"ვიჯეტის დამატება"</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"ცარიელი"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"განბლოკვის სივრცე გაშლილია."</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"განბლოკვის სივრცე ჩაკეცილია."</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ვიჯეტი."</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"მომხმარებლის ამომრჩეველი"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"სტატუსი"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"კამერა"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"მედიის მართვის ელემენტები"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"დაიწყო ვიჯეტის ხელახლა განლაგება."</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"ვიჯეტების გადახარისხება დასრულებულია."</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"ვიჯეტი <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> წაიშალა."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"განბლოკვის სივრცის გაშლა."</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"გასრიალებით განბლოკვა"</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"განბლოკვა ნიმუშით."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"განბლოკვა სახით"</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"განბლოკვა Pin-ით."</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"პაროლის განბლოკვა"</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"ნიმუშების სივრცე."</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"გადასრიალების სივრცე."</string>
- <string name="keyguard_accessibility_transport_prev_description" msgid="1337286538318543555">"წინა ჩანაწერის ღილაკი"</string>
- <string name="keyguard_accessibility_transport_next_description" msgid="7073928300444909320">"შემდეგი ჩანაწერის ღილაკი"</string>
- <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"პაუზის ღილაკი"</string>
- <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"დაკვრის ღილაკი"</string>
- <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Stop ღილაკი"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"ზევით აწეული ცერი"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"ქვევით დახრილი ცერი"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"გული"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"განბლოკეთ გასაგრძელებლად"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"გამოძახება გაუქმდა"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"ჩააგდეთ <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> წასაშლელად."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> არ წაიშლება."</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"გაუქმება"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"წაშლა"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"დასრულდა"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"რეჟიმის შეცვლა"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift-"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"შეყვანა"</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"განბლოკვა"</string>
- <string name="description_target_camera" msgid="969071997552486814">"კამერა"</string>
- <string name="description_target_silent" msgid="893551287746522182">"უხმო"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"ხმის ჩართვა"</string>
- <string name="description_target_search" msgid="3091587249776033139">"ძიება"</string>
- <string name="description_direction_up" msgid="7169032478259485180">"გაასრიალეთ ზემოთ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-თვის."</string>
- <string name="description_direction_down" msgid="5087739728639014595">"გაასრიალეთ ქვემოთ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-თვის."</string>
- <string name="description_direction_left" msgid="7207478719805562165">"გაასრიალეთ მარცხნივ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-თვის."</string>
- <string name="description_direction_right" msgid="8034433242579600980">"გაასრიალეთ მარჯვნივ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-თვის."</string>
- <string name="user_switched" msgid="3768006783166984410">"ამჟამინდელი მომხმარებელი <xliff:g id="NAME">%1$s</xliff:g>."</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"გადაუდებელი დახმარების ზარი"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"დაგავიწყდათ ნიმუში"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"არასწორი ნიმუში"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"არასწორი პაროლი"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"არასწორი PIN"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"კიდევ სცადეთ <xliff:g id="NUMBER">%d</xliff:g> წამში."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"დახატეთ თქვენი ნიმუში."</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"SIM PIN-ის შეყვანა"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"შეიყვანეთ PIN"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"პაროლის შეყვანა"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM ამჟამად დეაქტივირებულია. გასაგრძელებლად შეიყვანეთ PUK კოდი. დეტალებისთვის მიმართეთ მობილურ ოპერატორს."</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"სასურველი PIN კოდის შეყვანა"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"სასურველი PIN კოდის დადასტურება"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM ბარათის განბლოკვა…"</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"არასწორი PIN კოდი."</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"აკრიფეთ PIN, რომელიც შედგება 4-დან 8 ციფრამდე."</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK კოდი უნდა იყოს რვა ან მეტი ციფრისგან შემდგარი."</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"ხელახლა შეიყვანეთ სწორი PUK კოდი. რამდენიმე წარუმატებელი მცდელობა გამოიწვევს SIM ბარათის დაბლოკვას."</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN კოდები არ ემთხვევა"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"ნახატი ნიმუშის ძალიან ბევრი მცდელობა"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"განბლოკვისთვის გაიარეთ ავტორიზაცია თქვენი Google ანგარიშით."</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"მომხმარებლის სახელი (ელფოსტა)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"პაროლი"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"შესვლა"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"არასწორი სახელი, ან პაროლი."</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"დაგავიწყდათ მომხმარებლის სახელი და პაროლი?\nეწვიეთ "<b>"google.com/accounts/recovery"</b>"."</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"მიმდინარეობს ანგარიშის შემოწმება…"</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"თქვენ <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ არასწორად შეიყვანეთ PIN კოდი. \n\nსცადეთ ხელახლა <xliff:g id="NUMBER_1">%d</xliff:g> წამში."</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"თქვენ <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ არასწორად დაბეჭდეთ თქვენი პაროლი. \n\nხელახლა სცადეთ <xliff:g id="NUMBER_1">%d</xliff:g> წამში."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"თქვენ <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ დახატეთ განბლოკვის ნიმუში. \n\nსცადეთ ხელახლა <xliff:g id="NUMBER_1">%d</xliff:g> წამში."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"თქვენ არასწორად სცადეთ ტაბლეტის განბლოკვა <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ. კიდევ <xliff:g id="NUMBER_1">%d</xliff:g> წარუმატებელი ცდის შემდეგ ტაბლეტზე დაყენდება საწყისი, ქარხნული პარამეტრები და მომხმარებლის ყველა მონაცემი დაიკარგება."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"თქვენ არასწორად სცადეთ ტელეფონის განბლოკვა <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ. კიდევ <xliff:g id="NUMBER_1">%d</xliff:g> წარუმატებელი ცდის შემდეგ ტელეფონზე დაყენდება საწყისი, ქარხნული პარამეტრები და მომხმარებლის ყველა მონაცემი დაიკარგება."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"თქვენ არასწორად სცადეთ ტაბლეტის განბლოკვა <xliff:g id="NUMBER">%d</xliff:g>-ჯერ. ტაბლეტზე დაყენდება საწყისი, ქარხნული პარამეტრები და მომხმარებლის ყველა მონაცემი დაიკარგება."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"თქვენ <xliff:g id="NUMBER">%d</xliff:g>-ჯერ არასწორად სცადეთ ტელეფონის განბლოკვა. ამიტომ ტელეფონზე დადგება საწყისი, ქარხნული პარამეტრები."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"თქვენ არასწორად დახატეთ თქვენი განბლოკვის ნიმუში <xliff:g id="NUMBER_0">%d</xliff:g> ჯერ. კიდევ <xliff:g id="NUMBER_1">%d</xliff:g> წარუმატებელი ცდის შემდეგ მოგთხოვთ ტაბლეტის განბლოკვას ელფოსტის ანგარიშის გამოყენებით.\n\n ხელახლა სცადეთ <xliff:g id="NUMBER_2">%d</xliff:g> წამში."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"თქვენ არასწორად დახატეთ თქვენი განბლოკვის ნიმუში <xliff:g id="NUMBER_0">%d</xliff:g>-ჯერ. კიდევ <xliff:g id="NUMBER_1">%d</xliff:g> წარუმატებელი ცდის შემდეგ, დაგჭირდებათ თქვენი ტელეფონის განბლოკვა ელფოსტის ანგარიშის გამოყენებით.\n\n ხელახლა სცადეთ <xliff:g id="NUMBER_2">%d</xliff:g> წამში."</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"ამოშლა"</string>
- <string name="keyguard_transport_prev_description" msgid="8229108430245669854">"წინა ჩანაწერზე გადასვლის ღილაკი"</string>
- <string name="keyguard_transport_next_description" msgid="4299258300283778305">"შემდეგი ჩანაწერის ღილაკი"</string>
- <string name="keyguard_transport_pause_description" msgid="5093073338238310224">"პაუზის ღილაკი"</string>
- <string name="keyguard_transport_play_description" msgid="2924628863741150956">"დაკვრის ღილაკი"</string>
- <string name="keyguard_transport_stop_description" msgid="3084179324810575787">"შეჩერების ღილაკი"</string>
- <string name="keyguard_carrier_default" msgid="8700650403054042153">"არ არის სერვისი."</string>
-</resources>
diff --git a/packages/Keyguard/res/values-km-rKH/strings.xml b/packages/Keyguard/res/values-km-rKH/strings.xml
deleted file mode 100644
index 08af5dd5fe91..000000000000
--- a/packages/Keyguard/res/values-km-rKH/strings.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="keyguard_password_enter_pin_code" msgid="3037685796058495017">"បញ្ចូល​កូដ PIN"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><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>
- <string name="keyguard_label_text" msgid="861796461028298424">"ដើម្បី​ដោះ​សោ​​ ចុច​ម៉ឺនុយ​ បន្ទាប់មក 0 ។"</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"បាន​លើស​ការ​ព្យាយាម​ដោះ​សោ​តាម​ទម្រង់​មុខ"</string>
- <string name="keyguard_charged" msgid="3272223906073492454">"បាន​បញ្ចូល​​ពេញ"</string>
- <string name="keyguard_plugged_in" msgid="8117572000639998388">"បញ្ចូល​ថ្ម <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="keyguard_low_battery" msgid="8143808018719173859">"ភ្ជាប់​ឧបករណ៍​បញ្ចូល​ថ្ម​។"</string>
- <string name="keyguard_instructions_when_pattern_disabled" msgid="1332288268600329841">"ចុច​ម៉ឺនុយ ដើម្បី​ដោះ​សោ។"</string>
- <string name="keyguard_network_locked_message" msgid="9169717779058037168">"បណ្ដាញ​ជាប់​សោ"</string>
- <string name="keyguard_missing_sim_message_short" msgid="494980561304211931">"គ្មាន​ស៊ី​ម​កាត"</string>
- <string name="keyguard_missing_sim_message" product="tablet" msgid="1445849005909260039">"គ្មាន​ស៊ី​ម​កាត​នៅ​ក្នុង​កុំព្យូទ័រ​បន្ទះ​។"</string>
- <string name="keyguard_missing_sim_message" product="default" msgid="3481110395508637643">"គ្មាន​ស៊ីមកាត​ក្នុង​ទូរស័ព្ទ។"</string>
- <string name="keyguard_missing_sim_instructions" msgid="5210891509995942250">"បញ្ចូល​​​ស៊ី​ម​កាត​។"</string>
- <string name="keyguard_missing_sim_instructions_long" msgid="5968985489463870358">"បាត់​ស៊ីមកាត ឬ​មិន​អាច​អាន។ បញ្ចូល​ស៊ីម​កាត។"</string>
- <string name="keyguard_permanent_disabled_sim_message_short" msgid="8340813989586622356">"ស៊ីម​កាត​មិន​អាច​ប្រើ​បាន។"</string>
- <string name="keyguard_permanent_disabled_sim_instructions" msgid="5892940909699723544">"បាន​បិទ​ស៊ីម​កាត​របស់​អ្នក​ជា​អចិន្ត្រៃយ៍។\n ទាក់ទង​​ក្រុមហ៊ុន​ផ្ដល់​សេវាកម្ម​ឥត​ខ្សែ​សម្រាប់​ស៊ីម​កាត​ផ្សេង។"</string>
- <string name="keyguard_sim_locked_message" msgid="6875773413306380902">"ស៊ីម​កាត​​ជាប់​សោ។"</string>
- <string name="keyguard_sim_puk_locked_message" msgid="3747232467471801633">"ស៊ីម​កាត​ជាប់​កូដ​​ PUK ។"</string>
- <string name="keyguard_sim_unlock_progress_dialog_message" msgid="7975221805033614426">"កំពុង​ដោះ​សោ​ស៊ីម​កាត..."</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. ធាតុ​ក្រាហ្វិក %2$d នៃ %3$d ។"</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"បន្ថែម​ធាតុ​ក្រាហ្វិក​។"</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"ទទេ"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"បាន​ពង្រីក​ផ្ទៃ​ដោះ​សោ។"</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"បាន​បង្រួម​ផ្ទៃ​ដោះ​សោ។"</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ធាតុ​ក្រាហ្វិក។"</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"ឧបករណ៍​ជ្រើស​អ្នក​ប្រើ"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"ស្ថានភាព"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"ម៉ាស៊ីន​ថត"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"ពិនិត្យ​មេឌៀ"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"បាន​ចាប់ផ្ដើម​តម្រៀប​ធាតុ​ក្រាហ្វិក​ឡើងវិញ។"</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"បាន​បញ្ចប់​ការ​បង្ហាញ​ធាតុ​ក្រាហ្វិក។"</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"បាន​លុប​ធាតុ​ក្រាហ្វិក <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ។"</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"ពង្រីក​តំបន់​ដោះ​សោ។"</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"រុញ​ដោះ​សោ។"</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"លំនាំ​ដោះ​សោ​។"</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"ដោះ​សោ​តាម​​ទម្រង់​មុខ។"</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"កូដ PIN ដោះ​សោ។"</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"ពាក្យ​សម្ងាត់​ដោះ​សោ​។"</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"ផ្ទៃ​លំនាំ។"</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"ផ្ទៃ​រុញ។"</string>
- <string name="keyguard_accessibility_transport_prev_description" msgid="1337286538318543555">"ប៊ូតុង​បទ​មុន"</string>
- <string name="keyguard_accessibility_transport_next_description" msgid="7073928300444909320">"ប៊ូតុង​បទ​បន្ទាប់"</string>
- <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"ប៊ូតុង​ផ្អាក"</string>
- <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"ប៊ូតុង​ចាក់"</string>
- <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"ប៊ូតុង​បញ្ឈប់"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"មេដៃ​ឡើង"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"មេដៃ​ចុះ"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"បេះដូង"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"ដោះ​សោ ​ដើម្បី​បន្ត"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"បាន​បោះបង់​ការ​ចាប់ផ្ដើម"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"ទម្លាក់ <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ដើម្បី​លុប។"</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> នឹង​មិន​ត្រូវ​បាន​លុប​។"</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"បោះ​បង់"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"លុប"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"រួចរាល់"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"ប្ដូរ​របៀប"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"ដោះ​​សោ"</string>
- <string name="description_target_camera" msgid="969071997552486814">"ម៉ាស៊ីន​ថត"</string>
- <string name="description_target_silent" msgid="893551287746522182">"ស្ងាត់"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"បើក​សំឡេង"</string>
- <string name="description_target_search" msgid="3091587249776033139">"ស្វែងរក"</string>
- <string name="description_direction_up" msgid="7169032478259485180">"រុញ​ឡើង​លើ​ដើម្បី <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ។"</string>
- <string name="description_direction_down" msgid="5087739728639014595">"រុញ​ចុះក្រោម​សម្រាប់ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ។"</string>
- <string name="description_direction_left" msgid="7207478719805562165">"រុញ​ទៅ​ឆ្វេង​ដើម្បី <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ។"</string>
- <string name="description_direction_right" msgid="8034433242579600980">"រុញ​​ទៅ​ស្ដាំ​ដើម្បី <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ។"</string>
- <string name="user_switched" msgid="3768006783166984410">"អ្នក​ប្រើ​បច្ចុប្បន្ន <xliff:g id="NAME">%1$s</xliff:g> ។"</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"ការ​ហៅ​ពេល​អាសន្ន"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ភ្លេច​​លំនាំ"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"លំនាំ​មិន​ត្រឹមត្រូវ"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"កូដ PIN មិន​ត្រឹមត្រូវ"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"ព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER">%d</xliff:g> វិនាទី។"</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"គូរ​លំនាំ​របស់​អ្នក"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"បញ្ចូល​កូដ PIN ស៊ីម​កាត"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"បញ្ចូល​​កូដ PIN"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"បញ្ចូល​ពាក្យ​សម្ងាត់"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"ឥឡូវ​ស៊ីមកាត​ត្រូវ​បាន​បិទ។ បញ្ចូល​កូដ PUK ដើម្បី​បន្ត។ ចំពោះ​ព័ត៌មាន​លម្អិត​ទាក់ទង​ក្រុមហ៊ុន​បញ្ជូន​របស់​អ្នក។"</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"បញ្ចូល​កូដ PIN ដែល​ចង់​បាន"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"បញ្ជាក់​កូដ PIN ដែល​ចង់​បាន"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"កំពុង​ដោះ​សោ​​ស៊ីម​កាត..."</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"កូដ PIN មិន​ត្រឹមត្រូវ។"</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"បញ្ចូល​កូដ PIN ដែល​មាន​ពី ៤ ដល់ ៨ លេខ។"</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"កូដ PUK គួរ​តែ​មាន​​ ៨ លេខ ឬ​​ច្រើន​ជាង​នេះ។"</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"បញ្ចូល​កូដ PUK ម្ដង​ទៀត។ ការ​ព្យាយាម​ដដែល​ច្រើន​ដឹង​នឹង​បិទ​ស៊ីម​កាត​ជា​អចិន្ត្រៃយ៍។"</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"កូដ PIN មិន​ដូច​គ្នា"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"ព្យាយាម​លំនាំ​ច្រើន​ពេក"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"ដើម្បី​ដោះ​សោ ចូល​ក្នុង​គណនី Google ។"</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"ឈ្មោះ​អ្នក​ប្រើ (អ៊ី​ម៉ែ​ល​)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"ពាក្យសម្ងាត់"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"ចូល"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"ឈ្មោះ​អ្នកប្រើ ឬ​ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ។"</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"ភ្លេច​ឈ្មោះ​អ្នកប្រើ ឬ​ពាក្យ​សម្ងាត់​របស់​អ្នក?\nមើល "<b>"google.com/accounts/recovery"</b>" ។"</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"កំពុង​ពិនិត្យ​មើល​គណនី..."</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"អ្នក​បាន​បញ្ចូល​កូដ PIN របស់​អ្នក​មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER_0">%d</xliff:g> ដង។\n\n ព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER_1">%d</xliff:g> វិនាទី។"</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"អ្នក​បាន​បញ្ចូល​ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ <xliff:g id="NUMBER_0">%d</xliff:g> ដង។\n\nព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER_1">%d</xliff:g> វិនាទី។"</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"អ្នក​បាន​​គូរ​លំនាំ​ដោះ​សោ​របស់​អ្នក​មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER_0">%d</xliff:g> ដង។\n\nព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER_1">%d</xliff:g> វិនាទី។"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"អ្នក​បាន​ព្យាយាម​ដោះ​សោ​​កុំព្យូទ័រ​បន្ទះ​​មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER_0">%d</xliff:g> ដង។ បន្ទាប់​ពី​ការ​ព្យាយាម​មិន​ជោគជ័យ​​ច្រើន​ជាង <xliff:g id="NUMBER_1">%d</xliff:g> ដង កុំព្យូទ័រ​បន្ទះ​​នឹង​ត្រូវ​បាន​កំណត់​ទៅ​លំនាំដើម​ដូច​ចេញ​ពី​រោងចក្រ ហើយ​ទិន្នន័យ​អ្នកប្រើ​នឹង​បាត់បង់។"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"អ្នក​បាន​ព្យាយាម​ដោះ​សោ​ទូរស័ព្ទ​មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER_0">%d</xliff:g> ដង។ បន្ទាប់​ពី​ការ​ព្យាយាម​មិន​ជោគជ័យ​​ច្រើន​ជាង <xliff:g id="NUMBER_1">%d</xliff:g> ដង ទូរស័ព្ទ​នឹង​ត្រូវ​បាន​កំណត់​ទៅ​លំនាំដើម​ដូច​ចេញ​ពី​រោងចក្រ ហើយ​ទិន្នន័យ​អ្នកប្រើ​នឹង​បាត់បង់។"</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"អ្នក​បាន​ព្យាយាម​ដោះ​សោ​កុំព្យូទ័រ​បន្ទះ​មិន​ត្រឹមត្រូវ​ចំនួន​ <xliff:g id="NUMBER">%d</xliff:g> ដង។ កុំព្យូទ័រ​បន្ទះ​នឹង​ត្រូវ​បាន​កំណត់​ទៅ​លំនាំដើម​ដូច​ចេញ​ពី​រោងចក្រ"</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"អ្នក​បាន​ព្យាយាម​ដោះ​សោ​ទូរស័ព្ទ​មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER">%d</xliff:g> ដង។ ឥឡូវ​ទូរស័ព្ទ​នឹង​កំណត់​ទៅ​លំនាំ​ដើម​ដូច​ចេញ​ពី​រោងចក្រ។"</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"អ្នក​បាន​គូរ​លំនាំ​ដោះ​សោ​មិន​ត្រឹមត្រូវ <xliff:g id="NUMBER_0">%d</xliff:g> ដង។ បន្ទាប់​ពី​ការ​ព្យាយាម <xliff:g id="NUMBER_1">%d</xliff:g> ដង​មិន​ជោគជ័យ អ្នក​នឹង​ត្រូវ​បាន​ស្នើ​ឲ្យ​ដោះ​សោ​កុំព្យូទ័រ​បន្ទះ​របស់​អ្នក ដោយ​ប្រើ​គណនី​អ៊ីមែល។\n\n ព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER_2">%d</xliff:g> វិនាទី។"</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"អ្នក​បាន​គូរ​លំនាំ​ដោះ​​សោ​របស់​អ្នក​មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER_0">%d</xliff:g> ដង។ បន្ទាប់​ពី​ការ​ព្យាយាម​មិន​ជោគជ័យ​​ច្រើនជាង <xliff:g id="NUMBER_1">%d</xliff:g> ដង អ្នក​នឹង​ត្រូវ​បាន​​ស្នើ​ឲ្យ​ដោះ​សោ​ទូរស័ព្ទ​របស់​អ្នក​ដោយ​ប្រើ​គណនី​អ៊ីមែល។\n\n ព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER_2">%d</xliff:g> វិនាទី។"</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"លុប​ចេញ"</string>
- <string name="keyguard_transport_prev_description" msgid="8229108430245669854">"ប៊ូតុង​បទ​មុន"</string>
- <string name="keyguard_transport_next_description" msgid="4299258300283778305">"ប៊ូតុង​បទ​បន្ទាប់"</string>
- <string name="keyguard_transport_pause_description" msgid="5093073338238310224">"ប៊ូតុង​ផ្អាក"</string>
- <string name="keyguard_transport_play_description" msgid="2924628863741150956">"ប៊ូតុង​ចាក់"</string>
- <string name="keyguard_transport_stop_description" msgid="3084179324810575787">"ប៊ូតុង​បញ្ឈប់"</string>
- <string name="keyguard_carrier_default" msgid="8700650403054042153">"គ្មាន​សេវា​។"</string>
-</resources>
diff --git a/packages/Keyguard/res/values-ko/strings.xml b/packages/Keyguard/res/values-ko/strings.xml
index a1b50962cf0c..dfac106d482d 100644
--- a/packages/Keyguard/res/values-ko/strings.xml
+++ b/packages/Keyguard/res/values-ko/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"일시중지 버튼"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"재생 버튼"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"중지 버튼"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"좋아요"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"싫어요"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"하트"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"계속하려면 잠금해제합니다."</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"실행 취소됨"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"삭제하려면 <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>을(를) 드롭합니다."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>은(는) 삭제되지 않습니다."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-lo-rLA/strings.xml b/packages/Keyguard/res/values-lo-rLA/strings.xml
deleted file mode 100644
index a9ba8ba9eb79..000000000000
--- a/packages/Keyguard/res/values-lo-rLA/strings.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="keyguard_password_enter_pin_code" msgid="3037685796058495017">"ພິມລະຫັດ PIN"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><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>
- <string name="keyguard_label_text" msgid="861796461028298424">"ເພື່ອປົດລັອກ, ໃຫ້ກົດເມນູ ແລ້ວກົດ 0."</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"ຄວາມພະຍາຍາມປົດລັອກດ້ວຍໜ້ານັ້ນ ເກີນຈຳນວນທີ່ກຳນົດແລ້ວ"</string>
- <string name="keyguard_charged" msgid="3272223906073492454">"ສາກເຕັມແລ້ວ"</string>
- <string name="keyguard_plugged_in" msgid="8117572000639998388">"ກຳລັງສາກ, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="keyguard_low_battery" msgid="8143808018719173859">"ເຊື່ອມຕໍ່ອຸປະກອນສາກຂອງທ່ານ."</string>
- <string name="keyguard_instructions_when_pattern_disabled" msgid="1332288268600329841">"ກົດເມນູເພື່ອປົດລັອກ."</string>
- <string name="keyguard_network_locked_message" msgid="9169717779058037168">"ເຄືອຂ່າຍຖືກລັອກ"</string>
- <string name="keyguard_missing_sim_message_short" msgid="494980561304211931">"ບໍ່ມີຊິມກາດ"</string>
- <string name="keyguard_missing_sim_message" product="tablet" msgid="1445849005909260039">"ບໍ່ມີຊິມກາດໃນແທັບເລັດ."</string>
- <string name="keyguard_missing_sim_message" product="default" msgid="3481110395508637643">"ບໍ່ມີຊິມກາດຢູ່ໃນໂທລະສັບ."</string>
- <string name="keyguard_missing_sim_instructions" msgid="5210891509995942250">"ໃສ່ SIM card."</string>
- <string name="keyguard_missing_sim_instructions_long" msgid="5968985489463870358">"ບໍ່ພົບເຫັນຊິມກາດ ຫຼືບໍ່ສາມາດອ່ານຊິມກາດໄດ້. ກະລຸນາໃສ່ຊິມກາດໃໝ່."</string>
- <string name="keyguard_permanent_disabled_sim_message_short" msgid="8340813989586622356">"SIM card ບໍ່ສາມາດໃຊ້ໄດ້."</string>
- <string name="keyguard_permanent_disabled_sim_instructions" msgid="5892940909699723544">"SIM card ຂອງທ່ານຖືກປິດການນຳໃຊ້ຢ່າງຖາວອນແລ້ວ.\n ຕິດຕໍ່ຜູ່ໃຫ້ບໍລິການລະບົບຂອງທ່ານເພື່ອຂໍ SIM card ໃໝ່."</string>
- <string name="keyguard_sim_locked_message" msgid="6875773413306380902">"ຊິມກາດຖືກລັອກ."</string>
- <string name="keyguard_sim_puk_locked_message" msgid="3747232467471801633">"ຊິມກາດຖືກລັອກດ້ວຍລະຫັດ PUK."</string>
- <string name="keyguard_sim_unlock_progress_dialog_message" msgid="7975221805033614426">"ກຳລັງປົດລັອກຊິມກາດ..."</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. ວິດເຈັດ %2$d ຈາກທັງໝົດ %3$d."</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"ເພີ່ມວິດເຈັດ"</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"ຫວ່າງເປົ່າ"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"ຂະຫຍາຍພື້ນທີ່ປົດລັອກແລ້ວ."</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"ຫຍໍ້ພື້ນທີ່ປົດລັອກແລ້ວ."</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ວິດເຈັດ."</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"ໂຕເລືອກຂອງຜູ່ໃຊ້"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"ສະຖານະ"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"ກ້ອງ"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"ການຄວບຄຸມສື່"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"ການຈັດຮຽງວິເຈັດໃໝ່ເລີ່ມຕົ້ນແລ້ວ."</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"ການຈັດຮຽງວິດເຈັດຄືນໃໝ່ສຳເລັດແລ້ວ."</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"ລຶບວິດເຈັດ <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ແລ້ວ."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"ຂະຫຍາຍຂອບເຂດປົດລັອກ."</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"ການປົດລັອກດ້ວຍການເລື່ອນ."</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"ປົດລັອກດ້ວຍຮູບແບບ."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"ປົດລັອກດ້ວຍໜ້າ."</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"ປົດລັອກດ້ວຍ PIN."</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"ການປົດລັອກດ້ວຍລະຫັດຜ່ານ."</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"ພື້ນທີ່ຮູບແບບ."</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"ເລື່ອນພື້ນທີ່."</string>
- <string name="keyguard_accessibility_transport_prev_description" msgid="1337286538318543555">"ປຸ່ມເພງກ່ອນໜ້າ"</string>
- <string name="keyguard_accessibility_transport_next_description" msgid="7073928300444909320">"ປຸ່ມເພງຕໍ່ໄປ"</string>
- <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"ປຸ່ມຢຸດຊົ່ວຄາວ"</string>
- <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"ປຸ່ມຫຼິ້ນ"</string>
- <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"ປຸ່ມຢຸດ"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"ເລື່ອນນິ້ວໂປ້ຂຶ້ນ"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"ເລື່ອນນິ້ວໂປ້ລົງ"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"ຫົວໃຈ"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"ປົດລັອກເພື່ອດຳເນີນການຕໍ່"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"ການເປີດໃຊ້ຖືກຍົກເລີກ"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"ວາງ <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ເພື່ອລຶບ."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ຈະບໍ່ຖືກລຶບອອກ"</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"ຍົກເລີກ"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"ລຶບ"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"ແລ້ວໆ"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"ປ່ຽນຮູບແບບ"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"ປົດລັອກ"</string>
- <string name="description_target_camera" msgid="969071997552486814">"ກ້ອງ"</string>
- <string name="description_target_silent" msgid="893551287746522182">"ປິດສຽງ"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"ເປີດສຽງ"</string>
- <string name="description_target_search" msgid="3091587249776033139">"ຊອກຫາ"</string>
- <string name="description_direction_up" msgid="7169032478259485180">"ເລື່ອນຂຶ້ນເພື່ອ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_direction_down" msgid="5087739728639014595">"ເລື່ອນລົງເພື່ອ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_direction_left" msgid="7207478719805562165">"ເລື່ອນໄປທາງຊ້າຍເພື່ອ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_direction_right" msgid="8034433242579600980">"ເລື່ອນໄປທາງຂວາເພື່ອ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="user_switched" msgid="3768006783166984410">"ຜູ່ໃຊ້ປັດຈຸບັນ <xliff:g id="NAME">%1$s</xliff:g> ."</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"ການໂທສຸກເສີນ"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ລືມຮູບແບບປົດລັອກ?"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"ຮູບແບບຜິດ"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"ລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"ລະຫັດ PIN ຜິດ"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"ລອງໃໝ່ໃນອີກ <xliff:g id="NUMBER">%d</xliff:g> ວິນາທີ."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"ແຕ້ມຮູບແບບປົດລັອກຂອງທ່ານ"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"ໃສ່ລະຫັດ PIN ຂອງຊິມ"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"ໃສ່ລະຫັດ PIN"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"ໃສ່ລະຫັດຜ່ານ"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"ຊິມຖືກປິດການນຳໃຊ້ແລ້ວ. ປ້ອນລະຫັດ PUK ເພື່ອດຳເນີນການຕໍ່. ຕິດຕໍ່ຜູ່ໃຫ້ບໍລິການສຳລັບລາຍລະອຽດ."</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"ໃສ່ລະຫັດ PIN ທີ່ຕ້ອງການ."</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"ຢືນຢັນລະຫັດ PIN ທີ່ຕ້ອງການ"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"ປົດລັອກ SIM card..."</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"ລະຫັດ PIN ບໍ່ຖືກຕ້ອງ."</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"ພິມລະຫັດ PIN ຄວາມຍາວ 4 ເຖິງ 8 ໂຕເລກ."</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"ລະຫັດ PUK ຄວນມີຢ່າງໜ້ອຍ 8 ໂຕເລກ."</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"ປ້ອນລະຫັດ PUK ທີ່ຖືກຕ້ອງຄືນໃໝ່. ການພະຍາຍາມໃສ່ຫຼາຍເທື່ອຈະເຮັດໃຫ້ຊິມກາດໃຊ້ບໍ່ໄດ້ຖາວອນ."</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"ລະຫັດ PIN ບໍ່ກົງກັນ"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"ແຕ້ມຮູບແບບປົດລັອກຫຼາຍເກີນໄປ"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"ເພື່ອປົດລັອກ, ເຂົ້າສູ່ລະບົບດ້ວຍບັນຊີ Google ຂອງທ່ານ."</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"ຊື່ຜູ່ໃຊ້ (ອີເມວ)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"ລະຫັດຜ່ານ"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"ເຂົ້າສູ່ລະບົບ"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"ຊື່ຜູ່ໃຊ້ ຫຼືລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ."</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"ລືມຊື່ຜູ່ໃຊ້ ຫຼືລະຫັດຜ່ານຂອງທ່ານບໍ່?\nໄປທີ່ "<b>"google.com/accounts/recovery"</b>"."</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"ກຳລັງກວດສອບບັນຊີ..."</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"ທ່ານພິມລະຫັດ PIN​ ຂອງທ່ານຜິດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. \n\nກະລຸນາລອງໃໝ່ໃນອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ວິນາທີ."</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"ທ່ານພິມລະຫັດຜິດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. \n\nລອງໃໝ່ໃນອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ວິນາທີ."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"ທ່ານແຕ້ມຮູບແບບປົດລັອກຂອງທ່ານຜິດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. \n\nກະລຸນາລອງໃໝ່ໃນອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ວິນາທີ."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"ທ່ານໄດ້ພະຍາຍາມປົດລັອກແທັບເລັດບໍ່ສຳເລັດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. ຫຼັງຈາກຄວາມພະຍາຍາມອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ເທື່ອ ແທັບເລັດຂອງທ່ານຈະຖືກຕັ້ງ ໃຫ້ກັບໄປໃຊ້ຄ່າເລີ່ມຕົ້ນຈາກໂຮງງານຄືນໃໝ່ ແລະຂໍ້ມູນຜູ່ໃຊ້ທັງໝົດຈະສູນຫາຍໄປ."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"ທ່ານໄດ້ພະຍາຍາມປົດລັອກໂທລະສັບບໍ່ສຳເລັດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. ຫຼັງຈາກຄວາມພະຍາຍາມອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ເທື່ອ ໂທລະສັບຂອງທ່ານຈະຖືກຕັ້ງ ໃຫ້ກັບໄປໃຊ້ຄ່າເລີ່ມຕົ້ນຈາກໂຮງງານຄືນໃໝ່ ແລະຂໍ້ມູນຜູ່ໃຊ້ທັງໝົດຈະສູນຫາຍໄປ."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"ທ່ານໄດ້ພະຍາຍາມປົດລັອກແທັບເລັດບໍ່ສຳເລັດ <xliff:g id="NUMBER">%d</xliff:g> ເທື່ອແລ້ວ. ຕອນນີ້ແທັບເລັດຈະຖືກຕັ້ງໃຫ້ກັບໄປໃຊ້ຄ່າເລີ່ມຕົ້ນຈາກໂຮງງານ."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"ທ່ານໄດ້ພະຍາຍາມປົດລັອກໂທລະສັບບໍ່ຖືກ <xliff:g id="NUMBER">%d</xliff:g> ເທື່ອແລ້ວ. ຕອນນີ້ໂທລະສັບຈະຖືກຣີເຊັດເປັນຄ່າຈາກໂຮງງານ."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"ທ່ານແຕ້ມຮູບແບບປົດລັອກຜິດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. ຫຼັງຈາກແຕ້ມຜິດອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ເທື່ອ, ທ່ານຈະຖືກຖາມໃຫ້ປົດລັອກແທັບເລັດຂອງທ່ານ ດ້ວຍການເຂົ້າສູ່ລະບົບໂດຍໃຊ້ອີເມວຂອງທ່ານ.\n\n ກະລຸນາລອງໃໝ່ອີກຄັ້ງໃນອີກ <xliff:g id="NUMBER_2">%d</xliff:g> ວິນາທີ."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"ທ່ານແຕ້ມຮູບແບບປົດລັອກຂອງທ່ານຜິດ <xliff:g id="NUMBER_0">%d</xliff:g> ເທື່ອແລ້ວ. ຫຼັງຈາກຄວາມພະຍາຍາມອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ເທື່ອ ທ່ານຈະຖືກຖາມໃຫ້ປົດລັອກໂທລະສັບຂອງທ່ານດ້ວຍບັນຊີອີເມວ.\n\n ລອງໃໝ່ອີກຄັ້ງໃນ <xliff:g id="NUMBER_2">%d</xliff:g> ວິນາທີ."</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"ລຶບອອກ"</string>
- <string name="keyguard_transport_prev_description" msgid="8229108430245669854">"ປຸ່ມເພງກ່ອນໜ້າ"</string>
- <string name="keyguard_transport_next_description" msgid="4299258300283778305">"ປຸ່ມເພງຕໍ່ໄປ"</string>
- <string name="keyguard_transport_pause_description" msgid="5093073338238310224">"ປຸ່ມຢຸດຊົ່ວຄາວ"</string>
- <string name="keyguard_transport_play_description" msgid="2924628863741150956">"ປຸ່ມຫຼິ້ນ"</string>
- <string name="keyguard_transport_stop_description" msgid="3084179324810575787">"ປຸ່ມຢຸດ"</string>
- <string name="keyguard_carrier_default" msgid="8700650403054042153">"ບໍ່ມີບໍລິການ"</string>
-</resources>
diff --git a/packages/Keyguard/res/values-lt/strings.xml b/packages/Keyguard/res/values-lt/strings.xml
index 48167e8cdb7b..29f62a75d39d 100644
--- a/packages/Keyguard/res/values-lt/strings.xml
+++ b/packages/Keyguard/res/values-lt/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Pristabdymo mygtukas"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Paleidimo mygtukas"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Sustabdymo mygtukas"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Patinka"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Nepatinka"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Širdis"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Jei norite tęsti, atrakinkite"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Paleidimas atšauktas"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Paleiskite „<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>“, kad jį ištrintumėte."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"„<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>“ nebus ištrintas."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-lv/strings.xml b/packages/Keyguard/res/values-lv/strings.xml
index 332e613a46f2..aa1393458a67 100644
--- a/packages/Keyguard/res/values-lv/strings.xml
+++ b/packages/Keyguard/res/values-lv/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Pārtraukšanas poga"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Atskaņošanas poga"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Apturēšanas poga"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Patīk"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Nepatīk"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Sirds"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Atbloķējiet, lai turpinātu."</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Palaišana atcelta"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Velciet logrīku <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>, lai to izdzēstu."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"Logrīks <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> netiks izdzēsts."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-mn-rMN/strings.xml b/packages/Keyguard/res/values-mn-rMN/strings.xml
deleted file mode 100644
index e4c07eb428a0..000000000000
--- a/packages/Keyguard/res/values-mn-rMN/strings.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="keyguard_password_enter_pin_code" msgid="3037685796058495017">"PIN кодыг бичнэ үү"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><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>
- <string name="keyguard_label_text" msgid="861796461028298424">"Тайлах бол Цэсийг дараад 0."</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Нүүрээр түгжээ тайлах оролдлогын тоо дээд хэмжээнээс хэтэрсэн"</string>
- <string name="keyguard_charged" msgid="3272223906073492454">"Цэнэглэгдэв"</string>
- <string name="keyguard_plugged_in" msgid="8117572000639998388">"Цэнэглэж байна, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="keyguard_low_battery" msgid="8143808018719173859">"Цэнэглэгчээ холбоно уу."</string>
- <string name="keyguard_instructions_when_pattern_disabled" msgid="1332288268600329841">"Тайлх бол цэсийг дарна уу."</string>
- <string name="keyguard_network_locked_message" msgid="9169717779058037168">"Сүлжээ түгжигдсэн"</string>
- <string name="keyguard_missing_sim_message_short" msgid="494980561304211931">"SIM карт байхгүй"</string>
- <string name="keyguard_missing_sim_message" product="tablet" msgid="1445849005909260039">"Таблет SIM картгүй."</string>
- <string name="keyguard_missing_sim_message" product="default" msgid="3481110395508637643">"Утсанд SIM карт байхгүй."</string>
- <string name="keyguard_missing_sim_instructions" msgid="5210891509995942250">"SIM картыг оруулна уу."</string>
- <string name="keyguard_missing_sim_instructions_long" msgid="5968985489463870358">"SIM карт байхгүй эсвэл унших боломжгүй. SIM карт оруулна уу."</string>
- <string name="keyguard_permanent_disabled_sim_message_short" msgid="8340813989586622356">"Ашиглаж болохгүй SIM карт."</string>
- <string name="keyguard_permanent_disabled_sim_instructions" msgid="5892940909699723544">"Таны SIM карт бүрмөсөн идэвхгүй болов.\n Өөр SIM карт авах бол өөрийн утасгүй үйлчилгээний нийлүүлэгчтэй холбогдоно уу."</string>
- <string name="keyguard_sim_locked_message" msgid="6875773413306380902">"SIM карт түгжигдсэн."</string>
- <string name="keyguard_sim_puk_locked_message" msgid="3747232467471801633">"SIM картны PUK-түгжигдсэн."</string>
- <string name="keyguard_sim_unlock_progress_dialog_message" msgid="7975221805033614426">"SIM картны түгжээг гаргаж байна…"</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. %3$d. -н %2$d виджет"</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Виджет нэмэх."</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Хоосон"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Тайлах хэсэг нээгдсэн."</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Тайлах хэсэг хаагдсан."</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> виджет."</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Хэрэглэгч сонгоч"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Статус"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Камер"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Медиа контрол"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Виджет дахин эрэмбэлж эхлэв."</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Виджетийг дахин эрэмбэлж дуусав."</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> виджет устсан."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Түгжээгүй хэсгийг өргөсгөх."</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Тайлах гулсуулалт."</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Тайлах хээ."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Нүүрээр тайлах"</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Тайлах пин."</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Тайлах нууц үг."</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Хээний хэсэг."</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Гулсуулах хэсэг."</string>
- <string name="keyguard_accessibility_transport_prev_description" msgid="1337286538318543555">"Өмнөх бичлэг товч"</string>
- <string name="keyguard_accessibility_transport_next_description" msgid="7073928300444909320">"Дараагийн бичлэг товч"</string>
- <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Түр зогсоох товч"</string>
- <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Тоглуулах товч"</string>
- <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Зогсоох товч"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Сайн"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Онцгүй"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Зүрх"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Үргэлжлүүлэхийн тулд түгжээг тайлна уу"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Эхлүүлэхийг цуцалсан"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Устгахын тулд <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>-г тавина уу."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> устахгүй."</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"АБВ"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Цуцлах"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Устгах"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Дуусгах"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Горим өөрчлөх"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Шифт"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Оруулах"</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"Тайлах"</string>
- <string name="description_target_camera" msgid="969071997552486814">"Камер"</string>
- <string name="description_target_silent" msgid="893551287746522182">"Чимээгүй"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"Дуунууд идэвхтэй"</string>
- <string name="description_target_search" msgid="3091587249776033139">"Хайх"</string>
- <string name="description_direction_up" msgid="7169032478259485180">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>-г гулсуулах."</string>
- <string name="description_direction_down" msgid="5087739728639014595">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> хийх бол доош гулсуулах."</string>
- <string name="description_direction_left" msgid="7207478719805562165">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> хийх зүүнлүү гулсуулах."</string>
- <string name="description_direction_right" msgid="8034433242579600980">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> хийх бол баруунлуу гулсуулах."</string>
- <string name="user_switched" msgid="3768006783166984410">"Одоогийн хэрэглэгч <xliff:g id="NAME">%1$s</xliff:g>."</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"Яаралтай дуудлага"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Хээг мартсан"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"Буруу хээ"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"Нууц үг буруу"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN буруу"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"<xliff:g id="NUMBER">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"Хээг зурах"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"SIM PIN оруулна уу"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"PIN оруулна уу"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"Нууц үгээ оруулна уу"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM идэвхгүй байна. Үргэлжлүүлэх бол PUK кодыг оруулна уу. Дэлгэрэнгүй мэдээллийг оператороос асууна ууу"</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Хүссэн PIN кодоо оруулна уу"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Хүссэн PIN кодоо дахин оруулна уу"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM картны түгжээг гаргаж байна…"</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Буруу PIN код."</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"4-8 тооноос бүтэх PIN-г бичнэ үү."</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK код 8-с цөөнгүй тооноос бүтнэ."</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"Зөв PUK кодыг дахин оруулна уу. Давтан оролдвол SIM нь бүрмөсөн идэвхгүй болгоно."</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN кодууд таарахгүй байна"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Хээ оруулах оролдлого хэт олон"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"Түгжээг тайлах бол Google акаунтаараа нэвтэрнэ үү."</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"Хэрэглэгчийн нэр (имэйл)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"Нууц үг"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"Нэвтрэх"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"Хэрэглэгчийн нэр эсвэл нууц үг буруу."</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Хэрэглэгчийн нэр нууц үгээ мартсан уу?\n"<b>"google.com/accounts/recovery"</b>"-д зочилно уу."</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"Акаунт шалгаж байна…"</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Та PIN кодоо <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу бичив. \n\n<xliff:g id="NUMBER_1">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Та PIN кодоо <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу бичив. \n\n<xliff:g id="NUMBER_1">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Та тайлах хээг <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу зурлаа. \n\n<xliff:g id="NUMBER_1">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Та таблетыг тайлах гэж <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу оролдлоо. <xliff:g id="NUMBER_1">%d</xliff:g> удаа дахин буруу оролдвол таблет үйлдвэрийн үндсэн утгаараа тохируулагдах ба хэрэглэгчийн дата бүхэлдээ устана."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Та утсыг тайлах гэж <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу оролдлоо. <xliff:g id="NUMBER_1">%d</xliff:g> удаа дахин буруу оролдвол утас үйлдвэрийн үндсэн утгаараа тохируулагдах ба хэрэглэгчийн дата бүхэлдээ устана."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Та таблетыг тайлах гэж <xliff:g id="NUMBER">%d</xliff:g> удаа буруу оролдлоо. Таблет одоо үйлдвэрийн үндсэн утгаараа тохируулагдах болно."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Та утсыг тайлах гэж <xliff:g id="NUMBER">%d</xliff:g> удаа буруу оролдлоо. Утас одоо үйлдвэрийн үндсэн утгаараа тохируулагдах болно."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Та тайлах хээг <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу зурлаа. <xliff:g id="NUMBER_1">%d</xliff:g> удаа дахин буруу оруулбал, та таблетаа тайлахын тулд имэйл акаунт шаардлагатай болно.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Та тайлах хээг <xliff:g id="NUMBER_0">%d</xliff:g> удаа буруу зурлаа. <xliff:g id="NUMBER_1">%d</xliff:g> удаа дахин буруу оруулбал, та утсаа тайлахын тулд имэйл акаунтаа ашиглах шаардлагатай болно.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> секундын дараа дахин оролдоно уу."</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Устгах"</string>
- <string name="keyguard_transport_prev_description" msgid="8229108430245669854">"Өмнөх дуу товч"</string>
- <string name="keyguard_transport_next_description" msgid="4299258300283778305">"Дараагийн дуу товч"</string>
- <string name="keyguard_transport_pause_description" msgid="5093073338238310224">"Түр зогсох товч"</string>
- <string name="keyguard_transport_play_description" msgid="2924628863741150956">"Тоглуулах товч"</string>
- <string name="keyguard_transport_stop_description" msgid="3084179324810575787">"Зогсоох товч"</string>
- <string name="keyguard_carrier_default" msgid="8700650403054042153">"Үйлчилгээ байхгүй."</string>
-</resources>
diff --git a/packages/Keyguard/res/values-ms-rMY/strings.xml b/packages/Keyguard/res/values-ms-rMY/strings.xml
deleted file mode 100644
index 17ec2e6197e3..000000000000
--- a/packages/Keyguard/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Taip kod PIN"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Sentuh 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>
- <string name="keyguard_label_text" msgid="861796461028298424">"Untuk membuka kunci, tekan Menu, kemudian 0."</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Telah melepasi had cubaan Buka Kunci Wajah"</string>
- <string name="keyguard_charged" msgid="3272223906073492454">"Sudah dicas"</string>
- <string name="keyguard_plugged_in" msgid="8117572000639998388">"Mengecas, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="keyguard_low_battery" msgid="8143808018719173859">"Sambungkan pengecas anda."</string>
- <string name="keyguard_instructions_when_pattern_disabled" msgid="1332288268600329841">"Tekan Menu untuk membuka kunci."</string>
- <string name="keyguard_network_locked_message" msgid="9169717779058037168">"Rangkaian dikunci"</string>
- <string name="keyguard_missing_sim_message_short" msgid="494980561304211931">"Tiada kad SIM"</string>
- <string name="keyguard_missing_sim_message" product="tablet" msgid="1445849005909260039">"Tiada kad SIM dalam tablet."</string>
- <string name="keyguard_missing_sim_message" product="default" msgid="3481110395508637643">"Tiada kad SIM dalam telefon."</string>
- <string name="keyguard_missing_sim_instructions" msgid="5210891509995942250">"Masukkan kad SIM."</string>
- <string name="keyguard_missing_sim_instructions_long" msgid="5968985489463870358">"Kad SIM tiada atau tidak boleh dibaca. Sila masukkan kad SIM."</string>
- <string name="keyguard_permanent_disabled_sim_message_short" msgid="8340813989586622356">"Kad SIM tidak boleh digunakan."</string>
- <string name="keyguard_permanent_disabled_sim_instructions" msgid="5892940909699723544">"Kad SIM anda telah dilumpuhkan secara kekal.\n Hubungi pembekal perkhidmatan wayarles anda untuk mendapatkan kad SIM lain."</string>
- <string name="keyguard_sim_locked_message" msgid="6875773413306380902">"Kad SIM dikunci."</string>
- <string name="keyguard_sim_puk_locked_message" msgid="3747232467471801633">"Kad SIM dikunci dengan PUK."</string>
- <string name="keyguard_sim_unlock_progress_dialog_message" msgid="7975221805033614426">"Membuka kunci kad SIM..."</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d dari %3$d."</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Tambah widget."</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Kosong"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Bahagian buka kunci dikembangkan."</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Bahagian buka kunci diruntuhkan."</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Pemilih pengguna"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Status"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kamera"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Kawalan media"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Penyusunan semula widget dimulakan."</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Penyusunan semula widget tamat."</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> dipadamkan."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Kembangkan bahagian buka kunci."</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Buka kunci luncur."</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Buka kunci corak."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Wajah Buka Kunci"</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Buka kunci pin."</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Buka kunci kata laluan."</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Kawasan corak."</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Kawasan luncur."</string>
- <string name="keyguard_accessibility_transport_prev_description" msgid="1337286538318543555">"Butang lagu sebelumnya"</string>
- <string name="keyguard_accessibility_transport_next_description" msgid="7073928300444909320">"Butang lagu seterusnya"</string>
- <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Butang jeda"</string>
- <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Butang main"</string>
- <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Butang berhenti"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Menyukai"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Tidak diterima"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Jantung"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Buka kunci untuk meneruskan"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Pelancaran dibatalkan"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Jatuhkan <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> untuk memadam."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> tidak akan dipadamkan."</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Batal"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Padam"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Selesai"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Perubahan mod"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Masuk"</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"Buka kunci"</string>
- <string name="description_target_camera" msgid="969071997552486814">"Kamera"</string>
- <string name="description_target_silent" msgid="893551287746522182">"Senyap"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"Bunyi dihidupkan"</string>
- <string name="description_target_search" msgid="3091587249776033139">"Carian"</string>
- <string name="description_direction_up" msgid="7169032478259485180">"Luncurkan ke atas untuk <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_direction_down" msgid="5087739728639014595">"Luncurkan ke bawah untuk <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_direction_left" msgid="7207478719805562165">"Luncurkan ke kiri untuk <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="description_direction_right" msgid="8034433242579600980">"Luncurkan ke kanan untuk <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
- <string name="user_switched" msgid="3768006783166984410">"Pengguna semasa <xliff:g id="NAME">%1$s</xliff:g>."</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"Panggilan kecemasan"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Lupa Corak"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"Corak Salah"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"Kata Laluan Salah"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN salah"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Cuba lagi dalam <xliff:g id="NUMBER">%d</xliff:g> saat."</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"Lukiskan corak anda"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Masukkan PIN SIM"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"Masukkan PIN"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"Masukkan Kata Laluan"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"Kini SIM dilumpuhkan. Masukkan kod PUK untuk meneruskan. Hubungi pembawa untuk butiran."</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Masukkan kod PIN yang diingini"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Sahkan kod PIN yang diingini"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Membuka kunci kad SIM..."</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Kod PIN salah."</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Taipkan PIN yang mengandungi 4 hingga 8 nombor."</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Kod PUK mestilah 8 nombor atau lebih."</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"Masukkan semula kod PIN yang betul. Percubaan berulang akan melumpuhkan SIM secara kekal."</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Kod PIN tidak sepadan"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Terlalu banyak percubaan melukis corak"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"Untuk membuka kunci, log masuk dengan akaun Google anda."</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"Nama Pengguna (E-mel)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"Kata laluan"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"Log masuk"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"Nama pengguna atau kata laluan tidak sah."</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Lupa nama pengguna atau kata laluan anda?\nLawati"<b>"google.com/accounts/recovery"</b>"."</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"Menyemak akaun…"</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Anda telah menaip PIN anda secara salah sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. \n\nCuba lagi dalam <xliff:g id="NUMBER_1">%d</xliff:g> saat."</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Anda telah menaip kata laluan anda secara salah sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. \n\nCuba lagi dalam <xliff:g id="NUMBER_1">%d</xliff:g> saat."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Anda telah tersilap melukis corak buka kunci anda sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. \n\nCuba lagi dalam <xliff:g id="NUMBER_1">%d</xliff:g> saat."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Anda telah mencuba untuk membuka kunci tablet dengan salah sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. Selepas <xliff:g id="NUMBER_1">%d</xliff:g> lagi percubaan yang tidak berjaya, tablet akan ditetapkan semula kepada tetapan lalai kilang dan semua data pengguna akan hilang."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Anda telah mencuba untuk membuka kunci telefon dengan salah sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. Selepas <xliff:g id="NUMBER_1">%d</xliff:g> lagi percubaan yang tidak berjaya, telefon akan ditetapkan semula kepada tetapan lalai kilang dan semua data pengguna akan hilang."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Anda telah mencuba untuk membuka kunci tablet secara salah sebanyak <xliff:g id="NUMBER">%d</xliff:g> kali. Tablet kini akan ditetapkan semula ke tetapan lalai kilang."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Anda telah mencuba untuk membuka kunci telefon secara salah sebanyak <xliff:g id="NUMBER">%d</xliff:g> kali. Telefon kini akan ditetapkan semula ke tetapan lalai kilang."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Anda telah tersilap melukis corak buka kunci sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. Selepas <xliff:g id="NUMBER_1">%d</xliff:g> lagi percubaan yang tidak berjaya, anda akan diminta membuka kunci tablet anda menggunakan log masuk Google anda.\n\n Cuba lagi dalam <xliff:g id="NUMBER_2">%d</xliff:g> saat."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Anda telah tersilap lukis corak buka kunci sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. Selepas <xliff:g id="NUMBER_1">%d</xliff:g> lagi percubaan yang tidak berjaya, anda akan diminta membuka kunci telefon anda menggunakan log masuk Google anda.\n\n Cuba lagi dalam <xliff:g id="NUMBER_2">%d</xliff:g> saat."</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Alih keluar"</string>
- <string name="keyguard_transport_prev_description" msgid="8229108430245669854">"Butang lagu sebelumnya"</string>
- <string name="keyguard_transport_next_description" msgid="4299258300283778305">"Butang lagu seterusnya"</string>
- <string name="keyguard_transport_pause_description" msgid="5093073338238310224">"Butang jeda"</string>
- <string name="keyguard_transport_play_description" msgid="2924628863741150956">"Butang main"</string>
- <string name="keyguard_transport_stop_description" msgid="3084179324810575787">"Butang berhenti"</string>
- <string name="keyguard_carrier_default" msgid="8700650403054042153">"Tiada perkhidmatan."</string>
-</resources>
diff --git a/packages/Keyguard/res/values-nb/strings.xml b/packages/Keyguard/res/values-nb/strings.xml
index dff741c9b3c8..6a5bfa99ef0f 100644
--- a/packages/Keyguard/res/values-nb/strings.xml
+++ b/packages/Keyguard/res/values-nb/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Pause-knapp"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Avspillingsknapp"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Stopp-knapp"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Likt av meg"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Sanger du ikke liker"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Hjerte"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Lås opp for å fortsette"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Starten ble kansellert"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Slipp <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> for å slette den."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> blir ikke slettet."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-nl/strings.xml b/packages/Keyguard/res/values-nl/strings.xml
index 799c801e8872..b94cb700c00d 100644
--- a/packages/Keyguard/res/values-nl/strings.xml
+++ b/packages/Keyguard/res/values-nl/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Knop voor onderbreken"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Knop voor afspelen"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Knop voor stoppen"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Leuk"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Niet leuk"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Hart"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Ontgrendel om door te gaan"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Start geannuleerd"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Zet <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> neer om te verwijderen."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> wordt niet verwijderd."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"Alt"</string>
diff --git a/packages/Keyguard/res/values-pl/strings.xml b/packages/Keyguard/res/values-pl/strings.xml
index 30910f5f351d..15a4a7c0c40f 100644
--- a/packages/Keyguard/res/values-pl/strings.xml
+++ b/packages/Keyguard/res/values-pl/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Przycisk wstrzymania"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Przycisk odtwarzania"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Przycisk zatrzymania"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Podoba mi się"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Nie podoba mi się"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Serce"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Odblokuj, by kontynuować"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Uruchomienie anulowane"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Upuść <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>, by usunąć."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> nie zostanie usunięty."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-pt-rPT/strings.xml b/packages/Keyguard/res/values-pt-rPT/strings.xml
index 2aba3b4058a4..222051c89f09 100644
--- a/packages/Keyguard/res/values-pt-rPT/strings.xml
+++ b/packages/Keyguard/res/values-pt-rPT/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Botão Pausa"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Botão Reproduzir"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Botão Parar"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Gosto"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Não gosto"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Coração"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Desbloquear para continuar"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Lançamento cancelado"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Largue <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> para eliminar."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> não será eliminado."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-pt/strings.xml b/packages/Keyguard/res/values-pt/strings.xml
index 3c668a024e68..a56337204606 100644
--- a/packages/Keyguard/res/values-pt/strings.xml
+++ b/packages/Keyguard/res/values-pt/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Botão \"Pausar\""</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Botão \"Reproduzir\""</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Botão \"Parar\""</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Gostei"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Não gostei"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Coração"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Desbloqueie para continuar"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Inicialização cancelada"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Solte <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> para excluir."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> não será excluído."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-rm/strings.xml b/packages/Keyguard/res/values-rm/strings.xml
index f7ba4e383622..8dda0554136e 100644
--- a/packages/Keyguard/res/values-rm/strings.xml
+++ b/packages/Keyguard/res/values-rm/strings.xml
@@ -121,20 +121,6 @@
<skip />
<!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) -->
<skip />
- <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) -->
- <skip />
- <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) -->
- <skip />
- <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) -->
- <skip />
- <!-- no translation found for keyguard_accessibility_show_bouncer (5425837272418176176) -->
- <skip />
- <!-- no translation found for keyguard_accessibility_hide_bouncer (7896992171878309358) -->
- <skip />
- <!-- no translation found for keyguard_accessibility_delete_widget_start (4096550552634391451) -->
- <skip />
- <!-- no translation found for keyguard_accessibility_delete_widget_end (508833506780909393) -->
- <skip />
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-ro/strings.xml b/packages/Keyguard/res/values-ro/strings.xml
index cebf0df9f451..01d79f87358d 100644
--- a/packages/Keyguard/res/values-ro/strings.xml
+++ b/packages/Keyguard/res/values-ro/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Butonul Întrerupeți"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Butonul Redați"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Butonul Opriți"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Vot pozitiv"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Vot negativ"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Inimă"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Deblocați pentru a continua"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Lansare anulată"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Eliberați <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> pentru a șterge."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"Widgetul <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> nu va fi șters."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-ru/strings.xml b/packages/Keyguard/res/values-ru/strings.xml
index d8a457df90a1..136982ae1b31 100644
--- a/packages/Keyguard/res/values-ru/strings.xml
+++ b/packages/Keyguard/res/values-ru/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Кнопка паузы"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Кнопка воспроизведения"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Кнопка выключения"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Нравится"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Не нравится"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Рейтинг"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Разблокируйте экран, чтобы продолжить."</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Запуск отменен."</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Отпустите виджет \"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>\", чтобы удалить его."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"Виджет \"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>\" не будет удален."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"АБВ"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-sk/strings.xml b/packages/Keyguard/res/values-sk/strings.xml
index bd3f058b3803..4b2e1e337ec1 100644
--- a/packages/Keyguard/res/values-sk/strings.xml
+++ b/packages/Keyguard/res/values-sk/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Tlačidlo Pozastaviť"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Tlačidlo Prehrať"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Tlačidlo Zastaviť"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Páči sa mi"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Nepáči sa mi"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Srdce"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Odomknite zariadenie a pokračujte"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Spustenie bolo zrušené"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Uvoľnením dotyku miniaplikáciu <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> odstránite."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"Miniaplikácia <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> nebude odstránená."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-sl/strings.xml b/packages/Keyguard/res/values-sl/strings.xml
index 7e7d89331589..b6cfc1ca2c2d 100644
--- a/packages/Keyguard/res/values-sl/strings.xml
+++ b/packages/Keyguard/res/values-sl/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Gumb za začasno ustavitev"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Gumb za predvajanje"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Gumb za ustavitev"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Všeč mi je"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Ni mi všeč"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Srce"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Za nadaljevanje odklenite"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Zagon je preklican"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Izpustite pripomoček <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>, da ga izbrišete."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"Pripomoček <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ne bo izbrisan."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-sr/strings.xml b/packages/Keyguard/res/values-sr/strings.xml
index c5cc39cc888f..664b85e96bc3 100644
--- a/packages/Keyguard/res/values-sr/strings.xml
+++ b/packages/Keyguard/res/values-sr/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Дугме за паузу"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Дугме за репродукцију"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Дугме за заустављање"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Свиђа ми се"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Не свиђа ми се"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Срце"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Откључајте да бисте наставили"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Покретање је отказано"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Отпустите виџет <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> да бисте га избрисали."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"Виџет <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> неће бити избрисан."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
@@ -141,5 +134,5 @@
<string name="keyguard_transport_pause_description" msgid="5093073338238310224">"Дугме за паузу"</string>
<string name="keyguard_transport_play_description" msgid="2924628863741150956">"Дугме за репродукцију"</string>
<string name="keyguard_transport_stop_description" msgid="3084179324810575787">"Дугме за заустављање"</string>
- <string name="keyguard_carrier_default" msgid="8700650403054042153">"Офлајн сте."</string>
+ <string name="keyguard_carrier_default" msgid="8700650403054042153">"Ван мреже сте."</string>
</resources>
diff --git a/packages/Keyguard/res/values-sv/strings.xml b/packages/Keyguard/res/values-sv/strings.xml
index dd82711dffaa..fb0f91214fa6 100644
--- a/packages/Keyguard/res/values-sv/strings.xml
+++ b/packages/Keyguard/res/values-sv/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Pausknappen"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Uppspelningsknappen"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Stoppknappen"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Gillar"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Tummen ned"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Hjärta"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Lås upp om du vill fortsätta"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Lanseringen har avbrutits"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Ta bort genom att släppa <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> här."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> kommer inte att tas bort."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-sw/strings.xml b/packages/Keyguard/res/values-sw/strings.xml
index 5e2b163dc344..27f1f30fdf69 100644
--- a/packages/Keyguard/res/values-sw/strings.xml
+++ b/packages/Keyguard/res/values-sw/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Kitufe cha kusitisha"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Kitufe cha kucheza"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Kitufe cha kusitisha"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Bomba"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Si bomba"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Moyo"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Fungua ili uendelee"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Uzinduzi umeghairiwa"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Dondosha <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ili ufute."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> haitafutwa."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-th/strings.xml b/packages/Keyguard/res/values-th/strings.xml
index 3f2c74760ceb..d6308b6cc4db 100644
--- a/packages/Keyguard/res/values-th/strings.xml
+++ b/packages/Keyguard/res/values-th/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"ปุ่มหยุดชั่วคราว"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"ปุ่มเล่น"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"ปุ่มหยุด"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"สุดยอด"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"ไม่ชอบ"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"หัวใจ"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"ปลดล็อกเพื่อดำเนินการต่อ"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"ยกเลิกการเปิดใช้งานแล้ว"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"ลาก <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> เพื่อลบ"</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> จะไม่ถูกลบ"</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-tl/strings.xml b/packages/Keyguard/res/values-tl/strings.xml
index 3a33c9f92df4..a41d268b66dc 100644
--- a/packages/Keyguard/res/values-tl/strings.xml
+++ b/packages/Keyguard/res/values-tl/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Button na I-pause"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Button na I-play"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Button na Ihinto"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Thumbs up"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Thumbs down"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Heart"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"I-unlock upang magpatuloy"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Nakansela ang paglunsad"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"I-drop ang <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> upang tanggalin."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"Hindi tatanggalin ang <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-tr/strings.xml b/packages/Keyguard/res/values-tr/strings.xml
index d9c950f70801..0af7740d42de 100644
--- a/packages/Keyguard/res/values-tr/strings.xml
+++ b/packages/Keyguard/res/values-tr/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Duraklat düğmesi"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Oynat düğmesi"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Durdur düğmesi"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Beğen"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Beğenme"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Kalp"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Devam etmek için kilidini açın"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Başlatma iptal edildi"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Silmek için <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> widget\'ını bırakın."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> silinmeyecek."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-uk/strings.xml b/packages/Keyguard/res/values-uk/strings.xml
index 01bf6878a2ab..2879e875e1f1 100644
--- a/packages/Keyguard/res/values-uk/strings.xml
+++ b/packages/Keyguard/res/values-uk/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Кнопка \"Призупинити\""</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Кнопка \"Відтворити\""</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Кнопка \"Зупинити\""</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Подобається"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Не подобається"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Рейтинг"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Розблокуйте, щоб продовжити"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Запуск скасовано"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Відпустіть <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>, щоб видалити."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> не буде видалено."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-vi/strings.xml b/packages/Keyguard/res/values-vi/strings.xml
index 6ae8312bffa7..70d3c73d126e 100644
--- a/packages/Keyguard/res/values-vi/strings.xml
+++ b/packages/Keyguard/res/values-vi/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Nút tạm dừng"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Nút phát"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Nút dừng"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Bài hát được đánh dấu thích"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Bài hát được đánh dấu không thích"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Trái tim"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Mở khóa để tiếp tục"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Quá trình khởi chạy bị hủy"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Thả <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> để xóa."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> sẽ không bị xóa."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-zh-rCN/strings.xml b/packages/Keyguard/res/values-zh-rCN/strings.xml
index 06d71fff0043..cdb1944ebc8e 100644
--- a/packages/Keyguard/res/values-zh-rCN/strings.xml
+++ b/packages/Keyguard/res/values-zh-rCN/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"暂停按钮"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"播放按钮"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"停止按钮"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"我喜欢"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"不喜欢"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"爱心"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"解锁即可继续"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"启动已取消"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"放下<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>即可将其删除。"</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>将不会被删除。"</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-zh-rHK/strings.xml b/packages/Keyguard/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 724357f914a0..000000000000
--- a/packages/Keyguard/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/* //device/apps/common/assets/res/any/strings.xml
-**
-** Copyright 2006, 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="keyguard_password_enter_pin_code" msgid="3037685796058495017">"輸入 PIN 碼"</string>
- <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>
- <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><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>
- <string name="keyguard_label_text" msgid="861796461028298424">"如要解鎖,請按選單鍵,然後按 0。"</string>
- <string name="faceunlock_multiple_failures" msgid="754137583022792429">"已超過臉容解鎖嘗試次數上限"</string>
- <string name="keyguard_charged" msgid="3272223906073492454">"充電完成"</string>
- <string name="keyguard_plugged_in" msgid="8117572000639998388">"充電中 (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
- <string name="keyguard_low_battery" msgid="8143808018719173859">"請連接充電器。"</string>
- <string name="keyguard_instructions_when_pattern_disabled" msgid="1332288268600329841">"按選單鍵解鎖。"</string>
- <string name="keyguard_network_locked_message" msgid="9169717779058037168">"網絡已鎖定"</string>
- <string name="keyguard_missing_sim_message_short" msgid="494980561304211931">"找不到 SIM 卡"</string>
- <string name="keyguard_missing_sim_message" product="tablet" msgid="1445849005909260039">"平板電腦中沒有 SIM 卡。"</string>
- <string name="keyguard_missing_sim_message" product="default" msgid="3481110395508637643">"手機中沒有 SIM 卡。"</string>
- <string name="keyguard_missing_sim_instructions" msgid="5210891509995942250">"請插入 SIM 卡。"</string>
- <string name="keyguard_missing_sim_instructions_long" msgid="5968985489463870358">"找不到 SIM 卡或無法讀取 SIM 卡,請插入 SIM 卡。"</string>
- <string name="keyguard_permanent_disabled_sim_message_short" msgid="8340813989586622356">"SIM 卡無法使用。"</string>
- <string name="keyguard_permanent_disabled_sim_instructions" msgid="5892940909699723544">"您的 SIM 卡已被永久停用。\n請與您的無線服務供應商聯絡,以取得另一張 SIM 卡。"</string>
- <string name="keyguard_sim_locked_message" msgid="6875773413306380902">"SIM 卡處於鎖定狀態。"</string>
- <string name="keyguard_sim_puk_locked_message" msgid="3747232467471801633">"SIM 卡處於 PUK 鎖定狀態。"</string>
- <string name="keyguard_sim_unlock_progress_dialog_message" msgid="7975221805033614426">"正在解開上鎖的 SIM 卡..."</string>
- <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s。第 %2$d 個小工具,共 %3$d 個。"</string>
- <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"新增小工具。"</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"空白"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"解鎖區域已展開。"</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"解鎖區域已收合。"</string>
- <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>小工具。"</string>
- <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"用戶選取工具"</string>
- <string name="keyguard_accessibility_status" msgid="8008264603935930611">"狀態"</string>
- <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"相機"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"媒體控制"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"已開始為小工具重新排列次序。"</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"已完成為小工具重新排列次序。"</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>小工具已刪除。"</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"展開解鎖區域。"</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"滑動解鎖。"</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"圖案解鎖。"</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"臉容解鎖。"</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PIN 解鎖。"</string>
- <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"密碼解鎖。"</string>
- <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"圖案區域。"</string>
- <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"滑動區域。"</string>
- <string name="keyguard_accessibility_transport_prev_description" msgid="1337286538318543555">"[上一首曲目] 按鈕"</string>
- <string name="keyguard_accessibility_transport_next_description" msgid="7073928300444909320">"[下一首曲目] 按鈕"</string>
- <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"[暫停] 按鈕"</string>
- <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"[播放] 按鈕"</string>
- <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"[停止] 按鈕"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"喜歡"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"不喜歡"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"心形"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"請解鎖以繼續"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"已取消啟動"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"拖放「<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>」即可刪除。"</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"「<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>」將不會被刪除。"</string>
- <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
- <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
- <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"取消"</string>
- <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"刪除"</string>
- <string name="keyboardview_keycode_done" msgid="1992571118466679775">"完成"</string>
- <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"模式更改"</string>
- <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift 鍵"</string>
- <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter 鍵"</string>
- <string name="description_target_unlock" msgid="2228524900439801453">"解鎖"</string>
- <string name="description_target_camera" msgid="969071997552486814">"相機"</string>
- <string name="description_target_silent" msgid="893551287746522182">"靜音"</string>
- <string name="description_target_soundon" msgid="30052466675500172">"音效已開啟"</string>
- <string name="description_target_search" msgid="3091587249776033139">"搜尋"</string>
- <string name="description_direction_up" msgid="7169032478259485180">"向上滑動即可<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string>
- <string name="description_direction_down" msgid="5087739728639014595">"向下滑動即可<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string>
- <string name="description_direction_left" msgid="7207478719805562165">"向左滑動即可<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string>
- <string name="description_direction_right" msgid="8034433242579600980">"向右滑動即可<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string>
- <string name="user_switched" msgid="3768006783166984410">"目前的用戶是<xliff:g id="NAME">%1$s</xliff:g>。"</string>
- <string name="kg_emergency_call_label" msgid="684946192523830531">"緊急電話"</string>
- <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"忘記圖案"</string>
- <string name="kg_wrong_pattern" msgid="1850806070801358830">"圖案錯誤"</string>
- <string name="kg_wrong_password" msgid="2333281762128113157">"密碼錯誤"</string>
- <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN 錯誤"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"請在 <xliff:g id="NUMBER">%d</xliff:g> 秒後再試一次。"</string>
- <string name="kg_pattern_instructions" msgid="398978611683075868">"畫出圖案"</string>
- <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"輸入 SIM 卡 PIN 碼"</string>
- <string name="kg_pin_instructions" msgid="2377242233495111557">"輸入 PIN 碼"</string>
- <string name="kg_password_instructions" msgid="5753646556186936819">"輸入密碼"</string>
- <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM 卡現已停用,請輸入 PUK 碼以繼續。詳情請與流動網絡供應商聯絡。"</string>
- <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"輸入所需的 PIN 碼"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"確認所需的 PIN 碼"</string>
- <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"正在解開上鎖的 SIM 卡..."</string>
- <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"PIN 碼不正確。"</string>
- <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"請輸入一個 4 至 8 位數的 PIN 碼。"</string>
- <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK 碼應由 8 個或以上數字組成。"</string>
- <string name="kg_invalid_puk" msgid="3638289409676051243">"請重新輸入正確的 PUK 碼。如果嘗試輸入的次數過多,SIM 卡將永久停用。"</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN 碼不符"</string>
- <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"圖案嘗試次數過多"</string>
- <string name="kg_login_instructions" msgid="1100551261265506448">"如要解鎖,請以 Google 帳戶登入。"</string>
- <string name="kg_login_username_hint" msgid="5718534272070920364">"用戶名稱 (電子郵件)"</string>
- <string name="kg_login_password_hint" msgid="9057289103827298549">"密碼"</string>
- <string name="kg_login_submit_button" msgid="5355904582674054702">"登入"</string>
- <string name="kg_login_invalid_input" msgid="5754664119319872197">"無效的用戶名稱或密碼。"</string>
- <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"忘記用戶名稱或密碼?\n請瀏覽 "<b>"google.com/accounts/recovery"</b>"。"</string>
- <string name="kg_login_checking_password" msgid="1052685197710252395">"正在檢查帳戶…"</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"您已輸入錯誤的 PIN 碼 <xliff:g id="NUMBER_0">%d</xliff:g> 次。\n\n請在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒後再試一次。"</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"您已輸入錯誤的密碼 <xliff:g id="NUMBER_0">%d</xliff:g> 次。\n\n請在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒後再試一次。"</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"您已畫錯解鎖圖案 <xliff:g id="NUMBER_0">%d</xliff:g> 次。\n\n請在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒後再試一次。"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"您嘗試了 <xliff:g id="NUMBER_0">%d</xliff:g> 次仍未能成功解開這部上鎖的平板電腦。如果再嘗試 <xliff:g id="NUMBER_1">%d</xliff:g> 次仍未成功,平板電腦將回復原廠設定,所有用戶資料均會失去。"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"您嘗試了 <xliff:g id="NUMBER_0">%d</xliff:g> 次仍未能成功解開這部上鎖的手機。如果再嘗試 <xliff:g id="NUMBER_1">%d</xliff:g> 次仍未成功,手機將回復原廠設定,所有用戶資料均會失去。"</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"您嘗試了 <xliff:g id="NUMBER">%d</xliff:g> 次仍未能成功解開這部上鎖的平板電腦。平板電腦現在將回復原廠設定。"</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"您嘗試了 <xliff:g id="NUMBER">%d</xliff:g> 次仍未能成功解開這部上鎖的手機。手機現在將回復原廠設定。"</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"您已畫錯解鎖圖案 <xliff:g id="NUMBER_0">%d</xliff:g> 次,如果再嘗試 <xliff:g id="NUMBER_1">%d</xliff:g> 次仍未成功,系統會要求您透過電郵帳戶解開上鎖的平板電腦。\n\n請在 <xliff:g id="NUMBER_2">%d</xliff:g> 秒後再試一次。"</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"您已畫錯解鎖圖案 <xliff:g id="NUMBER_0">%d</xliff:g> 次,如果再嘗試 <xliff:g id="NUMBER_1">%d</xliff:g> 次仍未成功,系統會要求您透過電郵帳戶解開上鎖的手機。\n\n請在 <xliff:g id="NUMBER_2">%d</xliff:g> 秒後再試一次。"</string>
- <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"移除"</string>
- <string name="keyguard_transport_prev_description" msgid="8229108430245669854">"[上一首曲目] 按鈕"</string>
- <string name="keyguard_transport_next_description" msgid="4299258300283778305">"[下一首曲目] 按鈕"</string>
- <string name="keyguard_transport_pause_description" msgid="5093073338238310224">"[暫停] 按鈕"</string>
- <string name="keyguard_transport_play_description" msgid="2924628863741150956">"[播放] 按鈕"</string>
- <string name="keyguard_transport_stop_description" msgid="3084179324810575787">"[停止] 按鈕"</string>
- <string name="keyguard_carrier_default" msgid="8700650403054042153">"沒有服務。"</string>
-</resources>
diff --git a/packages/Keyguard/res/values-zh-rTW/strings.xml b/packages/Keyguard/res/values-zh-rTW/strings.xml
index f3f172497260..72a1c0f21368 100644
--- a/packages/Keyguard/res/values-zh-rTW/strings.xml
+++ b/packages/Keyguard/res/values-zh-rTW/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"[暫停] 按鈕"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"[播放] 按鈕"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"[停止] 按鈕"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"喜歡"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"不喜歡"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"愛心"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"先解鎖才能繼續操作"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"已取消啟動"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"拖放「<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>」即可將其刪除。"</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"「<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>」將不會遭到刪除。"</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/res/values-zu/strings.xml b/packages/Keyguard/res/values-zu/strings.xml
index b8d884e1c15f..185ea03582d7 100644
--- a/packages/Keyguard/res/values-zu/strings.xml
+++ b/packages/Keyguard/res/values-zu/strings.xml
@@ -71,13 +71,6 @@
<string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Inkinobho yokumiswa isikhashana"</string>
<string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Inkinobho yokudlala"</string>
<string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Inkinobho yokumisa"</string>
- <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Okushaphu"</string>
- <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Akulungile"</string>
- <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Inhliziyo"</string>
- <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Vula ukuze uqhubeke"</string>
- <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Ukuqalisa kukhanseliwe"</string>
- <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Lahla i-<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ukuze uyisuse."</string>
- <string name="keyguard_accessibility_delete_widget_end" msgid="508833506780909393">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ngeke isuswe."</string>
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardSimPukView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSimPukView.java
index 6e9e83e8cc2f..d882eca1315a 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardSimPukView.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSimPukView.java
@@ -274,7 +274,7 @@ public class KeyguardSimPukView extends KeyguardAbsKeyInputView
private boolean checkPuk() {
// make sure the puk is at least 8 digits long.
- if (mPasswordEntry.getText().length() >= 8) {
+ if (mPasswordEntry.getText().length() == 8) {
mPukText = mPasswordEntry.getText().toString();
return true;
}
diff --git a/packages/PrintSpooler/res/values-af/strings.xml b/packages/PrintSpooler/res/values-af/strings.xml
deleted file mode 100644
index 409089304dc3..000000000000
--- a/packages/PrintSpooler/res/values-af/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Drukwaglys"</string>
- <string name="print_button" msgid="645164566271246268">"Druk"</string>
- <string name="save_button" msgid="1921310454071758999">"Stoor"</string>
- <string name="label_destination" msgid="9132510997381599275">"Bestemming"</string>
- <string name="label_copies" msgid="3634531042822968308">"Afskrifte"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Papiergrootte"</string>
- <string name="label_color" msgid="1108690305218188969">"Kleur"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Oriëntasie"</string>
- <string name="label_pages" msgid="6300874667546617333">"Bladsye (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Drukvoorskou"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Installeer PDF-bekyker vir voorskou"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Drukkerprogram het omgeval"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Bladsye"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Genereer uitdruktaak"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Stoor as PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Alle drukkers…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Drukdialoog"</string>
- <string name="search" msgid="5421724265322228497">"Deursoek"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Alle drukkers"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Voeg diens by"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Soekkassie vertoon"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Soekkassie weggesteek"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Voeg drukker by"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> drukker gekry"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> drukkers gekry"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Kies drukdiens"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Soek tans vir drukkers"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Geen drukkers gekry nie"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Druk tans <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Kanselleer tans <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Drukkerfout by <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Drukker het <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> geblokkeer"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>-druktaak"</item>
- <item quantity="other" msgid="8746611264734222865">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>-druktake"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Kanselleer"</string>
- <string name="restart" msgid="2472034227037808749">"Herbegin"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Geen verbinding met drukker nie"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"onbekend"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – nie beskikbaar nie"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Swart en wit"</item>
- <item msgid="2762241247228983754">"Kleur"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Portret"</item>
- <item msgid="3199660090246166812">"Landskap"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Alles"</item>
- <item msgid="6812869625222503603">"Reikwydte"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-am/strings.xml b/packages/PrintSpooler/res/values-am/strings.xml
deleted file mode 100644
index 6569cf4e008b..000000000000
--- a/packages/PrintSpooler/res/values-am/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"የህትመት አስተላላፊ"</string>
- <string name="print_button" msgid="645164566271246268">"አትም"</string>
- <string name="save_button" msgid="1921310454071758999">"አስቀምጥ"</string>
- <string name="label_destination" msgid="9132510997381599275">"መድረሻ"</string>
- <string name="label_copies" msgid="3634531042822968308">"ቅጂዎች"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"የወረቀት መጠን"</string>
- <string name="label_color" msgid="1108690305218188969">"ቀለም"</string>
- <string name="label_orientation" msgid="2853142581990496477">"አቀማመጠ ገፅ"</string>
- <string name="label_pages" msgid="6300874667546617333">"ገጾች (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"የህትመት ቅድመ እይታ"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"ለቅድመ-እይታ የፒ ዲ ኤፍ መመልከቻ ይጫኑ"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"የአታሚ መተግበሪያ ተበላሽቷል"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"ገፆች"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"የህትመት ስራን በማመንጨት ላይ"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"እንደ ፒ ዲ ኤፍ አስቀምጥ"</string>
- <string name="all_printers" msgid="5018829726861876202">"ሁሉም አታሚዎች…"</string>
- <string name="print_dialog" msgid="32628687461331979">"የህትመት መገናኛ"</string>
- <string name="search" msgid="5421724265322228497">"ፍለጋ"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"ሁሉም አታሚዎች"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"አገልግሎት አክል"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"የፍለጋ ሳጥን ይታያል"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"የፍለጋ ሳጥን ተደብቋል"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"አታሚ አክል"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> አታሚ ተገኝቷል"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> አታሚዎች ተገኝተዋል"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"የህትመት አገልግሎት ይምረጡ"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"አታሚዎችን በመፈለግ ላይ"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"ምንም አታሚዎች አልተገኙም"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>ን በማተም ላይ"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>ን በመተው ላይ"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"የአታሚ ስህተት <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"አታሚ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>ን አግዷል"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> የህትመት ስራ"</item>
- <item quantity="other" msgid="8746611264734222865">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> የህትመት ስራዎች"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"ሰርዝ"</string>
- <string name="restart" msgid="2472034227037808749">"እንደገና ጀምር"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"ከአታሚ ጋር ምንም ግንኙነት የለም"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"አይታወቅም"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – አይገኝም"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"ጥቁር እና ነጭ"</item>
- <item msgid="2762241247228983754">"ቀለም"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"የቁም"</item>
- <item msgid="3199660090246166812">"የወርድ"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"ሁሉም"</item>
- <item msgid="6812869625222503603">"ምጥጥነ ገጽታ"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-ar/strings.xml b/packages/PrintSpooler/res/values-ar/strings.xml
deleted file mode 100644
index 76d5dad86697..000000000000
--- a/packages/PrintSpooler/res/values-ar/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"طباعة"</string>
- <string name="save_button" msgid="1921310454071758999">"حفظ"</string>
- <string name="label_destination" msgid="9132510997381599275">"الوجهة"</string>
- <string name="label_copies" msgid="3634531042822968308">"عدد النسخ"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"حجم الورق"</string>
- <string name="label_color" msgid="1108690305218188969">"اللون"</string>
- <string name="label_orientation" msgid="2853142581990496477">"الاتجاه"</string>
- <string name="label_pages" msgid="6300874667546617333">"الصفحات (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"معاينة قبل الطباعة"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"تثبيت برنامج عرض PDF للمعاينة"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"تعطّل تطبيق الطباعة"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"الصفحات"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"جارٍ إنشاء مهمة الطباعة"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"حفظ بتنسيق PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"جميع الطابعات…"</string>
- <string name="print_dialog" msgid="32628687461331979">"مربع حوار الطباعة"</string>
- <string name="search" msgid="5421724265322228497">"بحث"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"جميع الطابعات"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"إضافة خدمة"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"تم إظهار مربع البحث"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"تم إخفاء مربع البحث"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"إضافة طابعة"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"تم العثور على <xliff:g id="COUNT">%1$s</xliff:g> طابعة"</item>
- <item quantity="other" msgid="6533817036607128241">"تم العثور على <xliff:g id="COUNT">%1$s</xliff:g> من الطابعات"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"اختر خدمة طباعة"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"البحث عن طابعات"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"لم يتم العثور على طابعات"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"جارٍ طباعة <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"جارٍ إلغاء <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"خطا في الطابعة <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"رفضت الطابعة <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> مهمة طباعة"</item>
- <item quantity="other" msgid="8746611264734222865">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> من مهام الطباعة"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"إلغاء"</string>
- <string name="restart" msgid="2472034227037808749">"إعادة تشغيل"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"لا يوجد اتصال بالطابعة"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"غير معروف"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – غير متاحة"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"أبيض وأسود"</item>
- <item msgid="2762241247228983754">"اللون"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"صورة أشخاص"</item>
- <item msgid="3199660090246166812">"معالم"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"الكل"</item>
- <item msgid="6812869625222503603">"النطاق"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-bg/strings.xml b/packages/PrintSpooler/res/values-bg/strings.xml
deleted file mode 100644
index 7f8c3aa925fb..000000000000
--- a/packages/PrintSpooler/res/values-bg/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Спулер за печат"</string>
- <string name="print_button" msgid="645164566271246268">"Печат"</string>
- <string name="save_button" msgid="1921310454071758999">"Запазване"</string>
- <string name="label_destination" msgid="9132510997381599275">"Местоназначение"</string>
- <string name="label_copies" msgid="3634531042822968308">"Копия"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Размер на хартията"</string>
- <string name="label_color" msgid="1108690305218188969">"Цвят"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Ориентация"</string>
- <string name="label_pages" msgid="6300874667546617333">"Страници (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Визуализация за печат"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Инсталиране на визуализатор на PDF"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Получи се срив в приложението за отпечатване"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Страници"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Заданието за печат се генерира"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Запазване като PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Всички принтери…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Диалогов прозорец за отпечатване"</string>
- <string name="search" msgid="5421724265322228497">"Търсене"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Всички принтери"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Добавяне на услуга"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Полето за търсене е показано"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Полето за търсене е скрито"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Добавяне на принтер"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Намерен е <xliff:g id="COUNT">%1$s</xliff:g> принтер"</item>
- <item quantity="other" msgid="6533817036607128241">"Намерени са <xliff:g id="COUNT">%1$s</xliff:g> принтера"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Избиране на услуга за отпечатване"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Търсят се принтери"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Няма намерени принтери"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"„<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>“ се отпечатва"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"„<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>“ се анулира"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Грешка в принтера при „<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>“"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Принтерът блокира при „<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>“"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Отказ"</string>
- <string name="restart" msgid="2472034227037808749">"Рестартиране"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Няма връзка с принтера"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"няма данни"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – не е налице"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Черно-бяло"</item>
- <item msgid="2762241247228983754">"Цветно"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Вертикално"</item>
- <item msgid="3199660090246166812">"Хоризонтално"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Всички"</item>
- <item msgid="6812869625222503603">"Поредица"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-ca/strings.xml b/packages/PrintSpooler/res/values-ca/strings.xml
deleted file mode 100644
index 330c79b73a47..000000000000
--- a/packages/PrintSpooler/res/values-ca/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Gest. cues impr."</string>
- <string name="print_button" msgid="645164566271246268">"Imprimeix"</string>
- <string name="save_button" msgid="1921310454071758999">"Desa"</string>
- <string name="label_destination" msgid="9132510997381599275">"Destinació"</string>
- <string name="label_copies" msgid="3634531042822968308">"Còpies"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Mida del paper"</string>
- <string name="label_color" msgid="1108690305218188969">"Color"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientació"</string>
- <string name="label_pages" msgid="6300874667546617333">"Pàgines (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Visualització prèvia impressió"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Instal·la un lector de PDF per a visualitz. prèvia"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"L\'aplicació d\'impressió ha fallat"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Pàgines"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Generant tasca impressió"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Desa com a PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Totes les impressores…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Diàleg d\'impressió"</string>
- <string name="search" msgid="5421724265322228497">"Cerca"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Totes les impressores"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Afegeix un servei"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Es mostra el quadre de cerca"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"S\'ha amagat el quadre de cerca"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Afegeix una impressora"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"S\'ha trobat <xliff:g id="COUNT">%1$s</xliff:g> impressora"</item>
- <item quantity="other" msgid="6533817036607128241">"S\'han trobat <xliff:g id="COUNT">%1$s</xliff:g> impressores"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Selecció del servei d\'impressió"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Cerca d\'impressores"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"No s\'ha trobat cap impressora"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"S\'està imprimint <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"S\'està cancel·lant <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Error d\'impressora <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Impressora bloquejada <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"Tasca d\'impressió per a <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- <item quantity="other" msgid="8746611264734222865">"Tasques d\'impressió de <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Cancel·la"</string>
- <string name="restart" msgid="2472034227037808749">"Reinicia"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"No hi ha connexió amb la impressora"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"desconegut"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>: no disponible"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Blanc i negre"</item>
- <item msgid="2762241247228983754">"Color"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Vertical"</item>
- <item msgid="3199660090246166812">"Horitzontal"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Tots"</item>
- <item msgid="6812869625222503603">"Interval"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-cs/strings.xml b/packages/PrintSpooler/res/values-cs/strings.xml
deleted file mode 100644
index c45a965cd1c6..000000000000
--- a/packages/PrintSpooler/res/values-cs/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"Tisk"</string>
- <string name="save_button" msgid="1921310454071758999">"Uložit"</string>
- <string name="label_destination" msgid="9132510997381599275">"Cíl"</string>
- <string name="label_copies" msgid="3634531042822968308">"Kopie"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Velikost papíru"</string>
- <string name="label_color" msgid="1108690305218188969">"Barva"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientace"</string>
- <string name="label_pages" msgid="6300874667546617333">"STRÁNKY (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Náhled tisku"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Nainstalovat prohlížeč PDF (umožní náhled)"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Aplikace tisku selhala"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Stránky"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Generování úlohy tisku"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Uložit ve formátu PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Všechny tiskárny…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Dialog tisku"</string>
- <string name="search" msgid="5421724265322228497">"Hledat"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Všechny tiskárny"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Přidat službu"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Vyhledávací pole se zobrazuje"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Vyhledávací pole je skryto"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Přidat tiskárnu"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Počet nalezených tiskáren: <xliff:g id="COUNT">%1$s</xliff:g>"</item>
- <item quantity="other" msgid="6533817036607128241">"Počet nalezených tiskáren: <xliff:g id="COUNT">%1$s</xliff:g>"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Zvolte službu tisku"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Vyhledávání tiskáren"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Nebyly nalezeny žádné tiskárny"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Tisk úlohy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Rušení úlohy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Chyba tiskárny u úlohy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Tiskárna blokuje úlohu <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Zrušit"</string>
- <string name="restart" msgid="2472034227037808749">"Restartovat"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Nelze se připojit k tiskárně"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"neznámé"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – není k dispozici"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Černobíle"</item>
- <item msgid="2762241247228983754">"Barevně"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Na výšku"</item>
- <item msgid="3199660090246166812">"Na šířku"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Vše"</item>
- <item msgid="6812869625222503603">"Rozsah"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-da/strings.xml b/packages/PrintSpooler/res/values-da/strings.xml
deleted file mode 100644
index c711d67332f5..000000000000
--- a/packages/PrintSpooler/res/values-da/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"Udskriv"</string>
- <string name="save_button" msgid="1921310454071758999">"Gem"</string>
- <string name="label_destination" msgid="9132510997381599275">"Destination"</string>
- <string name="label_copies" msgid="3634531042822968308">"Kopier"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Papirstørrelse"</string>
- <string name="label_color" msgid="1108690305218188969">"Farve"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Retning"</string>
- <string name="label_pages" msgid="6300874667546617333">"Sider (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Vis udskrift"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Installer et PDF-visningsprog. for at se eksempel"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Udskrivningsapp gik ned"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Sider"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Udskriften generes"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Gem som PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Alle printere..."</string>
- <string name="print_dialog" msgid="32628687461331979">"Udskriftsdialog"</string>
- <string name="search" msgid="5421724265322228497">"Søg"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Alle printere"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Tilføj tjeneste"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Søgefeltet vises"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Søgefeltet er skjult"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Tilføj printer"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Der blev fundet <xliff:g id="COUNT">%1$s</xliff:g> printer"</item>
- <item quantity="other" msgid="6533817036607128241">"Der blev fundet <xliff:g id="COUNT">%1$s</xliff:g> printere"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Vælg udskriftstjeneste"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Søger efter printere"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Der blev ikke fundet nogen printere"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> udskrives"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> annulleres"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Udskriften <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> mislykkedes"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Printeren har blokeret <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>-udskriftsjob"</item>
- <item quantity="other" msgid="8746611264734222865">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>-udskriftsjobs"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Annuller"</string>
- <string name="restart" msgid="2472034227037808749">"Genstart"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Ingen forbindelse til printer"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"ukendt"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – ikke tilgængelig"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Sort/hvid"</item>
- <item msgid="2762241247228983754">"Farve"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Portræt"</item>
- <item msgid="3199660090246166812">"Landskab"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Alle"</item>
- <item msgid="6812869625222503603">"Interval"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-de/strings.xml b/packages/PrintSpooler/res/values-de/strings.xml
deleted file mode 100644
index f4aef6594657..000000000000
--- a/packages/PrintSpooler/res/values-de/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Druck-Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"Drucken"</string>
- <string name="save_button" msgid="1921310454071758999">"Speichern"</string>
- <string name="label_destination" msgid="9132510997381599275">"Ziel"</string>
- <string name="label_copies" msgid="3634531042822968308">"Exemplare"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Papiergröße"</string>
- <string name="label_color" msgid="1108690305218188969">"Farbe"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Ausrichtung"</string>
- <string name="label_pages" msgid="6300874667546617333">"Seiten (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Vorschau drucken"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"PDF-Viewer für Vorschau installieren"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Druck-App abgestürzt"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Seiten"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Druckauftrag wird generiert..."</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Als PDF speichern"</string>
- <string name="all_printers" msgid="5018829726861876202">"Alle Drucker…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Druckdialogfeld"</string>
- <string name="search" msgid="5421724265322228497">"Suchen"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Alle Drucker"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Dienst hinzufügen"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Suchfeld angezeigt"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Suchfeld ausgeblendet"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Drucker hinzufügen"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> Drucker gefunden"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> Drucker gefunden"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Druckdienst auswählen"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Suche nach Druckern"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Keine Drucker gefunden"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> wird gedruckt..."</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> wird abgebrochen..."</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Druckerfehler <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Drucker hat <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> blockiert."</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"Druckauftrag \"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>\""</item>
- <item quantity="other" msgid="8746611264734222865">"Druckaufträge \"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>\""</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Abbrechen"</string>
- <string name="restart" msgid="2472034227037808749">"Neu starten"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Keine Verbindung zum Drucker"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"unbekannt"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – nicht verfügbar"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Schwarz-weiß"</item>
- <item msgid="2762241247228983754">"Farbe"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Hochformat"</item>
- <item msgid="3199660090246166812">"Querformat"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Alle"</item>
- <item msgid="6812869625222503603">"Bereich"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-el/strings.xml b/packages/PrintSpooler/res/values-el/strings.xml
deleted file mode 100644
index dc3ac8dc5be9..000000000000
--- a/packages/PrintSpooler/res/values-el/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Λογισμικό ουράς εκτύπωσης"</string>
- <string name="print_button" msgid="645164566271246268">"Εκτύπωση"</string>
- <string name="save_button" msgid="1921310454071758999">"Αποθήκευση"</string>
- <string name="label_destination" msgid="9132510997381599275">"Προορισμός"</string>
- <string name="label_copies" msgid="3634531042822968308">"Αντίγραφα"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Μέγεθος χαρτιού"</string>
- <string name="label_color" msgid="1108690305218188969">"Χρώμα"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Προσανατολισμός"</string>
- <string name="label_pages" msgid="6300874667546617333">"Σελίδες (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Προεπισκόπηση εκτύπωσης"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Εγκαταστήστε το PDF viewer για προεπισκόπηση"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Διακοπή λειτουργίας εφαρμογής εκτύπωσης"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Σελίδες"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Δημιουργία εργασίας εκτύπωσης"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Αποθήκευση ως PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Όλοι οι εκτυπωτές…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Πλαίσιο διαλόγου εκτύπωσης"</string>
- <string name="search" msgid="5421724265322228497">"Αναζήτηση"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Όλοι οι εκτυπωτές"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Προσθήκη υπηρεσίας"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Εμφάνιση πλαισίου αναζήτησης"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Απόκρυψη πλαισίου αναζήτησης"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Προσθήκη εκτυπωτή"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Βρέθηκε <xliff:g id="COUNT">%1$s</xliff:g> εκτυπωτής"</item>
- <item quantity="other" msgid="6533817036607128241">"Βρέθηκαν <xliff:g id="COUNT">%1$s</xliff:g> εκτυπωτές"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Επιλέξτε υπηρεσία εκτύπωσης"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Αναζήτηση για εκτυπωτές"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Δεν βρέθηκαν εκτυπωτές"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Εκτύπωση <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Ακύρωση <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Σφάλμα εκτυπωτή <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Ο εκτυπωτής απέκλεισε <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Ακύρωση"</string>
- <string name="restart" msgid="2472034227037808749">"Επανεκκίνηση"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Δεν υπάρχει σύνδεση με εκτυπωτή"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"άγνωστο"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – μη διαθέσιμο"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Ασπρόμαυρο"</item>
- <item msgid="2762241247228983754">"Χρώμα"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Πορτραίτο"</item>
- <item msgid="3199660090246166812">"Οριζόντια"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Όλα"</item>
- <item msgid="6812869625222503603">"Εύρος"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-en-rGB/strings.xml b/packages/PrintSpooler/res/values-en-rGB/strings.xml
deleted file mode 100644
index d94cbfbc5810..000000000000
--- a/packages/PrintSpooler/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"Print"</string>
- <string name="save_button" msgid="1921310454071758999">"Save"</string>
- <string name="label_destination" msgid="9132510997381599275">"Destination"</string>
- <string name="label_copies" msgid="3634531042822968308">"Copies"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Paper Size"</string>
- <string name="label_color" msgid="1108690305218188969">"Colour"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientation"</string>
- <string name="label_pages" msgid="6300874667546617333">"Pages (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Print preview"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Install PDF viewer for preview"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Printing app crashed"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Pages"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Generating print job"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Save as PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"All printers…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Print dialogue"</string>
- <string name="search" msgid="5421724265322228497">"Search"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"All printers"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Add service"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Search box shown"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Search box hidden"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Add printer"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> printer found"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> printers found"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Choose print service"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Searching for printers"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"No printers found"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Printing <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Cancelling <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Printer error <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Printer blocked <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> print job"</item>
- <item quantity="other" msgid="8746611264734222865">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> print jobs"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Cancel"</string>
- <string name="restart" msgid="2472034227037808749">"Restart"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"No connection to printer"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"unknown"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – unavailable"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Black &amp; White"</item>
- <item msgid="2762241247228983754">"Colour"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Portrait"</item>
- <item msgid="3199660090246166812">"Landscape"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"All"</item>
- <item msgid="6812869625222503603">"Range"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-en-rIN/strings.xml b/packages/PrintSpooler/res/values-en-rIN/strings.xml
deleted file mode 100644
index d94cbfbc5810..000000000000
--- a/packages/PrintSpooler/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"Print"</string>
- <string name="save_button" msgid="1921310454071758999">"Save"</string>
- <string name="label_destination" msgid="9132510997381599275">"Destination"</string>
- <string name="label_copies" msgid="3634531042822968308">"Copies"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Paper Size"</string>
- <string name="label_color" msgid="1108690305218188969">"Colour"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientation"</string>
- <string name="label_pages" msgid="6300874667546617333">"Pages (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Print preview"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Install PDF viewer for preview"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Printing app crashed"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Pages"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Generating print job"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Save as PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"All printers…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Print dialogue"</string>
- <string name="search" msgid="5421724265322228497">"Search"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"All printers"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Add service"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Search box shown"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Search box hidden"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Add printer"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> printer found"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> printers found"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Choose print service"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Searching for printers"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"No printers found"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Printing <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Cancelling <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Printer error <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Printer blocked <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> print job"</item>
- <item quantity="other" msgid="8746611264734222865">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> print jobs"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Cancel"</string>
- <string name="restart" msgid="2472034227037808749">"Restart"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"No connection to printer"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"unknown"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – unavailable"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Black &amp; White"</item>
- <item msgid="2762241247228983754">"Colour"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Portrait"</item>
- <item msgid="3199660090246166812">"Landscape"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"All"</item>
- <item msgid="6812869625222503603">"Range"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-es-rUS/strings.xml b/packages/PrintSpooler/res/values-es-rUS/strings.xml
deleted file mode 100644
index 13ca561a3812..000000000000
--- a/packages/PrintSpooler/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Cola de impresión"</string>
- <string name="print_button" msgid="645164566271246268">"Imprimir"</string>
- <string name="save_button" msgid="1921310454071758999">"Guardar"</string>
- <string name="label_destination" msgid="9132510997381599275">"Destino"</string>
- <string name="label_copies" msgid="3634531042822968308">"Copias"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Tamaño del papel"</string>
- <string name="label_color" msgid="1108690305218188969">"Color"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientación"</string>
- <string name="label_pages" msgid="6300874667546617333">"Páginas (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Vista previa de impresión"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Instalar visualizador de PDF para vista previa"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"La aplicación de impresión falló"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Páginas"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Generando trabajo de impresión"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Guardar como PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Todas las impresoras…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Cuadro de diálogo de impresión"</string>
- <string name="search" msgid="5421724265322228497">"Buscar"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Todas las impresoras"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Agregar servicio"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Cuadro de búsqueda visible"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Cuadro de búsqueda oculto"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Agregar impresora"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Se encontró <xliff:g id="COUNT">%1$s</xliff:g> impresora."</item>
- <item quantity="other" msgid="6533817036607128241">"Se encontraron <xliff:g id="COUNT">%1$s</xliff:g> impresoras."</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Elegir servicio de impresión"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Buscando impresoras"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"No se encontraron impresoras"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Imprimiendo <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Cancelando <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Error de impresora <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"La impresora bloqueó <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>."</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"Trabajo de impresión <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- <item quantity="other" msgid="8746611264734222865">"Trabajos de impresión <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Cancelar"</string>
- <string name="restart" msgid="2472034227037808749">"Reiniciar"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"No hay conexión con la impresora."</string>
- <string name="reason_unknown" msgid="5507940196503246139">"desconocido"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>: no disponible"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Blanco y negro"</item>
- <item msgid="2762241247228983754">"Color"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Vertical"</item>
- <item msgid="3199660090246166812">"Horizontal"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Todas"</item>
- <item msgid="6812869625222503603">"Intervalo"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-es/strings.xml b/packages/PrintSpooler/res/values-es/strings.xml
deleted file mode 100644
index e0fd096419f1..000000000000
--- a/packages/PrintSpooler/res/values-es/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Cola de impresión"</string>
- <string name="print_button" msgid="645164566271246268">"Imprimir"</string>
- <string name="save_button" msgid="1921310454071758999">"Guardar"</string>
- <string name="label_destination" msgid="9132510997381599275">"Destino"</string>
- <string name="label_copies" msgid="3634531042822968308">"Copias"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Tamaño del papel"</string>
- <string name="label_color" msgid="1108690305218188969">"Color"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientación"</string>
- <string name="label_pages" msgid="6300874667546617333">"Páginas (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Vista previa de impresión"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Instalar visor PDF para obtener vista previa"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Error de aplicación de impresión"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Páginas"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Generando trabajo de impresión"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Guardar como PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Todas las impresoras…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Cuadro de diálogo de impresión"</string>
- <string name="search" msgid="5421724265322228497">"Buscar"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Todas las impresoras"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Añadir servicio"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Cuadro de búsqueda visible"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Cuadro de búsqueda oculto"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Añadir impresora"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Se ha encontrado <xliff:g id="COUNT">%1$s</xliff:g> impresora"</item>
- <item quantity="other" msgid="6533817036607128241">"Se han encontrado <xliff:g id="COUNT">%1$s</xliff:g> impresoras"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Seleccionar servicio de impresión"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Buscando impresoras"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"No se encontraron impresoras"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Imprimiendo <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Cancelando <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Error de impresora <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"La impresora ha bloqueado <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Cancelar"</string>
- <string name="restart" msgid="2472034227037808749">"Volver a empezar"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"No hay conexión con la impresora"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"desconocido"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – no disponible"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Blanco y negro"</item>
- <item msgid="2762241247228983754">"Color"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Vertical"</item>
- <item msgid="3199660090246166812">"Horizontal"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Todo"</item>
- <item msgid="6812869625222503603">"Intervalo"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-et-rEE/strings.xml b/packages/PrintSpooler/res/values-et-rEE/strings.xml
deleted file mode 100644
index 8f7fc58c9a7a..000000000000
--- a/packages/PrintSpooler/res/values-et-rEE/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Prindispuuler"</string>
- <string name="print_button" msgid="645164566271246268">"Prindi"</string>
- <string name="save_button" msgid="1921310454071758999">"Salvesta"</string>
- <string name="label_destination" msgid="9132510997381599275">"Sihtkoht"</string>
- <string name="label_copies" msgid="3634531042822968308">"Koopiaid"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Paberiformaat"</string>
- <string name="label_color" msgid="1108690305218188969">"Värv"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Suund"</string>
- <string name="label_pages" msgid="6300874667546617333">"Lehti (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Prindi eelvaade"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"PDF-vaaturi installimine eelvaate kuvamiseks"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Printimisrakendus jooksis kokku"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Lehed"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Prinditöö loomine"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Salvesta PDF-ina"</string>
- <string name="all_printers" msgid="5018829726861876202">"Kõik printerid …"</string>
- <string name="print_dialog" msgid="32628687461331979">"Printimisdialoog"</string>
- <string name="search" msgid="5421724265322228497">"Otsing"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Kõik printerid"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Lisa teenus"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Otsingukast on kuvatud"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Otsingukast on peidetud"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Lisa printer"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Leiti <xliff:g id="COUNT">%1$s</xliff:g> printer"</item>
- <item quantity="other" msgid="6533817036607128241">"Leiti <xliff:g id="COUNT">%1$s</xliff:g> printerit"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Prinditeenuse valimine"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Printerite otsimine"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Printereid ei leitud"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Prinditöö <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> printimine"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Prinditöö <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> tühistamine"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Printeri viga: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Printer blokeeris töö <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Tühista"</string>
- <string name="restart" msgid="2472034227037808749">"Taaskäivita"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Printeriühendus puudub"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"teadmata"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – pole saadaval"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Mustvalge"</item>
- <item msgid="2762241247228983754">"Värv"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Vertikaalpaigutus"</item>
- <item msgid="3199660090246166812">"Horisontaalpaigutus"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Kõik"</item>
- <item msgid="6812869625222503603">"Vahemik"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-fa/strings.xml b/packages/PrintSpooler/res/values-fa/strings.xml
deleted file mode 100644
index 1f8324b19214..000000000000
--- a/packages/PrintSpooler/res/values-fa/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"هماهنگ‌کننده چاپ"</string>
- <string name="print_button" msgid="645164566271246268">"چاپ"</string>
- <string name="save_button" msgid="1921310454071758999">"ذخیره"</string>
- <string name="label_destination" msgid="9132510997381599275">"مقصد"</string>
- <string name="label_copies" msgid="3634531042822968308">"کپی‌ها"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"اندازه کاغذ"</string>
- <string name="label_color" msgid="1108690305218188969">"رنگی"</string>
- <string name="label_orientation" msgid="2853142581990496477">"جهت"</string>
- <string name="label_pages" msgid="6300874667546617333">"صفحات (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"پیش‌نمایش چاپ"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"نصب نمایشگر PDF برای پیش‌نمایش"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"برنامه چاپ خراب شد"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"صفحات"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"در حال ایجاد کار چاپ"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"ذخیره به‌عنوان PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"همه چاپگرها..."</string>
- <string name="print_dialog" msgid="32628687461331979">"چاپ گفتگو"</string>
- <string name="search" msgid="5421724265322228497">"جستجو"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"همه چاپگرها"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"افزودن سرویس"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"کادر جستجو نمایان شد"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"کادر جستجو پنهان شد"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"افزودن چاپگر"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> چاپگر یافت شد"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> چاپگر یافت شد"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"انتخاب سرویس چاپ"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"در حال جستجو برای چاپگرها"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"هیچ چاپگری یافت نشد"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"در حال چاپ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"در حال لغو <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"خطای چاپگر <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"چاپگر، کار <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> را مسدود کرد"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"کار چاپ <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- <item quantity="other" msgid="8746611264734222865">"کارهای چاپ <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"لغو"</string>
- <string name="restart" msgid="2472034227037808749">"راه‌اندازی مجدد"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"اتصال با چاپگر برقرار نیست"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"نامعلوم"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> - در دسترس نیست"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"سیاه و سفید"</item>
- <item msgid="2762241247228983754">"رنگی"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"عمودی"</item>
- <item msgid="3199660090246166812">"افقی"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"همه"</item>
- <item msgid="6812869625222503603">"محدوده"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-fi/strings.xml b/packages/PrintSpooler/res/values-fi/strings.xml
deleted file mode 100644
index 28ab391de341..000000000000
--- a/packages/PrintSpooler/res/values-fi/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Taustatulostus"</string>
- <string name="print_button" msgid="645164566271246268">"Tulosta"</string>
- <string name="save_button" msgid="1921310454071758999">"Tallenna"</string>
- <string name="label_destination" msgid="9132510997381599275">"Kohde"</string>
- <string name="label_copies" msgid="3634531042822968308">"Kopiot"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Paperikoko"</string>
- <string name="label_color" msgid="1108690305218188969">"Väri"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Suunta"</string>
- <string name="label_pages" msgid="6300874667546617333">"Sivut (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Tulostuksen esikatselu"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Asenna PDF-katseluohjelma esikatselua varten"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Tulostussovellus kaatui"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Sivut"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Luodaan tulostustyö"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Tallenna PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Kaikki tulostimet…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Tulostusikkuna"</string>
- <string name="search" msgid="5421724265322228497">"Haku"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Kaikki tulostimet"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Lisää palvelu"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Hakukenttä näkyvissä"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Hakukenttä piilotettu"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Lisää tulostin"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Löytyi <xliff:g id="COUNT">%1$s</xliff:g> tulostin"</item>
- <item quantity="other" msgid="6533817036607128241">"Löytyi <xliff:g id="COUNT">%1$s</xliff:g> tulostinta"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Valitse tulostuspalvelu"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Etsitään tulostimia"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Tulostimia ei löydy"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Tulostetaan <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Peruutetaan työ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Tulostinvirhe työlle <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Tulostin esti työn <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Peruuta"</string>
- <string name="restart" msgid="2472034227037808749">"Käynnistä uudelleen"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Ei yhteyttä tulostimeen"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"tuntematon"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – ei käytettävissä"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Mustavalkoinen"</item>
- <item msgid="2762241247228983754">"Väri"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Pysty"</item>
- <item msgid="3199660090246166812">"Vaaka"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Kaikki"</item>
- <item msgid="6812869625222503603">"Väli"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-fr-rCA/strings.xml b/packages/PrintSpooler/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 7991dca7161b..000000000000
--- a/packages/PrintSpooler/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"File d\'att. impr."</string>
- <string name="print_button" msgid="645164566271246268">"Imprimer"</string>
- <string name="save_button" msgid="1921310454071758999">"Enregistrer"</string>
- <string name="label_destination" msgid="9132510997381599275">"Destination"</string>
- <string name="label_copies" msgid="3634531042822968308">"Copies"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Format du papier"</string>
- <string name="label_color" msgid="1108690305218188969">"Couleur"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientation"</string>
- <string name="label_pages" msgid="6300874667546617333">"Pages (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Aperçu avant impression"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Installer un lecteur PDF pour voir l\'aperçu"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"L\'application à l\'origine de l\'impression a planté"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Pages"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Génération tâche impression…"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Enregistrer en format PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Toutes les imprimantes…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Boîte de dialogue d\'impression"</string>
- <string name="search" msgid="5421724265322228497">"Rechercher"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Toutes les imprimantes"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Ajouter le service"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Champ de recherche affiché"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Champ de recherche masqué"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Ajouter une imprimante"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> imprimante trouvée"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> imprimantes trouvées"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Sélectionner le service d\'impression"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Recherche d\'imprimantes en cours..."</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Aucune imprimante trouvée"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Impression de <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> en cours…"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Annulation de « <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> »…"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Erreur impression : « <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> »"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Impression de « <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> » bloquée"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"Tâche d\'impression <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- <item quantity="other" msgid="8746611264734222865">"Tâches d\'impression <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Annuler"</string>
- <string name="restart" msgid="2472034227037808749">"Recommencer"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Aucune connexion à l\'imprimante"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"inconnu"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> — indisponible"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Noir et blanc"</item>
- <item msgid="2762241247228983754">"Couleur"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Portrait"</item>
- <item msgid="3199660090246166812">"Paysage"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Tous"</item>
- <item msgid="6812869625222503603">"Plage"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-fr/strings.xml b/packages/PrintSpooler/res/values-fr/strings.xml
deleted file mode 100644
index 9f2eda752e5f..000000000000
--- a/packages/PrintSpooler/res/values-fr/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Spouler impress."</string>
- <string name="print_button" msgid="645164566271246268">"Imprimer"</string>
- <string name="save_button" msgid="1921310454071758999">"Enregistrer"</string>
- <string name="label_destination" msgid="9132510997381599275">"Destination"</string>
- <string name="label_copies" msgid="3634531042822968308">"Copies"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Format du papier"</string>
- <string name="label_color" msgid="1108690305218188969">"Couleur"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientation"</string>
- <string name="label_pages" msgid="6300874667546617333">"Pages (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Aperçu avant impression"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Installer un lecteur PDF pour afficher l\'aperçu"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"L\'application à l\'origine de l\'impression a planté"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Pages"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Génération tâche impression…"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Enregistrer au format .PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Toutes les imprimantes…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Boîte de dialogue d\'impression"</string>
- <string name="search" msgid="5421724265322228497">"Rechercher"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Toutes les imprimantes"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Ajouter un service"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Champ de recherche affiché."</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Champ de recherche masqué."</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Ajouter une imprimante"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> imprimante trouvée."</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> imprimantes trouvées."</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Sélectionner le service d\'impression"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Recherche d\'imprimantes en cours"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Aucune imprimante trouvée"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Impression de \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\" en cours…"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Annulation de \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\" en cours…"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Erreur impression pour \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\""</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Impression de \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\" bloquée"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"Tâche d\'impression <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- <item quantity="other" msgid="8746611264734222865">"Tâches d\'impression <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Annuler"</string>
- <string name="restart" msgid="2472034227037808749">"Redémarrer"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Aucune connexion à l\'imprimante."</string>
- <string name="reason_unknown" msgid="5507940196503246139">"inconnue"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – indisponible"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Noir et blanc"</item>
- <item msgid="2762241247228983754">"Couleur"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Portrait"</item>
- <item msgid="3199660090246166812">"Paysage"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Tout"</item>
- <item msgid="6812869625222503603">"Plage"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-hi/strings.xml b/packages/PrintSpooler/res/values-hi/strings.xml
deleted file mode 100644
index e34d2d4e578a..000000000000
--- a/packages/PrintSpooler/res/values-hi/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"प्रिंट स्पूलर"</string>
- <string name="print_button" msgid="645164566271246268">"प्रिंट करें"</string>
- <string name="save_button" msgid="1921310454071758999">"सहेजें"</string>
- <string name="label_destination" msgid="9132510997381599275">"गंतव्य"</string>
- <string name="label_copies" msgid="3634531042822968308">"प्रतियां"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"कागज़ का आकार"</string>
- <string name="label_color" msgid="1108690305218188969">"रंग"</string>
- <string name="label_orientation" msgid="2853142581990496477">"अभिविन्‍यास"</string>
- <string name="label_pages" msgid="6300874667546617333">"पृष्‍ठ (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"प्रिंट पूर्वावलोकन"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"पूर्वावलोकन के लिए PDF व्यूअर इंस्टॉल करें"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"प्रिंटिंग एप्लिकेशन क्रैश हो गया"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"पृष्ठ"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"प्रिंट कार्य जनरेट हो रहा है"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"PDF के रूप में सहेजें"</string>
- <string name="all_printers" msgid="5018829726861876202">"सभी प्रिंटर..."</string>
- <string name="print_dialog" msgid="32628687461331979">"प्रिंट संवाद"</string>
- <string name="search" msgid="5421724265322228497">"खोजें"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"सभी प्रिंटर"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"सेवा जोड़ें"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"खोज बॉक्स प्रदर्शित है"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"खोज बॉक्स छिपा हुआ है"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"प्रिंटर जोड़ें"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> प्रिंटर मिला"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> प्रिंटर मिले"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"प्रिंट सेवा चुनें"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"प्रिंटर खोज रहा है"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"कोई प्रिंटर नहीं मिले"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> प्रिंट हो रहा है"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> रद्द हो रहा है"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"प्रिंटर त्रुटि <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"प्रिंटर अवरोधित <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"रद्द करें"</string>
- <string name="restart" msgid="2472034227037808749">"पुन: आरंभ करें"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"प्रिंटर के लिए कोई कनेक्शन नहीं"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"अज्ञात"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – अनुपलब्ध"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"श्याम और श्वेत"</item>
- <item msgid="2762241247228983754">"रंग"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"पोर्ट्रेट"</item>
- <item msgid="3199660090246166812">"लैंडस्केप"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"सभी"</item>
- <item msgid="6812869625222503603">"सीमा"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-hr/strings.xml b/packages/PrintSpooler/res/values-hr/strings.xml
deleted file mode 100644
index 0f225c8b5339..000000000000
--- a/packages/PrintSpooler/res/values-hr/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"Ispis"</string>
- <string name="save_button" msgid="1921310454071758999">"Spremi"</string>
- <string name="label_destination" msgid="9132510997381599275">"Odredište"</string>
- <string name="label_copies" msgid="3634531042822968308">"Kopije"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Veličina papira"</string>
- <string name="label_color" msgid="1108690305218188969">"U boji"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orijentacija"</string>
- <string name="label_pages" msgid="6300874667546617333">"Stranice (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Pregled ispisa"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Instaliraj PDF preglednik za pregled"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Srušila se aplikacija za ispis"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Stranice"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Generiranje zadatka ispisa"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Spremi kao PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Svi pisači…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Dijaloški okvir za ispis"</string>
- <string name="search" msgid="5421724265322228497">"Pretraživanje"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Svi pisači"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Dodaj uslugu"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Okvir za pretraživanje prikazan je"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Okvir za pretraživanje skriven je"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Dodaj pisač"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Pronađen je <xliff:g id="COUNT">%1$s</xliff:g> pisač"</item>
- <item quantity="other" msgid="6533817036607128241">"Pronađen je sljedeći broj pisača: <xliff:g id="COUNT">%1$s</xliff:g>"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Odaberite uslugu ispisa"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Traženje pisača"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Nije pronađen nijedan pisač"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Ispisivanje <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Otkazivanje zadatka <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Pogreška pisača <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Pisač je blokirao <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Odustani"</string>
- <string name="restart" msgid="2472034227037808749">"Ponovo pokreni"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Nema veze s pisačem"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"nepoznato"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – zadatak nije dostupan"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Crno-bijelo"</item>
- <item msgid="2762241247228983754">"U boji"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Portret"</item>
- <item msgid="3199660090246166812">"Pejzaž"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Sve"</item>
- <item msgid="6812869625222503603">"Raspon"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-hu/strings.xml b/packages/PrintSpooler/res/values-hu/strings.xml
deleted file mode 100644
index 3c3402d5de8c..000000000000
--- a/packages/PrintSpooler/res/values-hu/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Nyomtatásisor-kezelő"</string>
- <string name="print_button" msgid="645164566271246268">"Nyomtatás"</string>
- <string name="save_button" msgid="1921310454071758999">"Mentés"</string>
- <string name="label_destination" msgid="9132510997381599275">"Cél"</string>
- <string name="label_copies" msgid="3634531042822968308">"Példányszám"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Papírméret"</string>
- <string name="label_color" msgid="1108690305218188969">"Szín"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Tájolás"</string>
- <string name="label_pages" msgid="6300874667546617333">"Oldalszám (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Előnézet nyomtatása"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Az előnézethez telepítse a PDF-megtekintőt."</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"A nyomtatási alkalmazás összeomlott."</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Oldalak"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Nyomtatási feladat létrehozása"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Mentés PDF-ként"</string>
- <string name="all_printers" msgid="5018829726861876202">"Az összes nyomtató…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Nyomtatási párbeszédablak"</string>
- <string name="search" msgid="5421724265322228497">"Keresés"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Az összes nyomtató"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Szolgáltatás hozzáadása"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Keresőmező megjelenítve"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Keresőmező elrejtve"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Nyomtató hozzáadása"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> nyomtató észlelve"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> nyomtató észlelve"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Nyomtatási szolgáltatás kiválasztása"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Nyomtatók keresése"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Nem található nyomtató"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"A(z) <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> nyomtatása"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"A(z) <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> törlése"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Nyomtatási hiba: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"A(z) <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> letiltva."</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> – nyomtatási feladat"</item>
- <item quantity="other" msgid="8746611264734222865">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> – nyomtatási feladatok"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Mégse"</string>
- <string name="restart" msgid="2472034227037808749">"Újraindítás"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Nincs kapcsolat a nyomtatóval"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"ismeretlen"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – nem érhető el"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Fekete-fehér"</item>
- <item msgid="2762241247228983754">"Szín"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Álló"</item>
- <item msgid="3199660090246166812">"Fekvő"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Összes"</item>
- <item msgid="6812869625222503603">"Tartomány"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-hy-rAM/strings.xml b/packages/PrintSpooler/res/values-hy-rAM/strings.xml
deleted file mode 100644
index a524654ff4fa..000000000000
--- a/packages/PrintSpooler/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Տպման կարգավար"</string>
- <string name="print_button" msgid="645164566271246268">"Տպել"</string>
- <string name="save_button" msgid="1921310454071758999">"Պահել"</string>
- <string name="label_destination" msgid="9132510997381599275">"Նպատակակետ"</string>
- <string name="label_copies" msgid="3634531042822968308">"Պատճեններ"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Թղթի չափը"</string>
- <string name="label_color" msgid="1108690305218188969">"Գույնը"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Դիրքավորում"</string>
- <string name="label_pages" msgid="6300874667546617333">"Էջեր (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Տպելու նախադիտում"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Նախադիտման համար տեղադրեք PDF դիտարկիչ"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Տպելու ծրագիրը վթարի է ենթարկվել"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Էջեր"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Ձևավորվում է տպելու աշխատանքը"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Պահել որպես PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Բոլոր տպիչները..."</string>
- <string name="print_dialog" msgid="32628687461331979">"Տպելու երկխոսության պատուհան"</string>
- <string name="search" msgid="5421724265322228497">"Որոնել"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Բոլոր տպիչները"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Ավելացնել ծառայություն"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Որոնման վանդակը ցուցադրված է"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Որոնման վանդակը թաքցվել է"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Ավելացնել տպիչ"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> տպիչ է գտնվել"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> տպիչ է գտնվել"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Ընտրեք տպելու ծառայությունը"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Տպիչների որոնում"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Տպիչներ չեն գտնվել"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Տպվում է՝ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>-ը չեղարկվում է"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Տպիչի սխալ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Տպիչն արգելափակել է <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>-ը"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Չեղարկել"</string>
- <string name="restart" msgid="2472034227037808749">"Վերագործարկել"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Տպիչի հետ կապ չկա"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"անհայտ"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> տպիչն անհասանելի է"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Սև ու սպիտակ"</item>
- <item msgid="2762241247228983754">"Գույնը"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Դիմանկար"</item>
- <item msgid="3199660090246166812">"Լանդշաֆտ"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Բոլորը"</item>
- <item msgid="6812869625222503603">"Միջակայք"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-in/strings.xml b/packages/PrintSpooler/res/values-in/strings.xml
deleted file mode 100644
index 5f7a56ebde67..000000000000
--- a/packages/PrintSpooler/res/values-in/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"Cetak"</string>
- <string name="save_button" msgid="1921310454071758999">"Simpan"</string>
- <string name="label_destination" msgid="9132510997381599275">"Tujuan"</string>
- <string name="label_copies" msgid="3634531042822968308">"Salinan"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Ukuran Kertas"</string>
- <string name="label_color" msgid="1108690305218188969">"Warna"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientasi"</string>
- <string name="label_pages" msgid="6300874667546617333">"(<xliff:g id="PAGE_COUNT">%1$s</xliff:g>) halaman"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Pratinjau cetak"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Pasang penampil PDF untuk pratinjau"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Aplikasi pencetakan mogok"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Halaman"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Membuat tugas pencetakan"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Simpan sebagai PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Semua printer…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Cetak dialog"</string>
- <string name="search" msgid="5421724265322228497">"Cari"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Semua printer"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Tambahkan layanan"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Kotak telusur ditampilkan"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Kotak telusur disembunyikan"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Tambahkan printer"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> printer ditemukan"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> printer ditemukan"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Pilih layanan cetak"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Mencari printer"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Tidak ditemukan printer"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Mencetak <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Membatalkan <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Ada kesalahan printer <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Printer memblokir <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Batal"</string>
- <string name="restart" msgid="2472034227037808749">"Mulai Ulang"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Tidak ada sambungan ke printer"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"tak diketahui"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – tidak tersedia"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Hitam &amp; Putih"</item>
- <item msgid="2762241247228983754">"Warna"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Potret"</item>
- <item msgid="3199660090246166812">"Lanskap"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Semua"</item>
- <item msgid="6812869625222503603">"Rentang"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-it/strings.xml b/packages/PrintSpooler/res/values-it/strings.xml
deleted file mode 100644
index 5de509408738..000000000000
--- a/packages/PrintSpooler/res/values-it/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"Stampa"</string>
- <string name="save_button" msgid="1921310454071758999">"Salva"</string>
- <string name="label_destination" msgid="9132510997381599275">"Destinazione"</string>
- <string name="label_copies" msgid="3634531042822968308">"Copie"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Formato carta"</string>
- <string name="label_color" msgid="1108690305218188969">"A colori"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientamento"</string>
- <string name="label_pages" msgid="6300874667546617333">"Pagine (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Anteprima di stampa"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Installa visualizzatore PDF per anteprima"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Arresto anomalo dell\'app di stampa"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Pagine"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Generazione processo di stampa"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Salva in PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Tutte le stampanti…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Finestra di dialogo Stampa"</string>
- <string name="search" msgid="5421724265322228497">"Cerca"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Tutte le stampanti"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Aggiungi servizio"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Casella di ricerca visualizzata"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Casella di ricerca nascosta"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Aggiungi stampante"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> stampante trovata"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> stampanti trovate"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Scegli servizio di stampa"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Ricerca di stampanti"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Nessuna stampante trovata"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Stampa di <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Annullamento di <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Errore della stampante: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"La stampante ha bloccato <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"Processo di stampa <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- <item quantity="other" msgid="8746611264734222865">"Processi di stampa <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Annulla"</string>
- <string name="restart" msgid="2472034227037808749">"Riavvia"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Nessun collegamento alla stampante"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"sconosciuto"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> - non disponibile"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Bianco e nero"</item>
- <item msgid="2762241247228983754">"A colori"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Verticale"</item>
- <item msgid="3199660090246166812">"Orizzontale"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Tutte"</item>
- <item msgid="6812869625222503603">"Intervallo"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-iw/strings.xml b/packages/PrintSpooler/res/values-iw/strings.xml
deleted file mode 100644
index dae65cad2eb4..000000000000
--- a/packages/PrintSpooler/res/values-iw/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"הדפס"</string>
- <string name="save_button" msgid="1921310454071758999">"שמור"</string>
- <string name="label_destination" msgid="9132510997381599275">"יעד"</string>
- <string name="label_copies" msgid="3634531042822968308">"עותקים"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"גודל נייר"</string>
- <string name="label_color" msgid="1108690305218188969">"צבע"</string>
- <string name="label_orientation" msgid="2853142581990496477">"כיוון"</string>
- <string name="label_pages" msgid="6300874667546617333">"עמודים (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"תצוגה מקדימה של הדפסה"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"התקן מציג PDF ליצירת תצוגה מקדימה"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"אפליקציית ההדפסה קרסה"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"עמודים"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"יוצר עבודת הדפסה"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"שמור כ-PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"כל המדפסות…"</string>
- <string name="print_dialog" msgid="32628687461331979">"תיבת דו שיח של מדפסת"</string>
- <string name="search" msgid="5421724265322228497">"חפש"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"כל המדפסות"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"הוסף שירות"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"תיבת החיפוש מוצגת"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"תיבת החיפוש מוסתרת"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"הוסף מדפסת"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"נמצאה מדפסת <xliff:g id="COUNT">%1$s</xliff:g>"</item>
- <item quantity="other" msgid="6533817036607128241">"נמצאו <xliff:g id="COUNT">%1$s</xliff:g> מדפסות"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"בחר שירות הדפסה"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"מחפש מדפסות"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"לא נמצאו מדפסות"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"מדפיס את <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"מבטל את <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"שגיאת מדפסת ב-<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"המדפסת חסמה את <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"בטל"</string>
- <string name="restart" msgid="2472034227037808749">"הפעל מחדש"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"אין חיבור למדפסת"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"לא ידוע"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – לא זמינה"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"שחור ולבן"</item>
- <item msgid="2762241247228983754">"צבע"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"לאורך"</item>
- <item msgid="3199660090246166812">"לרוחב"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"הכל"</item>
- <item msgid="6812869625222503603">"טווח"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-ja/arrays.xml b/packages/PrintSpooler/res/values-ja/arrays.xml
index 460bdb214fb9..3187cbefaa1e 100644
--- a/packages/PrintSpooler/res/values-ja/arrays.xml
+++ b/packages/PrintSpooler/res/values-ja/arrays.xml
@@ -36,7 +36,6 @@
<item>JPN_KAHU</item>
<item>JPN_KAKU2</item>
<item>JPN_YOU4</item>
-
</string-array>
</resources>
diff --git a/packages/PrintSpooler/res/values-ja/strings.xml b/packages/PrintSpooler/res/values-ja/strings.xml
deleted file mode 100644
index 187698b782db..000000000000
--- a/packages/PrintSpooler/res/values-ja/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"印刷スプーラ"</string>
- <string name="print_button" msgid="645164566271246268">"印刷"</string>
- <string name="save_button" msgid="1921310454071758999">"保存"</string>
- <string name="label_destination" msgid="9132510997381599275">"印刷先"</string>
- <string name="label_copies" msgid="3634531042822968308">"部数"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"用紙サイズ"</string>
- <string name="label_color" msgid="1108690305218188969">"色"</string>
- <string name="label_orientation" msgid="2853142581990496477">"方向"</string>
- <string name="label_pages" msgid="6300874667546617333">"ページ(<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"印刷プレビュー"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"プレビュー用PDFビューアをインストール"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"印刷アプリでの障害発生"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"ページ数"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"印刷ジョブを生成しています"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"PDF形式で保存"</string>
- <string name="all_printers" msgid="5018829726861876202">"すべてのプリンタ…"</string>
- <string name="print_dialog" msgid="32628687461331979">"印刷ダイアログ"</string>
- <string name="search" msgid="5421724265322228497">"検索"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"すべてのプリンタ"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"サービスを追加"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"検索ボックスは表示されています"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"検索ボックスは表示されていません"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"プリンタを追加"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g>台のプリンタが見つかりました"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g>台のプリンタが見つかりました"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"印刷サービスの選択"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"プリンタの検索中"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"プリンタが見つかりません"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>を印刷しています"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>をキャンセルしています"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"プリンタエラー: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>をブロックしました"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"キャンセル"</string>
- <string name="restart" msgid="2472034227037808749">"再起動"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"プリンタに接続されていません"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"不明"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>–使用不可"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"モノクロ"</item>
- <item msgid="2762241247228983754">"色"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"縦向き"</item>
- <item msgid="3199660090246166812">"横向き"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"すべて"</item>
- <item msgid="6812869625222503603">"範囲"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-ka-rGE/strings.xml b/packages/PrintSpooler/res/values-ka-rGE/strings.xml
deleted file mode 100644
index d51975597ecc..000000000000
--- a/packages/PrintSpooler/res/values-ka-rGE/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"ბეჭდვის Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"ბეჭდვა"</string>
- <string name="save_button" msgid="1921310454071758999">"შენახვა"</string>
- <string name="label_destination" msgid="9132510997381599275">"დანიშნულება"</string>
- <string name="label_copies" msgid="3634531042822968308">"ასლები"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"ფურცლის ზომა"</string>
- <string name="label_color" msgid="1108690305218188969">"ფერი"</string>
- <string name="label_orientation" msgid="2853142581990496477">"ორიენტაცია"</string>
- <string name="label_pages" msgid="6300874667546617333">"გვერდები (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"ნახვა ამობეჭდვამდე"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"გადახედვისთვის დააყენეთ PDF მნახველი"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"ბეჭდვის აპი ავარიულად გაითიშა"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"გვერდები"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"მიმდინარეობის ბეჭდვის დავალების შექმნა"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"PDF-ად შენახვა"</string>
- <string name="all_printers" msgid="5018829726861876202">"ყველა პრინტერი…"</string>
- <string name="print_dialog" msgid="32628687461331979">"ბეჭდვის სარკმელი"</string>
- <string name="search" msgid="5421724265322228497">"ძიება"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"ყველა პრინტერი"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"სერვისის დამატება"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"საძიებო ველი ნაჩვენებია"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"საძიებო ველი დამალულია"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"პრინტერის დამატება"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"ნაპოვნია <xliff:g id="COUNT">%1$s</xliff:g> პრინტერი"</item>
- <item quantity="other" msgid="6533817036607128241">"ნაპოვნია <xliff:g id="COUNT">%1$s</xliff:g> პრინტერი"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"აირჩიეთ ბეჭდვის სერვისი"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"მიმდინარეობს პრინტერების ძიება"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"პრინტერები ვერ მოიძებნა"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"იბეჭდება <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"მიმდინარეობს <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>-ის გაუქმება"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"ბეჭდვის შეცდომა <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"პრინტერმა დაბლოკა <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"გაუქმება"</string>
- <string name="restart" msgid="2472034227037808749">"გადატვირთვა"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"პრინტერთან კავშირი არ არის"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"უცნობი"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – მიუწვდომელია"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"შავ-თეთრი"</item>
- <item msgid="2762241247228983754">"ფერი"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"პორტრეტი"</item>
- <item msgid="3199660090246166812">"პეიზაჟის რეჟიმი"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"ყველა"</item>
- <item msgid="6812869625222503603">"დიაპაზონი"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-km-rKH/strings.xml b/packages/PrintSpooler/res/values-km-rKH/strings.xml
deleted file mode 100644
index b766a19c2930..000000000000
--- a/packages/PrintSpooler/res/values-km-rKH/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"បោះពុម្ព​ស្ពូល័រ"</string>
- <string name="print_button" msgid="645164566271246268">"បោះពុម្ព"</string>
- <string name="save_button" msgid="1921310454071758999">"រក្សាទុក"</string>
- <string name="label_destination" msgid="9132510997381599275">"ទិសដៅ"</string>
- <string name="label_copies" msgid="3634531042822968308">"ច្បាប់​ចម្លង"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"ទំហំ​ក្រដាស"</string>
- <string name="label_color" msgid="1108690305218188969">"ពណ៌"</string>
- <string name="label_orientation" msgid="2853142581990496477">"ទិស"</string>
- <string name="label_pages" msgid="6300874667546617333">"ទំព័រ (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"មើល​មុន​បោះពុម្ព"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"ដំឡើង​កម្មវិធី​មើល PDF សម្រាប់​ការ​មើល​ជា​មុន"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"កម្មវិធី​បោះពុម្ព​គាំង"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"ទំព័រ"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"​បង្កើត​ការ​ងារ​បោះពុម្ព"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"រក្សា​ទុក​ជា PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"ម៉ាស៊ីន​បោះពុម្ព​ទាំងអស់ ..."</string>
- <string name="print_dialog" msgid="32628687461331979">"ប្រអប់​បោះពុម្ព"</string>
- <string name="search" msgid="5421724265322228497">"ស្វែងរក"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"ម៉ាស៊ីន​បោះពុម្ព​ទាំងអស់"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"បន្ថែម​សេវាកម្ម"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"បាន​បង្ហាញ​ប្រ​អប់​ស្វែងរក"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"បាន​លាក់​ប្រអប់​ស្វែងរក"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"បន្ថែម​ម៉ាស៊ីន​បោះពុម្ព"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"រក​ឃើញ​ម៉ាស៊ីន​បោះពុម្ព <xliff:g id="COUNT">%1$s</xliff:g>"</item>
- <item quantity="other" msgid="6533817036607128241">"រក​ឃើញ​ម៉ាស៊ីន​បោះពុម្ព <xliff:g id="COUNT">%1$s</xliff:g>"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"ជ្រើស​សេវា​បោះពុម្ព"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"ស្វែងរក​ម៉ាស៊ីន​បោះពុម្ព"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"រក​មិន​ឃើញ​ម៉ាស៊ីន​បោះពុម្ព"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"កំពុង​​បោះពុម្ព <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"ការ​បោះបង់ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"កំហុស​ម៉ាស៊ីន​បោះពុម្ព <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"ម៉ាស៊ីន​បោះពុម្ព​បាន​ទប់ស្កាត់ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"ការងារ​បោះពុម្ព <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- <item quantity="other" msgid="8746611264734222865">"ការងារ​បោះពុម្ព <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"បោះបង់"</string>
- <string name="restart" msgid="2472034227037808749">"ចាប់ផ្ដើម​ឡើងវិញ"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"គ្មាន​​​ការ​ភ្ជាប់​ទៅ​ម៉ាស៊ីន​បោះពុម្ព"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"មិន​ស្គាល់"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – មិន​អាច​ប្រើ​បាន"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"ស &amp; ខ្មៅ"</item>
- <item msgid="2762241247228983754">"ពណ៌"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"បញ្ឈរ"</item>
- <item msgid="3199660090246166812">"ផ្ដេក"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"ទាំង​អស់"</item>
- <item msgid="6812869625222503603">"ជួរ"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-ko/strings.xml b/packages/PrintSpooler/res/values-ko/strings.xml
deleted file mode 100644
index 01642c9f15a6..000000000000
--- a/packages/PrintSpooler/res/values-ko/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"인쇄 스풀러"</string>
- <string name="print_button" msgid="645164566271246268">"인쇄"</string>
- <string name="save_button" msgid="1921310454071758999">"저장"</string>
- <string name="label_destination" msgid="9132510997381599275">"대상"</string>
- <string name="label_copies" msgid="3634531042822968308">"매수"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"용지 크기"</string>
- <string name="label_color" msgid="1108690305218188969">"색상"</string>
- <string name="label_orientation" msgid="2853142581990496477">"방향"</string>
- <string name="label_pages" msgid="6300874667546617333">"페이지 수(<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"인쇄 미리보기"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"미리보기용 PDF 뷰어 설치"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"인쇄 앱에 오류 발생"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"페이지"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"인쇄 작업 생성 중"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"PDF로 저장"</string>
- <string name="all_printers" msgid="5018829726861876202">"모든 프린터…"</string>
- <string name="print_dialog" msgid="32628687461331979">"인쇄 대화상자"</string>
- <string name="search" msgid="5421724265322228497">"검색"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"모든 프린터"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"서비스 추가"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"검색창 표시됨"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"검색창 숨겨짐"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"프린터 추가"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"프린터 <xliff:g id="COUNT">%1$s</xliff:g>대 검색됨"</item>
- <item quantity="other" msgid="6533817036607128241">"프린터 <xliff:g id="COUNT">%1$s</xliff:g>대 검색됨"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"인쇄 서비스 선택"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"프린터 검색 중"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"프린터 없음"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> 인쇄 중"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> 취소 중"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"프린터 오류: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"차단된 프린터: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"취소"</string>
- <string name="restart" msgid="2472034227037808749">"다시 시작"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"프린터와 연결되지 않음"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"알 수 없음"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – 사용할 수 없음"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"흑백"</item>
- <item msgid="2762241247228983754">"컬러"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"세로"</item>
- <item msgid="3199660090246166812">"가로"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"모두"</item>
- <item msgid="6812869625222503603">"범위"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-lo-rLA/strings.xml b/packages/PrintSpooler/res/values-lo-rLA/strings.xml
deleted file mode 100644
index cf3a5f7e98a4..000000000000
--- a/packages/PrintSpooler/res/values-lo-rLA/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"ຕົວຈັດຄິວການພິມ"</string>
- <string name="print_button" msgid="645164566271246268">"ພິມ"</string>
- <string name="save_button" msgid="1921310454071758999">"ບັນທຶກ"</string>
- <string name="label_destination" msgid="9132510997381599275">"ປາຍທາງ"</string>
- <string name="label_copies" msgid="3634531042822968308">"ສຳເນົາ"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"ຂະໜາດຂອງໜ້າເຈ້ຍ"</string>
- <string name="label_color" msgid="1108690305218188969">"ສີ"</string>
- <string name="label_orientation" msgid="2853142581990496477">"ລວງ"</string>
- <string name="label_pages" msgid="6300874667546617333">"(<xliff:g id="PAGE_COUNT">%1$s</xliff:g>) ໜ້າ"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"ເບິ່ງກ່ອນພິມ"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"ຕິດຕັ້ງໂປຼແກຼມເບິ່ງ PDF ເພື່ອເບິ່ງຕົວຢ່າງ"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"ແອັບຯພິມລົ້ມເຫລວ"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"ໜ້າ"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"ກຳລັງສ້າງວຽກພິມ"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"ບັນທຶກເປັ​​ນ PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"ທຸກເຄື່ອງພິມ..."</string>
- <string name="print_dialog" msgid="32628687461331979">"ໜ້າຕ່າງການພິມ"</string>
- <string name="search" msgid="5421724265322228497">"ຊອກຫາ"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"ທຸກເຄື່ອງພິມ"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"ເພີ່ມບໍລິການ"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"ກ່ອງຊອກຫາຖືກສະແດງ"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"ກ່ອງຊອກຫາຖືກເຊື່ອງ"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"ເພີ່ມເຄື່ອງພິມ"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"ພົບ <xliff:g id="COUNT">%1$s</xliff:g> ເຄື່ອງພິມ"</item>
- <item quantity="other" msgid="6533817036607128241">"ພົບ <xliff:g id="COUNT">%1$s</xliff:g> ເຄື່ອງພິມ"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"ເລືອກບໍລິການການພິມ"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"ກຳລັງຊອກຫາເຄື່ອງພິມ"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"ບໍ່ພົບເຄື່ອງພິມ"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"ກຳລັງພິມ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"ກຳລັງຍົກເລີກ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"ເຄື່ອງພິມເກີດຂໍ້ຜິດພາດ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"ເຄື່ອງພິມຖືກບລອກ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"ງານພິມ <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- <item quantity="other" msgid="8746611264734222865">"ງານພິມ <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"ຍົກເລີກ"</string>
- <string name="restart" msgid="2472034227037808749">"ປິດເປີດໃໝ່"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"ບໍ່ມີການເຊື່ອມຕໍ່ຫາເຄື່ອງພິມ"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"ບໍ່ຮູ້ຈັກ"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> - ບໍ່ມີຢູ່"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"ຂາວດຳ"</item>
- <item msgid="2762241247228983754">"ສີ"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"ລວງຕັ້ງ"</item>
- <item msgid="3199660090246166812">"ລວງນອນ"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"ທັງໝົດ"</item>
- <item msgid="6812869625222503603">"ໄລຍະ"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-lt/strings.xml b/packages/PrintSpooler/res/values-lt/strings.xml
deleted file mode 100644
index c8475fe1e889..000000000000
--- a/packages/PrintSpooler/res/values-lt/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"Spausdinti"</string>
- <string name="save_button" msgid="1921310454071758999">"Išsaugoti"</string>
- <string name="label_destination" msgid="9132510997381599275">"Paskirties vieta"</string>
- <string name="label_copies" msgid="3634531042822968308">"Kopijos"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Popieriaus dydis"</string>
- <string name="label_color" msgid="1108690305218188969">"Spalva"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientacija"</string>
- <string name="label_pages" msgid="6300874667546617333">"Puslapiai (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Spaudinio peržiūra"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Įdiegti PDF peržiūros priemonę"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Spausdinimo programa užstrigo"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Puslapiai"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Generuojama spausd. užduotis"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Išsaugoti kaip PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Visi spausdintuvai…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Spausdinimo dialogo langas"</string>
- <string name="search" msgid="5421724265322228497">"Ieškoti"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Visi spausdintuvai"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Pridėti paslaugą"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Paieškos laukelis rodomas"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Paieškos laukelis paslėptas"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Pridėti spausdintuvą"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Rasta spausdintuvų: <xliff:g id="COUNT">%1$s</xliff:g>"</item>
- <item quantity="other" msgid="6533817036607128241">"Rasta spausdintuvų: <xliff:g id="COUNT">%1$s</xliff:g>"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Pasirinkite spausdinimo paslaugą"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Ieškoma spausdintuvų"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Nerasta spausdintuvų"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Spausdinama: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Atšaukiama: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Spausdintuvo klaida: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Spausdintuvas užblokavo: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"Spausdinimo užduotis: <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- <item quantity="other" msgid="8746611264734222865">"Spausdinimo užduotys: <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Atšaukti"</string>
- <string name="restart" msgid="2472034227037808749">"Paleisti iš naujo"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Nėra ryšio su spausdintuvu"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"nežinoma"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"„<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>“ – nepasiekiama"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Nespalvotas"</item>
- <item msgid="2762241247228983754">"Spalva"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Stačias"</item>
- <item msgid="3199660090246166812">"Gulsčias"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Visi"</item>
- <item msgid="6812869625222503603">"Diapazonas"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-lv/strings.xml b/packages/PrintSpooler/res/values-lv/strings.xml
deleted file mode 100644
index 3e277dd5f7ec..000000000000
--- a/packages/PrintSpooler/res/values-lv/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"Drukāt"</string>
- <string name="save_button" msgid="1921310454071758999">"Saglabāt"</string>
- <string name="label_destination" msgid="9132510997381599275">"Galamērķis"</string>
- <string name="label_copies" msgid="3634531042822968308">"Eksemplāri"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Papīra izmērs"</string>
- <string name="label_color" msgid="1108690305218188969">"Krāsa"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Virziens"</string>
- <string name="label_pages" msgid="6300874667546617333">"Lapas (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Drukas priekšskatījums"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Instalēt PDF skatītāju priekšskatīšanai"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Drukas lietotne avarēja"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Lapas"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Ģenerē drukas darbu…"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Saglabāt kā PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Visi printeri…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Drukāšanas dialoglodziņš"</string>
- <string name="search" msgid="5421724265322228497">"Meklēt"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Visi printeri"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Pievienot pakalpojumu"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Meklēšanas lodziņš ir redzams."</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Meklēšanas lodziņš ir paslēpts."</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Pievienot printeri"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Atrasts <xliff:g id="COUNT">%1$s</xliff:g> printeris"</item>
- <item quantity="other" msgid="6533817036607128241">"Atrasti <xliff:g id="COUNT">%1$s</xliff:g> printeri"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Izvēlieties drukāšanas pakalpojumu"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Printeru meklēšana"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Netika atrasts neviens printeris."</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Notiek darba <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> drukāšana…"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Pārtrauc drukas darbu <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>…"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Printera kļūda ar darbu <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Printeris bloķēja darbu <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Atcelt"</string>
- <string name="restart" msgid="2472034227037808749">"Restartēt"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Nav savienojuma ar printeri"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"nezināms"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> — nav pieejams"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Melnbalts"</item>
- <item msgid="2762241247228983754">"Krāsa"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Portrets"</item>
- <item msgid="3199660090246166812">"Ainava"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Visi"</item>
- <item msgid="6812869625222503603">"Diapazons"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-mn-rMN/strings.xml b/packages/PrintSpooler/res/values-mn-rMN/strings.xml
deleted file mode 100644
index 748730843e3a..000000000000
--- a/packages/PrintSpooler/res/values-mn-rMN/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Хэвлэгчийн буфер"</string>
- <string name="print_button" msgid="645164566271246268">"Хэвлэх"</string>
- <string name="save_button" msgid="1921310454071758999">"Хадгалах"</string>
- <string name="label_destination" msgid="9132510997381599275">"Хүлээн авагч"</string>
- <string name="label_copies" msgid="3634531042822968308">"Хуулбарууд"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Цаасны хэмжээ"</string>
- <string name="label_color" msgid="1108690305218188969">"Өнгө"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Чиглэл"</string>
- <string name="label_pages" msgid="6300874667546617333">"(<xliff:g id="PAGE_COUNT">%1$s</xliff:g>) хуудас"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Хэвлэхээр урьдчилан харах"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Урьдчилан харахын тулд PDF харагчийг суулгах"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Хэвлэгч апп гацсан"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Хуудас"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Хэвлэх ажил үүсгэж байна"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"PDF болгож хадгалах"</string>
- <string name="all_printers" msgid="5018829726861876202">"Бүх принтерүүд…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Хэвлэх диалоги"</string>
- <string name="search" msgid="5421724265322228497">"Хайх"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Бүх принтерүүд"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Үйлчилгээ нэмэх"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Хайлтын нүдийг гаргах"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Хайлтын нүдийг далдлах"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Принтер нэмэх"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> принтер олдсон"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> принтер олдсон"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Хэвлэх үйлчилгээг сонгох"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Принтер хайж байна"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Принтер олдсонгүй"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Хэвлэж байна <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Цуцлаж байна <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Принтерийн алдаа <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Принтер хориглогдсон <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> хэвлэх ажил"</item>
- <item quantity="other" msgid="8746611264734222865">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> хэвлэх ажлууд"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Цуцлах"</string>
- <string name="restart" msgid="2472034227037808749">"Дахин эхлүүлэх"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Принтер холбогдоогүй байна"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"тодорхойгүй"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – ашиглах боломжгүй"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Хар &amp; Цагаан"</item>
- <item msgid="2762241247228983754">"Өнгө"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Босоо"</item>
- <item msgid="3199660090246166812">"Хэвтээ"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Бүгд"</item>
- <item msgid="6812869625222503603">"Хүрээ"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-ms-rMY/strings.xml b/packages/PrintSpooler/res/values-ms-rMY/strings.xml
deleted file mode 100644
index 9a2dca3ff250..000000000000
--- a/packages/PrintSpooler/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Penspul Cetakan"</string>
- <string name="print_button" msgid="645164566271246268">"Cetak"</string>
- <string name="save_button" msgid="1921310454071758999">"Simpan"</string>
- <string name="label_destination" msgid="9132510997381599275">"Destinasi"</string>
- <string name="label_copies" msgid="3634531042822968308">"Salinan"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Saiz Kertas"</string>
- <string name="label_color" msgid="1108690305218188969">"Warna"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientasi"</string>
- <string name="label_pages" msgid="6300874667546617333">"Halaman (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Pratonton cetak"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Pasang pemapar PDF untuk pratonton"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Apl percetakan ranap"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Halaman"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Menjana kerja cetak"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Simpan sebagai PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Semua pencetak..."</string>
- <string name="print_dialog" msgid="32628687461331979">"Dialog cetakan"</string>
- <string name="search" msgid="5421724265322228497">"Cari"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Semua pencetak"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Tambahkan perkhidmatan"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Kotak carian ditunjukkan"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Kotak carian tersembunyi"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Tambah pencetak"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> pencetak ditemui"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> pencetak ditemui"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Pilih perkhidmatan cetak"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Mencari pencetak"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Tiada pencetak ditemui"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Mencetak <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Membatalkan <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Ralat pencetak <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Pencetak disekat <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Batal"</string>
- <string name="restart" msgid="2472034227037808749">"Mulakan semula"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Tiada sambungan ke pencetak"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"tidak diketahui"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – tidak tersedia"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Hitam &amp; Putih"</item>
- <item msgid="2762241247228983754">"Warna"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Potret"</item>
- <item msgid="3199660090246166812">"Landskap"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Semua"</item>
- <item msgid="6812869625222503603">"Julat"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-nb/strings.xml b/packages/PrintSpooler/res/values-nb/strings.xml
deleted file mode 100644
index 77798ea095f9..000000000000
--- a/packages/PrintSpooler/res/values-nb/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Utskriftskø"</string>
- <string name="print_button" msgid="645164566271246268">"Skriv ut"</string>
- <string name="save_button" msgid="1921310454071758999">"Lagre"</string>
- <string name="label_destination" msgid="9132510997381599275">"Destinasjon"</string>
- <string name="label_copies" msgid="3634531042822968308">"Kopier"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Papirstørrelse"</string>
- <string name="label_color" msgid="1108690305218188969">"Farge"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Retning"</string>
- <string name="label_pages" msgid="6300874667546617333">"Sider (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Utskriftsforhåndsvisning"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Installer PDF-leser for forhåndsvisning"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Utskriftsappen krasjet"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Sider"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Genererer utskriftsjobb"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Lagre som PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Alle skrivere"</string>
- <string name="print_dialog" msgid="32628687461331979">"Skriv ut dialog"</string>
- <string name="search" msgid="5421724265322228497">"Søk"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Alle skrivere"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Legg til tjeneste"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Søkefeltet vises"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Søkefeltet er skjult"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Legg til skriver"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> skriver ble funnet"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> skrivere ble funnet"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Velg utskriftstjeneste"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Søker etter skrivere"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Fant ingen skrivere"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Skriver ut <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Avbryter <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Skriverfeil <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Skriveren blokkerte <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"Utskriftsjobb for <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- <item quantity="other" msgid="8746611264734222865">"Utskriftsjobber for <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Avbryt"</string>
- <string name="restart" msgid="2472034227037808749">"Start på nytt"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Ingen forbindelse med skriveren"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"ukjent"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – utilgjengelig"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Svart og hvitt"</item>
- <item msgid="2762241247228983754">"Farge"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Stående"</item>
- <item msgid="3199660090246166812">"Liggende"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Alle"</item>
- <item msgid="6812869625222503603">"Område"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-nl/strings.xml b/packages/PrintSpooler/res/values-nl/strings.xml
deleted file mode 100644
index e576e0c75593..000000000000
--- a/packages/PrintSpooler/res/values-nl/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Afdrukspooler"</string>
- <string name="print_button" msgid="645164566271246268">"Afdrukken"</string>
- <string name="save_button" msgid="1921310454071758999">"Opslaan"</string>
- <string name="label_destination" msgid="9132510997381599275">"Bestemming"</string>
- <string name="label_copies" msgid="3634531042822968308">"Aantal exemplaren"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Papierformaat"</string>
- <string name="label_color" msgid="1108690305218188969">"Kleur"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Stand"</string>
- <string name="label_pages" msgid="6300874667546617333">"Pagina\'s (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Afdrukvoorbeeld"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Pdf-viewer installeren voor voorbeeld"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Afdruk-app gecrasht"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Pagina\'s"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Afdruktaak genereren"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Opslaan als pdf"</string>
- <string name="all_printers" msgid="5018829726861876202">"Alle printers…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Afdrukdialoogvenster"</string>
- <string name="search" msgid="5421724265322228497">"Zoeken"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Alle printers"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Service toevoegen"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Zoekvak weergegeven"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Zoekvak verborgen"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Printer toevoegen"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> printer gevonden"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> printers gevonden"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Afdrukservice kiezen"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Printers zoeken"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Geen printers gevonden"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> afdrukken"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> annuleren"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Printerfout <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> geblokkeerd door printer"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> afdruktaak"</item>
- <item quantity="other" msgid="8746611264734222865">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> afdruktaken"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Annuleren"</string>
- <string name="restart" msgid="2472034227037808749">"Opnieuw starten"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Geen verbinding met printer"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"onbekend"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – niet beschikbaar"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Zwart-wit"</item>
- <item msgid="2762241247228983754">"Kleur"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Portret"</item>
- <item msgid="3199660090246166812">"Landschap"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Alle"</item>
- <item msgid="6812869625222503603">"Bereik"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-pl/strings.xml b/packages/PrintSpooler/res/values-pl/strings.xml
deleted file mode 100644
index 252c582620d6..000000000000
--- a/packages/PrintSpooler/res/values-pl/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Bufor wydruku"</string>
- <string name="print_button" msgid="645164566271246268">"Drukuj"</string>
- <string name="save_button" msgid="1921310454071758999">"Zapisz"</string>
- <string name="label_destination" msgid="9132510997381599275">"Miejsce docelowe"</string>
- <string name="label_copies" msgid="3634531042822968308">"Kopie"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Rozmiar papieru"</string>
- <string name="label_color" msgid="1108690305218188969">"Kolor"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientacja"</string>
- <string name="label_pages" msgid="6300874667546617333">"Strony (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Podgląd wydruku"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Zainstaluj przeglądarkę PDF, by zobaczyć podgląd"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Aplikacja drukująca uległa awarii"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Strony"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Generowanie zadania wydruku"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Zapisz jako PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Wszystkie drukarki…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Okno drukowania"</string>
- <string name="search" msgid="5421724265322228497">"Szukaj"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Wszystkie drukarki"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Dodaj usługę"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Pole wyszukiwania jest widoczne"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Pole wyszukiwania jest ukryte"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Dodaj drukarkę"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Znaleziono <xliff:g id="COUNT">%1$s</xliff:g> drukarkę"</item>
- <item quantity="other" msgid="6533817036607128241">"Znalezione drukarki: <xliff:g id="COUNT">%1$s</xliff:g>"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Wybierz usługę drukowania"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Szukanie drukarek"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Nie znaleziono drukarek"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Drukowanie: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Anulowanie: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Błąd drukarki: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Drukarka zablokowała <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> zadanie drukowania"</item>
- <item quantity="other" msgid="8746611264734222865">"Zadania drukowania: <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Anuluj"</string>
- <string name="restart" msgid="2472034227037808749">"Od nowa"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Brak połączenia z drukarką"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"brak informacji"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – niedostępne"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Czarno-białe"</item>
- <item msgid="2762241247228983754">"Kolor"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Pionowa"</item>
- <item msgid="3199660090246166812">"Pozioma"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Wszystkie"</item>
- <item msgid="6812869625222503603">"Zakres"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-pt-rPT/strings.xml b/packages/PrintSpooler/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 4c3dc769ca6f..000000000000
--- a/packages/PrintSpooler/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"Imprimir"</string>
- <string name="save_button" msgid="1921310454071758999">"Guardar"</string>
- <string name="label_destination" msgid="9132510997381599275">"Destino"</string>
- <string name="label_copies" msgid="3634531042822968308">"Cópias"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Tamanho do papel"</string>
- <string name="label_color" msgid="1108690305218188969">"Cor"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientação"</string>
- <string name="label_pages" msgid="6300874667546617333">"Páginas (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Pré-visualização de impressão"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Instalar o leitor de PDF para pré-visualização"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"A aplicação de impressão bloqueou"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Páginas"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"A gerar tarefa de impressão"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Guardar como PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Todas as impressoras..."</string>
- <string name="print_dialog" msgid="32628687461331979">"Caixa de diálogo de impressão"</string>
- <string name="search" msgid="5421724265322228497">"Pesquisar"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Todas as impressoras"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Adicionar serviço"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Caixa de pesquisa apresentada"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Caixa de pesquisa ocultada"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Adicionar impressora"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> impressora encontrada"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> impressoras encontradas"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Escolher o serviço de impressão"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"A procurar impressoras"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Nenhuma impressora encontrada"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"A imprimir <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"A cancelar <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Erro da impressora <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"A impressora bloqueou <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> tarefa de impressão"</item>
- <item quantity="other" msgid="8746611264734222865">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> tarefas de impressão"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Cancelar"</string>
- <string name="restart" msgid="2472034227037808749">"Reiniciar"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Sem ligação à impressora"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"desconhecido"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – indisponível"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Preto e branco"</item>
- <item msgid="2762241247228983754">"Cor"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Vertical"</item>
- <item msgid="3199660090246166812">"Horizontal"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Todas"</item>
- <item msgid="6812869625222503603">"Intervalo"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-pt/strings.xml b/packages/PrintSpooler/res/values-pt/strings.xml
deleted file mode 100644
index 5e13b9fa0089..000000000000
--- a/packages/PrintSpooler/res/values-pt/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Sp. de impressão"</string>
- <string name="print_button" msgid="645164566271246268">"Imprimir"</string>
- <string name="save_button" msgid="1921310454071758999">"Salvar"</string>
- <string name="label_destination" msgid="9132510997381599275">"Destino"</string>
- <string name="label_copies" msgid="3634531042822968308">"Cópias"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Tamanho do papel"</string>
- <string name="label_color" msgid="1108690305218188969">"Cor"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientação"</string>
- <string name="label_pages" msgid="6300874667546617333">"Páginas (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Visualização de impressão"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Instalar o visualizador de PDF"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"O aplicativo de impressão falhou"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Páginas"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Gerando trabalho de impressão"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Salvar como PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Todas as impressoras…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Diálogo de impressão"</string>
- <string name="search" msgid="5421724265322228497">"Pesquisar"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Todas as impressoras"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Adicionar serviço"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Caixa de pesquisa exibida"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Caixa de pesquisa oculta"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Adicionar impressora"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> impressora encontrada"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> impressoras encontradas"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Selecione o serviço de impressão"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Procurando impressoras"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Nenhuma impressora encontrada"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Imprimindo <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Cancelando <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Erro ao imprimir <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"A impressora bloqueou <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Cancelar"</string>
- <string name="restart" msgid="2472034227037808749">"Reiniciar"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Sem conexão com a impressora"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"desconhecido"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – não disponível"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Preto e branco"</item>
- <item msgid="2762241247228983754">"Cor"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Retrato"</item>
- <item msgid="3199660090246166812">"Paisagem"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Todas"</item>
- <item msgid="6812869625222503603">"Intervalo"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-ro/strings.xml b/packages/PrintSpooler/res/values-ro/strings.xml
deleted file mode 100644
index 34571df529b0..000000000000
--- a/packages/PrintSpooler/res/values-ro/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Derulator print."</string>
- <string name="print_button" msgid="645164566271246268">"Printați"</string>
- <string name="save_button" msgid="1921310454071758999">"Salvați"</string>
- <string name="label_destination" msgid="9132510997381599275">"Destinație"</string>
- <string name="label_copies" msgid="3634531042822968308">"Copii"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Formatul hârtiei"</string>
- <string name="label_color" msgid="1108690305218188969">"Color"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientare"</string>
- <string name="label_pages" msgid="6300874667546617333">"Pagini (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Previzualizați printarea"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Instalați PDF viewer pentru previzualizare"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Aplicația de printare s-a blocat"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Pagini"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Se generează sarcină printare"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Salvați ca PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Toate imprimantele..."</string>
- <string name="print_dialog" msgid="32628687461331979">"Caseta de dialog de printare"</string>
- <string name="search" msgid="5421724265322228497">"Căutați"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Toate imprimantele"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Adăugați un serviciu"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Caseta de căutare este afișată"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Caseta de căutare este ascunsă"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Adăugați o imprimantă"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> imprimantă găsită"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> (de) imprimante găsite"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Alegeți serviciul de printare"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Se caută imprimante"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Nu au fost găsite imprimante"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Se printează <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Se anulează <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Eroare de printare: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Printare blocată: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"Sarcină de printare <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- <item quantity="other" msgid="8746611264734222865">"Sarcini de printare <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Anulați"</string>
- <string name="restart" msgid="2472034227037808749">"Reporniți"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Nu există conexiune la o imprimantă"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"necunoscut"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> - indisponibil"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Alb-negru"</item>
- <item msgid="2762241247228983754">"Color"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Portret"</item>
- <item msgid="3199660090246166812">"Peisaj"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Toate"</item>
- <item msgid="6812869625222503603">"Interval"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-ru/strings.xml b/packages/PrintSpooler/res/values-ru/strings.xml
deleted file mode 100644
index 35695e606863..000000000000
--- a/packages/PrintSpooler/res/values-ru/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Спулер печати"</string>
- <string name="print_button" msgid="645164566271246268">"Печать"</string>
- <string name="save_button" msgid="1921310454071758999">"Сохранить"</string>
- <string name="label_destination" msgid="9132510997381599275">"Принтер"</string>
- <string name="label_copies" msgid="3634531042822968308">"Копии"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Размер бумаги"</string>
- <string name="label_color" msgid="1108690305218188969">"Цветной"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Ориентация"</string>
- <string name="label_pages" msgid="6300874667546617333">"СТРАНИЦЫ (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Предварительный просмотр"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Установить средство просмотра PDF"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Сбой приложения печати"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Количество страниц"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Создание задания печати…"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Сохранить как PDF-файл"</string>
- <string name="all_printers" msgid="5018829726861876202">"Все принтеры"</string>
- <string name="print_dialog" msgid="32628687461331979">"Диалоговое окно печати"</string>
- <string name="search" msgid="5421724265322228497">"Поиск"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Все принтеры"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Добавить службу печати"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Открыто окно поиска"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Окно поиска скрыто"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Добавить принтер"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Найден <xliff:g id="COUNT">%1$s</xliff:g> принтер"</item>
- <item quantity="other" msgid="6533817036607128241">"Найдено несколько принтеров (<xliff:g id="COUNT">%1$s</xliff:g>)"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Выберите службу печати"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Поиск принтеров…"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Ничего не найдено"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Печать задания \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\"…"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Отмена задания <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>…"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Ошибка задания \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\""</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Задание \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\" заблокировано"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Отмена"</string>
- <string name="restart" msgid="2472034227037808749">"Повторить"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Нет связи с принтером"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"неизвестно"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – недоступен"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Черно-белое"</item>
- <item msgid="2762241247228983754">"Цветное"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Книжная"</item>
- <item msgid="3199660090246166812">"Альбомная"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Все"</item>
- <item msgid="6812869625222503603">"Диапазон"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-sk/strings.xml b/packages/PrintSpooler/res/values-sk/strings.xml
deleted file mode 100644
index 008481f05991..000000000000
--- a/packages/PrintSpooler/res/values-sk/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Zaraďovač tlače"</string>
- <string name="print_button" msgid="645164566271246268">"Tlačiť"</string>
- <string name="save_button" msgid="1921310454071758999">"Uložiť"</string>
- <string name="label_destination" msgid="9132510997381599275">"Cieľ"</string>
- <string name="label_copies" msgid="3634531042822968308">"Kópie"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Veľkosť papiera"</string>
- <string name="label_color" msgid="1108690305218188969">"Farba"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientácia"</string>
- <string name="label_pages" msgid="6300874667546617333">"STRÁNKY (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Ukážka pred tlačou"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Inštalovať zobrazovač PDF na zobrazenie ukážky"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Aplikácia pre tlač zlyhala"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Strany"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Generuje sa tlačová úloha"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Uložiť ako PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Všetky tlačiarne..."</string>
- <string name="print_dialog" msgid="32628687461331979">"Dialógové okno tlače"</string>
- <string name="search" msgid="5421724265322228497">"VYHĽADÁVANIE"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Všetky tlačiarne"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Pridať službu"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Vyhľadávacie pole sa zobrazuje"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Vyhľadávacie pole je skryté"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Pridať tlačiareň"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Našla sa <xliff:g id="COUNT">%1$s</xliff:g> tlačiareň"</item>
- <item quantity="other" msgid="6533817036607128241">"Počet nájdených tlačiarní: <xliff:g id="COUNT">%1$s</xliff:g>"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Výber tlačovej služby"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Vyhľadávanie tlačiarní"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Nenašli sa žiadne tlačiarne"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Prebieha tlač úlohy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Prebieha zrušenie úlohy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Chyba tlačiarne – úloha <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Tlačiareň zablok. úlohu <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Zrušiť"</string>
- <string name="restart" msgid="2472034227037808749">"Spustiť znova"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Žiadne pripojenie k tlačiarni"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"neznáme"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – nie je k dispozícii"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Čiernobiele"</item>
- <item msgid="2762241247228983754">"Farba"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Na výšku"</item>
- <item msgid="3199660090246166812">"Na šírku"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Všetky"</item>
- <item msgid="6812869625222503603">"Rozsah"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-sl/strings.xml b/packages/PrintSpooler/res/values-sl/strings.xml
deleted file mode 100644
index 40a69c25d387..000000000000
--- a/packages/PrintSpooler/res/values-sl/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Tisk. v ozadju"</string>
- <string name="print_button" msgid="645164566271246268">"Natisni"</string>
- <string name="save_button" msgid="1921310454071758999">"Shrani"</string>
- <string name="label_destination" msgid="9132510997381599275">"Cilj"</string>
- <string name="label_copies" msgid="3634531042822968308">"Št. kopij"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Velikost papirja"</string>
- <string name="label_color" msgid="1108690305218188969">"Barvno"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Postavitev"</string>
- <string name="label_pages" msgid="6300874667546617333">"Št. strani (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Predogled tiskanja"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Za predogled namestite pregledovalnik za PDF-je"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Aplikacija za tiskanje se je zrušila"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Št. strani:"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Ustvarjanje zahteve za tisk"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Shrani kot PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Vsi tiskalniki …"</string>
- <string name="print_dialog" msgid="32628687461331979">"Pogovorno okno za tiskanje"</string>
- <string name="search" msgid="5421724265322228497">"Iskanje"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Vsi tiskalniki"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Dodaj storitev"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Iskalno polje je prikazano"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Iskalno polje je skrito"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Dodajanje tiskalnika"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Najden <xliff:g id="COUNT">%1$s</xliff:g> tiskalnik"</item>
- <item quantity="other" msgid="6533817036607128241">"Število najdenih tiskalnikov: <xliff:g id="COUNT">%1$s</xliff:g>"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Izberite tiskalno storitev"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Iskanje tiskalnikov"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Tiskalnikov ni mogoče najti"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Tiskanje: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Preklic: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Napaka tiskalnika: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Tiskalnik je blokiral <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"Tiskalno opravilo: <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- <item quantity="other" msgid="8746611264734222865">"Tiskalna opravila: <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Prekliči"</string>
- <string name="restart" msgid="2472034227037808749">"Začni znova"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Ni povezave s tiskalnikom"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"neznano"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – ni na voljo"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Črno-belo"</item>
- <item msgid="2762241247228983754">"Barvno"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Navpično"</item>
- <item msgid="3199660090246166812">"Ležeče"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Vse"</item>
- <item msgid="6812869625222503603">"Obseg"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-sr/strings.xml b/packages/PrintSpooler/res/values-sr/strings.xml
deleted file mode 100644
index 7cc5ec54daeb..000000000000
--- a/packages/PrintSpooler/res/values-sr/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Штамп. из мемор."</string>
- <string name="print_button" msgid="645164566271246268">"Штампај"</string>
- <string name="save_button" msgid="1921310454071758999">"Сачувај"</string>
- <string name="label_destination" msgid="9132510997381599275">"Одредиште"</string>
- <string name="label_copies" msgid="3634531042822968308">"Копије"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Величина папира"</string>
- <string name="label_color" msgid="1108690305218188969">"Боја"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Положај"</string>
- <string name="label_pages" msgid="6300874667546617333">"Странице (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Преглед пре штампања"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Инсталирај PDF приказивач за преглед"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Апликација за штампање је отказала"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Странице"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Генерисање задатка за штампање"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Сачувај као PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Сви штампачи…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Дијалог за штампање"</string>
- <string name="search" msgid="5421724265322228497">"Претражи"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Сви штампачи"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Додај услугу"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Оквир за претрагу се приказује"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Оквир за претрагу је сакривен"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Додај штампач"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Пронађен је <xliff:g id="COUNT">%1$s</xliff:g> штампач"</item>
- <item quantity="other" msgid="6533817036607128241">"Пронађено је <xliff:g id="COUNT">%1$s</xliff:g> штампача"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Изаберите услугу штампања"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Претрага штампача"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Није пронађен ниједан штампач"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Штампа се <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Отказује се <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Грешка штампача <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Штампач је блокирао <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Откажи"</string>
- <string name="restart" msgid="2472034227037808749">"Поново покрени"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Нема везе са штампачем"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"непознато"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – недоступан"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Црно-бело"</item>
- <item msgid="2762241247228983754">"Боја"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Усправно"</item>
- <item msgid="3199660090246166812">"Водоравно"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Све"</item>
- <item msgid="6812869625222503603">"Опсег"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-sv/strings.xml b/packages/PrintSpooler/res/values-sv/strings.xml
deleted file mode 100644
index 8f75bf5d99bc..000000000000
--- a/packages/PrintSpooler/res/values-sv/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Utskriftskö"</string>
- <string name="print_button" msgid="645164566271246268">"Skriv ut"</string>
- <string name="save_button" msgid="1921310454071758999">"Spara"</string>
- <string name="label_destination" msgid="9132510997381599275">"Destination"</string>
- <string name="label_copies" msgid="3634531042822968308">"Kopior"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Pappersstorlek"</string>
- <string name="label_color" msgid="1108690305218188969">"Färg"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Orientering"</string>
- <string name="label_pages" msgid="6300874667546617333">"Sidor (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Förhandsgranskning"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Installera PDF-läsare för förhandsgranskning"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Utskriftsappen kraschade"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Sidor"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Genererar utskriftsjobb"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Spara som PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Alla skrivare ..."</string>
- <string name="print_dialog" msgid="32628687461331979">"Dialogrutan Skriv ut"</string>
- <string name="search" msgid="5421724265322228497">"Sök"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Alla skrivare"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Lägg till tjänst"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Sökrutan visas"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Sökrutan är dold"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Lägg till skrivare"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> skrivare hittades"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> skrivare hittades"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Välj utskriftstjänst"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Söker efter skrivare"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Det gick inte att hitta några skrivare"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Skriver ut <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Avbryter <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Skrivarfel för <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Skrivaren har blockerat <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"Utskriftsjobb – <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- <item quantity="other" msgid="8746611264734222865">"Utskriftsjobb – <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Avbryt"</string>
- <string name="restart" msgid="2472034227037808749">"Starta om"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Ingen anslutning till skrivaren"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"okänt"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – inte tillgänglig"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Svartvit"</item>
- <item msgid="2762241247228983754">"Färg"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Stående"</item>
- <item msgid="3199660090246166812">"Liggande"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Alla"</item>
- <item msgid="6812869625222503603">"Intervall"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-sw/strings.xml b/packages/PrintSpooler/res/values-sw/strings.xml
deleted file mode 100644
index 1991832fb9d6..000000000000
--- a/packages/PrintSpooler/res/values-sw/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Programu ya kuandaa Printa kwa ajili ya Kuchapisha"</string>
- <string name="print_button" msgid="645164566271246268">"Chapisha"</string>
- <string name="save_button" msgid="1921310454071758999">"Hifadhi"</string>
- <string name="label_destination" msgid="9132510997381599275">"Itakapofika"</string>
- <string name="label_copies" msgid="3634531042822968308">"Nakala"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Ukubwa wa Karatasi"</string>
- <string name="label_color" msgid="1108690305218188969">"Rangi"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Mkao"</string>
- <string name="label_pages" msgid="6300874667546617333">"Kurasa (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Chungulia kwanza kabla ya kuchapisha"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Sakinisha kitazamaji cha PDF kwa onyesho la kuchungulia"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Programu ya kuchapisha imeacha kufanya kazi"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Kurasa"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Inazanzisha kazi ya kuchapisha"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Hifadhi kama PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Printa zote..."</string>
- <string name="print_dialog" msgid="32628687461331979">"Chapisha mazungumzo"</string>
- <string name="search" msgid="5421724265322228497">"Tafuta"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Printa zote"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Ongeza huduma"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Kisanduku cha kutafutia kimeonyeshwa"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Kisanduku cha kutafutia kimefichwa"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Ongeza printa"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Printa <xliff:g id="COUNT">%1$s</xliff:g> imepatikana"</item>
- <item quantity="other" msgid="6533817036607128241">"Printa <xliff:g id="COUNT">%1$s</xliff:g> zimepatikana"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Chagua huduma ya printa"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Inatafuta printa"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Hakuna printa zilizopatikana"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Inachapisha <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Inaghairi <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Hitilafu ya kuchapisha <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Printa imefungwa <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Ghairi"</string>
- <string name="restart" msgid="2472034227037808749">"Anzisha upya"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Hakuna muunganisho kwa printa"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"haijulikani"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> - haipatikani"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Nyeusi na Nyeupe"</item>
- <item msgid="2762241247228983754">"Rangi"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Wima"</item>
- <item msgid="3199660090246166812">"Mlalo"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Zote"</item>
- <item msgid="6812869625222503603">"Masafa"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-th/strings.xml b/packages/PrintSpooler/res/values-th/strings.xml
deleted file mode 100644
index 0d247a5b64f4..000000000000
--- a/packages/PrintSpooler/res/values-th/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"พิมพ์"</string>
- <string name="save_button" msgid="1921310454071758999">"บันทึก"</string>
- <string name="label_destination" msgid="9132510997381599275">"ปลายทาง"</string>
- <string name="label_copies" msgid="3634531042822968308">"สำเนา"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"ขนาดของกระดาษ"</string>
- <string name="label_color" msgid="1108690305218188969">"สี"</string>
- <string name="label_orientation" msgid="2853142581990496477">"การวางแนว"</string>
- <string name="label_pages" msgid="6300874667546617333">"หน้า (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"ตัวอย่างก่อนพิมพ์"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"ติดตั้งโปรแกรมดู PDF เพื่อดูหน้าตัวอย่าง"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"แอปการพิมพ์ขัดข้อง"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"หน้า"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"กำลังสร้างงานพิมพ์"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"บันทึกเป็น PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"เครื่องพิมพ์ทั้งหมด…"</string>
- <string name="print_dialog" msgid="32628687461331979">"ช่องโต้ตอบการพิมพ์"</string>
- <string name="search" msgid="5421724265322228497">"ค้นหา"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"เครื่องพิมพ์ทั้งหมด"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"เพิ่มบริการ"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"แสดงช่องค้นหาอยู่"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"ซ่อนช่องค้นหาอยู่"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"เพิ่มเครื่องพิมพ์"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"พบเครื่องพิมพ์ <xliff:g id="COUNT">%1$s</xliff:g> เครื่อง"</item>
- <item quantity="other" msgid="6533817036607128241">"พบเครื่องพิมพ์ <xliff:g id="COUNT">%1$s</xliff:g> เครื่อง"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"เลือกบริการพิมพ์"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"กำลังค้นหาเครื่องพิมพ์"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"ไม่พบเครื่องพิมพ์"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"กำลังพิมพ์ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"กำลังยกเลิก <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"ข้อผิดพลาดเครื่องพิมพ์ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"เครื่องพิมพ์ได้บล็อก <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"ยกเลิก"</string>
- <string name="restart" msgid="2472034227037808749">"เริ่มต้นใหม่"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"ไม่มีการเชื่อมต่อไปยังเครื่องพิมพ์"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"ไม่ทราบ"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> ไม่พร้อมใช้งาน"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"ขาวดำ"</item>
- <item msgid="2762241247228983754">"สี"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"แนวตั้ง"</item>
- <item msgid="3199660090246166812">"แนวนอน"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"ทั้งหมด"</item>
- <item msgid="6812869625222503603">"ช่วง"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-tl/strings.xml b/packages/PrintSpooler/res/values-tl/strings.xml
deleted file mode 100644
index 087cf493d25d..000000000000
--- a/packages/PrintSpooler/res/values-tl/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"I-print"</string>
- <string name="save_button" msgid="1921310454071758999">"I-save"</string>
- <string name="label_destination" msgid="9132510997381599275">"Patutunguhan"</string>
- <string name="label_copies" msgid="3634531042822968308">"Mga Kopya"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Laki ng Papel"</string>
- <string name="label_color" msgid="1108690305218188969">"Kulay"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Oryentasyon"</string>
- <string name="label_pages" msgid="6300874667546617333">"Mga Pahina (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Preview sa pag-print"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Mag-install ng PDF viewer para sa pag-preview"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Nag-crash ang app sa pag-print"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Mga Pahina"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Gumagawa ng pag-print"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"I-save bilang PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Lahat ng printer…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Dialog ng pag-print"</string>
- <string name="search" msgid="5421724265322228497">"Hanapin"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Lahat ng printer"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Magdagdag ng serbisyo"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Ipinapakita ang box para sa paghahanap"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Nakatago ang box para sa paghahanap"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Magdagdag ng printer"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> printer ang nakita"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> (na) printer ang nakita"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Pumili ng serbisyo ng pag-print"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Naghahanap ng mga printer"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Walang mga printer na nakita"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Pini-print ang <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Kinakansela ang <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Error sa printer <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Naka-block ang Printer <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Kanselahin"</string>
- <string name="restart" msgid="2472034227037808749">"I-restart"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Hindi nakakonekta sa printer"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"hindi alam"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – hindi available"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Black &amp; White"</item>
- <item msgid="2762241247228983754">"Kulay"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Portrait"</item>
- <item msgid="3199660090246166812">"Landscape"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Lahat"</item>
- <item msgid="6812869625222503603">"Sakop"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-tr/strings.xml b/packages/PrintSpooler/res/values-tr/strings.xml
deleted file mode 100644
index 8127c4b2324c..000000000000
--- a/packages/PrintSpooler/res/values-tr/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"Yazdır"</string>
- <string name="save_button" msgid="1921310454071758999">"Kaydet"</string>
- <string name="label_destination" msgid="9132510997381599275">"Hedef"</string>
- <string name="label_copies" msgid="3634531042822968308">"Kopya sayısı"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Kağıt Boyutu"</string>
- <string name="label_color" msgid="1108690305218188969">"Renkli"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Sayfa yönü"</string>
- <string name="label_pages" msgid="6300874667546617333">"Sayfa (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Yazdırmayı önizle"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Önizlemek için PDF görüntüleyici yükleyin"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Yazdırma uygulaması kilitlendi"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Sayfa"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Yazdırma işi oluşturuluyor"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"PDF olarak kaydet"</string>
- <string name="all_printers" msgid="5018829726861876202">"Tüm yazıcılar…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Yazdırma iletişim kutusu"</string>
- <string name="search" msgid="5421724265322228497">"Ara"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Tüm yazıcılar"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Hizmet ekle"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Arama kutusu gösteriliyor"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Arama kutusu gizli"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Yazıcı ekle"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> yazıcı bulundu"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> yazıcı bulundu"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Yazdırma hizmetini seçin"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Yazıcılar aranıyor"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Yazıcı bulunamadı"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> yazdırılıyor"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> iptal ediliyor"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Yazıcı hatası: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Yazıcı <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> işini engelledi"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"İptal"</string>
- <string name="restart" msgid="2472034227037808749">"Yeniden başlat"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Yazıcı bağlantısı yok"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"bilinmiyor"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – kullanılamıyor"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Siyah Beyaz"</item>
- <item msgid="2762241247228983754">"Renkli"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Dikey"</item>
- <item msgid="3199660090246166812">"Yatay"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Tümü"</item>
- <item msgid="6812869625222503603">"Aralık"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-uk/strings.xml b/packages/PrintSpooler/res/values-uk/strings.xml
deleted file mode 100644
index cd28f3cca275..000000000000
--- a/packages/PrintSpooler/res/values-uk/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"Друк"</string>
- <string name="save_button" msgid="1921310454071758999">"Зберегти"</string>
- <string name="label_destination" msgid="9132510997381599275">"Місце признач-ня"</string>
- <string name="label_copies" msgid="3634531042822968308">"Копії"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Розмір паперу"</string>
- <string name="label_color" msgid="1108690305218188969">"Колір"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Орієнтація"</string>
- <string name="label_pages" msgid="6300874667546617333">"Сторінки (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Версія для друку"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Установити засіб перегляду PDF"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Програма друку аварійно завершила роботу"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Сторінки"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Створюється завдання друку"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Зберегти як PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Усі принтери…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Діалогове вікно друку"</string>
- <string name="search" msgid="5421724265322228497">"Пошук"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Усі принтери"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Додати службу"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Вікно пошуку показано"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Вікно пошуку сховано"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Додати принтер"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Знайдено принтерів: <xliff:g id="COUNT">%1$s</xliff:g>"</item>
- <item quantity="other" msgid="6533817036607128241">"Знайдено принтерів: <xliff:g id="COUNT">%1$s</xliff:g>"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Вибрати службу друку"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Пошук принтерів"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Принтери не знайдено"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Завдання \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\" друкується"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Завдання \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\" скасовується"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Помилка завдання \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\""</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Завдання \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\" заблоковано"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"Завдання друку <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- <item quantity="other" msgid="8746611264734222865">"Завдання друку <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Скасувати"</string>
- <string name="restart" msgid="2472034227037808749">"Перезапустити"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Немає з’єднання з принтером"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"невідомо"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"Завдання \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\" не доступне"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Чорно-білий"</item>
- <item msgid="2762241247228983754">"Колір"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Книжкова"</item>
- <item msgid="3199660090246166812">"Альбомна"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Усі"</item>
- <item msgid="6812869625222503603">"Діапазон"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-vi/strings.xml b/packages/PrintSpooler/res/values-vi/strings.xml
deleted file mode 100644
index 3c44e7d00835..000000000000
--- a/packages/PrintSpooler/res/values-vi/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
- <string name="print_button" msgid="645164566271246268">"In"</string>
- <string name="save_button" msgid="1921310454071758999">"Lưu"</string>
- <string name="label_destination" msgid="9132510997381599275">"Đích"</string>
- <string name="label_copies" msgid="3634531042822968308">"Bản sao"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Kích thước trang"</string>
- <string name="label_color" msgid="1108690305218188969">"Màu"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Hướng"</string>
- <string name="label_pages" msgid="6300874667546617333">"Trang (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Xem trước bản in"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Cài đặt trình xem PDF để xem trước"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Ứng dụng in gặp lỗi"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Trang"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Đang tạo lệnh in"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Lưu dưới dạng PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Tất cả máy in…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Hộp thoại in"</string>
- <string name="search" msgid="5421724265322228497">"Tìm kiếm"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Tất cả máy in"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Thêm dịch vụ"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Hiển thị hộp tìm kiếm"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Ẩn hộp tìm kiếm"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Thêm máy in"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"Đã tìm thấy <xliff:g id="COUNT">%1$s</xliff:g> máy in"</item>
- <item quantity="other" msgid="6533817036607128241">"Đã tìm thấy <xliff:g id="COUNT">%1$s</xliff:g> máy in"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Chọn dịch vụ in"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Đang tìm kiếm máy in"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Không tìm thấy máy in"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"In <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Hủy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Lỗi máy in <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Máy in đã chặn <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"Hủy"</string>
- <string name="restart" msgid="2472034227037808749">"Bắt đầu lại"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Không có kết nối nào với máy in"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"không xác định"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – không khả dụng"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Đen trắng"</item>
- <item msgid="2762241247228983754">"Màu"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Dọc"</item>
- <item msgid="3199660090246166812">"Ngang"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Tất cả"</item>
- <item msgid="6812869625222503603">"Dãy"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-zh-rCN/strings.xml b/packages/PrintSpooler/res/values-zh-rCN/strings.xml
deleted file mode 100644
index a968d26223d1..000000000000
--- a/packages/PrintSpooler/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"打印处理服务"</string>
- <string name="print_button" msgid="645164566271246268">"打印"</string>
- <string name="save_button" msgid="1921310454071758999">"保存"</string>
- <string name="label_destination" msgid="9132510997381599275">"目的地"</string>
- <string name="label_copies" msgid="3634531042822968308">"份数"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"纸张尺寸"</string>
- <string name="label_color" msgid="1108690305218188969">"颜色"</string>
- <string name="label_orientation" msgid="2853142581990496477">"方向"</string>
- <string name="label_pages" msgid="6300874667546617333">"页数 (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"打印预览"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"安装 PDF 查看器以便预览"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"打印应用崩溃了"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"页数"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"正在生成打印作业"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"保存为 PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"所有打印机…"</string>
- <string name="print_dialog" msgid="32628687461331979">"打印对话框"</string>
- <string name="search" msgid="5421724265322228497">"搜索"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"所有打印机"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"添加服务"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"搜索框已显示"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"搜索框已隐藏"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"添加打印机"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"找到<xliff:g id="COUNT">%1$s</xliff:g>台打印机"</item>
- <item quantity="other" msgid="6533817036607128241">"找到<xliff:g id="COUNT">%1$s</xliff:g>台打印机"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"选择打印服务"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"正在搜索打印机"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"找不到打印机"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"正在打印“<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>”"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"正在取消打印“<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>”"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"打印机在打印“<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>”时出错"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"打印机拒绝打印“<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>”"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"取消"</string>
- <string name="restart" msgid="2472034227037808749">"重新开始"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"未与打印机建立连接"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"未知"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> - 无法使用"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"黑白"</item>
- <item msgid="2762241247228983754">"彩色"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"纵向"</item>
- <item msgid="3199660090246166812">"横向"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"全部"</item>
- <item msgid="6812869625222503603">"范围"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-zh-rHK/strings.xml b/packages/PrintSpooler/res/values-zh-rHK/strings.xml
deleted file mode 100644
index c089a225fc7b..000000000000
--- a/packages/PrintSpooler/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"列印多工緩衝處理器"</string>
- <string name="print_button" msgid="645164566271246268">"列印"</string>
- <string name="save_button" msgid="1921310454071758999">"儲存"</string>
- <string name="label_destination" msgid="9132510997381599275">"目的地"</string>
- <string name="label_copies" msgid="3634531042822968308">"份數"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"紙張大小"</string>
- <string name="label_color" msgid="1108690305218188969">"顏色"</string>
- <string name="label_orientation" msgid="2853142581990496477">"方向"</string>
- <string name="label_pages" msgid="6300874667546617333">"頁數 (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"預覽列印"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"安裝預覽所需的 PDF 檢視器"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"列印應用程式當機了"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"頁數"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"正在產生列印工作"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"儲存為 PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"所有打印機…"</string>
- <string name="print_dialog" msgid="32628687461331979">"列印對話方塊"</string>
- <string name="search" msgid="5421724265322228497">"搜尋"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"所有打印機"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"新增服務"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"搜尋框已顯示"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"搜尋框已隱藏"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"新增打印機"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"找到 <xliff:g id="COUNT">%1$s</xliff:g> 部打印機"</item>
- <item quantity="other" msgid="6533817036607128241">"找到 <xliff:g id="COUNT">%1$s</xliff:g> 部打印機"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"選擇列印服務"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"正在搜尋打印機"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"找不到打印機"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"正在列印 <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"正在取消 <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"打印機錯誤:<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"打印機已封鎖 <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"取消"</string>
- <string name="restart" msgid="2472034227037808749">"重新開始"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"尚未與打印機連線"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"不明"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – 無法使用"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"黑白"</item>
- <item msgid="2762241247228983754">"彩色"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"直向"</item>
- <item msgid="3199660090246166812">"橫向"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"全部"</item>
- <item msgid="6812869625222503603">"範圍"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-zh-rTW/strings.xml b/packages/PrintSpooler/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 1d84ac528217..000000000000
--- a/packages/PrintSpooler/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"列印多工緩衝處理器"</string>
- <string name="print_button" msgid="645164566271246268">"列印"</string>
- <string name="save_button" msgid="1921310454071758999">"儲存"</string>
- <string name="label_destination" msgid="9132510997381599275">"目的地"</string>
- <string name="label_copies" msgid="3634531042822968308">"份數"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"紙張大小"</string>
- <string name="label_color" msgid="1108690305218188969">"色彩"</string>
- <string name="label_orientation" msgid="2853142581990496477">"方向"</string>
- <string name="label_pages" msgid="6300874667546617333">"頁數 (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"列印預覽"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"安裝預覽所需的 PDF 檢視器"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"列印應用程式當機了"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"頁數"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"正在產生列印工作"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"儲存為 PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"所有印表機…"</string>
- <string name="print_dialog" msgid="32628687461331979">"列印對話方塊"</string>
- <string name="search" msgid="5421724265322228497">"搜尋"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"所有印表機"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"新增服務"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"搜尋框已顯示"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"搜尋框已隱藏"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"新增印表機"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"找到 <xliff:g id="COUNT">%1$s</xliff:g> 台印表機"</item>
- <item quantity="other" msgid="6533817036607128241">"找到 <xliff:g id="COUNT">%1$s</xliff:g> 台印表機"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"選擇列印服務"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"正在搜尋印表機"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"找不到印表機"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"正在列印 <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"正在取消 <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"印表機發生錯誤:<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"印表機封鎖了 <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for composite_notification_title_template:one (5866624638054847057) -->
- <!-- no translation found for composite_notification_title_template:other (8746611264734222865) -->
- <string name="cancel" msgid="4373674107267141885">"取消"</string>
- <string name="restart" msgid="2472034227037808749">"重新開始"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"尚未與印表機建立連線"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"不明"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – 無法使用"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"黑白"</item>
- <item msgid="2762241247228983754">"彩色"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"縱向"</item>
- <item msgid="3199660090246166812">"橫向"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"全部"</item>
- <item msgid="6812869625222503603">"範圍"</item>
- </string-array>
-</resources>
diff --git a/packages/PrintSpooler/res/values-zu/strings.xml b/packages/PrintSpooler/res/values-zu/strings.xml
deleted file mode 100644
index 1bf72a6fac3f..000000000000
--- a/packages/PrintSpooler/res/values-zu/strings.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="4469836075319831821">"Ispuli sephrinta"</string>
- <string name="print_button" msgid="645164566271246268">"Phrinta"</string>
- <string name="save_button" msgid="1921310454071758999">"Londoloza"</string>
- <string name="label_destination" msgid="9132510997381599275">"Indawo"</string>
- <string name="label_copies" msgid="3634531042822968308">"Amakhophi"</string>
- <string name="label_paper_size" msgid="8681895607876809323">"Usayizi wephepha"</string>
- <string name="label_color" msgid="1108690305218188969">"Umbala"</string>
- <string name="label_orientation" msgid="2853142581990496477">"Umumo"</string>
- <string name="label_pages" msgid="6300874667546617333">"Amakhasi (<xliff:g id="PAGE_COUNT">%1$s</xliff:g>)"</string>
- <!-- no translation found for pages_range_example (8558694453556945172) -->
- <skip />
- <string name="print_preview" msgid="8010217796057763343">"Ukubuka kuqala kokuphrinta"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Faka isibukeli se-PDF ukuze uhlole kuqala"</string>
- <string name="printing_app_crashed" msgid="854477616686566398">"Ukuphrinta uhlelo lokusebenza kukhubazekile"</string>
- <string name="page_count_unknown" msgid="6058852665954511124">"Amakhasi"</string>
- <string name="generating_print_job" msgid="3119608742651698916">"Ikhiqiza umsebenzi wokuphrinta"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"Londoloza njenge-PDF"</string>
- <string name="all_printers" msgid="5018829726861876202">"Wonke amaphrinta…"</string>
- <string name="print_dialog" msgid="32628687461331979">"Ingxoxo yokuphrinta"</string>
- <string name="search" msgid="5421724265322228497">"Sesha"</string>
- <string name="all_printers_label" msgid="3178848870161526399">"Wonke amaphrinta"</string>
- <string name="add_print_service_label" msgid="5356702546188981940">"Engeza isevisi"</string>
- <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Ibhokisi lokuhlola libonisiwe"</string>
- <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Ibhokisi lokusesha lifihliwe"</string>
- <string name="print_add_printer" msgid="1088656468360653455">"Engeza iphrinta"</string>
- <plurals name="print_search_result_count_utterance">
- <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> iphrinta itholiwe"</item>
- <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> amaphrinta atholiwe"</item>
- </plurals>
- <string name="choose_print_service" msgid="3740309762324459694">"Khetha isevisi yephrinta"</string>
- <string name="print_searching_for_printers" msgid="6550424555079932867">"Isesha amaphrinta"</string>
- <string name="print_no_printers" msgid="4869403323900054866">"Awekho amaphrinta atholiwe"</string>
- <string name="printing_notification_title_template" msgid="295903957762447362">"Iphrinta i-<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Ikhansela i-<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="failed_notification_title_template" msgid="2256217208186530973">"Iphutha lephrinta ye-<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
- <string name="blocked_notification_title_template" msgid="1175435827331588646">"Iphrinta engu-<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> ivinjelwe"</string>
- <plurals name="composite_notification_title_template">
- <item quantity="one" msgid="5866624638054847057">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> umsebenzi wokuphrinta"</item>
- <item quantity="other" msgid="8746611264734222865">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g> imisebenzi yokuphrinta"</item>
- </plurals>
- <string name="cancel" msgid="4373674107267141885">"Khansela"</string>
- <string name="restart" msgid="2472034227037808749">"Qala kabusha"</string>
- <string name="no_connection_to_printer" msgid="2159246915977282728">"Akukho ukuxhumana kuphrinta"</string>
- <string name="reason_unknown" msgid="5507940196503246139">"akwaziwa"</string>
- <string name="printer_unavailable" msgid="2434170617003315690">"I-<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – ayitholakali"</string>
- <!-- no translation found for print_error_default_message (8568506918983980567) -->
- <skip />
- <string-array name="color_mode_labels">
- <item msgid="7602948745415174937">"Okumnyama nokumhlophe"</item>
- <item msgid="2762241247228983754">"Umbala"</item>
- </string-array>
- <string-array name="orientation_labels">
- <item msgid="4061931020926489228">"Ukuma ngobude"</item>
- <item msgid="3199660090246166812">"Ukwakheka kwezwe"</item>
- </string-array>
- <string-array name="page_options_labels">
- <item msgid="7421377442011699994">"Konke"</item>
- <item msgid="6812869625222503603">"Ibanga"</item>
- </string-array>
-</resources>
diff --git a/packages/SettingsProvider/res/values-en-rIN/strings.xml b/packages/SettingsProvider/res/values-en-rIN/strings.xml
deleted file mode 100644
index c19fdd7aed7f..000000000000
--- a/packages/SettingsProvider/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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">"Settings Storage"</string>
-</resources>
diff --git a/packages/SettingsProvider/res/values-et-rEE/strings.xml b/packages/SettingsProvider/res/values-et-rEE/strings.xml
deleted file mode 100644
index 30b729365f15..000000000000
--- a/packages/SettingsProvider/res/values-et-rEE/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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">"Seadete talletusruum"</string>
-</resources>
diff --git a/packages/SettingsProvider/res/values-fr-rCA/strings.xml b/packages/SettingsProvider/res/values-fr-rCA/strings.xml
deleted file mode 100644
index c90eb0957e52..000000000000
--- a/packages/SettingsProvider/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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">"Stockage des paramètres"</string>
-</resources>
diff --git a/packages/SettingsProvider/res/values-hy-rAM/strings.xml b/packages/SettingsProvider/res/values-hy-rAM/strings.xml
deleted file mode 100644
index b1f1afbaf664..000000000000
--- a/packages/SettingsProvider/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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/SettingsProvider/res/values-ka-rGE/strings.xml b/packages/SettingsProvider/res/values-ka-rGE/strings.xml
deleted file mode 100644
index 691a2e966b1a..000000000000
--- a/packages/SettingsProvider/res/values-ka-rGE/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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/SettingsProvider/res/values-km-rKH/strings.xml b/packages/SettingsProvider/res/values-km-rKH/strings.xml
deleted file mode 100644
index 7be624279c50..000000000000
--- a/packages/SettingsProvider/res/values-km-rKH/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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/SettingsProvider/res/values-lo-rLA/strings.xml b/packages/SettingsProvider/res/values-lo-rLA/strings.xml
deleted file mode 100644
index 4e5793661740..000000000000
--- a/packages/SettingsProvider/res/values-lo-rLA/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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/SettingsProvider/res/values-mn-rMN/strings.xml b/packages/SettingsProvider/res/values-mn-rMN/strings.xml
deleted file mode 100644
index 94521451bcee..000000000000
--- a/packages/SettingsProvider/res/values-mn-rMN/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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/SettingsProvider/res/values-ms-rMY/strings.xml b/packages/SettingsProvider/res/values-ms-rMY/strings.xml
deleted file mode 100644
index 9108b0706899..000000000000
--- a/packages/SettingsProvider/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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">"Storan Tetapan"</string>
-</resources>
diff --git a/packages/SettingsProvider/res/values-zh-rHK/strings.xml b/packages/SettingsProvider/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 977c9b91d13d..000000000000
--- a/packages/SettingsProvider/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml
index a1d8f22d48a9..da3ca0f8d119 100644
--- a/packages/SettingsProvider/res/values/defaults.xml
+++ b/packages/SettingsProvider/res/values/defaults.xml
@@ -173,4 +173,8 @@
0 means no timeout; battery sounds will always play
>0 is milliseconds of screen-off time after which battery sounds will not play -->
<integer name="def_low_battery_sound_timeout">0</integer>
+
+ <!-- Default for Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE -->
+ <integer name="def_wifi_scan_always_available">0</integer>
+
</resources>
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 09c21f3f1997..ed86f42705cb 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -2274,6 +2274,9 @@ public class DatabaseHelper extends SQLiteOpenHelper {
loadIntegerSetting(stmt, Settings.Global.LOW_BATTERY_SOUND_TIMEOUT,
R.integer.def_low_battery_sound_timeout);
+ loadIntegerSetting(stmt, Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE,
+ R.integer.def_wifi_scan_always_available);
+
// --- New global settings start here
} finally {
if (stmt != null) stmt.close();
diff --git a/packages/Shell/res/values-cs/strings.xml b/packages/Shell/res/values-cs/strings.xml
index 3f1c9219da72..effdcb97f24a 100644
--- a/packages/Shell/res/values-cs/strings.xml
+++ b/packages/Shell/res/values-cs/strings.xml
@@ -17,8 +17,8 @@
<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="3701846017049540910">"Prostředí"</string>
- <string name="bugreport_finished_title" msgid="2293711546892863898">"Bylo vytvořeno chybové hlášení"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Chybové hlášení můžete sdílet klepnutím."</string>
- <string name="bugreport_confirm" msgid="5130698467795669780">"Chybová hlášení obsahují data z různých souborů protokolů systému včetně osobních a soukromých informací. Chybová hlášení sdílejte pouze s aplikacemi a uživateli, kterým důvěřujete."</string>
+ <string name="bugreport_finished_title" msgid="2293711546892863898">"Byla vytvořena zpráva o chybě"</string>
+ <string name="bugreport_finished_text" msgid="3559904746859400732">"Zprávu o chybě můžete sdílet klepnutím."</string>
+ <string name="bugreport_confirm" msgid="5130698467795669780">"Zprávy o chybách obsahují data z různých souborů protokolů systému včetně osobních a soukromých informací. Zprávy o chybách sdílejte pouze s aplikacemi a uživateli, kterým důvěřujete."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Zobrazit tuto zprávu příště"</string>
</resources>
diff --git a/packages/Shell/res/values-da/strings.xml b/packages/Shell/res/values-da/strings.xml
index a8a3605e0e4e..01ea42b68687 100644
--- a/packages/Shell/res/values-da/strings.xml
+++ b/packages/Shell/res/values-da/strings.xml
@@ -19,6 +19,6 @@
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Fejlrapporten er registreret"</string>
<string name="bugreport_finished_text" msgid="3559904746859400732">"Tryk for at dele din fejlrapport"</string>
- <string name="bugreport_confirm" msgid="5130698467795669780">"Fejlrapporter indeholder data fra systemets forskellige logfiler, f.eks. personlige og private oplysninger. Del kun fejlrapporter med apps og personer, du har tillid til."</string>
+ <string name="bugreport_confirm" msgid="5130698467795669780">"Fejlrapporter indeholder data fra systemets forskellige logfiler, herunder personlige og private oplysninger. Del kun fejlrapporter med apps og personer, du har tillid til."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Vis denne meddelelse næste gang"</string>
</resources>
diff --git a/packages/Shell/res/values-en-rIN/strings.xml b/packages/Shell/res/values-en-rIN/strings.xml
deleted file mode 100644
index 68708e0c576f..000000000000
--- a/packages/Shell/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="3701846017049540910">"Shell"</string>
- <string name="bugreport_finished_title" msgid="2293711546892863898">"Bug report captured"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Touch to share your bug report"</string>
- <string name="bugreport_confirm" msgid="5130698467795669780">"Bug reports contain data from the system\'s various log files, including personal and private information. Only share bug reports with apps and people that you trust."</string>
- <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Show this message next time"</string>
-</resources>
diff --git a/packages/Shell/res/values-et-rEE/strings.xml b/packages/Shell/res/values-et-rEE/strings.xml
deleted file mode 100644
index 77881582cc8b..000000000000
--- a/packages/Shell/res/values-et-rEE/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="3701846017049540910">"Kest"</string>
- <string name="bugreport_finished_title" msgid="2293711546892863898">"Veaaruanne jäädvustati"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Veaaruande jagamiseks puudutage"</string>
- <string name="bugreport_confirm" msgid="5130698467795669780">"Veaaruanded sisaldavad andmeid erinevatest süsteemi logifailidest, sh isiklikku ja privaatset teavet. Jagage veaaruandeid ainult usaldusväärsete rakenduste ja inimestega."</string>
- <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Kuva see sõnum järgmisel korral"</string>
-</resources>
diff --git a/packages/Shell/res/values-fr-rCA/strings.xml b/packages/Shell/res/values-fr-rCA/strings.xml
deleted file mode 100644
index c672f23cba1b..000000000000
--- a/packages/Shell/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="3701846017049540910">"Shell"</string>
- <string name="bugreport_finished_title" msgid="2293711546892863898">"Rapport de bogue enregistré"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Appuyer ici pour partager votre rapport de bogue"</string>
- <string name="bugreport_confirm" msgid="5130698467795669780">"Les rapports de bogue contiennent des données des fichiers journaux du système, y compris des informations personnelles et privées. Ne partagez les rapports de bogue qu\'avec les applications et les personnes que vous estimez fiables."</string>
- <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Afficher ce message la prochaine fois"</string>
-</resources>
diff --git a/packages/Shell/res/values-hi/strings.xml b/packages/Shell/res/values-hi/strings.xml
index 7e73c795c73d..4ea066456e94 100644
--- a/packages/Shell/res/values-hi/strings.xml
+++ b/packages/Shell/res/values-hi/strings.xml
@@ -19,6 +19,6 @@
<string name="app_label" msgid="3701846017049540910">"शेल"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"बग रिपोर्ट कैप्चर कर ली गई"</string>
<string name="bugreport_finished_text" msgid="3559904746859400732">"अपनी बग रिपोर्ट साझा करने के लिए स्पर्श करें"</string>
- <string name="bugreport_confirm" msgid="5130698467795669780">"बग रिपोर्ट में व्यक्तिगत और निजी जानकारी सहित, सिस्टम की विभिन्न लॉग फ़ाइलों का डेटा होता है. बग रिपोर्ट केवल विश्वसनीय एप्स और व्यक्तियों से ही साझा करें."</string>
+ <string name="bugreport_confirm" msgid="5130698467795669780">"बग रिपोर्ट में व्यक्तिगत और निजी जानकारी सहित, सिस्टम की विभिन्न लॉग फ़ाइलों का डेटा होता है. बग रिपोर्ट केवल विश्वसनीय एप्लिकेशन और व्यक्तियों से ही साझा करें."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"यह संदेश अगली बार दिखाएं"</string>
</resources>
diff --git a/packages/Shell/res/values-hy-rAM/strings.xml b/packages/Shell/res/values-hy-rAM/strings.xml
deleted file mode 100644
index ea7fa9f7cef0..000000000000
--- a/packages/Shell/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="3701846017049540910">"Խեցի"</string>
- <string name="bugreport_finished_title" msgid="2293711546892863898">"Վրիպակի զեկույց ստացվեց"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Հպեք` ձեր վրիպակի մասին զեկույցը տարածելու համար"</string>
- <string name="bugreport_confirm" msgid="5130698467795669780">"Վրիպակի զեկույցները պարունակում են տվյալներ համակարգի տարբեր մուտքի ֆայլերից, այդ թվում նաև անհատական ​​և գաղտնի տեղեկություններ: Վրիպակի զեկույցները կիսեք միայն այն հավելվածների և մարդկանց հետ, որոնց վստահում եք:"</string>
- <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Այս հաղորդագրությունը ցույց տալ հաջորդ անգամ"</string>
-</resources>
diff --git a/packages/Shell/res/values-iw/strings.xml b/packages/Shell/res/values-iw/strings.xml
index ded860c14dfc..e7715e9ca9d4 100644
--- a/packages/Shell/res/values-iw/strings.xml
+++ b/packages/Shell/res/values-iw/strings.xml
@@ -19,6 +19,6 @@
<string name="app_label" msgid="3701846017049540910">"מעטפת"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"דוח הבאגים צולם"</string>
<string name="bugreport_finished_text" msgid="3559904746859400732">"גע כדי לשתף את דוח הבאגים שלך"</string>
- <string name="bugreport_confirm" msgid="5130698467795669780">"דוחות על באגים כוללים נתונים מקובצי היומן השונים במערכת, כולל מידע אישי ופרטי. שתף דוחות באגים רק עם אפליקציות ואנשים שאתה סומך עליהם."</string>
+ <string name="bugreport_confirm" msgid="5130698467795669780">"דוחות על באגים כוללים נתונים מקובצי היומן השונים במערכת, כולל מידע אישי ופרטי. שתף דוחות באגים רק עם יישומים ואנשים שאתה סומך עליהם."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"הצג את ההודעה הזו בפעם הבאה"</string>
</resources>
diff --git a/packages/Shell/res/values-ka-rGE/strings.xml b/packages/Shell/res/values-ka-rGE/strings.xml
deleted file mode 100644
index 7d9c72aa291f..000000000000
--- a/packages/Shell/res/values-ka-rGE/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="3701846017049540910">"გარეკანი"</string>
- <string name="bugreport_finished_title" msgid="2293711546892863898">"ანგარიში ხარვეზების შესახებ შექმნილია"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"შეეხეთ თქვენი ხარვეზების ანგარიშის გასაზიარებლად"</string>
- <string name="bugreport_confirm" msgid="5130698467795669780">"ხარვეზის ანგარიშები მოიცავს მონაცემებს სხვადასხვა სისტემური ჟურნალის ფაილებიდან, მათ შორის პირად და კონფიდენციალურ ინფორმაციას."</string>
- <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"შემდგომში აჩვენე ეს შეტყობინება"</string>
-</resources>
diff --git a/packages/Shell/res/values-km-rKH/strings.xml b/packages/Shell/res/values-km-rKH/strings.xml
deleted file mode 100644
index efb345c8340d..000000000000
--- a/packages/Shell/res/values-km-rKH/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="3701846017049540910">"សែល"</string>
- <string name="bugreport_finished_title" msgid="2293711546892863898">"បាន​ចាប់​យក​របាយការណ៍​កំហុស"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"ប៉ះ​ ដើម្បី​ចែក​រំលែក​របាយការណ៍​កំហុស​របស់​អ្នក"</string>
- <string name="bugreport_confirm" msgid="5130698467795669780">"របាយការណ៍​កំហុស​រួមមាន​ឯកសារ​កំណត់​ហេតុ​ផ្សេងៗ​របស់​ប្រព័ន្ធ រួមមាន​ព័ត៌មាន​ផ្ទាល់ខ្លួន និង​ឯកជន។ ចែករំលែក​របាយការណ៍​កំហុស​ជា​មួយ​កម្មវិធី និង​មនុស្ស​ដែល​អ្នក​ទុក​ចិត្ត។"</string>
- <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"បង្ហាញ​សារ​នេះ​ពេល​ក្រោយ"</string>
-</resources>
diff --git a/packages/Shell/res/values-lo-rLA/strings.xml b/packages/Shell/res/values-lo-rLA/strings.xml
deleted file mode 100644
index a237d482040f..000000000000
--- a/packages/Shell/res/values-lo-rLA/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="3701846017049540910">"Shell"</string>
- <string name="bugreport_finished_title" msgid="2293711546892863898">"ລາຍງານຈຸດບົກພ່ອງຖືກເກັບກຳແລ້ວ"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"ແຕະເພື່ອສົ່ງການລາຍງານປັນຫາຂອງທ່ານ"</string>
- <string name="bugreport_confirm" msgid="5130698467795669780">"ການລາຍງານຂໍ້ຜິດພາດປະກອບມີ ຂໍ້ມູນຈາກໄຟລ໌ບັນທຶກຂອງລະບົບຫຼາຍໄຟລ໌, ຮວມທັງຂໍ້ມູນສ່ວນໂຕນຳ. ທ່ານຕ້ອງແບ່ງປັນລາຍງານຂໍ້ຜິດພາດໃຫ້ແອັບຯ ແລະຄົນທີ່ທ່ານເຊື່ອຖືໄດ້ເທົ່ານັ້ນ."</string>
- <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ສະແດງຂໍ້ຄວາມນີ້ອີກໃນເທື່ອຕໍ່ໄປ"</string>
-</resources>
diff --git a/packages/Shell/res/values-mn-rMN/strings.xml b/packages/Shell/res/values-mn-rMN/strings.xml
deleted file mode 100644
index f74298d56739..000000000000
--- a/packages/Shell/res/values-mn-rMN/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="3701846017049540910">"Шел"</string>
- <string name="bugreport_finished_title" msgid="2293711546892863898">"Алдааны мэдээлэл хүлээн авав"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Та алдааны мэдэгдлийг хуваалцах бол хүрнэ үү"</string>
- <string name="bugreport_confirm" msgid="5130698467795669780">"Алдааны репорт нь хувийн болон нууц мэдээлэл зэргийг агуулсан системийн төрөл бүрийн лог файлын датаг агуулна. Алдааны репортыг зөвхөн итгэлтэй апп болон хүмүүст хуваалцана уу."</string>
- <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Энэ мессежийг дараагийн удаа харуулах"</string>
-</resources>
diff --git a/packages/Shell/res/values-ms-rMY/strings.xml b/packages/Shell/res/values-ms-rMY/strings.xml
deleted file mode 100644
index 8d1e4a228c66..000000000000
--- a/packages/Shell/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="3701846017049540910">"Shell"</string>
- <string name="bugreport_finished_title" msgid="2293711546892863898">"Laporan pepijat telah ditangkap"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Sentuh untuk berkongsi laporan pepijat anda"</string>
- <string name="bugreport_confirm" msgid="5130698467795669780">"Laporan pepijat mengandungi data dari pelbagai fail log sistem, termasuk maklumat peribadi dan sulit. Kongsikan laporan pepijat hanya dengan apl dan orang yang anda percayai."</string>
- <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Tunjukkan mesej ini pada masa akan datang"</string>
-</resources>
diff --git a/packages/Shell/res/values-zh-rHK/strings.xml b/packages/Shell/res/values-zh-rHK/strings.xml
deleted file mode 100644
index b5f19352ace7..000000000000
--- a/packages/Shell/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 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="3701846017049540910">"命令介面"</string>
- <string name="bugreport_finished_title" msgid="2293711546892863898">"已擷取錯誤報告"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"輕觸即可分享您的錯誤報告"</string>
- <string name="bugreport_confirm" msgid="5130698467795669780">"錯誤報告中有來自系統各個記錄檔案的資料,包括個人和私人資料。請只與您信任的應用程式和用戶分享錯誤報告。"</string>
- <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"下次再顯示這則訊息"</string>
-</resources>
diff --git a/packages/SystemUI/proguard.flags b/packages/SystemUI/proguard.flags
index ab45d99dc857..1ff93d29fb56 100644
--- a/packages/SystemUI/proguard.flags
+++ b/packages/SystemUI/proguard.flags
@@ -7,4 +7,5 @@
public void setGlowScale(float);
}
+-keep class com.android.systemui.statusbar.phone.PhoneStatusBar
-keep class com.android.systemui.statusbar.tv.TvStatusBar
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 3374d37ce4ff..9ddf42a0a4ac 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Laat altyd toe van hierdie rekenaar af"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoem om skerm te vul"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Strek om skerm te vul"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Versoenbaarheidszoem"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"As \'n program vir \'n kleiner skerm ontwerp is, sal \'n zoemkontrole naby die horlosie verskyn"</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Stoor tans skermkiekie..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Stoor tans skermkiekie..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Skermkiekie word tans gestoor."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Tuis"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Kieslys"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Onlangse programme"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Deursoek"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Kamera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Knoppie vir wissel van invoermetode."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Versoenbaarheid-zoem se knoppie."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zoem kleiner na groter skerm."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi gekoppel"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Soek vir GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Ligging deur GPS gestel"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Liggingversoeke aktief"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Verwyder alle kennisgewings."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Programinligting"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Die skerm sal outomaties draai."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Skerm is in landskapsoriëntasie gesluit."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Skerm is in portretoriëntasie gesluit."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Nageregkas"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Sluimer"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Vliegtuigmodus"</string>
@@ -183,8 +182,10 @@
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Outoroteer"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotasie gesluit"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"Invoermetode"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Ligging"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Ligging af"</string>
+ <!-- no translation found for quick_settings_location_label (5011327048748762257) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_off_label (7464544086507331459) -->
+ <skip />
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Mediatoestel"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Net noodoproepe"</string>
@@ -199,5 +200,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Draadlose aansig"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Helderheid"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"OUTO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Netwerk word\ndalk gemonitor"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Kennisgewings verskyn hier"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Verkry enige tyd toegang tot hulle deur af te sleep.\nSleep weer af vir stelselkontroles."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Sleep rand van skerm om balk te wys"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Sleep van rand van skerm af om stelselbalk te wys"</string>
</resources>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 164ec7de273f..1d81ea7ced8c 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"ሁልጊዜ ከዚህ ኮምፒውተር ፍቀድ"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"ማያ እንዲሞላ አጉላ"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"ማያ ለመሙለት ሳብ"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"የተኳኋኝነት አጉላ"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"ትግበራ ለትንሽ ማያ ሲነደፍ፣ የአጉላ መቆመጣጠሪያ በሰዓት በኩል ብቅ ይላል።"</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"ቅጽበታዊ ገጽ እይታ በማስቀመጥ ላይ..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"ቅጽበታዊ ገጽ እይታ በማስቀመጥ ላይ..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"ቅጽበታዊ ገጽ እይታ እየተቀመጠ ነው::"</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"መነሻ"</string>
<string name="accessibility_menu" msgid="316839303324695949">"ምናሌ"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"የቅርብ ጊዜ መተግበሪያዎች"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"ፈልግ"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"ካሜራ"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"የግቤት ስልት አዝራር ቀይር"</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"የተኳኋኝአጉላ አዝራር።"</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"አነስተኛውን ማያ ወደ ትልቅ አጉላ።"</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi ተያይዟል"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"ለGPS በመፈለግ ላይ"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"በ GPS የተዘጋጀ ሥፍራ"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"የአካባቢ ጥያቄዎች ነቅተዋል"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"ሁሉንም ማሳወቂያዎች አጽዳ"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"የመተግበሪያ መረጃ"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ማያ ገጽ በራስ ሰር ይዞራል።"</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"ማያ ገጽ በወርድ ገፅ አቀማመጥ ተቆልፏል።"</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"ማያ ገጽ በቁም ገፅ አቀማመጥ ተቆልፏል።"</string>
- <string name="dessert_case" msgid="1295161776223959221">"የማወራረጃ ምግቦች መያዣ"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"የቀን ህልም"</string>
<string name="ethernet_label" msgid="7967563676324087464">"ኤተርኔት"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"የአውሮፕላን ሁነታ"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"ገመድ አልባ ማሳያ"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"ብሩህነት"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"ራስ-ሰር"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"አውታረ መረብ\nክትትል ሊደረግበት ይችላል"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"ማሳወቂያዎች እዚህ ላይ ይታያሉ"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"ወደ ታች በማንሸራተት በማንኛውም ጊዜ ይድረሱባቸው።\nSwipe የስርዓት መቆጣጠሪያዎችን ለማምጣት እንደገና ወደ ታች ያንሸራትቱ።"</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"አሞሌውን ለማሳየት የማያ ገጹን ጠርዝ ላይ ያንሸራትቱ"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"አሞሌውን ለማሳየት ከማያ ገጹ ጠርዝ ጀምረው ያንሸራትቱ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 2ab8cbe82437..c31d6d977428 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -29,9 +29,9 @@
<item quantity="one" msgid="5854176083865845541">"تطبيق حديث واحد"</item>
<item quantity="other" msgid="1040784359794890744">"%d من التطبيقات الحديثة"</item>
</plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"ليس هناك أي اشعارات"</string>
+ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"ليس هناك أي تنبيهات"</string>
<string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"مستمر"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"الإشعارات"</string>
+ <string name="status_bar_latest_events_title" msgid="6594767438577593172">"التنبيهات"</string>
<string name="battery_low_title" msgid="2783104807551211639">"توصيل الشاحن"</string>
<string name="battery_low_subtitle" msgid="1752040062087829196">"انخفضت طاقة البطارية."</string>
<string name="battery_low_percent_format" msgid="1077244949318261761">"المتبقي: <xliff:g id="NUMBER">%d%%</xliff:g>"</string>
@@ -43,7 +43,7 @@
<string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"التدوير التلقائي للشاشة"</string>
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"كتم"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"تلقائي"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"الإشعارات"</string>
+ <string name="status_bar_settings_notifications" msgid="397146176280905137">"التنبيهات"</string>
<string name="bluetooth_tethered" msgid="7094101612161133267">"تم إنشاء الاتصال بالإنترنت عن طريق البلوتوث."</string>
<string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"إعداد أسلوب الإدخال"</string>
<string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"لوحة مفاتيح فعلية"</string>
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"السماح دائمًا من هذا الكمبيوتر"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"تكبير/تصغير لملء الشاشة"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"توسيع بملء الشاشة"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"تكبير/تصغير التوافق"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"عند تصميم تطبيق لشاشة أصغر، سيظهر عنصر تحكم في التكبير/التصغير بجوار الساعة."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"جارٍ حفظ لقطة الشاشة..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"جارٍ حفظ لقطة الشاشة..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"يتم حفظ لقطة."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"الرئيسية"</string>
<string name="accessibility_menu" msgid="316839303324695949">"القائمة"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"التطبيقات الحديثة"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"بحث"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"الكاميرا"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"زر تبديل طريقة الإدخال."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"زر تكبير/تصغير للتوافق."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"استخدام التكبير/التصغير لتحويل شاشة صغيرة إلى شاشة أكبر"</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi متصل"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"جارٍ البحث عن GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"تم تعيين الموقع بواسطة GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"طلبات الموقع نشطة"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"محو جميع الإشعارات."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"معلومات التطبيق"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"سيتم تدوير الشاشة تلقائيًا."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"تم تأمين الشاشة في الاتجاه الأفقي."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"تم تأمين الشاشة في الاتجاه العمودي."</string>
- <string name="dessert_case" msgid="1295161776223959221">"حالة الحلويات"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"حلم اليقظة"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"وضع الطائرة"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"عرض شاشة لاسلكي"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"السطوع"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"تلقائي"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"قد تكون الشبكة\nخاضعة للرقابة"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"تظهر الإشعارات هنا"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"يمكنك الدخول إليها في أي وقت بالتمرير السريع إلى أسفل.\nيمكنك التمرير السريع إلى أسفل مرة أخرى للوصول إلى عناصر تحكم النظام."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"مرر سريعًا لحافة الشاشة لإظهار الشريط"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"مرر سريعًا من حافة الشاشة لإظهار شريط النظام"</string>
</resources>
diff --git a/packages/SystemUI/res/values-az-rAZ-land/strings.xml b/packages/SystemUI/res/values-az-rAZ-land/strings.xml
deleted file mode 100644
index 8eb6978d00ba..000000000000
--- a/packages/SystemUI/res/values-az-rAZ-land/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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">"Hazırda ekran landşaft orientasiyasında kilidlənib."</string>
-</resources>
diff --git a/packages/SystemUI/res/values-az-rAZ/strings.xml b/packages/SystemUI/res/values-az-rAZ/strings.xml
deleted file mode 100644
index 9565eee33668..000000000000
--- a/packages/SystemUI/res/values-az-rAZ/strings.xml
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"Sistemin İstifadə İnterfeysi"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"Təmizlə"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Siyahıdan sil"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"Tətbiq infosu"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Yeni tətbiq yoxdur"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Son tətbiqləri kənarlaşdır"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"1 son tətbiq"</item>
- <item quantity="other" msgid="1040784359794890744">"%d son tətbiq"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Bildiriş yoxdu"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Davam edir"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Bildirişlər"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"Adapteri qoşun"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"Batareya azalır."</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> qalıb"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"USB ilə elektrik doldurma dəstəklənmir.\nYalnız adapter istifadə edin."</string>
- <string name="battery_low_why" msgid="7279169609518386372">"Batareya istifadəsi"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Ayarlar"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"Təyyarə rejimi"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Ekranın avto-dönüşü"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"SUSDUR"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AVTO"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"Bildirişlər"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth tezerinq"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Daxiletmə metodlarını ayarlayın"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"Fiziki klaviatura"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"<xliff:g id="APPLICATION">%1$s</xliff:g> tətbiqinə USB cihazına daxil olmağa icazə verilsin?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"<xliff:g id="APPLICATION">%1$s</xliff:g> tətbiqinə USB aksesuarına qoşulmağa icazə verirsiniz?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"USB cihaz qoşulu olan zaman <xliff:g id="ACTIVITY">%1$s</xliff:g> açılsın mı?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"USB aksesuar qoşulu olan zaman <xliff:g id="ACTIVITY">%1$s</xliff:g> açılsın mı?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"Heç bir quraşdırılmış tətbiq bu USB aksesuar ilə işləmir. Bu aksesuar haqqında daha ətraflı məlumatı <xliff:g id="URL">%1$s</xliff:g> adresindən öyrənin"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"USB aksesuar"</string>
- <string name="label_view" msgid="6304565553218192990">"Göstər"</string>
- <string name="always_use_device" msgid="1450287437017315906">"Bu USB cihaz üçün defolt olaraq istifadə edin."</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"Bu USB aksesuar üçün defolt istifadə edin"</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"USB sazlamaya icazə verilsin?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"Kompüterin RSA barmaq izi: \n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"Bu kompüterdən həmişə icazə verilsin"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"Ekranı doldurmaq üçün yaxınlaşdır"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"Ekranı doldurmaq üçün uzat"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Skrinşot yadda saxlanılır..."</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"Skrinşot yadda saxlanır..."</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"Skrinşot yadda saxlanır."</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"Skrinşot çəkildi."</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"Skrinşotunuza baxmaq üçün toxunun"</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"Skrinşot götürülə bilinmədi."</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"Skrinşotu yadda saxlamaq alınmadı, yəqin yaddaş istifadə olunur."</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB fayl transferi seçimləri"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"Media pleyer (MTP) kimi montaj edin"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"Kamera kimi birləşdir (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"Mac üçün Android File Transfer tətbiqini quraşdırın"</string>
- <string name="accessibility_back" msgid="567011538994429120">"Geri"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"Ana səhifə"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"Menyu"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"Son tətbiqlər"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Daxiletmə metodu düyməsinə keç"</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Uyğunluq zoom düyməsi."</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Daha böyük ekranda uzaqlaşdır."</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"Bluetooth qoşulub."</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"Bluetooth əlaqəsi kəsildi."</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"Batareya yoxdur."</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"Batareya bir xətdir."</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"Batareya iki xətdir."</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"Batareya üç xətdir."</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"Batareya doludur"</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"Telefon yoxdur."</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"Şəbəkə bir xətdir."</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"Şəbəkə iki xətdir."</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"Şəbəkə üç xətdir."</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"Tam şəbəkə."</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"Məlumat yoxdur."</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"Data bir xətdir."</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Data iki xətdir."</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Data üç xətdir."</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Data siqnalı tamdır."</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"Wifi sönülüdür."</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"Wifi bağlantı kəsildi."</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"Wifi bir xətdir."</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"Wifi iki xətdir."</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"Wifi üç xətdir."</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"Wifi siqnalı tamdır."</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX yoxdur."</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX bir xətt."</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX iki xətdir."</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX üç xətdir."</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX siqnalı tamdır."</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"Siqnal yoxdur."</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"Qoşulu deyil."</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"Sıfır xətt."</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"Bir xətt."</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"İki xətt."</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"Üç xətdir."</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"Siqnal tamdır."</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"Aktiv."</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"Deaktiv"</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"Qoşuludur."</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Rouminq"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM yoxdur"</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth tezering."</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"Uçuş rejimi"</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"Batareya <xliff:g id="NUMBER">%d</xliff:g> faizdir."</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"Sistem parametrləri"</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"Bildirişlər."</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"Bildirişi təmizlə."</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS aktivdir."</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"GPS əldə edilir."</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"TeleTypewriter aktivləşdirilib."</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"Zəng vibrasiyası"</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"Zəngvuran səssiz."</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g> çıxarıldı."</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"Bildiriş uzaqlaşdırıldı."</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"Bildiriş kölgəsi."</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"Tez ayarlar."</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"Axırıncı tətbiqlər."</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"İstifadəçi <xliff:g id="USER">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"Mobil <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"Batareya <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"Təyyarə Rejimi <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Alarm <xliff:g id="TIME">%s</xliff:g> üçün qurulub."</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G data qeyri-aktivdir"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G data deaktiv edildi"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobil data qeyri-aktivdir"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Data qeyri-aktivdir"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Göstərilmiş data istifadə limitinə çatdınız.\n\nƏgər datanı yenidən aktivləşdirsəniz, operator tərəfindən əlavə tariflər tətbiq oluna bilər."</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Datanı yenidən aktiv et"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"İnternet bağlantısı yoxdur"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi qoşulub"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS Axtarışı"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"Yer GPS tərəfindən müəyyən edildi"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Məkan sorğuları arxivi"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"Bütün bildirişləri sil."</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Tətbiq infosu"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran avtomatik döndəriləcək."</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Ekran landşaft orientasiyasında kilidlənib."</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ekran portret orientasiyasında kilidlənib."</string>
- <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
- <string name="start_dreams" msgid="7219575858348719790">"Xəyal"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Uçuş rejimi"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Dolur, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Dolub"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> Cihaz)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth bağlıdır"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Parlaqlıq"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Avtofırlanma"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Fırlatma kilidlidir"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"Daxiletmə metodu"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Yer"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Yer Deaktiv"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"Media cihazı"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Yalnız fövqəladə zənglər"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"Nizamlar"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"Vaxt"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"Mən"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Bağlantı yoxdur"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Şəbəkə yoxdur"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi sönülüdür"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi Ekran"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Simsiz Ekran"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Parlaqlıq"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AVTO"</string>
- <string name="ssl_ca_cert_warning" msgid="5848402127455021714">"Şəbəkə monitor edilə bilər"</string>
- <string name="done_button" msgid="1759387181766603361">"Hazırdır"</string>
- <string name="ssl_ca_cert_dialog_title" msgid="1273796967092027291">"Şəbəkə Monitorinqi"</string>
- <string name="ssl_ca_cert_info_message" msgid="5430320539555358452">"Bu cihaz <xliff:g id="MANAGING_DOMAIN">%s</xliff:g> tərəfindən idarə edilir . \n \n Sizin administrator şəbəkə fəaliyyətinizin, həmçinin e-poçt, tətbiqlər və təhlükəsiz veb saytlarınızın monitorinqini etməyə qadirdir. \n \n Ətraflı məlumat üçün administrator ilə əlaqə saxlayın."</string>
- <string name="ssl_ca_cert_warning_message" msgid="2033091656129963669">"Üçüncü tərəf \n şəbəkə fəaliyyətinizin, həmçinin e-poçt, tətbiqlər və təhlükəsiz veb saytlarınızın monitorinqini etməyə qadirdir. . \n \nCihanzınıza yüklənmiş etibarlı etimad bunu mümkün edir."</string>
- <string name="ssl_ca_cert_settings_button" msgid="7946956977377166709">"Etibarlı etimadları yoxlayın"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
deleted file mode 100644
index cb48aa0f4ea5..000000000000
--- a/packages/SystemUI/res/values-az/strings.xml
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"Sistemin İstifadə İnterfeysi"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"Təmizlə"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Siyahıdan sil"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"Tətbiq infosu"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Yeni tətbiq yoxdur"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Son tətbiqləri kənarlaşdır"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"1 son tətbiq"</item>
- <item quantity="other" msgid="1040784359794890744">"%d son tətbiq"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Bildiriş yoxdu"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Davam edir"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Bildirişlər"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"Adapteri qoşun"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"Batareya azalır."</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> qalıb"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"USB ilə elektrik doldurma dəstəklənmir.\nYalnız adapter istifadə edin."</string>
- <string name="battery_low_why" msgid="7279169609518386372">"Batareya istifadəsi"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Ayarlar"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"Təyyarə rejimi"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Ekranın avto-dönüşü"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"SUSDUR"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AVTO"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"Bildirişlər"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth tezerinq"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Daxiletmə metodlarını ayarlayın"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"Fiziki klaviatura"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"<xliff:g id="APPLICATION">%1$s</xliff:g> tətbiqinə USB cihazına daxil olmağa icazə verilsin?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"<xliff:g id="APPLICATION">%1$s</xliff:g> tətbiqinə USB aksesuarına qoşulmağa icazə verirsiniz?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"USB cihaz qoşulu olan zaman <xliff:g id="ACTIVITY">%1$s</xliff:g> açılsın mı?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"USB aksesuar qoşulu olan zaman <xliff:g id="ACTIVITY">%1$s</xliff:g> açılsın mı?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"Heç bir quraşdırılmış tətbiq bu USB aksesuar ilə işləmir. Bu aksesuar haqqında daha ətraflı məlumatı <xliff:g id="URL">%1$s</xliff:g> adresindən öyrənin"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"USB aksesuar"</string>
- <string name="label_view" msgid="6304565553218192990">"Göstər"</string>
- <string name="always_use_device" msgid="1450287437017315906">"Bu USB cihaz üçün defolt olaraq istifadə edin."</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"Bu USB aksesuar üçün defolt istifadə edin"</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"USB sazlamaya icazə verilsin?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"Kompüterin RSA barmaq izi: \n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"Bu kompüterdən həmişə icazə verilsin"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"Ekranı doldurmaq üçün yaxınlaşdır"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"Ekranı doldurmaq üçün uzat"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Skrinşot yadda saxlanılır..."</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"Skrinşot yadda saxlanır..."</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"Skrinşot yadda saxlanır."</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"Skrinşot çəkildi."</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"Skrinşotunuza baxmaq üçün toxunun"</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"Skrinşot götürülə bilinmədi."</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"Skrinşotu yadda saxlamaq alınmadı, yəqin yaddaş istifadə olunur."</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB fayl transferi seçimləri"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"Media pleyer (MTP) kimi montaj edin"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"Kamera kimi birləşdir (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"Mac üçün Android File Transfer tətbiqini quraşdırın"</string>
- <string name="accessibility_back" msgid="567011538994429120">"Geri"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"Ana səhifə"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"Menyu"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"Son tətbiqlər"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Daxiletmə metodu düyməsinə keç"</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Uyğunluq zoom düyməsi."</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Daha böyük ekranda uzaqlaşdır."</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"Bluetooth qoşulub."</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"Bluetooth əlaqəsi kəsildi."</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"Batareya yoxdur."</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"Batareya bir xətdir."</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"Batareya iki xətdir."</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"Batareya üç xətdir."</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"Batareya doludur"</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"Telefon yoxdur."</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"Şəbəkə bir xətdir."</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"Şəbəkə iki xətdir."</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"Şəbəkə üç xətdir."</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"Tam şəbəkə."</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"Məlumat yoxdur."</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"Data bir xətdir."</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Data iki xətdir."</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Data üç xətdir."</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Data siqnalı tamdır."</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"Wifi sönülüdür."</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"Wifi bağlantı kəsildi."</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"Wifi bir xətdir."</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"Wifi iki xətdir."</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"Wifi üç xətdir."</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"Wifi siqnalı tamdır."</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX yoxdur."</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX bir xətt."</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX iki xətdir."</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX üç xətdir."</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX siqnalı tamdır."</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"Siqnal yoxdur."</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"Qoşulu deyil."</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"Sıfır xətt."</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"Bir xətt."</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"İki xətt."</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"Üç xətdir."</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"Siqnal tamdır."</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"Aktiv."</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"Deaktiv"</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"Qoşuludur."</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Rouminq"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM yoxdur"</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth tezering."</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"Uçuş rejimi"</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"Batareya <xliff:g id="NUMBER">%d</xliff:g> faizdir."</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"Sistem parametrləri"</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"Bildirişlər."</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"Bildirişi təmizlə."</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS aktivdir."</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"GPS əldə edilir."</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"TeleTypewriter aktivləşdirilib."</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"Zəng vibrasiyası"</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"Zəngvuran səssiz."</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g> çıxarıldı."</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"Bildiriş uzaqlaşdırıldı."</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"Bildiriş kölgəsi."</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"Tez ayarlar."</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"Axırıncı tətbiqlər."</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"İstifadəçi <xliff:g id="USER">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"Mobil <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"Batareya <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"Təyyarə Rejimi <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Alarm <xliff:g id="TIME">%s</xliff:g> üçün qurulub."</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G data qeyri-aktivdir"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G data deaktiv edildi"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobil data qeyri-aktivdir"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Data qeyri-aktivdir"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Göstərilmiş data istifadə limitinə çatdınız.\n\nƏgər datanı yenidən aktivləşdirsəniz, operator tərəfindən əlavə tariflər tətbiq oluna bilər."</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Datanı yenidən aktiv et"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"İnternet bağlantısı yoxdur"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi qoşulub"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS Axtarışı"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"Yer GPS tərəfindən müəyyən edildi"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Məkan sorğuları arxivi"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"Bütün bildirişləri sil."</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Tətbiq infosu"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran avtomatik döndəriləcək."</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Ekran landşaft orientasiyasında kilidlənib."</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ekran portret orientasiyasında kilidlənib."</string>
- <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
- <string name="start_dreams" msgid="7219575858348719790">"Xəyal"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Uçuş rejimi"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Dolur, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Dolub"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> Cihaz)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth bağlıdır"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Parlaqlıq"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Avtofırlanma"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Fırlatma kilidlidir"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"Daxiletmə metodu"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Yer"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Yer Deaktiv"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"Media cihazı"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Yalnız fövqəladə zənglər"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"Nizamlar"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"Vaxt"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"Mən"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Bağlantı yoxdur"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Şəbəkə yoxdur"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi sönülüdür"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi Ekran"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Simsiz Ekran"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Parlaqlıq"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AVTO"</string>
- <string name="status_bar_help_title" msgid="1199237744086469217">"Bildirişlər burada görünür"</string>
- <string name="status_bar_help_text" msgid="7874607155052076323">"Aşağı sürüşdürməklə istənilən vaxt onları əldə edin.\nSistemi nəzarəti üçün yenə də aşağı sürüşdürün."</string>
- <string name="ssl_ca_cert_warning" msgid="5848402127455021714">"Şəbəkə monitor edilə bilər"</string>
- <string name="done_button" msgid="1759387181766603361">"Hazırdır"</string>
- <string name="ssl_ca_cert_dialog_title" msgid="1273796967092027291">"Şəbəkə Monitorinqi"</string>
- <string name="ssl_ca_cert_info_message" msgid="5430320539555358452">"Bu cihaz <xliff:g id="MANAGING_DOMAIN">%s</xliff:g> tərəfindən idarə edilir . \n \n Sizin administrator şəbəkə fəaliyyətinizin, həmçinin e-poçt, tətbiqlər və təhlükəsiz veb saytlarınızın monitorinqini etməyə qadirdir. \n \n Ətraflı məlumat üçün administrator ilə əlaqə saxlayın."</string>
- <string name="ssl_ca_cert_warning_message" msgid="2033091656129963669">"Üçüncü tərəf \n şəbəkə fəaliyyətinizin, həmçinin e-poçt, tətbiqlər və təhlükəsiz veb saytlarınızın monitorinqini etməyə qadirdir. . \n \nCihanzınıza yüklənmiş etibarlı etimad bunu mümkün edir."</string>
- <string name="ssl_ca_cert_settings_button" msgid="7946956977377166709">"Etibarlı etimadları yoxlayın"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index bb8e1d20e221..6608b7906e8f 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Заўсёды дазваляць з гэтага камп\'ютара"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Павял. на ўвесь экран"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Расцягн. на ўвесь экран"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Маштабаванне для сумяшчальнасцi"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Калі прыкладанне распрацаванае для невялікіх экранаў, каля гадзінніка з\'явіцца кіраванне маштабаваннем."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Захаванне скрыншота..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Захаванне скрыншота..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Скрыншот захаваны."</string>
@@ -76,10 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"На Галоўную старонку"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Меню"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Нядаўнія прыкладанні"</string>
- <!-- no translation found for accessibility_search_light (1103867596330271848) -->
- <skip />
- <!-- no translation found for accessibility_camera_button (8064671582820358152) -->
- <skip />
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Кнопка пераключэння метаду ўводу."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Кнопка сумяшчальнасці маштаба."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Маштабаванне малых элементаў для большага экрана."</string>
@@ -168,15 +166,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi падключаны"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Пошук GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Месца задана праз GPS"</string>
- <!-- no translation found for accessibility_location_active (2427290146138169014) -->
- <skip />
<string name="accessibility_clear_all" msgid="5235938559247164925">"Выдалiць усе апавяшчэннi."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Інфармацыя пра прыкладанне"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Экран паварочваецца аўтаматычна."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Экран заблакiраваны ў альбомнай арыентацыі."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Экран заблакiраваны ў партрэтнай арыентацыі."</string>
- <!-- no translation found for dessert_case (1295161776223959221) -->
- <skip />
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Мроi"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Рэжым палёту"</string>
@@ -207,6 +202,10 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Бесправадны дысплей"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Яркасць"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"АЎТА"</string>
- <!-- no translation found for ssl_ca_cert_warning (9005954106902053641) -->
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Апавяшчэнні з\'яўляюцца тут"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Атрымлівайце доступ да іх у любы час, праводзячы пальцам уніз.\nПравядзіце пальцам уніз яшчэ раз, каб атрымаць доступ да сродкаў кіравання сістэмай."</string>
+ <!-- no translation found for hideybar_confirmation_message (9050869548951044371) -->
+ <skip />
+ <!-- no translation found for hideybar_confirmation_message_long (7117692795163620626) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index b951aa8d90f7..6194fd83b859 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Винаги да се разрешава от този компютър"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Мащаб – запълва екрана"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Разпъване – запълва екрана"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Промяна на мащаба за съвместимост"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Когато дадено приложение е създадено за по-малък екран, до часовника ще се покаже управление за промяна на мащаба."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Екранната снимка се запазва..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Екранната снимка се запазва..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Екранната снимка се запазва."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Начало"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Меню"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Скорошни приложения"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Търсене"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Камера"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Бутон за превключване на метода на въвеждане."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Бутон за промяна на мащаба с цел съвместимост."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Промяна на мащаба на екрана от по-малък до по-голям."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi: Има връзка"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Търси се GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Местоположението е зададено от GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Активни заявки за местоположение"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Изчистване на всички известия."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Информация за приложението"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Екранът ще се завърта автоматично."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Екранът е заключен в хоризонтална ориентация."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Екранът е заключен във вертикална ориентация."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Витрина с десерти"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Мечта"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Самолетен режим"</string>
@@ -183,8 +182,10 @@
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Автоматична ориентация"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Ориентацията е заключена"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"Метод на въвеждане"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Местоположение"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Местоположението е изключено"</string>
+ <!-- no translation found for quick_settings_location_label (5011327048748762257) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_off_label (7464544086507331459) -->
+ <skip />
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Мултимедийно устройство"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"Индикатор за силата на получения сигнал (RSSI)"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Само спешни обаждания"</string>
@@ -199,5 +200,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Безжичен дисплей"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Яркост"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"АВТ."</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Мрежата може\nда се наблюдава"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Известията се показват тук"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Осъществявайте достъп до тях по всяко време, като прекарате пръст надолу.\nНаправете го отново за системните контроли."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Прекарайте пръст по ръба на екрана, за да се покаже лентата"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Прекарайте пръст от ръба на екрана, за да се покаже системната лента"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 9bf8de8971f0..eddeda3ace6e 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Dóna sempre permís des d\'aquest equip"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom per omplir pantalla"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Estira per omplir pant."</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom de compatibilitat"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Quan una aplicació s\'hagi dissenyat per a una pantalla més petita, apareixerà un control de zoom al costat del rellotge."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Desant captura de pantalla..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"S\'està desant la captura de pantalla..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"La captura de pantalla s\'ha desat."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Pàgina d\'inici"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menú"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Aplicacions recents"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Cerca"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Càmera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Botó de canvi del mètode d\'entrada."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Botó de zoom de compatibilitat."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Amplia menys com més gran sigui la pantalla."</string>
@@ -166,13 +166,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi: connectada"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"S\'està cercant un GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"S\'ha establert la ubicació per GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Sol·licituds d\'ubicació actives"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Esborra totes les notificacions."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informació de l\'aplicació"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"La pantalla girarà automàticament."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"La pantalla està bloquejada en orientació horitzontal."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"La pantalla està bloquejada en orientació vertical."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Capsa de postres"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Estalvi de pantalla"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Mode d\'avió"</string>
@@ -201,5 +200,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Pantalla sense fil"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Brillantor"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMÀTICA"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"És possible que la xarxa\nestigui controlada"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Les notificacions apareixen aquí"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Accedeix-hi en qualsevol moment: només has de fer lliscar el dit cap avall.\nTorna a fer lliscar el dit cap avall per fer que es mostrin els controls del sistema."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Fes lliscar el dit per la vora de la pantalla perquè es mostri la barra"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Fes lliscar el dit des de la vora de la pantalla perquè es mostri la barra del sistema"</string>
</resources>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index e97597971c4d..87ba67aa928e 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Vždy povolit z tohoto počítače"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Přiblížit na celou obrazovku"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Na celou obrazovku"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Úprava velikosti z důvodu kompatibility"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Pokud je aplikace navržena pro menší obrazovku, zobrazí se vedle hodin ovládací prvek přiblížení."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Ukládání snímku obrazovky..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Ukládání snímku obrazovky..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Probíhá ukládání snímku obrazovky."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Domů"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menu"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Nové aplikace"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Hledat"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Fotoaparát"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Tlačítko přepnutí metody zadávání"</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Tlačítko úpravy velikosti z důvodu kompatibility"</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zvětšit menší obrázek na větší obrazovku."</string>
@@ -166,13 +166,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi: připojeno"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Vyhledávání satelitů GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Poloha nastavena pomocí systému GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Aktivní žádosti o polohu"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Vymazat všechna oznámení."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informace o aplikaci"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Obrazovka se automaticky otočí."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Obrazovka je uzamčena v orientaci na šířku."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Obrazovka je uzamčena v orientaci na výšku."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Pult se sladkostmi"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Spořič obrazovky"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Režim V letadle"</string>
@@ -185,8 +184,10 @@
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Automatické otáčení"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Otáčení je uzamčeno"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"Metoda zadávání dat"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Poloha"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Poloha vypnuta"</string>
+ <!-- no translation found for quick_settings_location_label (5011327048748762257) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_off_label (7464544086507331459) -->
+ <skip />
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Mediální zařízení"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Pouze tísňová volání"</string>
@@ -201,5 +202,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Bezdrátový displej"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Jas"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMATICKY"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Síť může být\nmonitorována"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Zde se zobrazují oznámení"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Můžete je kdykoli zobrazit tím, že přejedete prstem dolů.\nPřejedete-li prstem dolů ještě jednou, zobrazí se ovládací prvky systému."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Panel zobrazíte přejetím přes okraj obrazovky"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Systémový panel zobrazíte přejetím přes okraj obrazovky"</string>
</resources>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 25c5baa00b20..af4bb336e472 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -44,7 +44,7 @@
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"LYDLØS"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"Underretninger"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"Netdeling via Bluetooth anvendt"</string>
+ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth-tethering anvendt"</string>
<string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Konfigurer inputmetoder"</string>
<string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"Fysisk tastatur"</string>
<string name="usb_device_permission_prompt" msgid="834698001271562057">"Tillad, at appen <xliff:g id="APPLICATION">%1$s</xliff:g> kan få adgang til USB-enheden?"</string>
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Tillad altid fra denne computer"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom til fuld skærm"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Stræk til fuld skærm"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Kompatibilitetszoom"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Når en app er udviklet til en mindre skærm, vises der en zoomfunktion ved uret."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Gemmer skærmbillede..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Gemmer skærmbillede..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Skærmbilledet gemmes."</string>
@@ -73,11 +75,9 @@
<string name="use_ptp_button_title" msgid="7517127540301625751">"Isæt som et kamera (PTP)"</string>
<string name="installer_cd_button_title" msgid="2312667578562201583">"Installer appen Android Filoverførsel til Mac"</string>
<string name="accessibility_back" msgid="567011538994429120">"Tilbage"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"Startskærm"</string>
+ <string name="accessibility_home" msgid="8217216074895377641">"Startside"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menu"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Seneste apps"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Søg"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Kamera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Skift indtastningsmetode-knappen."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Knap for kompatibilitetszoom."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zoom mindre til større skærm."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi er forbundet"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Søger efter GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Placeringen er angivet ved hjælp af GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Aktive placeringsanmodninger"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ryd alle meddelelser."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Oplysninger om appen"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skærmen roterer automatisk."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Skærmen er nu låst i liggende retning."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Skærmen er nu låst i stående retning."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Dessertcase"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Dagdrøm"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Flytilstand"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Trådløs skærm"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Lysstyrke"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Netværket kan\nvære overvåget"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Underretninger vises her"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Få adgang til dem når som helst ved at stryge ned.\nStryg ned igen for at komme til systemindstillingerne."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Stryg kanten af skærmen for at se bjælken"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Stryg fra skærmens kant for at se systembjælken"</string>
</resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index cc31df482f62..ec52ede74ed8 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Von diesem Computer immer zulassen"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom auf Bildschirmgröße"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Auf Bildschirmgröße anpassen"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Kompatibilitätszoom"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Wenn eine App für einen kleineren Bildschirm ausgelegt ist, wird ein Zoom-Steuerelement neben der Uhr angezeigt."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Screenshot wird gespeichert..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Screenshot wird gespeichert..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Screenshot wird gespeichert..."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Startbildschirm"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menü"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Kürzlich geöffnete Apps"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Suchen"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Kamera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Schaltfläche zum Ändern der Eingabemethode"</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Schaltfläche für Kompatibilitätszoom"</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zoom auf einen größeren Bildschirm"</string>
@@ -166,13 +166,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"WLAN verbunden"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS wird gesucht"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Standort durch GPS festgelegt"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Standortanfragen aktiv"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Alle Benachrichtigungen löschen"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App-Details"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Bildschirm wird automatisch gedreht."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Bildschirm bleibt im Querformat."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Bildschirm bleibt im Hochformat."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Dessertbehälter"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Flugmodus"</string>
@@ -185,8 +184,10 @@
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Autom. drehen"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Drehung gesperrt"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"Eingabemethode"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Standort"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Standort aus"</string>
+ <!-- no translation found for quick_settings_location_label (5011327048748762257) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_off_label (7464544086507331459) -->
+ <skip />
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Mediengerät"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Nur Notrufe"</string>
@@ -201,5 +202,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Kabellose Übertragung (WiDi)"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Helligkeit"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Netzwerk wird\neventuell überwacht."</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Benachrichtigungen erscheinen hier"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Greifen Sie jederzeit auf sie zu, indem Sie nach unten wischen.\nWischen Sie für Systemeinstellungen erneut nach unten."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Zum Einblenden der Leiste vom Rand wischen"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Zum Einblenden der Systemleiste vom Display-Rand weg wischen"</string>
</resources>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 37fa35939881..ab43081a1679 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Να επιτρέπεται πάντα από αυτόν τον υπολογιστή"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Ζουμ σε πλήρη οθόνη"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Προβoλή σε πλήρη οθ."</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Ζουμ για συμβατότητα"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Όταν μια εφαρμογή έχει σχεδιαστεί για προβολή σε μικρότερη οθόνη, δίπλα από το ρολόι θα εμφανιστεί ένα στοιχείο ελέγχου ζουμ."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Αποθήκ. στιγμιότυπου οθόνης..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Αποθήκευση στιγμιότυπου οθόνης..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Γίνεται αποθήκευση του στιγμιότυπου οθόνης."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Αρχική σελίδα"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Μενού"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Πρόσφατες εφαρμογές"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Αναζήτηση"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Φωτογραφική μηχανή"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Κουμπί εναλλαγής μεθόδου εισόδου"</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Κουμπί εστίασης συμβατότητας."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Ζουμ από μικρότερη σε μεγαλύτερη οθόνη."</string>
@@ -166,13 +166,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi συνδεδεμένο"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Αναζήτηση για GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Ρύθμιση τοποθεσίας με GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Τα αιτήματα τοποθεσίας έχουν ενεργοποιηθεί"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Εκκαθάριση όλων των ειδοποιήσεων."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Πληροφορίες εφαρμογής"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Θα γίνεται αυτόματη περιστροφή της οθόνης."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Η οθόνη έχει κλειδωθεί σε οριζόντιο προσανατολισμό."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Η οθόνη έχει κλειδωθεί σε κατακόρυφο προσανατολισμό."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Επιδόρπιο"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Λειτουργία πτήσης"</string>
@@ -201,5 +200,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Ασύρματη οθόνη"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Φωτεινότητα"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"ΑΥΤΟΜΑΤΗ"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Το δίκτυο μπορεί\nνα παρακολουθείται"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Οι ειδοποιήσεις εμφανίζονται εδώ"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Μεταβείτε σε αυτές ανά πάσα στιγμή σύροντας προς τα κάτω.\nΣύρετε ξανά προς τα κάτω για τα στοιχεία ελέγχου συστήματος."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Σύρετε από την άκρη της οθόνης για να εμφανίσετε τη γραμμή"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Σύρετε από την άκρη της οθόνης για να εμφανίσετε τη γραμμή συστήματος"</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index fb32af1ee06b..6027553f4091 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Always allow from this computer"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom to fill screen"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Stretch to fill screen"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Compatibility zoom"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"When an app was designed for a smaller screen, a zoom control will appear by the clock."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Saving screenshot…"</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Saving screenshot…"</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Screenshot is being saved."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Home"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menu"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Recent apps"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Search"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Camera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Switch input method button."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Compatibility zoom button."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zoom smaller to larger screen."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi connected"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Searching for GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Location set by GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Location requests active"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Clear all notifications."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App info"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Screen will rotate automatically."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Screen is locked in landscape orientation."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Screen is locked in portrait orientation."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Dessert Case"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Aeroplane mode"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Wireless Display"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Brightness"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Network may\nbe monitored"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Notifications appear here"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Access them any time by swiping down.\nSwipe down again for system controls."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Swipe edge of screen to reveal bar"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Swipe from edge of screen to reveal system bar"</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rIN-land/strings.xml b/packages/SystemUI/res/values-en-rIN-land/strings.xml
deleted file mode 100644
index ba773b8f8b13..000000000000
--- a/packages/SystemUI/res/values-en-rIN-land/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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">"Screen is now locked in landscape orientation."</string>
-</resources>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
deleted file mode 100644
index fb32af1ee06b..000000000000
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,203 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"System UI"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"Clear"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Remove from list"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"App info"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"No recent apps"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Dismiss recent apps"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"1 recent app"</item>
- <item quantity="other" msgid="1040784359794890744">"%d recent apps"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"No notifications"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Ongoing"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Notifications"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"Connect charger"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"The battery is getting low."</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> remaining"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"USB charging not supported.\nUse only the supplied charger."</string>
- <string name="battery_low_why" msgid="7279169609518386372">"Battery use"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Settings"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"Aeroplane mode"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Auto-rotate screen"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"MUTE"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"Notifications"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth tethered"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Set up input methods"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"Physical keyboard"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"Allow the app <xliff:g id="APPLICATION">%1$s</xliff:g> to access the USB device?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"Allow the app <xliff:g id="APPLICATION">%1$s</xliff:g> to access the USB accessory?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Open <xliff:g id="ACTIVITY">%1$s</xliff:g> when this USB device is connected?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Open <xliff:g id="ACTIVITY">%1$s</xliff:g> when this USB accessory is connected?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"No installed apps work with this USB accessory. Learn more about this accessory at <xliff:g id="URL">%1$s</xliff:g>"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"USB accessory"</string>
- <string name="label_view" msgid="6304565553218192990">"View"</string>
- <string name="always_use_device" msgid="1450287437017315906">"Use by default for this USB device"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"Use by default for this USB accessory"</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"Allow USB debugging?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"The computer\'s RSA key fingerprint is:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"Always allow from this computer"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"Zoom to fill screen"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"Stretch to fill screen"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Saving screenshot…"</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"Saving screenshot…"</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"Screenshot is being saved."</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"Screenshot captured."</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"Touch to view your screenshot."</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"Couldn\'t capture screenshot."</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"Couldn\'t save screenshot. Storage may be in use."</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB file transfer options"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"Mount as a media player (MTP)"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"Mount as a camera (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"Install Android File Transfer application for Mac"</string>
- <string name="accessibility_back" msgid="567011538994429120">"Back"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"Home"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"Menu"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"Recent apps"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Search"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Camera"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Switch input method button."</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Compatibility zoom button."</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zoom smaller to larger screen."</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"Bluetooth connected."</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"Bluetooth disconnected."</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"No battery."</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"Battery one bar."</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"Battery two bars."</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"Battery three bars."</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"Battery full."</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"No phone."</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"Phone one bar."</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"Phone two bars."</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"Phone three bars."</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"Phone signal full."</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"No data."</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"Data one bar."</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Data two bars."</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Data three bars."</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Data signal full."</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"Wi-Fi off."</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"Wi-Fi disconnected."</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"Wi-Fi one bar."</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"Wi-Fi two bars."</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"Wi-Fi three bars."</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"Wi-Fi signal full."</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"No WiMAX."</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX one bar."</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX two bars."</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX three bars."</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX signal full."</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"No signal."</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"Not connected."</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"Zero bars."</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"One bar."</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"Two bars."</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"Three bars."</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"Signal full."</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"On."</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"Off."</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"Connected."</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"No SIM."</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth tethering"</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"Aeroplane mode"</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"Battery <xliff:g id="NUMBER">%d</xliff:g> per cent."</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"System settings"</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"Notifications."</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"Clear notification."</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS enabled."</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"GPS acquiring."</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"TeleTypewriter enabled."</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"Ringer vibrate."</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"Ringer silent."</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g> dismissed."</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"Notification dismissed."</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"Notification shade."</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"Quick settings."</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"Recent apps"</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"User <xliff:g id="USER">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"Mobile <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"Battery <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"Aeroplane Mode <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Alarm set for <xliff:g id="TIME">%s</xliff:g>."</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G data disabled"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G data disabled"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobile data disabled"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Data disabled"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"You\'ve reached the specified data usage limit.\n\nIf you re-enable data, you may be charged by the operator."</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Reenable data"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"No Internet connection"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi connected"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"Searching for GPS"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"Location set by GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Location requests active"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"Clear all notifications."</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App info"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Screen will rotate automatically."</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Screen is locked in landscape orientation."</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Screen is locked in portrait orientation."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Dessert Case"</string>
- <string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Aeroplane mode"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Charging, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Charged"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> Devices)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth Off"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brightness"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Auto Rotate"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotation Locked"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"Input Method"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Location"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Location Off"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"Media device"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Emergency Calls Only"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"Settings"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"Time"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"Me"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Not Connected"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"No Network"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi Off"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi Display"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Wireless Display"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Brightness"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Network may\nbe monitored"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 54ad4550ccae..62f6c20c6f9c 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Permitir siempre desde esta computadora"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom para ocupar la pantalla"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Estirar p/ ocupar la pantalla"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom de compatibilidad"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Cuando una aplicación fue diseñada para una pantalla más pequeña, aparece un control de zoom junto al reloj."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Guardando captura de pantalla"</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Guardando la captura de pantalla..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"La captura de pantalla se está guardando."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Página principal"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menú"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Aplicaciones recientes"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Buscar"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Cámara"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Botón Cambiar método de entrada"</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Botón de zoom de compatibilidad"</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zoom de pantalla más pequeña a más grande"</string>
@@ -166,13 +166,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi conectado"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Buscando GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"La ubicación se estableció por GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Solicitudes de ubicación activas"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Eliminar todas las notificaciones"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Información de la aplicación"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"La pantalla girará automáticamente."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"La pantalla está bloqueada en modo horizontal."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"La pantalla está bloqueada en modo vertical."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Caja para postres"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Activar protector"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Modo avión"</string>
@@ -185,8 +184,10 @@
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Girar automáticamente"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotación bloqueada"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"Método de introducción"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Ubicación"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Ubicación desactivada"</string>
+ <!-- no translation found for quick_settings_location_label (5011327048748762257) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_off_label (7464544086507331459) -->
+ <skip />
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Dispositivo multimedia"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Solo emergencia"</string>
@@ -201,5 +202,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Pantalla inalámbrica"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Brillo"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMÁTICO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Es posible que la red\nesté supervisada."</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Las notificaciones aparecen aquí."</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Desliza el dedo hacia abajo para acceder al contenido.\nVuelve a deslizar el dedo hacia abajo para acceder a los controles del sistema."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Desliza el dedo desde el borde de la pantalla para mostrar la barra."</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Desliza el dedo desde el borde de la pantalla para mostrar la barra del sistema."</string>
</resources>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 7dcb07972394..64c3cab7fa76 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Permitir siempre desde este ordenador"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom para ajustar"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Expandir para ajustar"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom de compatibilidad"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Si la aplicación se ha diseñado para una pantalla más pequeña, aparecerá un control de zoom junto al reloj."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Guardando captura..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Guardando captura..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"La captura de pantalla se está guardando."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Inicio"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menú"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Aplicaciones recientes"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Buscar"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Cámara"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Botón Cambiar método de entrada"</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Botón de zoom de compatibilidad"</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zoom de pantalla más pequeña a más grande"</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Con conexión Wi-Fi"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Buscando GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Ubicación definida por GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Solicitudes de ubicación activas"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Borrar todas las notificaciones"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Información de la aplicación"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"La pantalla girará automáticamente."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"La pantalla está bloqueada en modo horizontal."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"La pantalla está bloqueada en modo vertical."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Caja para postres"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Salvapantallas"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Modo avión"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Pantalla inalámbrica"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Brillo"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"La red se\npuede supervisar"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Las notificaciones aparecen aquí"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Desliza el dedo hacia abajo para acceder al contenido.\nVuelve a deslizar el dedo hacia abajo para acceder a los controles del sistema."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Desliza el borde de la pantalla para mostrar la barra"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Desliza el borde de la pantalla para mostrar la barra del sistema"</string>
</resources>
diff --git a/packages/SystemUI/res/values-et-rEE-land/strings.xml b/packages/SystemUI/res/values-et-rEE-land/strings.xml
deleted file mode 100644
index 77b0ce127f47..000000000000
--- a/packages/SystemUI/res/values-et-rEE-land/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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">"Ekraan on nüüd lukustatud horisontaalasendisse."</string>
-</resources>
diff --git a/packages/SystemUI/res/values-et-rEE/strings.xml b/packages/SystemUI/res/values-et-rEE/strings.xml
deleted file mode 100644
index d485a55e82fa..000000000000
--- a/packages/SystemUI/res/values-et-rEE/strings.xml
+++ /dev/null
@@ -1,203 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"Süsteemi UI"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"Kustuta"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Loendist eemaldamine"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"Rakenduse teave"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Uusi rakendusi pole"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Loobu hiljutistest rakendustest"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"1 hiljutine rakendus"</item>
- <item quantity="other" msgid="1040784359794890744">"%d hiljutist rakendust"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Teatisi pole"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Jätkuv"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Teadistused"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"Ühendage laadija"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"Aku hakkab tühjenema."</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> on alles"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"USB laadimist ei toetata.\nKasutage ainult tootja laadija."</string>
- <string name="battery_low_why" msgid="7279169609518386372">"Akukasutus"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Seaded"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"WiFi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"Lennurežiim"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Pööra ekraani automaatselt"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"SUMMUTA"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"Teatised"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth on jagatud"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Seadista sisestusmeetodeid"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"Füüsiline klaviatuur"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"Kas lubate rakendusel <xliff:g id="APPLICATION">%1$s</xliff:g> USB-seadmele juurde pääseda?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"Kas lubate rakendusel <xliff:g id="APPLICATION">%1$s</xliff:g> USB-seadmele juurde pääseda?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Kas avada <xliff:g id="ACTIVITY">%1$s</xliff:g>, kui see USB-seade on ühendatud?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Kas avada <xliff:g id="ACTIVITY">%1$s</xliff:g>, kui USB-lisaseade on ühendatud?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"Inst. rak. ei tööta selle USB-seadmega. Lisateavet lisaseadme kohta vt siit: <xliff:g id="URL">%1$s</xliff:g>"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"USB-lisaseade"</string>
- <string name="label_view" msgid="6304565553218192990">"Kuva"</string>
- <string name="always_use_device" msgid="1450287437017315906">"Kasuta vaikimisi selle USB-seadme jaoks"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"Vaikimisi kasuta seda USB-lisaseadet"</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"Kas luban USB silumise?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"Arvuti RSA-võtme sõrmejälg:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"Luba alati sellest arvutist"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"Suumi ekraani täitmiseks"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"Venita ekraani täitmiseks"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Kuvatõmmise salvestamine ..."</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"Kuvatõmmise salvestamine ..."</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"Kuvatõmmist salvestatakse."</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"Ekraanipilt on jäädvustatud."</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"Puudutage kuvatõmmise vaatamiseks."</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"Kuvatõmmist ei saanud jäädvustada."</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"Kuvatõmmist ei saa salvestada. Mäluseade võib olla kasutuses."</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB-failiedastuse valikud"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"Paigalda meediumimängijana (MTP)"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"Paigalda kaamerana (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"Android File Transferi installimine Macile"</string>
- <string name="accessibility_back" msgid="567011538994429120">"Tagasi"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"Kodu"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"Menüü"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"Hiljutised rakendused"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Otsing"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Kaamera"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Sisestusmeetodi vahetamise nupp."</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Sobivussuumi nupp."</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Suumi suuremale ekraanile vähem."</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"Bluetooth on ühendatud."</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"Bluetoothi ühendus katkestatud."</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"Aku puudub."</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"Aku: üks pulk."</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"Aku: kaks pulka."</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"Aku: kolm pulka."</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"Aku täis."</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"Telefonisignaal puudub"</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"Telefonisignaal: üks pulk."</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"Telefonisignaal: kaks pulka."</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"Telefonisignaal: kolm pulka."</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"Telefonisignaal on tugev."</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"Andmed puuduvad."</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"Andmesignaal: üks pulk."</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Andmeside: kaks pulka."</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Andmeside: kolm pulka."</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Andmesignaal on tugev."</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"Wifi on väljas."</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"Wifi-ühendus on katkestatud."</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"WiFi: üks pulk."</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"WiFi: kaks pulka."</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"WiFi: kolm pulka."</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"WiFi-signaal on tugev."</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX-i pole."</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX-i on üks riba."</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX-i on kaks riba."</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX-i on kolm riba."</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX-i signaal on tugev."</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"Signaal puudub."</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"Ühendus puudub."</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"Null pulka."</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"Üks pulk."</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"Kaks pulka."</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"Kolm pulka."</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"Signaal on tugev."</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"Sees."</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"Väljas."</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"Ühendatud."</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3,5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Rändlus"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Serv"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM-kaarti pole."</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetoothi jagamine."</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"Lennurežiim."</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"Aku: <xliff:g id="NUMBER">%d</xliff:g> protsenti."</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"Süsteemiseaded"</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"Teatised"</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"Teatise kustutamine"</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS on lubatud."</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"GPS-signaali otsimine."</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"TeleTypewriter lubatud."</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"Vibreeriv kõlisti."</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"Vaikne kõlisti."</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"Loobusite rakendusest <xliff:g id="APP">%s</xliff:g>."</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"Märguandest on loobutud."</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"Märguande vari."</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"Kiirseaded."</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"Hiljutised rakendused"</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"Kasutaja <xliff:g id="USER">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"Mobiili <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"Aku: <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"Lennukirežiim: <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth: <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Määratud äratus: <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G–3G andmeside keelatud"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G andmeside keelatud"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobiilne andmeside keelatud"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Andmekasutus keelatud."</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Olete jõudnud määratud andmekasutuse piirini.\n\nKui lülitate andmeside uuesti sisse, siis võib operaator teilt tasu võtta."</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Luba andmeside uuesti"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Interneti-ühendus puudub"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"WiFi on ühendatud"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS-i otsimine"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"GPS-i määratud asukoht"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Asukoha taotlused on aktiivsed"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"Kustuta kõik teatised."</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Rakenduse teave"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekraani pööramine toimub automaatselt."</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Ekraan on lukustatud horisontaalsuunas."</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ekraan on lukustatud vertikaalsuunas."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Maiustusekorv"</string>
- <string name="start_dreams" msgid="7219575858348719790">"Unistus"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Lennurežiim"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Laadimine, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Laetud"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> seadet)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth on väljas"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Heledus"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Automaatne pööramine"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Pööramine lukus"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"Sisestusmeetod"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Asukoht"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Asukoht on väljas"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"Meediaseade"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Ainult hädaabikõned"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"Seaded"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"Aeg"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"Mina"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"WiFi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Ühendus puudub"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Võrku pole"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"WiFi-ühendus on väljas"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"WiFi-ekraan"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Juhtmeta ekraaniühendus"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Heledus"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMAATNE"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Võrku võidakse\njälgida"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index 28ece65c0f1b..6d9c838599d4 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -164,7 +164,6 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"WiFi on ühendatud"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS-i otsimine"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"GPS-i määratud asukoht"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Asukoha taotlused on aktiivsed"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Kustuta kõik teatised."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Rakenduse teave"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekraani pööramine toimub automaatselt."</string>
@@ -201,4 +200,6 @@
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMAATNE"</string>
<string name="status_bar_help_title" msgid="1199237744086469217">"Märguanded ilmuvad siia"</string>
<string name="status_bar_help_text" msgid="7874607155052076323">"Juurdepääs igal ajal sõrmega alla pühkides.\nSüsteemi juhtnuppude jaoks pühkige uuesti alla."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Riba kuvamiseks pühkige ekraani serva"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Süsteemiriba kuvamiseks pühkige ekraani servast"</string>
</resources>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index d9f193f4f37e..b095519d9dfa 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"همیشه از این رایانه انجام شود"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"بزرگنمایی برای پر کردن صفحه"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"گسترده کردن برای پر کردن صفحه"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"بزرگنمایی سازگاری"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"اگر یک برنامه برای صفحه کوچک تری طراحی شده باشد، یک کنترل بزرگنمایی توسط ساعت نشان داده می‌شود."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"در حال ذخیره تصویر صفحه..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"در حال ذخیره تصویر صفحه..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"تصویر صفحه ذخیره شد."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"صفحهٔ اصلی"</string>
<string name="accessibility_menu" msgid="316839303324695949">"منو"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"برنامه‌های اخیر"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"جستجو"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"دوربین"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"کلید تغییر روش ورود متن."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"دکمه بزرگنمایی سازگار."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"بزرگنمایی از صفحه‌های کوچک تا بزرگ."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi متصل شد"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"جستجو برای GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"مکان تنظیم شده توسط GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"درخواست‌های موقعیت مکانی فعال است"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"پاک کردن تمام اعلان‌ها"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"اطلاعات برنامه"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"صفحه به صورت خودکار می‌چرخد."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"صفحه اکنون در جهت افقی قفل است."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"صفحه اکنون در جهت عمودی قفل است."</string>
- <string name="dessert_case" msgid="1295161776223959221">"ویترین دسر"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"رویاپردازی"</string>
<string name="ethernet_label" msgid="7967563676324087464">"اترنت"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"حالت هواپیما"</string>
@@ -183,8 +182,10 @@
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"چرخش خودکار"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"چرخش قفل شد"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"روش ورودی"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"مکان"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"مکان خاموش"</string>
+ <!-- no translation found for quick_settings_location_label (5011327048748762257) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_off_label (7464544086507331459) -->
+ <skip />
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"دستگاه رسانه"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"فقط تماس‌های اضطراری"</string>
@@ -199,5 +200,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"نمایش بدون سیم"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"روشنایی"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"خودکار"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"ممکن است شبکه\nتحت نظارت باشد"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"اعلان‌ها در اینجا نمایش داده می‌شوند"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"با کشیدن انگشت به طرف پایین به آنها دسترسی پیدا کنید.\nبرای کنترل‌های سیستم دوباره انگشت خود را به سمت پایین بکشید."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"برای نمایش نوار، انگشت خود را از لبه‌ صفحه به داخل بکشید"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"برای نمایش نوار سیستم، انگشت خود را از لبه‌ صفحه به داخل بکشید"</string>
</resources>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 4607365ab241..06e1926bf5ac 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Salli aina tällä tietokoneella"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoomaa koko näyttöön"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Venytä koko näyttöön"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Yhteensopivuuszoomaus"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Jos sovellus on suunniteltu pienemmälle näytölle, kellon viereen tulee näkyviin zoomaussäädin."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Tallennetaan kuvakaappausta..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Tallennetaan kuvakaappausta..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Kuvakaappausta tallennetaan."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Aloituspainike"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Valikko"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Viimeaikaiset sovellukset"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Haku"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Kamera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Syöttötavan vaihtopainike."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Yhteensopivuuszoomaus-painike."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zoomaa pienemmältä suuremmalle ruudulle."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wifi yhdistetty"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Haetaan GPS-yhteyttä"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Sijainti määritetty GPS:n avulla"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Sijaintipyynnöt aktiiviset"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Tyhjennä kaikki ilmoitukset."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Sovelluksen tiedot"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ruutu kääntyy automaattisesti."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Ruutu on lukittu vaakasuuntaan."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ruutu on lukittu pystysuuntaan."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Jälkiruokavitriini"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Unelmat"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Lentokonetila"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Langaton näyttö"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Kirkkaus"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Verkkoa saatetaan\nvalvoa"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Ilmoitukset näkyvät tässä"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Näet ilmoitukset liu\'uttamalla sormea alas ruudulla.\nVoit palauttaa järjestelmän ohjaimet näkyviin liu\'uttamalla sormea alas uudelleen."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Tuo palkki näkyviin liu\'uttamalla ruudun reunasta"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Tuo järjestelmäpalkki näkyviin liu\'uttamalla ruudun reunasta"</string>
</resources>
diff --git a/packages/SystemUI/res/values-fr-rCA-land/strings.xml b/packages/SystemUI/res/values-fr-rCA-land/strings.xml
deleted file mode 100644
index 4775fc62f1f6..000000000000
--- a/packages/SystemUI/res/values-fr-rCA-land/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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">"L\'écran est désormais verrouillé au format paysage."</string>
-</resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 8b491290cd84..000000000000
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"IU système"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"Effacer"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Supprimer de la liste"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"Informations sur l\'application"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Aucune application récente"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Masquer les applications récentes"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"1 application récente"</item>
- <item quantity="other" msgid="1040784359794890744">"%d applications récentes"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Aucune notification"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"En cours"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Notifications"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"Brancher le chargeur"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"Le niveau de la batterie est faible."</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> restant(s)"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"Chargement USB non compatible.\nVous devez utiliser le chargeur fourni."</string>
- <string name="battery_low_why" msgid="7279169609518386372">"Utilisation de la batterie"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Paramètres"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"Mode Avion"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Rotation auto de l\'écran"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"MUET"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTOMATIQUE"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"Notifications"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"Connexion Bluetooth partagée"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Configurer les modes de saisie"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"Clavier physique"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"Autoriser l\'application <xliff:g id="APPLICATION">%1$s</xliff:g> à accéder au périphérique USB?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"Autoriser l\'application <xliff:g id="APPLICATION">%1$s</xliff:g> à accéder à l\'accessoire USB?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Ouvrir <xliff:g id="ACTIVITY">%1$s</xliff:g> lors de la connexion de ce périphérique USB?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Ouvrir <xliff:g id="ACTIVITY">%1$s</xliff:g> lors de la connexion de cet accessoire USB?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"Aucune application installée compatible avec accessoire USB. En savoir plus sur <xliff:g id="URL">%1$s</xliff:g>"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"Accessoire USB"</string>
- <string name="label_view" msgid="6304565553218192990">"Afficher"</string>
- <string name="always_use_device" msgid="1450287437017315906">"Utiliser par défaut pour ce périphérique USB"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"Utiliser par défaut pour cet accessoire USB"</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"Autoriser le débogage USB?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"Empreinte numérique de la clé RSA de l\'ordinateur : \n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"Toujours autoriser sur cet ordinateur"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"Zoomer pour remplir l\'écran"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"Étirer pour remplir l\'écran"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Enregistrement capture écran…"</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"Enregistrement capture écran…"</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"Enregistrement de la capture d\'écran en cours…"</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"Capture d\'écran réussie"</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"Appuyez pour afficher votre capture d\'écran."</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"Impossible de réaliser une capture d\'écran"</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"Impossible enregistrer capture d\'écran. Périphérique de stockage peut-être en cours d\'utilisation."</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"Options transfert fichiers USB"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"Installer comme un lecteur multimédia (MTP)"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"Installer comme un appareil photo (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"Installer application Android File Transfer (Mac)"</string>
- <string name="accessibility_back" msgid="567011538994429120">"Précédent"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"Domicile"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"Menu"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"Applications récentes"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Rechercher"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Appareil photo"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Bouton \"Changer le mode de saisie\""</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Bouton \"Zoom de compatibilité\""</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zoom de compatibilité avec la taille de l\'écran"</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"Bluetooth connecté"</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"Bluetooth déconnecté"</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"Batterie vide"</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"Niveau de batterie : faible"</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"Niveau de batterie : moyen"</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"Niveau de batterie : bon"</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"Batterie pleine"</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"Aucun signal"</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"Signal : faible"</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"Signal : moyen"</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"Signal : bon"</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"Signal excellent"</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"Aucun signal"</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"Signal faible"</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Signal moyen"</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Signal bon"</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Signal excellent"</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"Wi-Fi désactivé"</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"Wi-Fi déconnecté"</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"Signal Wi-Fi faible"</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"Signal Wi-Fi moyen"</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"Signal Wi-Fi bon"</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"Signal Wi-Fi excellent"</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"Aucun signal WiMAX"</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Signal WiMAX : faible"</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Signal WiMAX : moyen"</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Signal WiMAX : bon"</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Signal WiMAX : excellent"</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"Aucun signal"</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"Non connecté"</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"Aucun signal"</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"Signal faible"</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"Moyen"</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"Bon"</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"Signal excellent"</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"Activé"</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"Désactivé"</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"Connecté"</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1x"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"3G+"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3G+"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Itinérance"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"Aucune carte SIM"</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Partage de connexion Bluetooth"</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode Avion"</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
- <string name="accessibility_settings_button" msgid="799583911231893380">"Paramètres système"</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"Notifications"</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"Supprimer la notification"</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS activé"</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"Acquisition de données GPS"</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"Téléscripteur activé"</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"Sonnerie en mode vibreur"</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"Sonnerie en mode silencieux"</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"Application \"<xliff:g id="APP">%s</xliff:g>\" ignorée."</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"Notification masquée"</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"Volet des notifications"</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"Paramètres rapides"</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"Applications récentes"</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"Utilisateur : <xliff:g id="USER">%s</xliff:g>"</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>, <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"Signal mobile : <xliff:g id="SIGNAL">%1$s</xliff:g>, <xliff:g id="TYPE">%2$s</xliff:g>, <xliff:g id="NETWORK">%3$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"Batterie : <xliff:g id="STATE">%s</xliff:g>"</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"Mode Avion : <xliff:g id="STATE">%s</xliff:g>"</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth : <xliff:g id="STATE">%s</xliff:g>"</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Alarme réglée sur <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"Données 2G-3G désactivées"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Données 4G désactivées"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Données mobiles désactivées"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Données désactivées"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Vous avez atteint le plafond de consommation de données spécifié.\n\nSi vous utilisez des données supplémentaires, celles-ci pourront être facturées par l\'opérateur."</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Réactiver connexion données"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Aucune connexion Internet"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Connecté au Wi-Fi"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"Recherche de GPS..."</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"Position définie par GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Demandes de localisation actives"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"Supprimer toutes les notifications"</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informations sur l\'application"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"L\'écran pivote automatiquement."</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"L\'écran est verrouillé en mode paysage."</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"L\'écran est verrouillé en mode portrait."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Vitrine des desserts"</string>
- <string name="start_dreams" msgid="7219575858348719790">"Écran de veille"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Mode Avion"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"En charge (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Chargée"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> appareils)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"BLUETOOTH DÉSACTIVÉ"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Luminosité"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Rotation automatique"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotation verrouillée"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"Mode de saisie"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Position"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Localisation désactivée"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"Appareil multimédia"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Appels d\'urgence uniquement"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"Paramètres"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"Heures"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"Moi"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Non connecté"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Aucun réseau"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi désactivé"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Affichage Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Affichage sans fil"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Luminosité"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMATIQUE"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Le réseau peut\nêtre surveillé."</string>
-</resources>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 45e407d23133..7db07e2a89c4 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Toujours autoriser sur cet ordinateur"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoomer pour remplir l\'écran"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Étirer pour remplir l\'écran"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom de compatibilité"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Si une application a été conçue pour un écran plus petit, une commande de zoom s\'affiche à côté de l\'horloge."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Enregistrement capture écran…"</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Enregistrement de la capture d\'écran…"</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Enregistrement de la capture d\'écran en cours…"</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Accueil"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menu"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Applications récentes"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Rechercher"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Appareil photo"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Bouton \"Changer le mode de saisie\""</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Bouton \"Zoom de compatibilité\""</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zoom de compatibilité avec la taille de l\'écran"</string>
@@ -166,13 +166,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Connecté au Wi-Fi"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Recherche de GPS..."</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Position définie par GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Demandes de localisation actives"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Supprimer toutes les notifications"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informations sur l\'application"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"L\'écran pivote automatiquement."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"L\'écran est verrouillé en mode paysage."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"L\'écran est verrouillé en mode portrait."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Vitrine des desserts"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Écran de veille interactif"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Mode avion"</string>
@@ -185,8 +184,10 @@
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Rotation auto"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotation bloquée"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"Mode de saisie"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Localisation"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Localisation désactivée"</string>
+ <!-- no translation found for quick_settings_location_label (5011327048748762257) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_off_label (7464544086507331459) -->
+ <skip />
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Appareil multimédia"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Appels d\'urgence uniquement"</string>
@@ -201,5 +202,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Affichage sans fil"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Luminosité"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMATIQUE"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Le réseau peut\nêtre surveillé."</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Les notifications s’affichent ici"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Accédez-y à tout moment en faisant glisser le doigt vers le bas.\nRépétez l\'opération pour accéder aux commandes du système."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Faites glisser votre doigt sur le côté de l\'écran pour afficher la barre."</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Faites glisser votre doigt à partir d\'un côté de l\'écran pour afficher la barre système."</string>
</resources>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index da958bf785a0..862e2ef5346b 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -22,12 +22,12 @@
<string name="app_label" msgid="7164937344850004466">"सिस्‍टम UI"</string>
<string name="status_bar_clear_all_button" msgid="7774721344716731603">"साफ़ करें"</string>
<string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"सूची से निकालें"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"एप्‍स जानकारी"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"कोई हाल ही के एप्स नहीं"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"हाल ही के एप्स खारिज करें"</string>
+ <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"एप्‍लिकेशन जानकारी"</string>
+ <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"कोई हाल ही के एप्लिकेशन नहीं"</string>
+ <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"हाल ही के एप्लिकेशन खारिज करें"</string>
<plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"1 हाल ही का एप्स"</item>
- <item quantity="other" msgid="1040784359794890744">"%d हाल ही के एप्स"</item>
+ <item quantity="one" msgid="5854176083865845541">"1 हाल ही का एप्लिकेशन"</item>
+ <item quantity="other" msgid="1040784359794890744">"%d हाल ही के एप्लिकेशन"</item>
</plurals>
<string name="status_bar_no_notifications_title" msgid="4755261167193833213">"कोई सूचना नहीं"</string>
<string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"ऑनगोइंग"</string>
@@ -40,18 +40,18 @@
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"सेटिंग"</string>
<string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
<string name="status_bar_settings_airplane" msgid="4879879698500955300">"हवाई जहाज मोड"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"स्‍क्रीन अपनेआप घुमाएं"</string>
+ <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"स्‍क्रीन स्‍वत: घुमाएं"</string>
<string name="status_bar_settings_mute_label" msgid="554682549917429396">"म्यूट करें"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"स्वत:"</string>
<string name="status_bar_settings_notifications" msgid="397146176280905137">"सूचनाएं"</string>
<string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth टीदर किया गया"</string>
<string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"इनपुट पद्धति सेट करें"</string>
<string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"भौतिक कीबोर्ड"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"एप्स <xliff:g id="APPLICATION">%1$s</xliff:g> को USB उपकरण तक पहुंचने दें?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"एप्स <xliff:g id="APPLICATION">%1$s</xliff:g> को USB सहायक उपकरण तक पहुंचने दें?"</string>
+ <string name="usb_device_permission_prompt" msgid="834698001271562057">"एप्लिकेशन <xliff:g id="APPLICATION">%1$s</xliff:g> को USB उपकरण तक पहुंचने दें?"</string>
+ <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"एप्लिकेशन <xliff:g id="APPLICATION">%1$s</xliff:g> को USB सहायक उपकरण तक पहुंचने दें?"</string>
<string name="usb_device_confirm_prompt" msgid="5161205258635253206">"जब यह USB उपकरण कनेक्ट किया जाए, तब <xliff:g id="ACTIVITY">%1$s</xliff:g> को खोलें?"</string>
<string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"जब यह USB एसेसरी कनेक्ट की जाए, तब <xliff:g id="ACTIVITY">%1$s</xliff:g> को खोलें?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"इस USB सहायक उपकरण के साथ कोई भी इंस्टॉल एप्स काम नहीं करता. इस सहायक उपकरण के बारे में यहां अधिक जानें: <xliff:g id="URL">%1$s</xliff:g>"</string>
+ <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"इस USB सहायक उपकरण के साथ कोई भी इंस्टॉल एप्लिकेशन काम नहीं करता. इस सहायक उपकरण के बारे में यहां अधिक जानें: <xliff:g id="URL">%1$s</xliff:g>"</string>
<string name="title_usb_accessory" msgid="4966265263465181372">"USB सहायक साधन"</string>
<string name="label_view" msgid="6304565553218192990">"देखें"</string>
<string name="always_use_device" msgid="1450287437017315906">"इस USB उपकरण के लिए डिफ़ॉल्‍ट रूप से उपयोग करें"</string>
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"इस कंप्यूटर से हमेशा अनुमति दें"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"स्‍क्रीन भरने हेतु ज़ूम करें"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"स्‍क्रीन को भरने के लिए खींचें"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"संगतता ज़ूम"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"जब किसी छोटी स्‍क्रीन के लिए एप्‍लिकेशन को डिज़ाइन किया जाता है, तो ज़ूम नियंत्रण क्लॉक के पास दिखाई देगा."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"स्क्रीनशॉट सहेजा जा रहा है..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"स्क्रीनशॉट सहेजा जा रहा है..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"स्क्रीनशॉट सहेजा जा रहा है."</string>
@@ -75,9 +77,7 @@
<string name="accessibility_back" msgid="567011538994429120">"वापस जाएं"</string>
<string name="accessibility_home" msgid="8217216074895377641">"होम"</string>
<string name="accessibility_menu" msgid="316839303324695949">"मेनू"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"हाल ही के एप्‍स"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"खोजें"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"कैमरा"</string>
+ <string name="accessibility_recent" msgid="8571350598987952883">"हाल ही के एप्‍लिकेशन"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"इनपुट पद्धति‍ बटन स्विच करें."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"संगतता ज़ूम बटन."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"छोटी से बड़ी स्‍क्रीन पर ज़ूम करें."</string>
@@ -146,7 +146,7 @@
<string name="accessibility_notification_dismissed" msgid="854211387186306927">"सूचना खारिज की गई."</string>
<string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"सूचना शेड."</string>
<string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"त्वरित सेटिंग."</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"हाल ही के एप्‍स."</string>
+ <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"हाल ही के एप्‍लिकेशन."</string>
<string name="accessibility_quick_settings_user" msgid="1104846699869476855">"उपयोगकर्ता <xliff:g id="USER">%s</xliff:g>."</string>
<string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
<string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"मोबाइल <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
@@ -164,14 +164,13 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi कनेक्‍ट किया गया"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS को खोजा जा रहा है"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"GPS द्वारा सेट किया गया स्‍थान"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"स्थान अनुरोध सक्रिय"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"सभी सूचनाएं साफ़ करें."</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"एप्‍स जानकारी"</string>
+ <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"एप्‍लिकेशन जानकारी"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"स्‍क्रीन स्‍वचालित रूप से घूमेगी."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"स्‍क्रीन लैंडस्केप अभिविन्यास में लॉक है."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"स्‍क्रीन पोर्ट्रेट अभिविन्‍यास में लॉक है."</string>
- <string name="dessert_case" msgid="1295161776223959221">"मिठाई का डिब्बा"</string>
- <string name="start_dreams" msgid="7219575858348719790">"दिवास्वप्न"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
+ <string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
<string name="ethernet_label" msgid="7967563676324087464">"ईथरनेट"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"हवाई जहाज़ मोड"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"चार्ज हो रही है, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
@@ -179,7 +178,7 @@
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> उपकरण)"</string>
<string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth बंद"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"स्क्रीन की रोशनी"</string>
+ <string name="quick_settings_brightness_label" msgid="6968372297018755815">"चमक"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"स्वत: रोटेट"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"रोटेशन लॉक किया गया"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"इनपुट विधि"</string>
@@ -197,7 +196,10 @@
<string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi बंद"</string>
<string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi प्रदर्शन"</string>
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"वायरलेस डिस्प्ले"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"स्क्रीन की रोशनी"</string>
+ <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"चमक"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"स्वत:"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"नेटवर्क को\nमॉनीटर किया जा सकता है"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"सूचनाएं यहां दिखाई देती हैं"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"नीचे स्वाइप करके उन तक कभी भी पहुंचें.\nसिस्टम नियंत्रणों के लिए पुन: नीचे स्वाइप करें."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"बार दिखाने के लिए स्क्रीन के किनारे को स्वाइप करें"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"सिस्टम बार दिखाने के लिए स्क्रीन के किनारे से स्वाइप करें"</string>
</resources>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 305ebcf00c4b..631d54961252 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Uvijek dopusti s ovog računala"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zumiraj i ispuni zaslon"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Rastegni i ispuni zaslon"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Kompatibilno zumiranje"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Kada je aplikacija dizajnirana za manji zaslon, kontrole zumiranja prikazuju se pored sata."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Spremanje snimke zaslona..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Spremanje snimke zaslona..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Spremanje snimke zaslona."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Početna"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Izbornik"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Nedavne aplikacije"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Pretraži"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Fotoaparat"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Gumb za promjenu načina unosa."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Gumb za kompatibilnost zumiranja."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zumiranje manjeg zaslona na veći."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi povezan"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Traženje GPS-a"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Lokaciju utvrdio GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Zahtjevi za lokaciju aktivni su"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Brisanje svih obavijesti."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informacije o aplikaciji"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Zaslon će se automatski zakrenuti."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Zaslon je zaključan u pejzažnoj orijentaciji."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Zaslon je zaključan u portretnoj orijentaciji."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Izlog za slastice"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Sanjarenje"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Način rada u zrakoplovu"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Bežični prikaz"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Svjetlina"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMATSKI"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Mreža se\nmožda prati"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Obavijesti se prikazuju ovdje"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Pristupite im u bilo kojem trenutku tako da prstom trznete prema dolje. \nPonovo prstom trznite prema dolje za kontrole sustava."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Prijeđite prstom po rubu zaslona da bi se prikazala traka"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Prijeđite prstom od ruba zaslona da bi se prikazala traka sustava"</string>
</resources>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 2127b7edaae0..c1c9136b00e3 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Mindig engedélyezze erről a számítógépről"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Nagyítás a kitöltéshez"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Nyújtás kitöltéshez"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Kompatibilitás -- nagyítás/kicsinyítés"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Ha egy alkalmazást kisebb képernyőre terveztek, akkor a nagyítás/kicsinyítés vezérlője az óra mellett jelenik meg."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Képernyőkép mentése..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Képernyőkép mentése..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Képernyőkép mentése."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Főoldal"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menü"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Legújabb alkalmazás"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Keresés"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Kamera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Beviteli mód váltása gomb."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Kompatibilitási zoom gomb."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Kicsinyítsen a nagyobb képernyőhöz."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi csatlakoztatva"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS keresése"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"A GPS beállította a helyet"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Aktív helylekérések"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Minden értesítés törlése"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Alkalmazásinformáció"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"A képernyő automatikusan forogni fog."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"A képernyő zárolva van fekvő tájolásban."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"A képernyő zárolva van álló tájolásban."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Dessert Case"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Álmodozás"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Repülőgép üzemmód"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Vezeték nélküli kijelző"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Fényerő"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"automatikus"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Lehet, hogy a\nhálózat felügyelt"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Az értesítések itt jelennek meg."</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Bármikor elérheti őket, ha lefelé húzza az ujját.\nHúzza le az ujját még egyszer a rendszerbeállítások eléréséhez."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Csúsztassa ujját a képernyő szélén a sáv megjelenítéséhez"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Csúsztassa ujját a képernyő szélétől a rendszersáv megjelenítéséhez"</string>
</resources>
diff --git a/packages/SystemUI/res/values-hy-rAM-land/strings.xml b/packages/SystemUI/res/values-hy-rAM-land/strings.xml
deleted file mode 100644
index 7c0535c5bd4f..000000000000
--- a/packages/SystemUI/res/values-hy-rAM-land/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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-hy-rAM/strings.xml b/packages/SystemUI/res/values-hy-rAM/strings.xml
deleted file mode 100644
index 7b38bf4bb312..000000000000
--- a/packages/SystemUI/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,203 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"Համակարգային UI"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"Մաքրել"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Հեռացնել ցանկից"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"Տեղեկություններ ծրագրի մասին"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Թարմ հավելվածներ չկան"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Անտեսել վերջին ծրագրերը"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"1 նոր ծրագիր"</item>
- <item quantity="other" msgid="1040784359794890744">"%d նոր ծրագիր"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Ծանուցումներ չկան"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Ընթացիկ"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Ծանուցումներ"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"Միացրեք լիցքավորիչը"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"Մարտկոցը լիցքաթափվում է:"</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"մնում է <xliff:g id="NUMBER">%d%%</xliff:g>"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"USB լիցքավորումը չի աջակցվում:\nՕգտվեք միայն գործող լիցքավորիչից:"</string>
- <string name="battery_low_why" msgid="7279169609518386372">"Մարտկոցի օգտագործումը"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Կարգավորումներ"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"Ինքնաթիռային ռեժիմ"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Ինքնապտտվող էկրան"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"Համրեցնել"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"Ինքնաշխատ"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"Ծանուցումներ"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth-ը կապված է"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Կարգավորել մուտքագրման եղանակները"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"Ֆիզիկական ստեղնաշար"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"Թույլատրե՞լ <xliff:g id="APPLICATION">%1$s</xliff:g> հավելվածի մուտքը USB սարք:"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"Թույլատրե՞լ, որ <xliff:g id="APPLICATION">%1$s</xliff:g> հավելվածը մուտք գործի USB լրասարք:"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Բացե՞լ <xliff:g id="ACTIVITY">%1$s</xliff:g>-ը, երբ այս USB կրիչը կապակցված է:"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Բացե՞լ <xliff:g id="ACTIVITY">%1$s</xliff:g>-ը, երբ այս USB լրասարքը կապակցված է:"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"Այս USB լրասարքի հետ ոչ մի հավելված չի աշխատում: Իմացեք ավելին այս լրասարքի մասին <xliff:g id="URL">%1$s</xliff:g>-ում"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"USB լրասարք"</string>
- <string name="label_view" msgid="6304565553218192990">"Դիտել"</string>
- <string name="always_use_device" msgid="1450287437017315906">"Օգտագործել լռելյայն այս USB սարքի համար"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"Օգտագործել լռելյայն այս USB լրասարքի համար"</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"Թույլատրե՞լ USB-ի կարգաբերումը:"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"Համակարգչի RSA-ի բանալի մատնահետքն է`\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"Միշտ թույլատրել այս համակարգչից"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"Խոշորացնել` էկրանը լցնելու համար"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"Ձգել` էկրանը լցնելու համար"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Պահում է էկրանի հանույթը…"</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"Պահում է էկրանի հանույթը..."</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"Էկրանի հանույթը պահվում է:"</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"Էկրանի հանույթը լուսանկարվել է:"</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"Հպեք ձեր էկրանի հանույթը տեսնելու համար:"</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"Չհաջողվեց լուսանկարել էկրանի հանույթը:"</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"Չհաջողվեց պահել էկրանի հանույթը: Հնարավոր է` պահոցն օգտագործման մեջ է:"</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB ֆայլերի փոխանցման ընտրանքներ"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"Միացնել որպես մեդիա նվագարկիչ (MTP)"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"Միացնել որպես ֆոտոխցիկ (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"Տեղադրել Android ֆայլերի փոխանցման հավելվածը Mac-ի համար"</string>
- <string name="accessibility_back" msgid="567011538994429120">"Հետ"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"Տուն"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"Ցանկ"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"Վերջին ծրագրերը"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Որոնել"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Ֆոտոխցիկ"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Միացնել մուտքագրման եղանակի կոճակը:"</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Համատեղելիության խոշորացման կոճակը:"</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Դիտափոխել փոքրից ավելի մեծ էկրան:"</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"Bluetooth-ը միացված է:"</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"Bluetooth-ն անջատված է:"</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"Մարտկոց չկա:"</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"Մարտկոցի մեկ գիծ:"</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"Մարտկոցի երկու գիծ:"</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"Մարտկոցի երեք գիծ:"</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"Մարտկոցը լիքն է:"</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"Հեռախոս չկա:"</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"Հեռախոսի մեկ գիծ:"</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"Հեռախոսի երկու գիծ:"</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"Հեռախոսի երեք գիծ:"</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"Հեռախոսի ազդանշանը լիքն է:"</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"Տվյալներ չկան:"</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"Տվյալների մեկ գիծ:"</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Տվյալների երկու գիծ:"</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Տվյալների երեք գիծ:"</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Տվյալների ազդանշանը լրիվ է:"</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"Wifi-ը անջատված է:"</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"WiFi-ը անջատված է:"</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"Wifi-ի մեկ գիծ:"</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"Wifi-ի երկու գիծ:"</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"WiFi-ի երեք գիծ:"</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"Wifi-ի ազդանշանը լիքն է:"</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX չկա:"</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX-ի մեկ գիծ:"</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX-ի երկու գիծ:"</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX-ի երեք գիծ:"</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX-ի ազդանշանը լիքն է:"</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"Ազդանշան չկա:"</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"Միացված չէ:"</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"Զրո գիծ:"</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"Մեկ գիծ:"</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"Երկու գիծ:"</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"Երեք գիծ:"</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"Ազդանշանը լրիվ է:"</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"Միացված է:"</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"Անջատված է:"</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"Միացված է:"</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Ռոումինգ"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM չկա:"</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-ը կապվում է:"</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"Ինքնաթիռային ռեժիմ"</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"Մարտկոցը <xliff:g id="NUMBER">%d</xliff:g> տոկոս է:"</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"Համակարգի կարգավորումներ:"</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"Ծանուցումներ:"</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"Մաքրել ծանուցումը:"</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS-ը միացված է:"</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"GPS-ի ստացում:"</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"Հեռամուտքագրիչը միացված է:"</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"Զանգի թրթռոց:"</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"Զանգակը լռեցված է:"</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g>-ը անտեսված է:"</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"Ծանուցումը անտեսվեց:"</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"Ծանուցումների վահանակ:"</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"Արագ կարգավորումներ:"</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"Վերջին հավելվածները:"</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"Օգտվող <xliff:g id="USER">%s</xliff:g>:"</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>: <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"Շարժական <xliff:g id="SIGNAL">%1$s</xliff:g>: <xliff:g id="TYPE">%2$s</xliff:g>: <xliff:g id="NETWORK">%3$s</xliff:g>:"</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"Մարտկոցը <xliff:g id="STATE">%s</xliff:g> է:"</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"Ինքնաթիռային ռեժիմը <xliff:g id="STATE">%s</xliff:g> է:"</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth-ը <xliff:g id="STATE">%s</xliff:g> է:"</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Զարթուցիչը դրված է <xliff:g id="TIME">%s</xliff:g>-ին:"</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G տվյալները անջատված են"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G տվյալները անջատված են"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Շարժական տվյալները անջատված են"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Տվյալները անջատված են"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Դուք հասել եք նշված տվյալների օգտագործման սահմանին:\n\n Եթե դուք կրկին ակտիվացնեք տվյալները, այն կարող է գանձվել օպերատորի կողմից:"</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Վերամիացնել տվյալները"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Ինտերնետ կապ չկա"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi-ը միացված է"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"Որոնում է GPS"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"Տեղադրությունը կարգավորվել է GPS-ի կողմից"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Տեղադրության հարցումներն ակտիվ են"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"Մաքրել բոլոր ծանուցումները:"</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Տեղեկություններ ծրագրի մասին"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Էկրանը ինքնուրույն կպտտվի:"</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Էկրանը կողպված է հորիզոնական դիրքավորման մեջ:"</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Էկրանը կողպված է ուղղաձիգ դիրքավորմամբ:"</string>
- <string name="dessert_case" msgid="1295161776223959221">"Dessert Case"</string>
- <string name="start_dreams" msgid="7219575858348719790">"Ցերեկային ռեժիմ"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Ինքնաթիռային ռեժիմ"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Լիցքավորում` <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Լիցքավորված է"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> սարք)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth-ն անջատված է"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Պայծառություն"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Ինքնապտտում"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Պտտումը կողպված է"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"Մուտքագրման եղանակը"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Տեղադրություն"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Անջատել տեղադրությունը"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"Մեդիա սարք"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Միայն արտակարգ իրավիճակների զանգեր"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"Կարգավորումներ"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"Ժամանակը"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"Ես"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Միացված չէ"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Ցանց չկա"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi-ը անջատված է"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi ցուցադրիչ"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Անլար էկրան"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Պայծառություն"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"Ինքնաշխատ"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Ցանցը կարող է\nվերահսկվել"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
deleted file mode 100644
index 4241898e8091..000000000000
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"Համակարգային UI"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"Մաքրել"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Հեռացնել ցանկից"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"Տեղեկություններ ծրագրի մասին"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Թարմ հավելվածներ չկան"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Անտեսել վերջին ծրագրերը"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"1 նոր ծրագիր"</item>
- <item quantity="other" msgid="1040784359794890744">"%d նոր ծրագիր"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Ծանուցումներ չկան"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Ընթացիկ"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Ծանուցումներ"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"Միացրեք լիցքավորիչը"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"Մարտկոցը լիցքաթափվում է:"</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"մնում է <xliff:g id="NUMBER">%d%%</xliff:g>"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"USB լիցքավորումը չի աջակցվում:\nՕգտվեք միայն գործող լիցքավորիչից:"</string>
- <string name="battery_low_why" msgid="7279169609518386372">"Մարտկոցի օգտագործումը"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Կարգավորումներ"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"Ինքնաթիռային ռեժիմ"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Ինքնապտտվող էկրան"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"Համրեցնել"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"Ինքնաշխատ"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"Ծանուցումներ"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth-ը կապված է"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Կարգավորել մուտքագրման եղանակները"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"Ֆիզիկական ստեղնաշար"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"Թույլատրե՞լ <xliff:g id="APPLICATION">%1$s</xliff:g> հավելվածի մուտքը USB սարք:"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"Թույլատրե՞լ, որ <xliff:g id="APPLICATION">%1$s</xliff:g> հավելվածը մուտք գործի USB լրասարք:"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Բացե՞լ <xliff:g id="ACTIVITY">%1$s</xliff:g>-ը, երբ այս USB կրիչը կապակցված է:"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Բացե՞լ <xliff:g id="ACTIVITY">%1$s</xliff:g>-ը, երբ այս USB լրասարքը կապակցված է:"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"Այս USB լրասարքի հետ ոչ մի հավելված չի աշխատում: Իմացեք ավելին այս լրասարքի մասին <xliff:g id="URL">%1$s</xliff:g>-ում"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"USB լրասարք"</string>
- <string name="label_view" msgid="6304565553218192990">"Դիտել"</string>
- <string name="always_use_device" msgid="1450287437017315906">"Օգտագործել լռելյայն այս USB սարքի համար"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"Օգտագործել լռելյայն այս USB լրասարքի համար"</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"Թույլատրե՞լ USB-ի կարգաբերումը:"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"Համակարգչի RSA-ի բանալի մատնահետքն է`\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"Միշտ թույլատրել այս համակարգչից"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"Խոշորացնել` էկրանը լցնելու համար"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"Ձգել` էկրանը լցնելու համար"</string>
- <string name="compat_mode_help_header" msgid="7969493989397529910">"Համատեղելիության խոշորացում"</string>
- <string name="compat_mode_help_body" msgid="4946726776359270040">"Երբ հավելվածը նախագծված է ավելի փոքր էկրանի համար, խոշորացման կարգավորիչը կհայտնվի ժամացույցի կողքին:"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Պահում է էկրանի հանույթը…"</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"Պահում է էկրանի հանույթը..."</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"Էկրանի հանույթը պահվում է:"</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"Էկրանի հանույթը լուսանկարվել է:"</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"Հպեք ձեր էկրանի հանույթը տեսնելու համար:"</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"Չհաջողվեց լուսանկարել էկրանի հանույթը:"</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"Չհաջողվեց պահել էկրանի հանույթը: Հնարավոր է` պահոցն օգտագործման մեջ է:"</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB ֆայլերի փոխանցման ընտրանքներ"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"Միացնել որպես մեդիա նվագարկիչ (MTP)"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"Միացնել որպես ֆոտոխցիկ (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"Տեղադրել Android ֆայլերի փոխանցման հավելվածը Mac-ի համար"</string>
- <string name="accessibility_back" msgid="567011538994429120">"Հետ"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"Տուն"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"Ցանկ"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"Վերջին ծրագրերը"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Միացնել մուտքագրման եղանակի կոճակը:"</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Համատեղելիության խոշորացման կոճակը:"</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Դիտափոխել փոքրից ավելի մեծ էկրան:"</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"Bluetooth-ը միացված է:"</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"Bluetooth-ն անջատված է:"</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"Մարտկոց չկա:"</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"Մարտկոցի մեկ գիծ:"</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"Մարտկոցի երկու գիծ:"</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"Մարտկոցի երեք գիծ:"</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"Մարտկոցը լիքն է:"</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"Հեռախոս չկա:"</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"Հեռախոսի մեկ գիծ:"</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"Հեռախոսի երկու գիծ:"</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"Հեռախոսի երեք գիծ:"</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"Հեռախոսի ազդանշանը լիքն է:"</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"Տվյալներ չկան:"</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"Տվյալների մեկ գիծ:"</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Տվյալների երկու գիծ:"</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Տվյալների երեք գիծ:"</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Տվյալների ազդանշանը լրիվ է:"</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"Wifi-ը անջատված է:"</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"WiFi-ը անջատված է:"</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"Wifi-ի մեկ գիծ:"</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"Wifi-ի երկու գիծ:"</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"WiFi-ի երեք գիծ:"</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"Wifi-ի ազդանշանը լիքն է:"</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX չկա:"</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX-ի մեկ գիծ:"</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX-ի երկու գիծ:"</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX-ի երեք գիծ:"</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX-ի ազդանշանը լիքն է:"</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"Ազդանշան չկա:"</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"Միացված չէ:"</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"Զրո գիծ:"</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"Մեկ գիծ:"</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"Երկու գիծ:"</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"Երեք գիծ:"</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"Ազդանշանը լրիվ է:"</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"Միացված է:"</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"Անջատված է:"</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"Միացված է:"</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Ռոումինգ"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM չկա:"</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-ը կապվում է:"</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"Ինքնաթիռային ռեժիմ"</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"Մարտկոցը <xliff:g id="NUMBER">%d</xliff:g> տոկոս է:"</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"Համակարգի կարգավորումներ:"</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"Ծանուցումներ:"</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"Մաքրել ծանուցումը:"</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS-ը միացված է:"</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"GPS-ի ստացում:"</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"Հեռամուտքագրիչը միացված է:"</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"Զանգի թրթռոց:"</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"Զանգակը լռեցված է:"</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g>-ը անտեսված է:"</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"Ծանուցումը անտեսվեց:"</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"Ծանուցումների վահանակ:"</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"Արագ կարգավորումներ:"</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"Վերջին հավելվածները:"</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"Օգտվող <xliff:g id="USER">%s</xliff:g>:"</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>: <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"Շարժական <xliff:g id="SIGNAL">%1$s</xliff:g>: <xliff:g id="TYPE">%2$s</xliff:g>: <xliff:g id="NETWORK">%3$s</xliff:g>:"</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"Մարտկոցը <xliff:g id="STATE">%s</xliff:g> է:"</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"Ինքնաթիռային ռեժիմը <xliff:g id="STATE">%s</xliff:g> է:"</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth-ը <xliff:g id="STATE">%s</xliff:g> է:"</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Զարթուցիչը դրված է <xliff:g id="TIME">%s</xliff:g>-ին:"</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G տվյալները անջատված են"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G տվյալները անջատված են"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Շարժական տվյալները անջատված են"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Տվյալները անջատված են"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Դուք հասել եք նշված տվյալների օգտագործման սահմանին:\n\n Եթե դուք կրկին ակտիվացնեք տվյալները, այն կարող է գանձվել օպերատորի կողմից:"</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Վերամիացնել տվյալները"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Ինտերնետ կապ չկա"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi-ը միացված է"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"Որոնում է GPS"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"Տեղադրությունը կարգավորվել է GPS-ի կողմից"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Տեղադրության հարցումներն ակտիվ են"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"Մաքրել բոլոր ծանուցումները:"</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Տեղեկություններ ծրագրի մասին"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Էկրանը ինքնուրույն կպտտվի:"</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Էկրանը կողպված է հորիզոնական դիրքավորման մեջ:"</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Էկրանը կողպված է ուղղաձիգ դիրքավորմամբ:"</string>
- <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
- <string name="start_dreams" msgid="7219575858348719790">"Ցերեկային ռեժիմ"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Ինքնաթիռային ռեժիմ"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Լիցքավորում` <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Լիցքավորված է"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> սարք)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth-ն անջատված է"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Պայծառություն"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Ինքնապտտում"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Պտտումը կողպված է"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"Մուտքագրման եղանակը"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Տեղադրություն"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Անջատել տեղադրությունը"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"Մեդիա սարք"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Միայն արտակարգ իրավիճակների զանգեր"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"Կարգավորումներ"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"Ժամանակը"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"Ես"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Միացված չէ"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Ցանց չկա"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi-ը անջատված է"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi ցուցադրիչ"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Անլար էկրան"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Պայծառություն"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"Ինքնաշխատ"</string>
- <string name="status_bar_help_title" msgid="1199237744086469217">"Ծանուցումները հայտնվում են այստեղ"</string>
- <string name="status_bar_help_text" msgid="7874607155052076323">"Դրանք մատչեք ցանկացած պահի` սահահարվածելով:\nԿրկին սահահարվածեք ներքև` համակարգային կառավարման համար:"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 2b2340530f00..6a702b9f3f85 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Selalu izinkan dari komputer ini"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Perbesar utk mengisi layar"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Rentangkn utk mngisi layar"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Perbesar/perkecil untuk kompatibilitas"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Saat apl dirancang untuk layar yang lebih kecil, kontrol zoom akan tampil di dekat jam."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Menyimpan tangkapan layar..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Menyimpan tangkapan layar..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Tangkapan layar sedang disimpan."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Utama"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menu"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Apl terbaru"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Telusuri"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Kamera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Tombol beralih metode masukan."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Tombol perbesar/perkecil kompatibilitas."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Perbesar dari layar kecil ke besar."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi tersambung"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Menelusuri GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Lokasi yang disetel oleh GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Permintaan lokasi aktif"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Menghapus semua pemberitahuan."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Info aplikasi"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Layar akan diputar secara otomatis."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Layar dikunci dalam orientasi lanskap."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Layar dikunci dalam orientasi potret."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Etalase Hidangan Penutup"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Lamunan"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Mode pesawat"</string>
@@ -183,8 +182,10 @@
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Rotasi Otomatis"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotasi Dikunci"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"Metode Masukan"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Lokasi"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Lokasi Mati"</string>
+ <!-- no translation found for quick_settings_location_label (5011327048748762257) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_off_label (7464544086507331459) -->
+ <skip />
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Perangkat media"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Panggilan Darurat Saja"</string>
@@ -199,5 +200,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Layar Nirkabel"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Kecerahan"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"OTOMATIS"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Jaringan bisa\ndiawasi"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Pemberitahuan muncul di sini"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Akses kapan saja dengan menggesek ke bawah.\nGesek ke bawah sekali lagi untuk kontrol sistem."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Gesek tepi layar untuk membuka bilah"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Gesek dari bagian tepi layar untuk membuka bilah sistem"</string>
</resources>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index d833ec1a4776..a350d38d9257 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Consenti sempre da questo computer"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom per riempire schermo"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Estendi per riemp. schermo"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom compatibilità"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Se un\'applicazione è stata progettata per uno schermo più piccolo, accanto all\'orologio viene visualizzato un controllo dello zoom."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Salvataggio screenshot..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Salvataggio screenshot..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Screenshot in corso di salvataggio."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Home"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menu"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Applicazioni recenti"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Cerca"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Fotocamera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Pulsante per cambiare metodo di immissione."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Pulsante zoom compatibilità."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zoom inferiore per schermo più grande."</string>
@@ -116,8 +116,8 @@
<string name="accessibility_two_bars" msgid="6437363648385206679">"Due barre."</string>
<string name="accessibility_three_bars" msgid="2648241415119396648">"Tre barre."</string>
<string name="accessibility_signal_full" msgid="9122922886519676839">"Massimo segnale."</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"ON"</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"OFF"</string>
+ <string name="accessibility_desc_on" msgid="2385254693624345265">"Attivo."</string>
+ <string name="accessibility_desc_off" msgid="6475508157786853157">"Non attivo."</string>
<string name="accessibility_desc_connected" msgid="8366256693719499665">"Connesso."</string>
<string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
<string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
@@ -166,13 +166,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi connesso"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Ricerca del GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Posizione stabilita dal GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Richieste di accesso alla posizione attive"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Cancella tutte le notifiche."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informazioni applicazione"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Lo schermo ruoterà automaticamente."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Lo schermo è bloccato in orientamento orizzontale."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Lo schermo è bloccato in orientamento verticale."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Vetrina di dolci"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Modalità aereo"</string>
@@ -185,7 +184,7 @@
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Rotazione autom."</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotazione bloccata"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"Metodo di immissione"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Geolocalizzazione"</string>
+ <string name="quick_settings_location_label" msgid="5011327048748762257">"Posizione"</string>
<string name="quick_settings_location_off_label" msgid="7464544086507331459">"Posizione non attiva"</string>
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Dispositivo multimediale"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
@@ -201,5 +200,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Visualizzazione wireless"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Luminosità"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"La rete potrebbe\nessere monitorata"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Le notifiche vengono visualizzate qui"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Puoi accedervi in qualsiasi momento scorrendo verso il basso.\nFai scorrere di nuovo verso il basso per visualizzare i controlli del sistema."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Fai scorrere il bordo dello schermo per visualizzare la barra"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Fai scorrere il dito dal bordo dello schermo per visualizzare la barra di sistema"</string>
</resources>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 7dd99b64b0ab..b274dccfeee4 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -22,12 +22,12 @@
<string name="app_label" msgid="7164937344850004466">"ממשק משתמש של המערכת"</string>
<string name="status_bar_clear_all_button" msgid="7774721344716731603">"נקה"</string>
<string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"הסר מהרשימה"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"פרטי אפליקציה"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"אין אפליקציות אחרונות"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"סגור אפליקציות אחרונות"</string>
+ <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"פרטי יישום"</string>
+ <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"אין יישומים אחרונים"</string>
+ <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"סגור יישומים אחרונים"</string>
<plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"אפליקציה אחרונה אחת"</item>
- <item quantity="other" msgid="1040784359794890744">"%d האפליקציות האחרונות"</item>
+ <item quantity="one" msgid="5854176083865845541">"יישום אחרון אחד"</item>
+ <item quantity="other" msgid="1040784359794890744">"%d היישומים האחרונים"</item>
</plurals>
<string name="status_bar_no_notifications_title" msgid="4755261167193833213">"אין התראות"</string>
<string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"מתמשך"</string>
@@ -47,11 +47,11 @@
<string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth קשור"</string>
<string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"הגדר שיטות קלט"</string>
<string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"מקלדת פיזית"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"לאפשר לאפליקציה <xliff:g id="APPLICATION">%1$s</xliff:g> גישה להתקן ה-USB?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"לאפשר לאפליקציה <xliff:g id="APPLICATION">%1$s</xliff:g> גישה לאביזר ה-USB?"</string>
+ <string name="usb_device_permission_prompt" msgid="834698001271562057">"לאפשר ליישום <xliff:g id="APPLICATION">%1$s</xliff:g> גישה להתקן ה-USB?"</string>
+ <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"לאפשר ליישום <xliff:g id="APPLICATION">%1$s</xliff:g> גישה לאביזר ה-USB?"</string>
<string name="usb_device_confirm_prompt" msgid="5161205258635253206">"האם לפתוח את <xliff:g id="ACTIVITY">%1$s</xliff:g> כאשר מכשיר USB זה מחובר?"</string>
<string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"האם לפתוח את <xliff:g id="ACTIVITY">%1$s</xliff:g> כאשר אביזר USB זה מחובר?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"אין אפליקציות מותקנות הפועלות עם אביזר ה-USB. למידע נוסף על אביזר זה בקר בכתובת <xliff:g id="URL">%1$s</xliff:g>"</string>
+ <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"אין יישומים מותקנים הפועלים עם אביזר ה-USB. למידע נוסף על אביזר זה בקר בכתובת <xliff:g id="URL">%1$s</xliff:g>"</string>
<string name="title_usb_accessory" msgid="4966265263465181372">"אביזר USB"</string>
<string name="label_view" msgid="6304565553218192990">"הצג"</string>
<string name="always_use_device" msgid="1450287437017315906">"השתמש כברירת מחדל עבור מכשיר USB זה"</string>
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"אפשר תמיד ממחשב זה"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"הגדל תצוגה כדי למלא את המסך"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"מתח כדי למלא את המסך"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"שינוי מרחק מתצוגה לצורך תאימות"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"כאשר יישום מיועד למסך קטן יותר, פקד של מרחק מתצוגה יופיע ליד השעון."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"שומר צילום מסך..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"שומר צילום מסך..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"מתבצעת שמירה של צילום המסך."</string>
@@ -71,13 +73,11 @@
<string name="usb_preference_title" msgid="6551050377388882787">"אפשרויות העברת קבצים ב-USB"</string>
<string name="use_mtp_button_title" msgid="4333504413563023626">"טען כנגן מדיה (MTP)"</string>
<string name="use_ptp_button_title" msgid="7517127540301625751">"טען כמצלמה (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"התקן את אפליקציית העברת הקבצים של Android עבור Mac"</string>
+ <string name="installer_cd_button_title" msgid="2312667578562201583">"התקן את יישום העברת הקבצים של Android עבור Mac"</string>
<string name="accessibility_back" msgid="567011538994429120">"הקודם"</string>
<string name="accessibility_home" msgid="8217216074895377641">"בית"</string>
<string name="accessibility_menu" msgid="316839303324695949">"תפריט"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"אפליקציות אחרונות"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"חפש"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"מצלמה"</string>
+ <string name="accessibility_recent" msgid="8571350598987952883">"יישומים אחרונים"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"לחצן החלפת שיטת קלט."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"לחצן מרחק מתצוגה של תאימות."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"שנה מרחק מתצוגה של מסך קטן לגדול יותר."</string>
@@ -146,7 +146,7 @@
<string name="accessibility_notification_dismissed" msgid="854211387186306927">"הודעה נדחתה."</string>
<string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"תריס התראות."</string>
<string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"הגדרות מהירות."</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"אפליקציות אחרונות"</string>
+ <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"יישומים אחרונים"</string>
<string name="accessibility_quick_settings_user" msgid="1104846699869476855">"משתמש <xliff:g id="USER">%s</xliff:g>."</string>
<string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>‏. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
<string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"נייד <xliff:g id="SIGNAL">%1$s</xliff:g>.‏ <xliff:g id="TYPE">%2$s</xliff:g>.‏ <xliff:g id="NETWORK">%3$s</xliff:g>.‏"</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi מחובר"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"מחפש GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"מיקום מוגדר על ידי GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"בקשות מיקום פעילות"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"נקה את כל ההתראות."</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"פרטי אפליקציה"</string>
+ <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"פרטי יישום"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"המסך יסתובב באופן אוטומטי."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"המסך נעול כעת לרוחב."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"המסך נעול כעת לאורך."</string>
- <string name="dessert_case" msgid="1295161776223959221">"מזנון קינוחים"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"חלום בהקיץ"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"מצב טיסה"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"תצוגת Wi-Fi"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"בהירות"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"אוטומטי"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"ייתכן שהרשת\nמנוטרת"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"הודעות מופיעות כאן"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"גש אליהם בכל עת על ידי החלקה למטה.\nהחלק למטה שוב למעבר למרכז הבקרה של המערכת."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"החלק מקצה המסך כדי להציג את הסרגל"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"החלק מקצה המסך כדי להציג את סרגל המערכת"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 725d59923cab..7392ae9e09a9 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"このパソコンからのUSBデバッグを常に許可する"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"画面サイズに合わせて拡大"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"画面サイズに合わせて拡大"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"互換ズーム"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"より小型の画面向けのアプリの場合は、ズームコントロールが時計のそばに表示されます。"</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"スクリーンショットを保存中..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"スクリーンショットを保存しています..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"スクリーンショットを保存しています。"</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"ホーム"</string>
<string name="accessibility_menu" msgid="316839303324695949">"メニュー"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"最近使ったアプリ"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"検索"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"カメラ"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"入力方法の切り替えボタン。"</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"互換ズームボタン。"</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"小さい画面から大きい画面に拡大。"</string>
@@ -166,13 +166,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi接続済み"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"GPSで検索中"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"GPSにより現在地が設定されました"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"現在地リクエストがアクティブ"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"通知をすべて消去。"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"アプリ情報"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"画面は自動的に回転します。"</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"画面は横向きにロックされています。"</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"画面は縦向きにロックされています。"</string>
- <string name="dessert_case" msgid="1295161776223959221">"デザートケース"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"スクリーンセーバー"</string>
<string name="ethernet_label" msgid="7967563676324087464">"イーサネット"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"機内モード"</string>
@@ -201,5 +200,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"ワイヤレスディスプレイ"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"画面の明るさ"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"自動"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"ネットワークが監視される\n場合があります"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"ここに通知が表示されます"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"下にスワイプすると、いつでも通知を表示できます。\nシステムを管理するにはもう一度下にスワイプしてください。"</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"バーを表示するには、画面の端からスワイプします"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"システムバーを表示するには、画面の端からスワイプします"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ka-rGE-land/strings.xml b/packages/SystemUI/res/values-ka-rGE-land/strings.xml
deleted file mode 100644
index 3f2093800a5e..000000000000
--- a/packages/SystemUI/res/values-ka-rGE-land/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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-ka-rGE/strings.xml b/packages/SystemUI/res/values-ka-rGE/strings.xml
deleted file mode 100644
index a3d98b7c9ec9..000000000000
--- a/packages/SystemUI/res/values-ka-rGE/strings.xml
+++ /dev/null
@@ -1,203 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"სისტემის UI"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"გასუფთავება"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"სიიდან ამოშლა"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"აპის შესახებ"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"ბოლოს გამოყენებული აპების სია ცარიელია"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"ბოლო აპების გაუქმება"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"1 ბოლო აპი"</item>
- <item quantity="other" msgid="1040784359794890744">"%d ბოლო აპი"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"შეტყობინებები არ არის."</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"მიმდინარე"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"შეტყობინებები"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"შეაერთეთ დამტენი."</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"ბატარეა ჯდება."</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"დარჩენილია <xliff:g id="NUMBER">%d%%</xliff:g>"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"USB-ით დატენვა არ არის მხარდაჭერილი.\nგამოიყენეთ მხოლოდ ელექტრო-დამტენი."</string>
- <string name="battery_low_why" msgid="7279169609518386372">"ელემენტის გამოყენება"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"პარამეტრები"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"თვითმფრინავის რეჟიმი"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"ავტოროტაციის ეკრანი"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"დადუმება"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"ავტო."</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"შეტყობინებები"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth მიერთებულია."</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"შეყვანის მეთოდების დაყენება"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"ფიზიკური კლავიატურა"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"გსურთ, მისცეთ აპლიკაციას „<xliff:g id="APPLICATION">%1$s</xliff:g>“ USB მეხსიერებასთან წვდომის უფლება?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"გსურთ, მისცეთ აპლიკაციას „<xliff:g id="APPLICATION">%1$s</xliff:g>“ USB აქსესუართან წვდომის უფლება?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"გსურთ <xliff:g id="ACTIVITY">%1$s</xliff:g> , როდესაც ეს USB მოწყობილობა შეერთებულია?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"გსურთ <xliff:g id="ACTIVITY">%1$s</xliff:g> , როდესაც ეს USB მოწყობილობა შეერთებულია?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"არცერთი დაყენებული აპი არ მუშაობს ამ USB აქსესუართან. შეიტყვეთ მეტი ამ აქსესუარის შესახებ <xliff:g id="URL">%1$s</xliff:g>"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"USB აქსესუარი"</string>
- <string name="label_view" msgid="6304565553218192990">"ნახვა"</string>
- <string name="always_use_device" msgid="1450287437017315906">"ამ USB მოწყობილობის ნაგულისხმევად გამოყენება"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"ავტომატურად გამოიყენე ამ USB აქსესუარისთვის."</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"გააქტიურდეს USB გამართვა?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"კომპიუტერის RSA გასაღების თითის ანაბეჭდია:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"ყოველთვის დართე ნება ამ კომპიუტერიდან."</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"მასშტაბი შეცვალეთ ეკრანის შესავსებად."</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"გაწიეთ ეკრანის შესავსებად."</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"სკრინშოტის შენახვა…"</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"ეკრანის სურათის შენახვა…"</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"ეკრანის სურათი შენახულია."</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"სკრინშოტი გადაღებულია."</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"შეეხეთ ეკრანის სურათის სანახავად."</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"ვერ მოხერხდა ეკრანის ანაბეჭდის გადაღება."</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"ეკრანის სურათი ვერ შეინახა. შესაძლოა, მეხსიერება უკვე დაკავებულია."</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB ფაილის ტრანსფერის პარამეტრები"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"მედია-საკრავად (MTP) ჩართვა"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"მიუერთეთ როგორც კამერა (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"Android File Transfer აპის დაყენება Mac-თვის"</string>
- <string name="accessibility_back" msgid="567011538994429120">"უკან"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"საწყისი"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"მენიუ"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"ბოლოს გამოყენებული აპები"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"ძიება"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"კამერა"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"შეყვანის მეთოდის გადართვის ღილაკი."</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"თავსებადი მასშტაბირების ღილაკი."</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"შეცვალეთ პატარა ეკრანი უფრო დიდით."</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"Bluetooth დაკავშირებულია."</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"Bluetooth კავშირი გაწყვეტილია."</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"ბატარეა დამჯდარია."</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"ბატარეია ერთ ზოლზეა."</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"ელემენტი ორ ზოლზე."</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"ელემენტი სამ ზოლზე."</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"ელემენტი სავსეა."</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"ტელეფონი არ არის."</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"ტელეფონის სიგნალი ერთ ზოლზეა."</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"ტელეფონის სიგნალი ორ ზოლზეა."</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"ტელეფონის სიგნალი სამ ზოლზეა."</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"ტელეფონის სიგნალი სრულია."</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"მონაცემები არ არის."</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"თარიღი ზოლზე."</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"მონაცემების გადაცემა: ორი ზოლი"</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"მონაცემების გადაცემა: სამი ზოლი"</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"მონაცემთა გადაცემის საიმედო სიგნალი."</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"Wifi გამორთულია."</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"Wifi არ არის დაკავშირებული."</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"Wifi სიგნალი ერთ ზოლზეა."</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"Wifi სიგნალი ორ ზოლზეა."</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"Wifi სამი ზოლი."</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"Wifi სიგნალი სრულია."</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX არ არის."</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX ერთი სვეტი."</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX-ის ორი ზოლი."</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX-ის სამი ზოლი."</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX სიგნალი სრულია."</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"სიგნალი არ არის."</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"არ არის დაკავშირებული."</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"სიგნალი ნულ ზოლზეა."</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"ერთი ზოლი."</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"ორი სვეტი."</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"სამი ზოლი."</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"სრული სიგნალი."</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"ჩართული"</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"გამორთულია."</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"დაკავშირებულია."</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5გბ"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"როუმინგი"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM არ არის."</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-ის ჩართვა"</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"თვითმფრინავის რეჟიმი"</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"ბატარეა: <xliff:g id="NUMBER">%d</xliff:g> პროცენტი."</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"სისტემის პარამეტრები."</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"შეტყობინებები"</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"შეტყობინებების გასუფთავება."</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS გააქტიურდა."</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"GPS-ის დადგენა."</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"ტელეტაიპი ჩართულია."</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"ვიბრაციის რეჟიმი."</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"უხმო რეჟიმი."</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g> ამოშლილია სიიდან."</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"შეტყობინება წაიშალა."</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"შეტყობინებების ფარდა"</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"სწრაფი პარამეტრები"</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"ბოლო აპები."</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"მომხმარებელი: <xliff:g id="USER">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"მობილურის <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"ელემენტი: <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"თვითმფრინავის რეჟიმი <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"მაღვიძარა დაყენებულია: <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G ინტერნეტი გაითიშა."</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G მონაცემები გათიშულია"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"მობილური ინტერნეტი გაითიშა."</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"ინტერნეტი გაითიშა."</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"თქვენ მიაღწიეთ ინტერნეტის გამოყენების განსაზღვრულ ლიმიტს.\n\nთუ გააქტიურებთ ინტერნეტს, შესაძლოა მობილური ოპერატორისთვის დამატებითი თანხის გადახდა მოგიწიოთ."</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"მონაცემების ხელახლა ჩართვა"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"ინტერნეტ კავშირი არ არის"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi დაკავშირებულია"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS-ის ძებნა"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"GPS-ით დადგენილი მდებარეობა"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"მდებარეობის მოთხოვნები აქტიურია"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"ყველა შეტყობინების წაშლა"</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"აპის შესახებ"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ეკრანი შეტრიალდება ავტომატურად."</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"ეკრანი დაბლოკილია თარაზულ ორიენტაციაში"</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"ეკრანი დაბლოკილია პორტრეტის ორიენტაციაში."</string>
- <string name="dessert_case" msgid="1295161776223959221">"სადესერტო ყუთი"</string>
- <string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"ეთერნეტი"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"თვითმფრინავის რეჟიმი"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"დამუხტვა, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"დამუხტულია"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> მოწყობილობა)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth გამორთულია"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"სიკაშკაშე"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"ავტო მობრუნება"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"როტაციის ჩაკეტვა"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"შეყვანის მეთოდი"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"მდებარეობა"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"მდებარეობა გამორთულია"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"მედია მოწყობილობა"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"მხოლოდ გადაუდებელი დახმარების ზარებისთვის"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"პარამეტრები"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"დრო"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"მე"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"არ არის დაკავშირებული."</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"ქსელი არ არის"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi გამორთულია"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi ეკრანი"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"უსადენო ეკრანი"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"განათება"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"ავტომატურად"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"შესაძლოა ქსელზე\nმონიტორინგი ხორციელდებოდეს"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
deleted file mode 100644
index bcbe4de95801..000000000000
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"სისტემის UI"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"გასუფთავება"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"სიიდან ამოშლა"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"აპის შესახებ"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"ბოლოს გამოყენებული აპების სია ცარიელია"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"ბოლო აპების გაუქმება"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"1 ბოლო აპი"</item>
- <item quantity="other" msgid="1040784359794890744">"%d ბოლო აპი"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"შეტყობინებები არ არის."</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"მიმდინარე"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"შეტყობინებები"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"შეაერთეთ დამტენი."</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"ბატარეა ჯდება."</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"დარჩენილია <xliff:g id="NUMBER">%d%%</xliff:g>"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"USB-ით დატენვა არ არის მხარდაჭერილი.\nგამოიყენეთ მხოლოდ ელექტრო-დამტენი."</string>
- <string name="battery_low_why" msgid="7279169609518386372">"ელემენტის გამოყენება"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"პარამეტრები"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"თვითმფრინავის რეჟიმი"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"ავტოროტაციის ეკრანი"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"დადუმება"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"ავტომატური"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"შეტყობინებები"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth მიერთებულია."</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"შეყვანის მეთოდების დაყენება"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"ფიზიკური კლავიატურა"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"გსურთ, მისცეთ აპლიკაციას „<xliff:g id="APPLICATION">%1$s</xliff:g>“ USB მეხსიერებასთან წვდომის უფლება?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"გსურთ, მისცეთ აპლიკაციას „<xliff:g id="APPLICATION">%1$s</xliff:g>“ USB აქსესუართან წვდომის უფლება?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"გსურთ <xliff:g id="ACTIVITY">%1$s</xliff:g> , როდესაც ეს USB მოწყობილობა შეერთებულია?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"გსურთ <xliff:g id="ACTIVITY">%1$s</xliff:g> , როდესაც ეს USB მოწყობილობა შეერთებულია?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"არცერთი დაყენებული აპი არ მუშაობს ამ USB აქსესუართან. შეიტყვეთ მეტი ამ აქსესუარის შესახებ <xliff:g id="URL">%1$s</xliff:g>"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"USB აქსესუარი"</string>
- <string name="label_view" msgid="6304565553218192990">"ნახვა"</string>
- <string name="always_use_device" msgid="1450287437017315906">"ამ USB მოწყობილობის ნაგულისხმევად გამოყენება"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"ავტომატურად გამოიყენე ამ USB აქსესუარისთვის."</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"გააქტიურდეს USB გამართვა?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"კომპიუტერის RSA გასაღების თითის ანაბეჭდია:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"ყოველთვის დართე ნება ამ კომპიუტერიდან."</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"მასშტაბი შეცვალეთ ეკრანის შესავსებად."</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"გაწიეთ ეკრანის შესავსებად."</string>
- <string name="compat_mode_help_header" msgid="7969493989397529910">"თავსებადობის მასშტაბი"</string>
- <string name="compat_mode_help_body" msgid="4946726776359270040">"თუ აპი გათვლილია მცირე ეკრანისთვის, საათის გვერდით გაჩნდება მასშტაბის მართვის ელემენტი."</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"სკრინშოტის შენახვა…"</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"ეკრანის სურათის შენახვა…"</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"ეკრანის სურათი შენახულია."</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"სკრინშოტი გადაღებულია."</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"შეეხეთ ეკრანის სურათის სანახავად."</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"ვერ მოხერხდა ეკრანის ანაბეჭდის გადაღება."</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"ეკრანის სურათი ვერ შეინახა. შესაძლოა, მეხსიერება უკვე დაკავებულია."</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB ფაილის ტრანსფერის პარამეტრები"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"მედია-საკრავად (MTP) ჩართვა"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"მიუერთეთ როგორც კამერა (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"Android File Transfer აპის დაყენება Mac-თვის"</string>
- <string name="accessibility_back" msgid="567011538994429120">"უკან"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"საწყისი"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"მენიუ"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"ბოლოს გამოყენებული აპები"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"შეყვანის მეთოდის გადართვის ღილაკი."</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"თავსებადი მასშტაბირების ღილაკი."</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"შეცვალეთ პატარა ეკრანი უფრო დიდით."</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"Bluetooth დაკავშირებულია."</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"Bluetooth კავშირი გაწყვეტილია."</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"ბატარეა დამჯდარია."</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"ბატარეია ერთ ზოლზეა."</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"ელემენტი ორ ზოლზე."</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"ელემენტი სამ ზოლზე."</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"ელემენტი სავსეა."</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"ტელეფონი არ არის."</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"ტელეფონის სიგნალი ერთ ზოლზეა."</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"ტელეფონის სიგნალი ორ ზოლზეა."</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"ტელეფონის სიგნალი სამ ზოლზეა."</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"ტელეფონის სიგნალი სრულია."</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"მონაცემები არ არის."</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"თარიღი ზოლზე."</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"მონაცემების გადაცემა: ორი ზოლი"</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"მონაცემების გადაცემა: სამი ზოლი"</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"მონაცემთა გადაცემის საიმედო სიგნალი."</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"Wifi გამორთულია."</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"Wifi არ არის დაკავშირებული."</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"Wifi სიგნალი ერთ ზოლზეა."</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"Wifi სიგნალი ორ ზოლზეა."</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"Wifi სამი ზოლი."</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"Wifi სიგნალი სრულია."</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX არ არის."</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX ერთი სვეტი."</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX-ის ორი ზოლი."</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX-ის სამი ზოლი."</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX სიგნალი სრულია."</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"სიგნალი არ არის."</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"არ არის დაკავშირებული."</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"სიგნალი ნულ ზოლზეა."</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"ერთი ზოლი."</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"ორი სვეტი."</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"სამი ზოლი."</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"სრული სიგნალი."</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"ჩართული"</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"გამორთულია."</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"დაკავშირებულია."</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5გბ"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"როუმინგი"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM არ არის."</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-ის ჩართვა"</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"თვითმფრინავის რეჟიმი"</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"ბატარეა: <xliff:g id="NUMBER">%d</xliff:g> პროცენტი."</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"სისტემის პარამეტრები."</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"შეტყობინებები"</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"შეტყობინებების გასუფთავება."</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS გააქტიურდა."</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"GPS-ის დადგენა."</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"ტელეტაიპი ჩართულია."</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"ვიბრაციის რეჟიმი."</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"უხმო რეჟიმი."</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g> ამოშლილია სიიდან."</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"შეტყობინება წაიშალა."</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"შეტყობინებების ფარდა"</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"სწრაფი პარამეტრები"</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"ბოლო აპები."</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"მომხმარებელი: <xliff:g id="USER">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"მობილურის <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"ელემენტი: <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"თვითმფრინავის რეჟიმი <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"მაღვიძარა დაყენებულია: <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G ინტერნეტი გაითიშა."</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G მონაცემები გათიშულია"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"მობილური ინტერნეტი გაითიშა."</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"ინტერნეტი გაითიშა."</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"თქვენ მიაღწიეთ ინტერნეტის გამოყენების განსაზღვრულ ლიმიტს.\n\nთუ გააქტიურებთ ინტერნეტს, შესაძლოა მობილური ოპერატორისთვის დამატებითი თანხის გადახდა მოგიწიოთ."</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"მონაცემების ხელახლა ჩართვა"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"ინტერნეტ კავშირი არ არის"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi დაკავშირებულია"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS-ის ძებნა"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"GPS-ით დადგენილი მდებარეობა"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"მდებარეობის მოთხოვნები აქტიურია"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"ყველა შეტყობინების წაშლა"</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"აპის შესახებ"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ეკრანი შეტრიალდება ავტომატურად."</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"ეკრანი დაბლოკილია თარაზულ ორიენტაციაში"</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"ეკრანი დაბლოკილია პორტრეტის ორიენტაციაში."</string>
- <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
- <string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"ეთერნეტი"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"თვითმფრინავის რეჟიმი"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"დამუხტვა, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"დამუხტულია"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> მოწყობილობა)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth გამორთულია"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"სიკაშკაშე"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"ავტოროტაცია"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"როტაციის ჩაკეტვა"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"შეყვანის მეთოდი"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"მდებარეობა"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"მდებარეობა გამორთულია"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"მედია მოწყობილობა"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"მხოლოდ გადაუდებელი დახმარების ზარებისთვის"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"პარამეტრები"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"დრო"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"მე"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"არ არის დაკავშირებული."</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"ქსელი არ არის"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi გამორთულია"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi ეკრანი"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"უსადენო ეკრანი"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"განათება"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"ავტომატურად"</string>
- <string name="status_bar_help_title" msgid="1199237744086469217">"შეტყობინებები აქ გამოჩნდება"</string>
- <string name="status_bar_help_text" msgid="7874607155052076323">"მათზე წვდომისათვის, ნებისმიერ დროს გადაფურცლეთ ქვემოთ.\nსისტემის კონტროლისთვისაც გადაფურცლეთ ქვემოთ."</string>
-</resources>
diff --git a/packages/SystemUI/res/values-km-rKH-land/strings.xml b/packages/SystemUI/res/values-km-rKH-land/strings.xml
deleted file mode 100644
index f148cc35b261..000000000000
--- a/packages/SystemUI/res/values-km-rKH-land/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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-km-rKH/strings.xml b/packages/SystemUI/res/values-km-rKH/strings.xml
deleted file mode 100644
index 02e641c29201..000000000000
--- a/packages/SystemUI/res/values-km-rKH/strings.xml
+++ /dev/null
@@ -1,203 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"ចំណុច​ប្រទាក់​ប្រព័ន្ធ"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"សម្អាត"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"យក​ចេញ​ពី​បញ្ជី"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"ព័ត៌មាន​កម្មវិធី"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"គ្មាន​កម្មវិធី​ថ្មីៗ"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"បដិសេធ​កម្មវិធី​ថ្មីៗ"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"កម្មវិធី​ថ្មី ១"</item>
- <item quantity="other" msgid="1040784359794890744">"កម្មវិធី​ថ្មីៗ %d"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"គ្មាន​ការ​ជូន​ដំណឹង"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"បន្ត"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"ការ​ជូន​ដំណឹង"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"ភ្ជាប់​ឧបករណ៍​បញ្ចូល​ថ្ម"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"ជិត​អស់​ថ្ម​ហើយ។"</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"នៅ​សល់ <xliff:g id="NUMBER">%d%%</xliff:g>"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"មិន​គាំទ្រ​ការ​បញ្ចូល​តាម​យូអេសប៊ី។\nប្រើ​តែ​ឧបករណ៍​បញ្ចូល​ថ្ម​ដែល​បាន​ផ្ដល់។"</string>
- <string name="battery_low_why" msgid="7279169609518386372">"ការ​ប្រើ​ថ្ម"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"ការ​កំណត់"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"វ៉ាយហ្វាយ"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"ពេល​ជិះ​យន្តហោះ"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"បង្វិល​អេក្រង់​ស្វ័យ​ប្រវត្តិ"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"ស្ងាត់"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"ស្វ័យប្រវត្តិ"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"ការ​ជូន​ដំណឹង"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"បាន​ភ្ជាប់​ប៊្លូធូស"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"រៀបចំ​វិធីសាស្ត្រ​បញ្ចូល"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"ក្ដារ​ចុច​ពិតប្រាកដ"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"ឲ្យ​កម្មវិធី <xliff:g id="APPLICATION">%1$s</xliff:g> ចូល​ដំណើរការ​ឧបករណ៍​យូអេសប៊ី?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"ឲ្យ​កម្មវិធី <xliff:g id="APPLICATION">%1$s</xliff:g> ចូល​ដំណើរការ​ឧបករណ៍​យូអេសប៊ី?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"បើក <xliff:g id="ACTIVITY">%1$s</xliff:g> ពេល​បាន​ភ្ជាប់​ឧបករណ៍​យូអេសប៊ី​នេះ?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"បើក <xliff:g id="ACTIVITY">%1$s</xliff:g> ពេល​បាន​ភ្ជាប់​ឧបករណ៍​យូអេសប៊ី?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"គ្មាន​កម្មវិធី​បាន​ដំឡើង​ដំណើរការ​ជា​មួយ​ឧបករណ៍​យូអេសប៊ី។ ស្វែងយល់​បន្ថែម​អំពី​ឧបករណ៍​នេះ​នៅ <xliff:g id="URL">%1$s</xliff:g>"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"ឧបករណ៍​យូអេសប៊ី"</string>
- <string name="label_view" msgid="6304565553218192990">"មើល"</string>
- <string name="always_use_device" msgid="1450287437017315906">"ប្រើ​តាម​លំនាំដើម​សម្រាប់​ឧបករណ៍​យូអេសប៊ី​នេះ"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"ប្រើ​តាម​លំនាំដើម​សម្រាប់​ខ្សែ​យូអេសប៊ី​នេះ"</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"អនុញ្ញាត​ការ​កែ​កំហុស​យូអេសប៊ី?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"ស្នាម​ម្រាម​ដៃ​ RSA របស់​កុំព្យូទ័រ​គឺ៖ \n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"អនុញ្ញាត​ជា​និច្ច​សម្រាប់​កុំព្យូទ័រ​នេះ"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"ពង្រីក​​ដើម្បី​ឲ្យ​ពេញ​អេក្រង់"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"ទាញ​ដើម្បី​ឲ្យ​ពេញ​អេក្រង់"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"កំពុង​រក្សាទុក​រូបថត​អេក្រង់…"</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"កំពុង​រក្សាទុក​រូបថត​អេក្រង់..."</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"រូបថត​អេក្រង់​កំពុង​ត្រូវ​បាន​រក្សាទុក។"</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"បាន​ចាប់​យក​រូបថត​អេក្រង់។"</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"ប៉ះ ​ដើម្បី​មើល​រូបថត​អេក្រង់​របស់​អ្នក​។"</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"មិន​អាច​ចាប់​យក​រូប​ថត​អេក្រង់​។"</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"មិន​អាច​រក្សាទុក​រូបថត​អេក្រង់​។ ឧបករណ៍​ផ្ទុក​អាច​កំពុង​ប្រើ​​។"</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"ជម្រើស​ផ្ទេរ​ឯកសារ​តាម​យូអេសប៊ី"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"ភ្ជាប់​ជា​កម្មវិធី​ចាក់​មេឌៀ (MTP)"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"ភ្ជាប់​ជា​ម៉ាស៊ីន​ថត (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"ដំឡើង​កម្មវិធី​ផ្ទេរ​ឯកសារ Android សម្រាប់ Mac"</string>
- <string name="accessibility_back" msgid="567011538994429120">"ថយក្រោយ"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"គេហ​ទំព័រ"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"ម៉ឺនុយ"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"កម្មវិធី​ថ្មីៗ"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"ស្វែងរក"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"ម៉ាស៊ីន​ថត"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"ប្ដូរ​ប៊ូតុង​វិធីសាស្ត្រ​បញ្ចូល។"</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"ប៊ូតុង​ពង្រីក​ត្រូវ​គ្នា។"</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"ពង្រីក/បង្រួម​​អេក្រង់​ពី​​ទៅធំ"</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"បាន​តភ្ជាប់​ប៊្លូធូស។"</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"បាន​ផ្ដាច់​​ប៊្លូធូស។"</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"គ្មាន​ថ្ម។"</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"ថ្ម​មួយ​កាំ។"</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"ថ្ម​ពីរ​កាំ។"</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"ថ្ម​ទាំង​បី​​កាំ​។"</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"ថ្ម​ពេញ​ហើយ។"</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"គ្មាន​ទូរស័ព្ទ។"</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"សេវា​ទូរស័ព្ទ​មួយ​កាំ។"</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"សេវា​ទូរស័ព្ទ​ពីរ​កាំ។"</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"សេវា​ទូរស័ព្ទ​បី​កាំ​។"</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"សេវា​ទូរស័ព្ទ​ពេញ។"</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"គ្មាន​ទិន្នន័យ​។"</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"ទិន្នន័យ​មួយ​​កាំ។"</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"ទិន្នន័យ​ពីរ​​កាំ។"</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"ទិន្នន័យ​បី​កាំ។"</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"សញ្ញា​ទិន្នន័យ​ពេញ។"</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"បិទ​វ៉ាយហ្វាយ។"</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"បាន​ផ្ដាច់​វ៉ាយហ្វាយ។"</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"សញ្ញា​វ៉ាយហ្វាយ​មួយ​កាំ។"</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"សេវា​វ៉ាយហ្វាយ​ពីរ​កាំ។"</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"វ៉ាយហ្វាយ​បី​កាំ។"</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"សញ្ញា​វ៉ាយហ្វាយ​ពេញ។"</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"គ្មាន WiMAX ។"</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX មួយ​កាំ។"</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX ពីរ​កាំ។"</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX បី​កាំ។"</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"សញ្ញា WiMAX ពេញ។"</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"គ្មាន​សញ្ញា។"</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"មិន​បាន​តភ្ជាប់​។"</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"សូន្យ​កាំ។"</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"មួយ​កាំ។"</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"ពីរ​កាំ។"</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"បី​កាំ។"</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"សញ្ញា​ពេញ​​។"</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"បើក។"</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"បិទ"</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"បាន​តភ្ជាប់។"</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"រ៉ូ​មីង"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"វ៉ាយហ្វាយ"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"គ្មាន​ស៊ីម​កាត។"</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ការ​ភ្ជាប់​ប៊្លូធូស។"</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"របៀប​​ពេលជិះ​យន្តហោះ"</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"ថ្ម <xliff:g id="NUMBER">%d</xliff:g> ភាគរយ។"</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"ការ​កំណត់​ប្រព័ន្ធ​។"</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"ការ​ជូន​ដំណឹង។"</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"សម្អាត​ការ​ជូន​ដំណឹង។"</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"បាន​បើក GPS ។"</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"ទទួល​​ GPS ។"</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"បាន​បើក​ម៉ាស៊ីន​អង្គុលីលេខ"</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"កម្មវិធី​រោទ៍​ញ័រ។"</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"កម្មវិធី​រោទ៍​ស្ងាត់។"</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g> បដិសេធ។"</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"បាន​បដិសេធ​ការ​ជូនដំណឹង"</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"ពណ៌​ការ​ជូន​ដំណឹង"</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"ការ​កំណត់​រហ័ស។"</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"កម្មវិធី​ថ្មី​ៗ។"</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"អ្នក​ប្រើ <xliff:g id="USER">%s</xliff:g> ។"</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"ចល័ត <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"ថ្ម <xliff:g id="STATE">%s</xliff:g> ។"</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"របៀបពេល​ជិះ​យន្ត​ហោះ <xliff:g id="STATE">%s</xliff:g> ។"</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"ប៊្លូធូស <xliff:g id="STATE">%s</xliff:g> ។"</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"កំណត់​សំឡេង​រោទ៍​សម្រាប់ <xliff:g id="TIME">%s</xliff:g> ។"</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"បាន​បិទ​ទិន្នន័យ 2G-3G"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"បាន​បិទ​ទិន្នន័យ 4G"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"បាន​បិទ​ទិន្នន័យ​ចល័ត"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"បាន​បិទ​ទិន្នន័យ"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"អ្នក​បាន​ដល់​ដែន​កំណត់​ប្រើ​ទិន្នន័យ​បាន​បញ្ជាក់។\n\nបើ​អ្នក​បើក​ទិន្នន័យ​ឡើងវិញ អ្នក​អាច​ត្រូវ​បាន​ប្ដូរ​ដោយ​ប្រតិបត្តិ​ករ។"</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"បើក​​ទិន្នន័យ​ឡើងវិញ"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"គ្មាន​ការ​តភ្ជាប់​អ៊ីនធឺណិត"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"បាន​ភ្ជាប់​វ៉ាយហ្វាយ"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"ស្វែងរក GPS"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"ទីតាំង​​​​​កំណត់​ដោយ GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"សំណើ​ទីតាំង​សកម្ម"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"សម្អាត​ការ​ជូន​ដំណឹង​ទាំងអស់។"</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"ព័ត៌មាន​កម្មវិធី"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"នឹង​បង្វិល​អេក្រង់​ស្វ័យ​ប្រវត្តិ។"</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"អេក្រង់​ជាប់​សោ​ក្នុង​ទិស​ផ្ដេក។"</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"បា​ន​ចាក់​សោ​អេក្រង់​​ក្នុង​ទិស​បញ្ឈរ។"</string>
- <string name="dessert_case" msgid="1295161776223959221">"ករណី Dessert"</string>
- <string name="start_dreams" msgid="7219575858348719790">"ស្រមើ​ស្រមៃ"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"អ៊ីសឺរណិត"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"របៀបពេល​​ជិះ​យន្តហោះ"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"បញ្ចូល​ថ្ម <xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"បាន​បញ្ចូល​ពេញ"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"ប៊្លូធូស"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"ប៊្លូធូស (ឧបករណ៍ <xliff:g id="NUMBER">%d</xliff:g>)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"បិទ​ប៊្លូធូស"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"ពន្លឺ"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"បង្វិល​​ស្វ័យ​ប្រវត្តិ"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"បាន​ចាក់​សោ​ការ​បង្វិល"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"វិធីសាស្ត្រ​បញ្ចូល"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"ទី​តាំង"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"ទីតាំង​បិទ"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"ឧបករណ៍​មេឌៀ"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"សម្រាប់​តែ​ការ​ហៅ​ពេល​អាសន្ន"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"ការ​កំណត់"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"ពេលវេលា"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"ខ្ញុំ"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"វ៉ាយហ្វាយ"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"មិន​បាន​តភ្ជាប់"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"គ្មាន​បណ្ដាញ"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"បិទ​វ៉ាយហ្វាយ"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"បង្ហា​ញ​វ៉ាយហ្វាយ"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"​បង្ហាញ​បណ្ដាញ​ឥត​ខ្សែ"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"ពន្លឺ"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"ស្វ័យប្រវត្តិ"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"បណ្ដាញ​អាច​\nត្រូវ​បាន​ត្រួតពិនិត្យ"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
deleted file mode 100644
index f97292545ab2..000000000000
--- a/packages/SystemUI/res/values-km/strings.xml
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"ចំណុច​ប្រទាក់​ប្រព័ន្ធ"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"សម្អាត"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"យក​ចេញ​ពី​បញ្ជី"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"ព័ត៌មាន​កម្មវិធី"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"គ្មាន​កម្មវិធី​ថ្មីៗ"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"បដិសេធ​កម្មវិធី​ថ្មីៗ"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"កម្មវិធី​ថ្មី ១"</item>
- <item quantity="other" msgid="1040784359794890744">"កម្មវិធី​ថ្មីៗ %d"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"គ្មាន​ការ​ជូន​ដំណឹង"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"បន្ត"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"ការ​ជូន​ដំណឹង"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"ភ្ជាប់​ឧបករណ៍​បញ្ចូល​ថ្ម"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"ជិត​អស់​ថ្ម​ហើយ។"</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"នៅ​សល់ <xliff:g id="NUMBER">%d%%</xliff:g>"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"មិន​គាំទ្រ​ការ​បញ្ចូល​តាម​យូអេសប៊ី។\nប្រើ​តែ​ឧបករណ៍​បញ្ចូល​ថ្ម​ដែល​បាន​ផ្ដល់។"</string>
- <string name="battery_low_why" msgid="7279169609518386372">"ការ​ប្រើ​ថ្ម"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"ការ​កំណត់"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"វ៉ាយហ្វាយ"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"ពេល​ជិះ​យន្តហោះ"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"បង្វិល​អេក្រង់​ស្វ័យ​ប្រវត្តិ"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"ស្ងាត់"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"ស្វ័យប្រវត្តិ"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"ការ​ជូន​ដំណឹង"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"បាន​ភ្ជាប់​ប៊្លូធូស"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"រៀបចំ​វិធីសាស្ត្រ​បញ្ចូល"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"ក្ដារ​ចុច​ពិតប្រាកដ"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"ឲ្យ​កម្មវិធី <xliff:g id="APPLICATION">%1$s</xliff:g> ចូល​ដំណើរការ​ឧបករណ៍​យូអេសប៊ី?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"ឲ្យ​កម្មវិធី <xliff:g id="APPLICATION">%1$s</xliff:g> ចូល​ដំណើរការ​ឧបករណ៍​យូអេសប៊ី?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"បើក <xliff:g id="ACTIVITY">%1$s</xliff:g> ពេល​បាន​ភ្ជាប់​ឧបករណ៍​យូអេសប៊ី​នេះ?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"បើក <xliff:g id="ACTIVITY">%1$s</xliff:g> ពេល​បាន​ភ្ជាប់​ឧបករណ៍​យូអេសប៊ី?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"គ្មាន​កម្មវិធី​បាន​ដំឡើង​ដំណើរការ​ជា​មួយ​ឧបករណ៍​យូអេសប៊ី។ ស្វែងយល់​បន្ថែម​អំពី​ឧបករណ៍​នេះ​នៅ <xliff:g id="URL">%1$s</xliff:g>"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"ឧបករណ៍​យូអេសប៊ី"</string>
- <string name="label_view" msgid="6304565553218192990">"មើល"</string>
- <string name="always_use_device" msgid="1450287437017315906">"ប្រើ​តាម​លំនាំដើម​សម្រាប់​ឧបករណ៍​យូអេសប៊ី​នេះ"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"ប្រើ​តាម​លំនាំដើម​សម្រាប់​ខ្សែ​យូអេសប៊ី​នេះ"</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"អនុញ្ញាត​ការ​កែ​កំហុស​យូអេសប៊ី?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"ស្នាម​ម្រាម​ដៃ​ RSA របស់​កុំព្យូទ័រ​គឺ៖ \n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"អនុញ្ញាត​ជា​និច្ច​សម្រាប់​កុំព្យូទ័រ​នេះ"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"ពង្រីក​​ដើម្បី​ឲ្យ​ពេញ​អេក្រង់"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"ទាញ​ដើម្បី​ឲ្យ​ពេញ​អេក្រង់"</string>
- <string name="compat_mode_help_header" msgid="7969493989397529910">"ការ​ពង្រីក​ត្រូវ​គ្នា"</string>
- <string name="compat_mode_help_body" msgid="4946726776359270040">"ពេល​កម្មវិធី​ត្រូវ​បាន​រៀបចំ​សម្រាប់​អេក្រង់​តូច ការ​គ្រប់គ្រង​ការ​ពង្រីក​នឹង​បង្ហាញ​តាម​នាឡិកា។"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"កំពុង​រក្សាទុក​រូបថត​អេក្រង់…"</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"កំពុង​រក្សាទុក​រូបថត​អេក្រង់..."</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"រូបថត​អេក្រង់​កំពុង​ត្រូវ​បាន​រក្សាទុក។"</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"បាន​ចាប់​យក​រូបថត​អេក្រង់។"</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"ប៉ះ ​ដើម្បី​មើល​រូបថត​អេក្រង់​របស់​អ្នក​។"</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"មិន​អាច​ចាប់​យក​រូប​ថត​អេក្រង់​។"</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"មិន​អាច​រក្សាទុក​រូបថត​អេក្រង់​។ ឧបករណ៍​ផ្ទុក​អាច​កំពុង​ប្រើ​​។"</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"ជម្រើស​ផ្ទេរ​ឯកសារ​តាម​យូអេសប៊ី"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"ភ្ជាប់​ជា​កម្មវិធី​ចាក់​មេឌៀ (MTP)"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"ភ្ជាប់​ជា​ម៉ាស៊ីន​ថត (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"ដំឡើង​កម្មវិធី​ផ្ទេរ​ឯកសារ Android សម្រាប់ Mac"</string>
- <string name="accessibility_back" msgid="567011538994429120">"ថយក្រោយ"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"គេហ​ទំព័រ"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"ម៉ឺនុយ"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"កម្មវិធី​ថ្មីៗ"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"ប្ដូរ​ប៊ូតុង​វិធីសាស្ត្រ​បញ្ចូល។"</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"ប៊ូតុង​ពង្រីក​ត្រូវ​គ្នា។"</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"ពង្រីក/បង្រួម​​អេក្រង់​ពី​​ទៅធំ"</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"បាន​តភ្ជាប់​ប៊្លូធូស។"</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"បាន​ផ្ដាច់​​ប៊្លូធូស។"</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"គ្មាន​ថ្ម។"</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"ថ្ម​មួយ​កាំ។"</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"ថ្ម​ពីរ​កាំ។"</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"ថ្ម​ទាំង​បី​​កាំ​។"</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"ថ្ម​ពេញ​ហើយ។"</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"គ្មាន​ទូរស័ព្ទ។"</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"សេវា​ទូរស័ព្ទ​មួយ​កាំ។"</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"សេវា​ទូរស័ព្ទ​ពីរ​កាំ។"</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"សេវា​ទូរស័ព្ទ​បី​កាំ​។"</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"សេវា​ទូរស័ព្ទ​ពេញ។"</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"គ្មាន​ទិន្នន័យ​។"</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"ទិន្នន័យ​មួយ​​កាំ។"</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"ទិន្នន័យ​ពីរ​​កាំ។"</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"ទិន្នន័យ​បី​កាំ។"</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"សញ្ញា​ទិន្នន័យ​ពេញ។"</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"បិទ​វ៉ាយហ្វាយ។"</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"បាន​ផ្ដាច់​វ៉ាយហ្វាយ។"</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"សញ្ញា​វ៉ាយហ្វាយ​មួយ​កាំ។"</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"សេវា​វ៉ាយហ្វាយ​ពីរ​កាំ។"</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"វ៉ាយហ្វាយ​បី​កាំ។"</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"សញ្ញា​វ៉ាយហ្វាយ​ពេញ។"</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"គ្មាន WiMAX ។"</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX មួយ​កាំ។"</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX ពីរ​កាំ។"</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX បី​កាំ។"</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"សញ្ញា WiMAX ពេញ។"</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"គ្មាន​សញ្ញា។"</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"មិន​បាន​តភ្ជាប់​។"</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"សូន្យ​កាំ។"</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"មួយ​កាំ។"</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"ពីរ​កាំ។"</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"បី​កាំ។"</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"សញ្ញា​ពេញ​​។"</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"បើក។"</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"បិទ"</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"បាន​តភ្ជាប់។"</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"រ៉ូ​មីង"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"វ៉ាយហ្វាយ"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"គ្មាន​ស៊ីម​កាត។"</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ការ​ភ្ជាប់​ប៊្លូធូស។"</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"របៀប​​ជិះ​យន្តហោះ"</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"ថ្ម <xliff:g id="NUMBER">%d</xliff:g> ភាគរយ។"</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"ការ​កំណត់​ប្រព័ន្ធ​។"</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"ការ​ជូន​ដំណឹង។"</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"សម្អាត​ការ​ជូន​ដំណឹង។"</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"បាន​បើក GPS ។"</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"ទទួល​​ GPS ។"</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"បាន​បើក​ម៉ាស៊ីន​អង្គុលីលេខ"</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"កម្មវិធី​រោទ៍​ញ័រ។"</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"កម្មវិធី​រោទ៍​ស្ងាត់។"</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g> បដិសេធ។"</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"បាន​បដិសេធ​ការ​ជូនដំណឹង"</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"ពណ៌​ការ​ជូន​ដំណឹង"</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"ការ​កំណត់​រហ័ស។"</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"កម្មវិធី​ថ្មី​ៗ។"</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"អ្នក​ប្រើ <xliff:g id="USER">%s</xliff:g> ។"</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"ចល័ត <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"ថ្ម <xliff:g id="STATE">%s</xliff:g> ។"</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"របៀប​ជិះ​យន្ត​ហោះ <xliff:g id="STATE">%s</xliff:g> ។"</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"ប៊្លូធូស <xliff:g id="STATE">%s</xliff:g> ។"</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"កំណត់​សំឡេង​រោទ៍​សម្រាប់ <xliff:g id="TIME">%s</xliff:g> ។"</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"បាន​បិទ​ទិន្នន័យ 2G-3G"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"បាន​បិទ​ទិន្នន័យ 4G"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"បាន​បិទ​ទិន្នន័យ​ចល័ត"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"បាន​បិទ​ទិន្នន័យ"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"អ្នក​បាន​ដល់​ដែន​កំណត់​ប្រើ​ទិន្នន័យ​បាន​បញ្ជាក់។\n\nបើ​អ្នក​បើក​ទិន្នន័យ​ឡើងវិញ អ្នក​អាច​ត្រូវ​បាន​ប្ដូរ​ដោយ​ប្រតិបត្តិ​ករ។"</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"បើក​​ទិន្នន័យ​ឡើងវិញ"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"គ្មាន​ការ​តភ្ជាប់​អ៊ីនធឺណិត"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"បាន​ភ្ជាប់​វ៉ាយហ្វាយ"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"ស្វែងរក GPS"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"ទីតាំង​​​​​កំណត់​ដោយ GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"សំណើ​ទីតាំង​សកម្ម"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"សម្អាត​ការ​ជូន​ដំណឹង​ទាំងអស់។"</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"ព័ត៌មាន​កម្មវិធី"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"នឹង​បង្វិល​អេក្រង់​ស្វ័យ​ប្រវត្តិ។"</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"អេក្រង់​ជាប់​សោ​ក្នុង​ទិស​ផ្ដេក។"</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"បា​ន​ចាក់​សោ​អេក្រង់​​ក្នុង​ទិស​បញ្ឈរ។"</string>
- <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
- <string name="start_dreams" msgid="7219575858348719790">"ស្រមើ​ស្រមៃ"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"អ៊ីសឺរណិត"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"របៀប​​ជិះ​យន្តហោះ"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"បញ្ចូល​ថ្ម <xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"បាន​បញ្ចូល​ពេញ"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"ប៊្លូធូស"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"ប៊្លូធូស (ឧបករណ៍ <xliff:g id="NUMBER">%d</xliff:g>)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"បិទ​ប៊្លូធូស"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"ពន្លឺ"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"បង្វិល​​ស្វ័យ​ប្រវត្តិ"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"បាន​ចាក់​សោ​ការ​បង្វិល"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"វិធីសាស្ត្រ​បញ្ចូល"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"ទី​តាំង"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"ទីតាំង​បិទ"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"ឧបករណ៍​មេឌៀ"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"សម្រាប់​តែ​ការ​ហៅ​ពេល​អាសន្ន"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"ការ​កំណត់"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"ពេលវេលា"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"ខ្ញុំ"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"វ៉ាយហ្វាយ"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"មិន​បាន​តភ្ជាប់"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"គ្មាន​បណ្ដាញ"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"បិទ​វ៉ាយហ្វាយ"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"បង្ហា​ញ​វ៉ាយហ្វាយ"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"​បង្ហាញ​បណ្ដាញ​ឥត​ខ្សែ"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"ពន្លឺ"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"ស្វ័យប្រវត្តិ"</string>
- <string name="status_bar_help_title" msgid="1199237744086469217">"ការ​ជូន​ដំណឹង​​បង្ហាញ​​នៅ​ទីនេះ"</string>
- <string name="status_bar_help_text" msgid="7874607155052076323">"ចូល​ដំណើរការ​ពួក​វា​ពេល​ណា​មួយ​ដោយ​អូស​ចុះក្រោម។\nអូស​ចុះក្រោម​ម្ដង​ទៀត​ ដើម្បី​ពិនិត្យ​ប្រព័ន្ធ។"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 82f9b8927ab3..1437601e4e44 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"이 컴퓨터에서 항상 허용"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"전체화면 모드로 확대"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"전체화면 모드로 확대"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"호환성 확대/축소"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"앱이 작은 화면에 맞도록 설계된 경우 시계 옆에 확대/축소 컨트롤이 표시됩니다."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"캡쳐화면 저장 중..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"캡쳐화면 저장 중..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"캡쳐화면을 저장하는 중입니다."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"홈"</string>
<string name="accessibility_menu" msgid="316839303324695949">"메뉴"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"최근에 사용한 앱"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"검색"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"카메라"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"입력 방법 버튼을 전환합니다."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"호환성 확대/축소 버튼입니다."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"작은 화면을 큰 화면으로 확대합니다."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi 연결됨"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS 검색 중"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"GPS에서 위치 설정"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"위치 요청 있음"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"모든 알림 지우기"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"앱 정보"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"화면이 자동으로 회전됩니다."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"화면이 가로 방향으로 잠겨 있습니다."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"화면이 세로 방향으로 잠겨 있습니다."</string>
- <string name="dessert_case" msgid="1295161776223959221">"디저트 케이스"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"화면 보호기"</string>
<string name="ethernet_label" msgid="7967563676324087464">"이더넷"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"비행기 모드"</string>
@@ -183,8 +182,10 @@
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"자동 회전"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"회전 잠금"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"입력 방법"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"위치"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"위치 사용 중지"</string>
+ <!-- no translation found for quick_settings_location_label (5011327048748762257) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_off_label (7464544086507331459) -->
+ <skip />
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"미디어 기기"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"긴급 통화만 허용"</string>
@@ -199,5 +200,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"무선 디스플레이"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"밝기"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"자동"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"네트워크가\n모니터링될 수 있음"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"알림이 여기에 표시됨"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"아래로 스와이프하여 언제든 액세스하세요.\n한 번 더 아래로 스와이프하면 시스템 관리로 이동합니다."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"화면 가장자리에서 스와이프하여 표시줄 표시"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"화면 가장자리에서 스와이프하여 시스템 표시줄 표시"</string>
</resources>
diff --git a/packages/SystemUI/res/values-lo-rLA-land/strings.xml b/packages/SystemUI/res/values-lo-rLA-land/strings.xml
deleted file mode 100644
index a838a15843c9..000000000000
--- a/packages/SystemUI/res/values-lo-rLA-land/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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-lo-rLA/strings.xml b/packages/SystemUI/res/values-lo-rLA/strings.xml
deleted file mode 100644
index ec14830369a8..000000000000
--- a/packages/SystemUI/res/values-lo-rLA/strings.xml
+++ /dev/null
@@ -1,203 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"ສ່ວນຕິດຕໍ່ຜູ່ໃຊ້ຂອງລະບົບ"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"ລຶບ"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"ເອົາອອກຈາກລາຍການ"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"ຂໍ້ມູນແອັບຯ"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"ບໍ່ມີແອັບຯທີ່ຫາກໍໃຊ້"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"ປິດແອັບຯຫຼ້າສຸດທີ່ໃຊ້"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"1 ແອັບຯຫຼ້າສຸດ"</item>
- <item quantity="other" msgid="1040784359794890744">"%d ແອັບຯຫຼ້າສຸດ"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"ບໍ່ມີການແຈ້ງເຕືອນ"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"ດຳເນີນຢູ່"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"ການແຈ້ງເຕືອນ"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"ເຊື່ອມຕໍ່ສາຍສາກ"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"ແບັດເຕີຣີເຫຼືອໜ້ອຍແລ້ວ."</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"ຍັງເຫຼືອອີກ <xliff:g id="NUMBER">%d%%</xliff:g>"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"ບໍ່ຮອງຮັບການສາກໄຟດ້ວຍ USB.\nຕ້ອງໃຊ້ສະເພາະເຄື່ອງສາກທີ່ແຖມມານຳເທົ່ານັ້ນ."</string>
- <string name="battery_low_why" msgid="7279169609518386372">"ການນຳໃຊ້ແບັດເຕີຣີ"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"ການຕັ້ງຄ່າ"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"ໂໝດເທິງຍົນ"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"ໝຸນໜ້າຈໍອັດຕະໂນມັດ"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"ປິດສຽງ"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"ອັດຕະໂນມັດ"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"ການແຈ້ງເຕືອນ"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"ປ່ອຍສັນຍານຜ່ານ Bluetooth ແລ້ວ"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"ຕັ້ງຄ່າວິທີການປ້ອນຂໍ້ມູນ"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"ແປ້ນພິມແທ້"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"ອະນຸຍາດໃຫ້ແອັບຯ <xliff:g id="APPLICATION">%1$s</xliff:g> ເຂົ້າເຖິງອຸປະກອນ USB?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"ອະນຸຍາດໃຫ້ແອັບຯ <xliff:g id="APPLICATION">%1$s</xliff:g> ເຂົ້າເຖິງອຸປະກອນພ່ວງ USB?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"ເປີດ <xliff:g id="ACTIVITY">%1$s</xliff:g> ເມື່ອເຊື່ອມຕໍ່ກັບອຸປະກອນ USB ນີ້ຫຼືບໍ່?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"ເປີດ <xliff:g id="ACTIVITY">%1$s</xliff:g> ເມື່ອມີການເຊື່ອມຕໍ່ກັບອຸປະກອນເສີມ USB ນີ້ຫຼືບໍ່?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"ບໍ່ມີແອັບຯໃດທີ່ຕິດຕັ້ງໄປແລ້ວ ສາມາດເຮັດວຽກຮ່ວມກັບອຸປະກອນເສີມ USB ນີ້ໄດ້. ສຶກສາເພີ່ມເຕີມກ່ຽວກັບອຸປະກອນເສີມນີ້ທີ່ <xliff:g id="URL">%1$s</xliff:g>"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"ອຸປະກອນເສີມ USB"</string>
- <string name="label_view" msgid="6304565553218192990">"ເບິ່ງ"</string>
- <string name="always_use_device" msgid="1450287437017315906">"ໃຊ້ເປັນຄ່າເລີ່ມຕົ້ນສຳລັບອຸປະກອນ USB ນີ້"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"ໃຊ້ຄ່າເລີ່ມຕົ້ນສຳລັບອຸປະກອນເສີມ USB ນີ້."</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"ອະນຸຍາດການດີບັ໊ກຜ່ານ USB?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"ລາຍນິ້ມື RSA ຂອງຄອມພິວເຕີແມ່ນ:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"ອະນຸຍາດຈາກຄອມພິວເຕີນີ້ຕະຫຼອດ"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"ຊູມໃຫ້ເຕັມໜ້າຈໍ"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"ປັບໃຫ້ເຕັມໜ້າຈໍ"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"ກຳລັງບັນທຶກຮູບໜ້າຈໍ"</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"ກຳລັງບັນທຶກພາບໜ້າຈໍ..."</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"ກຳລັງບັນທຶກພາບໜ້າຈໍ."</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"ຖ່າຍຮູບໜ້າຈໍແລ້ວ"</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"ແຕະເພື່ອເບິ່ງພາບໜ້າຈໍຂອງທ່ານ."</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"ບໍ່ສາມາດຖ່າຍຮູບໜ້າຈໍໄດ້"</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"ບໍ່ສາມາດບັນທຶກພາບໜ້າຈໍໄດ້. ບ່ອນຈັດເກັບອາດກຳລັງຖືກນຳໃຊ້ຢູ່."</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB ໂຕເລືອກການຍ້າຍໄຟລ໌"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"ເຊື່ອມຕໍ່ເປັນ media player (MTP)"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"ເຊື່ອມຕໍ່ເປັນກ້ອງຖ່າຍຮູບ (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"ຕິດຕັ້ງແອັບຯ Android File Transfer ສຳລັບ Mac"</string>
- <string name="accessibility_back" msgid="567011538994429120">"ກັບຄືນ"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"ໜ້າທຳອິດ"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"ເມນູ"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"ແອັບຯຫຼ້າສຸດ"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"ຊອກຫາ"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"ກ້ອງ"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"ປຸ່ມສະລັບຮູບແບບການປ້ອນຂໍ້ມູນ."</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"ປຸ່ມຊູມທີ່ໃຊ້ຮ່ວມກັນໄດ້."</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"ຊູມຈໍນ້ອຍໄປເປັນຈໍຂະຫນາດໃຫຍ່."</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"ເຊື່ອມຕໍ່ Bluetooth ແລ້ວ."</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"Bluetooth ຖືກຕັດການເຊື່ອມຕໍ່ແລ້ວ."</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"ແບັດເຕີຣີໝົດ."</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"ແບັດເຕີຣີນຶ່ງຂີດ."</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"ແບັດເຕີຣີສອງຂີດ."</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"ແບັດເຕີຣີສາມຂີດ."</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"ແບັດເຕີຣີເຕັມ."</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"ບໍ່ມີໂທລະສັບ."</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"ສັນຍານນຶ່ງຂີດ."</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"ສັນຍານສອງຂີດ."</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"ສັນຍານສາມຂີດ."</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"ສັນຍານເຕັມ."</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"ບໍ່ມີຂໍ້ມູນ."</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"ຂໍ້ມູນນຶ່ງຂີດ."</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"ຂໍ້ມູນສອງຂີດ."</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"ຂໍ້ມູນສາມຂີດ."</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"ສັນ​ຍານຂໍ້ມູນ​ເຕັມ."</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"WiFi ປິດຢູ່."</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"ຕັດການເຊື່ອມຕໍ່ Wi-Fi ແລ້ວ."</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"ສັນຍານ Wi-Fi ນຶ່ງຂີດ."</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"ສັນຍານ Wi-Fi ສອງຂີດ."</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"Wifi ສາມຂີດ."</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"ສັນຍານ Wi-Fi ເຕັມ"</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"ບໍ່ມີ WiMAX."</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX ນຶ່ງຂີດ."</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX ສອງຂີດ."</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX ສາມຂີດ."</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"ສັນ​ຍານ WiMAX ເຕັມ."</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"ບໍ່ມີສັນຍານ."</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"ບໍ່ໄດ້ເຊື່ອມຕໍ່."</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"ບໍ່ມີຈັກຂີດ."</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"ນຶ່ງຂີດ."</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"ສອງຂີດ."</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"ສາມຂີດ."</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"ສັນຍານເຕັມ."</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"ເປີດ."</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"ປິດ."</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"ເຊື່ອມ​ຕໍ່ແລ້ວ."</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ໂຣມມິງ"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"ບໍ່ມີຊິມ."</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ການປ່ອຍສັນຍານ Bluetooth."</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"ໂໝດໃນຍົນ."</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"ແບັດເຕີຣີ <xliff:g id="NUMBER">%d</xliff:g> ເປີເຊັນ."</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"ການຕັ້ງຄ່າລະບົບ."</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"ການແຈ້ງເຕືອນ."</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"ລຶບລ້າງການແຈ້ງເຕືອນ."</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS ເປີດແລ້ວ."</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"ກຳລັງຊອກຫາ GPS."</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"TeleTypewriter ຖືກເປີດຢູ່."</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"ສັ່ນເຕືອນພ້ອມສຽງເອີ້ນເຂົ້າ."</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"ປິດສຽງ."</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"ປິດ <xliff:g id="APP">%s</xliff:g> ແລ້ວ."</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"ປິດການແຈ້ງເຕືອນແລ້ວ."</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"ໜ້າຈໍແຈ້ງເຕືອນ."</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"ການຕັ້ງຄ່າດ່ວນ."</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"ແອັບຯທີ່ຫາກໍໃຊ້."</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"ຜູ່ໃຊ້ <xliff:g id="USER">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"ມືຖື <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"ແບັດເຕີຣີ <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"ໂໝດໃນຍົນ <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"ຕັ້ງໂມງປຸກ <xliff:g id="TIME">%s</xliff:g> ແລ້ວ."</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"ອິນເຕີເນັດ 2G​, 3G ຖືກປິດແລ້ວ"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"ການນຳໃຊ້ຂໍ້ມູນ 4G ຖືກປິດແລ້ວ"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"ອິນເຕີເນັດໃນມືຖືຖືກປິດການນຳໃຊ້ແລ້ວ"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"ອິນເຕີເນັດຖືກປິດການນຳໃຊ້ແລ້ວ"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"ທ່ານໄດ້ໃຊ້ຂໍ້ມູນຈົນຮອດຈຳນວນທີ່ຈຳກັດໄວ້ແລ້ວ.\n\nຫາກທ່ານເປີດນຳໃຊ້ຂໍ້ມູນຄືນອີກຄັ້ງ, ທ່ານອາດຖືກຮຽກເກັບເງິນໂດຍຜູ່ໃຫ້ບໍລິການໄດ້."</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"ເປີດນຳໃຊ້ຂໍ້ມູນຄືນໃໝ່"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"ບໍ່ມີການເຊື່ອມຕໍ່ອິນເຕີເນັດ"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"ເຊື່ອມ​ຕໍ່ Wi-​-Fi ແລ້ວ"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"ກຳລັງຊອກຫາ GPS"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"ສະຖານທີ່ກຳນົດໂດຍ GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"ການຮ້ອງຂໍສະຖານທີ່ທີ່ເຮັດວຽກຢູ່"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"ລຶບການແຈ້ງເຕືອນທັງໝົດ."</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"ຂໍ້ມູນແອັບຯ"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ໜ້າຈໍຈະໝຸນໂດຍອັດຕະໂນມັດ."</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"ໜ້າຈໍຖືກລັອກໃນລວງນອນ."</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"ໜ້າຈໍຖືກລັອກຢູ່ໃນໂໝດແນວຕັ້ງ."</string>
- <string name="dessert_case" msgid="1295161776223959221">"ກ່ອງຂອງຫວານ"</string>
- <string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"ໂໝດຢູ່ໃນຍົນ"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"ກຳລັງສາກ, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"ສາກເຕັມແລ້ວ"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> ອຸປະກອນ)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth ປິດ"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"ຄວາມສະຫວ່າງ"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"ໝຸນໜ້າຈໍອັດຕະໂນມັດ"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"ລັອກການປ່ຽນລວງ"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"ວິທີການປ້ອນຂໍ້ມູນ"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"ສະຖານທີ່"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"ຂໍ້ມູນສະຖານທີ່ປິດຢູ່"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"ອຸປະກອນສື່"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"ໂທສຸກເສີນເທົ່ານັ້ນ"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"ການຕັ້ງຄ່າ"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"ເວລາ"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"ຂ້ອຍ"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi​-Fi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"ບໍ່ໄດ້ເຊື່ອມຕໍ່"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"ບໍ່ມີເຄືອຂ່າຍ"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi​-Fi ປິດ"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"ຈໍສະແດງຜົນ Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"ການສະແດງຜົນໄຮ້ສາຍ"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"ຄວາມແຈ້ງ"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"ອັດຕະໂນມັດ"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"ເຄືອຄ່າຍອາດ\nຖືກຕິດຕາມ"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
deleted file mode 100644
index 85b10f72a864..000000000000
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"ສ່ວນຕິດຕໍ່ຜູ່ໃຊ້ຂອງລະບົບ"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"ລຶບ"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"ເອົາອອກຈາກລາຍການ"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"ຂໍ້ມູນແອັບຯ"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"ບໍ່ມີແອັບຯທີ່ຫາກໍໃຊ້"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"ປິດແອັບຯຫຼ້າສຸດທີ່ໃຊ້"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"1 ແອັບຯຫຼ້າສຸດ"</item>
- <item quantity="other" msgid="1040784359794890744">"%d ແອັບຯຫຼ້າສຸດ"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"ບໍ່ມີການແຈ້ງເຕືອນ"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"ດຳເນີນຢູ່"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"ການແຈ້ງເຕືອນ"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"ເຊື່ອມຕໍ່ສາຍສາກ"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"ແບັດເຕີຣີເຫຼືອໜ້ອຍແລ້ວ."</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"ຍັງເຫຼືອອີກ <xliff:g id="NUMBER">%d%%</xliff:g>"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"ບໍ່ຮອງຮັບການສາກໄຟດ້ວຍ USB.\nຕ້ອງໃຊ້ສະເພາະເຄື່ອງສາກທີ່ແຖມມານຳເທົ່ານັ້ນ."</string>
- <string name="battery_low_why" msgid="7279169609518386372">"ການນຳໃຊ້ແບັດເຕີຣີ"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"ການຕັ້ງຄ່າ"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"ໂໝດເທິງຍົນ"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"ໝຸນໜ້າຈໍອັດຕະໂນມັດ"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"ປິດສຽງ"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"ອັດຕະໂນມັດ"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"ການແຈ້ງເຕືອນ"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"ປ່ອຍສັນຍານຜ່ານ Bluetooth ແລ້ວ"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"ຕັ້ງຄ່າວິທີການປ້ອນຂໍ້ມູນ"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"ແປ້ນພິມແທ້"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"ອະນຸຍາດໃຫ້ແອັບຯ <xliff:g id="APPLICATION">%1$s</xliff:g> ເຂົ້າເຖິງອຸປະກອນ USB?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"ອະນຸຍາດໃຫ້ແອັບຯ <xliff:g id="APPLICATION">%1$s</xliff:g> ເຂົ້າເຖິງອຸປະກອນພ່ວງ USB?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"ເປີດ <xliff:g id="ACTIVITY">%1$s</xliff:g> ເມື່ອເຊື່ອມຕໍ່ກັບອຸປະກອນ USB ນີ້ຫຼືບໍ່?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"ເປີດ <xliff:g id="ACTIVITY">%1$s</xliff:g> ເມື່ອມີການເຊື່ອມຕໍ່ກັບອຸປະກອນເສີມ USB ນີ້ຫຼືບໍ່?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"ບໍ່ມີແອັບຯໃດທີ່ຕິດຕັ້ງໄປແລ້ວ ສາມາດເຮັດວຽກຮ່ວມກັບອຸປະກອນເສີມ USB ນີ້ໄດ້. ສຶກສາເພີ່ມເຕີມກ່ຽວກັບອຸປະກອນເສີມນີ້ທີ່ <xliff:g id="URL">%1$s</xliff:g>"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"ອຸປະກອນເສີມ USB"</string>
- <string name="label_view" msgid="6304565553218192990">"ເບິ່ງ"</string>
- <string name="always_use_device" msgid="1450287437017315906">"ໃຊ້ເປັນຄ່າເລີ່ມຕົ້ນສຳລັບອຸປະກອນ USB ນີ້"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"ໃຊ້ຄ່າເລີ່ມຕົ້ນສຳລັບອຸປະກອນເສີມ USB ນີ້."</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"ອະນຸຍາດການດີບັ໊ກຜ່ານ USB?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"ລາຍນິ້ມື RSA ຂອງຄອມພິວເຕີແມ່ນ:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"ອະນຸຍາດຈາກຄອມພິວເຕີນີ້ຕະຫຼອດ"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"ຊູມໃຫ້ເຕັມໜ້າຈໍ"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"ປັບໃຫ້ເຕັມໜ້າຈໍ"</string>
- <string name="compat_mode_help_header" msgid="7969493989397529910">"ຄວາມເຂົ້າກັນໄດ້ຂອງການຊູມ"</string>
- <string name="compat_mode_help_body" msgid="4946726776359270040">"ເມື່ອແອັບຯຖືກອອກແບບມາສຳລັບໜ້າຈໍນ້ອຍກວ່າ​, ຕົວຄວບຄຸມການຊູມຈະປາກົດຢູ່ໃກ້ກັບໂມງ."</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"ກຳລັງບັນທຶກຮູບໜ້າຈໍ"</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"ກຳລັງບັນທຶກພາບໜ້າຈໍ..."</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"ກຳລັງບັນທຶກພາບໜ້າຈໍ."</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"ຖ່າຍຮູບໜ້າຈໍແລ້ວ"</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"ແຕະເພື່ອເບິ່ງພາບໜ້າຈໍຂອງທ່ານ."</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"ບໍ່ສາມາດຖ່າຍຮູບໜ້າຈໍໄດ້"</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"ບໍ່ສາມາດບັນທຶກພາບໜ້າຈໍໄດ້. ບ່ອນຈັດເກັບອາດກຳລັງຖືກນຳໃຊ້ຢູ່."</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB ໂຕເລືອກການຍ້າຍໄຟລ໌"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"ເຊື່ອມຕໍ່ເປັນ media player (MTP)"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"ເຊື່ອມຕໍ່ເປັນກ້ອງຖ່າຍຮູບ (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"ຕິດຕັ້ງແອັບຯ Android File Transfer ສຳລັບ Mac"</string>
- <string name="accessibility_back" msgid="567011538994429120">"ກັບຄືນ"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"ໜ້າທຳອິດ"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"ເມນູ"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"ແອັບຯຫຼ້າສຸດ"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"ປຸ່ມສະລັບຮູບແບບການປ້ອນຂໍ້ມູນ."</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"ປຸ່ມຊູມທີ່ໃຊ້ຮ່ວມກັນໄດ້."</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"ຊູມຈໍນ້ອຍໄປເປັນຈໍຂະຫນາດໃຫຍ່."</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"ເຊື່ອມຕໍ່ Bluetooth ແລ້ວ."</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"Bluetooth ຖືກຕັດການເຊື່ອມຕໍ່ແລ້ວ."</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"ແບັດເຕີຣີໝົດ."</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"ແບັດເຕີຣີນຶ່ງຂີດ."</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"ແບັດເຕີຣີສອງຂີດ."</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"ແບັດເຕີຣີສາມຂີດ."</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"ແບັດເຕີຣີເຕັມ."</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"ບໍ່ມີໂທລະສັບ."</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"ສັນຍານນຶ່ງຂີດ."</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"ສັນຍານສອງຂີດ."</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"ສັນຍານສາມຂີດ."</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"ສັນຍານເຕັມ."</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"ບໍ່ມີຂໍ້ມູນ."</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"ຂໍ້ມູນນຶ່ງຂີດ."</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"ຂໍ້ມູນສອງຂີດ."</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"ຂໍ້ມູນສາມຂີດ."</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"ສັນ​ຍານຂໍ້ມູນ​ເຕັມ."</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"WiFi ປິດຢູ່."</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"ຕັດການເຊື່ອມຕໍ່ Wi-Fi ແລ້ວ."</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"ສັນຍານ Wi-Fi ນຶ່ງຂີດ."</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"ສັນຍານ Wi-Fi ສອງຂີດ."</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"Wifi ສາມຂີດ."</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"ສັນຍານ Wi-Fi ເຕັມ"</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"ບໍ່ມີ WiMAX."</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX ນຶ່ງຂີດ."</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX ສອງຂີດ."</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX ສາມຂີດ."</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"ສັນ​ຍານ WiMAX ເຕັມ."</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"ບໍ່ມີສັນຍານ."</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"ບໍ່ໄດ້ເຊື່ອມຕໍ່."</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"ບໍ່ມີຈັກຂີດ."</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"ນຶ່ງຂີດ."</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"ສອງຂີດ."</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"ສາມຂີດ."</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"ສັນຍານເຕັມ."</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"ເປີດ."</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"ປິດ."</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"ເຊື່ອມ​ຕໍ່ແລ້ວ."</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ໂຣມມິງ"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"ບໍ່ມີຊິມ."</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ການປ່ອຍສັນຍານ Bluetooth."</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"ໂໝດໃນຍົນ."</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"ແບັດເຕີຣີ <xliff:g id="NUMBER">%d</xliff:g> ເປີເຊັນ."</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"ການຕັ້ງຄ່າລະບົບ."</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"ການແຈ້ງເຕືອນ."</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"ລຶບລ້າງການແຈ້ງເຕືອນ."</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS ເປີດແລ້ວ."</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"ກຳລັງຊອກຫາ GPS."</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"TeleTypewriter ຖືກເປີດຢູ່."</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"ສັ່ນເຕືອນພ້ອມສຽງເອີ້ນເຂົ້າ."</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"ປິດສຽງ."</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"ປິດ <xliff:g id="APP">%s</xliff:g> ແລ້ວ."</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"ປິດການແຈ້ງເຕືອນແລ້ວ."</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"ໜ້າຈໍແຈ້ງເຕືອນ."</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"ການຕັ້ງຄ່າດ່ວນ."</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"ແອັບຯທີ່ຫາກໍໃຊ້."</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"ຜູ່ໃຊ້ <xliff:g id="USER">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"ມືຖື <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"ແບັດເຕີຣີ <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"ໂໝດໃນຍົນ <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"ຕັ້ງໂມງປຸກ <xliff:g id="TIME">%s</xliff:g> ແລ້ວ."</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"ອິນເຕີເນັດ 2G​, 3G ຖືກປິດແລ້ວ"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"ການນຳໃຊ້ຂໍ້ມູນ 4G ຖືກປິດແລ້ວ"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"ອິນເຕີເນັດໃນມືຖືຖືກປິດການນຳໃຊ້ແລ້ວ"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"ອິນເຕີເນັດຖືກປິດການນຳໃຊ້ແລ້ວ"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"ທ່ານໄດ້ໃຊ້ຂໍ້ມູນຈົນຮອດຈຳນວນທີ່ຈຳກັດໄວ້ແລ້ວ.\n\nຫາກທ່ານເປີດນຳໃຊ້ຂໍ້ມູນຄືນອີກຄັ້ງ, ທ່ານອາດຖືກຮຽກເກັບເງິນໂດຍຜູ່ໃຫ້ບໍລິການໄດ້."</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"ເປີດນຳໃຊ້ຂໍ້ມູນຄືນໃໝ່"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"ບໍ່ມີການເຊື່ອມຕໍ່ອິນເຕີເນັດ"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"ເຊື່ອມ​ຕໍ່ Wi-​-Fi ແລ້ວ"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"ກຳລັງຊອກຫາ GPS"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"ສະຖານທີ່ກຳນົດໂດຍ GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"ການຮ້ອງຂໍສະຖານທີ່ທີ່ເຮັດວຽກຢູ່"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"ລຶບການແຈ້ງເຕືອນທັງໝົດ."</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"ຂໍ້ມູນແອັບຯ"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ໜ້າຈໍຈະໝຸນໂດຍອັດຕະໂນມັດ."</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"ໜ້າຈໍຖືກລັອກໃນລວງນອນ."</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"ໜ້າຈໍຖືກລັອກຢູ່ໃນໂໝດແນວຕັ້ງ."</string>
- <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
- <string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"ໂໝດຢູ່ໃນຍົນ"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"ກຳລັງສາກ, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"ສາກເຕັມແລ້ວ"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> ອຸປະກອນ)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth ປິດ"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"ຄວາມສະຫວ່າງ"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"ໝຸນໜ້າຈໍອັດຕະໂນມັດ"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"ລັອກການປ່ຽນລວງ"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"ວິທີການປ້ອນຂໍ້ມູນ"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"ສະຖານທີ່"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"ຂໍ້ມູນສະຖານທີ່ປິດຢູ່"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"ອຸປະກອນສື່"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"ໂທສຸກເສີນເທົ່ານັ້ນ"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"ການຕັ້ງຄ່າ"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"ເວລາ"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"ຂ້ອຍ"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi​-Fi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"ບໍ່ໄດ້ເຊື່ອມຕໍ່"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"ບໍ່ມີເຄືອຂ່າຍ"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi​-Fi ປິດ"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"ຈໍສະແດງຜົນ Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"ການສະແດງຜົນໄຮ້ສາຍ"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"ຄວາມແຈ້ງ"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"ອັດຕະໂນມັດ"</string>
- <string name="status_bar_help_title" msgid="1199237744086469217">"ການແຈ້ງເຕືອນຈະປາກົດບ່ອນນີ້"</string>
- <string name="status_bar_help_text" msgid="7874607155052076323">"ເຂົ້າເຖິງໄດ້ທຸກເມື່ອໂດຍການປັດນິ້ວລົງ.\nປັດລົງອີກເທື່ອນຶ່ງສຳລັບການຄວບຄຸມລະບົບ."</string>
-</resources>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index abb22403defb..bf8662a2b800 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Visada leisti iš šio kompiuterio"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Keisti mast., kad atit. ekr."</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Ištempti, kad atit. ekr."</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Suderinamumo mastelio keitimas"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Kai programa bus pritaikyta mažesniam ekranui, mastelio keitimo valdiklis bus parodytas šalia laikrodžio."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Išsaugoma ekrano kopija..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Išsaugoma ekrano kopija..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Išsaugoma ekrano kopija."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Pagrindinis"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Meniu"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Naujausios programos"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Ieškoti"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Fotoaparatas"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Perjungti įvesties metodo mygtuką."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Suderinamumo priartinimo mygtukas."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Padidinti ekraną."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Prisij. prie „Wi-Fi“"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Ieškoma GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"GPS nustatyta vieta"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Vietovės užklausos aktyvios"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Išvalyti visus pranešimus."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Programos informacija"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekranas bus sukamas automatiškai."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Užrakintas ekranas yra horizontalios orientacijos."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Užrakintas ekranas yra vertikalios orientacijos."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Desertų dėklas"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Svajonė"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Eternetas"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Lėktuvo režimas"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Belaidis rodymas"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Skaistis"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMATINIS"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Tinklas gali\nbūti stebimas"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Pranešimai rodomi čia"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Perbraukę žemyn bet kuriuo metu pasieksite pranešimus.\nJei norite naudoti sistemos valdiklius, perbraukite žemyn dar kartą."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Jei norite, kad būtų rodoma juosta, perbraukite ekrano krašte"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Jei norite, kad būtų rodoma sistemos juosta, perbraukite iš ekrano krašto"</string>
</resources>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 0d019249bc73..b96a786eb807 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Vienmēr atļaut no šī datora"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Tālumm., lai aizp. ekr."</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Stiepiet, lai aizp. ekr."</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Saderības tālummaiņa"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Ja lietotne ir paredzēta mazākam ekrānam, blakus pulkstenim tiks parādīta tālummaiņas vadīkla."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Saglabā ekrānuzņēmumu…"</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Notiek ekrānuzņēmuma saglabāšana..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Notiek ekrānuzņēmuma saglabāšana."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Sākums"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Izvēlne"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Nesen izmantotās lietotnes"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Meklēt"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Kamera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Ievades metodes maiņas poga."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Saderības tālummaiņas poga."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Veikt tālummaiņu no mazāka ekrāna uz lielāku."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Izv. sav. ar Wi-Fi"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Notiek GPS meklēšana..."</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"GPS iestatītā atrašanās vieta"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Aktīvi atrašanās vietu pieprasījumi"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Notīrīt visus paziņojumus"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informācija par lietotni"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekrāns tiks pagriezts automātiski."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Ekrāns tagad ir bloķēts ainavas orientācijā."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ekrāns tagad ir bloķēts portreta orientācijā."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Saldo ēdienu stends"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Ekrānsaudzētājs"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Tīkls Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Lidojuma režīms"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Bezvadu attēlošana"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Spilgtums"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMĀTISKI"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Tīkls var\ntikt uzraudzīts"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Šeit tiek rādīti paziņojumi"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Piekļūstiet tiem jebkurā laikā, velkot uz leju.\nVēlreiz velciet, lai tiktu parādītas sistēmas vadīklas."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Velciet no ekrāna malas, lai piekļūtu joslai."</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Velciet no ekrāna malas, lai piekļūtu sistēmas joslai."</string>
</resources>
diff --git a/packages/SystemUI/res/values-mn-rMN-land/strings.xml b/packages/SystemUI/res/values-mn-rMN-land/strings.xml
deleted file mode 100644
index ec4616fd5fd0..000000000000
--- a/packages/SystemUI/res/values-mn-rMN-land/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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-mn-rMN/strings.xml b/packages/SystemUI/res/values-mn-rMN/strings.xml
deleted file mode 100644
index 0e6c032dde34..000000000000
--- a/packages/SystemUI/res/values-mn-rMN/strings.xml
+++ /dev/null
@@ -1,203 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"Систем UI"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"Цэвэрлэх"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Жагсаалтаас устгах"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"Апп мэдээлэл"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Сүүлийн апп хоосон"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Сүүлийн апп-уудыг хаах"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"1 сүүлийн апп"</item>
- <item quantity="other" msgid="1040784359794890744">"%d сүүлийн апп"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Мэдэгдэл байхгүй"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Гарсан"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Мэдэгдэл"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"Цэнэглэгчийг холбоно уу"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"Батерей дуусаж байна."</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> үлдсэн"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"USB цэнэглэлт дэмжигдэхгүй байна.\nЗөвхөн нийлүүлэгдсэн цэнэглэгчийг ашиглана уу."</string>
- <string name="battery_low_why" msgid="7279169609518386372">"Батерей ашиглах"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Тохиргоо"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"Нислэгийн горим"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Дэлгэцийг автоматаар эргүүлэх"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"ХААХ"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"АВТОМАТ"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"Мэдэгдэл"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"Блютүүтыг модем болгож байна"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Оруулах аргыг тохируулах"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"Бодит гар"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"<xliff:g id="APPLICATION">%1$s</xliff:g> апп-г USB төхөөрөмжид хандахыг зөвшөөрөх үү?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"<xliff:g id="APPLICATION">%1$s</xliff:g> апп-г USB төхөөрөмжид хандахыг зөвшөөрөх үү?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Энэ USB төхөөрөмж холбогдох үед <xliff:g id="ACTIVITY">%1$s</xliff:g>-г нээх үү?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Энэ USB төхөөрөмж холбогдох үед <xliff:g id="ACTIVITY">%1$s</xliff:g>-г нээх үү?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"Энэ USB хэрэгсэл дээр суулгасан апп ажиллаагүй байна. Энэ хэрэгслийн талаар <xliff:g id="URL">%1$s</xliff:g>-с дэлгэрэнгүй үзнэ үү."</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"USB төхөөрөмж"</string>
- <string name="label_view" msgid="6304565553218192990">"Үзэх"</string>
- <string name="always_use_device" msgid="1450287437017315906">"Энэ USB төхөөрөмжийг үндсэн болгон ашиглах"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"Энэ USB төхөөрөмжийг үндсэн болгон ашиглах"</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"USB дебаг хийхийг зөвшөөрөх үү?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"Компьютерийн RSA түлхүүрийн хурууны хээ :\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"Энэ компьютерээс орохыг байнга зөвшөөрөх"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"Дэлгэц дүүргэх бол өсгөнө үү"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"Дэлгэц дүүргэх бол татна уу"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Дэлгэцийн агшинг хадгалж байна…"</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"Дэлгэцийн агшинг хадгалж байна…"</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"Дэлгэцийн агшин хадгалагдав."</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"Дэлгэцийн агшинг авсан."</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"Дэлгэцийн агшныг харах бол хүрнэ үү."</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"Дэлгэцийн агшинг авч чадсангүй."</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"Дэлгэцийн агшинг хадгалж чадсангүй. Сан ашиглагдаж байгаа бололтой."</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB файл шилжүүлэх сонголт"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"Медиа тоглуулагч(MTP) болгон залгах"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"Камер болгон(PTP) залгах"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"Мас-д зориулсан Андройд Файл Шилжүүлэх апп-г суулгана уу"</string>
- <string name="accessibility_back" msgid="567011538994429120">"Буцах"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"Гэрийн"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"Цэс"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"Сүүлийн апп"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Хайх"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Камер"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Оруулах аргыг сэлгэх товч."</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Тохиромжтой өсгөх товч."</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Жижгээс том дэлгэцрүү өсгөх."</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"Блютүүт холбогдсон."</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"Блютүүт тасрав."</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"Батерей байхгүй."</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"Батерей нэг баганатай."</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"Батерей хоёр баганатай."</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"Батерей гурван баганатай."</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"Батерей дүүрэн."</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"Утас байхгүй."</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"Утас нэг баганатай."</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"Утас хоёр баганатай."</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"Утас гурван баганатай."</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"Утасны дохио дүүрэн."</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"Дата байхгүй."</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"Дата нэг баганатай."</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Дата хоёр баганатай."</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Дата гурван баганатай."</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Дата дохио дүүрэн."</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"Wifi унтарсан."</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"Wifi салав."</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"Wifi нэг баганатай."</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"Wifi хоёр баганатай."</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"Wifi гурван баганатай."</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"Wifi дохио дүүрэн."</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX байхгүй."</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX нэг багана."</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX хоёр баганатай."</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX гурван баганатай."</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX дохио дүүрэн."</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"Дохио байхгүй."</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"Холбогдоогүй."</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"Тэг баганатай."</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"Нэг баганатай."</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"Хоёр багана."</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"Гурван баганатай."</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"Дохио дүүрэн."</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"Идэвхижсэн."</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"Унтраах"</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"Холбогдсон."</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Рүүминг"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM байхгүй."</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Блютүүт модем болж байна."</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"Нислэгийн горим"</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"Батерей <xliff:g id="NUMBER">%d</xliff:g> хувьтай."</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"Системийн тохиргоо."</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"Мэдэгдэл."</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"Мэдэгдлийг цэвэрлэх."</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS идэвхтэй."</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"GPS хайж байна."</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"TeleTypewriter идэвхтэй болов."</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"Хонхны чичиргээ."</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"Хонхыг хаах."</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g> байхгүй."</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"Мэдэгдэл хаагдсан."</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"Мэдэгдлийн хураангуй самбар"</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"Шуурхай тохиргоо."</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"Сүүлийн апп"</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"Хэрэглэгч <xliff:g id="USER">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"Мобайл <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"Батерей <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"Нислэгийн горим <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Блютүүт <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Сэрүүлгийг <xliff:g id="TIME">%s</xliff:g>-д тохируулсан."</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G дата идэвхгүй болов"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G дата идэвхгүй байна"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Мобайл дата идэвхгүй болов"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Дата идэвхгүй болов"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Та заасан дата ашиглалтын хязгаарт хүрэв.\n\nХэрэв та датаг дахин идэвхжүүлбэл операторт төлбөр төлөх хэрэгтэй."</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Дата дахин идэвхжүүлэх"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Интернет холболт байхгүй"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi холбогдсон"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS хайж байна"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"GPS байршил"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Байршлын хүсэлтүүд идэвхтэй"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"Бүх мэдэгдлийг цэвэрлэх."</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Апп мэдээлэл"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Дэлгэц автоматаар эргэнэ."</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Дэлгэц хэвтээ чиглэлд түгжигдсэн."</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Дэлгэц босоо чиглэлээр түгжигдсэн."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Амттаны хайрцаг"</string>
- <string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"Этернет"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Нислэгийн горим"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Цэнэглэж байна, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Цэнэглэгдсэн"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Блютүүт"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Блютүүт (<xliff:g id="NUMBER">%d</xliff:g> төхөөрөмж)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Блютүүт унтраалттай"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Тодрол"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Автомат эргэх"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Эргүүлэлт түгжигдсэн"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"Оруулах арга"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Байршил"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Байршил идэвхгүй"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"Медиа төхөөрөмж"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Зөвхөн яаралтай дуудлага"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"Тохиргоо"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"Цаг"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"Би"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Холбогдоогүй"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Сүлжээгүй"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi унтарсан"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi Дэлгэц"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Утасгүй дэлгэц"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Тодрол"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"АВТОМАТ"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Сүлжээ хянагдаж\nбайж болзошгүй"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
deleted file mode 100644
index aea7be168d35..000000000000
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"Систем UI"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"Цэвэрлэх"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Жагсаалтаас устгах"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"Апп мэдээлэл"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Сүүлийн апп хоосон"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Сүүлийн апп-уудыг хаах"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"1 сүүлийн апп"</item>
- <item quantity="other" msgid="1040784359794890744">"%d сүүлийн апп"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Мэдэгдэл байхгүй"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Гарсан"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Мэдэгдэл"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"Цэнэглэгчийг холбоно уу"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"Батерей дуусаж байна."</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> үлдсэн"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"USB цэнэглэлт дэмжигдэхгүй байна.\nЗөвхөн нийлүүлэгдсэн цэнэглэгчийг ашиглана уу."</string>
- <string name="battery_low_why" msgid="7279169609518386372">"Батерей ашиглах"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Тохиргоо"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"Нислэгийн горим"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Дэлгэцийг автоматаар эргүүлэх"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"ХААХ"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"АВТОМАТ"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"Мэдэгдэл"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"Блютүүтыг модем болгож байна"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Оруулах аргыг тохируулах"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"Бодит гар"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"<xliff:g id="APPLICATION">%1$s</xliff:g> апп-г USB төхөөрөмжид хандахыг зөвшөөрөх үү?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"<xliff:g id="APPLICATION">%1$s</xliff:g> апп-г USB төхөөрөмжид хандахыг зөвшөөрөх үү?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Энэ USB төхөөрөмж холбогдох үед <xliff:g id="ACTIVITY">%1$s</xliff:g>-г нээх үү?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Энэ USB төхөөрөмж холбогдох үед <xliff:g id="ACTIVITY">%1$s</xliff:g>-г нээх үү?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"Энэ USB хэрэгсэл дээр суулгасан апп ажиллаагүй байна. Энэ хэрэгслийн талаар <xliff:g id="URL">%1$s</xliff:g>-с дэлгэрэнгүй үзнэ үү."</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"USB төхөөрөмж"</string>
- <string name="label_view" msgid="6304565553218192990">"Үзэх"</string>
- <string name="always_use_device" msgid="1450287437017315906">"Энэ USB төхөөрөмжийг үндсэн болгон ашиглах"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"Энэ USB төхөөрөмжийг үндсэн болгон ашиглах"</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"USB дебаг хийхийг зөвшөөрөх үү?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"Компьютерийн RSA түлхүүрийн хурууны хээ :\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"Энэ компьютерээс орохыг байнга зөвшөөрөх"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"Дэлгэц дүүргэх бол өсгөнө үү"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"Дэлгэц дүүргэх бол татна уу"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Дэлгэцийн агшинг хадгалж байна…"</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"Дэлгэцийн агшинг хадгалж байна…"</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"Дэлгэцийн агшин хадгалагдав."</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"Дэлгэцийн агшинг авсан."</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"Дэлгэцийн агшныг харах бол хүрнэ үү."</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"Дэлгэцийн агшинг авч чадсангүй."</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"Дэлгэцийн агшинг хадгалж чадсангүй. Сан ашиглагдаж байгаа бололтой."</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB файл шилжүүлэх сонголт"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"Медиа тоглуулагч(MTP) болгон залгах"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"Камер болгон(PTP) залгах"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"Мас-д зориулсан Андройд Файл Шилжүүлэх апп-г суулгана уу"</string>
- <string name="accessibility_back" msgid="567011538994429120">"Буцах"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"Гэрийн"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"Цэс"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"Сүүлийн апп"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Оруулах аргыг сэлгэх товч."</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Тохиромжтой өсгөх товч."</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Жижгээс том дэлгэцрүү өсгөх."</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"Блютүүт холбогдсон."</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"Блютүүт тасрав."</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"Батерей байхгүй."</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"Батерей нэг баганатай."</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"Батерей хоёр баганатай."</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"Батерей гурван баганатай."</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"Батерей дүүрэн."</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"Утас байхгүй."</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"Утас нэг баганатай."</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"Утас хоёр баганатай."</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"Утас гурван баганатай."</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"Утасны дохио дүүрэн."</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"Дата байхгүй."</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"Дата нэг баганатай."</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Дата хоёр баганатай."</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Дата гурван баганатай."</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Дата дохио дүүрэн."</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"Wifi унтарсан."</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"Wifi салав."</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"Wifi нэг баганатай."</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"Wifi хоёр баганатай."</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"Wifi гурван баганатай."</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"Wifi дохио дүүрэн."</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX байхгүй."</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX нэг багана."</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX хоёр баганатай."</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX гурван баганатай."</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX дохио дүүрэн."</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"Дохио байхгүй."</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"Холбогдоогүй."</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"Тэг баганатай."</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"Нэг баганатай."</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"Хоёр багана."</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"Гурван баганатай."</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"Дохио дүүрэн."</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"Идэвхижсэн."</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"Унтраах"</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"Холбогдсон."</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Рүүминг"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM байхгүй."</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Блютүүт модем болж байна."</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"Нислэгийн горим"</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"Батерей <xliff:g id="NUMBER">%d</xliff:g> хувьтай."</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"Системийн тохиргоо."</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"Мэдэгдэл."</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"Мэдэгдлийг цэвэрлэх."</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS идэвхтэй."</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"GPS хайж байна."</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"TeleTypewriter идэвхтэй болов."</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"Хонхны чичиргээ."</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"Хонхыг хаах."</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g> байхгүй."</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"Мэдэгдэл хаагдсан."</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"Мэдэгдлийн хураангуй самбар"</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"Шуурхай тохиргоо."</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"Сүүлийн апп"</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"Хэрэглэгч <xliff:g id="USER">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"Мобайл <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"Батерей <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"Нислэгийн горим <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Блютүүт <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Сэрүүлгийг <xliff:g id="TIME">%s</xliff:g>-д тохируулсан."</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G дата идэвхгүй болов"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G дата идэвхгүй байна"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Мобайл дата идэвхгүй болов"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Дата идэвхгүй болов"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Та заасан дата ашиглалтын хязгаарт хүрэв.\n\nХэрэв та датаг дахин идэвхжүүлбэл операторт төлбөр төлөх хэрэгтэй."</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Дата дахин идэвхжүүлэх"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Интернет холболт байхгүй"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi холбогдсон"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS хайж байна"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"GPS байршил"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Байршлын хүсэлтүүд идэвхтэй"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"Бүх мэдэгдлийг цэвэрлэх."</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Апп мэдээлэл"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Дэлгэц автоматаар эргэнэ."</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Дэлгэц хэвтээ чиглэлд түгжигдсэн."</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Дэлгэц босоо чиглэлээр түгжигдсэн."</string>
- <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
- <string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"Этернет"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Нислэгийн горим"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Цэнэглэж байна, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Цэнэглэгдсэн"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Блютүүт"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Блютүүт (<xliff:g id="NUMBER">%d</xliff:g> төхөөрөмж)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Блютүүт унтраалттай"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Тодрол"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Автомат эргэх"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Эргүүлэлт түгжигдсэн"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"Оруулах арга"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Байршил"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Байршил идэвхгүй"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"Медиа төхөөрөмж"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Зөвхөн яаралтай дуудлага"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"Тохиргоо"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"Цаг"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"Би"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Холбогдоогүй"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Сүлжээгүй"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi унтарсан"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi Дэлгэц"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Утасгүй дэлгэц"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Тодрол"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"АВТОМАТ"</string>
- <string name="status_bar_help_title" msgid="1199237744086469217">"Мэдэгдэл энд харагдана"</string>
- <string name="status_bar_help_text" msgid="7874607155052076323">"Доош татаад тэдгээрт хандана уу.\nДахин доош татаад систем контролд хандана уу."</string>
- <string name="ssl_ca_cert_warning" msgid="5848402127455021714">"Сүлжээ хянагдаж байж болзошгүй"</string>
- <string name="done_button" msgid="1759387181766603361">"Дууссан"</string>
- <string name="ssl_ca_cert_dialog_title" msgid="1273796967092027291">"Сүлжээний Хяналт"</string>
- <string name="ssl_ca_cert_info_message" msgid="5430320539555358452">"Энэ төхөөрөмжийг удирдагч: <xliff:g id="MANAGING_DOMAIN">%s</xliff:g>.\n\nТаны админ имэйл, апп-ууд болон аюулгүй вебсайтуудыг оруулан таны сүлжээний үйл ажиллагааг хянах боломжтой.\n\nДэлгэрэнгүй мэдээллийг өөрийн админтай холбогдож авна уу."</string>
- <string name="ssl_ca_cert_warning_message" msgid="2033091656129963669">"Гуравдагч талын этгээд таны сүлжээг хянаж байж болзошгүй\nүүнд имэйл, апп-ууд болон аюулгүй вебсайтууд багтана.\n\nТаны төхөөрөмж дээр суулгасан итгэмжлэгдсэн жуух энэ боломжоор хангаж байна."</string>
- <string name="ssl_ca_cert_settings_button" msgid="7946956977377166709">"Итгэмжлэгдсэн жуухуудыг шалгах"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-ms-rMY-land/strings.xml b/packages/SystemUI/res/values-ms-rMY-land/strings.xml
deleted file mode 100644
index 175b0fa30b5c..000000000000
--- a/packages/SystemUI/res/values-ms-rMY-land/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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">"Skrin kini dikunci dalam orientasi landskap."</string>
-</resources>
diff --git a/packages/SystemUI/res/values-ms-rMY/strings.xml b/packages/SystemUI/res/values-ms-rMY/strings.xml
deleted file mode 100644
index 7aa20fcb4d2e..000000000000
--- a/packages/SystemUI/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,203 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"Sistem UI"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"Pdm bersih"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Alih keluar dari senarai"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"Maklumat aplikasi"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Tiada aplikasi terbaharu"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Buang aplikasi terbaharu"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"1 aplikasi terbaharu"</item>
- <item quantity="other" msgid="1040784359794890744">"%d aplikasi terbaharu"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Tiada pemberitahuan"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Sedang berlangsung"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Pemberitahuan"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"Sambungkan pengecas"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"Bateri semakin lemah."</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"Berbaki <xliff:g id="NUMBER">%d%%</xliff:g>"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"Pengecasan USB tidak disokong.\nGunakan hanya pengecas yang dibekalkan."</string>
- <string name="battery_low_why" msgid="7279169609518386372">"Penggunaan bateri"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Tetapan"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"Mod pesawat"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Autoputar skrin"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"REDAM"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"Pemberitahuan"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth ditambatkan"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Sediakan kaedah input"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"Papan kekunci fizikal"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"Benarkan aplikasi <xliff:g id="APPLICATION">%1$s</xliff:g> mengakses peranti USB?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"Benarkan aplikasi <xliff:g id="APPLICATION">%1$s</xliff:g> mengakses aksesori USB?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Buka <xliff:g id="ACTIVITY">%1$s</xliff:g> apabila peranti USB ini disambungkan?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Buka <xliff:g id="ACTIVITY">%1$s</xliff:g> apabila aksesori USB ini disambungkan?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"Tiada apl yg dipsg bfungsi dgn aksesori USB ini. Ketahui lg ttg aksesori ini di <xliff:g id="URL">%1$s</xliff:g>"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"Aksesori USB"</string>
- <string name="label_view" msgid="6304565553218192990">"Lihat"</string>
- <string name="always_use_device" msgid="1450287437017315906">"Gunakan secara lalai untuk peranti USB ini"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"Gunakan secara lalai untuk aksesori USB ini"</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"Benarkan penyahpepijatan USB?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"Cap jari kekunci RSA komputer ialah:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"Sentiasa benarkan komputer ini"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"Zum untuk memenuhi skrin"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"Regang utk memenuhi skrin"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Menyimpan tangkapan skrin..."</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"Menyimpan tangkapan skrin..."</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"Tangkapan skrin sedang disimpan."</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"Tangkapan skrin ditangkap."</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"Sentuh untuk melihat tangkapan skrin anda."</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"Tidak dapat menangkap tangkapan skrin."</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"Tidak boleh menyimpan tangkapan skrin. Storan mungkin sedang digunakan."</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"Pilihan pemindahan fail USB"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"Lekapkan sebagai pemain media (MTP)"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"Lekapkan sebagai kamera (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"Pasang aplikasi Pindahan Fail Android untuk Mac"</string>
- <string name="accessibility_back" msgid="567011538994429120">"Kembali"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"Rumah"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"Menu"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"Aplikasi terbaharu"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Cari"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Kamera"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Butang tukar kaedah input."</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Butang zum keserasian."</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Skrin zum lebih kecil kepada lebih besar."</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"Bluetooth disambungkan."</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"Bluetooth diputuskan sambungan."</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"Tiada bateri."</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"Bateri satu bar."</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"Bateri dua bar."</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"Bateri tiga bar."</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"Bateri penuh."</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"Tiada telefon."</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"Telefon satu bar."</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"Telefon dua bar."</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"Telefon tiga bar."</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"Isyarat telefon penuh."</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"Tiada data."</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"Data satu bar."</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Data dua bar."</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Data tiga bar."</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Isyarat data penuh."</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"Wifi dimatikan."</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"Wifi diputuskan sambungannya."</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"WiFi satu bar."</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"WiFi dua bar."</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"WiFi tiga bar."</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"Isyarat WiFi penuh."</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"Tiada WiMAX"</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX satu bar."</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX dua bar."</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX tiga bar."</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Isyarat WiMAX penuh."</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"Tiada isyarat."</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"Tidak disambungkan."</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"Tiada bar."</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"Satu bar."</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"Dua bar."</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"Tiga bar."</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"Isyarat penuh."</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"Dihidupkan."</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"Dimatikan."</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"Disambungkan."</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Perayauan"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"Tiada SIM."</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Penambatan Bluetooth."</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"Mod pesawat"</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"Bateri <xliff:g id="NUMBER">%d</xliff:g> peratus."</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"Tetapan sistem."</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"Pemberitahuan."</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"Padamkan pemberitahuan."</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS didayakan."</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"GPS sedang mendapatkan."</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"Mesin Teletaip didayakan."</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"Pendering bergetar."</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"Pendering senyap."</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g> ditolak."</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"Pemberitahuan diketepikan."</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"Bidai pemberitahuan."</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"Tetapan pantas."</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"Apl terbaru."</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"Pengguna <xliff:g id="USER">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"Mudah Alih <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"Bateri <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"Mod Pesawat <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Penggera ditetapkan pada <xliff:g id="TIME">%s</xliff:g>."</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"Data 2G-3G dilumpuhkan"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Data 4G dilumpuhkan"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Data mudah alih dilumpuhkan"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Data dilumpuhkan"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Anda telah mencapai had penggunaan data yang dinyatakan.\n\nJika anda mendayakan semula data, anda mungkin dikenakan caj oleh operator."</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Dayakan semula data"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Tiada smbg Internet"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi disambungkan"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"Mencari GPS"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"Lokasi ditetapkan oleh GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Permintaan lokasi aktif"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"Padamkan semua pemberitahuan."</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Maklumat apl"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skrin akan berputar secara automatik."</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Skrin dikunci dalam orientasi landskap."</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Skrin dikunci dalam orientasi potret."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Bekas Pencuci Mulut"</string>
- <string name="start_dreams" msgid="7219575858348719790">"Lamun"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Mod kapal terbang"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Mengecas, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Sudah dicas"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> Peranti)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth Dimatikan"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Kecerahan"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Auto Putar"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Putaran Dikunci"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"Kaedah Input"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Lokasi"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Lokasi Dimatikan"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"Peranti media"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Panggilan Kecemasan Sahaja"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"Tetapan"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"Masa"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"Saya"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Tidak Disambungkan"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Tiada Rangkaian"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi Dimatikan"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Paparan Wi-Fi"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Paparan Wayarles"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Kecerahan"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Rangkaian mungkin\nboleh dipantau"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 9c76eaea04d4..5312ccb943ac 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -164,7 +164,6 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi disambungkan"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Mencari GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Lokasi ditetapkan oleh GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Permintaan lokasi aktif"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Padamkan semua pemberitahuan."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Maklumat apl"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skrin akan berputar secara automatik."</string>
@@ -183,8 +182,10 @@
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Auto Putar"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Putaran Dikunci"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"Kaedah Input"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Lokasi"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Lokasi Dimatikan"</string>
+ <!-- no translation found for quick_settings_location_label (5011327048748762257) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_off_label (7464544086507331459) -->
+ <skip />
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Peranti media"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Panggilan Kecemasan Sahaja"</string>
@@ -201,4 +202,6 @@
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
<string name="status_bar_help_title" msgid="1199237744086469217">"Pemberitahuan dipaparkan di sini"</string>
<string name="status_bar_help_text" msgid="7874607155052076323">"Akses panel pada bila-bila masa dengan meleret ke bawah.\nLeret ke bawah sekali lagi untuk mendapatkan kawalan sistem."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Leret ke bahagian tepi skrin untuk menampakkan bar"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Leret dari tepi skrin untuk menampakkan bar sistem"</string>
</resources>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index 56db18f53265..778be83a5090 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Tillat alltid fra denne datamaskinen"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom for å fylle skjermen"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Strekk for å fylle skjerm"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Kompatibilitets-zooming"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Når en app er utformet for en mindre skjerm, vises det en zoomkontroll ved klokken."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Lagrer skjermdumpen …"</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Lagrer skjermdumpen …"</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Skjermdumpen lagres."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Startside"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Meny"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Nylige apper"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Søk"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Kamera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Bytt knapp for inndatametode."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Zoomknapp for kompatibilitet."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zoom fra mindre til større skjerm."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi tilkoblet"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Søker etter GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Posisjon angitt av GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Aktive stedsforespørsler"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Fjern alle varslinger."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Info om app"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skjermen roterer automatisk."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Skjermen er låst i liggende retning."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Skjermen er låst i stående retning."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Dessertmonter"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Dagdrøm"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Flymodus"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Trådløs skjerm"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Lysstyrke"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Nettverket kan\nvære overvåket"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Varslene vises her"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Bruk dem når som helst ved å sveipe nedover.\nSveip nedover igjen for å gå til systemkontrollene."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Sveip på kanten av skjermen for å få frem feltet"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Sveip fra kanten på skjermen for å få frem systemfeltet"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ne-rNP-land/strings.xml b/packages/SystemUI/res/values-ne-rNP-land/strings.xml
deleted file mode 100644
index 8d5286e42a06..000000000000
--- a/packages/SystemUI/res/values-ne-rNP-land/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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-ne-rNP/strings.xml b/packages/SystemUI/res/values-ne-rNP/strings.xml
deleted file mode 100644
index 9e6605eeb7fe..000000000000
--- a/packages/SystemUI/res/values-ne-rNP/strings.xml
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"प्रणाली UI"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"हटाउनुहोस्"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"सूचीबाट हटाउनुहोस्"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"अनुप्रयोगको जानकारी"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"कुनै नयाँ अनुप्रयोगहरू छैनन्"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"नयाँ अनुप्रयोगहरू खारेज गर्नुहोस्"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"१ भरखरै अनुप्रयोग"</item>
- <item quantity="other" msgid="1040784359794890744">"%d भरखरैका अनुप्रयोगहरू"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"कुनै सूचनाहरू छैन"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"चलिरहेको"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"सूचनाहरू"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"चार्जर जडान गर्नुहोस्"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"ब्याट्रि न्यून हुँदै छ।"</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> बाँकी"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"USB चार्ज गर्न समर्थित छैन।\n आपूर्ति गरिएको चार्जर मात्र प्रयोग गर्नुहोस्।"</string>
- <string name="battery_low_why" msgid="7279169609518386372">"ब्याट्रि प्रयोग"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"सेटिङहरू"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"वाइफाइ"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"हवाइजहाज मोड"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"स्वत:घुम्ने स्क्रिन"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"म्युट गर्नुहोस्"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"स्वतः"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"सूचनाहरू"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"ब्लुटुथ टेथर भयो"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"इनपुट विधिहरू सेटअप गर्नुहोस्"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"फिजिकल किबोर्ड"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"<xliff:g id="APPLICATION">%1$s</xliff:g> USB उपकरणलाई पहुँच दिनको लागि अनुप्रयोगलाई अनुमति दिने हो?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"<xliff:g id="APPLICATION">%1$s</xliff:g> USB पाटपुर्जालाई पहुँच दिनको लागि अनुप्रयोगलाई अनुमति दिने हो?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"यो USB उपकरण जोडिएको बेला <xliff:g id="ACTIVITY">%1$s</xliff:g> खोल्ने हो?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"यो USB सहायक जडान हुँदा <xliff:g id="ACTIVITY">%1$s</xliff:g> खोल्ने हो?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"यस USB उपकरणसँग स्थापित अनुप्रयोग काम गर्दैन। यस उपकरणको बारेमा <xliff:g id="URL">%1$s</xliff:g> मा धेरै जान्नुहोस्"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"USB सहयोगी"</string>
- <string name="label_view" msgid="6304565553218192990">"दृश्य"</string>
- <string name="always_use_device" msgid="1450287437017315906">"यो USB उपकरणको लागि पूर्वनिर्धारितबाट प्रयोग गर्नुहोस्"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"यस USB सहायक सामानको लागि पूर्वनिर्धारितद्वारा प्रयोग गर्नुहोस्"</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"USB डिबग गर्नको लागि अनुमति दिने हो?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"कम्प्युटरको RSA कुञ्जी औंलाछाप:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"यो कम्प्युटरबाट सधैँ अनुमति दिनुहोस्"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"स्क्रिन भर्न जुम गर्नुहोस्"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"स्क्रिन भर्न तन्काउनुहोस्"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"स्क्रिनसट बचत गर्दै…"</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"स्क्रिनसट बचत गर्दै…"</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"स्क्रिनसट बचत हुँदै छ।"</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"स्क्रिनसट क्याप्चर गरियो।"</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"तपाईँको स्क्रिनसट हेर्न छुनुहोस्।"</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"स्क्रिनसट क्याप्चर गर्न सकिएन।"</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"स्क्रिनसटलाई बचत गर्न सकेन। भण्डारण उपयोगमा हुन सक्छ।"</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB फाइल सार्ने विकल्पहरू"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"मिडिया प्लेयर(MTP)को रूपमा माउन्ट गर्नुहोस्"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"क्यामेराको रूपमा माउन्ट गर्नुहोस् (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"म्याकको लागि एन्ड्रोइड फाइल ट्रान्सफर अनुप्रयोग स्थापना गर्नुहोस्"</string>
- <string name="accessibility_back" msgid="567011538994429120">"पछाडि"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"गृह"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"मेनु"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"भर्खरका अनुप्रयोगहरू"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"इनपुट विधि बटन स्विच गर्नुहोस्।"</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"मिलाउने जुम बटन।"</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"स्क्रिनलाई सानोबाट ठूलो पार्नुहोस्।"</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"ब्लुटुथ जडान भयो।"</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"ब्लुटुथसँग विच्छेद गरियो।"</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"कुनै ब्याट्रि छैन।"</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"ब्याट्रि एउटा पट्टि।"</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"ब्याट्रिका दुईवटा पट्टिहरू"</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"ब्याट्रिका तिनवटा पट्टिहरू"</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"ब्याट्रि पूर्ण छ।"</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"फोन छैन्।"</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"फोन एउटा पट्टि।"</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"फोन दुई पट्टि।"</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"फोन तिन पट्टिहरू।"</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"फोन सङ्केत भरिएको।"</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"डेटा छैन।"</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"डेटाको एउटा पट्टि।"</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"डेटा दुई बाधाहरू।"</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"डेटा तिन बाधाहरू।"</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"डेटा संकेत पूर्ण।"</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"वाइफाइ बन्द।"</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"वाइफाइ विच्छेद भयो।"</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"वाइफाइ एक पट्टि।"</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"वाइफाइ दुई पट्टि।"</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"वाइफाइ तिन बारहरू।"</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"वाइफाइ सङ्केत भरिएको।"</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"वाइम्यास छैन।"</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX एउटा पट्टि।"</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"वाइम्याक्स दुईवटा बारहरू।"</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"वाइम्याक्स तिनवटा बारहरू।"</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"वाइम्याक्स सङ्केत भरिएका।"</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"सङ्केत छैन।"</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"जडान नगरिएको।"</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"शून्य पट्टि।"</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"एउटा बार।"</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"दुई पट्टिहरू।"</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"तिनवटा पट्टिहरू"</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"सङ्केत पूर्ण छ।"</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"चालु।"</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"बन्द गर्नुहोस्।"</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"जडान गरिएको।"</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"रोमिङ"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"वाइफाइ"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM छैन।"</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ब्लुटुथ टेदर गर्दै।"</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"हवाइजहाज मोड।"</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"ब्याट्रि <xliff:g id="NUMBER">%d</xliff:g> प्रतिशत"</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"प्रणाली सेटिङहरू"</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"सूचनाहरू।"</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"सूचना खाली गर्नुहोस्।"</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS सक्षम गरिएको"</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"GPS प्राप्त हुँदैछ।"</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"टेलि टाइपराइटर सक्षम गरियो।"</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"बज्ने कम्पन हुन्छ।"</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"घन्टी मौन।"</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g> खारेज गरिएको छ।"</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"सूचना खारेज।"</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"सूचना कक्ष।"</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"द्रुत सेटिङहरू"</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"वर्तमान अनुप्रयोगहरू"</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"प्रयोगकर्ता <xliff:g id="USER">%s</xliff:g>।"</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>। <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"मोवाइल <xliff:g id="SIGNAL">%1$s</xliff:g>। <xliff:g id="TYPE">%2$s</xliff:g>। <xliff:g id="NETWORK">%3$s</xliff:g>।"</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"ब्याट्रि <xliff:g id="STATE">%s</xliff:g>।"</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"हवाजहाज मोड <xliff:g id="STATE">%s</xliff:g>।"</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"ब्लुटुथ <xliff:g id="STATE">%s</xliff:g>।"</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"<xliff:g id="TIME">%s</xliff:g>को लागि सङ्केत घन्टी सेट गरिएको"</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G डेटा अक्षम गरियो"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G डेटा असक्षम गरियो"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"मोबाइल डेटा अक्षम गरियो"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"डेटा अक्षम गरियो"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"तपाईँ निर्दिष्ट डेटा उपयोग सीमामा पुग्नु भएको छ।\n\nयदि तपाईँले डेटालाई पुनःसक्षम पार्नु भयो भने तपाईँलाई अर्को संचालकबाट शुल्क लगाउन सक्छ।"</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"डेटा पुनः सक्षम गर्नुहोस्"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"इन्टरनेट जडान छैन"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"वाइफाइ जडित"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"GPSको लागि खोजी गर्दै"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"GPS द्वारा स्थान सेट गरिएको"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"स्थान अनुरोधहरू सक्रिय"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"सबै सूचनाहरू हटाउनुहोस्।"</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"अनुप्रयोगको जानकारी"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"स्क्रिन स्वतः घुम्ने छ।"</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"स्क्रिनलाई ल्यान्डस्केप अवस्थामा बन्द गरिएको छ।"</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"स्क्रिन पोर्टेट अभिमूखमा लक गरिएको छ।"</string>
- <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
- <string name="start_dreams" msgid="7219575858348719790">"दिवासपना"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"हवाइजहाज मोड"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"चार्ज हुँदै, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"चार्ज भयो"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"ब्लुटुथ"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"ब्लुटुथ (<xliff:g id="NUMBER">%d</xliff:g> उपकरणहरू)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"ब्लुटुथ बन्द"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"चमक"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"स्वतः घुमाइ"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"घुम्ने लक गरेको"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"आगत विधि"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"स्थान"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"स्थान बन्द छ"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"मिडिया उपकरण"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"आकस्मिक कल मात्र"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"सेटिङहरू"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"समय"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"मलाई"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"वाइफाइ"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"जोडिएको छैन"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"नेटवर्क छैन"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"वाइफाइ बन्द"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"वाइफाइ प्रदर्शन"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"ताररहित प्रदर्शन"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"उज्यालपन"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"स्वतः"</string>
- <string name="ssl_ca_cert_warning" msgid="5848402127455021714">"सञ्जाल अनुगमित हुन सक्छ"</string>
- <string name="done_button" msgid="1759387181766603361">"भयो"</string>
- <string name="ssl_ca_cert_dialog_title" msgid="1273796967092027291">"सञ्जाल निगरानी"</string>
- <string name="ssl_ca_cert_info_message" msgid="5430320539555358452">"यो उपकरण <xliff:g id="MANAGING_DOMAIN">%s</xliff:g>द्वारा प्रबन्धित छ। \n \n तपाईँको प्रशासक तपाईँको अनुप्रयोग र सुरक्षित वेब साइट लगायत सञ्जाल गतिविधि अनुगमन गर्न सक्षम छ। \n \n थप जानकारीको लागि तपाईँको प्रशासकसँग सम्पर्क राख्नुहोस्।"</string>
- <string name="ssl_ca_cert_warning_message" msgid="2033091656129963669">"एक तेस्रो पक्ष तपाईँको सञ्जाल\n गतिविधि, इमेल, अनुप्रयोग र सुरक्षित वेबसाइट अनुगमन गर्न सक्षम छ। \n \n तपाईँको उपकरणमा स्थापित एक विश्वसनीय प्रामाणिक डेटाले सम्भव तुल्याइरहेको छ।"</string>
- <string name="ssl_ca_cert_settings_button" msgid="7946956977377166709">"विश्वसनीय प्रामाणिक डेटा जाँच गर्नुहोस्"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
deleted file mode 100644
index c3eee0179341..000000000000
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"प्रणाली UI"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"हटाउनुहोस्"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"सूचीबाट हटाउनुहोस्"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"अनुप्रयोगको जानकारी"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"कुनै नयाँ अनुप्रयोगहरू छैनन्"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"नयाँ अनुप्रयोगहरू खारेज गर्नुहोस्"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"१ भरखरै अनुप्रयोग"</item>
- <item quantity="other" msgid="1040784359794890744">"%d भरखरैका अनुप्रयोगहरू"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"कुनै सूचनाहरू छैन"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"चलिरहेको"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"सूचनाहरू"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"चार्जर जडान गर्नुहोस्"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"ब्याट्रि न्यून हुँदै छ।"</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> बाँकी"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"USB चार्ज गर्न समर्थित छैन।\n आपूर्ति गरिएको चार्जर मात्र प्रयोग गर्नुहोस्।"</string>
- <string name="battery_low_why" msgid="7279169609518386372">"ब्याट्रि प्रयोग"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"सेटिङहरू"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"वाइ-फाइ"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"हवाइजहाज मोड"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"स्वत:घुम्ने स्क्रिन"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"म्युट गर्नुहोस्"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"स्वतः"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"सूचनाहरू"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"ब्लुटुथ टेथर भयो"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"इनपुट विधिहरू सेटअप गर्नुहोस्"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"फिजिकल किबोर्ड"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"<xliff:g id="APPLICATION">%1$s</xliff:g> USB उपकरणलाई पहुँच दिनको लागि अनुप्रयोगलाई अनुमति दिने हो?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"<xliff:g id="APPLICATION">%1$s</xliff:g> USB पाटपुर्जालाई पहुँच दिनको लागि अनुप्रयोगलाई अनुमति दिने हो?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"यो USB उपकरण जोडिएको बेला <xliff:g id="ACTIVITY">%1$s</xliff:g> खोल्ने हो?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"यो USB सहायक जडान हुँदा <xliff:g id="ACTIVITY">%1$s</xliff:g> खोल्ने हो?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"यस USB उपकरणसँग स्थापित अनुप्रयोग काम गर्दैन। यस उपकरणको बारेमा <xliff:g id="URL">%1$s</xliff:g> मा धेरै जान्नुहोस्"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"USB सहयोगी"</string>
- <string name="label_view" msgid="6304565553218192990">"दृश्य"</string>
- <string name="always_use_device" msgid="1450287437017315906">"यो USB उपकरणको लागि पूर्वनिर्धारितबाट प्रयोग गर्नुहोस्"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"यस USB सहायक सामानको लागि पूर्वनिर्धारितद्वारा प्रयोग गर्नुहोस्"</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"USB डिबग गर्नको लागि अनुमति दिने हो?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"कम्प्युटरको RSA कुञ्जी औंलाछाप:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"यो कम्प्युटरबाट सधैँ अनुमति दिनुहोस्"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"स्क्रिन भर्न जुम गर्नुहोस्"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"स्क्रिन भर्न तन्काउनुहोस्"</string>
- <string name="compat_mode_help_header" msgid="7969493989397529910">"अनुकूलता जुम"</string>
- <string name="compat_mode_help_body" msgid="4946726776359270040">"जब कुनै अनुप्रयोग सानो स्क्रिनको लागि बनाइएको हुन्छ, तब जुम नियन्त्रण घडीको नजिक देखिन्छ।"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"स्क्रिनसट बचत गर्दै…"</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"स्क्रिनसट बचत गर्दै…"</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"स्क्रिनसट बचत हुँदै छ।"</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"स्क्रिनसट क्याप्चर गरियो।"</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"तपाईँको स्क्रिनसट हेर्न छुनुहोस्।"</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"स्क्रिनसट क्याप्चर गर्न सकिएन।"</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"स्क्रिनसटलाई बचत गर्न सकेन। भण्डारण उपयोगमा हुन सक्छ।"</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB फाइल सार्ने विकल्पहरू"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"मिडिया प्लेयर(MTP)को रूपमा माउन्ट गर्नुहोस्"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"क्यामेराको रूपमा माउन्ट गर्नुहोस् (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"म्याकको लागि एन्ड्रोइड फाइल ट्रान्सफर अनुप्रयोग स्थापना गर्नुहोस्"</string>
- <string name="accessibility_back" msgid="567011538994429120">"पछाडि"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"गृह"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"मेनु"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"भर्खरका अनुप्रयोगहरू"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"इनपुट विधि बटन स्विच गर्नुहोस्।"</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"मिलाउने जुम बटन।"</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"स्क्रिनलाई सानोबाट ठूलो पार्नुहोस्।"</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"ब्लुटुथ जडान भयो।"</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"ब्लुटुथसँग विच्छेद गरियो।"</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"कुनै ब्याट्रि छैन।"</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"ब्याट्रि एउटा पट्टि।"</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"ब्याट्रिका दुईवटा पट्टिहरू"</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"ब्याट्रिका तिनवटा पट्टिहरू"</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"ब्याट्रि पूर्ण छ।"</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"फोन छैन्।"</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"फोन एउटा पट्टि।"</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"फोन दुई पट्टि।"</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"फोन तिन पट्टिहरू।"</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"फोन सङ्केत भरिएको।"</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"डेटा छैन।"</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"डेटाको एउटा पट्टि।"</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"डेटा दुई बाधाहरू।"</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"डेटा तिन बाधाहरू।"</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"डेटा संकेत पूर्ण।"</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"वाइफाइ बन्द।"</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"वाइफाइ विच्छेद भयो।"</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"वाइफाइ एक पट्टि।"</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"वाइफाइ दुई पट्टि।"</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"वाइफाइ तिन बारहरू।"</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"वाइफाइ सङ्केत भरिएको।"</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"वाइम्यास छैन।"</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX एउटा पट्टि।"</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"वाइम्याक्स दुईवटा बारहरू।"</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"वाइम्याक्स तिनवटा बारहरू।"</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"वाइम्याक्स सङ्केत भरिएका।"</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"सङ्केत छैन।"</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"जडान नगरिएको।"</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"शून्य पट्टि।"</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"एउटा बार।"</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"दुई पट्टिहरू।"</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"तिनवटा पट्टिहरू"</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"सङ्केत पूर्ण छ।"</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"चालु।"</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"बन्द गर्नुहोस्।"</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"जडान गरिएको।"</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"रोमिङ"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"वाइ-फाइ"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM छैन।"</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ब्लुटुथ टिथर गर्दै।"</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"हवाइजहाज मोड।"</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"ब्याट्रि <xliff:g id="NUMBER">%d</xliff:g> प्रतिशत"</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"प्रणाली सेटिङहरू"</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"सूचनाहरू।"</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"सूचना खाली गर्नुहोस्।"</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS सक्षम गरिएको"</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"GPS प्राप्त हुँदैछ।"</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"टेलि टाइपराइटर सक्षम गरियो।"</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"बज्ने कम्पन हुन्छ।"</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"घन्टी मौन।"</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g> खारेज गरिएको छ।"</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"सूचना खारेज।"</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"सूचना कक्ष।"</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"द्रुत सेटिङहरू"</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"वर्तमान अनुप्रयोगहरू"</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"प्रयोगकर्ता <xliff:g id="USER">%s</xliff:g>।"</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>। <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"मोवाइल <xliff:g id="SIGNAL">%1$s</xliff:g>। <xliff:g id="TYPE">%2$s</xliff:g>। <xliff:g id="NETWORK">%3$s</xliff:g>।"</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"ब्याट्रि <xliff:g id="STATE">%s</xliff:g>।"</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"हवाजहाज मोड <xliff:g id="STATE">%s</xliff:g>।"</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"ब्लुटुथ <xliff:g id="STATE">%s</xliff:g>।"</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"<xliff:g id="TIME">%s</xliff:g>को लागि सङ्केत घन्टी सेट गरिएको"</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G डेटा अक्षम गरियो"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G डेटा असक्षम गरियो"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"मोबाइल डेटा अक्षम गरियो"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"डेटा अक्षम गरियो"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"तपाईँ निर्दिष्ट डेटा उपयोग सीमामा पुग्नु भएको छ।\n\nयदि तपाईँले डेटालाई पुनःसक्षम पार्नु भयो भने तपाईँलाई अर्को संचालकबाट शुल्क लगाउन सक्छ।"</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"डेटा पुनः सक्षम गर्नुहोस्"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"इन्टरनेट जडान छैन"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"वाइ-फाइ जडित"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"GPSको लागि खोजी गर्दै"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"GPS द्वारा स्थान सेट गरिएको"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"स्थान अनुरोधहरू सक्रिय"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"सबै सूचनाहरू हटाउनुहोस्।"</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"अनुप्रयोगको जानकारी"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"स्क्रिन स्वतः घुम्ने छ।"</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"स्क्रिनलाई ल्यान्डस्केप अवस्थामा बन्द गरिएको छ।"</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"स्क्रिन पोर्टेट अभिमूखमा लक गरिएको छ।"</string>
- <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
- <string name="start_dreams" msgid="7219575858348719790">"दिवासपना"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"उडान मोड"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"चार्ज हुँदै, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"चार्ज भयो"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"ब्लुटुथ"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"ब्लुटुथ (<xliff:g id="NUMBER">%d</xliff:g> उपकरणहरू)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"ब्लुटुथ बन्द"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"चमक"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"स्वतः घुमाइ"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"घुम्ने लक गरेको"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"आगत विधि"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"स्थान"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"स्थान बन्द छ"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"मिडिया उपकरण"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"आकस्मिक कल मात्र"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"सेटिङहरू"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"समय"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"मलाई"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"वाइ-फाइ"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"जोडिएको छैन"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"नेटवर्क छैन"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"वाइ-फाइ बन्द"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"वाइ-फाइ प्रदर्शन"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"ताररहित प्रदर्शन"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"उज्यालपन"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"स्वतः"</string>
- <string name="status_bar_help_title" msgid="1199237744086469217">"यहाँ जानकारीहरू देखा पर्छन्"</string>
- <string name="status_bar_help_text" msgid="7874607155052076323">"तल हुत्त्याएर तिनीहरूलाई सधैं पहुँच गर्नुहोस्\nप्रणाली नियन्त्रणको लागि पुनः तल हुत्त्याउनुहोस्"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index deda030e5f88..ab77839c233f 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Altijd toestaan vanaf deze computer"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom om scherm te vullen"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Rek uit v. schermvulling"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Compatibiliteitszoom"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Wanneer een app is ontworpen voor een kleiner scherm, wordt naast de klok een zoomknop weergegeven."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Screenshot opslaan..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Screenshot opslaan..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Screenshot wordt opgeslagen."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Startpagina"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menu"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Recente apps"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Zoeken"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Camera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Knop voor wijzigen invoermethode."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Knop voor compatibiliteitszoom."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Kleiner scherm uitzoomen naar groter scherm."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Verbonden via wifi"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Zoeken naar GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Locatie bepaald met GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Locatieverzoeken actief"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Alle meldingen wissen."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App-info"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Scherm wordt automatisch geroteerd."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Het scherm is nu vergrendeld in liggende stand."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Het scherm is nu vergrendeld in staande stand."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Dessertshowcase"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Dagdroom"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Vliegmodus"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Draadloze display"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Helderheid"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMATISCH"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Netwerk kan\nworden gecontroleerd"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Meldingen worden hier weergegeven"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"U kunt de meldingen op elk gewenst moment openen door met uw vinger omlaag te vegen.\nVeeg nogmaals met uw vinger omlaag om de systeembesturingselementen weer te geven."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Veeg vanaf de rand om balk weer te geven"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Veeg vanaf de rand van het scherm om de systeembalk weer te geven"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index 41dfd42470e6..c94cfc8c828c 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Zawsze zezwalaj z tego komputera"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Powiększ, aby wypełnić ekran"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Rozciągnij, aby wypełnić ekran"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Powiększenie w trybie zgodności"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Jeśli aplikacja została przystosowana do mniejszego ekranu, obok zegara zostanie wyświetlony element sterujący powiększeniem."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Zapisywanie zrzutu ekranu..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Zapisywanie zrzutu ekranu..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Zapisywanie zrzutu ekranu."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Ekran główny"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menu"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Ostatnie aplikacje"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Szukaj"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Aparat"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Przycisk przełączania metody wprowadzania."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Przycisk powiększenia na potrzeby zgodności."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Powiększa mniejszy ekran do większego."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi: połączono"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Wyszukiwanie sygnału GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Lokalizacja z GPSa"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Prośby o lokalizację są aktywne"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Usuń wszystkie powiadomienia."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"O aplikacji"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran zostanie obrócony automatycznie."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Ekran jest zablokowany w orientacji poziomej."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ekran jest zablokowany w orientacji pionowej."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Półka ze słodkościami"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Wygaszacz ekranu"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Tryb samolotowy"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Wyświetlacz bezprzewodowy"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Jasność"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMATYCZNA"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Sieć może być\nmonitorowana"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Tutaj pokazują się powiadomienia"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Możesz je otworzyć w dowolnej chwili, przesuwając w dół.\nPrzesuń jeszcze raz w dół, by otworzyć ustawienia systemowe."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Przesuń palcem od krawędzi ekranu, by odkryć pasek"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Przesuń palcem od krawędzi ekranu, by odkryć pasek systemu"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index b1f599bd97bc..c106329e04dc 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Permitir sempre a partir deste computador"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom para preencher o ecrã"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Esticar p. caber em ec. int."</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom de compatibilidade"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Sempre que uma aplicação tiver sido concebida para ecrãs mais pequenos, aparecerá um controlo de zoom junto ao relógio."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"A guardar captura de ecrã..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"A guardar captura de ecrã..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"A guardar captura de ecrã."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Página inicial"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menu"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Aplicações recentes"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Pesquisar"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Câmara"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Alternar botão de método de introdução."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Botão zoom de compatibilidade."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zoom menor para ecrã maior."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi ligado"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"A procurar GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Localização definida por GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Pedidos de localização ativos"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Limpar todas as notificações."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informações da aplicação"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"O ecrã será rodado automaticamente."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"O ecrã está bloqueado na orientação horizontal."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"O ecrã está bloqueado na orientação vertical."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Vitrina de sobremesas"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Modo de avião"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Display Sem Fios"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Brilho"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMÁTICO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"A rede pode ser\nmonitorizada"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"As notificações são apresentadas aqui"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Pode aceder em qualquer altura, deslizando rapidamente para baixo com o dedo.\nDeslize novamente para baixo para aceder aos controlos do sistema."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Deslize da extremidade do ecrã para revelar a barra"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Deslize da extremidade do ecrã para revelar a barra do sistema"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index ae9ea1e751b5..91e7f024a676 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Sempre permitir a partir deste computador"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom p/ preencher a tela"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Ampliar p/ preencher tela"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom em modo de compatibilidade"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Quando um aplicativo é desenvolvido para uma tela menor, um controle de zoom é exibido perto do relógio."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Salvando captura de tela..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Salvando captura de tela..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"A captura de tela está sendo salva."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Página inicial"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menu"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Aplicativos recentes"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Pesquisar"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Câmera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Alterar botão do método de entrada."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Botão de zoom da compatibilidade."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Aumentar a tela com zoom."</string>
@@ -166,13 +166,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi conectado"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Buscando GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Local definido por GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Solicitações de localização ativas"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Limpar todas as notificações."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informações do aplicativo"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"A tela girará automaticamente."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"A tela está bloqueada na orientação paisagem."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"A tela está bloqueada na orientação retrato."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Mostruário de sobremesas"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Modo avião"</string>
@@ -185,8 +184,10 @@
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Girar automat."</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotação bloqueada"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"Método de entrada"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Localização"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Localização desativada"</string>
+ <!-- no translation found for quick_settings_location_label (5011327048748762257) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_off_label (7464544086507331459) -->
+ <skip />
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Dispositivo de mídia"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Somente chamadas de emergência"</string>
@@ -201,5 +202,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Display sem fio"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Brilho"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"A rede pode estar\nsob monitoração"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"As notificações aparecem aqui"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Acesse a qualquer momento deslizando para baixo.\nDeslize para baixo novamente para acessar os controles do sistema."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Deslize a borda da tela para ver a barra"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Deslize a partir da borda da tela ver a barra do sistema"</string>
</resources>
diff --git a/packages/SystemUI/res/values-rm/strings.xml b/packages/SystemUI/res/values-rm/strings.xml
index 287b382c4bb0..d7772ed26b13 100644
--- a/packages/SystemUI/res/values-rm/strings.xml
+++ b/packages/SystemUI/res/values-rm/strings.xml
@@ -92,6 +92,10 @@
<skip />
<!-- no translation found for compat_mode_off (4434467572461327898) -->
<skip />
+ <!-- no translation found for compat_mode_help_header (7969493989397529910) -->
+ <skip />
+ <!-- no translation found for compat_mode_help_body (4946726776359270040) -->
+ <skip />
<!-- no translation found for screenshot_saving_ticker (7403652894056693515) -->
<skip />
<!-- no translation found for screenshot_saving_title (8242282144535555697) -->
@@ -122,10 +126,6 @@
<skip />
<!-- no translation found for accessibility_recent (8571350598987952883) -->
<skip />
- <!-- no translation found for accessibility_search_light (1103867596330271848) -->
- <skip />
- <!-- no translation found for accessibility_camera_button (8064671582820358152) -->
- <skip />
<!-- no translation found for accessibility_ime_switch_button (5032926134740456424) -->
<skip />
<!-- no translation found for accessibility_compatibility_zoom_button (8461115318742350699) -->
@@ -298,8 +298,6 @@
<skip />
<!-- no translation found for gps_notification_found_text (4619274244146446464) -->
<skip />
- <!-- no translation found for accessibility_location_active (2427290146138169014) -->
- <skip />
<!-- no translation found for accessibility_clear_all (5235938559247164925) -->
<skip />
<!-- no translation found for status_bar_notification_inspect_item_title (1163547729015390250) -->
@@ -310,7 +308,7 @@
<skip />
<!-- no translation found for accessibility_rotation_lock_on_portrait (5809367521644012115) -->
<skip />
- <!-- no translation found for dessert_case (1295161776223959221) -->
+ <!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
<!-- no translation found for start_dreams (7219575858348719790) -->
<skip />
@@ -368,6 +366,12 @@
<skip />
<!-- no translation found for quick_settings_brightness_dialog_auto_brightness_label (5064982743784071218) -->
<skip />
- <!-- no translation found for ssl_ca_cert_warning (9005954106902053641) -->
+ <!-- no translation found for status_bar_help_title (1199237744086469217) -->
+ <skip />
+ <!-- no translation found for status_bar_help_text (7874607155052076323) -->
+ <skip />
+ <!-- no translation found for hideybar_confirmation_message (9050869548951044371) -->
+ <skip />
+ <!-- no translation found for hideybar_confirmation_message_long (7117692795163620626) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index f57c3b5c2235..42e2d4801bc4 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Permiteţi întotdeauna de pe acest computer"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom pt. a umple ecranul"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Înt. pt. a umple ecranul"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom de compatibilitate"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Atunci când o aplicaţie a fost concepută pentru un ecran mai mic, o comandă pentru mărire/micşorare va apărea alături de ceas."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Se salv. captura de ecran..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Se salvează captura de ecran..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Captura de ecran este salvată."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Ecranul de pornire"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Meniu"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Aplicaţii recente"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Căutați"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Cameră foto"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Buton pentru comutarea metodei de introducere."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Buton zoom pentru compatibilitate."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Faceţi zoom de la o imagine mai mică la una mai mare."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi conectat"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Se caută GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Locaţie setată prin GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Solicitări locație active"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ștergeţi toate notificările."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informaţii despre aplicaţie"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ecranul se va roti în mod automat."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Ecranul este blocat în orientarea de tip peisaj."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ecranul este blocat în orientarea de tip portret."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Vitrina cu dulciuri"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Mod Avion"</string>
@@ -183,8 +182,10 @@
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Rotire automată"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotire blocată"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"Metodă de introducere"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Locație"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Localizarea este dezactivată"</string>
+ <!-- no translation found for quick_settings_location_label (5011327048748762257) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_off_label (7464544086507331459) -->
+ <skip />
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Dispozitiv media"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Numai apeluri de urgenţă"</string>
@@ -199,5 +200,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Ecran wireless"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Luminozitate"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMAT"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Rețeaua poate\nfi monitorizată"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Notificările se afişează aici"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Accesaţi-le oricând glisând în jos.\nGlisaţi în jos din nou pentru comenzile sistemului."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Glisați dinspre marginea ecranului pentru a afișa bara"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Glisați dinspre marginea ecranului pentru a afișa bara de sistem"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index f7bb4d307734..233fee8a8a52 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Всегда разрешать отладку с этого компьютера"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Подогнать по размерам экрана"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Растянуть на весь экран"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Масштаб и совместимость"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Если приложение рассчитано на экран меньших размеров, рядом с часами появятся средства масштабирования."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Сохранение..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Сохранение..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Сохранение..."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Домой"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Меню"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Недавние приложения"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Поиск"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Камера"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Кнопка переключения способа ввода."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Кнопка масштабирования (режим совместимости)"</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Уменьшение изображения для увеличения свободного места на экране."</string>
@@ -166,13 +166,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi подключено"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Поиск GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Координаты по GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Есть активные запросы на определение местоположения"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Удалить все уведомления"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"О приложении"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Экран будет поворачиваться автоматически."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Выбрана только альбомная ориентация экрана."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Выбрана только книжная ориентация экрана."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Коробка со сладостями"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Заставка"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Режим полета"</string>
@@ -187,8 +186,10 @@
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Автоповорот"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Автоповорот выкл."</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"Способ ввода"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Передача геоданных"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Местоположение выкл."</string>
+ <!-- no translation found for quick_settings_location_label (5011327048748762257) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_off_label (7464544086507331459) -->
+ <skip />
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Режим медиа"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Экстр. вызов"</string>
@@ -203,5 +204,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Wi-Fi-монитор"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Яркость"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"АВТОНАСТРОЙКА"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Действия в сети\nмогут отслеживаться"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Это панель уведомлений"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Ее можно открыть, пролистнув экран вниз.\nЧтобы открыть настройки, проведите пальцем вниз ещё раз."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Чтобы открыть панель, проведите пальцем от края к центру экрана"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Чтобы открыть панель навигации, проведите пальцем от края к центру экрана"</string>
</resources>
diff --git a/packages/SystemUI/res/values-si-rLK-land/strings.xml b/packages/SystemUI/res/values-si-rLK-land/strings.xml
deleted file mode 100644
index b5aba2a98e0c..000000000000
--- a/packages/SystemUI/res/values-si-rLK-land/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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-si-rLK/strings.xml b/packages/SystemUI/res/values-si-rLK/strings.xml
deleted file mode 100644
index 24accd15455c..000000000000
--- a/packages/SystemUI/res/values-si-rLK/strings.xml
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"පද්ධති UI"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"හිස් කරන්න"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"ලැයිස්තුවෙන් ඉවත් කරන්න"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"යෙදුම් තොරතුරු"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"මෑත උපාංග නැත"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"මෑත යෙදුම් ඉවතලන්න"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"මෑත යෙදුම් 1 ක්"</item>
- <item quantity="other" msgid="1040784359794890744">"මෑත යෙදුම් %d ක්"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"දැනුම්දීම් නැත"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"දැනට පවතින"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"දැනුම්දීම්"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"අරෝපකයට සම්බන්ධ කරන්න"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"බැටරිය අඩු වෙමින් පවතී."</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> ක් ඉතිරියි"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"USB ආරෝපණය සහය නොදක්වයි.\nසපයන ලද ආරෝපකය පමණක් භාවිතා කරන්න."</string>
- <string name="battery_low_why" msgid="7279169609518386372">"බැටරි භාවිතය"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"සැකසීම්"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"අහස්යානා ආකාරය"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"ස්වයංක්‍රීයව-භ්‍රමණය වන තිරය"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"නිශ්ශබ්ද කරන්න"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"ස්වයංක්‍රීය"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"දැනුම්දීම්"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"බ්ලූටූත් ටෙදර් කරා"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"ආදාන ක්‍රම සකසන්න"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"භෞතික යතුරු පුවරුව"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"USB උපාංගය ප්‍රවේශ කිරීමට <xliff:g id="APPLICATION">%1$s</xliff:g> යෙදුමට අවසර දෙනවාද?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"USB මෙවලම ප්‍රවේශ කිරීමට <xliff:g id="APPLICATION">%1$s</xliff:g> යෙදුමට අවසර දෙනවාද?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"මෙම USB උපාංගය සම්බන්ධ විට <xliff:g id="ACTIVITY">%1$s</xliff:g> විවෘත කරන්නද?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"මෙම USB මෙවලමට සම්බන්ධ වී ඇති විට <xliff:g id="ACTIVITY">%1$s</xliff:g> විවෘත කරන්නද?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"මෙම USB මෙවලම සමග ක්‍රියා කරන ස්ථාපිත යෙදුම් නොමැත. <xliff:g id="URL">%1$s</xliff:g> වලින් මෙම මෙවලම ගැන තව දැනගන්න"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"USB මෙවලම"</string>
- <string name="label_view" msgid="6304565553218192990">"පෙනුම"</string>
- <string name="always_use_device" msgid="1450287437017315906">"මෙම USB උපාංගය සඳහා සුපුරුද්දෙන් භාවිතා කරන්න"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"මේ USB මෙවලම සඳහා සුපුරුද්දෙන් භාවිතා කරන්න."</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"USB නිදොස්කරණයට අවසර දෙනවද?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"මෙම පරිගණකයේ RSA යතුරු ඇඟිලි සටහන වන්නේ:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"සැම විටම මෙම පරිගණකයෙන් ඉඩ ලබා දෙන්න"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"තිරය පිරවීමට විශාලනය කරන්න"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"තිරය පිරවීමට අදින්න"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"තිර රුව සුරකිමින්…"</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"තිර රුව සුරැකෙමින් පවතී…"</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"තිර රුව සුරැකෙමින් පවතී."</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"තිර රුව ග්‍රහණය කරන ලදි."</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"ඔබගේ තිර රුව බැලීමට ස්පර්ශ කරන්න."</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"තිර රුව ග්‍රහණය කිරීමට නොහැකි විය."</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"තිර රුව සුරැකීමට නොහැකි විය. ආචයනය භාවිතාවේ තිබෙනවා විය හැක."</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB ගොනු හුවමාරු විකල්ප"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"මධ්‍ය ධාවකයක් (MTP) ලෙස සවි කරන්න"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"කැමරාවක් (PTP) ලෙස සවි කරන්න"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"Mac සඳහා Android ගොනු හුවමාරු යෙදුම ස්ථාපනය කරන්න"</string>
- <string name="accessibility_back" msgid="567011538994429120">"ආපසු"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"මුල් පිටුව"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"මෙනුව"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"මෑත යෙදුම්"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"ආදාන ක්‍රමය මාරු කිරීමේ බොත්තම."</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"ගැළපෙන විශාලන බොත්තම."</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"විශාල තිරය වෙත කුඩාව විශාලනය කරන්න."</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"බ්ලූටූත් සම්බන්ධිතයි."</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"බ්ලූටූත් විසන්ධි කර ඇත."</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"බැටරිය නැත."</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"බැටරිය තීරු එකයි."</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"බැටරිය තීරු දෙකයි."</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"බැටරිය තීරු තුනයි."</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"බැටරිය පිරී ඇත."</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"දුරකථනයක් නැත."</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"දුරකථනය තීරු එකයි."</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"දුරකථනය තීරු දෙකයි."</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"දුරකථනය තීරු තුනයි."</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"දුරකථනයේ සංඥාව පිරී ඇත."</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"දත්ත නැත."</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"දත්ත තීරු එකයි."</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"දත්ත තීරු 2."</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"දත්ත තීරු 3."</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"දත්ත සංඥාව පිරී ඇත."</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"Wifi අක්‍රියයි."</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"Wifi සම්බන්ධ කර නොමැත."</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"Wifi තීරු එකයි."</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"Wifi තීරු දෙකයි."</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"WiFi තීරු තුනයි."</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"Wifi සංඥාව පිරී ඇත."</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX නැත."</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX තීරු එකයි."</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX තීරු දෙකයි."</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX තීරු තුනයි."</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX සංඥාව පිරී ඇත."</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"සංඥා නැත."</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"සම්බන්ධ වී නැත."</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"තීරු ශුන්‍යයි."</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"තීරු එක."</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"තීරු දෙකයි."</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"තීරු තුනයි."</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"සංඥාව පිරී ඇත."</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"සක්‍රීයයි."</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"අක්‍රිය කරන්න."</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"සම්බන්ධිතයි."</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"රෝමිං"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM නැත."</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"බ්ලූටූත් ටෙදරින්."</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"අහස්යානා ආකාරය."</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"බැටරි ප්‍රතිශතය <xliff:g id="NUMBER">%d</xliff:g>"</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"පද්ධති සැකසීම්."</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"දැනුම්දීම්."</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"දැනුම්දීම හිස් කරන්න."</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS සබල කර ඇත."</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"GPS ලබා ගනිමින්."</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"TeleTypewriter ක්‍රියාත්මකයි."</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"හඬ නඟනය කම්පනය වේ."</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"හඬ නඟනය නිශ්ශබ්දයි."</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g> අස් කර ඇත."</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"දැනුම්දීම නිෂ්ප්‍රභා කරඇත."</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"දැනුම්දීම් ආවරණය."</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"ක්ෂණික සැකසීම්."</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"මෑත කාලීන යෙදුම්."</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"පරිශීලකයා <xliff:g id="USER">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"ජංගම <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"බැටරිය <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"අහස්යානා ආකාරය <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"බ්ලූටූත් <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"<xliff:g id="TIME">%s</xliff:g> සඳහා සීනුව සකස් කර ඇත."</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G දත්ත අබල කර ඇත"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G දත්ත අබල කරන ලදි"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"ජංගම දත්ත අබල කර ඇත"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"දත්ත අබල කර ඇත"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"ඔබ නියමිත දත්ත භාවිත සීමාවට ළඟා වී ඇත.\n\nඔබ දත්ත නැවත සබල කළහොත් වාහකයා ඔබගෙන් ඇතැම් විට අය කරගත හැක."</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"නැවත දත්ත සබල කරන්න"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"අන්තර්ජාල සම්බන්ධතාවයක් නැත"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi සම්බන්ධිතයි"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS සඳහා සොයමින්"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"GPS මඟින් ස්ථානය සකසා ඇත"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"පිහිටීම් ඉල්ලීම් සක්‍රියයි"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"සියලු දැනුම්දීම් හිස් කරන්න."</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"යෙදුම් තොරතුරු"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"තිරය ස්වයංක්‍රීයව කරකැවේ."</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"තිරය තිරස් දිශානතියෙහි අගුළු දමා ඇත."</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"තිරය සිරස් දිශානතිය තුළ අගුළු වැටී ඇත."</string>
- <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
- <string name="start_dreams" msgid="7219575858348719790">"දවල් හීනය"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"ඊතර නෙට්"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"අහස්යානා ආකාරය"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"ආරෝපණය වෙමින්, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"අරෝපිතයි"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"බ්ලූටූත්"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"බ්ලූටූත් (උපාංග <xliff:g id="NUMBER">%d</xliff:g>)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"බ්ලූටූත් අක්‍රියයි"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"දීප්තිය"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"ස්වයංක්‍රීය කරකැවීම"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"භ්‍රමණය අගුළු දමා ඇත"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"ආදාන ක්‍රමය"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"ස්ථානය"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"ස්ථානය අක්‍රියයි"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"මාධ්‍ය උපාංගය"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"හදිසි ඇමතුම් පමණි"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"සැකසීම්"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"වේලාව"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"මම"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"සම්බන්ධ වී නොමැත"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"ජාලයක් නැත"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi අක්‍රියයි"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi සංදර්ශකය"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"නොරැහැන් සංදර්ශකය"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"දීප්තිමත් බව"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"ස්වයංක්‍රීය"</string>
- <string name="ssl_ca_cert_warning" msgid="5848402127455021714">"ඇතැම් විට ජාලය නිරීක්ෂණය විය හැක"</string>
- <string name="done_button" msgid="1759387181766603361">"හරි"</string>
- <string name="ssl_ca_cert_dialog_title" msgid="1273796967092027291">"ජාල නිරීක්ෂණය කිරීම"</string>
- <string name="ssl_ca_cert_info_message" msgid="5430320539555358452">"මෙම උපාංගය කළමනාකරණය කරනුයේ: <xliff:g id="MANAGING_DOMAIN">%s</xliff:g>.\n\nඔබගේ පරිපාලකයා ඊ-තැපැල්, යෙදුම්, සහ ආරක්‍ෂිත වෙබ් අඩවි ඇතුළුව ඔබගේ ජාල ක්‍රියාකාරකම් නිරීක්ෂණය කිරීමට හැකියාව ඇත.\n\nවැඩි විස්තර සඳහා, ඔබේ පරිපාලකයා සම්බන්ධ කරගන්න."</string>
- <string name="ssl_ca_cert_warning_message" msgid="2033091656129963669">"තුන්වන පාර්ශවයකට ඔබගේ ජාලය නිරීක්ෂණය කිරීමට හැකියාව ඇත\nක්‍රියාකාරකම්, ඊ-තැපැල්, යෙදුම් සහ ආරක්‍ෂිත වෙබ් අඩවි ඇතුළුව.\n\nඔබගේ උපාංගය මත ස්ථාපිත විශ්වාසදයී අක්තපත්‍ර මෙය සිදුවීමේ හැකියාව ඇතිකරයි."</string>
- <string name="ssl_ca_cert_settings_button" msgid="7946956977377166709">"විශ්වාසදායී අක්තපත්‍ර පරික්ෂා කරන්න"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
deleted file mode 100644
index f28cd16ed4f4..000000000000
--- a/packages/SystemUI/res/values-si/strings.xml
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"පද්ධති UI"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"හිස් කරන්න"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"ලැයිස්තුවෙන් ඉවත් කරන්න"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"යෙදුම් තොරතුරු"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"මෑත උපාංග නැත"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"මෑත යෙදුම් ඉවතලන්න"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"මෑත යෙදුම් 1 ක්"</item>
- <item quantity="other" msgid="1040784359794890744">"මෑත යෙදුම් %d ක්"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"දැනුම්දීම් නැත"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"දැනට පවතින"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"දැනුම්දීම්"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"අරෝපකයට සම්බන්ධ කරන්න"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"බැටරිය අඩු වෙමින් පවතී."</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> ක් ඉතිරියි"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"USB ආරෝපණය සහය නොදක්වයි.\nසපයන ලද ආරෝපකය පමණක් භාවිතා කරන්න."</string>
- <string name="battery_low_why" msgid="7279169609518386372">"බැටරි භාවිතය"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"සැකසීම්"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"අහස්යානා ආකාරය"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"ස්වයංක්‍රීයව-භ්‍රමණය වන තිරය"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"නිශ්ශබ්ද කරන්න"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"ස්වයංක්‍රීය"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"දැනුම්දීම්"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"බ්ලූටූත් ටෙදර් කරා"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"ආදාන ක්‍රම සකසන්න"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"භෞතික යතුරු පුවරුව"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"USB උපාංගය ප්‍රවේශ කිරීමට <xliff:g id="APPLICATION">%1$s</xliff:g> යෙදුමට අවසර දෙනවාද?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"USB මෙවලම ප්‍රවේශ කිරීමට <xliff:g id="APPLICATION">%1$s</xliff:g> යෙදුමට අවසර දෙනවාද?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"මෙම USB උපාංගය සම්බන්ධ විට <xliff:g id="ACTIVITY">%1$s</xliff:g> විවෘත කරන්නද?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"මෙම USB මෙවලමට සම්බන්ධ වී ඇති විට <xliff:g id="ACTIVITY">%1$s</xliff:g> විවෘත කරන්නද?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"මෙම USB මෙවලම සමග ක්‍රියා කරන ස්ථාපිත යෙදුම් නොමැත. <xliff:g id="URL">%1$s</xliff:g> වලින් මෙම මෙවලම ගැන තව දැනගන්න"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"USB මෙවලම"</string>
- <string name="label_view" msgid="6304565553218192990">"පෙනුම"</string>
- <string name="always_use_device" msgid="1450287437017315906">"මෙම USB උපාංගය සඳහා සුපුරුද්දෙන් භාවිතා කරන්න"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"මේ USB මෙවලම සඳහා සුපුරුද්දෙන් භාවිතා කරන්න."</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"USB නිදොස්කරණයට අවසර දෙනවද?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"මෙම පරිගණකයේ RSA යතුරු ඇඟිලි සටහන වන්නේ:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"සැම විටම මෙම පරිගණකයෙන් ඉඩ ලබා දෙන්න"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"තිරය පිරවීමට විශාලනය කරන්න"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"තිරය පිරවීමට අදින්න"</string>
- <string name="compat_mode_help_header" msgid="7969493989397529910">"ගැළපෙන විශාලනය"</string>
- <string name="compat_mode_help_body" msgid="4946726776359270040">"කුඩා තිරයක් සඳහා යෙදුමක් නිර්මාණය කළ විට, විශාලනය පාලකය ඔරලෝසුව ළඟින් පෙන්වයි."</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"තිර රුව සුරකිමින්…"</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"තිර රුව සුරැකෙමින් පවතී…"</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"තිර රුව සුරැකෙමින් පවතී."</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"තිර රුව ග්‍රහණය කරන ලදි."</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"ඔබගේ තිර රුව බැලීමට ස්පර්ශ කරන්න."</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"තිර රුව ග්‍රහණය කිරීමට නොහැකි විය."</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"තිර රුව සුරැකීමට නොහැකි විය. ආචයනය භාවිතාවේ තිබෙනවා විය හැක."</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB ගොනු හුවමාරු විකල්ප"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"මධ්‍ය ධාවකයක් (MTP) ලෙස සවි කරන්න"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"කැමරාවක් (PTP) ලෙස සවි කරන්න"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"Mac සඳහා Android ගොනු හුවමාරු යෙදුම ස්ථාපනය කරන්න"</string>
- <string name="accessibility_back" msgid="567011538994429120">"ආපසු"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"මුල් පිටුව"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"මෙනුව"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"මෑත යෙදුම්"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"ආදාන ක්‍රමය මාරු කිරීමේ බොත්තම."</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"ගැළපෙන විශාලන බොත්තම."</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"විශාල තිරය වෙත කුඩාව විශාලනය කරන්න."</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"බ්ලූටූත් සම්බන්ධිතයි."</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"බ්ලූටූත් විසන්ධි කර ඇත."</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"බැටරිය නැත."</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"බැටරිය තීරු එකයි."</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"බැටරිය තීරු දෙකයි."</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"බැටරිය තීරු තුනයි."</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"බැටරිය පිරී ඇත."</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"දුරකථනයක් නැත."</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"දුරකථනය තීරු එකයි."</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"දුරකථනය තීරු දෙකයි."</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"දුරකථනය තීරු තුනයි."</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"දුරකථනයේ සංඥාව පිරී ඇත."</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"දත්ත නැත."</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"දත්ත තීරු එකයි."</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"දත්ත තීරු 2."</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"දත්ත තීරු 3."</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"දත්ත සංඥාව පිරී ඇත."</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"Wifi අක්‍රියයි."</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"Wifi සම්බන්ධ කර නොමැත."</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"Wifi තීරු එකයි."</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"Wifi තීරු දෙකයි."</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"WiFi තීරු තුනයි."</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"Wifi සංඥාව පිරී ඇත."</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX නැත."</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX තීරු එකයි."</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX තීරු දෙකයි."</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX තීරු තුනයි."</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX සංඥාව පිරී ඇත."</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"සංඥා නැත."</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"සම්බන්ධ වී නැත."</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"තීරු ශුන්‍යයි."</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"තීරු එක."</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"තීරු දෙකයි."</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"තීරු තුනයි."</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"සංඥාව පිරී ඇත."</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"සක්‍රීයයි."</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"අක්‍රිය කරන්න."</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"සම්බන්ධිතයි."</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"රෝමිං"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM නැත."</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"බ්ලූටූත් ටෙදරින්."</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"අහස්යානා ආකාරය."</string>
- <string name="accessibility_battery_level" msgid="7451474187113371965">"බැටරි ප්‍රතිශතය <xliff:g id="NUMBER">%d</xliff:g>"</string>
- <string name="accessibility_settings_button" msgid="799583911231893380">"පද්ධති සැකසීම්."</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"දැනුම්දීම්."</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"දැනුම්දීම හිස් කරන්න."</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS සබල කර ඇත."</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"GPS ලබා ගනිමින්."</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"TeleTypewriter ක්‍රියාත්මකයි."</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"හඬ නඟනය කම්පනය වේ."</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"හඬ නඟනය නිශ්ශබ්දයි."</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g> අස් කර ඇත."</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"දැනුම්දීම නිෂ්ප්‍රභා කරඇත."</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"දැනුම්දීම් ආවරණය."</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"ක්ෂණික සැකසීම්."</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"මෑත කාලීන යෙදුම්."</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"පරිශීලකයා <xliff:g id="USER">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"ජංගම <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"බැටරිය <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"අහස්යානා ආකාරය <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"බ්ලූටූත් <xliff:g id="STATE">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"<xliff:g id="TIME">%s</xliff:g> සඳහා සීනුව සකස් කර ඇත."</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G දත්ත අබල කර ඇත"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G දත්ත අබල කරන ලදි"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"ජංගම දත්ත අබල කර ඇත"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"දත්ත අබල කර ඇත"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"ඔබ නියමිත දත්ත භාවිත සීමාවට ළඟා වී ඇත.\n\nඔබ දත්ත නැවත සබල කළහොත් වාහකයා ඔබගෙන් ඇතැම් විට අය කරගත හැක."</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"නැවත දත්ත සබල කරන්න"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"අන්තර්ජාල සම්බන්ධතාවයක් නැත"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi සම්බන්ධිතයි"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS සඳහා සොයමින්"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"GPS මඟින් ස්ථානය සකසා ඇත"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"පිහිටීම් ඉල්ලීම් සක්‍රියයි"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"සියලු දැනුම්දීම් හිස් කරන්න."</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"යෙදුම් තොරතුරු"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"තිරය ස්වයංක්‍රීයව කරකැවේ."</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"තිරය තිරස් දිශානතියෙහි අගුළු දමා ඇත."</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"තිරය සිරස් දිශානතිය තුළ අගුළු වැටී ඇත."</string>
- <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
- <string name="start_dreams" msgid="7219575858348719790">"දවල් හීනය"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"ඊතර නෙට්"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"අහස්යානා ආකාරය"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"ආරෝපණය වෙමින්, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"අරෝපිතයි"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"බ්ලූටූත්"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"බ්ලූටූත් (උපාංග <xliff:g id="NUMBER">%d</xliff:g>)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"බ්ලූටූත් අක්‍රියයි"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"දීප්තිය"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"ස්වයංක්‍රීය කරකැවීම"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"භ්‍රමණය අගුළු දමා ඇත"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"ආදාන ක්‍රමය"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"ස්ථානය"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"ස්ථානය අක්‍රියයි"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"මාධ්‍ය උපාංගය"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"හදිසි ඇමතුම් පමණි"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"සැකසීම්"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"වේලාව"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"මම"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"සම්බන්ධ වී නොමැත"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"ජාලයක් නැත"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi අක්‍රියයි"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi සංදර්ශකය"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"නොරැහැන් සංදර්ශකය"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"දීප්තිමත් බව"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"ස්වයංක්‍රීය"</string>
- <string name="status_bar_help_title" msgid="1199237744086469217">"දැනුම්දීම් මෙතන පෙන්නුම් කරයි"</string>
- <string name="status_bar_help_text" msgid="7874607155052076323">"පහලට සර්පණය කිරීමෙන් ඕනෑම වෙලාවක ඒවා වෙත පිවිසෙන්න.\nපද්ධති පාලක සඳහා නැවත පහළට සර්පණය කරන්න."</string>
-</resources>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 4fdb80789398..c54540c5319b 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Vždy povoliť z tohto počítača"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Priblížiť na celú obrazovku"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Na celú obrazovku"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Úprava veľkosti z dôvodu kompatibility"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Ak je aplikácia navrhnutá pre menšiu obrazovku, zobrazí sa vedľa hodín ovládací prvok priblíženia."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Prebieha ukladanie snímky obrazovky..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Prebieha ukladanie snímky obrazovky..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Snímka obrazovky sa ukladá."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Plocha"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menu"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Nové aplikácie"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Hľadať"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Fotoaparát"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Tlačidlo prepnutia metódy vstupu."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Tlačidlo úpravy veľkosti z dôvodu kompatibility."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zväčšiť menší obrázok na väčšiu obrazovku."</string>
@@ -166,13 +166,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi: pripojené"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Vyhľadávanie satelitov GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Poloha nastavená pomocou GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Žiadosti o polohu sú aktívne"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Vymazať všetky upozornenia."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informácie o aplikácii"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Obrazovka sa automaticky otočí."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Obrazovka je uzamknutá v orientácii na šírku."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Obrazovka je uzamknutá v orientácii na výšku."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Pult s dezertami"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Šetrič obrazovky"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Režim V lietadle"</string>
@@ -201,5 +200,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Bezdrôtový displej"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Jas"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTOMATICKY"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Sieť môže byť\nmonitorovaná"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Tu sa zobrazujú upozornenia"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Môžete ich kedykoľvek zobraziť tak, že posuniete prstom nadol.\nAk posuniete prstom nadol ešte raz, zobrazia sa ovládacie prvky systému."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Panel zobrazíte posunutím cez okraj obrazovky"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Systémový panel zobrazíte posunutím cez okraj obrazovky"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 27369eaa1cd4..3fc4882ecf64 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Vedno dovoli iz tega računalnika"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Povečava čez cel zaslon"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Raztegnitev čez zaslon"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Razširitev združljivosti"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Če je program izdelan za manjše zaslone, se ob uri pokaže kontrolnik za povečavo."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Shranjev. posnetka zaslona ..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Shranjevanje posnetka zaslona ..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Shranjevanje posnetka zaslona."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Začetni zaslon"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Meni"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Nedavni programi"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Iskanje"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Fotoaparat"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Gumb za preklop načina vnosa."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Gumb povečave za združljivost."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Povečava manjšega na večji zaslon."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi povezan"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Iskanje GPS-a"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Lokacija nastavljena z GPS-om"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Aktivne zahteve za lokacijo"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Izbriši vsa obvestila."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Podatki o aplikaciji"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Zaslon se bo samodejno zasukal."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Zaslon je zaklenjen v ležeči usmerjenosti."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Zaslon je zaklenjen v pokončni usmerjenosti."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Vitrina za sladice"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Sanjarjenje"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Način za letalo"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Prikaz brezžičnih naprav"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Svetlost"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"SAMODEJNO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Omrežje je\nlahko spremljano"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Obvestila so prikazana tukaj"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Do njih lahko kadar koli dostopate tako, da povlečete navzdol.\nZa prikaz sistemskih kontrolnikov znova povlecite navzdol."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Vrstico prikažete tako, da povlečete z roba zaslona"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Sistemsko vrstico prikažete tako, da povlečete z roba zaslona"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 7c182a200532..7ba2da5d9de8 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Увек дозволи са овог рачунара"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Зумирај на целом екрану"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Развуци на цео екран"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Компатибилно зумирање"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Када је апликација намењена мањем екрану, контрола зумирања приказује се поред сата."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Чување снимка екрана..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Чување снимка екрана..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Снимак екрана се чува."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Почетна"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Мени"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Недавне апликације"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Претражите"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Камера"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Дугме Промени метод уноса."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Дугме Зум компатибилности."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Зумирање са мањег на већи екран."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi је повезан"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Тражи се GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Локацију је подесио GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Има активних захтева за локацију"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Обриши сва обавештења."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Информације о апликацији"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Екран ће се аутоматски ротирати."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Екран је закључан у хоризонталном положају."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Екран је закључан у вертикалном положају."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Витрина са посластицама"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Сањарење"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Етернет"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Режим рада у авиону"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Бежични екран"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Осветљеност"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"АУТОМАТСКА"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Мрежа се можда\nнадгледа"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Обавештења се појављују овде"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Приступите им у било ком тренутку листањем надоле.\nПоново листајте надоле да би се приказале системске контроле."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Превуците по ивици екрана да би се приказала трака"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Превуците од ивице екрана да би се приказала системска трака"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 99d19f021570..022e2f2ec695 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Tillåt alltid på den här datorn"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zooma för att fylla skärm"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Dra för att fylla skärmen"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom i kompatibilitetsläge"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"När en app är anpassad för en mindre skärm visas ett zoomreglage vid klockan."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Skärmdumpen sparas ..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Skärmdumpen sparas ..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Skärmdumpen sparas."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Startsida"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Meny"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Senaste apparna"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Sök"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Kamera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Knapp för byte av inmatningsmetod."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Knapp för kompatibilitetszoom."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zooma mindre skärm till större."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi-ansluten"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Sökning efter GPS pågår"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Platsen har identifierats av GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Det finns aktiva platsbegäranden"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ta bort alla meddelanden."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Info om appen"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skärmen roteras automatiskt."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Bildskärmens riktning är nu låst i liggande format."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Bildskärmens riktning är nu låst i stående format."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Dessertdisken"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Dagdröm"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Flygplansläge"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Trådlös skärm"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Ljusstyrka"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Nätverket kan\nvara övervakat"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Meddelanden visas här"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Du kommer åt dem när som helst genom att dra nedåt.\nDra nedåt igen om du vill visa systemkontroller."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Dra från kanten av skärmen om du vill visa fältet"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Dra från kanten av skärmen om du vill visa systemfältet"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 7c7f6619d129..27f556c618b9 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -59,6 +59,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Ruhusu kutoka kwenye kompyuta hii kila wakati"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Kuza ili kujaza skrini"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Tanua ili kujaza skrini"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Kukuza kwa Utangamanifu"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Wakati programu ilibuniwa kwa skrini ndogo, kidhibiti cha kukuza kitaonekana kwa saa."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Inahifadhi picha ya skrini..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Inahifadhi picha ya skrini..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Picha ya skrini inahifadhiwa"</string>
@@ -74,8 +76,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Nyumbani"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menyu"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Programu za hivi karibuni"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Tafuta"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Kamera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Swichi kitufe cha mbinu ingizi."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Kichupo cha kukuza kwa utangamanifu"</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Kuza kidogo kwa skrini kubwa."</string>
@@ -130,7 +130,7 @@
<string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
<string name="accessibility_no_sim" msgid="8274017118472455155">"Hakuna SIM."</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Shiriki intaneti kwa Bluetooth."</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"Hali ya ndege."</string>
+ <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modi ya ndege."</string>
<string name="accessibility_battery_level" msgid="7451474187113371965">"Asilimia <xliff:g id="NUMBER">%d</xliff:g> ya betri"</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Mipangilio ya mfumo."</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Arifa."</string>
@@ -162,16 +162,15 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Mtandao-hewa umeunganishwa"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Inatafuta GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Mahali pamewekwa na GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Maombi ya eneo yanatumika"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Futa arifa zote."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Taarifa ya programu"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skrini itazunguka kiotomatiki."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Skrini imefungwa sasa katika uelekezo wa mandhari."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Skrini imefungwa katika uelekeo wa picha."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Sanduku la Vitindamlo"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Hali Tulivu"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Hali ya ndege"</string>
+ <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Modi ya ndege"</string>
<string name="quick_settings_battery_charging_label" msgid="490074774465309209">"Inachaji, <xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Imechajiwa"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
@@ -181,8 +180,10 @@
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Zungusha Otomatiki"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Mzunguko Umefungwa"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"Mbinu ya uingizaji"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Kutambua Eneo"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Kitambua eneo kimezimwa"</string>
+ <!-- no translation found for quick_settings_location_label (5011327048748762257) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_off_label (7464544086507331459) -->
+ <skip />
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Kifaa cha midia"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Simu za Dharura Pekee"</string>
@@ -197,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Uonyeshaji Pasiwaya"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Ung\'avu"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"KIOTOMATIKI"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Huenda mtandao\nunafuatiliwa"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Arifa zitaonekana hapa"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Zifikie wakati wowote kwa kutelezesha chini.\nTelezesha chini tena kupata vidhibiti vya mfumo."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Papasa kwa kasi kutoka ukingo wa skrini ili kuonyesha upau"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Papasa kwa kasi kutoka ukingo wa skrini ili kuonyesha upau wa mfumo"</string>
</resources>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 07bca1a207f4..dc643c400f6a 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"อนุญาตจากคอมพิวเตอร์เครื่องนี้เสมอ"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"ขยายจนเต็มหน้าจอ"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"ยืดจนเต็มหน้าจอ"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"ความเข้ากันได้ของการย่อ/ขยาย"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"สำหรับแอปพลิเคชันที่ออกแบบมาสำหรับหน้าจอขนาดเล็ก ตัวควบคุมการย่อ/ขยายจะปรากฏขึ้นข้างนาฬิกา"</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"กำลังบันทึกภาพหน้าจอ..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"กำลังบันทึกภาพหน้าจอ..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"กำลังบันทึกภาพหน้าจอ"</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"หน้าแรก"</string>
<string name="accessibility_menu" msgid="316839303324695949">"เมนู"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"แอปพลิเคชันล่าสุด"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"ค้นหา"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"กล้องถ่ายรูป"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"ปุ่มสลับวิธีการป้อนข้อมูล"</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"ปุ่มซูมที่ใช้งานร่วมกันได้"</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"ซูมหน้าจอให้มีขนาดใหญ่ขึ้น"</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"เชื่อมต่อ WiFi แล้ว"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"กำลังค้นหา GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"ตำแหน่งที่กำหนดโดย GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"คำขอตำแหน่งที่มีการใช้งาน"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"ล้างการแจ้งเตือนทั้งหมด"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"ข้อมูลแอป"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"หน้าจอจะหมุนโดยอัตโนมัติ"</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"ขณะนี้หน้าจอถูกล็อกให้วางในแนวนอน"</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"ขณะนี้หน้าจอถูกล็อกให้วางในแนวตั้ง"</string>
- <string name="dessert_case" msgid="1295161776223959221">"ชั้นแสดงของหวาน"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
<string name="ethernet_label" msgid="7967563676324087464">"อีเทอร์เน็ต"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"โหมดใช้งานบนเครื่องบิน"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"จอแสดงผลไร้สาย"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"ความสว่าง"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"อัตโนมัติ"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"เครือข่ายอาจ\nถูกตรวจสอบ"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"การแจ้งเตือนจะแสดงขึ้นที่นี่"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"เข้าถึงได้ทุกเมื่อด้วยการกวาดนิ้วลง\nกวาดนิ้วลงอีกครั้งสำหรับการควบคุมระบบ"</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"กวาดขอบของหน้าจอเพื่อแสดงแถบ"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"กวาดจากขอบของหน้าจอเพื่อแสดงแถบระบบ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index e16333396468..0053be4884df 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Palaging payagan mula sa computer na ito"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"I-zoom upang punan screen"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"I-stretch upang mapuno screen"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom sa pagiging Tugma"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Kapag nakadisenyo ang isang app para sa mas maliit na screen, isang kontrol ng zoom ang lalabas sa may orasan."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Sine-save ang screenshot…"</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Sine-save ang screenshot…"</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Sine-save ang screenshot."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Home"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menu"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Kamakailang apps"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Hanapin"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Camera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Ilipat ang button na pamamaraan ng pag-input."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Button ng zoom ng pagiging tugma."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Mag-zoom nang mas maliit sa mas malaking screen."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"nakakonekta ang Wi-Fi"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Naghahanap ng GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Lokasyong itinatakda ng GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Aktibo ang mga kahilingan ng lokasyon"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"I-clear ang lahat ng notification."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Impormasyon ng app"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Awtomatikong iikot ang screen."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Naka-lock ang screen sa pahigang oryentasyon."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Naka-lock ang screen sa patayong oryentasyon."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Dessert Case"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Airplane mode"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Wireless Display"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Brightness"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Maaaring\nsinusubaybayan ang network"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Dito lumalabas ang mga notification"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"I-access ang mga ito anumang oras sa pamamagitan ng pag-swipe pababa.\nMuling mag-swipe pababa para sa mga kontrol ng system."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Mag-swipe sa gilid ng screen upang ipakita ang bar"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Mag-swipe mula sa gilid ng screen upang ipakita ang system bar"</string>
</resources>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 6fcde0cc33e0..f39f8bccdeac 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Bu bilgisayardan her zaman izin ver"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Yakınlaştır (ekranı kaplasın)"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Genişlet (ekran kapansın)"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Uyumluluk yakınlaştırması"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Uygulama küçük bir ekran için tasarlanmışsa saatin yanında bir yakınlaştırma denetimi görünür."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Ekran görüntüsü kaydediliyor..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Ekran görüntüsü kaydediliyor..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Ekran görüntüsü kaydediliyor."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Ana sayfa"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Menü"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Son uygulamalar"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Ara"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Kamera"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Giriş yöntemini değiştirme düğmesi."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Uyumluluk zum düğmesi."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Daha büyük ekrana daha küçük yakınlaştır."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Kablosuz bağlandı"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS aranıyor"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Konum GPS ile belirlendi"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Konum bilgisi istekleri etkin"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Tüm bildirimleri temizle"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Uygulama bilgileri"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran otomatik olarak dönecektir."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Ekran yatay yönde kilitlendi."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ekran dikey yönde kilitlendi."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Tatlı Kutusu"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Hafif uyku"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Uçak modu"</string>
@@ -183,8 +182,10 @@
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Otomatik Döndür"</string>
<string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Dönme Kilitlendi"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"Giriş Yöntemi"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"Konum"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Konum Bilgisi Kapalı"</string>
+ <!-- no translation found for quick_settings_location_label (5011327048748762257) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_off_label (7464544086507331459) -->
+ <skip />
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"Medya cihazı"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Yalnızca Acil Çağrılar İçin"</string>
@@ -199,5 +200,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Kablosuz Ekran"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Parlaklık"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"OTOMATİK"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Ağ izleniyor\nolabilir"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Bildirimler burada görünür"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Aşağıya hızlıca kaydırarak bunlara istediğiniz zaman erişebilirsiniz.\nSistem denetimleri için tekrar hızlıca aşağı kaydırın."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Çubuğu görüntülemek için ekranın kenarından hızlıca kaydırın"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Sistem çubuğunu görüntülemek için ekranın kenarından hızlıca kaydırın"</string>
</resources>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 9567c03d001c..18f67a218e9f 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Завжди дозволяти з цього комп’ютера"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Масштабув. на весь екран"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Розтягнути на весь екран"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Масштабування для сумісності"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Якщо програму призначено для менших екранів, елемент керування масштабом буде відображатися біля годинника."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Збереження знімка екрана..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Збереження знімка екрана..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Зберігається знімок екрана."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Головна"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Меню"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Останні програми"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Пошук"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Камера"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Кнопка перемикання методу введення."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Кнопка масштабування сумісності."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Збільшення екрана."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi під’єднано"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Виконується пошук GPS-сигналу"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Місцезнаходження встановлено за допомогою GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Запити про місцезнаходження активні"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Очистити всі сповіщення."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Інформація про програму"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Екран обертатиметься автоматично."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Екран заблоковано в альбомній орієнтації."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Екран заблоковано в книжковій орієнтації."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Вітрина десертів"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Заставка"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Режим польоту"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Бездротове відображення"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Яскравість"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"АВТО"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Мережа може\nвідстежуватися"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Сповіщення з’являються тут"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Отримуйте до них доступ будь-коли, провівши пальцем униз.\nЗнову проведіть униз, щоб відкрити елементи керування системи."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Гортайте від краю екрана, щоб з’явилась панель"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Проведіть пальцем від краю екрана, щоб з’явилась навігаційна панель"</string>
</resources>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 6e68c6317e28..acc7e0e517a2 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Luôn cho phép từ máy tính này"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"T.phóng để lấp đầy m.hình"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Giãn ra để lấp đầy m.hình"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Thu phóng tương thích"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Khi ứng dụng được thiết kế cho một màn hình nhỏ hơn, điều khiển thu phóng sẽ xuất hiện bên cạnh đồng hồ."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Đang lưu ảnh chụp màn hình..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Đang lưu ảnh chụp màn hình..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Ảnh chụp màn hình đang được lưu."</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"Trang chủ"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Trình đơn"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Ứng dụng gần đây"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Tìm kiếm"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Máy ảnh"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Nút chuyển phương thức nhập."</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Nút thu phóng khả năng tương thích."</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Thu phóng màn hình lớn hơn hoặc nhỏ hơn."</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Đã kết nối Wi-Fi"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Đang tìm kiếm GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Vị trí đặt bởi GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Yêu cầu về thông tin vị trí đang hoạt động"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Xóa tất cả thông báo."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Thông tin về ứng dụng"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Màn hình sẽ xoay tự động."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Màn hình hiện bị khóa theo hướng ngang."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Màn hình hiện bị khóa theo hướng dọc."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Tủ trưng bày bánh ngọt"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Chế độ ngủ"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Chế độ trên máy bay"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Hiển thị không dây"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Độ sáng"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"TỰ ĐỘNG"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Mạng có thể\nđược giám sát"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Thông báo xuất hiện tại đây"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Truy cập vào chúng bất kỳ lúc nào bằng cách vuốt xuống.\nVuốt lại xuống để hiển thị các điều khiển hệ thống."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Vuốt cạnh màn hình để hiển thị thanh"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Vuốt từ cạnh màn hình để hiển thị thanh hệ thống"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 39d73c37375e..0a62ee3024e1 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"一律允许使用这台计算机进行调试"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"缩放以填满屏幕"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"拉伸以填满屏幕"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"兼容性缩放"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"如果应用是针对较小屏幕设计的,则时钟旁会显示缩放控件。"</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"正在保存屏幕截图..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"正在保存屏幕截图..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"正在保存屏幕截图。"</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"主屏幕"</string>
<string name="accessibility_menu" msgid="316839303324695949">"菜单"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"最近运行的应用"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"搜索"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"相机"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"输入法切换按钮。"</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"兼容性缩放按钮。"</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"将小屏幕的图片放大在较大屏幕上显示。"</string>
@@ -147,7 +147,7 @@
<string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"已删除<xliff:g id="APP">%s</xliff:g>"</string>
<string name="accessibility_notification_dismissed" msgid="854211387186306927">"已关闭通知。"</string>
<string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"通知栏。"</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"快捷设置。"</string>
+ <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"快速设置。"</string>
<string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"最近使用的应用。"</string>
<string name="accessibility_quick_settings_user" msgid="1104846699869476855">"用户:<xliff:g id="USER">%s</xliff:g>。"</string>
<string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>,<xliff:g id="NETWORK">%2$s</xliff:g>"</string>
@@ -158,21 +158,20 @@
<string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"闹钟已设置为:<xliff:g id="TIME">%s</xliff:g>。"</string>
<string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"2G-3G 数据网络已停用"</string>
<string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G 数据网络已停用"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"移动数据网络已停用"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"数据网络已停用"</string>
+ <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"移动数据已停用"</string>
+ <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"数据已停用"</string>
<string name="data_usage_disabled_dialog" msgid="3853117269051806280">"您已达到指定的数据流量上限。\n\n如果您重新启用数据,运营商可能会收取相应的费用。"</string>
<string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"重新启用数据连接"</string>
<string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"未连接互联网"</string>
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"WLAN 已连接"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"正在搜索 GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"已通过 GPS 确定位置"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"应用发出了有效位置信息请求"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"清除所有通知。"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"应用信息"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"屏幕会自动旋转。"</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"屏幕锁定为横向模式。"</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"屏幕锁定为纵向模式。"</string>
- <string name="dessert_case" msgid="1295161776223959221">"甜品盒"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"果冻豆大乱舞"</string>
<string name="start_dreams" msgid="7219575858348719790">"互动屏保"</string>
<string name="ethernet_label" msgid="7967563676324087464">"以太网"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"飞行模式"</string>
@@ -180,13 +179,15 @@
<string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"充电完成"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"蓝牙"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"蓝牙(<xliff:g id="NUMBER">%d</xliff:g> 台设备)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"蓝牙:关闭"</string>
+ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"蓝牙已关闭"</string>
<string name="quick_settings_brightness_label" msgid="6968372297018755815">"亮度"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"自动旋转"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"屏幕方向:锁定"</string>
+ <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"屏幕方向已锁定"</string>
<string name="quick_settings_ime_label" msgid="7073463064369468429">"输入法"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"位置信息"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"位置信息服务已关闭"</string>
+ <!-- no translation found for quick_settings_location_label (5011327048748762257) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_off_label (7464544086507331459) -->
+ <skip />
<string name="quick_settings_media_device_label" msgid="1302906836372603762">"媒体设备"</string>
<string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
<string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"只能拨打紧急呼救电话"</string>
@@ -201,5 +202,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"无线显示"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"亮度"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"自动"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"网络可能会\n受到监控"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"通知会显示在这里"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"向下滑动可随时查看通知。\n再次向下滑动可使用系统控制功能。"</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"从边缘向里滑可显示系统栏"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"从屏幕边缘向里滑动即可显示系统栏"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rHK-land/strings.xml b/packages/SystemUI/res/values-zh-rHK-land/strings.xml
deleted file mode 100644
index 8d55df44d402..000000000000
--- a/packages/SystemUI/res/values-zh-rHK-land/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
deleted file mode 100644
index d83455c4e505..000000000000
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Copyright (c) 2009, 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="7164937344850004466">"系統用戶介面"</string>
- <string name="status_bar_clear_all_button" msgid="7774721344716731603">"清除"</string>
- <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"從清單中移除"</string>
- <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"應用程式資訊"</string>
- <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"沒有最近的應用程式"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"關閉最近使用的應用程式"</string>
- <plurals name="status_bar_accessibility_recent_apps">
- <item quantity="one" msgid="5854176083865845541">"1 個最近使用的應用程式"</item>
- <item quantity="other" msgid="1040784359794890744">"%d 個最近使用的應用程式"</item>
- </plurals>
- <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"無通知"</string>
- <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"持續進行"</string>
- <string name="status_bar_latest_events_title" msgid="6594767438577593172">"通知"</string>
- <string name="battery_low_title" msgid="2783104807551211639">"連接充電器"</string>
- <string name="battery_low_subtitle" msgid="1752040062087829196">"電池即將用盡。"</string>
- <string name="battery_low_percent_format" msgid="1077244949318261761">"剩餘 <xliff:g id="NUMBER">%d%%</xliff:g>"</string>
- <string name="invalid_charger" msgid="4549105996740522523">"不支援 USB 充電。\n僅能使用隨附的充電器。"</string>
- <string name="battery_low_why" msgid="7279169609518386372">"電池使用情況"</string>
- <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"設定"</string>
- <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
- <string name="status_bar_settings_airplane" msgid="4879879698500955300">"飛行模式"</string>
- <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"自動旋轉螢幕"</string>
- <string name="status_bar_settings_mute_label" msgid="554682549917429396">"關閉"</string>
- <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"自動"</string>
- <string name="status_bar_settings_notifications" msgid="397146176280905137">"通知"</string>
- <string name="bluetooth_tethered" msgid="7094101612161133267">"已經由藍牙進行網絡共享"</string>
- <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"設定輸入方式"</string>
- <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"實體鍵盤"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"允許「<xliff:g id="APPLICATION">%1$s</xliff:g>」應用程式存取 USB 裝置嗎?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"允許「<xliff:g id="APPLICATION">%1$s</xliff:g>」應用程式存取 USB 配件嗎?"</string>
- <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"連接這個 USB 裝置時啟用 <xliff:g id="ACTIVITY">%1$s</xliff:g> 嗎?"</string>
- <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"連接這個 USB 配件時啟用 <xliff:g id="ACTIVITY">%1$s</xliff:g> 嗎?"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"已安裝的應用程式均無法存取這個 USB 配件,如要進一步瞭解這個配件,請瀏覽 <xliff:g id="URL">%1$s</xliff:g>"</string>
- <string name="title_usb_accessory" msgid="4966265263465181372">"USB 配件"</string>
- <string name="label_view" msgid="6304565553218192990">"觀看"</string>
- <string name="always_use_device" msgid="1450287437017315906">"預設用於這個 USB 裝置"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"預設用於這個 USB 配件"</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"允許 USB 除錯嗎?"</string>
- <string name="usb_debugging_message" msgid="2220143855912376496">"這部電腦的 RSA 密鑰指紋如下:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
- <string name="usb_debugging_always" msgid="303335496705863070">"一律允許透過這部電腦進行"</string>
- <string name="compat_mode_on" msgid="6623839244840638213">"放大為全螢幕"</string>
- <string name="compat_mode_off" msgid="4434467572461327898">"放大為全螢幕"</string>
- <string name="screenshot_saving_ticker" msgid="7403652894056693515">"正在儲存屏幕擷取畫面..."</string>
- <string name="screenshot_saving_title" msgid="8242282144535555697">"正在儲存屏幕擷取畫面..."</string>
- <string name="screenshot_saving_text" msgid="2419718443411738818">"正在儲存屏幕擷取畫面。"</string>
- <string name="screenshot_saved_title" msgid="6461865960961414961">"已擷取屏幕畫面。"</string>
- <string name="screenshot_saved_text" msgid="1152839647677558815">"輕觸即可查看屏幕擷取畫面。"</string>
- <string name="screenshot_failed_title" msgid="705781116746922771">"無法擷取屏幕畫面。"</string>
- <string name="screenshot_failed_text" msgid="8134011269572415402">"無法儲存屏幕擷取畫面,儲存裝置可能正在使用。"</string>
- <string name="usb_preference_title" msgid="6551050377388882787">"USB 檔案傳輸選項"</string>
- <string name="use_mtp_button_title" msgid="4333504413563023626">"掛接為媒體播放器 (MTP)"</string>
- <string name="use_ptp_button_title" msgid="7517127540301625751">"掛接為相機 (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"安裝 Mac 專用的「Android 檔案傳輸」應用程式"</string>
- <string name="accessibility_back" msgid="567011538994429120">"返回"</string>
- <string name="accessibility_home" msgid="8217216074895377641">"首頁"</string>
- <string name="accessibility_menu" msgid="316839303324695949">"選單"</string>
- <string name="accessibility_recent" msgid="8571350598987952883">"最近使用的應用程式"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"搜尋"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"相機"</string>
- <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"切換輸入法按鈕。"</string>
- <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"相容性縮放按鈕。"</string>
- <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"將較小螢幕的畫面放大在較大螢幕上顯示。"</string>
- <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"藍牙連線已建立。"</string>
- <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"藍牙連線已中斷。"</string>
- <string name="accessibility_no_battery" msgid="358343022352820946">"未安裝電池。"</string>
- <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"電池電量為一格。"</string>
- <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"電池電量為兩格。"</string>
- <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"電池電量為三格。"</string>
- <string name="accessibility_battery_full" msgid="8909122401720158582">"電池已滿。"</string>
- <string name="accessibility_no_phone" msgid="4894708937052611281">"沒有電話訊號。"</string>
- <string name="accessibility_phone_one_bar" msgid="687699278132664115">"電話訊號強度為一格。"</string>
- <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"電話訊號強度為兩格。"</string>
- <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"電話訊號強度為三格。"</string>
- <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"電話訊號滿格。"</string>
- <string name="accessibility_no_data" msgid="4791966295096867555">"沒有數據網絡。"</string>
- <string name="accessibility_data_one_bar" msgid="1415625833238273628">"數據網絡訊號強度為一格。"</string>
- <string name="accessibility_data_two_bars" msgid="6166018492360432091">"數據網絡訊號強度為兩格。"</string>
- <string name="accessibility_data_three_bars" msgid="9167670452395038520">"數據網絡訊號強度為三格。"</string>
- <string name="accessibility_data_signal_full" msgid="2708384608124519369">"數據網絡訊號滿格。"</string>
- <string name="accessibility_wifi_off" msgid="3177380296697933627">"WiFi 已關閉。"</string>
- <string name="accessibility_no_wifi" msgid="1425476551827924474">"WiFi 連線已中斷。"</string>
- <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"WiFi 訊號強度為一格。"</string>
- <string name="accessibility_wifi_two_bars" msgid="4994274250497262434">"WiFi 訊號強度為兩格。"</string>
- <string name="accessibility_wifi_three_bars" msgid="3495755044276588384">"WiFi 訊號強度為三格。"</string>
- <string name="accessibility_wifi_signal_full" msgid="6853561303586480376">"WiFi 訊號已滿。"</string>
- <string name="accessibility_no_wimax" msgid="4329180129727630368">"沒有 WiMAX 訊號。"</string>
- <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX 訊號強度一格。"</string>
- <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX 訊號強度兩格。"</string>
- <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX 訊號強度三格。"</string>
- <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX 訊號滿格。"</string>
- <string name="accessibility_no_signal" msgid="7064645320782585167">"沒有訊號。"</string>
- <string name="accessibility_not_connected" msgid="6395326276213402883">"未連線。"</string>
- <string name="accessibility_zero_bars" msgid="3806060224467027887">"訊號強度為零格。"</string>
- <string name="accessibility_one_bar" msgid="1685730113192081895">"訊號強度為一格。"</string>
- <string name="accessibility_two_bars" msgid="6437363648385206679">"訊號強度為兩格。"</string>
- <string name="accessibility_three_bars" msgid="2648241415119396648">"訊號強度為三格。"</string>
- <string name="accessibility_signal_full" msgid="9122922886519676839">"訊號已滿。"</string>
- <string name="accessibility_desc_on" msgid="2385254693624345265">"開啟。"</string>
- <string name="accessibility_desc_off" msgid="6475508157786853157">"關閉。"</string>
- <string name="accessibility_desc_connected" msgid="8366256693719499665">"已連線。"</string>
- <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string>
- <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string>
- <string name="accessibility_data_connection_hspa" msgid="2032328855462645198">"HSPA"</string>
- <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string>
- <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string>
- <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
- <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
- <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
- <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"漫遊"</string>
- <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
- <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
- <string name="accessibility_no_sim" msgid="8274017118472455155">"無 SIM 卡。"</string>
- <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"藍牙數據連線。"</string>
- <string name="accessibility_airplane_mode" msgid="834748999790763092">"飛航模式。"</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
- <skip />
- <string name="accessibility_settings_button" msgid="799583911231893380">"系統設定"</string>
- <string name="accessibility_notifications_button" msgid="4498000369779421892">"通知。"</string>
- <string name="accessibility_remove_notification" msgid="3603099514902182350">"清除通知。"</string>
- <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS 已啟用。"</string>
- <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"正在取得 GPS 訊號。"</string>
- <string name="accessibility_tty_enabled" msgid="4613200365379426561">"TeleTypewriter (TTY) 已啟用。"</string>
- <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"鈴聲震動。"</string>
- <string name="accessibility_ringer_silent" msgid="9061243307939135383">"鈴聲靜音。"</string>
- <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"「<xliff:g id="APP">%s</xliff:g>」已關閉。"</string>
- <string name="accessibility_notification_dismissed" msgid="854211387186306927">"通知已關閉。"</string>
- <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"通知欄。"</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"快速設定。"</string>
- <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"最近使用的應用程式"</string>
- <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"用戶:<xliff:g id="USER">%s</xliff:g>。"</string>
- <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>、<xliff:g id="NETWORK">%2$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"流動數據連線:<xliff:g id="SIGNAL">%1$s</xliff:g>、<xliff:g id="TYPE">%2$s</xliff:g>、<xliff:g id="NETWORK">%3$s</xliff:g>。"</string>
- <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"電池電量:<xliff:g id="STATE">%s</xliff:g>。"</string>
- <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"飛航模式:<xliff:g id="STATE">%s</xliff:g>。"</string>
- <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"藍牙:<xliff:g id="STATE">%s</xliff:g>。"</string>
- <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"鬧鐘已設定為:<xliff:g id="TIME">%s</xliff:g>。"</string>
- <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"已停用 2G-3G 數據"</string>
- <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"已停用 4G 數據"</string>
- <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"已停用流動數據"</string>
- <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"數據停用"</string>
- <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"您已到達指定的數據用量上限。\n\n如果您重新啟用數據傳輸,流動網絡供應商可能會向您收費。"</string>
- <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"重新啟用數據"</string>
- <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"沒有互聯網連線"</string>
- <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi 已連線"</string>
- <string name="gps_notification_searching_text" msgid="8574247005642736060">"正在搜尋 GPS"</string>
- <string name="gps_notification_found_text" msgid="4619274244146446464">"GPS 已定位"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"位置要求啟動中"</string>
- <string name="accessibility_clear_all" msgid="5235938559247164925">"清除所有通知。"</string>
- <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"應用程式資訊"</string>
- <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"屏幕會自動旋轉。"</string>
- <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"屏幕已鎖定為橫向模式。"</string>
- <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"屏幕已鎖定為垂直模式。"</string>
- <string name="dessert_case" msgid="1295161776223959221">"Dessert Case"</string>
- <string name="start_dreams" msgid="7219575858348719790">"Daydream"</string>
- <string name="ethernet_label" msgid="7967563676324087464">"以太網"</string>
- <string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"飛行模式"</string>
- <string name="quick_settings_battery_charging_label" msgid="490074774465309209">"充電中 (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
- <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"充電完成"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"藍牙"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"藍牙 (<xliff:g id="NUMBER">%d</xliff:g> 部裝置)"</string>
- <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"藍牙關閉"</string>
- <string name="quick_settings_brightness_label" msgid="6968372297018755815">"亮度"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"自動旋轉"</string>
- <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"已鎖定屏幕旋轉功能"</string>
- <string name="quick_settings_ime_label" msgid="7073463064369468429">"輸入法"</string>
- <string name="quick_settings_location_label" msgid="5011327048748762257">"位置"</string>
- <string name="quick_settings_location_off_label" msgid="7464544086507331459">"位置關閉"</string>
- <string name="quick_settings_media_device_label" msgid="1302906836372603762">"媒體裝置"</string>
- <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string>
- <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"只可撥打緊急電話"</string>
- <string name="quick_settings_settings_label" msgid="5326556592578065401">"設定"</string>
- <string name="quick_settings_time_label" msgid="4635969182239736408">"時間"</string>
- <string name="quick_settings_user_label" msgid="5238995632130897840">"我"</string>
- <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
- <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"未連線"</string>
- <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"沒有網絡"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi 關閉"</string>
- <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi Display"</string>
- <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"無線顯示"</string>
- <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"亮度"</string>
- <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"自動"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"網絡可能會\n受到監控"</string>
-</resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 6085c3404373..2cfdb59c03ac 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"一律允許透過這台電腦進行"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"放大為全螢幕"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"放大為全螢幕"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"相容性縮放"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"執行專為較小螢幕設計的應用程式時,系統會在時鐘旁顯示縮放控制項。"</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"正在儲存螢幕擷取畫面…"</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"正在儲存螢幕擷取畫面…"</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"正在儲存螢幕擷取畫面。"</string>
@@ -76,8 +78,6 @@
<string name="accessibility_home" msgid="8217216074895377641">"主螢幕"</string>
<string name="accessibility_menu" msgid="316839303324695949">"選單"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"最近使用的應用程式"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"搜尋"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"相機"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"切換輸入法按鈕。"</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"相容性縮放按鈕。"</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"將較小螢幕的畫面放大在較大螢幕上顯示。"</string>
@@ -166,13 +166,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi 已連線"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"正在搜尋 GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"GPS 已定位"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"有位置資訊要求"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"清除所有通知。"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"應用程式資訊"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"螢幕會自動旋轉。"</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"螢幕已鎖定為橫向模式。"</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"螢幕已鎖定為垂直模式。"</string>
- <string name="dessert_case" msgid="1295161776223959221">"Dessert Case"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"休眠模式"</string>
<string name="ethernet_label" msgid="7967563676324087464">"乙太網路"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"飛航模式"</string>
@@ -201,5 +200,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"無線螢幕分享"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"亮度"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"自動"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"網路可能\n受到監控"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"系統會在這裡顯示通知"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"向下滑動即可隨時存取通知。\n再次向下滑動即可使用系統控制項。"</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"滑動螢幕邊緣即可顯示導覽列"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"從螢幕邊緣向內滑動即可顯示導覽列"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 14d3091d150f..007d33849ec5 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -24,10 +24,10 @@
<string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Susa ohlwini"</string>
<string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"Ulwazi lwensiza"</string>
<string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Azikho izinhlelo zokusebenza zakamuva"</string>
- <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Susa izinhlelo zokusebenza zakamumva"</string>
+ <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Susa izinsiza zakamumva"</string>
<plurals name="status_bar_accessibility_recent_apps">
<item quantity="one" msgid="5854176083865845541">"Insiza eyi-1 yakamumva"</item>
- <item quantity="other" msgid="1040784359794890744">"%d izinhlelo zokusebenza zakamumva"</item>
+ <item quantity="other" msgid="1040784359794890744">"%d izinsiza zakamumva"</item>
</plurals>
<string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Azikho izaziso"</string>
<string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Okuqhubekayo"</string>
@@ -47,11 +47,11 @@
<string name="bluetooth_tethered" msgid="7094101612161133267">"Ukusebenzisa i-Bluetooth njengemodemu"</string>
<string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Izilungiselelo zezindlela zokufakwayo"</string>
<string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"Ukwakheka kwekhibhodi"</string>
- <string name="usb_device_permission_prompt" msgid="834698001271562057">"Vumela uhlelo lokusebenza <xliff:g id="APPLICATION">%1$s</xliff:g> ukuthi ufinyelele ezintweni eziphuma ne-USB?"</string>
- <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"Vumela uhlelo lokusebenza <xliff:g id="APPLICATION">%1$s</xliff:g> ukuthi ufinyelele ezintweni eziphuma ne-USB?"</string>
+ <string name="usb_device_permission_prompt" msgid="834698001271562057">"Vumela insiza <xliff:g id="APPLICATION">%1$s</xliff:g> ukuthi ufinyelele ezintweni eziphuma ne-USB?"</string>
+ <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"Vumela insiza <xliff:g id="APPLICATION">%1$s</xliff:g> ukuthi ufinyelele ezintweni eziphuma ne-USB?"</string>
<string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Vula <xliff:g id="ACTIVITY">%1$s</xliff:g> uma ledivayisi ye-USB ixhunyiwe?"</string>
<string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Vula <xliff:g id="ACTIVITY">%1$s</xliff:g> uma le-accessory ye-USB ixhunyiwe"</string>
- <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"Azikho izinhlelo zokusebenza ezisebenze ngezinto ze-USB. Funda okwengeziwe ngale into kwi <xliff:g id="URL">%1$s</xliff:g>"</string>
+ <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"Azikho izinsiza ezisebenze ngezinto ze-USB. Funda okwengeziwe ngale into kwi <xliff:g id="URL">%1$s</xliff:g>"</string>
<string name="title_usb_accessory" msgid="4966265263465181372">"ama-accessory e-USB"</string>
<string name="label_view" msgid="6304565553218192990">"Buka"</string>
<string name="always_use_device" msgid="1450287437017315906">"Sebenzisa ngokuzenzakalelayo yale divayisi ye-USB"</string>
@@ -61,6 +61,8 @@
<string name="usb_debugging_always" msgid="303335496705863070">"Hlala uvumela njalo kusuka kule khompyutha"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Sondeza ukugcwalisa isikrini"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Nweba ukugcwalisa isikrini"</string>
+ <string name="compat_mode_help_header" msgid="7969493989397529910">"Ukuhambelana Kokusondeza"</string>
+ <string name="compat_mode_help_body" msgid="4946726776359270040">"Uma uhlelo lokusebenza lwenzelwe isikrini ezincane, isilawuli sokusondeza sizovela ngakuyiwashi."</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Ilondoloz umfanekiso weskrini..."</string>
<string name="screenshot_saving_title" msgid="8242282144535555697">"Ilondoloz umfanekiso weskrini..."</string>
<string name="screenshot_saving_text" msgid="2419718443411738818">"Umfanekiso weskrini uyalondolozwa."</string>
@@ -71,13 +73,11 @@
<string name="usb_preference_title" msgid="6551050377388882787">"Okukhethwa kokudluliswa kwefayela ye-USB"</string>
<string name="use_mtp_button_title" msgid="4333504413563023626">"Lengisa njengesidlali semediya (MTP)"</string>
<string name="use_ptp_button_title" msgid="7517127540301625751">"Lengisa ikhamera (PTP)"</string>
- <string name="installer_cd_button_title" msgid="2312667578562201583">"Faka uhlelo lokusebenza yokudluliswa Kwefayela ye-Android kwi-Mac"</string>
+ <string name="installer_cd_button_title" msgid="2312667578562201583">"Faka insiza yokudluliswa Kwefayela ye-Android kwi-Mac"</string>
<string name="accessibility_back" msgid="567011538994429120">"Emuva"</string>
<string name="accessibility_home" msgid="8217216074895377641">"Ekhaya"</string>
<string name="accessibility_menu" msgid="316839303324695949">"Imenyu"</string>
<string name="accessibility_recent" msgid="8571350598987952883">"Izinhlelo zokusebenza zakamuva"</string>
- <string name="accessibility_search_light" msgid="1103867596330271848">"Sesha"</string>
- <string name="accessibility_camera_button" msgid="8064671582820358152">"Ikhamela"</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Vula indlela yokungena yenkinobho"</string>
<string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Inkinobho evumelekile yokusondeza"</string>
<string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Sondeza kancane esikrinini esikhudlwana"</string>
@@ -164,13 +164,12 @@
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"I-Wi-Fi ixhunyiwe"</string>
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Isesha i-GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Indawo ihlelwe i-GPS"</string>
- <string name="accessibility_location_active" msgid="2427290146138169014">"Izicelo zendawo ziyasebenza"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Susa zonke izaziso."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Ulwazi lohlelo lokusebenza"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Isikrini sizophenduka ngokuzenzakalela."</string>
<string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"Isikrini sikhiyelwe ngomumo we-landscape."</string>
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Isikrini sikhiyelwe ngomumo we-portrait."</string>
- <string name="dessert_case" msgid="1295161776223959221">"Isikhwama soswidi"</string>
+ <string name="jelly_bean_dream_name" msgid="5992026543636816792">"I-BeanFlinger"</string>
<string name="start_dreams" msgid="7219575858348719790">"Ukuphupha emini"</string>
<string name="ethernet_label" msgid="7967563676324087464">"I-Ethernet"</string>
<string name="quick_settings_airplane_mode_label" msgid="5510520633448831350">"Isimo sendiza"</string>
@@ -199,5 +198,8 @@
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Ukubonisa okungenazintambo"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Ukugqama"</string>
<string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"OKUZENZAKALELAYO"</string>
- <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Kungenzeka inethiwekhi\niqashiwe"</string>
+ <string name="status_bar_help_title" msgid="1199237744086469217">"Izaziso zivela lapha"</string>
+ <string name="status_bar_help_text" msgid="7874607155052076323">"Kufinyelele noma kunini ngokuswayiphela phansi.\nSwayiphela phansi futhi ngezilawuli zesistimu."</string>
+ <string name="hideybar_confirmation_message" msgid="9050869548951044371">"Swayipha unqenqema wesikrini ukuze uveze ibha"</string>
+ <string name="hideybar_confirmation_message_long" msgid="7117692795163620626">"Swayipha kusukela kunqenqema ukuze uveze ibha yesistimu"</string>
</resources>
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
index 2063563447ca..74d982ad718b 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
@@ -60,6 +60,7 @@ import com.android.systemui.R;
import java.io.File;
import java.io.OutputStream;
+import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -214,8 +215,7 @@ class SaveImageInBackgroundTask extends AsyncTask<SaveImageInBackgroundData, Voi
values.put(MediaStore.Images.ImageColumns.HEIGHT, mImageHeight);
Uri uri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
- String subjectDate = new SimpleDateFormat("hh:mma, MMM dd, yyyy")
- .format(new Date(mImageTime));
+ String subjectDate = DateFormat.getDateTimeInstance().format(new Date(mImageTime));
String subject = String.format(SCREENSHOT_SHARE_SUBJECT_TEMPLATE, subjectDate);
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("image/png");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index 839016d7a1de..9589e8ba2443 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -521,6 +521,11 @@ public class NavigationBarView extends LinearLayout {
Log.d(TAG, "reorient(): rot=" + mDisplay.getRotation());
}
+ // swap to x coordinate if orientation is not in vertical
+ if (mDelegateHelper != null) {
+ mDelegateHelper.setSwapXY(!mVertical);
+ }
+
setNavigationIconHints(mNavigationIconHints, true);
}
diff --git a/packages/VpnDialogs/res/values-en-rIN/strings.xml b/packages/VpnDialogs/res/values-en-rIN/strings.xml
deleted file mode 100644
index afc46d8c32d2..000000000000
--- a/packages/VpnDialogs/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="prompt" msgid="8359175999006833462">"<xliff:g id="APP">%s</xliff:g> attempts to create a VPN connection."</string>
- <string name="warning" msgid="5470743576660160079">"By proceeding, you are giving the application permission to intercept all network traffic. "<b>"Do NOT accept unless you trust the application."</b>" Otherwise, you run the risk of having your data compromised by malicious software."</string>
- <string name="accept" msgid="2889226408765810173">"I trust this application."</string>
- <string name="legacy_title" msgid="192936250066580964">"VPN is connected"</string>
- <string name="configure" msgid="4905518375574791375">"Configure"</string>
- <string name="disconnect" msgid="971412338304200056">"Disconnect"</string>
- <string name="session" msgid="6470628549473641030">"Session:"</string>
- <string name="duration" msgid="3584782459928719435">"Duration:"</string>
- <string name="data_transmitted" msgid="7988167672982199061">"Sent:"</string>
- <string name="data_received" msgid="4062776929376067820">"Received:"</string>
- <string name="data_value_format" msgid="2192466557826897580">"<xliff:g id="NUMBER_0">%1$s</xliff:g> bytes / <xliff:g id="NUMBER_1">%2$s</xliff:g> packets"</string>
-</resources>
diff --git a/packages/VpnDialogs/res/values-et-rEE/strings.xml b/packages/VpnDialogs/res/values-et-rEE/strings.xml
deleted file mode 100644
index c016eb020745..000000000000
--- a/packages/VpnDialogs/res/values-et-rEE/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="prompt" msgid="8359175999006833462">"Rakenduse <xliff:g id="APP">%s</xliff:g> katsed luua VPN-ühendust."</string>
- <string name="warning" msgid="5470743576660160079">"Jätkates annate rakendusele loa jälgida kogu võrguliiklust. "<b>"ÄRGE nõustuge, kui te seda rakendust ei usalda."</b>" Vastasel juhul on oht, et pahavara võib kahjustada teie andmeid."</string>
- <string name="accept" msgid="2889226408765810173">"Usaldan seda rakendust."</string>
- <string name="legacy_title" msgid="192936250066580964">"VPN on ühendatud"</string>
- <string name="configure" msgid="4905518375574791375">"Seadistamine"</string>
- <string name="disconnect" msgid="971412338304200056">"Katkesta ühendus"</string>
- <string name="session" msgid="6470628549473641030">"Seansid"</string>
- <string name="duration" msgid="3584782459928719435">"Kestus:"</string>
- <string name="data_transmitted" msgid="7988167672982199061">"Saadetud:"</string>
- <string name="data_received" msgid="4062776929376067820">"Vastu on võetud:"</string>
- <string name="data_value_format" msgid="2192466557826897580">"<xliff:g id="NUMBER_0">%1$s</xliff:g> baiti / <xliff:g id="NUMBER_1">%2$s</xliff:g> paketti"</string>
-</resources>
diff --git a/packages/VpnDialogs/res/values-fr-rCA/strings.xml b/packages/VpnDialogs/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 1028f83ab61e..000000000000
--- a/packages/VpnDialogs/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="prompt" msgid="8359175999006833462">"<xliff:g id="APP">%s</xliff:g> tente de créer une connexion VPN."</string>
- <string name="warning" msgid="5470743576660160079">"En continuant, vous autorisez l\'application à intercepter l\'ensemble du trafic réseau. "<b>"N\'acceptez PAS, sauf si vous avez confiance en l\'application."</b>"Sinon, vos données risquent d\'être piratées par un logiciel malveillant."</string>
- <string name="accept" msgid="2889226408765810173">"J\'ai confiance en cette application."</string>
- <string name="legacy_title" msgid="192936250066580964">"VPN connecté"</string>
- <string name="configure" msgid="4905518375574791375">"Configurer"</string>
- <string name="disconnect" msgid="971412338304200056">"Déconnecter"</string>
- <string name="session" msgid="6470628549473641030">"Session :"</string>
- <string name="duration" msgid="3584782459928719435">"Durée :"</string>
- <string name="data_transmitted" msgid="7988167672982199061">"Date d\'envoi :"</string>
- <string name="data_received" msgid="4062776929376067820">"Reçu le :"</string>
- <string name="data_value_format" msgid="2192466557826897580">"<xliff:g id="NUMBER_0">%1$s</xliff:g> octets / <xliff:g id="NUMBER_1">%2$s</xliff:g> paquets"</string>
-</resources>
diff --git a/packages/VpnDialogs/res/values-hi/strings.xml b/packages/VpnDialogs/res/values-hi/strings.xml
index 50be98ccfac3..e2cb51ad90b8 100644
--- a/packages/VpnDialogs/res/values-hi/strings.xml
+++ b/packages/VpnDialogs/res/values-hi/strings.xml
@@ -17,8 +17,8 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="prompt" msgid="8359175999006833462">"<xliff:g id="APP">%s</xliff:g> एक VPN कनेक्‍शन बनाने का प्रयास करता है."</string>
- <string name="warning" msgid="5470743576660160079">"जारी रखकर, आप एप्स को सभी नेटवर्क ट्रैफ़िक अवरोधित करने की अनुमति देते हैं. "<b>"जब तक आपको एप्स पर विश्वास न हो स्‍वीकार न करें."</b>" अन्‍यथा, आपको अपने डेटा के साथ किसी दुर्भावनापूर्ण सॉफ़्टवेयर द्वारा छेड़छाड़ किए जाने का जोखिम हो सकता है."</string>
- <string name="accept" msgid="2889226408765810173">"मुझे इस एप्स पर विश्वास है."</string>
+ <string name="warning" msgid="5470743576660160079">"जारी रखकर, आप एप्लिकेशन को सभी नेटवर्क ट्रैफ़िक अवरोधित करने की अनुमति देते हैं. "<b>"जब तक आपको एप्लिकेशन पर विश्वास न हो स्‍वीकार न करें."</b>" अन्‍यथा, आपको अपने डेटा के साथ किसी दुर्भावनापूर्ण सॉफ़्टवेयर द्वारा छेड़छाड़ किए जाने का जोखिम हो सकता है."</string>
+ <string name="accept" msgid="2889226408765810173">"मुझे इस एप्लिकेशन पर विश्वास है."</string>
<string name="legacy_title" msgid="192936250066580964">"VPN कनेक्‍ट है"</string>
<string name="configure" msgid="4905518375574791375">"कॉन्फ़िगर करें"</string>
<string name="disconnect" msgid="971412338304200056">"डिस्‍कनेक्‍ट करें"</string>
diff --git a/packages/VpnDialogs/res/values-hy-rAM/strings.xml b/packages/VpnDialogs/res/values-hy-rAM/strings.xml
deleted file mode 100644
index 85db5797b1f0..000000000000
--- a/packages/VpnDialogs/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="prompt" msgid="8359175999006833462">"<xliff:g id="APP">%s</xliff:g>-ը փորձում է ստեղծել VPN կապ:"</string>
- <string name="warning" msgid="5470743576660160079">"Շարունակելով` դուք հավելվածին թույլատրում եք կանգնեցնել ամբողջ ցանցային շարժը: "<b>"Մի ընդունեք, եթե չեք վստահում հավելվածին:"</b>" Այլապես ռիսկ կա ձեր տվյալները վտանգելու վնասարար հավելվածների կողմից:"</string>
- <string name="accept" msgid="2889226408765810173">"Ես վստահում եմ այս ծրագրին:"</string>
- <string name="legacy_title" msgid="192936250066580964">"VPN-ը կապակցված է"</string>
- <string name="configure" msgid="4905518375574791375">"Կարգավորել"</string>
- <string name="disconnect" msgid="971412338304200056">"Անջատել"</string>
- <string name="session" msgid="6470628549473641030">"Աշխատաշրջան`"</string>
- <string name="duration" msgid="3584782459928719435">"Տևողությունը՝"</string>
- <string name="data_transmitted" msgid="7988167672982199061">"Ուղարկվել է՝"</string>
- <string name="data_received" msgid="4062776929376067820">"Ստացվել է՝"</string>
- <string name="data_value_format" msgid="2192466557826897580">"<xliff:g id="NUMBER_0">%1$s</xliff:g> բայթ / <xliff:g id="NUMBER_1">%2$s</xliff:g> փաթեթ"</string>
-</resources>
diff --git a/packages/VpnDialogs/res/values-iw/strings.xml b/packages/VpnDialogs/res/values-iw/strings.xml
index 908218085123..bb845eebda79 100644
--- a/packages/VpnDialogs/res/values-iw/strings.xml
+++ b/packages/VpnDialogs/res/values-iw/strings.xml
@@ -17,8 +17,8 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="prompt" msgid="8359175999006833462">"<xliff:g id="APP">%s</xliff:g> מנסה ליצור חיבור VPN."</string>
- <string name="warning" msgid="5470743576660160079">"אם תמשיך, אתה מעניק לאפליקציה הרשאה לעכב את כל התנועה ברשת. "<b>" אל תקבל אלא אם כן אתה סומך על האפליקציה. "</b>" אחרת, אתה חושף את הנתונים שלך לסכנה של פגיעה על-ידי תוכנה זדונית."</string>
- <string name="accept" msgid="2889226408765810173">"אני סומך על אפליקציה זו."</string>
+ <string name="warning" msgid="5470743576660160079">"אם תמשיך, אתה מעניק ליישום הרשאה לעכב את כל התנועה ברשת. "<b>" אל תקבל אלא אם כן אתה סומך על היישום. "</b>" אחרת, אתה חושף את הנתונים שלך לסכנה של פגיעה על-ידי תוכנה זדונית."</string>
+ <string name="accept" msgid="2889226408765810173">"אני סומך על יישום זה."</string>
<string name="legacy_title" msgid="192936250066580964">"VPN מחובר"</string>
<string name="configure" msgid="4905518375574791375">"הגדר"</string>
<string name="disconnect" msgid="971412338304200056">"נתק"</string>
diff --git a/packages/VpnDialogs/res/values-ka-rGE/strings.xml b/packages/VpnDialogs/res/values-ka-rGE/strings.xml
deleted file mode 100644
index 960d3f6fe7d8..000000000000
--- a/packages/VpnDialogs/res/values-ka-rGE/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="prompt" msgid="8359175999006833462">"<xliff:g id="APP">%s</xliff:g> ცდილობს VPN კავშირის შექმნას."</string>
- <string name="warning" msgid="5470743576660160079">"გაგრძელების შემთხვევაში, აპლიკაციას ექნება ქსელში გადაცემული მონაცემების მოპოვების საშუალება. "<b>"არ განაგრძოთ, თუ არ ენდობით აპლიკაციას."</b>" წინააღმდეგ შემთვევაში შესაძლოა მავნე პროგრამას თქვენ მონაცემებთან წვდომის საშუალება მიეცეს."</string>
- <string name="accept" msgid="2889226408765810173">"ვენდობი ამ აპლიკაციას."</string>
- <string name="legacy_title" msgid="192936250066580964">"VPN დაკავშირებულია"</string>
- <string name="configure" msgid="4905518375574791375">"კონფიგურაცია"</string>
- <string name="disconnect" msgid="971412338304200056">"კავშირის გაწყვეტა"</string>
- <string name="session" msgid="6470628549473641030">"სესია:"</string>
- <string name="duration" msgid="3584782459928719435">"ხანგრძლივობა:"</string>
- <string name="data_transmitted" msgid="7988167672982199061">"გაგზავნილი:"</string>
- <string name="data_received" msgid="4062776929376067820">"მიღებული:"</string>
- <string name="data_value_format" msgid="2192466557826897580">"<xliff:g id="NUMBER_0">%1$s</xliff:g> ბაიტი / <xliff:g id="NUMBER_1">%2$s</xliff:g> პაკეტი"</string>
-</resources>
diff --git a/packages/VpnDialogs/res/values-km-rKH/strings.xml b/packages/VpnDialogs/res/values-km-rKH/strings.xml
deleted file mode 100644
index 2c79e268f594..000000000000
--- a/packages/VpnDialogs/res/values-km-rKH/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="prompt" msgid="8359175999006833462">"<xliff:g id="APP">%s</xliff:g> ព្យាយាម​បង្កើត​ការ​តភ្ជាប់ VPN ។"</string>
- <string name="warning" msgid="5470743576660160079">"ដោយ​បន្ត អ្នក​កំពុង​ផ្ដល់​សិទ្ធិ​ឲ្យ​កម្មវិធី​ទប់ស្កាត់​ចរាចរណ៍​បណ្ដាញ។ "<b>"កុំ​ទទួល​ លុះ​ត្រា​តែ​អ្នក​ទុក​ចិត្ត​កម្មវិធី។"</b>" បើ​មិន​ដូច្នេះ​ទេ អ្នក​ដំណើរការ​ប្រឈម​នឹង​គ្រោះថ្នាក់ ដោយ​ទិន្នន័យ​របស់​អ្នក​បាន​សម្របសម្រួល​ដោយ​កម្មវិធី​ព្យាបាទ។"</string>
- <string name="accept" msgid="2889226408765810173">"ខ្ញុំ​ទុកចិត្ត​​​កម្មវិធី​នេះ​។"</string>
- <string name="legacy_title" msgid="192936250066580964">"បា​ន​ភ្ជាប់ VPN"</string>
- <string name="configure" msgid="4905518375574791375">"កំណត់​រចនាសម្ព័ន្ធ"</string>
- <string name="disconnect" msgid="971412338304200056">"ផ្ដាច់"</string>
- <string name="session" msgid="6470628549473641030">"សម័យ៖"</string>
- <string name="duration" msgid="3584782459928719435">"ថិរវេលា៖"</string>
- <string name="data_transmitted" msgid="7988167672982199061">"បាន​ផ្ញើ៖"</string>
- <string name="data_received" msgid="4062776929376067820">"បាន​ទទួល៖"</string>
- <string name="data_value_format" msgid="2192466557826897580">"<xliff:g id="NUMBER_0">%1$s</xliff:g> បៃ / <xliff:g id="NUMBER_1">%2$s</xliff:g> កញ្ចប់​ព័ត៌មាន"</string>
-</resources>
diff --git a/packages/VpnDialogs/res/values-lo-rLA/strings.xml b/packages/VpnDialogs/res/values-lo-rLA/strings.xml
deleted file mode 100644
index 9f5216b443e8..000000000000
--- a/packages/VpnDialogs/res/values-lo-rLA/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="prompt" msgid="8359175999006833462">"<xliff:g id="APP">%s</xliff:g> ພະຍາຍາມສ້າງການເຊື່ອມຕໍ່ VPN."</string>
- <string name="warning" msgid="5470743576660160079">"ຖ້າດຳເນີນຕໍ່, ແມ່ນທ່ານກຳລັງຈະໃຫ້ສິດແກ່ແອັບພລິເຄຊັນ ໃນການດັກຂໍ້ມູນຈະລາຈອນໃນເຄືອຂ່າຍທັງໝົດ. "<b>"ຢ່າຍອມຮັບ ນອກຈາກວ່າທ່ານຈະເຊື່ອໃຈແອັບພລິເຄຊັນດັ່ງກ່າວ."</b>" ຖ້າບໍ່ດັ່ງນັ້ນ, ທ່ານຈະຕົກຢູ່ໃນຄວາມສ່ຽງ ທີ່ຂໍ້ມູນຂອງທ່ານຈະຖືກຄຸກຄາມໂດຍຊອບແວທີ່ເປັນອັນຕະລາຍ."</string>
- <string name="accept" msgid="2889226408765810173">"ຂ້ອຍເຊື່ອແອັບພລິເຄຊັນນີ້."</string>
- <string name="legacy_title" msgid="192936250066580964">"ເຊື່ອມຕໍ່ VPN ແລ້ວ"</string>
- <string name="configure" msgid="4905518375574791375">"ປັບຄ່າ"</string>
- <string name="disconnect" msgid="971412338304200056">"ຕັດການເຊື່ອມຕໍ່"</string>
- <string name="session" msgid="6470628549473641030">"ເຊສຊັນ:"</string>
- <string name="duration" msgid="3584782459928719435">"ໄລຍະເວລາ:"</string>
- <string name="data_transmitted" msgid="7988167672982199061">"ສົ່ງ:"</string>
- <string name="data_received" msgid="4062776929376067820">"ຮັບ:"</string>
- <string name="data_value_format" msgid="2192466557826897580">"<xliff:g id="NUMBER_0">%1$s</xliff:g> ໄບ / <xliff:g id="NUMBER_1">%2$s</xliff:g> ແພັກເກັດ"</string>
-</resources>
diff --git a/packages/VpnDialogs/res/values-mn-rMN/strings.xml b/packages/VpnDialogs/res/values-mn-rMN/strings.xml
deleted file mode 100644
index 887bb7306b61..000000000000
--- a/packages/VpnDialogs/res/values-mn-rMN/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="prompt" msgid="8359175999006833462">"<xliff:g id="APP">%s</xliff:g> VPN холболтыг үүсгэх гэж байна."</string>
- <string name="warning" msgid="5470743576660160079">"Үргэлжлүүлсэнээр та аппликешнд бүх сүлжээний урсгалыг таслах зөвшөөрлийг өгөх болно. "<b>"Аппикешн баталгаагүй гэж үзсэн тохиолдолд л зөвшөөрч болорхгүй."</b>" Бусад тохиолдолд та өөрийн датаг хортой софтверийн аюулд өртөх эрсдэлийг үүсгэж байна."</string>
- <string name="accept" msgid="2889226408765810173">"Би энэ аппликешнд итгэж байна."</string>
- <string name="legacy_title" msgid="192936250066580964">"VPN холбогдов"</string>
- <string name="configure" msgid="4905518375574791375">"Тохируулах"</string>
- <string name="disconnect" msgid="971412338304200056">"Салгах"</string>
- <string name="session" msgid="6470628549473641030">"Сешн:"</string>
- <string name="duration" msgid="3584782459928719435">"Үргэлжлэх хугацаа:"</string>
- <string name="data_transmitted" msgid="7988167672982199061">"Илгээсэн:"</string>
- <string name="data_received" msgid="4062776929376067820">"Хүлээн авсан:"</string>
- <string name="data_value_format" msgid="2192466557826897580">"<xliff:g id="NUMBER_0">%1$s</xliff:g> байт/ <xliff:g id="NUMBER_1">%2$s</xliff:g> пакет"</string>
-</resources>
diff --git a/packages/VpnDialogs/res/values-ms-rMY/strings.xml b/packages/VpnDialogs/res/values-ms-rMY/strings.xml
deleted file mode 100644
index 417fbaea42fe..000000000000
--- a/packages/VpnDialogs/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="prompt" msgid="8359175999006833462">"<xliff:g id="APP">%s</xliff:g> percubaan untuk membuat sambungan VPN."</string>
- <string name="warning" msgid="5470743576660160079">"Dengan meneruskan, anda memberi keizinan kepada aplikasi untuk memintas semua trafik rangkaian. "<b>"JANGAN terima melainkan anda mempercayai aplikasi itu."</b>" Jika tidak, anda akan mengalami risiko data terjejas oleh perisian berniat jahat."</string>
- <string name="accept" msgid="2889226408765810173">"Saya percayai aplikasi ini."</string>
- <string name="legacy_title" msgid="192936250066580964">"VPN telah disambungkan"</string>
- <string name="configure" msgid="4905518375574791375">"Konfigurasikan"</string>
- <string name="disconnect" msgid="971412338304200056">"Putuskan sambungan"</string>
- <string name="session" msgid="6470628549473641030">"Sesi:"</string>
- <string name="duration" msgid="3584782459928719435">"Tempoh:"</string>
- <string name="data_transmitted" msgid="7988167672982199061">"Dihantar:"</string>
- <string name="data_received" msgid="4062776929376067820">"Diterima:"</string>
- <string name="data_value_format" msgid="2192466557826897580">"<xliff:g id="NUMBER_0">%1$s</xliff:g> bait / <xliff:g id="NUMBER_1">%2$s</xliff:g> bingkisan"</string>
-</resources>
diff --git a/packages/VpnDialogs/res/values-nb/strings.xml b/packages/VpnDialogs/res/values-nb/strings.xml
index 6bffc98ecbcf..f7164225f4e4 100644
--- a/packages/VpnDialogs/res/values-nb/strings.xml
+++ b/packages/VpnDialogs/res/values-nb/strings.xml
@@ -17,8 +17,8 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="prompt" msgid="8359175999006833462">"<xliff:g id="APP">%s</xliff:g> forsøker å etablere en VPN-tilkobling."</string>
- <string name="warning" msgid="5470743576660160079">"Ved å fortsette gir du appen tillatelse til å fange opp all nettverkstrafikk. "<b>"IKKE godta med mindre du stoler på appen."</b>" Ellers risikerer du at dataene dine kompromitteres av en ondsinnet programvare."</string>
- <string name="accept" msgid="2889226408765810173">"Jeg stoler på denne appen."</string>
+ <string name="warning" msgid="5470743576660160079">"Ved å fortsette gir du applikasjonen tillatelse til å fange opp all nettverkstrafikk. "<b>"IKKE godta med mindre du stoler på applikasjonen."</b>" Ellers risikerer du at dataene dine kompromitteres av en ondsinnet programvare."</string>
+ <string name="accept" msgid="2889226408765810173">"Jeg stoler på denne applikasjonen."</string>
<string name="legacy_title" msgid="192936250066580964">"VPN er tilkoblet"</string>
<string name="configure" msgid="4905518375574791375">"Konfigurer"</string>
<string name="disconnect" msgid="971412338304200056">"Koble fra"</string>
diff --git a/packages/VpnDialogs/res/values-zh-rHK/strings.xml b/packages/VpnDialogs/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 8b25d41faaf9..000000000000
--- a/packages/VpnDialogs/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2011 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="prompt" msgid="8359175999006833462">"<xliff:g id="APP">%s</xliff:g> 嘗試建立 VPN 連線。"</string>
- <string name="warning" msgid="5470743576660160079">"如果繼續進行,即表示您允許該應用程式攔截所有網絡流量。"<b>"除非您信任該應用程式,否則不應接受。"</b>"不然就會讓您的資料陷於遭惡意程式入侵的風險。"</string>
- <string name="accept" msgid="2889226408765810173">"我信任這個應用程式。"</string>
- <string name="legacy_title" msgid="192936250066580964">"VPN 已連線"</string>
- <string name="configure" msgid="4905518375574791375">"設定"</string>
- <string name="disconnect" msgid="971412338304200056">"中斷連線"</string>
- <string name="session" msgid="6470628549473641030">"時段:"</string>
- <string name="duration" msgid="3584782459928719435">"持續時間︰"</string>
- <string name="data_transmitted" msgid="7988167672982199061">"已傳送:"</string>
- <string name="data_received" msgid="4062776929376067820">"已接收:"</string>
- <string name="data_value_format" msgid="2192466557826897580">"<xliff:g id="NUMBER_0">%1$s</xliff:g> 位元組 / <xliff:g id="NUMBER_1">%2$s</xliff:g> 封包"</string>
-</resources>
diff --git a/policy/src/com/android/internal/policy/impl/GlobalActions.java b/policy/src/com/android/internal/policy/impl/GlobalActions.java
index 884f57e94951..7c0735bbfe02 100644
--- a/policy/src/com/android/internal/policy/impl/GlobalActions.java
+++ b/policy/src/com/android/internal/policy/impl/GlobalActions.java
@@ -887,6 +887,7 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac
case MESSAGE_DISMISS:
if (mDialog != null) {
mDialog.dismiss();
+ mDialog = null;
}
break;
case MESSAGE_REFRESH:
diff --git a/policy/src/com/android/internal/policy/impl/PhoneLayoutInflater.java b/policy/src/com/android/internal/policy/impl/PhoneLayoutInflater.java
index 6bf4beb0ea57..968976b93a90 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneLayoutInflater.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneLayoutInflater.java
@@ -26,7 +26,8 @@ import android.view.LayoutInflater;
public class PhoneLayoutInflater extends LayoutInflater {
private static final String[] sClassPrefixList = {
"android.widget.",
- "android.webkit."
+ "android.webkit.",
+ "android.app."
};
/**
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
index 44fc1f851b0e..7c047c3eaddc 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
@@ -38,6 +38,7 @@ import com.android.internal.widget.ActionBarContainer;
import com.android.internal.widget.ActionBarContextView;
import com.android.internal.widget.ActionBarOverlayLayout;
import com.android.internal.widget.ActionBarView;
+import com.android.internal.widget.SwipeDismissLayout;
import android.app.KeyguardManager;
import android.content.Context;
@@ -267,6 +268,15 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
// Remove the action bar feature if we have no title. No title dominates.
removeFeature(FEATURE_ACTION_BAR);
}
+
+ if ((features & (1 << FEATURE_ACTION_BAR)) != 0 && featureId == FEATURE_SWIPE_TO_DISMISS) {
+ throw new AndroidRuntimeException(
+ "You cannot combine swipe dismissal and the action bar.");
+ }
+ if ((features & (1 << FEATURE_SWIPE_TO_DISMISS)) != 0 && featureId == FEATURE_ACTION_BAR) {
+ throw new AndroidRuntimeException(
+ "You cannot combine swipe dismissal and the action bar.");
+ }
return super.requestFeature(featureId);
}
@@ -2838,6 +2848,10 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
requestFeature(FEATURE_ACTION_MODE_OVERLAY);
}
+ if (a.getBoolean(com.android.internal.R.styleable.Window_windowSwipeToDismiss, false)) {
+ requestFeature(FEATURE_SWIPE_TO_DISMISS);
+ }
+
if (a.getBoolean(com.android.internal.R.styleable.Window_windowFullscreen, false)) {
setFlags(FLAG_FULLSCREEN, FLAG_FULLSCREEN & (~getForcedWindowFlags()));
}
@@ -2964,7 +2978,9 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
int layoutResource;
int features = getLocalFeatures();
// System.out.println("Features: 0x" + Integer.toHexString(features));
- if ((features & ((1 << FEATURE_LEFT_ICON) | (1 << FEATURE_RIGHT_ICON))) != 0) {
+ if ((features & (1 << FEATURE_SWIPE_TO_DISMISS)) != 0) {
+ layoutResource = com.android.internal.R.layout.screen_swipe_dismiss;
+ } else if ((features & ((1 << FEATURE_LEFT_ICON) | (1 << FEATURE_RIGHT_ICON))) != 0) {
if (mIsFloating) {
TypedValue res = new TypedValue();
getContext().getTheme().resolveAttribute(
@@ -3034,6 +3050,10 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
}
}
+ if ((features & (1 << FEATURE_SWIPE_TO_DISMISS)) != 0) {
+ registerSwipeCallbacks();
+ }
+
// Remaining setup -- of background and title -- that only applies
// to top-level windows.
if (getContainer() == null) {
@@ -3390,6 +3410,53 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
return (mRightIconView = (ImageView)findViewById(com.android.internal.R.id.right_icon));
}
+ private void registerSwipeCallbacks() {
+ SwipeDismissLayout swipeDismiss =
+ (SwipeDismissLayout) findViewById(com.android.internal.R.id.content);
+ swipeDismiss.setOnDismissedListener(new SwipeDismissLayout.OnDismissedListener() {
+ @Override
+ public void onDismissed(SwipeDismissLayout layout) {
+ Callback cb = getCallback();
+ if (cb != null) {
+ try {
+ cb.onWindowDismissed();
+ } catch (AbstractMethodError e) {
+ Log.e(TAG, "onWindowDismissed not implemented in " +
+ cb.getClass().getSimpleName(), e);
+ }
+ }
+ }
+ });
+ swipeDismiss.setOnSwipeProgressChangedListener(
+ new SwipeDismissLayout.OnSwipeProgressChangedListener() {
+ private boolean mIsTranslucent = false;
+
+ @Override
+ public void onSwipeProgressChanged(
+ SwipeDismissLayout layout, float progress, float translate) {
+ WindowManager.LayoutParams newParams = getAttributes();
+ newParams.x = (int) translate;
+ setAttributes(newParams);
+
+ int flags = 0;
+ if (newParams.x == 0) {
+ flags = FLAG_FULLSCREEN;
+ } else {
+ flags = FLAG_LAYOUT_NO_LIMITS;
+ }
+ setFlags(flags, FLAG_FULLSCREEN | FLAG_LAYOUT_NO_LIMITS);
+ }
+
+ @Override
+ public void onSwipeCancelled(SwipeDismissLayout layout) {
+ WindowManager.LayoutParams newParams = getAttributes();
+ newParams.x = 0;
+ setAttributes(newParams);
+ setFlags(FLAG_FULLSCREEN, FLAG_FULLSCREEN | FLAG_LAYOUT_NO_LIMITS);
+ }
+ });
+ }
+
/**
* Helper method for calling the {@link Callback#onPanelClosed(int, Menu)}
* callback. This method will grab whatever extra state is needed for the
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index b28cef57b130..50037bc515f0 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -231,7 +231,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
/** If true, hitting shift & menu will broadcast Intent.ACTION_BUG_REPORT */
boolean mEnableShiftMenuBugReports = false;
- boolean mHeadless;
boolean mSafeMode;
WindowState mStatusBar = null;
int mStatusBarHeight;
@@ -284,6 +283,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
int mUserRotation = Surface.ROTATION_0;
boolean mAccelerometerDefault;
+ boolean mSupportAutoRotation;
int mAllowAllRotations = -1;
boolean mCarDockEnablesAccelerometer;
boolean mDeskDockEnablesAccelerometer;
@@ -592,13 +592,15 @@ public class PhoneWindowManager implements WindowManagerPolicy {
* screen is switched off.
*/
boolean needSensorRunningLp() {
- if (mCurrentAppOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR
- || mCurrentAppOrientation == ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
- || mCurrentAppOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT
- || mCurrentAppOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE) {
- // If the application has explicitly requested to follow the
- // orientation, then we need to turn the sensor or.
- return true;
+ if (mSupportAutoRotation) {
+ if (mCurrentAppOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR
+ || mCurrentAppOrientation == ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
+ || mCurrentAppOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT
+ || mCurrentAppOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE) {
+ // If the application has explicitly requested to follow the
+ // orientation, then we need to turn the sensor on.
+ return true;
+ }
}
if ((mCarDockEnablesAccelerometer && mDockMode == Intent.EXTRA_DOCK_STATE_CAR) ||
(mDeskDockEnablesAccelerometer && (mDockMode == Intent.EXTRA_DOCK_STATE_DESK
@@ -619,7 +621,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// still be turned off when the screen is off.)
return false;
}
- return true;
+ return mSupportAutoRotation;
}
/*
@@ -856,7 +858,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mContext = context;
mWindowManager = windowManager;
mWindowManagerFuncs = windowManagerFuncs;
- mHeadless = "1".equals(SystemProperties.get("ro.config.headless", "0"));
mHandler = new PolicyHandler();
mOrientationListener = new MyOrientationListener(mContext, mHandler);
try {
@@ -885,6 +886,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mBroadcastWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"PhoneWindowManager.mBroadcastWakeLock");
mEnableShiftMenuBugReports = "1".equals(SystemProperties.get("ro.debuggable"));
+ mSupportAutoRotation = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_supportAutoRotation);
mLidOpenRotation = readRotation(
com.android.internal.R.integer.config_lidOpenRotation);
mCarDockRotation = readRotation(
@@ -1675,7 +1678,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
return view.getParent() != null ? view : null;
} catch (WindowManager.BadTokenException e) {
// ignore
- Log.w(TAG, appToken + " already running, starting window not displayed");
+ Log.w(TAG, appToken + " already running, starting window not displayed. " +
+ e.getMessage());
} catch (RuntimeException e) {
// don't crash if something else bad happens, for example a
// failure loading resources because we are loading from an app
@@ -3611,9 +3615,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
/** {@inheritDoc} */
public void notifyLidSwitchChanged(long whenNanos, boolean lidOpen) {
- // do nothing if headless
- if (mHeadless) return;
-
// lid changed state
final int newLidState = lidOpen ? LID_OPEN : LID_CLOSED;
if (newLidState == mLidState) {
@@ -3819,17 +3820,16 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mKeyguardDelegate.isShowingAndNotHidden() :
mKeyguardDelegate.isShowing()));
- if (keyCode == KeyEvent.KEYCODE_POWER) {
+ if (keyCode == KeyEvent.KEYCODE_POWER
+ || keyCode == KeyEvent.KEYCODE_SLEEP
+ || keyCode == KeyEvent.KEYCODE_WAKEUP) {
policyFlags |= WindowManagerPolicy.FLAG_WAKE;
}
- final boolean isWakeKey = (policyFlags & (WindowManagerPolicy.FLAG_WAKE
- | WindowManagerPolicy.FLAG_WAKE_DROPPED)) != 0;
if (DEBUG_INPUT) {
Log.d(TAG, "interceptKeyTq keycode=" + keyCode
+ " screenIsOn=" + isScreenOn + " keyguardActive=" + keyguardActive
- + " policyFlags=" + Integer.toHexString(policyFlags)
- + " isWakeKey=" + isWakeKey);
+ + " policyFlags=" + Integer.toHexString(policyFlags));
}
if (down && (policyFlags & WindowManagerPolicy.FLAG_VIRTUAL) != 0
@@ -3846,15 +3846,17 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// the device some other way (which is why we have an exemption here for injected
// events).
int result;
- if ((isScreenOn && !mHeadless) || (isInjected && !isWakeKey)) {
+ boolean isWakeKey = (policyFlags & (WindowManagerPolicy.FLAG_WAKE
+ | WindowManagerPolicy.FLAG_WAKE_DROPPED)) != 0;
+ if (isScreenOn || (isInjected && !isWakeKey)) {
// When the screen is on or if the key is injected pass the key to the application.
result = ACTION_PASS_TO_USER;
} else {
// When the screen is off and the key is not injected, determine whether
// to wake the device but don't pass the key to the application.
result = 0;
- if (down && isWakeKey && isWakeKeyWhenScreenOff(keyCode)) {
- result |= ACTION_WAKE_UP;
+ if (isWakeKey && (!down || !isWakeKeyWhenScreenOff(keyCode))) {
+ isWakeKey = false;
}
}
@@ -3964,7 +3966,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
if ((mEndcallBehavior
& Settings.System.END_BUTTON_BEHAVIOR_SLEEP) != 0) {
- result = (result & ~ACTION_WAKE_UP) | ACTION_GO_TO_SLEEP;
+ mPowerManager.goToSleep(event.getEventTime());
+ isWakeKey = false;
}
}
}
@@ -4008,13 +4011,26 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mPowerKeyTriggered = false;
cancelPendingScreenshotChordAction();
if (interceptPowerKeyUp(canceled || mPendingPowerKeyUpCanceled)) {
- result = (result & ~ACTION_WAKE_UP) | ACTION_GO_TO_SLEEP;
+ mPowerManager.goToSleep(event.getEventTime());
+ isWakeKey = false;
}
mPendingPowerKeyUpCanceled = false;
}
break;
}
+ case KeyEvent.KEYCODE_SLEEP: {
+ result &= ~ACTION_PASS_TO_USER;
+ mPowerManager.goToSleep(event.getEventTime());
+ isWakeKey = false;
+ break;
+ }
+
+ case KeyEvent.KEYCODE_WAKEUP: {
+ result &= ~ACTION_PASS_TO_USER;
+ break;
+ }
+
case KeyEvent.KEYCODE_MEDIA_PLAY:
case KeyEvent.KEYCODE_MEDIA_PAUSE:
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
@@ -4078,6 +4094,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
break;
}
}
+
+ if (isWakeKey) {
+ mPowerManager.wakeUp(event.getEventTime());
+ }
return result;
}
@@ -4118,13 +4138,13 @@ public class PhoneWindowManager implements WindowManagerPolicy {
/** {@inheritDoc} */
@Override
- public int interceptMotionBeforeQueueingWhenScreenOff(int policyFlags) {
+ public int interceptMotionBeforeQueueingWhenScreenOff(long whenNanos, int policyFlags) {
int result = 0;
final boolean isWakeMotion = (policyFlags
& (WindowManagerPolicy.FLAG_WAKE | WindowManagerPolicy.FLAG_WAKE_DROPPED)) != 0;
if (isWakeMotion) {
- result |= ACTION_WAKE_UP;
+ mPowerManager.wakeUp(whenNanos / 1000000);
}
return result;
}
@@ -4488,6 +4508,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
} else if (orientation == ActivityInfo.SCREEN_ORIENTATION_LOCKED) {
// Application just wants to remain locked in the last rotation.
preferredRotation = lastRotation;
+ } else if (!mSupportAutoRotation) {
+ // If we don't support auto-rotation then bail out here and ignore
+ // the sensor and any rotation lock settings.
+ preferredRotation = -1;
} else if ((mUserRotationMode == WindowManagerPolicy.USER_ROTATION_FREE
&& (orientation == ActivityInfo.SCREEN_ORIENTATION_USER
|| orientation == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
@@ -4672,10 +4696,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
/** {@inheritDoc} */
@Override
public void systemReady() {
- if (!mHeadless) {
- mKeyguardDelegate = new KeyguardServiceDelegate(mContext, null);
- mKeyguardDelegate.onSystemReady();
- }
+ mKeyguardDelegate = new KeyguardServiceDelegate(mContext, null);
+ mKeyguardDelegate.onSystemReady();
+
synchronized (mLock) {
updateOrientationListenerLp();
mSystemReady = true;
@@ -4702,7 +4725,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
/** {@inheritDoc} */
public void showBootMessage(final CharSequence msg, final boolean always) {
- if (mHeadless) return;
mHandler.post(new Runnable() {
@Override public void run() {
if (mBootMsgDialog == null) {
@@ -5299,6 +5321,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
pw.print(prefix); pw.print("mLastFocusNeedsMenu=");
pw.println(mLastFocusNeedsMenu);
}
+ pw.print(prefix); pw.print("mSupportAutoRotation="); pw.println(mSupportAutoRotation);
pw.print(prefix); pw.print("mUiMode="); pw.print(mUiMode);
pw.print(" mDockMode="); pw.print(mDockMode);
pw.print(" mCarDockRotation="); pw.print(mCarDockRotation);
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardServiceDelegate.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardServiceDelegate.java
index 13574624ae26..e5af716e4f71 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardServiceDelegate.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardServiceDelegate.java
@@ -109,6 +109,9 @@ public class KeyguardServiceDelegate {
if (!context.bindServiceAsUser(intent, mKeyguardConnection,
Context.BIND_AUTO_CREATE, UserHandle.OWNER)) {
if (DEBUG) Log.v(TAG, "*** Keyguard: can't bind to " + KEYGUARD_CLASS);
+ mKeyguardState.showing = false;
+ mKeyguardState.showingAndNotHidden = false;
+ mKeyguardState.secure = false;
} else {
if (DEBUG) Log.v(TAG, "*** Keyguard started");
}
diff --git a/preloaded-classes b/preloaded-classes
index 467da25887ba..342126d56b41 100644
--- a/preloaded-classes
+++ b/preloaded-classes
@@ -1428,7 +1428,6 @@ com.android.internal.util.AsyncChannel
com.android.internal.util.AsyncChannel$DeathMonitor
com.android.internal.util.FastXmlSerializer
com.android.internal.util.MemInfoReader
-com.android.internal.util.Objects
com.android.internal.util.Preconditions
com.android.internal.util.XmlUtils
com.android.internal.view.ActionBarPolicy
@@ -1633,31 +1632,21 @@ com.android.org.conscrypt.OpenSSLCipher$AES$CBC
com.android.org.conscrypt.OpenSSLCipher$AES$CBC$NoPadding
com.android.org.conscrypt.OpenSSLCipher$AES$CBC$PKCS5Padding
com.android.org.conscrypt.OpenSSLCipher$AES$CFB
-com.android.org.conscrypt.OpenSSLCipher$AES$CFB$NoPadding
-com.android.org.conscrypt.OpenSSLCipher$AES$CFB$PKCS5Padding
com.android.org.conscrypt.OpenSSLCipher$AES$CTR
-com.android.org.conscrypt.OpenSSLCipher$AES$CTR$NoPadding
-com.android.org.conscrypt.OpenSSLCipher$AES$CTR$PKCS5Padding
com.android.org.conscrypt.OpenSSLCipher$AES$ECB
com.android.org.conscrypt.OpenSSLCipher$AES$ECB$NoPadding
com.android.org.conscrypt.OpenSSLCipher$AES$ECB$PKCS5Padding
com.android.org.conscrypt.OpenSSLCipher$AES$OFB
-com.android.org.conscrypt.OpenSSLCipher$AES$OFB$NoPadding
-com.android.org.conscrypt.OpenSSLCipher$AES$OFB$PKCS5Padding
com.android.org.conscrypt.OpenSSLCipher$ARC4
com.android.org.conscrypt.OpenSSLCipher$DESEDE
com.android.org.conscrypt.OpenSSLCipher$DESEDE$CBC
com.android.org.conscrypt.OpenSSLCipher$DESEDE$CBC$NoPadding
com.android.org.conscrypt.OpenSSLCipher$DESEDE$CBC$PKCS5Padding
com.android.org.conscrypt.OpenSSLCipher$DESEDE$CFB
-com.android.org.conscrypt.OpenSSLCipher$DESEDE$CFB$NoPadding
-com.android.org.conscrypt.OpenSSLCipher$DESEDE$CFB$PKCS5Padding
com.android.org.conscrypt.OpenSSLCipher$DESEDE$ECB
com.android.org.conscrypt.OpenSSLCipher$DESEDE$ECB$NoPadding
com.android.org.conscrypt.OpenSSLCipher$DESEDE$ECB$PKCS5Padding
com.android.org.conscrypt.OpenSSLCipher$DESEDE$OFB
-com.android.org.conscrypt.OpenSSLCipher$DESEDE$OFB$NoPadding
-com.android.org.conscrypt.OpenSSLCipher$DESEDE$OFB$PKCS5Padding
com.android.org.conscrypt.OpenSSLCipherRSA
com.android.org.conscrypt.OpenSSLCipherRSA$PKCS1
com.android.org.conscrypt.OpenSSLCipherRSA$Raw
@@ -2034,6 +2023,7 @@ java.security.cert.CertSelector
java.security.cert.Certificate
java.security.cert.CertificateFactory
java.security.cert.CertificateFactorySpi
+java.security.cert.CertStoreParameters
java.security.cert.PKIXCertPathChecker
java.security.cert.PKIXCertPathValidatorResult
java.security.cert.PKIXParameters
@@ -2308,6 +2298,7 @@ javax.crypto.CipherSpi
javax.crypto.KeyAgreementSpi
javax.crypto.MacSpi
javax.crypto.SecretKey
+javax.crypto.spec.GCMParameterSpec
javax.crypto.spec.IvParameterSpec
javax.crypto.spec.SecretKeySpec
javax.microedition.khronos.egl.EGL
diff --git a/services/Android.mk b/services/Android.mk
new file mode 100644
index 000000000000..5260540bb44b
--- /dev/null
+++ b/services/Android.mk
@@ -0,0 +1,64 @@
+LOCAL_PATH:= $(call my-dir)
+
+# merge all required services into one jar
+# ============================================================
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := services
+
+LOCAL_SRC_FILES := $(call all-java-files-under,java)
+
+# Uncomment to enable output of certain warnings (deprecated, unchecked)
+# LOCAL_JAVACFLAGS := -Xlint
+
+# Services that will be built as part of services.jar
+# These should map to directory names relative to this
+# Android.mk.
+services := \
+ core \
+ accessibility \
+ appwidget \
+ backup \
+ devicepolicy \
+ print \
+ usb
+
+# The convention is to name each service module 'services.$(module_name)'
+LOCAL_STATIC_JAVA_LIBRARIES := $(addprefix services.,$(services))
+
+include $(BUILD_JAVA_LIBRARY)
+
+# native library
+# =============================================================
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=
+LOCAL_SHARED_LIBRARIES :=
+
+# include all the jni subdirs to collect their sources
+include $(wildcard $(LOCAL_PATH)/*/jni/Android.mk)
+
+LOCAL_CFLAGS += -DEGL_EGLEXT_PROTOTYPES -DGL_GLEXT_PROTOTYPES
+
+ifeq ($(WITH_MALLOC_LEAK_CHECK),true)
+ LOCAL_CFLAGS += -DMALLOC_LEAK_CHECK
+endif
+
+LOCAL_MODULE:= libandroid_servers
+
+include $(BUILD_SHARED_LIBRARY)
+
+# =============================================================
+
+ifeq (,$(ONE_SHOT_MAKEFILE))
+# A full make is happening, so make everything.
+include $(call all-makefiles-under,$(LOCAL_PATH))
+else
+# If we ran an mm[m] command, we still want to build the individual
+# services that we depend on. This differs from the above condition
+# by only including service makefiles and not any tests or other
+# modules.
+include $(patsubst %,$(LOCAL_PATH)/%/Android.mk,$(services))
+endif
+
diff --git a/services/accessibility/Android.mk b/services/accessibility/Android.mk
new file mode 100644
index 000000000000..d98fc281dfb7
--- /dev/null
+++ b/services/accessibility/Android.mk
@@ -0,0 +1,10 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := services.accessibility
+
+LOCAL_SRC_FILES += \
+ $(call all-java-files-under,java)
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/services/java/com/android/server/accessibility/AccessibilityInputFilter.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java
index 9e893da02c70..9e893da02c70 100644
--- a/services/java/com/android/server/accessibility/AccessibilityInputFilter.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java
diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index ccac0d32ea7b..ccac0d32ea7b 100644
--- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
diff --git a/services/java/com/android/server/accessibility/EventStreamTransformation.java b/services/accessibility/java/com/android/server/accessibility/EventStreamTransformation.java
index 8c93e7b4440d..8c93e7b4440d 100644
--- a/services/java/com/android/server/accessibility/EventStreamTransformation.java
+++ b/services/accessibility/java/com/android/server/accessibility/EventStreamTransformation.java
diff --git a/services/java/com/android/server/accessibility/GestureUtils.java b/services/accessibility/java/com/android/server/accessibility/GestureUtils.java
index b68b09f8d0a0..b68b09f8d0a0 100644
--- a/services/java/com/android/server/accessibility/GestureUtils.java
+++ b/services/accessibility/java/com/android/server/accessibility/GestureUtils.java
diff --git a/services/java/com/android/server/accessibility/ScreenMagnifier.java b/services/accessibility/java/com/android/server/accessibility/ScreenMagnifier.java
index 5f12cf41c1b5..5f12cf41c1b5 100644
--- a/services/java/com/android/server/accessibility/ScreenMagnifier.java
+++ b/services/accessibility/java/com/android/server/accessibility/ScreenMagnifier.java
diff --git a/services/java/com/android/server/accessibility/TouchExplorer.java b/services/accessibility/java/com/android/server/accessibility/TouchExplorer.java
index 43f12ebedde1..43f12ebedde1 100644
--- a/services/java/com/android/server/accessibility/TouchExplorer.java
+++ b/services/accessibility/java/com/android/server/accessibility/TouchExplorer.java
diff --git a/services/appwidget/Android.mk b/services/appwidget/Android.mk
new file mode 100644
index 000000000000..ca38f2f6449d
--- /dev/null
+++ b/services/appwidget/Android.mk
@@ -0,0 +1,10 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := services.appwidget
+
+LOCAL_SRC_FILES += \
+ $(call all-java-files-under,java)
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetService.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetService.java
new file mode 100644
index 000000000000..e20867762daa
--- /dev/null
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetService.java
@@ -0,0 +1,384 @@
+/*
+ * 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.
+ */
+
+package com.android.server.appwidget;
+
+import android.app.ActivityManager;
+import android.appwidget.AppWidgetProviderInfo;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.os.Binder;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.os.UserHandle;
+import android.util.Slog;
+import android.util.SparseArray;
+import android.widget.RemoteViews;
+
+import com.android.internal.appwidget.IAppWidgetHost;
+import com.android.internal.appwidget.IAppWidgetService;
+import com.android.internal.os.BackgroundThread;
+import com.android.internal.util.IndentingPrintWriter;
+import com.android.server.SystemService;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.util.List;
+import java.util.Locale;
+
+
+/**
+ * SystemService that publishes an IAppWidgetService.
+ */
+public class AppWidgetService extends SystemService {
+
+ static final String TAG = "AppWidgetService";
+
+ final Context mContext;
+ final Handler mSaveStateHandler;
+
+ final SparseArray<AppWidgetServiceImpl> mAppWidgetServices;
+
+ public AppWidgetService(Context context) {
+ super(context);
+ mContext = context;
+
+ mSaveStateHandler = BackgroundThread.getHandler();
+
+ mAppWidgetServices = new SparseArray<AppWidgetServiceImpl>(5);
+ AppWidgetServiceImpl primary = new AppWidgetServiceImpl(context, 0, mSaveStateHandler);
+ mAppWidgetServices.append(0, primary);
+ }
+
+ @Override
+ public void onStart() {
+ publishBinderService(Context.APPWIDGET_SERVICE, mServiceImpl);
+ }
+
+ @Override
+ public void onBootPhase(int phase) {
+ if (phase == PHASE_THIRD_PARTY_APPS_CAN_START) {
+ mServiceImpl.systemRunning(isSafeMode());
+ }
+ }
+
+ private final AppWidgetServiceStub mServiceImpl = new AppWidgetServiceStub();
+
+ private class AppWidgetServiceStub extends IAppWidgetService.Stub {
+
+ private boolean mSafeMode;
+ private Locale mLocale;
+ private PackageManager mPackageManager;
+
+ public void systemRunning(boolean safeMode) {
+ mSafeMode = safeMode;
+
+ mAppWidgetServices.get(0).systemReady(safeMode);
+
+ // Register for the boot completed broadcast, so we can send the
+ // ENABLE broacasts. If we try to send them now, they time out,
+ // because the system isn't ready to handle them yet.
+ mContext.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL,
+ new IntentFilter(Intent.ACTION_BOOT_COMPLETED), null, null);
+
+ // Register for configuration changes so we can update the names
+ // of the widgets when the locale changes.
+ mContext.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL,
+ new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED), null, null);
+
+ // Register for broadcasts about package install, etc., so we can
+ // update the provider list.
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_PACKAGE_ADDED);
+ filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
+ filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
+ filter.addDataScheme("package");
+ mContext.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL,
+ filter, null, null);
+ // Register for events related to sdcard installation.
+ IntentFilter sdFilter = new IntentFilter();
+ sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE);
+ sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE);
+ mContext.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL,
+ sdFilter, null, null);
+
+ IntentFilter userFilter = new IntentFilter();
+ userFilter.addAction(Intent.ACTION_USER_REMOVED);
+ userFilter.addAction(Intent.ACTION_USER_STOPPING);
+ mContext.registerReceiver(new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (Intent.ACTION_USER_REMOVED.equals(intent.getAction())) {
+ onUserRemoved(intent.getIntExtra(Intent.EXTRA_USER_HANDLE,
+ UserHandle.USER_NULL));
+ } else if (Intent.ACTION_USER_STOPPING.equals(intent.getAction())) {
+ onUserStopping(intent.getIntExtra(Intent.EXTRA_USER_HANDLE,
+ UserHandle.USER_NULL));
+ }
+ }
+ }, userFilter);
+ }
+
+ @Override
+ public int allocateAppWidgetId(String packageName, int hostId, int userId)
+ throws RemoteException {
+ return getImplForUser(userId).allocateAppWidgetId(packageName, hostId);
+ }
+
+ @Override
+ public int[] getAppWidgetIdsForHost(int hostId, int userId) throws RemoteException {
+ return getImplForUser(userId).getAppWidgetIdsForHost(hostId);
+ }
+
+ @Override
+ public void deleteAppWidgetId(int appWidgetId, int userId) throws RemoteException {
+ getImplForUser(userId).deleteAppWidgetId(appWidgetId);
+ }
+
+ @Override
+ public void deleteHost(int hostId, int userId) throws RemoteException {
+ getImplForUser(userId).deleteHost(hostId);
+ }
+
+ @Override
+ public void deleteAllHosts(int userId) throws RemoteException {
+ getImplForUser(userId).deleteAllHosts();
+ }
+
+ @Override
+ public void bindAppWidgetId(int appWidgetId, ComponentName provider, Bundle options,
+ int userId) throws RemoteException {
+ getImplForUser(userId).bindAppWidgetId(appWidgetId, provider, options);
+ }
+
+ @Override
+ public boolean bindAppWidgetIdIfAllowed(
+ String packageName, int appWidgetId, ComponentName provider, Bundle options,
+ int userId) throws RemoteException {
+ return getImplForUser(userId).bindAppWidgetIdIfAllowed(
+ packageName, appWidgetId, provider, options);
+ }
+
+ @Override
+ public boolean hasBindAppWidgetPermission(String packageName, int userId)
+ throws RemoteException {
+ return getImplForUser(userId).hasBindAppWidgetPermission(packageName);
+ }
+
+ @Override
+ public void setBindAppWidgetPermission(String packageName, boolean permission, int userId)
+ throws RemoteException {
+ getImplForUser(userId).setBindAppWidgetPermission(packageName, permission);
+ }
+
+ @Override
+ public void bindRemoteViewsService(int appWidgetId, Intent intent, IBinder connection,
+ int userId) throws RemoteException {
+ getImplForUser(userId).bindRemoteViewsService(appWidgetId, intent, connection);
+ }
+
+ @Override
+ public int[] startListening(IAppWidgetHost host, String packageName, int hostId,
+ List<RemoteViews> updatedViews, int userId) throws RemoteException {
+ return getImplForUser(userId).startListening(host, packageName, hostId, updatedViews);
+ }
+
+ public void onUserRemoved(int userId) {
+ if (userId < 1) return;
+ synchronized (mAppWidgetServices) {
+ AppWidgetServiceImpl impl = mAppWidgetServices.get(userId);
+ mAppWidgetServices.remove(userId);
+
+ if (impl == null) {
+ AppWidgetServiceImpl.getSettingsFile(userId).delete();
+ } else {
+ impl.onUserRemoved();
+ }
+ }
+ }
+
+ public void onUserStopping(int userId) {
+ if (userId < 1) return;
+ synchronized (mAppWidgetServices) {
+ AppWidgetServiceImpl impl = mAppWidgetServices.get(userId);
+ if (impl != null) {
+ mAppWidgetServices.remove(userId);
+ impl.onUserStopping();
+ }
+ }
+ }
+
+ private void checkPermission(int userId) {
+ int realUserId = ActivityManager.handleIncomingUser(
+ Binder.getCallingPid(),
+ Binder.getCallingUid(),
+ userId,
+ false, /* allowAll */
+ true, /* requireFull */
+ this.getClass().getSimpleName(),
+ this.getClass().getPackage().getName());
+ }
+
+ private AppWidgetServiceImpl getImplForUser(int userId) {
+ checkPermission(userId);
+ boolean sendInitial = false;
+ AppWidgetServiceImpl service;
+ synchronized (mAppWidgetServices) {
+ service = mAppWidgetServices.get(userId);
+ if (service == null) {
+ Slog.i(TAG, "Unable to find AppWidgetServiceImpl for user " + userId
+ + ", adding");
+ // TODO: Verify that it's a valid user
+ service = new AppWidgetServiceImpl(mContext, userId, mSaveStateHandler);
+ service.systemReady(mSafeMode);
+ // Assume that BOOT_COMPLETED was received, as this is a non-primary user.
+ mAppWidgetServices.append(userId, service);
+ sendInitial = true;
+ }
+ }
+ if (sendInitial) {
+ service.sendInitialBroadcasts();
+ }
+ return service;
+ }
+
+ @Override
+ public int[] getAppWidgetIds(ComponentName provider, int userId) throws RemoteException {
+ return getImplForUser(userId).getAppWidgetIds(provider);
+ }
+
+ @Override
+ public AppWidgetProviderInfo getAppWidgetInfo(int appWidgetId, int userId)
+ throws RemoteException {
+ return getImplForUser(userId).getAppWidgetInfo(appWidgetId);
+ }
+
+ @Override
+ public RemoteViews getAppWidgetViews(int appWidgetId, int userId) throws RemoteException {
+ return getImplForUser(userId).getAppWidgetViews(appWidgetId);
+ }
+
+ @Override
+ public void updateAppWidgetOptions(int appWidgetId, Bundle options, int userId) {
+ getImplForUser(userId).updateAppWidgetOptions(appWidgetId, options);
+ }
+
+ @Override
+ public Bundle getAppWidgetOptions(int appWidgetId, int userId) {
+ return getImplForUser(userId).getAppWidgetOptions(appWidgetId);
+ }
+
+ @Override
+ public List<AppWidgetProviderInfo> getInstalledProviders(int categoryFilter, int userId)
+ throws RemoteException {
+ return getImplForUser(userId).getInstalledProviders(categoryFilter);
+ }
+
+ @Override
+ public void notifyAppWidgetViewDataChanged(int[] appWidgetIds, int viewId, int userId)
+ throws RemoteException {
+ getImplForUser(userId).notifyAppWidgetViewDataChanged(
+ appWidgetIds, viewId);
+ }
+
+ @Override
+ public void partiallyUpdateAppWidgetIds(int[] appWidgetIds, RemoteViews views, int userId)
+ throws RemoteException {
+ getImplForUser(userId).partiallyUpdateAppWidgetIds(
+ appWidgetIds, views);
+ }
+
+ @Override
+ public void stopListening(int hostId, int userId) throws RemoteException {
+ getImplForUser(userId).stopListening(hostId);
+ }
+
+ @Override
+ public void unbindRemoteViewsService(int appWidgetId, Intent intent, int userId)
+ throws RemoteException {
+ getImplForUser(userId).unbindRemoteViewsService(
+ appWidgetId, intent);
+ }
+
+ @Override
+ public void updateAppWidgetIds(int[] appWidgetIds, RemoteViews views, int userId)
+ throws RemoteException {
+ getImplForUser(userId).updateAppWidgetIds(appWidgetIds, views);
+ }
+
+ @Override
+ public void updateAppWidgetProvider(ComponentName provider, RemoteViews views, int userId)
+ throws RemoteException {
+ getImplForUser(userId).updateAppWidgetProvider(provider, views);
+ }
+
+ @Override
+ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG);
+
+ // Dump the state of all the app widget providers
+ synchronized (mAppWidgetServices) {
+ IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ");
+ for (int i = 0; i < mAppWidgetServices.size(); i++) {
+ pw.println("User: " + mAppWidgetServices.keyAt(i));
+ ipw.increaseIndent();
+ AppWidgetServiceImpl service = mAppWidgetServices.valueAt(i);
+ service.dump(fd, ipw, args);
+ ipw.decreaseIndent();
+ }
+ }
+ }
+
+ BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ // Slog.d(TAG, "received " + action);
+ if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
+ int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL);
+ if (userId >= 0) {
+ getImplForUser(userId).sendInitialBroadcasts();
+ } else {
+ Slog.w(TAG, "Incorrect user handle supplied in " + intent);
+ }
+ } else if (Intent.ACTION_CONFIGURATION_CHANGED.equals(action)) {
+ for (int i = 0; i < mAppWidgetServices.size(); i++) {
+ AppWidgetServiceImpl service = mAppWidgetServices.valueAt(i);
+ service.onConfigurationChanged();
+ }
+ } else {
+ int sendingUser = getSendingUserId();
+ if (sendingUser == UserHandle.USER_ALL) {
+ for (int i = 0; i < mAppWidgetServices.size(); i++) {
+ AppWidgetServiceImpl service = mAppWidgetServices.valueAt(i);
+ service.onBroadcastReceived(intent);
+ }
+ } else {
+ AppWidgetServiceImpl service = mAppWidgetServices.get(sendingUser);
+ if (service != null) {
+ service.onBroadcastReceived(intent);
+ }
+ }
+ }
+ }
+ };
+ }
+}
diff --git a/services/java/com/android/server/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
index 69ae846597f7..98dead312469 100644
--- a/services/java/com/android/server/AppWidgetServiceImpl.java
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server;
+package com.android.server.appwidget;
import android.app.AlarmManager;
import android.app.AppGlobals;
diff --git a/services/backup/Android.mk b/services/backup/Android.mk
new file mode 100644
index 000000000000..3e686d122668
--- /dev/null
+++ b/services/backup/Android.mk
@@ -0,0 +1,12 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := services.backup
+
+LOCAL_SRC_FILES += \
+ $(call all-java-files-under,java)
+
+LOCAL_JAVA_LIBRARIES := services.core
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/services/java/com/android/server/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java
index 6d65a7022393..b3571d722154 100644
--- a/services/java/com/android/server/BackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/BackupManagerService.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server;
+package com.android.server.backup;
import android.app.ActivityManagerNative;
import android.app.AlarmManager;
@@ -83,7 +83,8 @@ import com.android.internal.backup.BackupConstants;
import com.android.internal.backup.IBackupTransport;
import com.android.internal.backup.IObbBackupService;
import com.android.server.EventLogTags;
-import com.android.server.PackageManagerBackupAgent.Metadata;
+import com.android.server.SystemService;
+import com.android.server.backup.PackageManagerBackupAgent.Metadata;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
@@ -135,7 +136,8 @@ import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;
-class BackupManagerService extends IBackupManager.Stub {
+public class BackupManagerService extends IBackupManager.Stub {
+
private static final String TAG = "BackupManagerService";
private static final boolean DEBUG = true;
private static final boolean MORE_DEBUG = false;
@@ -276,6 +278,20 @@ class BackupManagerService extends IBackupManager.Stub {
// Watch the device provisioning operation during setup
ContentObserver mProvisionedObserver;
+ public static final class Lifecycle extends SystemService {
+ private final BackupManagerService mService;
+
+ public Lifecycle(Context context) {
+ super(context);
+ mService = new BackupManagerService(context);
+ }
+
+ @Override
+ public void onStart() {
+ publishBinderService(Context.BACKUP_SERVICE, mService);
+ }
+ }
+
class ProvisionedObserver extends ContentObserver {
public ProvisionedObserver(Handler handler) {
super(handler);
@@ -1206,7 +1222,8 @@ class BackupManagerService extends IBackupManager.Stub {
// First, on an encrypted device we require matching the device pw
final boolean isEncrypted;
try {
- isEncrypted = (mMountService.getEncryptionState() != MountService.ENCRYPTION_STATE_NONE);
+ isEncrypted = (mMountService.getEncryptionState() !=
+ IMountService.ENCRYPTION_STATE_NONE);
if (isEncrypted) {
if (DEBUG) {
Slog.i(TAG, "Device encrypted; verifying against device data pw");
@@ -5523,7 +5540,8 @@ class BackupManagerService extends IBackupManager.Stub {
boolean isEncrypted;
try {
- isEncrypted = (mMountService.getEncryptionState() != MountService.ENCRYPTION_STATE_NONE);
+ isEncrypted = (mMountService.getEncryptionState() !=
+ IMountService.ENCRYPTION_STATE_NONE);
if (isEncrypted) Slog.w(TAG, "Device is encrypted; forcing enc password");
} catch (RemoteException e) {
// couldn't contact the mount service; fail "safe" and assume encryption
@@ -6181,7 +6199,7 @@ class BackupManagerService extends IBackupManager.Stub {
}
}
- // clean up the BackupManagerService side of the bookkeeping
+ // clean up the BackupManagerImpl side of the bookkeeping
// and cancel any pending timeout message
mBackupManager.clearRestoreSession(mSession);
}
diff --git a/services/java/com/android/server/PackageManagerBackupAgent.java b/services/backup/java/com/android/server/backup/PackageManagerBackupAgent.java
index 77bddb0717ec..495da886fa65 100644
--- a/services/java/com/android/server/PackageManagerBackupAgent.java
+++ b/services/backup/java/com/android/server/backup/PackageManagerBackupAgent.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server;
+package com.android.server.backup;
import android.app.backup.BackupAgent;
import android.app.backup.BackupDataInput;
diff --git a/services/java/com/android/server/SystemBackupAgent.java b/services/backup/java/com/android/server/backup/SystemBackupAgent.java
index 8cf273dee8cc..26e2e2ac356c 100644
--- a/services/java/com/android/server/SystemBackupAgent.java
+++ b/services/backup/java/com/android/server/backup/SystemBackupAgent.java
@@ -14,9 +14,10 @@
* limitations under the License.
*/
-package com.android.server;
+package com.android.server.backup;
+import android.app.IWallpaperManager;
import android.app.backup.BackupDataInput;
import android.app.backup.BackupDataOutput;
import android.app.backup.BackupAgentHelper;
@@ -26,11 +27,11 @@ import android.app.backup.WallpaperBackupHelper;
import android.content.Context;
import android.os.Environment;
import android.os.ParcelFileDescriptor;
+import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.util.Slog;
-
import java.io.File;
import java.io.IOException;
@@ -63,16 +64,23 @@ public class SystemBackupAgent extends BackupAgentHelper {
public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data,
ParcelFileDescriptor newState) throws IOException {
// We only back up the data under the current "wallpaper" schema with metadata
- WallpaperManagerService wallpaper = (WallpaperManagerService)ServiceManager.getService(
+ IWallpaperManager wallpaper = (IWallpaperManager)ServiceManager.getService(
Context.WALLPAPER_SERVICE);
String[] files = new String[] { WALLPAPER_IMAGE, WALLPAPER_INFO };
String[] keys = new String[] { WALLPAPER_IMAGE_KEY, WALLPAPER_INFO_KEY };
- if (wallpaper != null && wallpaper.getName() != null && wallpaper.getName().length() > 0) {
- // When the wallpaper has a name, back up the info by itself.
- // TODO: Don't rely on the innards of the service object like this!
- // TODO: Send a delete for any stored wallpaper image in this case?
- files = new String[] { WALLPAPER_INFO };
- keys = new String[] { WALLPAPER_INFO_KEY };
+ if (wallpaper != null) {
+ try {
+ final String wallpaperName = wallpaper.getName();
+ if (wallpaperName != null && wallpaperName.length() > 0) {
+ // When the wallpaper has a name, back up the info by itself.
+ // TODO: Don't rely on the innards of the service object like this!
+ // TODO: Send a delete for any stored wallpaper image in this case?
+ files = new String[] { WALLPAPER_INFO };
+ keys = new String[] { WALLPAPER_INFO_KEY };
+ }
+ } catch (RemoteException re) {
+ Slog.e(TAG, "Couldn't get wallpaper name\n" + re);
+ }
}
addHelper("wallpaper", new WallpaperBackupHelper(SystemBackupAgent.this, files, keys));
super.onBackup(oldState, data, newState);
@@ -109,9 +117,15 @@ public class SystemBackupAgent extends BackupAgentHelper {
try {
super.onRestore(data, appVersionCode, newState);
- WallpaperManagerService wallpaper = (WallpaperManagerService)ServiceManager.getService(
+ IWallpaperManager wallpaper = (IWallpaperManager) ServiceManager.getService(
Context.WALLPAPER_SERVICE);
- wallpaper.settingsRestored();
+ if (wallpaper != null) {
+ try {
+ wallpaper.settingsRestored();
+ } catch (RemoteException re) {
+ Slog.e(TAG, "Couldn't restore settings\n" + re);
+ }
+ }
} catch (IOException ex) {
// If there was a failure, delete everything for the wallpaper, this is too aggressive,
// but this is hopefully a rare failure.
@@ -149,10 +163,16 @@ public class SystemBackupAgent extends BackupAgentHelper {
FullBackup.restoreFile(data, size, type, mode, mtime, outFile);
if (restoredWallpaper) {
- WallpaperManagerService wallpaper =
- (WallpaperManagerService)ServiceManager.getService(
+ IWallpaperManager wallpaper =
+ (IWallpaperManager)ServiceManager.getService(
Context.WALLPAPER_SERVICE);
- wallpaper.settingsRestored();
+ if (wallpaper != null) {
+ try {
+ wallpaper.settingsRestored();
+ } catch (RemoteException re) {
+ Slog.e(TAG, "Couldn't restore settings\n" + re);
+ }
+ }
}
} catch (IOException e) {
if (restoredWallpaper) {
diff --git a/services/core/Android.mk b/services/core/Android.mk
new file mode 100644
index 000000000000..5c4520170fd8
--- /dev/null
+++ b/services/core/Android.mk
@@ -0,0 +1,14 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := services.core
+
+LOCAL_SRC_FILES += \
+ $(call all-java-files-under,java) \
+ java/com/android/server/EventLogTags.logtags \
+ java/com/android/server/am/EventLogTags.logtags
+
+LOCAL_JAVA_LIBRARIES := android.policy telephony-common
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/services/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java
index 5ae9a6df01ad..96063d577526 100644
--- a/services/java/com/android/server/AlarmManagerService.java
+++ b/services/core/java/com/android/server/AlarmManagerService.java
@@ -31,6 +31,7 @@ import android.net.Uri;
import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
+import android.os.IBinder;
import android.os.Message;
import android.os.PowerManager;
import android.os.SystemClock;
@@ -64,54 +65,51 @@ import static android.app.AlarmManager.ELAPSED_REALTIME;
import com.android.internal.util.LocalLog;
-class AlarmManagerService extends IAlarmManager.Stub {
+class AlarmManagerService extends SystemService {
// The threshold for how long an alarm can be late before we print a
// warning message. The time duration is in milliseconds.
private static final long LATE_ALARM_THRESHOLD = 10 * 1000;
private static final int RTC_WAKEUP_MASK = 1 << RTC_WAKEUP;
private static final int RTC_MASK = 1 << RTC;
- private static final int ELAPSED_REALTIME_WAKEUP_MASK = 1 << ELAPSED_REALTIME_WAKEUP;
+ private static final int ELAPSED_REALTIME_WAKEUP_MASK = 1 << ELAPSED_REALTIME_WAKEUP;
private static final int ELAPSED_REALTIME_MASK = 1 << ELAPSED_REALTIME;
- private static final int TIME_CHANGED_MASK = 1 << 16;
- private static final int IS_WAKEUP_MASK = RTC_WAKEUP_MASK|ELAPSED_REALTIME_WAKEUP_MASK;
+ static final int TIME_CHANGED_MASK = 1 << 16;
+ static final int IS_WAKEUP_MASK = RTC_WAKEUP_MASK|ELAPSED_REALTIME_WAKEUP_MASK;
// Mask for testing whether a given alarm type is wakeup vs non-wakeup
- private static final int TYPE_NONWAKEUP_MASK = 0x1; // low bit => non-wakeup
-
- private static final String TAG = "AlarmManager";
- private static final String ClockReceiver_TAG = "ClockReceiver";
- private static final boolean localLOGV = false;
- private static final boolean DEBUG_BATCH = localLOGV || false;
- private static final boolean DEBUG_VALIDATE = localLOGV || false;
- private static final int ALARM_EVENT = 1;
- private static final String TIMEZONE_PROPERTY = "persist.sys.timezone";
+ static final int TYPE_NONWAKEUP_MASK = 0x1; // low bit => non-wakeup
+
+ static final String TAG = "AlarmManager";
+ static final String ClockReceiver_TAG = "ClockReceiver";
+ static final boolean localLOGV = false;
+ static final boolean DEBUG_BATCH = localLOGV || false;
+ static final boolean DEBUG_VALIDATE = localLOGV || false;
+ static final int ALARM_EVENT = 1;
+ static final String TIMEZONE_PROPERTY = "persist.sys.timezone";
- private static final Intent mBackgroundIntent
+ static final Intent mBackgroundIntent
= new Intent().addFlags(Intent.FLAG_FROM_BACKGROUND);
- private static final IncreasingTimeOrder sIncreasingTimeOrder = new IncreasingTimeOrder();
+ static final IncreasingTimeOrder sIncreasingTimeOrder = new IncreasingTimeOrder();
- private static final boolean WAKEUP_STATS = false;
+ static final boolean WAKEUP_STATS = false;
- private final Context mContext;
+ final LocalLog mLog = new LocalLog(TAG);
- private final LocalLog mLog = new LocalLog(TAG);
+ final Object mLock = new Object();
- private Object mLock = new Object();
-
- private int mDescriptor;
+ long mNativeData;
private long mNextWakeup;
private long mNextNonWakeup;
- private int mBroadcastRefCount = 0;
- private PowerManager.WakeLock mWakeLock;
- private ArrayList<InFlight> mInFlight = new ArrayList<InFlight>();
- private final AlarmThread mWaitThread = new AlarmThread();
- private final AlarmHandler mHandler = new AlarmHandler();
- private ClockReceiver mClockReceiver;
+ int mBroadcastRefCount = 0;
+ PowerManager.WakeLock mWakeLock;
+ ArrayList<InFlight> mInFlight = new ArrayList<InFlight>();
+ final AlarmHandler mHandler = new AlarmHandler();
+ ClockReceiver mClockReceiver;
private UninstallReceiver mUninstallReceiver;
- private final ResultReceiver mResultReceiver = new ResultReceiver();
- private final PendingIntent mTimeTickSender;
- private final PendingIntent mDateChangeSender;
+ final ResultReceiver mResultReceiver = new ResultReceiver();
+ PendingIntent mTimeTickSender;
+ PendingIntent mDateChangeSender;
class WakeupEvent {
public long when;
@@ -125,8 +123,8 @@ class AlarmManagerService extends IAlarmManager.Stub {
}
}
- private final LinkedList<WakeupEvent> mRecentWakeups = new LinkedList<WakeupEvent>();
- private final long RECENT_WAKEUP_PERIOD = 1000L * 60 * 60 * 24; // one day
+ final LinkedList<WakeupEvent> mRecentWakeups = new LinkedList<WakeupEvent>();
+ final long RECENT_WAKEUP_PERIOD = 1000L * 60 * 60 * 24; // one day
static final class Batch {
long start; // These endpoints are always in ELAPSED
@@ -317,9 +315,13 @@ class AlarmManagerService extends IAlarmManager.Stub {
}
// minimum recurrence period or alarm futurity for us to be able to fuzz it
- private static final long MIN_FUZZABLE_INTERVAL = 10000;
- private static final BatchTimeOrder sBatchOrder = new BatchTimeOrder();
- private final ArrayList<Batch> mAlarmBatches = new ArrayList<Batch>();
+ static final long MIN_FUZZABLE_INTERVAL = 10000;
+ static final BatchTimeOrder sBatchOrder = new BatchTimeOrder();
+ final ArrayList<Batch> mAlarmBatches = new ArrayList<Batch>();
+
+ public AlarmManagerService(Context context) {
+ super(context);
+ }
static long convertToElapsed(long when, int type) {
final boolean isRtc = (type == RTC || type == RTC_WAKEUP);
@@ -403,7 +405,7 @@ class AlarmManagerService extends IAlarmManager.Stub {
}
}
- private static final class InFlight extends Intent {
+ static final class InFlight extends Intent {
final PendingIntent mPendingIntent;
final WorkSource mWorkSource;
final Pair<String, ComponentName> mTarget;
@@ -427,7 +429,7 @@ class AlarmManagerService extends IAlarmManager.Stub {
}
}
- private static final class FilterStats {
+ static final class FilterStats {
final BroadcastStats mBroadcastStats;
final Pair<String, ComponentName> mTarget;
@@ -443,7 +445,7 @@ class AlarmManagerService extends IAlarmManager.Stub {
}
}
- private static final class BroadcastStats {
+ static final class BroadcastStats {
final String mPackageName;
long aggregateTime;
@@ -459,68 +461,101 @@ class AlarmManagerService extends IAlarmManager.Stub {
}
}
- private final HashMap<String, BroadcastStats> mBroadcastStats
+ final HashMap<String, BroadcastStats> mBroadcastStats
= new HashMap<String, BroadcastStats>();
- public AlarmManagerService(Context context) {
- mContext = context;
- mDescriptor = init();
+ @Override
+ public void onStart() {
+ mNativeData = init();
mNextWakeup = mNextNonWakeup = 0;
// We have to set current TimeZone info to kernel
// because kernel doesn't keep this after reboot
- String tz = SystemProperties.get(TIMEZONE_PROPERTY);
- if (tz != null) {
- setTimeZone(tz);
- }
+ setTimeZoneImpl(SystemProperties.get(TIMEZONE_PROPERTY));
- PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
+ PowerManager pm = (PowerManager) getContext().getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
- mTimeTickSender = PendingIntent.getBroadcastAsUser(context, 0,
+ mTimeTickSender = PendingIntent.getBroadcastAsUser(getContext(), 0,
new Intent(Intent.ACTION_TIME_TICK).addFlags(
Intent.FLAG_RECEIVER_REGISTERED_ONLY
| Intent.FLAG_RECEIVER_FOREGROUND), 0,
UserHandle.ALL);
Intent intent = new Intent(Intent.ACTION_DATE_CHANGED);
intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);
- mDateChangeSender = PendingIntent.getBroadcastAsUser(context, 0, intent,
+ mDateChangeSender = PendingIntent.getBroadcastAsUser(getContext(), 0, intent,
Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT, UserHandle.ALL);
// now that we have initied the driver schedule the alarm
- mClockReceiver= new ClockReceiver();
+ mClockReceiver = new ClockReceiver();
mClockReceiver.scheduleTimeTickEvent();
mClockReceiver.scheduleDateChangedEvent();
mUninstallReceiver = new UninstallReceiver();
- if (mDescriptor != -1) {
- mWaitThread.start();
+ if (mNativeData != 0) {
+ AlarmThread waitThread = new AlarmThread();
+ waitThread.start();
} else {
Slog.w(TAG, "Failed to open alarm driver. Falling back to a handler.");
}
+
+ publishBinderService(Context.ALARM_SERVICE, mService);
}
-
+
+ @Override
protected void finalize() throws Throwable {
try {
- close(mDescriptor);
+ close(mNativeData);
} finally {
super.finalize();
}
}
- @Override
- public void set(int type, long triggerAtTime, long windowLength, long interval,
- PendingIntent operation, WorkSource workSource) {
- if (workSource != null) {
- mContext.enforceCallingPermission(
- android.Manifest.permission.UPDATE_DEVICE_STATS,
- "AlarmManager.set");
+ void setTimeZoneImpl(String tz) {
+ if (TextUtils.isEmpty(tz)) {
+ return;
}
- set(type, triggerAtTime, windowLength, interval, operation, false, workSource);
+ TimeZone zone = TimeZone.getTimeZone(tz);
+ // Prevent reentrant calls from stepping on each other when writing
+ // the time zone property
+ boolean timeZoneWasChanged = false;
+ synchronized (this) {
+ String current = SystemProperties.get(TIMEZONE_PROPERTY);
+ if (current == null || !current.equals(zone.getID())) {
+ if (localLOGV) {
+ Slog.v(TAG, "timezone changed: " + current + ", new=" + zone.getID());
+ }
+ timeZoneWasChanged = true;
+ SystemProperties.set(TIMEZONE_PROPERTY, zone.getID());
+ }
+
+ // Update the kernel timezone information
+ // Kernel tracks time offsets as 'minutes west of GMT'
+ int gmtOffset = zone.getOffset(System.currentTimeMillis());
+ setKernelTimezone(mNativeData, -(gmtOffset / 60000));
+ }
+
+ TimeZone.setDefault(null);
+
+ if (timeZoneWasChanged) {
+ Intent intent = new Intent(Intent.ACTION_TIMEZONE_CHANGED);
+ intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);
+ intent.putExtra("time-zone", zone.getID());
+ getContext().sendBroadcastAsUser(intent, UserHandle.ALL);
+ }
}
- public void set(int type, long triggerAtTime, long windowLength, long interval,
+ void removeImpl(PendingIntent operation) {
+ if (operation == null) {
+ return;
+ }
+ synchronized (mLock) {
+ removeLocked(operation);
+ }
+ }
+
+ void setImpl(int type, long triggerAtTime, long windowLength, long interval,
PendingIntent operation, boolean isStandalone, WorkSource workSource) {
if (operation == null) {
Slog.w(TAG, "set/setRepeating ignored because there is no intent");
@@ -606,231 +641,64 @@ class AlarmManagerService extends IAlarmManager.Stub {
rescheduleKernelAlarmsLocked();
}
- private void logBatchesLocked() {
- ByteArrayOutputStream bs = new ByteArrayOutputStream(2048);
- PrintWriter pw = new PrintWriter(bs);
- final long nowRTC = System.currentTimeMillis();
- final long nowELAPSED = SystemClock.elapsedRealtime();
- final int NZ = mAlarmBatches.size();
- for (int iz = 0; iz < NZ; iz++) {
- Batch bz = mAlarmBatches.get(iz);
- pw.append("Batch "); pw.print(iz); pw.append(": "); pw.println(bz);
- dumpAlarmList(pw, bz.alarms, " ", nowELAPSED, nowRTC);
- pw.flush();
- Slog.v(TAG, bs.toString());
- bs.reset();
- }
- }
-
- private boolean validateConsistencyLocked() {
- if (DEBUG_VALIDATE) {
- long lastTime = Long.MIN_VALUE;
- final int N = mAlarmBatches.size();
- for (int i = 0; i < N; i++) {
- Batch b = mAlarmBatches.get(i);
- if (b.start >= lastTime) {
- // duplicate start times are okay because of standalone batches
- lastTime = b.start;
- } else {
- Slog.e(TAG, "CONSISTENCY FAILURE: Batch " + i + " is out of order");
- logBatchesLocked();
- return false;
- }
- }
- }
- return true;
- }
-
- private Batch findFirstWakeupBatchLocked() {
- final int N = mAlarmBatches.size();
- for (int i = 0; i < N; i++) {
- Batch b = mAlarmBatches.get(i);
- if (b.hasWakeups()) {
- return b;
+ private final IBinder mService = new IAlarmManager.Stub() {
+ @Override
+ public void set(int type, long triggerAtTime, long windowLength, long interval,
+ PendingIntent operation, WorkSource workSource) {
+ if (workSource != null) {
+ getContext().enforceCallingPermission(
+ android.Manifest.permission.UPDATE_DEVICE_STATS,
+ "AlarmManager.set");
}
- }
- return null;
- }
- private void rescheduleKernelAlarmsLocked() {
- // Schedule the next upcoming wakeup alarm. If there is a deliverable batch
- // prior to that which contains no wakeups, we schedule that as well.
- if (mAlarmBatches.size() > 0) {
- final Batch firstWakeup = findFirstWakeupBatchLocked();
- final Batch firstBatch = mAlarmBatches.get(0);
- if (firstWakeup != null && mNextWakeup != firstWakeup.start) {
- mNextWakeup = firstWakeup.start;
- setLocked(ELAPSED_REALTIME_WAKEUP, firstWakeup.start);
- }
- if (firstBatch != firstWakeup && mNextNonWakeup != firstBatch.start) {
- mNextNonWakeup = firstBatch.start;
- setLocked(ELAPSED_REALTIME, firstBatch.start);
- }
+ setImpl(type, triggerAtTime, windowLength, interval, operation,
+ false, workSource);
}
- }
-
- public void setTime(long millis) {
- mContext.enforceCallingOrSelfPermission(
- "android.permission.SET_TIME",
- "setTime");
-
- SystemClock.setCurrentTimeMillis(millis);
- }
-
- public void setTimeZone(String tz) {
- mContext.enforceCallingOrSelfPermission(
- "android.permission.SET_TIME_ZONE",
- "setTimeZone");
-
- long oldId = Binder.clearCallingIdentity();
- try {
- if (TextUtils.isEmpty(tz)) return;
- TimeZone zone = TimeZone.getTimeZone(tz);
- // Prevent reentrant calls from stepping on each other when writing
- // the time zone property
- boolean timeZoneWasChanged = false;
- synchronized (this) {
- String current = SystemProperties.get(TIMEZONE_PROPERTY);
- if (current == null || !current.equals(zone.getID())) {
- if (localLOGV) {
- Slog.v(TAG, "timezone changed: " + current + ", new=" + zone.getID());
- }
- timeZoneWasChanged = true;
- SystemProperties.set(TIMEZONE_PROPERTY, zone.getID());
- }
-
- // Update the kernel timezone information
- // Kernel tracks time offsets as 'minutes west of GMT'
- int gmtOffset = zone.getOffset(System.currentTimeMillis());
- setKernelTimezone(mDescriptor, -(gmtOffset / 60000));
- }
-
- TimeZone.setDefault(null);
- if (timeZoneWasChanged) {
- Intent intent = new Intent(Intent.ACTION_TIMEZONE_CHANGED);
- intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);
- intent.putExtra("time-zone", zone.getID());
- mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
- }
- } finally {
- Binder.restoreCallingIdentity(oldId);
- }
- }
-
- public void remove(PendingIntent operation) {
- if (operation == null) {
- return;
- }
- synchronized (mLock) {
- removeLocked(operation);
- }
- }
-
- public void removeLocked(PendingIntent operation) {
- boolean didRemove = false;
- for (int i = mAlarmBatches.size() - 1; i >= 0; i--) {
- Batch b = mAlarmBatches.get(i);
- didRemove |= b.remove(operation);
- if (b.size() == 0) {
- mAlarmBatches.remove(i);
- }
- }
+ @Override
+ public void setTime(long millis) {
+ getContext().enforceCallingOrSelfPermission(
+ "android.permission.SET_TIME",
+ "setTime");
- if (didRemove) {
- if (DEBUG_BATCH) {
- Slog.v(TAG, "remove(operation) changed bounds; rebatching");
- }
- rebatchAllAlarmsLocked(true);
- rescheduleKernelAlarmsLocked();
+ SystemClock.setCurrentTimeMillis(millis);
}
- }
- public void removeLocked(String packageName) {
- boolean didRemove = false;
- for (int i = mAlarmBatches.size() - 1; i >= 0; i--) {
- Batch b = mAlarmBatches.get(i);
- didRemove |= b.remove(packageName);
- if (b.size() == 0) {
- mAlarmBatches.remove(i);
+ @Override
+ public void setTimeZone(String tz) {
+ getContext().enforceCallingOrSelfPermission(
+ "android.permission.SET_TIME_ZONE",
+ "setTimeZone");
+
+ final long oldId = Binder.clearCallingIdentity();
+ try {
+ setTimeZoneImpl(tz);
+ } finally {
+ Binder.restoreCallingIdentity(oldId);
}
}
- if (didRemove) {
- if (DEBUG_BATCH) {
- Slog.v(TAG, "remove(package) changed bounds; rebatching");
- }
- rebatchAllAlarmsLocked(true);
- rescheduleKernelAlarmsLocked();
- }
- }
+ @Override
+ public void remove(PendingIntent operation) {
+ removeImpl(operation);
- public void removeUserLocked(int userHandle) {
- boolean didRemove = false;
- for (int i = mAlarmBatches.size() - 1; i >= 0; i--) {
- Batch b = mAlarmBatches.get(i);
- didRemove |= b.remove(userHandle);
- if (b.size() == 0) {
- mAlarmBatches.remove(i);
- }
}
- if (didRemove) {
- if (DEBUG_BATCH) {
- Slog.v(TAG, "remove(user) changed bounds; rebatching");
+ @Override
+ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ if (getContext().checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
+ != PackageManager.PERMISSION_GRANTED) {
+ pw.println("Permission Denial: can't dump AlarmManager from from pid="
+ + Binder.getCallingPid()
+ + ", uid=" + Binder.getCallingUid());
+ return;
}
- rebatchAllAlarmsLocked(true);
- rescheduleKernelAlarmsLocked();
- }
- }
- public boolean lookForPackageLocked(String packageName) {
- for (int i = 0; i < mAlarmBatches.size(); i++) {
- Batch b = mAlarmBatches.get(i);
- if (b.hasPackage(packageName)) {
- return true;
- }
+ dumpImpl(pw);
}
- return false;
- }
+ };
- private void setLocked(int type, long when)
- {
- if (mDescriptor != -1)
- {
- // The kernel never triggers alarms with negative wakeup times
- // so we ensure they are positive.
- long alarmSeconds, alarmNanoseconds;
- if (when < 0) {
- alarmSeconds = 0;
- alarmNanoseconds = 0;
- } else {
- alarmSeconds = when / 1000;
- alarmNanoseconds = (when % 1000) * 1000 * 1000;
- }
-
- set(mDescriptor, type, alarmSeconds, alarmNanoseconds);
- }
- else
- {
- Message msg = Message.obtain();
- msg.what = ALARM_EVENT;
-
- mHandler.removeMessages(ALARM_EVENT);
- mHandler.sendMessageAtTime(msg, when);
- }
- }
-
- @Override
- protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
- != PackageManager.PERMISSION_GRANTED) {
- pw.println("Permission Denial: can't dump AlarmManager from from pid="
- + Binder.getCallingPid()
- + ", uid=" + Binder.getCallingUid());
- return;
- }
-
+ void dumpImpl(PrintWriter pw) {
synchronized (mLock) {
pw.println("Current Alarm Manager state:");
final long nowRTC = System.currentTimeMillis();
@@ -980,6 +848,159 @@ class AlarmManagerService extends IAlarmManager.Stub {
}
}
+ private void logBatchesLocked() {
+ ByteArrayOutputStream bs = new ByteArrayOutputStream(2048);
+ PrintWriter pw = new PrintWriter(bs);
+ final long nowRTC = System.currentTimeMillis();
+ final long nowELAPSED = SystemClock.elapsedRealtime();
+ final int NZ = mAlarmBatches.size();
+ for (int iz = 0; iz < NZ; iz++) {
+ Batch bz = mAlarmBatches.get(iz);
+ pw.append("Batch "); pw.print(iz); pw.append(": "); pw.println(bz);
+ dumpAlarmList(pw, bz.alarms, " ", nowELAPSED, nowRTC);
+ pw.flush();
+ Slog.v(TAG, bs.toString());
+ bs.reset();
+ }
+ }
+
+ private boolean validateConsistencyLocked() {
+ if (DEBUG_VALIDATE) {
+ long lastTime = Long.MIN_VALUE;
+ final int N = mAlarmBatches.size();
+ for (int i = 0; i < N; i++) {
+ Batch b = mAlarmBatches.get(i);
+ if (b.start >= lastTime) {
+ // duplicate start times are okay because of standalone batches
+ lastTime = b.start;
+ } else {
+ Slog.e(TAG, "CONSISTENCY FAILURE: Batch " + i + " is out of order");
+ logBatchesLocked();
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ private Batch findFirstWakeupBatchLocked() {
+ final int N = mAlarmBatches.size();
+ for (int i = 0; i < N; i++) {
+ Batch b = mAlarmBatches.get(i);
+ if (b.hasWakeups()) {
+ return b;
+ }
+ }
+ return null;
+ }
+
+ void rescheduleKernelAlarmsLocked() {
+ // Schedule the next upcoming wakeup alarm. If there is a deliverable batch
+ // prior to that which contains no wakeups, we schedule that as well.
+ if (mAlarmBatches.size() > 0) {
+ final Batch firstWakeup = findFirstWakeupBatchLocked();
+ final Batch firstBatch = mAlarmBatches.get(0);
+ if (firstWakeup != null && mNextWakeup != firstWakeup.start) {
+ mNextWakeup = firstWakeup.start;
+ setLocked(ELAPSED_REALTIME_WAKEUP, firstWakeup.start);
+ }
+ if (firstBatch != firstWakeup && mNextNonWakeup != firstBatch.start) {
+ mNextNonWakeup = firstBatch.start;
+ setLocked(ELAPSED_REALTIME, firstBatch.start);
+ }
+ }
+ }
+
+ private void removeLocked(PendingIntent operation) {
+ boolean didRemove = false;
+ for (int i = mAlarmBatches.size() - 1; i >= 0; i--) {
+ Batch b = mAlarmBatches.get(i);
+ didRemove |= b.remove(operation);
+ if (b.size() == 0) {
+ mAlarmBatches.remove(i);
+ }
+ }
+
+ if (didRemove) {
+ if (DEBUG_BATCH) {
+ Slog.v(TAG, "remove(operation) changed bounds; rebatching");
+ }
+ rebatchAllAlarmsLocked(true);
+ rescheduleKernelAlarmsLocked();
+ }
+ }
+
+ void removeLocked(String packageName) {
+ boolean didRemove = false;
+ for (int i = mAlarmBatches.size() - 1; i >= 0; i--) {
+ Batch b = mAlarmBatches.get(i);
+ didRemove |= b.remove(packageName);
+ if (b.size() == 0) {
+ mAlarmBatches.remove(i);
+ }
+ }
+
+ if (didRemove) {
+ if (DEBUG_BATCH) {
+ Slog.v(TAG, "remove(package) changed bounds; rebatching");
+ }
+ rebatchAllAlarmsLocked(true);
+ rescheduleKernelAlarmsLocked();
+ }
+ }
+
+ void removeUserLocked(int userHandle) {
+ boolean didRemove = false;
+ for (int i = mAlarmBatches.size() - 1; i >= 0; i--) {
+ Batch b = mAlarmBatches.get(i);
+ didRemove |= b.remove(userHandle);
+ if (b.size() == 0) {
+ mAlarmBatches.remove(i);
+ }
+ }
+
+ if (didRemove) {
+ if (DEBUG_BATCH) {
+ Slog.v(TAG, "remove(user) changed bounds; rebatching");
+ }
+ rebatchAllAlarmsLocked(true);
+ rescheduleKernelAlarmsLocked();
+ }
+ }
+
+ boolean lookForPackageLocked(String packageName) {
+ for (int i = 0; i < mAlarmBatches.size(); i++) {
+ Batch b = mAlarmBatches.get(i);
+ if (b.hasPackage(packageName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private void setLocked(int type, long when) {
+ if (mNativeData != 0) {
+ // The kernel never triggers alarms with negative wakeup times
+ // so we ensure they are positive.
+ long alarmSeconds, alarmNanoseconds;
+ if (when < 0) {
+ alarmSeconds = 0;
+ alarmNanoseconds = 0;
+ } else {
+ alarmSeconds = when / 1000;
+ alarmNanoseconds = (when % 1000) * 1000 * 1000;
+ }
+
+ set(mNativeData, type, alarmSeconds, alarmNanoseconds);
+ } else {
+ Message msg = Message.obtain();
+ msg.what = ALARM_EVENT;
+
+ mHandler.removeMessages(ALARM_EVENT);
+ mHandler.sendMessageAtTime(msg, when);
+ }
+ }
+
private static final void dumpAlarmList(PrintWriter pw, ArrayList<Alarm> list,
String prefix, String label, long now) {
for (int i=list.size()-1; i>=0; i--) {
@@ -1014,13 +1035,13 @@ class AlarmManagerService extends IAlarmManager.Stub {
}
}
- private native int init();
- private native void close(int fd);
- private native void set(int fd, int type, long seconds, long nanoseconds);
- private native int waitForAlarm(int fd);
- private native int setKernelTimezone(int fd, int minuteswest);
+ private native long init();
+ private native void close(long nativeData);
+ private native void set(long nativeData, int type, long seconds, long nanoseconds);
+ private native int waitForAlarm(long nativeData);
+ private native int setKernelTimezone(long nativeData, int minuteswest);
- private void triggerAlarmsLocked(ArrayList<Alarm> triggerList, long nowELAPSED, long nowRTC) {
+ void triggerAlarmsLocked(ArrayList<Alarm> triggerList, long nowELAPSED, long nowRTC) {
// batches are temporally sorted, so we need only pull from the
// start of the list until we either empty it or hit a batch
// that is not yet deliverable
@@ -1158,7 +1179,7 @@ class AlarmManagerService extends IAlarmManager.Stub {
while (true)
{
- int result = waitForAlarm(mDescriptor);
+ int result = waitForAlarm(mNativeData);
triggerList.clear();
@@ -1166,13 +1187,13 @@ class AlarmManagerService extends IAlarmManager.Stub {
if (DEBUG_BATCH) {
Slog.v(TAG, "Time changed notification from kernel; rebatching");
}
- remove(mTimeTickSender);
+ removeImpl(mTimeTickSender);
rebatchAllAlarms();
mClockReceiver.scheduleTimeTickEvent();
Intent intent = new Intent(Intent.ACTION_TIME_CHANGED);
intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING
| Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
- mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
+ getContext().sendBroadcastAsUser(intent, UserHandle.ALL);
}
synchronized (mLock) {
@@ -1206,7 +1227,7 @@ class AlarmManagerService extends IAlarmManager.Stub {
Alarm alarm = triggerList.get(i);
try {
if (localLOGV) Slog.v(TAG, "sending alarm " + alarm);
- alarm.operation.send(mContext, 0,
+ alarm.operation.send(getContext(), 0,
mBackgroundIntent.putExtra(
Intent.EXTRA_ALARM_COUNT, alarm.count),
mResultReceiver, mHandler);
@@ -1248,7 +1269,7 @@ class AlarmManagerService extends IAlarmManager.Stub {
if (alarm.repeatInterval > 0) {
// This IntentSender is no longer valid, but this
// is a repeating alarm, so toss the hoser.
- remove(alarm.operation);
+ removeImpl(alarm.operation);
}
} catch (RuntimeException e) {
Slog.w(TAG, "Failure sending alarm.", e);
@@ -1310,7 +1331,7 @@ class AlarmManagerService extends IAlarmManager.Stub {
if (alarm.repeatInterval > 0) {
// This IntentSender is no longer valid, but this
// is a repeating alarm, so toss the hoser.
- remove(alarm.operation);
+ removeImpl(alarm.operation);
}
}
}
@@ -1323,7 +1344,7 @@ class AlarmManagerService extends IAlarmManager.Stub {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_TIME_TICK);
filter.addAction(Intent.ACTION_DATE_CHANGED);
- mContext.registerReceiver(this, filter);
+ getContext().registerReceiver(this, filter);
}
@Override
@@ -1340,7 +1361,7 @@ class AlarmManagerService extends IAlarmManager.Stub {
// daylight savings information.
TimeZone zone = TimeZone.getTimeZone(SystemProperties.get(TIMEZONE_PROPERTY));
int gmtOffset = zone.getOffset(System.currentTimeMillis());
- setKernelTimezone(mDescriptor, -(gmtOffset / 60000));
+ setKernelTimezone(mNativeData, -(gmtOffset / 60000));
scheduleDateChangedEvent();
}
}
@@ -1354,7 +1375,7 @@ class AlarmManagerService extends IAlarmManager.Stub {
final long tickEventDelay = nextTime - currentTime;
final WorkSource workSource = null; // Let system take blame for time tick events.
- set(ELAPSED_REALTIME, SystemClock.elapsedRealtime() + tickEventDelay, 0,
+ setImpl(ELAPSED_REALTIME, SystemClock.elapsedRealtime() + tickEventDelay, 0,
0, mTimeTickSender, true, workSource);
}
@@ -1368,7 +1389,7 @@ class AlarmManagerService extends IAlarmManager.Stub {
calendar.add(Calendar.DAY_OF_MONTH, 1);
final WorkSource workSource = null; // Let system take blame for date change events.
- set(RTC, calendar.getTimeInMillis(), 0, 0, mDateChangeSender, true, workSource);
+ setImpl(RTC, calendar.getTimeInMillis(), 0, 0, mDateChangeSender, true, workSource);
}
}
@@ -1379,12 +1400,12 @@ class AlarmManagerService extends IAlarmManager.Stub {
filter.addAction(Intent.ACTION_PACKAGE_RESTARTED);
filter.addAction(Intent.ACTION_QUERY_PACKAGE_RESTART);
filter.addDataScheme("package");
- mContext.registerReceiver(this, filter);
+ getContext().registerReceiver(this, filter);
// Register for events related to sdcard installation.
IntentFilter sdFilter = new IntentFilter();
sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE);
sdFilter.addAction(Intent.ACTION_USER_STOPPED);
- mContext.registerReceiver(this, sdFilter);
+ getContext().registerReceiver(this, sdFilter);
}
@Override
diff --git a/services/java/com/android/server/AppOpsService.java b/services/core/java/com/android/server/AppOpsService.java
index a1a0d47cb019..e5615c0441a2 100644
--- a/services/java/com/android/server/AppOpsService.java
+++ b/services/core/java/com/android/server/AppOpsService.java
@@ -186,9 +186,9 @@ public class AppOpsService extends IAppOpsService.Stub {
}
}
- public AppOpsService(File storagePath) {
+ public AppOpsService(File storagePath, Handler handler) {
mFile = new AtomicFile(storagePath);
- mHandler = new Handler();
+ mHandler = handler;
readState();
}
diff --git a/services/java/com/android/server/AssetAtlasService.java b/services/core/java/com/android/server/AssetAtlasService.java
index 26b4652f4c7d..3fb006b8486d 100644
--- a/services/java/com/android/server/AssetAtlasService.java
+++ b/services/core/java/com/android/server/AssetAtlasService.java
@@ -288,8 +288,8 @@ public class AssetAtlasService extends IAssetAtlas.Stub {
}
canvas.drawBitmap(bitmap, 0.0f, 0.0f, null);
canvas.restore();
-
- atlasMap[mapIndex++] = bitmap.mNativeBitmap;
+ // TODO: Change mAtlasMap to long[] to support 64-bit systems
+ atlasMap[mapIndex++] = (int) bitmap.mNativeBitmap;
atlasMap[mapIndex++] = entry.x;
atlasMap[mapIndex++] = entry.y;
atlasMap[mapIndex++] = entry.rotated ? 1 : 0;
diff --git a/services/java/com/android/server/AttributeCache.java b/services/core/java/com/android/server/AttributeCache.java
index 427dbc091ced..427dbc091ced 100644
--- a/services/java/com/android/server/AttributeCache.java
+++ b/services/core/java/com/android/server/AttributeCache.java
diff --git a/services/java/com/android/server/BatteryService.java b/services/core/java/com/android/server/BatteryService.java
index 5f3f894ca68e..cc9055dd480e 100644
--- a/services/java/com/android/server/BatteryService.java
+++ b/services/core/java/com/android/server/BatteryService.java
@@ -19,6 +19,8 @@ package com.android.server;
import android.os.BatteryStats;
import com.android.internal.app.IBatteryStats;
import com.android.server.am.BatteryStatsService;
+import com.android.server.lights.Light;
+import com.android.server.lights.LightsManager;
import android.app.ActivityManagerNative;
import android.content.ContentResolver;
@@ -134,13 +136,10 @@ public final class BatteryService extends Binder {
private boolean mSentLowBatteryBroadcast = false;
- private BatteryListener mBatteryPropertiesListener;
- private IBatteryPropertiesRegistrar mBatteryPropertiesRegistrar;
-
- public BatteryService(Context context, LightsService lights) {
+ public BatteryService(Context context, LightsManager lightsManager) {
mContext = context;
mHandler = new Handler(true /*async*/);
- mLed = new Led(context, lights);
+ mLed = new Led(context, lightsManager);
mBatteryStats = BatteryStatsService.getService();
mCriticalBatteryLevel = mContext.getResources().getInteger(
@@ -158,13 +157,11 @@ public final class BatteryService extends Binder {
"DEVPATH=/devices/virtual/switch/invalid_charger");
}
- mBatteryPropertiesListener = new BatteryListener();
-
IBinder b = ServiceManager.getService("batterypropreg");
- mBatteryPropertiesRegistrar = IBatteryPropertiesRegistrar.Stub.asInterface(b);
-
+ final IBatteryPropertiesRegistrar batteryPropertiesRegistrar =
+ IBatteryPropertiesRegistrar.Stub.asInterface(b);
try {
- mBatteryPropertiesRegistrar.registerListener(mBatteryPropertiesListener);
+ batteryPropertiesRegistrar.registerListener(new BatteryListener());
} catch (RemoteException e) {
// Should never happen.
}
@@ -688,7 +685,7 @@ public final class BatteryService extends Binder {
};
private final class Led {
- private final LightsService.Light mBatteryLight;
+ private final Light mBatteryLight;
private final int mBatteryLowARGB;
private final int mBatteryMediumARGB;
@@ -696,8 +693,8 @@ public final class BatteryService extends Binder {
private final int mBatteryLedOn;
private final int mBatteryLedOff;
- public Led(Context context, LightsService lights) {
- mBatteryLight = lights.getLight(LightsService.LIGHT_ID_BATTERY);
+ public Led(Context context, LightsManager lights) {
+ mBatteryLight = lights.getLight(LightsManager.LIGHT_ID_BATTERY);
mBatteryLowARGB = context.getResources().getInteger(
com.android.internal.R.integer.config_notificationsBatteryLowARGB);
@@ -723,7 +720,7 @@ public final class BatteryService extends Binder {
mBatteryLight.setColor(mBatteryLowARGB);
} else {
// Flash red when battery is low and not charging
- mBatteryLight.setFlashing(mBatteryLowARGB, LightsService.LIGHT_FLASH_TIMED,
+ mBatteryLight.setFlashing(mBatteryLowARGB, Light.LIGHT_FLASH_TIMED,
mBatteryLedOn, mBatteryLedOff);
}
} else if (status == BatteryManager.BATTERY_STATUS_CHARGING
@@ -743,8 +740,14 @@ public final class BatteryService extends Binder {
}
private final class BatteryListener extends IBatteryPropertiesListener.Stub {
+ @Override
public void batteryPropertiesChanged(BatteryProperties props) {
- BatteryService.this.update(props);
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ BatteryService.this.update(props);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
}
}
diff --git a/services/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java
index 546324a73e05..546324a73e05 100644
--- a/services/java/com/android/server/BluetoothManagerService.java
+++ b/services/core/java/com/android/server/BluetoothManagerService.java
diff --git a/services/java/com/android/server/BootReceiver.java b/services/core/java/com/android/server/BootReceiver.java
index da1b2548238f..bce85cee338b 100644
--- a/services/java/com/android/server/BootReceiver.java
+++ b/services/core/java/com/android/server/BootReceiver.java
@@ -120,6 +120,8 @@ public class BootReceiver extends BroadcastReceiver {
// Negative sizes mean to take the *tail* of the file (see FileUtils.readTextFile())
addFileToDropBox(db, prefs, headers, "/proc/last_kmsg",
-LOG_SIZE, "SYSTEM_LAST_KMSG");
+ addFileToDropBox(db, prefs, headers, "/sys/fs/pstore/console-ramoops",
+ -LOG_SIZE, "SYSTEM_LAST_KMSG");
addFileToDropBox(db, prefs, headers, "/cache/recovery/log",
-LOG_SIZE, "SYSTEM_RECOVERY_LOG");
addFileToDropBox(db, prefs, headers, "/data/dontpanic/apanic_console",
@@ -184,6 +186,11 @@ public class BootReceiver extends BroadcastReceiver {
File file = new File("/proc/last_kmsg");
long fileTime = file.lastModified();
+ if (fileTime <= 0) {
+ file = new File("/sys/fs/pstore/console-ramoops");
+ fileTime = file.lastModified();
+ }
+
if (fileTime <= 0) return; // File does not exist
if (prefs != null) {
diff --git a/services/java/com/android/server/BrickReceiver.java b/services/core/java/com/android/server/BrickReceiver.java
index cff3805b68d2..cff3805b68d2 100644
--- a/services/java/com/android/server/BrickReceiver.java
+++ b/services/core/java/com/android/server/BrickReceiver.java
diff --git a/services/java/com/android/server/CertBlacklister.java b/services/core/java/com/android/server/CertBlacklister.java
index 8b167d7b0c90..8b167d7b0c90 100644
--- a/services/java/com/android/server/CertBlacklister.java
+++ b/services/core/java/com/android/server/CertBlacklister.java
diff --git a/services/java/com/android/server/CommonTimeManagementService.java b/services/core/java/com/android/server/CommonTimeManagementService.java
index 710fb9d34596..710fb9d34596 100644
--- a/services/java/com/android/server/CommonTimeManagementService.java
+++ b/services/core/java/com/android/server/CommonTimeManagementService.java
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index e283da99368d..0862f8a969e6 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -26,6 +26,7 @@ import static android.net.ConnectivityManager.TYPE_ETHERNET;
import static android.net.ConnectivityManager.TYPE_MOBILE;
import static android.net.ConnectivityManager.TYPE_WIFI;
import static android.net.ConnectivityManager.TYPE_WIMAX;
+import static android.net.ConnectivityManager.TYPE_PROXY;
import static android.net.ConnectivityManager.getNetworkTypeName;
import static android.net.ConnectivityManager.isNetworkTypeValid;
import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL;
@@ -72,6 +73,7 @@ import android.net.NetworkState;
import android.net.NetworkStateTracker;
import android.net.NetworkUtils;
import android.net.Proxy;
+import android.net.ProxyDataTracker;
import android.net.ProxyProperties;
import android.net.RouteInfo;
import android.net.SamplingDataTracker;
@@ -736,6 +738,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
return makeWimaxStateTracker(mContext, mTrackerHandler);
case TYPE_ETHERNET:
return EthernetDataTracker.getInstance();
+ case TYPE_PROXY:
+ return new ProxyDataTracker();
default:
throw new IllegalArgumentException(
"Trying to create a NetworkStateTracker for an unknown radio type: "
@@ -1637,9 +1641,12 @@ public class ConnectivityService extends IConnectivityManager.Stub {
return false;
}
NetworkStateTracker tracker = mNetTrackers[networkType];
- DetailedState netState = tracker.getNetworkInfo().getDetailedState();
+ DetailedState netState = DetailedState.DISCONNECTED;
+ if (tracker != null) {
+ netState = tracker.getNetworkInfo().getDetailedState();
+ }
- if (tracker == null || (netState != DetailedState.CONNECTED &&
+ if ((netState != DetailedState.CONNECTED &&
netState != DetailedState.CAPTIVE_PORTAL_CHECK) ||
tracker.isTeardownRequested()) {
if (VDBG) {
diff --git a/services/java/com/android/server/ConsumerIrService.java b/services/core/java/com/android/server/ConsumerIrService.java
index 783dff111443..783dff111443 100644
--- a/services/java/com/android/server/ConsumerIrService.java
+++ b/services/core/java/com/android/server/ConsumerIrService.java
diff --git a/services/java/com/android/server/CountryDetectorService.java b/services/core/java/com/android/server/CountryDetectorService.java
index a478b2f47637..a478b2f47637 100644
--- a/services/java/com/android/server/CountryDetectorService.java
+++ b/services/core/java/com/android/server/CountryDetectorService.java
diff --git a/services/java/com/android/server/DiskStatsService.java b/services/core/java/com/android/server/DiskStatsService.java
index ac25dc58861d..ac25dc58861d 100644
--- a/services/java/com/android/server/DiskStatsService.java
+++ b/services/core/java/com/android/server/DiskStatsService.java
diff --git a/services/core/java/com/android/server/DisplayThread.java b/services/core/java/com/android/server/DisplayThread.java
new file mode 100644
index 000000000000..528ba0a90a0b
--- /dev/null
+++ b/services/core/java/com/android/server/DisplayThread.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server;
+
+import android.os.Handler;
+
+/**
+ * Shared singleton foreground thread for the system. This is a thread for
+ * operations that affect what's on the display, which needs to have a minimum
+ * of latency. This thread should pretty much only be used by the WindowManager,
+ * DisplayManager, and InputManager to perform quick operations in real time.
+ */
+public final class DisplayThread extends ServiceThread {
+ private static DisplayThread sInstance;
+ private static Handler sHandler;
+
+ private DisplayThread() {
+ super("android.display", android.os.Process.THREAD_PRIORITY_DISPLAY, false /*allowIo*/);
+ }
+
+ private static void ensureThreadLocked() {
+ if (sInstance == null) {
+ sInstance = new DisplayThread();
+ sInstance.start();
+ sHandler = new Handler(sInstance.getLooper());
+ }
+ }
+
+ public static DisplayThread get() {
+ synchronized (UiThread.class) {
+ ensureThreadLocked();
+ return sInstance;
+ }
+ }
+
+ public static Handler getHandler() {
+ synchronized (UiThread.class) {
+ ensureThreadLocked();
+ return sHandler;
+ }
+ }
+}
diff --git a/services/java/com/android/server/DockObserver.java b/services/core/java/com/android/server/DockObserver.java
index 4a8bf720aae1..4a8bf720aae1 100644
--- a/services/java/com/android/server/DockObserver.java
+++ b/services/core/java/com/android/server/DockObserver.java
diff --git a/services/java/com/android/server/DropBoxManagerService.java b/services/core/java/com/android/server/DropBoxManagerService.java
index 29b04da9c564..29b04da9c564 100644
--- a/services/java/com/android/server/DropBoxManagerService.java
+++ b/services/core/java/com/android/server/DropBoxManagerService.java
diff --git a/services/java/com/android/server/EntropyMixer.java b/services/core/java/com/android/server/EntropyMixer.java
index fbb66f979c5c..cfdbf7d530cd 100644
--- a/services/java/com/android/server/EntropyMixer.java
+++ b/services/core/java/com/android/server/EntropyMixer.java
@@ -36,7 +36,8 @@ import android.util.Slog;
/**
* A service designed to load and periodically save &quot;randomness&quot;
- * for the Linux kernel.
+ * for the Linux kernel RNG and to mix in data from Hardware RNG (if present)
+ * into the Linux RNG.
*
* <p>When a Linux system starts up, the entropy pool associated with
* {@code /dev/random} may be in a fairly predictable state. Applications which
@@ -45,6 +46,13 @@ import android.util.Slog;
* this effect, it's helpful to carry the entropy pool information across
* shutdowns and startups.
*
+ * <p>On systems with Hardware RNG (/dev/hw_random), a block of output from HW
+ * RNG is mixed into the Linux RNG on EntropyMixer's startup and whenever
+ * EntropyMixer periodically runs to save a block of output from Linux RNG on
+ * disk. This mixing is done in a way that does not increase the Linux RNG's
+ * entropy estimate is not increased. This is to avoid having to trust/verify
+ * the quality and authenticity of the &quot;randomness&quot; of the HW RNG.
+ *
* <p>This class was modeled after the script in
* <a href="http://www.kernel.org/doc/man-pages/online/pages/man4/random.4.html">man
* 4 random</a>.
@@ -57,6 +65,7 @@ public class EntropyMixer extends Binder {
private static final long START_NANOTIME = System.nanoTime();
private final String randomDevice;
+ private final String hwRandomDevice;
private final String entropyFile;
/**
@@ -69,6 +78,7 @@ public class EntropyMixer extends Binder {
Slog.e(TAG, "Will not process invalid message");
return;
}
+ addHwRandomEntropy();
writeEntropy();
scheduleEntropyWriter();
}
@@ -82,18 +92,25 @@ public class EntropyMixer extends Binder {
};
public EntropyMixer(Context context) {
- this(context, getSystemDir() + "/entropy.dat", "/dev/urandom");
+ this(context, getSystemDir() + "/entropy.dat", "/dev/urandom", "/dev/hw_random");
}
/** Test only interface, not for public use */
- public EntropyMixer(Context context, String entropyFile, String randomDevice) {
+ public EntropyMixer(
+ Context context,
+ String entropyFile,
+ String randomDevice,
+ String hwRandomDevice) {
if (randomDevice == null) { throw new NullPointerException("randomDevice"); }
+ if (hwRandomDevice == null) { throw new NullPointerException("hwRandomDevice"); }
if (entropyFile == null) { throw new NullPointerException("entropyFile"); }
this.randomDevice = randomDevice;
+ this.hwRandomDevice = hwRandomDevice;
this.entropyFile = entropyFile;
loadInitialEntropy();
addDeviceSpecificEntropy();
+ addHwRandomEntropy();
writeEntropy();
scheduleEntropyWriter();
IntentFilter broadcastFilter = new IntentFilter(Intent.ACTION_SHUTDOWN);
@@ -168,6 +185,20 @@ public class EntropyMixer extends Binder {
}
}
+ /**
+ * Mixes in the output from HW RNG (if present) into the Linux RNG.
+ */
+ private void addHwRandomEntropy() {
+ try {
+ RandomBlock.fromFile(hwRandomDevice).toFile(randomDevice, false);
+ Slog.i(TAG, "Added HW RNG output to entropy pool");
+ } catch (FileNotFoundException ignored) {
+ // HW RNG not present/exposed -- ignore
+ } catch (IOException e) {
+ Slog.w(TAG, "Failed to add HW RNG output to entropy pool", e);
+ }
+ }
+
private static String getSystemDir() {
File dataDir = Environment.getDataDirectory();
File systemDir = new File(dataDir, "system");
diff --git a/services/java/com/android/server/EventLogTags.logtags b/services/core/java/com/android/server/EventLogTags.logtags
index 399e7d183658..399e7d183658 100644
--- a/services/java/com/android/server/EventLogTags.logtags
+++ b/services/core/java/com/android/server/EventLogTags.logtags
diff --git a/services/java/com/android/server/FgThread.java b/services/core/java/com/android/server/FgThread.java
index 3b655f2cee93..03765db35bae 100644
--- a/services/java/com/android/server/FgThread.java
+++ b/services/core/java/com/android/server/FgThread.java
@@ -17,7 +17,6 @@
package com.android.server;
import android.os.Handler;
-import android.os.HandlerThread;
/**
* Shared singleton foreground thread for the system. This is a thread for regular
@@ -27,12 +26,12 @@ import android.os.HandlerThread;
* simply being a background priority), which can cause operations scheduled on it
* to be delayed for a user-noticeable amount of time.
*/
-public final class FgThread extends HandlerThread {
+public final class FgThread extends ServiceThread {
private static FgThread sInstance;
private static Handler sHandler;
private FgThread() {
- super("android.fg", android.os.Process.THREAD_PRIORITY_DEFAULT);
+ super("android.fg", android.os.Process.THREAD_PRIORITY_DEFAULT, true /*allowIo*/);
}
private static void ensureThreadLocked() {
@@ -40,12 +39,6 @@ public final class FgThread extends HandlerThread {
sInstance = new FgThread();
sInstance.start();
sHandler = new Handler(sInstance.getLooper());
- sHandler.post(new Runnable() {
- @Override
- public void run() {
- android.os.Process.setCanSelfBackground(false);
- }
- });
}
}
diff --git a/services/java/com/android/server/INativeDaemonConnectorCallbacks.java b/services/core/java/com/android/server/INativeDaemonConnectorCallbacks.java
index 6fbf713d3f7a..6fbf713d3f7a 100644
--- a/services/java/com/android/server/INativeDaemonConnectorCallbacks.java
+++ b/services/core/java/com/android/server/INativeDaemonConnectorCallbacks.java
diff --git a/services/java/com/android/server/IdleMaintenanceService.java b/services/core/java/com/android/server/IdleMaintenanceService.java
index b0a1aca37d7c..b0a1aca37d7c 100644
--- a/services/java/com/android/server/IdleMaintenanceService.java
+++ b/services/core/java/com/android/server/IdleMaintenanceService.java
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/core/java/com/android/server/InputMethodManagerService.java
index a996dbda5cf5..26424a58061f 100644
--- a/services/java/com/android/server/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/InputMethodManagerService.java
@@ -28,7 +28,7 @@ import com.android.internal.view.IInputMethodClient;
import com.android.internal.view.IInputMethodManager;
import com.android.internal.view.IInputMethodSession;
import com.android.internal.view.InputBindResult;
-import com.android.server.EventLogTags;
+import com.android.server.statusbar.StatusBarManagerService;
import com.android.server.wm.WindowManagerService;
import org.xmlpull.v1.XmlPullParser;
diff --git a/services/java/com/android/server/IntentResolver.java b/services/core/java/com/android/server/IntentResolver.java
index 64b0487fa320..64b0487fa320 100644
--- a/services/java/com/android/server/IntentResolver.java
+++ b/services/core/java/com/android/server/IntentResolver.java
diff --git a/services/java/com/android/server/IoThread.java b/services/core/java/com/android/server/IoThread.java
index 09f2af79c83d..0f29857db345 100644
--- a/services/java/com/android/server/IoThread.java
+++ b/services/core/java/com/android/server/IoThread.java
@@ -17,19 +17,18 @@
package com.android.server;
import android.os.Handler;
-import android.os.HandlerThread;
/**
* Shared singleton I/O thread for the system. This is a thread for non-background
* service operations that can potential block briefly on network IO operations
* (not waiting for data itself, but communicating with network daemons).
*/
-public final class IoThread extends HandlerThread {
+public final class IoThread extends ServiceThread {
private static IoThread sInstance;
private static Handler sHandler;
private IoThread() {
- super("android.io", android.os.Process.THREAD_PRIORITY_DEFAULT);
+ super("android.io", android.os.Process.THREAD_PRIORITY_DEFAULT, true /*allowIo*/);
}
private static void ensureThreadLocked() {
@@ -37,12 +36,6 @@ public final class IoThread extends HandlerThread {
sInstance = new IoThread();
sInstance.start();
sHandler = new Handler(sInstance.getLooper());
- sHandler.post(new Runnable() {
- @Override
- public void run() {
- android.os.Process.setCanSelfBackground(false);
- }
- });
}
}
diff --git a/services/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java
index eebd1c5e9642..eebd1c5e9642 100644
--- a/services/java/com/android/server/LocationManagerService.java
+++ b/services/core/java/com/android/server/LocationManagerService.java
diff --git a/services/java/com/android/server/LockSettingsService.java b/services/core/java/com/android/server/LockSettingsService.java
index 35e7afad301c..35e7afad301c 100644
--- a/services/java/com/android/server/LockSettingsService.java
+++ b/services/core/java/com/android/server/LockSettingsService.java
diff --git a/services/java/com/android/server/MasterClearReceiver.java b/services/core/java/com/android/server/MasterClearReceiver.java
index 86f57d124868..e570b0bd0978 100644
--- a/services/java/com/android/server/MasterClearReceiver.java
+++ b/services/core/java/com/android/server/MasterClearReceiver.java
@@ -37,13 +37,15 @@ public class MasterClearReceiver extends BroadcastReceiver {
}
}
+ final boolean shutdown = intent.getBooleanExtra("shutdown", false);
+
Slog.w(TAG, "!!! FACTORY RESET !!!");
// The reboot call is blocking, so we need to do it on another thread.
Thread thr = new Thread("Reboot") {
@Override
public void run() {
try {
- RecoverySystem.rebootWipeUserData(context);
+ RecoverySystem.rebootWipeUserData(context, shutdown);
Log.wtf(TAG, "Still running after master clear?!");
} catch (IOException e) {
Slog.e(TAG, "Can't perform master clear/factory reset", e);
diff --git a/services/java/com/android/server/MountService.java b/services/core/java/com/android/server/MountService.java
index e60231a4fd8a..816ae6967cfd 100644
--- a/services/java/com/android/server/MountService.java
+++ b/services/core/java/com/android/server/MountService.java
@@ -877,7 +877,7 @@ class MountService extends IMountService.Stub
/* Send the media unmounted event first */
if (DEBUG_EVENTS) Slog.i(TAG, "Sending unmounted event first");
updatePublicVolumeState(volume, Environment.MEDIA_UNMOUNTED);
- sendStorageIntent(Environment.MEDIA_UNMOUNTED, volume, UserHandle.ALL);
+ sendStorageIntent(Intent.ACTION_MEDIA_UNMOUNTED, volume, UserHandle.ALL);
if (DEBUG_EVENTS) Slog.i(TAG, "Sending media removed");
updatePublicVolumeState(volume, Environment.MEDIA_REMOVED);
@@ -1164,6 +1164,7 @@ class MountService extends IMountService.Stub
private void sendStorageIntent(String action, StorageVolume volume, UserHandle user) {
final Intent intent = new Intent(action, Uri.parse("file://" + volume.getPath()));
intent.putExtra(StorageVolume.EXTRA_STORAGE_VOLUME, volume);
+ intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
Slog.d(TAG, "sendStorageIntent " + intent + " to " + user);
mContext.sendBroadcastAsUser(intent, user);
}
@@ -1411,7 +1412,7 @@ class MountService extends IMountService.Stub
public void unregisterListener(IMountServiceListener listener) {
synchronized (mListeners) {
for(MountServiceBinderListener bl : mListeners) {
- if (bl.mListener == listener) {
+ if (bl.mListener.asBinder() == listener.asBinder()) {
mListeners.remove(mListeners.indexOf(bl));
listener.asBinder().unlinkToDeath(bl, 0);
return;
diff --git a/services/java/com/android/server/NativeDaemonConnector.java b/services/core/java/com/android/server/NativeDaemonConnector.java
index 417d6d81cdf6..417d6d81cdf6 100644
--- a/services/java/com/android/server/NativeDaemonConnector.java
+++ b/services/core/java/com/android/server/NativeDaemonConnector.java
diff --git a/services/java/com/android/server/NativeDaemonConnectorException.java b/services/core/java/com/android/server/NativeDaemonConnectorException.java
index 590bbccdbc5d..590bbccdbc5d 100644
--- a/services/java/com/android/server/NativeDaemonConnectorException.java
+++ b/services/core/java/com/android/server/NativeDaemonConnectorException.java
diff --git a/services/java/com/android/server/NativeDaemonEvent.java b/services/core/java/com/android/server/NativeDaemonEvent.java
index 209515279bf8..209515279bf8 100644
--- a/services/java/com/android/server/NativeDaemonEvent.java
+++ b/services/core/java/com/android/server/NativeDaemonEvent.java
diff --git a/services/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java
index 92f99c2e4aec..ad7ec99775a3 100644
--- a/services/java/com/android/server/NetworkManagementService.java
+++ b/services/core/java/com/android/server/NetworkManagementService.java
@@ -136,6 +136,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub
public static final int BandwidthControl = 601;
public static final int InterfaceClassActivity = 613;
public static final int InterfaceAddressChange = 614;
+ public static final int InterfaceDnsServerInfo = 615;
}
/**
@@ -404,11 +405,11 @@ public class NetworkManagementService extends INetworkManagementService.Stub
/**
* Notify our observers of a new or updated interface address.
*/
- private void notifyAddressUpdated(String address, String iface, int flags, int scope) {
+ private void notifyAddressUpdated(String iface, LinkAddress address) {
final int length = mObservers.beginBroadcast();
for (int i = 0; i < length; i++) {
try {
- mObservers.getBroadcastItem(i).addressUpdated(address, iface, flags, scope);
+ mObservers.getBroadcastItem(i).addressUpdated(iface, address);
} catch (RemoteException e) {
} catch (RuntimeException e) {
}
@@ -419,11 +420,26 @@ public class NetworkManagementService extends INetworkManagementService.Stub
/**
* Notify our observers of a deleted interface address.
*/
- private void notifyAddressRemoved(String address, String iface, int flags, int scope) {
+ private void notifyAddressRemoved(String iface, LinkAddress address) {
final int length = mObservers.beginBroadcast();
for (int i = 0; i < length; i++) {
try {
- mObservers.getBroadcastItem(i).addressRemoved(address, iface, flags, scope);
+ mObservers.getBroadcastItem(i).addressRemoved(iface, address);
+ } catch (RemoteException e) {
+ } catch (RuntimeException e) {
+ }
+ }
+ mObservers.finishBroadcast();
+ }
+
+ /**
+ * Notify our observers of DNS server information received.
+ */
+ private void notifyInterfaceDnsServerInfo(String iface, long lifetime, String[] addresses) {
+ final int length = mObservers.beginBroadcast();
+ for (int i = 0; i < length; i++) {
+ try {
+ mObservers.getBroadcastItem(i).interfaceDnsServerInfo(iface, lifetime, addresses);
} catch (RemoteException e) {
} catch (RuntimeException e) {
}
@@ -455,6 +471,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub
@Override
public boolean onEvent(int code, String raw, String[] cooked) {
+ String errorMessage = String.format("Invalid event from daemon (%s)", raw);
switch (code) {
case NetdResponseCode.InterfaceChange:
/*
@@ -465,8 +482,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub
* "NNN Iface linkstatus <name> <up/down>"
*/
if (cooked.length < 4 || !cooked[1].equals("Iface")) {
- throw new IllegalStateException(
- String.format("Invalid event from daemon (%s)", raw));
+ throw new IllegalStateException(errorMessage);
}
if (cooked[2].equals("added")) {
notifyInterfaceAdded(cooked[3]);
@@ -481,8 +497,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub
notifyInterfaceLinkStateChanged(cooked[3], cooked[4].equals("up"));
return true;
}
- throw new IllegalStateException(
- String.format("Invalid event from daemon (%s)", raw));
+ throw new IllegalStateException(errorMessage);
// break;
case NetdResponseCode.BandwidthControl:
/*
@@ -490,15 +505,13 @@ public class NetworkManagementService extends INetworkManagementService.Stub
* Format: "NNN limit alert <alertName> <ifaceName>"
*/
if (cooked.length < 5 || !cooked[1].equals("limit")) {
- throw new IllegalStateException(
- String.format("Invalid event from daemon (%s)", raw));
+ throw new IllegalStateException(errorMessage);
}
if (cooked[2].equals("alert")) {
notifyLimitReached(cooked[3], cooked[4]);
return true;
}
- throw new IllegalStateException(
- String.format("Invalid event from daemon (%s)", raw));
+ throw new IllegalStateException(errorMessage);
// break;
case NetdResponseCode.InterfaceClassActivity:
/*
@@ -506,8 +519,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub
* Format: "NNN IfaceClass <active/idle> <label>"
*/
if (cooked.length < 4 || !cooked[1].equals("IfaceClass")) {
- throw new IllegalStateException(
- String.format("Invalid event from daemon (%s)", raw));
+ throw new IllegalStateException(errorMessage);
}
boolean isActive = cooked[2].equals("active");
notifyInterfaceClassActivity(cooked[3], isActive);
@@ -519,24 +531,46 @@ public class NetworkManagementService extends INetworkManagementService.Stub
* Format: "NNN Address updated <addr> <iface> <flags> <scope>"
* "NNN Address removed <addr> <iface> <flags> <scope>"
*/
- String msg = String.format("Invalid event from daemon (%s)", raw);
- if (cooked.length < 6 || !cooked[1].equals("Address")) {
- throw new IllegalStateException(msg);
+ if (cooked.length < 7 || !cooked[1].equals("Address")) {
+ throw new IllegalStateException(errorMessage);
}
- int flags;
- int scope;
+ String iface = cooked[4];
+ LinkAddress address;
try {
- flags = Integer.parseInt(cooked[5]);
- scope = Integer.parseInt(cooked[6]);
- } catch(NumberFormatException e) {
- throw new IllegalStateException(msg);
+ int flags = Integer.parseInt(cooked[5]);
+ int scope = Integer.parseInt(cooked[6]);
+ address = new LinkAddress(cooked[3], flags, scope);
+ } catch(NumberFormatException e) { // Non-numeric lifetime or scope.
+ throw new IllegalStateException(errorMessage, e);
+ } catch(IllegalArgumentException e) { // Malformed/invalid IP address.
+ throw new IllegalStateException(errorMessage, e);
}
if (cooked[2].equals("updated")) {
- notifyAddressUpdated(cooked[3], cooked[4], flags, scope);
+ notifyAddressUpdated(iface, address);
} else {
- notifyAddressRemoved(cooked[3], cooked[4], flags, scope);
+ notifyAddressRemoved(iface, address);
+ }
+ return true;
+ // break;
+ case NetdResponseCode.InterfaceDnsServerInfo:
+ /*
+ * Information about available DNS servers has been received.
+ * Format: "NNN DnsInfo servers <interface> <lifetime> <servers>"
+ */
+ long lifetime; // Actually a 32-bit unsigned integer.
+
+ if (cooked.length == 6 &&
+ cooked[1].equals("DnsInfo") &&
+ cooked[2].equals("servers")) {
+ try {
+ lifetime = Long.parseLong(cooked[4]);
+ } catch (NumberFormatException e) {
+ throw new IllegalStateException(errorMessage);
+ }
+ String[] servers = cooked[5].split(",");
+ notifyInterfaceDnsServerInfo(cooked[3], lifetime, servers);
}
return true;
// break;
diff --git a/services/java/com/android/server/NetworkTimeUpdateService.java b/services/core/java/com/android/server/NetworkTimeUpdateService.java
index fddb54e138e2..fddb54e138e2 100644
--- a/services/java/com/android/server/NetworkTimeUpdateService.java
+++ b/services/core/java/com/android/server/NetworkTimeUpdateService.java
diff --git a/services/java/com/android/server/NsdService.java b/services/core/java/com/android/server/NsdService.java
index 16d2468e7c9d..16d2468e7c9d 100644
--- a/services/java/com/android/server/NsdService.java
+++ b/services/core/java/com/android/server/NsdService.java
diff --git a/services/java/com/android/server/RandomBlock.java b/services/core/java/com/android/server/RandomBlock.java
index e5d73015cdfc..6d6d9010a8d9 100644
--- a/services/java/com/android/server/RandomBlock.java
+++ b/services/core/java/com/android/server/RandomBlock.java
@@ -27,13 +27,13 @@ import java.io.InputStream;
import java.io.RandomAccessFile;
/**
- * A 4k block of random {@code byte}s.
+ * A block of 512 random {@code byte}s.
*/
class RandomBlock {
private static final String TAG = "RandomBlock";
private static final boolean DEBUG = false;
- private static final int BLOCK_SIZE = 4096;
+ private static final int BLOCK_SIZE = 512;
private byte[] block = new byte[BLOCK_SIZE];
private RandomBlock() { }
diff --git a/services/java/com/android/server/RecognitionManagerService.java b/services/core/java/com/android/server/RecognitionManagerService.java
index c2e749d3382a..c2e749d3382a 100644
--- a/services/java/com/android/server/RecognitionManagerService.java
+++ b/services/core/java/com/android/server/RecognitionManagerService.java
diff --git a/services/java/com/android/server/SamplingProfilerService.java b/services/core/java/com/android/server/SamplingProfilerService.java
index fbf1aa4b8db0..fbf1aa4b8db0 100644
--- a/services/java/com/android/server/SamplingProfilerService.java
+++ b/services/core/java/com/android/server/SamplingProfilerService.java
diff --git a/services/java/com/android/server/SerialService.java b/services/core/java/com/android/server/SerialService.java
index 1abe4588261a..1abe4588261a 100644
--- a/services/java/com/android/server/SerialService.java
+++ b/services/core/java/com/android/server/SerialService.java
diff --git a/services/core/java/com/android/server/ServiceThread.java b/services/core/java/com/android/server/ServiceThread.java
new file mode 100644
index 000000000000..bce64afd0c5e
--- /dev/null
+++ b/services/core/java/com/android/server/ServiceThread.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.server;
+
+import android.os.HandlerThread;
+import android.os.Process;
+import android.os.StrictMode;
+import android.util.Slog;
+
+/**
+ * Special handler thread that we create for system services that require their own loopers.
+ */
+public class ServiceThread extends HandlerThread {
+ private static final String TAG = "ServiceThread";
+
+ private final boolean mAllowIo;
+
+ public ServiceThread(String name, int priority, boolean allowIo) {
+ super(name, priority);
+ mAllowIo = allowIo;
+ }
+
+ @Override
+ public void run() {
+ Process.setCanSelfBackground(false);
+
+ // For debug builds, log event loop stalls to dropbox for analysis.
+ if (!mAllowIo && StrictMode.conditionallyEnableDebugLogging()) {
+ Slog.i(TAG, "Enabled StrictMode logging for " + getName() + " looper.");
+ }
+
+ super.run();
+ }
+} \ No newline at end of file
diff --git a/services/java/com/android/server/ServiceWatcher.java b/services/core/java/com/android/server/ServiceWatcher.java
index 5c7bfab7ec20..5c7bfab7ec20 100644
--- a/services/java/com/android/server/ServiceWatcher.java
+++ b/services/core/java/com/android/server/ServiceWatcher.java
diff --git a/services/java/com/android/server/ShutdownActivity.java b/services/core/java/com/android/server/ShutdownActivity.java
index be651417150f..be651417150f 100644
--- a/services/java/com/android/server/ShutdownActivity.java
+++ b/services/core/java/com/android/server/ShutdownActivity.java
diff --git a/services/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java
index 699d79eb0953..699d79eb0953 100644
--- a/services/java/com/android/server/TelephonyRegistry.java
+++ b/services/core/java/com/android/server/TelephonyRegistry.java
diff --git a/services/java/com/android/server/TextServicesManagerService.java b/services/core/java/com/android/server/TextServicesManagerService.java
index 09647674e07f..09647674e07f 100644
--- a/services/java/com/android/server/TextServicesManagerService.java
+++ b/services/core/java/com/android/server/TextServicesManagerService.java
diff --git a/services/java/com/android/server/TwilightCalculator.java b/services/core/java/com/android/server/TwilightCalculator.java
index a5c93b5173d4..a5c93b5173d4 100644
--- a/services/java/com/android/server/TwilightCalculator.java
+++ b/services/core/java/com/android/server/TwilightCalculator.java
diff --git a/services/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java
index 062be01ab26a..94f699fccd65 100644
--- a/services/java/com/android/server/UiModeManagerService.java
+++ b/services/core/java/com/android/server/UiModeManagerService.java
@@ -34,9 +34,9 @@ import android.content.res.Configuration;
import android.os.BatteryManager;
import android.os.Binder;
import android.os.Handler;
+import android.os.IBinder;
import android.os.PowerManager;
import android.os.RemoteException;
-import android.os.ServiceManager;
import android.os.UserHandle;
import android.provider.Settings;
import android.service.dreams.Sandman;
@@ -47,9 +47,11 @@ import java.io.PrintWriter;
import com.android.internal.R;
import com.android.internal.app.DisableCarModeActivity;
-import com.android.server.TwilightService.TwilightState;
+import com.android.server.twilight.TwilightListener;
+import com.android.server.twilight.TwilightManager;
+import com.android.server.twilight.TwilightState;
-final class UiModeManagerService extends IUiModeManager.Stub {
+final class UiModeManagerService extends SystemService {
private static final String TAG = UiModeManager.class.getSimpleName();
private static final boolean LOG = false;
@@ -57,40 +59,40 @@ final class UiModeManagerService extends IUiModeManager.Stub {
private static final boolean ENABLE_LAUNCH_CAR_DOCK_APP = true;
private static final boolean ENABLE_LAUNCH_DESK_DOCK_APP = true;
- private final Context mContext;
- private final TwilightService mTwilightService;
- private final Handler mHandler = new Handler();
-
final Object mLock = new Object();
-
private int mDockState = Intent.EXTRA_DOCK_STATE_UNDOCKED;
+
private int mLastBroadcastState = Intent.EXTRA_DOCK_STATE_UNDOCKED;
+ int mNightMode = UiModeManager.MODE_NIGHT_NO;
- private int mNightMode = UiModeManager.MODE_NIGHT_NO;
private boolean mCarModeEnabled = false;
private boolean mCharging = false;
- private final int mDefaultUiModeType;
- private final boolean mCarModeKeepsScreenOn;
- private final boolean mDeskModeKeepsScreenOn;
- private final boolean mTelevision;
-
+ private int mDefaultUiModeType;
+ private boolean mCarModeKeepsScreenOn;
+ private boolean mDeskModeKeepsScreenOn;
+ private boolean mTelevision;
private boolean mComputedNightMode;
- private int mCurUiMode = 0;
- private int mSetUiMode = 0;
+ int mCurUiMode = 0;
+ private int mSetUiMode = 0;
private boolean mHoldingConfiguration = false;
+
private Configuration mConfiguration = new Configuration();
+ boolean mSystemReady;
- private boolean mSystemReady;
+ private final Handler mHandler = new Handler();
+ private TwilightManager mTwilightManager;
private NotificationManager mNotificationManager;
-
private StatusBarManager mStatusBarManager;
- private final PowerManager mPowerManager;
- private final PowerManager.WakeLock mWakeLock;
+ private PowerManager.WakeLock mWakeLock;
+
+ public UiModeManagerService(Context context) {
+ super(context);
+ }
- static Intent buildHomeIntent(String category) {
+ private static Intent buildHomeIntent(String category) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(category);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
@@ -142,28 +144,26 @@ final class UiModeManagerService extends IUiModeManager.Stub {
}
};
- private final TwilightService.TwilightListener mTwilightListener =
- new TwilightService.TwilightListener() {
+ private final TwilightListener mTwilightListener = new TwilightListener() {
@Override
public void onTwilightStateChanged() {
updateTwilight();
}
};
- public UiModeManagerService(Context context, TwilightService twilight) {
- mContext = context;
- mTwilightService = twilight;
-
- ServiceManager.addService(Context.UI_MODE_SERVICE, this);
-
- mContext.registerReceiver(mDockModeReceiver,
+ @Override
+ public void onStart() {
+ final Context context = getContext();
+ mTwilightManager = getLocalService(TwilightManager.class);
+ final PowerManager powerManager =
+ (PowerManager) context.getSystemService(Context.POWER_SERVICE);
+ mWakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, TAG);
+
+ context.registerReceiver(mDockModeReceiver,
new IntentFilter(Intent.ACTION_DOCK_EVENT));
- mContext.registerReceiver(mBatteryReceiver,
+ context.registerReceiver(mBatteryReceiver,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
- mPowerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
- mWakeLock = mPowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, TAG);
-
mConfiguration.setToDefaults();
mDefaultUiModeType = context.getResources().getInteger(
@@ -173,103 +173,143 @@ final class UiModeManagerService extends IUiModeManager.Stub {
mDeskModeKeepsScreenOn = (context.getResources().getInteger(
com.android.internal.R.integer.config_deskDockKeepsScreenOn) == 1);
mTelevision = context.getPackageManager().hasSystemFeature(
- PackageManager.FEATURE_TELEVISION);
+ PackageManager.FEATURE_TELEVISION) ||
+ context.getPackageManager().hasSystemFeature(
+ PackageManager.FEATURE_LEANBACK);
- mNightMode = Settings.Secure.getInt(mContext.getContentResolver(),
+ mNightMode = Settings.Secure.getInt(context.getContentResolver(),
Settings.Secure.UI_NIGHT_MODE, UiModeManager.MODE_NIGHT_AUTO);
- mTwilightService.registerListener(mTwilightListener, mHandler);
+ mTwilightManager.registerListener(mTwilightListener, mHandler);
+
+ publishBinderService(Context.UI_MODE_SERVICE, mService);
}
- @Override // Binder call
- public void disableCarMode(int flags) {
- final long ident = Binder.clearCallingIdentity();
- try {
- synchronized (mLock) {
- setCarModeLocked(false);
- if (mSystemReady) {
- updateLocked(0, flags);
+ private final IBinder mService = new IUiModeManager.Stub() {
+ @Override
+ public void enableCarMode(int flags) {
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ synchronized (mLock) {
+ setCarModeLocked(true);
+ if (mSystemReady) {
+ updateLocked(flags, 0);
+ }
}
+ } finally {
+ Binder.restoreCallingIdentity(ident);
}
- } finally {
- Binder.restoreCallingIdentity(ident);
}
- }
- @Override // Binder call
- public void enableCarMode(int flags) {
- final long ident = Binder.clearCallingIdentity();
- try {
- synchronized (mLock) {
- setCarModeLocked(true);
- if (mSystemReady) {
- updateLocked(flags, 0);
+ @Override
+ public void disableCarMode(int flags) {
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ synchronized (mLock) {
+ setCarModeLocked(false);
+ if (mSystemReady) {
+ updateLocked(0, flags);
+ }
}
+ } finally {
+ Binder.restoreCallingIdentity(ident);
}
- } finally {
- Binder.restoreCallingIdentity(ident);
}
- }
- @Override // Binder call
- public int getCurrentModeType() {
- final long ident = Binder.clearCallingIdentity();
- try {
- synchronized (mLock) {
- return mCurUiMode & Configuration.UI_MODE_TYPE_MASK;
+ @Override
+ public int getCurrentModeType() {
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ synchronized (mLock) {
+ return mCurUiMode & Configuration.UI_MODE_TYPE_MASK;
+ }
+ } finally {
+ Binder.restoreCallingIdentity(ident);
}
- } finally {
- Binder.restoreCallingIdentity(ident);
}
- }
- @Override // Binder call
- public void setNightMode(int mode) {
- switch (mode) {
- case UiModeManager.MODE_NIGHT_NO:
- case UiModeManager.MODE_NIGHT_YES:
- case UiModeManager.MODE_NIGHT_AUTO:
- break;
- default:
- throw new IllegalArgumentException("Unknown mode: " + mode);
+ @Override
+ public void setNightMode(int mode) {
+ switch (mode) {
+ case UiModeManager.MODE_NIGHT_NO:
+ case UiModeManager.MODE_NIGHT_YES:
+ case UiModeManager.MODE_NIGHT_AUTO:
+ break;
+ default:
+ throw new IllegalArgumentException("Unknown mode: " + mode);
+ }
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ synchronized (mLock) {
+ if (isDoingNightModeLocked() && mNightMode != mode) {
+ Settings.Secure.putInt(getContext().getContentResolver(),
+ Settings.Secure.UI_NIGHT_MODE, mode);
+ mNightMode = mode;
+ updateLocked(0, 0);
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
}
- final long ident = Binder.clearCallingIdentity();
- try {
+ @Override
+ public int getNightMode() {
synchronized (mLock) {
- if (isDoingNightModeLocked() && mNightMode != mode) {
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.UI_NIGHT_MODE, mode);
- mNightMode = mode;
- updateLocked(0, 0);
- }
+ return mNightMode;
}
- } finally {
- Binder.restoreCallingIdentity(ident);
}
- }
- @Override // Binder call
- public int getNightMode() {
+ @Override
+ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ if (getContext().checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
+ != PackageManager.PERMISSION_GRANTED) {
+
+ pw.println("Permission Denial: can't dump uimode service from from pid="
+ + Binder.getCallingPid()
+ + ", uid=" + Binder.getCallingUid());
+ return;
+ }
+
+ dumpImpl(pw);
+ }
+ };
+
+ void dumpImpl(PrintWriter pw) {
synchronized (mLock) {
- return mNightMode;
+ pw.println("Current UI Mode Service state:");
+ pw.print(" mDockState="); pw.print(mDockState);
+ pw.print(" mLastBroadcastState="); pw.println(mLastBroadcastState);
+ pw.print(" mNightMode="); pw.print(mNightMode);
+ pw.print(" mCarModeEnabled="); pw.print(mCarModeEnabled);
+ pw.print(" mComputedNightMode="); pw.println(mComputedNightMode);
+ pw.print(" mCurUiMode=0x"); pw.print(Integer.toHexString(mCurUiMode));
+ pw.print(" mSetUiMode=0x"); pw.println(Integer.toHexString(mSetUiMode));
+ pw.print(" mHoldingConfiguration="); pw.print(mHoldingConfiguration);
+ pw.print(" mSystemReady="); pw.println(mSystemReady);
+ pw.print(" mTwilightService.getCurrentState()=");
+ pw.println(mTwilightManager.getCurrentState());
}
}
- void systemReady() {
- synchronized (mLock) {
- mSystemReady = true;
- mCarModeEnabled = mDockState == Intent.EXTRA_DOCK_STATE_CAR;
- updateComputedNightModeLocked();
- updateLocked(0, 0);
+ @Override
+ public void onBootPhase(int phase) {
+ if (phase == SystemService.PHASE_SYSTEM_SERVICES_READY) {
+ synchronized (mLock) {
+ mSystemReady = true;
+ mCarModeEnabled = mDockState == Intent.EXTRA_DOCK_STATE_CAR;
+ updateComputedNightModeLocked();
+ updateLocked(0, 0);
+ }
}
}
- private boolean isDoingNightModeLocked() {
+ boolean isDoingNightModeLocked() {
return mCarModeEnabled || mDockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;
}
- private void setCarModeLocked(boolean enabled) {
+ void setCarModeLocked(boolean enabled) {
if (mCarModeEnabled != enabled) {
mCarModeEnabled = enabled;
}
@@ -344,7 +384,7 @@ final class UiModeManagerService extends IUiModeManager.Stub {
}
}
- private void updateLocked(int enableFlags, int disableFlags) {
+ void updateLocked(int enableFlags, int disableFlags) {
String action = null;
String oldAction = null;
if (mLastBroadcastState == Intent.EXTRA_DOCK_STATE_CAR) {
@@ -359,7 +399,7 @@ final class UiModeManagerService extends IUiModeManager.Stub {
adjustStatusBarCarModeLocked();
if (oldAction != null) {
- mContext.sendBroadcastAsUser(new Intent(oldAction), UserHandle.ALL);
+ getContext().sendBroadcastAsUser(new Intent(oldAction), UserHandle.ALL);
}
mLastBroadcastState = Intent.EXTRA_DOCK_STATE_CAR;
action = UiModeManager.ACTION_ENTER_CAR_MODE;
@@ -367,7 +407,7 @@ final class UiModeManagerService extends IUiModeManager.Stub {
} else if (isDeskDockState(mDockState)) {
if (!isDeskDockState(mLastBroadcastState)) {
if (oldAction != null) {
- mContext.sendBroadcastAsUser(new Intent(oldAction), UserHandle.ALL);
+ getContext().sendBroadcastAsUser(new Intent(oldAction), UserHandle.ALL);
}
mLastBroadcastState = mDockState;
action = UiModeManager.ACTION_ENTER_DESK_MODE;
@@ -393,7 +433,7 @@ final class UiModeManagerService extends IUiModeManager.Stub {
Intent intent = new Intent(action);
intent.putExtra("enableFlags", enableFlags);
intent.putExtra("disableFlags", disableFlags);
- mContext.sendOrderedBroadcastAsUser(intent, UserHandle.CURRENT, null,
+ getContext().sendOrderedBroadcastAsUser(intent, UserHandle.CURRENT, null,
mResultReceiver, null, Activity.RESULT_OK, null, null);
// Attempting to make this transition a little more clean, we are going
@@ -491,7 +531,7 @@ final class UiModeManagerService extends IUiModeManager.Stub {
// activity manager take care of both the start and config
// change.
Intent homeIntent = buildHomeIntent(category);
- if (Sandman.shouldStartDockApp(mContext, homeIntent)) {
+ if (Sandman.shouldStartDockApp(getContext(), homeIntent)) {
try {
int result = ActivityManagerNative.getDefault().startActivityWithConfig(
null, null, homeIntent, null, null, null, 0, 0,
@@ -513,14 +553,15 @@ final class UiModeManagerService extends IUiModeManager.Stub {
// If we did not start a dock app, then start dreaming if supported.
if (category != null && !dockAppStarted) {
- Sandman.startDreamWhenDockedIfAppropriate(mContext);
+ Sandman.startDreamWhenDockedIfAppropriate(getContext());
}
}
private void adjustStatusBarCarModeLocked() {
+ final Context context = getContext();
if (mStatusBarManager == null) {
mStatusBarManager = (StatusBarManager)
- mContext.getSystemService(Context.STATUS_BAR_SERVICE);
+ context.getSystemService(Context.STATUS_BAR_SERVICE);
}
// Fear not: StatusBarManagerService manages a list of requests to disable
@@ -536,12 +577,12 @@ final class UiModeManagerService extends IUiModeManager.Stub {
if (mNotificationManager == null) {
mNotificationManager = (NotificationManager)
- mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+ context.getSystemService(Context.NOTIFICATION_SERVICE);
}
if (mNotificationManager != null) {
if (mCarModeEnabled) {
- Intent carModeOffIntent = new Intent(mContext, DisableCarModeActivity.class);
+ Intent carModeOffIntent = new Intent(context, DisableCarModeActivity.class);
Notification n = new Notification();
n.icon = R.drawable.stat_notify_car_mode;
@@ -549,10 +590,10 @@ final class UiModeManagerService extends IUiModeManager.Stub {
n.flags = Notification.FLAG_ONGOING_EVENT;
n.when = 0;
n.setLatestEventInfo(
- mContext,
- mContext.getString(R.string.car_mode_disable_notification_title),
- mContext.getString(R.string.car_mode_disable_notification_message),
- PendingIntent.getActivityAsUser(mContext, 0, carModeOffIntent, 0,
+ context,
+ context.getString(R.string.car_mode_disable_notification_title),
+ context.getString(R.string.car_mode_disable_notification_message),
+ PendingIntent.getActivityAsUser(context, 0, carModeOffIntent, 0,
null, UserHandle.CURRENT));
mNotificationManager.notifyAsUser(null,
R.string.car_mode_disable_notification_title, n, UserHandle.ALL);
@@ -563,7 +604,7 @@ final class UiModeManagerService extends IUiModeManager.Stub {
}
}
- private void updateTwilight() {
+ void updateTwilight() {
synchronized (mLock) {
if (isDoingNightModeLocked() && mNightMode == UiModeManager.MODE_NIGHT_AUTO) {
updateComputedNightModeLocked();
@@ -573,36 +614,11 @@ final class UiModeManagerService extends IUiModeManager.Stub {
}
private void updateComputedNightModeLocked() {
- TwilightState state = mTwilightService.getCurrentState();
+ TwilightState state = mTwilightManager.getCurrentState();
if (state != null) {
mComputedNightMode = state.isNight();
}
}
- @Override
- protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
- != PackageManager.PERMISSION_GRANTED) {
- pw.println("Permission Denial: can't dump uimode service from from pid="
- + Binder.getCallingPid()
- + ", uid=" + Binder.getCallingUid());
- return;
- }
-
- synchronized (mLock) {
- pw.println("Current UI Mode Service state:");
- pw.print(" mDockState="); pw.print(mDockState);
- pw.print(" mLastBroadcastState="); pw.println(mLastBroadcastState);
- pw.print(" mNightMode="); pw.print(mNightMode);
- pw.print(" mCarModeEnabled="); pw.print(mCarModeEnabled);
- pw.print(" mComputedNightMode="); pw.println(mComputedNightMode);
- pw.print(" mCurUiMode=0x"); pw.print(Integer.toHexString(mCurUiMode));
- pw.print(" mSetUiMode=0x"); pw.println(Integer.toHexString(mSetUiMode));
- pw.print(" mHoldingConfiguration="); pw.print(mHoldingConfiguration);
- pw.print(" mSystemReady="); pw.println(mSystemReady);
- pw.print(" mTwilightService.getCurrentState()=");
- pw.println(mTwilightService.getCurrentState());
- }
- }
}
diff --git a/services/java/com/android/server/UiThread.java b/services/core/java/com/android/server/UiThread.java
index 60d73aa6cacb..0beb77fb4b92 100644
--- a/services/java/com/android/server/UiThread.java
+++ b/services/core/java/com/android/server/UiThread.java
@@ -17,21 +17,18 @@
package com.android.server;
import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.StrictMode;
-import android.util.Slog;
/**
* Shared singleton thread for showing UI. This is a foreground thread, and in
* additional should not have operations that can take more than a few ms scheduled
* on it to avoid UI jank.
*/
-public final class UiThread extends HandlerThread {
+public final class UiThread extends ServiceThread {
private static UiThread sInstance;
private static Handler sHandler;
private UiThread() {
- super("android.ui", android.os.Process.THREAD_PRIORITY_FOREGROUND);
+ super("android.ui", android.os.Process.THREAD_PRIORITY_FOREGROUND, false /*allowIo*/);
}
private static void ensureThreadLocked() {
@@ -39,19 +36,6 @@ public final class UiThread extends HandlerThread {
sInstance = new UiThread();
sInstance.start();
sHandler = new Handler(sInstance.getLooper());
- sHandler.post(new Runnable() {
- @Override
- public void run() {
- //Looper.myLooper().setMessageLogging(new LogPrinter(
- // Log.VERBOSE, "WindowManagerPolicy", Log.LOG_ID_SYSTEM));
- android.os.Process.setCanSelfBackground(false);
-
- // For debug builds, log event loop stalls to dropbox for analysis.
- if (StrictMode.conditionallyEnableDebugLogging()) {
- Slog.i("UiThread", "Enabled StrictMode logging for UI thread");
- }
- }
- });
}
}
diff --git a/services/java/com/android/server/UpdateLockService.java b/services/core/java/com/android/server/UpdateLockService.java
index 0f778cd17f8a..0f778cd17f8a 100644
--- a/services/java/com/android/server/UpdateLockService.java
+++ b/services/core/java/com/android/server/UpdateLockService.java
diff --git a/services/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java
index 28eb948d4169..28eb948d4169 100644
--- a/services/java/com/android/server/VibratorService.java
+++ b/services/core/java/com/android/server/VibratorService.java
diff --git a/services/java/com/android/server/Watchdog.java b/services/core/java/com/android/server/Watchdog.java
index e17f42d9f415..1ce073a7a836 100644
--- a/services/java/com/android/server/Watchdog.java
+++ b/services/core/java/com/android/server/Watchdog.java
@@ -20,18 +20,15 @@ import android.app.IActivityController;
import android.os.Binder;
import android.os.RemoteException;
import com.android.server.am.ActivityManagerService;
-import com.android.server.power.PowerManagerService;
-import android.app.AlarmManager;
-import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.os.BatteryManager;
import android.os.Debug;
import android.os.Handler;
+import android.os.IPowerManager;
import android.os.Looper;
import android.os.Process;
import android.os.ServiceManager;
@@ -45,7 +42,6 @@ import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Calendar;
/** This class calls its monitor every minute. Killing this process if they don't return **/
public class Watchdog extends Thread {
@@ -80,9 +76,6 @@ public class Watchdog extends Thread {
final ArrayList<HandlerChecker> mHandlerCheckers = new ArrayList<HandlerChecker>();
final HandlerChecker mMonitorChecker;
ContentResolver mResolver;
- BatteryService mBattery;
- PowerManagerService mPower;
- AlarmManagerService mAlarm;
ActivityManagerService mActivity;
int mPhonePid;
@@ -232,15 +225,13 @@ public class Watchdog extends Thread {
// And also check IO thread.
mHandlerCheckers.add(new HandlerChecker(IoThread.getHandler(),
"i/o thread", DEFAULT_TIMEOUT));
+ // And the display thread.
+ mHandlerCheckers.add(new HandlerChecker(DisplayThread.getHandler(),
+ "display thread", DEFAULT_TIMEOUT));
}
- public void init(Context context, BatteryService battery,
- PowerManagerService power, AlarmManagerService alarm,
- ActivityManagerService activity) {
+ public void init(Context context, ActivityManagerService activity) {
mResolver = context.getContentResolver();
- mBattery = battery;
- mPower = power;
- mAlarm = alarm;
mActivity = activity;
context.registerReceiver(new RebootRequestReceiver(),
@@ -277,15 +268,16 @@ public class Watchdog extends Thread {
}
}
- public void addThread(Handler thread, String name) {
- addThread(thread, name, DEFAULT_TIMEOUT);
+ public void addThread(Handler thread) {
+ addThread(thread, DEFAULT_TIMEOUT);
}
- public void addThread(Handler thread, String name, long timeoutMillis) {
+ public void addThread(Handler thread, long timeoutMillis) {
synchronized (this) {
if (isAlive()) {
throw new RuntimeException("Threads can't be added once the Watchdog is running");
}
+ final String name = thread.getLooper().getThread().getName();
mHandlerCheckers.add(new HandlerChecker(thread, name, timeoutMillis));
}
}
@@ -295,8 +287,11 @@ public class Watchdog extends Thread {
*/
void rebootSystem(String reason) {
Slog.i(TAG, "Rebooting system because: " + reason);
- PowerManagerService pms = (PowerManagerService) ServiceManager.getService("power");
- pms.reboot(false, reason, false);
+ IPowerManager pms = (IPowerManager)ServiceManager.getService(Context.POWER_SERVICE);
+ try {
+ pms.reboot(false, reason, false);
+ } catch (RemoteException ex) {
+ }
}
private int evaluateCheckerCompletionLocked() {
diff --git a/services/java/com/android/server/WiredAccessoryManager.java b/services/core/java/com/android/server/WiredAccessoryManager.java
index 415fcc126aae..415fcc126aae 100644
--- a/services/java/com/android/server/WiredAccessoryManager.java
+++ b/services/core/java/com/android/server/WiredAccessoryManager.java
diff --git a/services/java/com/android/server/accounts/AccountAuthenticatorCache.java b/services/core/java/com/android/server/accounts/AccountAuthenticatorCache.java
index 75523680d335..75523680d335 100644
--- a/services/java/com/android/server/accounts/AccountAuthenticatorCache.java
+++ b/services/core/java/com/android/server/accounts/AccountAuthenticatorCache.java
diff --git a/services/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java
index aa9849ef5641..aa9849ef5641 100644
--- a/services/java/com/android/server/accounts/AccountManagerService.java
+++ b/services/core/java/com/android/server/accounts/AccountManagerService.java
diff --git a/services/java/com/android/server/accounts/IAccountAuthenticatorCache.java b/services/core/java/com/android/server/accounts/IAccountAuthenticatorCache.java
index bb09687720cc..bb09687720cc 100644
--- a/services/java/com/android/server/accounts/IAccountAuthenticatorCache.java
+++ b/services/core/java/com/android/server/accounts/IAccountAuthenticatorCache.java
diff --git a/services/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index 17bb3e0f525b..17bb3e0f525b 100644
--- a/services/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index e2050fc97fe1..6c3f528e491e 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -28,11 +28,15 @@ import static org.xmlpull.v1.XmlPullParser.START_TAG;
import static com.android.server.am.ActivityStackSupervisor.HOME_STACK_ID;
import android.app.AppOpsManager;
+import android.app.IActivityContainer;
+import android.app.IActivityContainerCallback;
import android.appwidget.AppWidgetManager;
+import android.graphics.Rect;
import android.util.ArrayMap;
import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.app.IAppOpsService;
+import com.android.internal.app.ProcessMap;
import com.android.internal.app.ProcessStats;
import com.android.internal.os.BackgroundThread;
import com.android.internal.os.BatteryStatsImpl;
@@ -45,14 +49,13 @@ import com.android.internal.util.Preconditions;
import com.android.server.AppOpsService;
import com.android.server.AttributeCache;
import com.android.server.IntentResolver;
-import com.android.internal.app.ProcessMap;
-import com.android.server.SystemServer;
+import com.android.server.ServiceThread;
+import com.android.server.SystemService;
import com.android.server.Watchdog;
import com.android.server.am.ActivityStack.ActivityState;
import com.android.server.firewall.IntentFirewall;
import com.android.server.pm.UserManagerService;
import com.android.server.wm.AppTransition;
-import com.android.server.wm.StackBox;
import com.android.server.wm.WindowManagerService;
import com.google.android.collect.Lists;
import com.google.android.collect.Maps;
@@ -68,7 +71,6 @@ import org.xmlpull.v1.XmlSerializer;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningTaskInfo;
-import android.app.ActivityManager.StackBoxInfo;
import android.app.ActivityManager.StackInfo;
import android.app.ActivityManagerNative;
import android.app.ActivityOptions;
@@ -134,6 +136,7 @@ import android.os.Bundle;
import android.os.Debug;
import android.os.DropBoxManager;
import android.os.Environment;
+import android.os.FactoryTest;
import android.os.FileObserver;
import android.os.FileUtils;
import android.os.Handler;
@@ -331,8 +334,6 @@ public final class ActivityManagerService extends ActivityManagerNative
public IntentFirewall mIntentFirewall;
- private final boolean mHeadless;
-
// Whether we should show our dialogs (ANR, crash, etc) or just perform their
// default actuion automatically. Important for devices without direct input
// devices.
@@ -747,7 +748,7 @@ public final class ActivityManagerService extends ActivityManagerNative
}
}
- private static ThreadLocal<Identity> sCallerIdentity = new ThreadLocal<Identity>();
+ private static final ThreadLocal<Identity> sCallerIdentity = new ThreadLocal<Identity>();
/**
* All information we have collected about the runtime performance of
@@ -996,8 +997,7 @@ public final class ActivityManagerService extends ActivityManagerNative
WindowManagerService mWindowManager;
- static ActivityManagerService mSelf;
- static ActivityThread mSystemThread;
+ final ActivityThread mSystemThread;
int mCurrentUserId = 0;
private UserManagerService mUserManager;
@@ -1074,10 +1074,13 @@ public final class ActivityManagerService extends ActivityManagerNative
*/
private boolean mUserIsMonkey;
- final Handler mHandler = new Handler() {
- //public Handler() {
- // if (localLOGV) Slog.v(TAG, "Handler started!");
- //}
+ final ServiceThread mHandlerThread;
+ final MainHandler mHandler;
+
+ final class MainHandler extends Handler {
+ public MainHandler(Looper looper) {
+ super(looper, null, true);
+ }
@Override
public void handleMessage(Message msg) {
@@ -1328,7 +1331,7 @@ public final class ActivityManagerService extends ActivityManagerNative
String pkg = bundle.getString("pkg");
String reason = bundle.getString("reason");
forceStopPackageLocked(pkg, appid, restart, false, true, false,
- false, UserHandle.USER_ALL, reason);
+ UserHandle.USER_ALL, reason);
}
} break;
case FINALIZE_PENDING_INTENT_MSG: {
@@ -1730,38 +1733,34 @@ public final class ActivityManagerService extends ActivityManagerNative
}
};
- public static void setSystemProcess() {
+ public void setSystemProcess() {
try {
- ActivityManagerService m = mSelf;
-
- ServiceManager.addService(Context.ACTIVITY_SERVICE, m, true);
- ServiceManager.addService(ProcessStats.SERVICE_NAME, m.mProcessStats);
- ServiceManager.addService("meminfo", new MemBinder(m));
- ServiceManager.addService("gfxinfo", new GraphicsBinder(m));
- ServiceManager.addService("dbinfo", new DbBinder(m));
+ ServiceManager.addService(Context.ACTIVITY_SERVICE, this, true);
+ ServiceManager.addService(ProcessStats.SERVICE_NAME, mProcessStats);
+ ServiceManager.addService("meminfo", new MemBinder(this));
+ ServiceManager.addService("gfxinfo", new GraphicsBinder(this));
+ ServiceManager.addService("dbinfo", new DbBinder(this));
if (MONITOR_CPU_USAGE) {
- ServiceManager.addService("cpuinfo", new CpuBinder(m));
+ ServiceManager.addService("cpuinfo", new CpuBinder(this));
}
- ServiceManager.addService("permission", new PermissionController(m));
+ ServiceManager.addService("permission", new PermissionController(this));
- ApplicationInfo info =
- mSelf.mContext.getPackageManager().getApplicationInfo(
- "android", STOCK_PM_FLAGS);
+ ApplicationInfo info = mContext.getPackageManager().getApplicationInfo(
+ "android", STOCK_PM_FLAGS);
mSystemThread.installSystemApplicationInfo(info);
- synchronized (mSelf) {
- ProcessRecord app = mSelf.newProcessRecordLocked(info,
- info.processName, false);
+ synchronized (this) {
+ ProcessRecord app = newProcessRecordLocked(info, info.processName, false);
app.persistent = true;
app.pid = MY_PID;
app.maxAdj = ProcessList.SYSTEM_ADJ;
- app.makeActive(mSystemThread.getApplicationThread(), mSelf.mProcessStats);
- mSelf.mProcessNames.put(app.processName, app.uid, app);
- synchronized (mSelf.mPidsSelfLocked) {
- mSelf.mPidsSelfLocked.put(app.pid, app);
+ app.makeActive(mSystemThread.getApplicationThread(), mProcessStats);
+ mProcessNames.put(app.processName, app.uid, app);
+ synchronized (mPidsSelfLocked) {
+ mPidsSelfLocked.put(app.pid, app);
}
- mSelf.updateLruProcessLocked(app, false, null);
- mSelf.updateOomAdjLocked();
+ updateLruProcessLocked(app, false, null);
+ updateOomAdjLocked();
}
} catch (PackageManager.NameNotFoundException e) {
throw new RuntimeException(
@@ -1772,105 +1771,17 @@ public final class ActivityManagerService extends ActivityManagerNative
public void setWindowManager(WindowManagerService wm) {
mWindowManager = wm;
mStackSupervisor.setWindowManager(wm);
- wm.createStack(HOME_STACK_ID, -1, StackBox.TASK_STACK_GOES_OVER, 1.0f);
}
public void startObservingNativeCrashes() {
- final NativeCrashListener ncl = new NativeCrashListener();
+ final NativeCrashListener ncl = new NativeCrashListener(this);
ncl.start();
}
- public static final Context main(int factoryTest) {
- AThread thr = new AThread();
- thr.start();
-
- synchronized (thr) {
- while (thr.mService == null) {
- try {
- thr.wait();
- } catch (InterruptedException e) {
- }
- }
- }
-
- ActivityManagerService m = thr.mService;
- mSelf = m;
- ActivityThread at = ActivityThread.systemMain();
- mSystemThread = at;
- Context context = at.getSystemContext();
- context.setTheme(android.R.style.Theme_Holo);
- m.mContext = context;
- m.mFactoryTest = factoryTest;
- m.mIntentFirewall = new IntentFirewall(m.new IntentFirewallInterface());
-
- m.mStackSupervisor = new ActivityStackSupervisor(m, context, thr.mLooper);
-
- m.mBatteryStatsService.publish(context);
- m.mUsageStatsService.publish(context);
- m.mAppOpsService.publish(context);
-
- synchronized (thr) {
- thr.mReady = true;
- thr.notifyAll();
- }
-
- m.startRunning(null, null, null, null);
-
- return context;
- }
-
- public static ActivityManagerService self() {
- return mSelf;
- }
-
public IAppOpsService getAppOpsService() {
return mAppOpsService;
}
- static class AThread extends Thread {
- ActivityManagerService mService;
- Looper mLooper;
- boolean mReady = false;
-
- public AThread() {
- super("ActivityManager");
- }
-
- @Override
- public void run() {
- Looper.prepare();
-
- android.os.Process.setThreadPriority(
- android.os.Process.THREAD_PRIORITY_FOREGROUND);
- android.os.Process.setCanSelfBackground(false);
-
- ActivityManagerService m = new ActivityManagerService();
-
- synchronized (this) {
- mService = m;
- mLooper = Looper.myLooper();
- Watchdog.getInstance().addThread(new Handler(mLooper), getName());
- notifyAll();
- }
-
- synchronized (this) {
- while (!mReady) {
- try {
- wait();
- } catch (InterruptedException e) {
- }
- }
- }
-
- // For debug builds, log event loop stalls to dropbox for analysis.
- if (StrictMode.conditionallyEnableDebugLogging()) {
- Slog.i(TAG, "Enabled StrictMode logging for AThread's Looper");
- }
-
- Looper.loop();
- }
- }
-
static class MemBinder extends Binder {
ActivityManagerService mActivityManagerService;
MemBinder(ActivityManagerService activityManagerService) {
@@ -1955,22 +1866,54 @@ public final class ActivityManagerService extends ActivityManagerNative
}
}
- private ActivityManagerService() {
+ public static final class Lifecycle extends SystemService {
+ private final ActivityManagerService mService;
+
+ public Lifecycle(Context context) {
+ super(context);
+ mService = new ActivityManagerService(context);
+ }
+
+ @Override
+ public void onStart() {
+ mService.start();
+ }
+
+ public ActivityManagerService getService() {
+ return mService;
+ }
+ }
+
+ // Note: This method is invoked on the main thread but may need to attach various
+ // handlers to other threads. So take care to be explicit about the looper.
+ public ActivityManagerService(Context systemContext) {
+ mContext = systemContext;
+ mFactoryTest = FactoryTest.getMode();
+ mSystemThread = ActivityThread.currentActivityThread();
+
Slog.i(TAG, "Memory class: " + ActivityManager.staticGetMemoryClass());
- mFgBroadcastQueue = new BroadcastQueue(this, "foreground", BROADCAST_FG_TIMEOUT, false);
- mBgBroadcastQueue = new BroadcastQueue(this, "background", BROADCAST_BG_TIMEOUT, true);
+ mHandlerThread = new ServiceThread(TAG,
+ android.os.Process.THREAD_PRIORITY_FOREGROUND, false /*allowIo*/);
+ mHandlerThread.start();
+ mHandler = new MainHandler(mHandlerThread.getLooper());
+
+ mFgBroadcastQueue = new BroadcastQueue(this, mHandler,
+ "foreground", BROADCAST_FG_TIMEOUT, false);
+ mBgBroadcastQueue = new BroadcastQueue(this, mHandler,
+ "background", BROADCAST_BG_TIMEOUT, true);
mBroadcastQueues[0] = mFgBroadcastQueue;
mBroadcastQueues[1] = mBgBroadcastQueue;
mServices = new ActiveServices(this);
mProviderMap = new ProviderMap(this);
+ // TODO: Move creation of battery stats service outside of activity manager service.
File dataDir = Environment.getDataDirectory();
File systemDir = new File(dataDir, "system");
systemDir.mkdirs();
mBatteryStatsService = new BatteryStatsService(new File(
- systemDir, "batterystats.bin").toString());
+ systemDir, "batterystats.bin").toString(), mHandler);
mBatteryStatsService.getActiveStatistics().readLocked();
mBatteryStatsService.getActiveStatistics().writeAsyncLocked();
mOnBattery = DEBUG_POWER ? true
@@ -1980,12 +1923,10 @@ public final class ActivityManagerService extends ActivityManagerNative
mProcessStats = new ProcessStatsService(this, new File(systemDir, "procstats"));
mUsageStatsService = new UsageStatsService(new File(systemDir, "usagestats").toString());
- mAppOpsService = new AppOpsService(new File(systemDir, "appops.xml"));
+ mAppOpsService = new AppOpsService(new File(systemDir, "appops.xml"), mHandler);
mGrantFile = new AtomicFile(new File(systemDir, "urigrants.xml"));
- mHeadless = "1".equals(SystemProperties.get("ro.config.headless", "0"));
-
// User 0 is the first and only user that runs at boot.
mStartedUsers.put(0, new UserStartedState(new UserHandle(0), true));
mUserLru.add(Integer.valueOf(0));
@@ -2000,10 +1941,9 @@ public final class ActivityManagerService extends ActivityManagerNative
mConfigurationSeq = mConfiguration.seq = 1;
mProcessCpuTracker.init();
- mCompatModePackages = new CompatModePackages(this, systemDir);
-
- // Add ourself to the Watchdog monitors.
- Watchdog.getInstance().addMonitor(this);
+ mCompatModePackages = new CompatModePackages(this, systemDir, mHandler);
+ mIntentFirewall = new IntentFirewall(new IntentFirewallInterface(), mHandler);
+ mStackSupervisor = new ActivityStackSupervisor(this);
mProcessCpuThread = new Thread("CpuTracker") {
@Override
@@ -2034,7 +1974,18 @@ public final class ActivityManagerService extends ActivityManagerNative
}
}
};
+
+ Watchdog.getInstance().addMonitor(this);
+ Watchdog.getInstance().addThread(mHandler);
+ }
+
+ private void start() {
mProcessCpuThread.start();
+
+ mBatteryStatsService.publish(mContext);
+ mUsageStatsService.publish(mContext);
+ mAppOpsService.publish(mContext);
+ startRunning(null, null, null, null);
}
@Override
@@ -2730,13 +2681,13 @@ public final class ActivityManagerService extends ActivityManagerNative
}
gids[0] = UserHandle.getSharedAppGid(UserHandle.getAppId(uid));
}
- if (mFactoryTest != SystemServer.FACTORY_TEST_OFF) {
- if (mFactoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL
+ if (mFactoryTest != FactoryTest.FACTORY_TEST_OFF) {
+ if (mFactoryTest == FactoryTest.FACTORY_TEST_LOW_LEVEL
&& mTopComponent != null
&& app.processName.equals(mTopComponent.getPackageName())) {
uid = 0;
}
- if (mFactoryTest == SystemServer.FACTORY_TEST_HIGH_LEVEL
+ if (mFactoryTest == FactoryTest.FACTORY_TEST_HIGH_LEVEL
&& (app.info.flags&ApplicationInfo.FLAG_FACTORY_TEST) != 0) {
uid = 0;
}
@@ -2846,21 +2797,14 @@ public final class ActivityManagerService extends ActivityManagerNative
Intent getHomeIntent() {
Intent intent = new Intent(mTopAction, mTopData != null ? Uri.parse(mTopData) : null);
intent.setComponent(mTopComponent);
- if (mFactoryTest != SystemServer.FACTORY_TEST_LOW_LEVEL) {
+ if (mFactoryTest != FactoryTest.FACTORY_TEST_LOW_LEVEL) {
intent.addCategory(Intent.CATEGORY_HOME);
}
return intent;
}
boolean startHomeActivityLocked(int userId) {
- if (mHeadless) {
- // Added because none of the other calls to ensureBootCompleted seem to fire
- // when running headless.
- ensureBootCompleted();
- return false;
- }
-
- if (mFactoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL
+ if (mFactoryTest == FactoryTest.FACTORY_TEST_LOW_LEVEL
&& mTopAction == null) {
// We are running in factory test mode, but unable to find
// the factory test app, so just sit around displaying the
@@ -2924,14 +2868,14 @@ public final class ActivityManagerService extends ActivityManagerNative
// version than the last one shown, and we are not running in
// low-level factory test mode.
final ContentResolver resolver = mContext.getContentResolver();
- if (mFactoryTest != SystemServer.FACTORY_TEST_LOW_LEVEL &&
+ if (mFactoryTest != FactoryTest.FACTORY_TEST_LOW_LEVEL &&
Settings.Global.getInt(resolver,
Settings.Global.DEVICE_PROVISIONED, 0) != 0) {
mCheckedForSetup = true;
// See if we should be showing the platform update setup UI.
Intent intent = new Intent(Intent.ACTION_UPGRADE_SETUP);
- List<ResolveInfo> ris = mSelf.mContext.getPackageManager()
+ List<ResolveInfo> ris = mContext.getPackageManager()
.queryIntentActivities(intent, PackageManager.GET_META_DATA);
// We don't allow third party apps to replace this.
@@ -2959,7 +2903,7 @@ public final class ActivityManagerService extends ActivityManagerNative
intent.setComponent(new ComponentName(
ri.activityInfo.packageName, ri.activityInfo.name));
mStackSupervisor.startActivityLocked(null, intent, null, ri.activityInfo,
- null, null, 0, 0, 0, null, 0, null, false, null);
+ null, null, 0, 0, 0, null, 0, null, false, null, null);
}
}
}
@@ -3117,7 +3061,7 @@ public final class ActivityManagerService extends ActivityManagerNative
// TODO: Switch to user app stacks here.
return mStackSupervisor.startActivityMayWait(caller, -1, callingPackage, intent, resolvedType,
resultTo, resultWho, requestCode, startFlags, profileFile, profileFd,
- null, null, options, userId);
+ null, null, options, userId, null);
}
@Override
@@ -3132,7 +3076,7 @@ public final class ActivityManagerService extends ActivityManagerNative
// TODO: Switch to user app stacks here.
mStackSupervisor.startActivityMayWait(caller, -1, callingPackage, intent, resolvedType,
resultTo, resultWho, requestCode, startFlags, profileFile, profileFd,
- res, null, options, UserHandle.getCallingUserId());
+ res, null, options, UserHandle.getCallingUserId(), null);
return res;
}
@@ -3147,7 +3091,7 @@ public final class ActivityManagerService extends ActivityManagerNative
// TODO: Switch to user app stacks here.
int ret = mStackSupervisor.startActivityMayWait(caller, -1, callingPackage, intent,
resolvedType, resultTo, resultWho, requestCode, startFlags,
- null, null, null, config, options, userId);
+ null, null, null, config, options, userId, null);
return ret;
}
@@ -3179,7 +3123,7 @@ public final class ActivityManagerService extends ActivityManagerNative
}
}
int ret = pir.sendInner(0, fillInIntent, resolvedType, null, null,
- resultTo, resultWho, requestCode, flagsMask, flagsValues, options);
+ resultTo, resultWho, requestCode, flagsMask, flagsValues, options, null);
return ret;
}
@@ -3278,7 +3222,7 @@ public final class ActivityManagerService extends ActivityManagerNative
int res = mStackSupervisor.startActivityLocked(r.app.thread, intent,
r.resolvedType, aInfo, resultTo != null ? resultTo.appToken : null,
resultWho, requestCode, -1, r.launchedFromUid, r.launchedFromPackage, 0,
- options, false, null);
+ options, false, null, null);
Binder.restoreCallingIdentity(origId);
r.finishing = wasFinishing;
@@ -3291,7 +3235,8 @@ public final class ActivityManagerService extends ActivityManagerNative
final int startActivityInPackage(int uid, String callingPackage,
Intent intent, String resolvedType, IBinder resultTo,
- String resultWho, int requestCode, int startFlags, Bundle options, int userId) {
+ String resultWho, int requestCode, int startFlags, Bundle options, int userId,
+ IActivityContainer container) {
userId = handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), userId,
false, true, "startActivityInPackage", null);
@@ -3299,7 +3244,7 @@ public final class ActivityManagerService extends ActivityManagerNative
// TODO: Switch to user app stacks here.
int ret = mStackSupervisor.startActivityMayWait(null, uid, callingPackage, intent, resolvedType,
resultTo, resultWho, requestCode, startFlags,
- null, null, null, null, options, userId);
+ null, null, null, null, options, userId, container);
return ret;
}
@@ -3603,9 +3548,13 @@ public final class ActivityManagerService extends ActivityManagerNative
*/
private final void handleAppDiedLocked(ProcessRecord app,
boolean restarting, boolean allowRestart) {
+ int pid = app.pid;
cleanUpApplicationRecordLocked(app, restarting, allowRestart, -1);
if (!restarting) {
removeLruProcessLocked(app);
+ if (pid > 0) {
+ ProcessList.remove(pid);
+ }
}
if (mProfileProc == app) {
@@ -4175,9 +4124,9 @@ public final class ActivityManagerService extends ActivityManagerNative
== PackageManager.PERMISSION_GRANTED) {
forceStopPackageLocked(packageName, pkgUid, "clear data");
} else {
- throw new SecurityException(pid+" does not have permission:"+
- android.Manifest.permission.CLEAR_APP_USER_DATA+" to clear data" +
- "for process:"+packageName);
+ throw new SecurityException("PID " + pid + " does not have permission "
+ + android.Manifest.permission.CLEAR_APP_USER_DATA + " to clear data"
+ + " of package " + packageName);
}
}
@@ -4494,7 +4443,7 @@ public final class ActivityManagerService extends ActivityManagerNative
private void forceStopPackageLocked(final String packageName, int uid, String reason) {
forceStopPackageLocked(packageName, UserHandle.getAppId(uid), false,
- false, true, false, false, UserHandle.getUserId(uid), reason);
+ false, true, false, UserHandle.getUserId(uid), reason);
Intent intent = new Intent(Intent.ACTION_PACKAGE_RESTARTED,
Uri.fromParts("package", packageName, null));
if (!mProcessesReady) {
@@ -4510,7 +4459,7 @@ public final class ActivityManagerService extends ActivityManagerNative
}
private void forceStopUserLocked(int userId, String reason) {
- forceStopPackageLocked(null, -1, false, false, true, false, false, userId, reason);
+ forceStopPackageLocked(null, -1, false, false, true, false, userId, reason);
Intent intent = new Intent(Intent.ACTION_USER_STOPPED);
intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY
| Intent.FLAG_RECEIVER_FOREGROUND);
@@ -4595,7 +4544,7 @@ public final class ActivityManagerService extends ActivityManagerNative
private final boolean forceStopPackageLocked(String name, int appId,
boolean callerWillRestart, boolean purgeCache, boolean doit,
- boolean evenPersistent, boolean uninstalling, int userId, String reason) {
+ boolean evenPersistent, int userId, String reason) {
int i;
int N;
@@ -4687,7 +4636,7 @@ public final class ActivityManagerService extends ActivityManagerNative
// Remove transient permissions granted from/to this package/user
removeUriPermissionsForPackageLocked(name, userId, false);
- if (name == null || uninstalling) {
+ if (name == null) {
// Remove pending intents. For now we only do this when force
// stopping users, because we have some problems when doing this
// for packages -- app widgets are not currently cleaned up for
@@ -5000,7 +4949,7 @@ public final class ActivityManagerService extends ActivityManagerNative
// See if the top visible activity is waiting to run in this process...
if (normalMode) {
try {
- if (mStackSupervisor.attachApplicationLocked(app, mHeadless)) {
+ if (mStackSupervisor.attachApplicationLocked(app)) {
didSomething = true;
}
} catch (Exception e) {
@@ -5132,7 +5081,7 @@ public final class ActivityManagerService extends ActivityManagerNative
if (pkgs != null) {
for (String pkg : pkgs) {
synchronized (ActivityManagerService.this) {
- if (forceStopPackageLocked(pkg, -1, false, false, false, false, false, 0,
+ if (forceStopPackageLocked(pkg, -1, false, false, false, false, 0,
"finished booting")) {
setResultCode(Activity.RESULT_OK);
return;
@@ -5157,7 +5106,7 @@ public final class ActivityManagerService extends ActivityManagerNative
}
}
- if (mFactoryTest != SystemServer.FACTORY_TEST_LOW_LEVEL) {
+ if (mFactoryTest != FactoryTest.FACTORY_TEST_LOW_LEVEL) {
// Start looking for apps that are abusing wake locks.
Message nmsg = mHandler.obtainMessage(CHECK_EXCESSIVE_WAKE_LOCKS_MSG);
mHandler.sendMessageDelayed(nmsg, POWER_CHECK_DELAY);
@@ -7107,23 +7056,49 @@ public final class ActivityManagerService extends ActivityManagerNative
}
@Override
- public int createStack(int taskId, int relativeStackBoxId, int position, float weight) {
+ public IBinder getHomeActivityToken() throws RemoteException {
enforceCallingPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS,
- "createStack()");
- if (DEBUG_STACK) Slog.d(TAG, "createStack: taskId=" + taskId + " relStackBoxId=" +
- relativeStackBoxId + " position=" + position + " weight=" + weight);
+ "getHomeActivityToken()");
synchronized (this) {
- long ident = Binder.clearCallingIdentity();
- try {
- int stackId = mStackSupervisor.createStack();
- mWindowManager.createStack(stackId, relativeStackBoxId, position, weight);
- if (taskId > 0) {
- moveTaskToStack(taskId, stackId, true);
- }
- return stackId;
- } finally {
- Binder.restoreCallingIdentity(ident);
+ return mStackSupervisor.getHomeActivityToken();
+ }
+ }
+
+ @Override
+ public IActivityContainer createActivityContainer(IBinder parentActivityToken,
+ IActivityContainerCallback callback) throws RemoteException {
+ enforceCallingPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS,
+ "createActivityContainer()");
+ synchronized (this) {
+ if (parentActivityToken == null) {
+ throw new IllegalArgumentException("parent token must not be null");
+ }
+ ActivityRecord r = ActivityRecord.forToken(parentActivityToken);
+ if (r == null) {
+ return null;
+ }
+ return mStackSupervisor.createActivityContainer(r, callback);
+ }
+ }
+
+ @Override
+ public void deleteActivityContainer(IActivityContainer container) throws RemoteException {
+ enforceCallingPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS,
+ "deleteActivityContainer()");
+ synchronized (this) {
+ mStackSupervisor.deleteActivityContainer(container);
+ }
+ }
+
+ @Override
+ public IActivityContainer getEnclosingActivityContainer(IBinder activityToken)
+ throws RemoteException {
+ synchronized (this) {
+ ActivityStack stack = ActivityRecord.getStackLocked(activityToken);
+ if (stack != null) {
+ return stack.mActivityContainer;
}
+ return null;
}
}
@@ -7148,99 +7123,40 @@ public final class ActivityManagerService extends ActivityManagerNative
}
@Override
- public void resizeStackBox(int stackBoxId, float weight) {
+ public void resizeStack(int stackBoxId, Rect bounds) {
enforceCallingPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS,
"resizeStackBox()");
long ident = Binder.clearCallingIdentity();
try {
- mWindowManager.resizeStackBox(stackBoxId, weight);
+ mWindowManager.resizeStack(stackBoxId, bounds);
} finally {
Binder.restoreCallingIdentity(ident);
}
}
- private ArrayList<StackInfo> getStacks() {
- synchronized (this) {
- ArrayList<ActivityManager.StackInfo> list = new ArrayList<ActivityManager.StackInfo>();
- ArrayList<ActivityStack> stacks = mStackSupervisor.getStacks();
- for (ActivityStack stack : stacks) {
- ActivityManager.StackInfo stackInfo = new ActivityManager.StackInfo();
- int stackId = stack.mStackId;
- stackInfo.stackId = stackId;
- stackInfo.bounds = mWindowManager.getStackBounds(stackId);
- ArrayList<TaskRecord> tasks = stack.getAllTasks();
- final int numTasks = tasks.size();
- int[] taskIds = new int[numTasks];
- String[] taskNames = new String[numTasks];
- for (int i = 0; i < numTasks; ++i) {
- final TaskRecord task = tasks.get(i);
- taskIds[i] = task.taskId;
- taskNames[i] = task.origActivity != null ? task.origActivity.flattenToString()
- : task.realActivity != null ? task.realActivity.flattenToString()
- : task.getTopActivity() != null ? task.getTopActivity().packageName
- : "unknown";
- }
- stackInfo.taskIds = taskIds;
- stackInfo.taskNames = taskNames;
- list.add(stackInfo);
- }
- return list;
- }
- }
-
- private void addStackInfoToStackBoxInfo(StackBoxInfo stackBoxInfo, List<StackInfo> stackInfos) {
- final int stackId = stackBoxInfo.stackId;
- if (stackId >= 0) {
- for (StackInfo stackInfo : stackInfos) {
- if (stackId == stackInfo.stackId) {
- stackBoxInfo.stack = stackInfo;
- stackInfos.remove(stackInfo);
- return;
- }
- }
- } else {
- addStackInfoToStackBoxInfo(stackBoxInfo.children[0], stackInfos);
- addStackInfoToStackBoxInfo(stackBoxInfo.children[1], stackInfos);
- }
- }
-
@Override
- public List<StackBoxInfo> getStackBoxes() {
+ public List<StackInfo> getAllStackInfos() {
enforceCallingPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS,
- "getStackBoxes()");
+ "getAllStackInfos()");
long ident = Binder.clearCallingIdentity();
try {
- List<StackBoxInfo> stackBoxInfos = mWindowManager.getStackBoxInfos();
synchronized (this) {
- List<StackInfo> stackInfos = getStacks();
- for (StackBoxInfo stackBoxInfo : stackBoxInfos) {
- addStackInfoToStackBoxInfo(stackBoxInfo, stackInfos);
- }
+ return mStackSupervisor.getAllStackInfosLocked();
}
- return stackBoxInfos;
} finally {
Binder.restoreCallingIdentity(ident);
}
}
@Override
- public StackBoxInfo getStackBoxInfo(int stackBoxId) {
+ public StackInfo getStackInfo(int stackId) {
enforceCallingPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS,
- "getStackBoxInfo()");
+ "getStackInfo()");
long ident = Binder.clearCallingIdentity();
try {
- List<StackBoxInfo> stackBoxInfos = mWindowManager.getStackBoxInfos();
- StackBoxInfo info = null;
synchronized (this) {
- List<StackInfo> stackInfos = getStacks();
- for (StackBoxInfo stackBoxInfo : stackBoxInfos) {
- addStackInfoToStackBoxInfo(stackBoxInfo, stackInfos);
- if (stackBoxInfo.stackBoxId == stackBoxId) {
- info = stackBoxInfo;
- }
- }
+ return mStackSupervisor.getStackInfoLocked(stackId);
}
- return info;
} finally {
Binder.restoreCallingIdentity(ident);
}
@@ -8061,11 +7977,11 @@ public final class ActivityManagerService extends ActivityManagerNative
}
}
- public static final void installSystemProviders() {
+ public final void installSystemProviders() {
List<ProviderInfo> providers;
- synchronized (mSelf) {
- ProcessRecord app = mSelf.mProcessNames.get("system", Process.SYSTEM_UID);
- providers = mSelf.generateApplicationProvidersLocked(app);
+ synchronized (this) {
+ ProcessRecord app = mProcessNames.get("system", Process.SYSTEM_UID);
+ providers = generateApplicationProvidersLocked(app);
if (providers != null) {
for (int i=providers.size()-1; i>=0; i--) {
ProviderInfo pi = (ProviderInfo)providers.get(i);
@@ -8081,9 +7997,9 @@ public final class ActivityManagerService extends ActivityManagerNative
mSystemThread.installSystemProviders(providers);
}
- mSelf.mCoreSettingsObserver = new CoreSettingsObserver(mSelf);
+ mCoreSettingsObserver = new CoreSettingsObserver(this);
- mSelf.mUsageStatsService.monitorPackages();
+ mUsageStatsService.monitorPackages();
}
/**
@@ -8445,7 +8361,7 @@ public final class ActivityManagerService extends ActivityManagerNative
mDebugTransient = !persistent;
if (packageName != null) {
forceStopPackageLocked(packageName, -1, false, false, true, true,
- false, UserHandle.USER_ALL, "set debug app");
+ UserHandle.USER_ALL, "set debug app");
}
}
} finally {
@@ -9326,7 +9242,7 @@ public final class ActivityManagerService extends ActivityManagerNative
synchronized(this) {
// Make sure we have no pre-ready processes sitting around.
- if (mFactoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL) {
+ if (mFactoryTest == FactoryTest.FACTORY_TEST_LOW_LEVEL) {
ResolveInfo ri = mContext.getPackageManager()
.resolveActivity(new Intent(Intent.ACTION_FACTORY_TEST),
STOCK_PM_FLAGS);
@@ -9368,7 +9284,7 @@ public final class ActivityManagerService extends ActivityManagerNative
if (goingCallback != null) goingCallback.run();
synchronized (this) {
- if (mFactoryTest != SystemServer.FACTORY_TEST_LOW_LEVEL) {
+ if (mFactoryTest != FactoryTest.FACTORY_TEST_LOW_LEVEL) {
try {
List apps = AppGlobals.getPackageManager().
getPersistentApplications(STOCK_PM_FLAGS);
@@ -9501,10 +9417,6 @@ public final class ActivityManagerService extends ActivityManagerNative
private boolean handleAppCrashLocked(ProcessRecord app, String shortMsg, String longMsg,
String stackTrace) {
- if (mHeadless) {
- Log.e(TAG, "handleAppCrashLocked: " + app.processName);
- return false;
- }
long now = SystemClock.uptimeMillis();
Long crashTime;
@@ -12393,6 +12305,7 @@ public final class ActivityManagerService extends ActivityManagerNative
boolean restarting, boolean allowRestart, int index) {
if (index >= 0) {
removeLruProcessLocked(app);
+ ProcessList.remove(app.pid);
}
mProcessesToGc.remove(app);
@@ -13378,7 +13291,7 @@ public final class ActivityManagerService extends ActivityManagerNative
String list[] = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST);
if (list != null && (list.length > 0)) {
for (String pkg : list) {
- forceStopPackageLocked(pkg, -1, false, true, true, false, false, userId,
+ forceStopPackageLocked(pkg, -1, false, true, true, false, userId,
"storage unmount");
}
sendPackageBroadcastLocked(
@@ -13390,13 +13303,10 @@ public final class ActivityManagerService extends ActivityManagerNative
if (data != null && (ssp=data.getSchemeSpecificPart()) != null) {
boolean removed = Intent.ACTION_PACKAGE_REMOVED.equals(
intent.getAction());
- boolean fullUninstall = removed &&
- !intent.getBooleanExtra(Intent.EXTRA_REPLACING, false);
if (!intent.getBooleanExtra(Intent.EXTRA_DONT_KILL_APP, false)) {
forceStopPackageLocked(ssp, UserHandle.getAppId(
intent.getIntExtra(Intent.EXTRA_UID, -1)), false, true, true,
- false, fullUninstall, userId,
- removed ? "pkg removed" : "pkg changed");
+ false, userId, removed ? "pkg removed" : "pkg changed");
}
if (removed) {
sendPackageBroadcastLocked(IApplicationThread.PACKAGE_REMOVED,
@@ -13874,7 +13784,7 @@ public final class ActivityManagerService extends ActivityManagerNative
final long origId = Binder.clearCallingIdentity();
// Instrumentation can kill and relaunch even persistent processes
- forceStopPackageLocked(ii.targetPackage, -1, true, false, true, true, false, userId,
+ forceStopPackageLocked(ii.targetPackage, -1, true, false, true, true, userId,
"start instr");
ProcessRecord app = addAppLocked(ai, false);
app.instrumentationClass = className;
@@ -13942,7 +13852,7 @@ public final class ActivityManagerService extends ActivityManagerNative
app.instrumentationProfileFile = null;
app.instrumentationArguments = null;
- forceStopPackageLocked(app.info.packageName, -1, false, false, true, true, false, app.userId,
+ forceStopPackageLocked(app.info.packageName, -1, false, false, true, true, app.userId,
"finished inst");
}
@@ -14050,9 +13960,6 @@ public final class ActivityManagerService extends ActivityManagerNative
*/
boolean updateConfigurationLocked(Configuration values,
ActivityRecord starting, boolean persistent, boolean initLocale) {
- // do nothing if we are headless
- if (mHeadless) return true;
-
int changes = 0;
if (values != null) {
@@ -14135,18 +14042,21 @@ public final class ActivityManagerService extends ActivityManagerNative
boolean kept = true;
final ActivityStack mainStack = mStackSupervisor.getFocusedStack();
- if (changes != 0 && starting == null) {
- // If the configuration changed, and the caller is not already
- // in the process of starting an activity, then find the top
- // activity to check if its configuration needs to change.
- starting = mainStack.topRunningActivityLocked(null);
- }
+ // mainStack is null during startup.
+ if (mainStack != null) {
+ if (changes != 0 && starting == null) {
+ // If the configuration changed, and the caller is not already
+ // in the process of starting an activity, then find the top
+ // activity to check if its configuration needs to change.
+ starting = mainStack.topRunningActivityLocked(null);
+ }
- if (starting != null) {
- kept = mainStack.ensureActivityConfigurationLocked(starting, changes);
- // And we need to make sure at this point that all other activities
- // are made visible with the correct configuration.
- mStackSupervisor.ensureActivitiesVisibleLocked(starting, changes);
+ if (starting != null) {
+ kept = mainStack.ensureActivityConfigurationLocked(starting, changes);
+ // And we need to make sure at this point that all other activities
+ // are made visible with the correct configuration.
+ mStackSupervisor.ensureActivitiesVisibleLocked(starting, changes);
+ }
}
if (values != null && mWindowManager != null) {
@@ -15258,16 +15168,13 @@ public final class ActivityManagerService extends ActivityManagerNative
}
if (app.curAdj != app.setAdj) {
- if (Process.setOomAdj(app.pid, app.curAdj)) {
- if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(
- TAG, "Set " + app.pid + " " + app.processName +
- " adj " + app.curAdj + ": " + app.adjType);
- app.setAdj = app.curAdj;
- } else {
- success = false;
- Slog.w(TAG, "Failed setting oom adj of " + app + " to " + app.curAdj);
- }
+ ProcessList.setOomAdj(app.pid, app.curAdj);
+ if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(
+ TAG, "Set " + app.pid + " " + app.processName +
+ " adj " + app.curAdj + ": " + app.adjType);
+ app.setAdj = app.curAdj;
}
+
if (app.setSchedGroup != app.curSchedGroup) {
app.setSchedGroup = app.curSchedGroup;
if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG,
diff --git a/services/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
index 49f29fe6c372..a27288ab08c7 100644
--- a/services/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -21,6 +21,7 @@ import com.android.internal.R.styleable;
import com.android.internal.app.ResolverActivity;
import com.android.server.AttributeCache;
import com.android.server.am.ActivityStack.ActivityState;
+import com.android.server.am.ActivityStackSupervisor.ActivityContainer;
import android.app.ActivityOptions;
import android.app.ResultInfo;
@@ -138,11 +139,13 @@ final class ActivityRecord {
boolean forceNewConfig; // force re-create with new config next time
int launchCount; // count of launches since last state
long lastLaunchTime; // time of last lauch of this activity
+ ArrayList<ActivityStack> mChildContainers = new ArrayList<ActivityStack>();
String stringName; // for caching of toString().
private boolean inHistory; // are we in the history stack?
final ActivityStackSupervisor mStackSupervisor;
+ ActivityContainer mInitialActivityContainer;
void dump(PrintWriter pw, String prefix) {
final long now = SystemClock.uptimeMillis();
@@ -347,7 +350,8 @@ final class ActivityRecord {
int _launchedFromUid, String _launchedFromPackage, Intent _intent, String _resolvedType,
ActivityInfo aInfo, Configuration _configuration,
ActivityRecord _resultTo, String _resultWho, int _reqCode,
- boolean _componentSpecified, ActivityStackSupervisor supervisor) {
+ boolean _componentSpecified, ActivityStackSupervisor supervisor,
+ ActivityContainer container) {
service = _service;
appToken = new Token(this);
info = aInfo;
@@ -378,6 +382,7 @@ final class ActivityRecord {
idle = false;
hasBeenLaunched = false;
mStackSupervisor = supervisor;
+ mInitialActivityContainer = container;
// This starts out true, since the initial state of an activity
// is that we have everything, and we shouldn't never consider it
@@ -481,7 +486,7 @@ final class ActivityRecord {
void setTask(TaskRecord newTask, ThumbnailHolder newThumbHolder, boolean isRoot) {
if (task != null && task.removeActivity(this)) {
if (task != newTask) {
- mStackSupervisor.removeTask(task);
+ task.stack.removeTask(task);
} else {
Slog.d(TAG, "!!! REMOVE THIS LOG !!! setTask: nearly removed stack=" +
(newTask == null ? null : newTask.stack));
diff --git a/services/java/com/android/server/am/ActivityResult.java b/services/core/java/com/android/server/am/ActivityResult.java
index 6d5bdebe4e36..6d5bdebe4e36 100644
--- a/services/java/com/android/server/am/ActivityResult.java
+++ b/services/core/java/com/android/server/am/ActivityResult.java
diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 596c84d87ab8..68ef815b7d53 100644..100755
--- a/services/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -37,9 +37,9 @@ import static com.android.server.am.ActivityStackSupervisor.DEBUG_STATES;
import static com.android.server.am.ActivityStackSupervisor.HOME_STACK_ID;
import com.android.internal.os.BatteryStatsImpl;
-import com.android.internal.util.Objects;
import com.android.server.Watchdog;
import com.android.server.am.ActivityManagerService.ItemMatcher;
+import com.android.server.am.ActivityStackSupervisor.ActivityContainer;
import com.android.server.wm.AppTransition;
import com.android.server.wm.TaskGroup;
import com.android.server.wm.WindowManagerService;
@@ -53,7 +53,6 @@ import android.app.IThumbnailReceiver;
import android.app.ResultInfo;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.ComponentName;
-import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
@@ -82,6 +81,7 @@ import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.Objects;
/**
* State and management of a single stack of activities.
@@ -139,8 +139,6 @@ final class ActivityStack {
final ActivityManagerService mService;
final WindowManagerService mWindowManager;
- final Context mContext;
-
/**
* The back history of all previous (and possibly still
* running) activities. It contains #TaskRecord objects.
@@ -229,6 +227,11 @@ final class ActivityStack {
int mCurrentUser;
final int mStackId;
+ final ActivityContainer mActivityContainer;
+ /** The other stacks, in order, on the attached display. Updated at attach/detach time. */
+ ArrayList<ActivityStack> mStacks;
+ /** The attached Display's unique identifier, or -1 if detached */
+ int mDisplayId;
/** Run all ActivityStacks through this */
final ActivityStackSupervisor mStackSupervisor;
@@ -319,7 +322,7 @@ final class ActivityStack {
}
}
- private int numActivities() {
+ int numActivities() {
int count = 0;
for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) {
count += mTaskHistory.get(taskNdx).mActivities.size();
@@ -327,14 +330,14 @@ final class ActivityStack {
return count;
}
- ActivityStack(ActivityManagerService service, Context context, Looper looper, int stackId) {
- mHandler = new ActivityStackHandler(looper);
- mService = service;
- mWindowManager = service.mWindowManager;
- mStackSupervisor = service.mStackSupervisor;
- mContext = context;
- mStackId = stackId;
- mCurrentUser = service.mCurrentUserId;
+ ActivityStack(ActivityStackSupervisor.ActivityContainer activityContainer) {
+ mActivityContainer = activityContainer;
+ mStackSupervisor = activityContainer.getOuter();
+ mService = mStackSupervisor.mService;
+ mHandler = new ActivityStackHandler(mService.mHandler.getLooper());
+ mWindowManager = mService.mWindowManager;
+ mStackId = activityContainer.mStackId;
+ mCurrentUser = mService.mCurrentUserId;
}
boolean okToShow(ActivityRecord r) {
@@ -436,25 +439,6 @@ final class ActivityStack {
return null;
}
- boolean containsApp(ProcessRecord app) {
- if (app == null) {
- return false;
- }
- 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.finishing) {
- continue;
- }
- if (r.app == app) {
- return true;
- }
- }
- }
- return false;
- }
-
final boolean updateLRUListLocked(ActivityRecord r) {
final boolean hadit = mLRUActivities.remove(r);
mLRUActivities.add(r);
@@ -465,6 +449,25 @@ final class ActivityStack {
return mStackId == HOME_STACK_ID;
}
+ final boolean isOnHomeDisplay() {
+ return isAttached() &&
+ mActivityContainer.mActivityDisplay.mDisplayId == Display.DEFAULT_DISPLAY;
+ }
+
+ final void moveToFront() {
+ if (isAttached()) {
+ if (isOnHomeDisplay()) {
+ mStackSupervisor.moveHomeStack(isHomeStack());
+ }
+ mStacks.remove(this);
+ mStacks.add(this);
+ }
+ }
+
+ final boolean isAttached() {
+ return mStacks != null;
+ }
+
/**
* Returns the top activity in any existing task matching the given
* Intent. Returns null if no such task is found.
@@ -733,6 +736,12 @@ final class ActivityStack {
mStackSupervisor.resumeTopActivitiesLocked();
return;
}
+
+ if (mActivityContainer.mParentActivity == null) {
+ // Top level stack, not a child. Look for child stacks.
+ mStackSupervisor.pauseChildStacks(prev, userLeaving, uiSleeping);
+ }
+
if (DEBUG_STATES) Slog.v(TAG, "Moving to PAUSING: " + prev);
else if (DEBUG_PAUSE) Slog.v(TAG, "Start pausing: " + prev);
mResumedActivity = null;
@@ -1145,7 +1154,7 @@ final class ActivityStack {
} else if (isActivityOverHome(r)) {
if (DEBUG_VISBILITY) Slog.v(TAG, "Showing home: at " + r);
showHomeBehindStack = true;
- behindFullscreen = !isHomeStack();
+ behindFullscreen = !isHomeStack() && r.frontOfTask && task.mOnTopOfHome;
}
} else {
if (DEBUG_VISBILITY) Slog.v(
@@ -1224,12 +1233,14 @@ final class ActivityStack {
mUndrawnActivitiesBelowTopTranslucent.clear();
mHandler.removeMessages(TRANSLUCENT_TIMEOUT_MSG);
- if (waitingActivity != null && waitingActivity.app != null &&
- waitingActivity.app.thread != null) {
- try {
- waitingActivity.app.thread.scheduleTranslucentConversionComplete(
- waitingActivity.appToken, r != null);
- } catch (RemoteException e) {
+ if (waitingActivity != null) {
+ mWindowManager.setWindowOpaque(waitingActivity.appToken, false);
+ if (waitingActivity.app != null && waitingActivity.app.thread != null) {
+ try {
+ waitingActivity.app.thread.scheduleTranslucentConversionComplete(
+ waitingActivity.appToken, r != null);
+ } catch (RemoteException e) {
+ }
}
}
}
@@ -1251,6 +1262,13 @@ final class ActivityStack {
final boolean resumeTopActivityLocked(ActivityRecord prev, Bundle options) {
if (ActivityManagerService.DEBUG_LOCKSCREEN) mService.logLockScreen("");
+ ActivityRecord parent = mActivityContainer.mParentActivity;
+ if (parent != null && parent.state != ActivityState.RESUMED) {
+ // Do not resume this stack if its parent is not resumed.
+ // TODO: If in a loop, make sure that parent stack resumeTopActivity is called 1st.
+ return false;
+ }
+
// Find the first activity that is not finishing.
ActivityRecord next = topRunningActivityLocked(null);
@@ -1265,7 +1283,8 @@ final class ActivityStack {
ActivityOptions.abort(options);
if (DEBUG_STATES) Slog.d(TAG, "resumeTopActivityLocked: No more activities go home");
if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked();
- return mStackSupervisor.resumeHomeActivity(prev);
+ // Only resume home if on home display
+ return isOnHomeDisplay() && mStackSupervisor.resumeHomeActivity(prev);
}
next.delayedResume = false;
@@ -1295,8 +1314,10 @@ final class ActivityStack {
final int taskNdx = mTaskHistory.indexOf(prevTask) + 1;
mTaskHistory.get(taskNdx).mOnTopOfHome = true;
} else {
- if (DEBUG_STATES) Slog.d(TAG, "resumeTopActivityLocked: Launching home next");
- return mStackSupervisor.resumeHomeActivity(prev);
+ if (DEBUG_STATES && isOnHomeDisplay()) Slog.d(TAG,
+ "resumeTopActivityLocked: Launching home next");
+ // Only resume home if on home display
+ return isOnHomeDisplay() && mStackSupervisor.resumeHomeActivity(prev);
}
}
@@ -1658,10 +1679,14 @@ final class ActivityStack {
private void insertTaskAtTop(TaskRecord task) {
// If this is being moved to the top by another activity or being launched from the home
// activity, set mOnTopOfHome accordingly.
- ActivityStack lastStack = mStackSupervisor.getLastStack();
- final boolean fromHome = lastStack == null ? true : lastStack.isHomeStack();
- if (!isHomeStack() && (fromHome || topTask() != task)) {
- task.mOnTopOfHome = fromHome;
+ if (isOnHomeDisplay()) {
+ ActivityStack lastStack = mStackSupervisor.getLastStack();
+ final boolean fromHome = lastStack.isHomeStack();
+ if (!isHomeStack() && (fromHome || topTask() != task)) {
+ task.mOnTopOfHome = fromHome;
+ }
+ } else {
+ task.mOnTopOfHome = false;
}
mTaskHistory.remove(task);
@@ -2350,7 +2375,7 @@ final class ActivityStack {
ArrayList<ActivityRecord> activities = r.task.mActivities;
for (int index = activities.indexOf(r); index >= 0; --index) {
ActivityRecord cur = activities.get(index);
- if (!Objects.equal(cur.taskAffinity, r.taskAffinity)) {
+ if (!Objects.equals(cur.taskAffinity, r.taskAffinity)) {
break;
}
finishActivityLocked(cur, Activity.RESULT_CANCELED, null, "request-affinity", true);
@@ -2514,6 +2539,7 @@ final class ActivityStack {
// activity into the stopped state and then finish it.
if (localLOGV) Slog.v(TAG, "Enqueueing pending finish: " + r);
mStackSupervisor.mFinishingActivities.add(r);
+ r.resumeKeyDispatchingLocked();
mStackSupervisor.getFocusedStack().resumeTopActivityLocked(null);
return r;
}
@@ -2586,7 +2612,7 @@ final class ActivityStack {
int res = mStackSupervisor.startActivityLocked(srec.app.thread, destIntent,
null, aInfo, parent.appToken, null,
0, -1, parent.launchedFromUid, parent.launchedFromPackage,
- 0, null, true, null);
+ 0, null, true, null, null);
foundParentInTask = res == ActivityManager.START_SUCCESS;
} catch (RemoteException e) {
foundParentInTask = false;
@@ -2664,7 +2690,8 @@ final class ActivityStack {
r.finishLaunchTickingLocked();
}
- final void removeActivityFromHistoryLocked(ActivityRecord r) {
+ private void removeActivityFromHistoryLocked(ActivityRecord r) {
+ mStackSupervisor.removeChildActivityContainers(r);
finishActivityResultsLocked(r, Activity.RESULT_CANCELED, null);
r.makeFinishing();
if (DEBUG_ADD_REMOVE) {
@@ -2672,15 +2699,6 @@ final class ActivityStack {
here.fillInStackTrace();
Slog.i(TAG, "Removing activity " + r + " from stack");
}
- final TaskRecord task = r.task;
- if (task != null && task.removeActivity(r)) {
- if (DEBUG_STACK) Slog.i(TAG,
- "removeActivityFromHistoryLocked: last activity removed from " + this);
- if (mStackSupervisor.isFrontStack(this) && task == topTask() && task.mOnTopOfHome) {
- mStackSupervisor.moveHomeToTop();
- }
- mStackSupervisor.removeTask(task);
- }
r.takeFromHistory();
removeTimeoutsForActivityLocked(r);
if (DEBUG_STATES) Slog.v(TAG, "Moving to DESTROYED: " + r + " (removed from history)");
@@ -2691,6 +2709,15 @@ final class ActivityStack {
if (VALIDATE_TOKENS) {
validateAppTokensLocked();
}
+ final TaskRecord task = r.task;
+ if (task != null && task.removeActivity(r)) {
+ if (DEBUG_STACK) Slog.i(TAG,
+ "removeActivityFromHistoryLocked: last activity removed from " + this);
+ if (mStackSupervisor.isFrontStack(this) && task == topTask() && task.mOnTopOfHome) {
+ mStackSupervisor.moveHomeToTop();
+ }
+ removeTask(task);
+ }
cleanUpActivityServicesLocked(r);
r.removeUriPermissionsLocked();
}
@@ -3038,7 +3065,7 @@ final class ActivityStack {
return;
}
- mStackSupervisor.moveHomeStack(isHomeStack());
+ moveToFront();
// Shift all activities with this task up to the top
// of the stack, keeping them in the same internal order.
@@ -3147,10 +3174,8 @@ final class ActivityStack {
}
final TaskRecord task = mResumedActivity != null ? mResumedActivity.task : null;
- if (task == tr && task.mOnTopOfHome || numTasks <= 1) {
- if (task != null) {
- task.mOnTopOfHome = false;
- }
+ if (task == tr && tr.mOnTopOfHome || numTasks <= 1 && isOnHomeDisplay()) {
+ tr.mOnTopOfHome = false;
return mStackSupervisor.resumeHomeActivity(null);
}
@@ -3310,6 +3335,8 @@ final class ActivityStack {
r.startFreezingScreenLocked(r.app, 0);
+ mStackSupervisor.removeChildActivityContainers(r);
+
try {
if (DEBUG_SWITCH || DEBUG_STATES) Slog.i(TAG,
(andResume ? "Relaunching to RESUMED " : "Relaunching to PAUSED ")
@@ -3342,14 +3369,20 @@ final class ActivityStack {
for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
final ActivityRecord r = activities.get(activityNdx);
if (r.appToken == token) {
- return true;
+ return true;
}
if (r.fullscreen && !r.finishing) {
return false;
}
}
}
- return true;
+ final ActivityRecord r = ActivityRecord.forToken(token);
+ if (r == null) {
+ return false;
+ }
+ if (r.finishing) Slog.e(TAG, "willActivityBeVisibleLocked: Returning false,"
+ + " would have returned true for r=" + r);
+ return !r.finishing;
}
void closeSystemDialogsLocked() {
@@ -3588,14 +3621,30 @@ final class ActivityStack {
return starting;
}
- boolean removeTask(TaskRecord task) {
+ void removeTask(TaskRecord task) {
+ mWindowManager.removeTask(task.taskId);
+ final ActivityRecord r = mResumedActivity;
+ if (r != null && r.task == task) {
+ mResumedActivity = null;
+ }
+
final int taskNdx = mTaskHistory.indexOf(task);
final int topTaskNdx = mTaskHistory.size() - 1;
if (task.mOnTopOfHome && taskNdx < topTaskNdx) {
mTaskHistory.get(taskNdx + 1).mOnTopOfHome = true;
}
mTaskHistory.remove(task);
- return mTaskHistory.isEmpty();
+
+ if (mTaskHistory.isEmpty()) {
+ if (DEBUG_STACK) Slog.i(TAG, "removeTask: moving to back stack=" + this);
+ if (isOnHomeDisplay()) {
+ mStackSupervisor.moveHomeStack(!isHomeStack());
+ }
+ if (mStacks != null) {
+ mStacks.remove(this);
+ mStacks.add(0, this);
+ }
+ }
}
TaskRecord createTaskRecord(int taskId, ActivityInfo info, Intent intent, boolean toTop) {
diff --git a/services/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index 62e134044326..bf93c5a1fc46 100644
--- a/services/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -34,8 +34,11 @@ import static com.android.server.am.ActivityManagerService.TAG;
import android.app.Activity;
import android.app.ActivityManager;
+import android.app.ActivityManager.StackInfo;
import android.app.ActivityOptions;
import android.app.AppGlobals;
+import android.app.IActivityContainer;
+import android.app.IActivityContainerCallback;
import android.app.IActivityManager;
import android.app.IApplicationThread;
import android.app.IThumbnailReceiver;
@@ -53,6 +56,13 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
+import android.graphics.Point;
+import android.hardware.display.DisplayManager;
+import android.hardware.display.DisplayManager.DisplayListener;
+import android.hardware.display.DisplayManagerGlobal;
+import android.hardware.display.VirtualDisplay;
+import android.hardware.input.InputManager;
+import android.hardware.input.InputManagerInternal;
import android.os.Binder;
import android.os.Bundle;
import android.os.Debug;
@@ -68,22 +78,28 @@ import android.os.SystemClock;
import android.os.UserHandle;
import android.util.EventLog;
import android.util.Slog;
-import android.util.SparseIntArray;
+import android.util.SparseArray;
+import android.util.SparseIntArray;
+import android.view.Display;
+import android.view.DisplayInfo;
+import android.view.InputEvent;
+import android.view.Surface;
import com.android.internal.app.HeavyWeightSwitcherActivity;
import com.android.internal.os.TransferPipe;
+import com.android.server.LocalServices;
import com.android.server.am.ActivityManagerService.PendingActivityLaunch;
import com.android.server.am.ActivityStack.ActivityState;
-import com.android.server.wm.StackBox;
import com.android.server.wm.WindowManagerService;
import java.io.FileDescriptor;
import java.io.IOException;
import java.io.PrintWriter;
+import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
-public final class ActivityStackSupervisor {
+public final class ActivityStackSupervisor implements DisplayListener {
static final boolean DEBUG = ActivityManagerService.DEBUG || false;
static final boolean DEBUG_ADD_REMOVE = DEBUG || false;
static final boolean DEBUG_APP = DEBUG || false;
@@ -107,19 +123,23 @@ public final class ActivityStackSupervisor {
static final int RESUME_TOP_ACTIVITY_MSG = FIRST_SUPERVISOR_STACK_MSG + 2;
static final int SLEEP_TIMEOUT_MSG = FIRST_SUPERVISOR_STACK_MSG + 3;
static final int LAUNCH_TIMEOUT_MSG = FIRST_SUPERVISOR_STACK_MSG + 4;
+ static final int HANDLE_DISPLAY_ADDED = FIRST_SUPERVISOR_STACK_MSG + 5;
+ static final int HANDLE_DISPLAY_CHANGED = FIRST_SUPERVISOR_STACK_MSG + 6;
+ static final int HANDLE_DISPLAY_REMOVED = FIRST_SUPERVISOR_STACK_MSG + 7;
+
+ private final static String VIRTUAL_DISPLAY_BASE_NAME = "ActivityViewVirtualDisplay";
// For debugging to make sure the caller when acquiring/releasing our
// wake lock is the system process.
static final boolean VALIDATE_WAKE_LOCK_CALLER = false;
final ActivityManagerService mService;
- final Context mContext;
- final Looper mLooper;
final ActivityStackSupervisorHandler mHandler;
/** Short cut */
WindowManagerService mWindowManager;
+ DisplayManager mDisplayManager;
/** Dismiss the keyguard after the next activity is displayed? */
boolean mDismissKeyguardOnNextActivity = false;
@@ -134,22 +154,17 @@ public final class ActivityStackSupervisor {
/** The current user */
private int mCurrentUser;
- /** The stack containing the launcher app */
+ /** The stack containing the launcher app. Assumed to always be attached to
+ * Display.DEFAULT_DISPLAY. */
private ActivityStack mHomeStack;
- /** The non-home stack currently receiving input or launching the next activity. If home is
- * in front then mHomeStack overrides mFocusedStack.
- * DO NOT ACCESS DIRECTLY - It may be null, use getFocusedStack() */
+ /** The stack currently receiving input or launching the next activity. */
private ActivityStack mFocusedStack;
- /** All the non-launcher stacks */
- private ArrayList<ActivityStack> mStacks = new ArrayList<ActivityStack>();
-
- private static final int STACK_STATE_HOME_IN_FRONT = 0;
- private static final int STACK_STATE_HOME_TO_BACK = 1;
- private static final int STACK_STATE_HOME_IN_BACK = 2;
- private static final int STACK_STATE_HOME_TO_FRONT = 3;
- private int mStackState = STACK_STATE_HOME_IN_FRONT;
+ /** If this is the same as mFocusedStack then the activity on the top of the focused stack has
+ * been resumed. If stacks are changing position this will hold the old stack until the new
+ * stack becomes resumed after which it will be set to mFocusedStack. */
+ private ActivityStack mLastFocusedStack;
/** List of activities that are waiting for a new activity to become visible before completing
* whatever operation they are supposed to do. */
@@ -206,14 +221,21 @@ public final class ActivityStackSupervisor {
/** Stack id of the front stack when user switched, indexed by userId. */
SparseIntArray mUserStackInFront = new SparseIntArray(2);
- public ActivityStackSupervisor(ActivityManagerService service, Context context,
- Looper looper) {
+ // TODO: Add listener for removal of references.
+ /** Mapping from (ActivityStack/TaskStack).mStackId to their current state */
+ SparseArray<WeakReference<ActivityContainer>> mActivityContainers =
+ new SparseArray<WeakReference<ActivityContainer>>();
+
+ /** Mapping from displayId to display current state */
+ private SparseArray<ActivityDisplay> mActivityDisplays = new SparseArray<ActivityDisplay>();
+
+ InputManagerInternal mInputManagerInternal;
+
+ public ActivityStackSupervisor(ActivityManagerService service) {
mService = service;
- mContext = context;
- mLooper = looper;
- PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
+ PowerManager pm = (PowerManager)mService.mContext.getSystemService(Context.POWER_SERVICE);
mGoingToSleep = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ActivityManager-Sleep");
- mHandler = new ActivityStackSupervisorHandler(looper);
+ mHandler = new ActivityStackSupervisorHandler(mService.mHandler.getLooper());
if (VALIDATE_WAKE_LOCK_CALLER && Binder.getCallingUid() != Process.myUid()) {
throw new IllegalStateException("Calling must be system uid");
}
@@ -223,9 +245,25 @@ public final class ActivityStackSupervisor {
}
void setWindowManager(WindowManagerService wm) {
- mWindowManager = wm;
- mHomeStack = new ActivityStack(mService, mContext, mLooper, HOME_STACK_ID);
- mStacks.add(mHomeStack);
+ synchronized (mService) {
+ mWindowManager = wm;
+
+ mDisplayManager =
+ (DisplayManager)mService.mContext.getSystemService(Context.DISPLAY_SERVICE);
+ mDisplayManager.registerDisplayListener(this, null);
+
+ Display[] displays = mDisplayManager.getDisplays();
+ for (int displayNdx = displays.length - 1; displayNdx >= 0; --displayNdx) {
+ final int displayId = displays[displayNdx].getDisplayId();
+ ActivityDisplay activityDisplay = new ActivityDisplay(displayId);
+ mActivityDisplays.put(displayId, activityDisplay);
+ }
+
+ createStackOnDisplay(null, HOME_STACK_ID, Display.DEFAULT_DISPLAY);
+ mHomeStack = mFocusedStack = mLastFocusedStack = getStack(HOME_STACK_ID);
+
+ mInputManagerInternal = LocalServices.getService(InputManagerInternal.class);
+ }
}
void dismissKeyguard() {
@@ -237,43 +275,42 @@ public final class ActivityStackSupervisor {
}
ActivityStack getFocusedStack() {
- if (mFocusedStack == null) {
- return mHomeStack;
- }
- switch (mStackState) {
- case STACK_STATE_HOME_IN_FRONT:
- case STACK_STATE_HOME_TO_FRONT:
- return mHomeStack;
- case STACK_STATE_HOME_IN_BACK:
- case STACK_STATE_HOME_TO_BACK:
- default:
- return mFocusedStack;
- }
+ return mFocusedStack;
}
ActivityStack getLastStack() {
- switch (mStackState) {
- case STACK_STATE_HOME_IN_FRONT:
- case STACK_STATE_HOME_TO_BACK:
- return mHomeStack;
- case STACK_STATE_HOME_TO_FRONT:
- case STACK_STATE_HOME_IN_BACK:
- default:
- return mFocusedStack;
- }
+ return mLastFocusedStack;
}
+ // TODO: Split into two methods isFrontStack for any visible stack and isFrontmostStack for the
+ // top of all visible stacks.
boolean isFrontStack(ActivityStack stack) {
- return !(stack.isHomeStack() ^ getFocusedStack().isHomeStack());
+ final ActivityRecord parent = stack.mActivityContainer.mParentActivity;
+ if (parent != null) {
+ stack = parent.task.stack;
+ }
+ ArrayList<ActivityStack> stacks = stack.mStacks;
+ if (stacks != null && !stacks.isEmpty()) {
+ return stack == stacks.get(stacks.size() - 1);
+ }
+ return false;
}
void moveHomeStack(boolean toFront) {
- final boolean homeInFront = isFrontStack(mHomeStack);
- if (homeInFront ^ toFront) {
- if (DEBUG_STACK) Slog.d(TAG, "moveHomeTask: mStackState old=" +
- stackStateToString(mStackState) + " new=" + stackStateToString(homeInFront ?
- STACK_STATE_HOME_TO_BACK : STACK_STATE_HOME_TO_FRONT));
- mStackState = homeInFront ? STACK_STATE_HOME_TO_BACK : STACK_STATE_HOME_TO_FRONT;
+ ArrayList<ActivityStack> stacks = mHomeStack.mStacks;
+ int topNdx = stacks.size() - 1;
+ if (topNdx <= 0) {
+ return;
+ }
+ ActivityStack topStack = stacks.get(topNdx);
+ final boolean homeInFront = topStack == mHomeStack;
+ if (homeInFront != toFront) {
+ mLastFocusedStack = topStack;
+ stacks.remove(mHomeStack);
+ stacks.add(toFront ? topNdx : 0, mHomeStack);
+ mFocusedStack = stacks.get(topNdx);
+ if (DEBUG_STACK) Slog.d(TAG, "moveHomeTask: topStack old=" + topStack + " new="
+ + mFocusedStack);
}
}
@@ -301,21 +338,29 @@ public final class ActivityStackSupervisor {
}
TaskRecord anyTaskForIdLocked(int id) {
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- ActivityStack stack = mStacks.get(stackNdx);
- TaskRecord task = stack.taskForIdLocked(id);
- if (task != null) {
- return task;
+ int numDisplays = mActivityDisplays.size();
+ for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
+ ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ ActivityStack stack = stacks.get(stackNdx);
+ TaskRecord task = stack.taskForIdLocked(id);
+ if (task != null) {
+ return task;
+ }
}
}
return null;
}
ActivityRecord isInAnyStackLocked(IBinder token) {
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityRecord r = mStacks.get(stackNdx).isInStackLocked(token);
- if (r != null) {
- return r;
+ int numDisplays = mActivityDisplays.size();
+ for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
+ ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityRecord r = stacks.get(stackNdx).isInStackLocked(token);
+ if (r != null) {
+ return r;
+ }
}
}
return null;
@@ -331,26 +376,6 @@ public final class ActivityStackSupervisor {
return mCurTaskId;
}
- void removeTask(TaskRecord task) {
- mWindowManager.removeTask(task.taskId);
- final ActivityStack stack = task.stack;
- final ActivityRecord r = stack.mResumedActivity;
- if (r != null && r.task == task) {
- stack.mResumedActivity = null;
- }
- if (stack.removeTask(task) && !stack.isHomeStack()) {
- if (DEBUG_STACK) Slog.i(TAG, "removeTask: removing stack " + stack);
- mStacks.remove(stack);
- final int stackId = stack.mStackId;
- final int nextStackId = mWindowManager.removeStack(stackId);
- // TODO: Perhaps we need to let the ActivityManager determine the next focus...
- if (mFocusedStack == null || mFocusedStack.mStackId == stackId) {
- // If this is the last app stack, set mFocusedStack to null.
- mFocusedStack = nextStackId == HOME_STACK_ID ? null : getStack(nextStackId);
- }
- }
- }
-
ActivityRecord resumedAppLocked() {
ActivityStack stack = getFocusedStack();
if (stack == null) {
@@ -366,29 +391,29 @@ public final class ActivityStackSupervisor {
return resumedActivity;
}
- boolean attachApplicationLocked(ProcessRecord app, boolean headless) throws Exception {
- boolean didSomething = false;
+ boolean attachApplicationLocked(ProcessRecord app) throws Exception {
final String processName = app.processName;
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- if (!isFrontStack(stack)) {
- continue;
- }
- ActivityRecord hr = stack.topRunningActivityLocked(null);
- if (hr != null) {
- if (hr.app == null && app.uid == hr.info.applicationInfo.uid
- && processName.equals(hr.processName)) {
- try {
- if (headless) {
- Slog.e(TAG, "Starting activities not supported on headless device: "
- + hr);
- } else if (realStartActivityLocked(hr, app, true, true)) {
- didSomething = true;
+ boolean didSomething = false;
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ if (!isFrontStack(stack)) {
+ continue;
+ }
+ ActivityRecord hr = stack.topRunningActivityLocked(null);
+ if (hr != null) {
+ if (hr.app == null && app.uid == hr.info.applicationInfo.uid
+ && processName.equals(hr.processName)) {
+ try {
+ if (realStartActivityLocked(hr, app, true, true)) {
+ didSomething = true;
+ }
+ } catch (Exception e) {
+ Slog.w(TAG, "Exception in new application when starting activity "
+ + hr.intent.getComponent().flattenToShortString(), e);
+ throw e;
}
- } catch (Exception e) {
- Slog.w(TAG, "Exception in new application when starting activity "
- + hr.intent.getComponent().flattenToShortString(), e);
- throw e;
}
}
}
@@ -400,53 +425,54 @@ public final class ActivityStackSupervisor {
}
boolean allResumedActivitiesIdle() {
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- if (!isFrontStack(stack)) {
- continue;
- }
- final ActivityRecord resumedActivity = stack.mResumedActivity;
- if (resumedActivity == null || !resumedActivity.idle) {
- return false;
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ if (!isFrontStack(stack) || stack.numActivities() == 0) {
+ continue;
+ }
+ final ActivityRecord resumedActivity = stack.mResumedActivity;
+ if (resumedActivity == null || !resumedActivity.idle) {
+ if (DEBUG_STATES) Slog.d(TAG, "allResumedActivitiesIdle: stack="
+ + stack.mStackId + " " + resumedActivity + " not idle");
+ return false;
+ }
}
}
return true;
}
boolean allResumedActivitiesComplete() {
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- if (isFrontStack(stack)) {
- final ActivityRecord r = stack.mResumedActivity;
- if (r != null && r.state != ActivityState.RESUMED) {
- return false;
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ if (isFrontStack(stack)) {
+ final ActivityRecord r = stack.mResumedActivity;
+ if (r != null && r.state != ActivityState.RESUMED) {
+ return false;
+ }
}
}
}
// TODO: Not sure if this should check if all Paused are complete too.
- switch (mStackState) {
- case STACK_STATE_HOME_TO_BACK:
- if (DEBUG_STACK) Slog.d(TAG, "allResumedActivitiesComplete: mStackState old=" +
- stackStateToString(STACK_STATE_HOME_TO_BACK) + " new=" +
- stackStateToString(STACK_STATE_HOME_IN_BACK));
- mStackState = STACK_STATE_HOME_IN_BACK;
- break;
- case STACK_STATE_HOME_TO_FRONT:
- if (DEBUG_STACK) Slog.d(TAG, "allResumedActivitiesComplete: mStackState old=" +
- stackStateToString(STACK_STATE_HOME_TO_FRONT) + " new=" +
- stackStateToString(STACK_STATE_HOME_IN_FRONT));
- mStackState = STACK_STATE_HOME_IN_FRONT;
- break;
- }
+ if (DEBUG_STACK) Slog.d(TAG,
+ "allResumedActivitiesComplete: mLastFocusedStack changing from=" +
+ mLastFocusedStack + " to=" + mFocusedStack);
+ mLastFocusedStack = mFocusedStack;
return true;
}
boolean allResumedActivitiesVisible() {
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- final ActivityRecord r = stack.mResumedActivity;
- if (r != null && (!r.nowVisible || r.waitingVisible)) {
- return false;
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ final ActivityRecord r = stack.mResumedActivity;
+ if (r != null && (!r.nowVisible || r.waitingVisible)) {
+ return false;
+ }
}
}
return true;
@@ -459,13 +485,16 @@ public final class ActivityStackSupervisor {
*/
boolean pauseBackStacks(boolean userLeaving) {
boolean someActivityPaused = false;
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- if (!isFrontStack(stack) && stack.mResumedActivity != null) {
- if (DEBUG_STATES) Slog.d(TAG, "pauseBackStacks: stack=" + stack +
- " mResumedActivity=" + stack.mResumedActivity);
- stack.startPausingLocked(userLeaving, false);
- someActivityPaused = true;
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ if (!isFrontStack(stack) && stack.mResumedActivity != null) {
+ if (DEBUG_STATES) Slog.d(TAG, "pauseBackStacks: stack=" + stack +
+ " mResumedActivity=" + stack.mResumedActivity);
+ stack.startPausingLocked(userLeaving, false);
+ someActivityPaused = true;
+ }
}
}
return someActivityPaused;
@@ -473,23 +502,40 @@ public final class ActivityStackSupervisor {
boolean allPausedActivitiesComplete() {
boolean pausing = true;
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- final ActivityRecord r = stack.mPausingActivity;
- if (r != null && r.state != ActivityState.PAUSED
- && r.state != ActivityState.STOPPED
- && r.state != ActivityState.STOPPING) {
- if (DEBUG_STATES) {
- Slog.d(TAG, "allPausedActivitiesComplete: r=" + r + " state=" + r.state);
- pausing = false;
- } else {
- return false;
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ final ActivityRecord r = stack.mPausingActivity;
+ if (r != null && r.state != ActivityState.PAUSED
+ && r.state != ActivityState.STOPPED
+ && r.state != ActivityState.STOPPING) {
+ if (DEBUG_STATES) {
+ Slog.d(TAG, "allPausedActivitiesComplete: r=" + r + " state=" + r.state);
+ pausing = false;
+ } else {
+ return false;
+ }
}
}
}
return pausing;
}
+ void pauseChildStacks(ActivityRecord parent, boolean userLeaving, boolean uiSleeping) {
+ // TODO: Put all stacks in supervisor and iterate through them instead.
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ if (stack.mResumedActivity != null &&
+ stack.mActivityContainer.mParentActivity == parent) {
+ stack.startPausingLocked(userLeaving, uiSleeping);
+ }
+ }
+ }
+ }
+
void reportActivityVisibleLocked(ActivityRecord r) {
for (int i = mWaitingActivityVisible.size()-1; i >= 0; i--) {
WaitResult w = mWaitingActivityVisible.get(i);
@@ -525,8 +571,10 @@ public final class ActivityStackSupervisor {
return r;
}
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
+ // Return to the home stack.
+ final ArrayList<ActivityStack> stacks = mHomeStack.mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
if (stack != focusedStack && isFrontStack(stack)) {
r = stack.topRunningActivityLocked(null);
if (r != null) {
@@ -542,15 +590,19 @@ public final class ActivityStackSupervisor {
ActivityRecord r = null;
// Gather all of the running tasks for each stack into runningTaskLists.
- final int numStacks = mStacks.size();
- ArrayList<RunningTaskInfo>[] runningTaskLists = new ArrayList[numStacks];
- for (int stackNdx = numStacks - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- ArrayList<RunningTaskInfo> stackTaskList = new ArrayList<RunningTaskInfo>();
- runningTaskLists[stackNdx] = stackTaskList;
- final ActivityRecord ar = stack.getTasksLocked(receiver, pending, stackTaskList);
- if (isFrontStack(stack)) {
- r = ar;
+ ArrayList<ArrayList<RunningTaskInfo>> runningTaskLists =
+ new ArrayList<ArrayList<RunningTaskInfo>>();
+ final int numDisplays = mActivityDisplays.size();
+ for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
+ ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ ArrayList<RunningTaskInfo> stackTaskList = new ArrayList<RunningTaskInfo>();
+ runningTaskLists.add(stackTaskList);
+ final ActivityRecord ar = stack.getTasksLocked(receiver, pending, stackTaskList);
+ if (r == null && isFrontStack(stack)) {
+ r = ar;
+ }
}
}
@@ -559,8 +611,9 @@ public final class ActivityStackSupervisor {
while (maxNum > 0) {
long mostRecentActiveTime = Long.MIN_VALUE;
ArrayList<RunningTaskInfo> selectedStackList = null;
- for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
- ArrayList<RunningTaskInfo> stackTaskList = runningTaskLists[stackNdx];
+ final int numTaskLists = runningTaskLists.size();
+ for (int stackNdx = 0; stackNdx < numTaskLists; ++stackNdx) {
+ ArrayList<RunningTaskInfo> stackTaskList = runningTaskLists.get(stackNdx);
if (!stackTaskList.isEmpty()) {
final long lastActiveTime = stackTaskList.get(0).lastActiveTime;
if (lastActiveTime > mostRecentActiveTime) {
@@ -630,14 +683,14 @@ public final class ActivityStackSupervisor {
void startHomeActivity(Intent intent, ActivityInfo aInfo) {
moveHomeToTop();
startActivityLocked(null, intent, null, aInfo, null, null, 0, 0, 0, null, 0,
- null, false, null);
+ null, false, null, null);
}
final int startActivityMayWait(IApplicationThread caller, int callingUid,
String callingPackage, Intent intent, String resolvedType, IBinder resultTo,
String resultWho, int requestCode, int startFlags, String profileFile,
ParcelFileDescriptor profileFd, WaitResult outResult, Configuration config,
- Bundle options, int userId) {
+ Bundle options, int userId, IActivityContainer iContainer) {
// Refuse possible leaked file descriptors
if (intent != null && intent.hasFileDescriptors()) {
throw new IllegalArgumentException("File descriptors passed in Intent");
@@ -651,6 +704,7 @@ public final class ActivityStackSupervisor {
ActivityInfo aInfo = resolveActivity(intent, resolvedType, startFlags,
profileFile, profileFd, userId);
+ ActivityContainer container = (ActivityContainer)iContainer;
synchronized (mService) {
int callingPid;
if (callingUid >= 0) {
@@ -662,7 +716,12 @@ public final class ActivityStackSupervisor {
callingPid = callingUid = -1;
}
- final ActivityStack stack = getFocusedStack();
+ final ActivityStack stack;
+ if (container == null || container.mStack.isOnHomeDisplay()) {
+ stack = getFocusedStack();
+ } else {
+ stack = container.mStack;
+ }
stack.mConfigWillChange = config != null
&& mService.mConfiguration.diff(config) != 0;
if (DEBUG_CONFIGURATION) Slog.v(TAG,
@@ -738,9 +797,9 @@ public final class ActivityStackSupervisor {
}
}
- int res = startActivityLocked(caller, intent, resolvedType,
- aInfo, resultTo, resultWho, requestCode, callingPid, callingUid,
- callingPackage, startFlags, options, componentSpecified, null);
+ int res = startActivityLocked(caller, intent, resolvedType, aInfo, resultTo, resultWho,
+ requestCode, callingPid, callingUid, callingPackage, startFlags, options,
+ componentSpecified, null, container);
if (stack.mConfigWillChange) {
// If the caller also wants to switch to a new configuration,
@@ -855,7 +914,7 @@ public final class ActivityStackSupervisor {
}
int res = startActivityLocked(caller, intent, resolvedTypes[i],
aInfo, resultTo, null, -1, callingPid, callingUid, callingPackage,
- 0, theseOptions, componentSpecified, outActivity);
+ 0, theseOptions, componentSpecified, outActivity, null);
if (res < 0) {
return res;
}
@@ -1079,7 +1138,7 @@ public final class ActivityStackSupervisor {
Intent intent, String resolvedType, ActivityInfo aInfo, IBinder resultTo,
String resultWho, int requestCode,
int callingPid, int callingUid, String callingPackage, int startFlags, Bundle options,
- boolean componentSpecified, ActivityRecord[] outActivity) {
+ boolean componentSpecified, ActivityRecord[] outActivity, ActivityContainer container) {
int err = ActivityManager.START_SUCCESS;
ProcessRecord callerApp = null;
@@ -1099,7 +1158,11 @@ public final class ActivityStackSupervisor {
if (err == ActivityManager.START_SUCCESS) {
final int userId = aInfo != null ? UserHandle.getUserId(aInfo.applicationInfo.uid) : 0;
Slog.i(TAG, "START u" + userId + " {" + intent.toShortString(true, true, true, false)
- + "} from pid " + (callerApp != null ? callerApp.pid : callingPid));
+ + "} from pid " + (callerApp != null ? callerApp.pid : callingPid)
+ + " on display " + (container == null ? (mFocusedStack == null ?
+ Display.DEFAULT_DISPLAY : mFocusedStack.mDisplayId) :
+ (container.mActivityDisplay == null ? Display.DEFAULT_DISPLAY :
+ container.mActivityDisplay.mDisplayId)));
}
ActivityRecord sourceRecord = null;
@@ -1227,8 +1290,8 @@ public final class ActivityStackSupervisor {
}
ActivityRecord r = new ActivityRecord(mService, callerApp, callingUid, callingPackage,
- intent, resolvedType, aInfo, mService.mConfiguration,
- resultRecord, resultWho, requestCode, componentSpecified, this);
+ intent, resolvedType, aInfo, mService.mConfiguration, resultRecord, resultWho,
+ requestCode, componentSpecified, this, container);
if (outActivity != null) {
outActivity[0] = r;
}
@@ -1276,25 +1339,35 @@ public final class ActivityStackSupervisor {
if (r.isApplicationActivity() || (task != null && task.isApplicationTask())) {
if (task != null) {
final ActivityStack taskStack = task.stack;
- if (mFocusedStack != taskStack) {
- if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG,
- "adjustStackFocus: Setting focused stack to r=" + r + " task=" + task);
- mFocusedStack = taskStack.isHomeStack() ? null : taskStack;
- } else {
- if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG,
- "adjustStackFocus: Focused stack already=" + mFocusedStack);
+ if (taskStack.isOnHomeDisplay()) {
+ if (mFocusedStack != taskStack) {
+ if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG, "adjustStackFocus: Setting " +
+ "focused stack to r=" + r + " task=" + task);
+ mFocusedStack = taskStack;
+ } else {
+ if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG,
+ "adjustStackFocus: Focused stack already=" + mFocusedStack);
+ }
}
return taskStack;
}
- if (mFocusedStack != null) {
+ final ActivityContainer container = r.mInitialActivityContainer;
+ if (container != null) {
+ // The first time put it on the desired stack, after this put on task stack.
+ r.mInitialActivityContainer = null;
+ return container.mStack;
+ }
+
+ if (mFocusedStack != mHomeStack) {
if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG,
"adjustStackFocus: Have a focused stack=" + mFocusedStack);
return mFocusedStack;
}
- for (int stackNdx = mStacks.size() - 1; stackNdx > 0; --stackNdx) {
- ActivityStack stack = mStacks.get(stackNdx);
+ final ArrayList<ActivityStack> homeDisplayStacks = mHomeStack.mStacks;
+ for (int stackNdx = homeDisplayStacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = homeDisplayStacks.get(stackNdx);
if (!stack.isHomeStack()) {
if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG,
"adjustStackFocus: Setting focused stack=" + stack);
@@ -1303,9 +1376,8 @@ public final class ActivityStackSupervisor {
}
}
- // Time to create the first app stack for this user.
- int stackId =
- mService.createStack(-1, HOME_STACK_ID, StackBox.TASK_STACK_GOES_OVER, 1.0f);
+ // Need to create an app stack for this user.
+ int stackId = createStackOnDisplay(null, getNextStackId(), Display.DEFAULT_DISPLAY);
if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG, "adjustStackFocus: New stack r=" + r +
" stackId=" + stackId);
mFocusedStack = getStack(stackId);
@@ -1315,30 +1387,17 @@ public final class ActivityStackSupervisor {
}
void setFocusedStack(ActivityRecord r) {
- if (r == null) {
- return;
- }
- if (!r.isApplicationActivity() || (r.task != null && !r.task.isApplicationTask())) {
- if (mStackState != STACK_STATE_HOME_IN_FRONT) {
- if (DEBUG_STACK || DEBUG_FOCUS) Slog.d(TAG, "setFocusedStack: mStackState old=" +
- stackStateToString(mStackState) + " new=" +
- stackStateToString(STACK_STATE_HOME_TO_FRONT) +
- " Callers=" + Debug.getCallers(3));
- mStackState = STACK_STATE_HOME_TO_FRONT;
+ if (r != null) {
+ final TaskRecord task = r.task;
+ boolean isHomeActivity = !r.isApplicationActivity();
+ if (!isHomeActivity && task != null) {
+ isHomeActivity = !task.isApplicationTask();
}
- } else {
- if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG,
- "setFocusedStack: Setting focused stack to r=" + r + " task=" + r.task +
- " Callers=" + Debug.getCallers(3));
- final ActivityStack taskStack = r.task.stack;
- mFocusedStack = taskStack.isHomeStack() ? null : taskStack;
- if (mStackState != STACK_STATE_HOME_IN_BACK) {
- if (DEBUG_STACK) Slog.d(TAG, "setFocusedStack: mStackState old=" +
- stackStateToString(mStackState) + " new=" +
- stackStateToString(STACK_STATE_HOME_TO_BACK) +
- " Callers=" + Debug.getCallers(3));
- mStackState = STACK_STATE_HOME_TO_BACK;
+ if (!isHomeActivity && task != null) {
+ final ActivityRecord parent = task.stack.mActivityContainer.mParentActivity;
+ isHomeActivity = parent != null && parent.isHomeActivity();
}
+ moveHomeStack(isHomeActivity);
}
}
@@ -1465,7 +1524,7 @@ public final class ActivityStackSupervisor {
targetStack.mLastPausedActivity = null;
if (DEBUG_TASKS) Slog.d(TAG, "Bring to front target: " + targetStack
+ " from " + intentActivity);
- moveHomeStack(targetStack.isHomeStack());
+ targetStack.moveToFront();
if (intentActivity.task.intent == null) {
// This task was started because of movement of
// the activity based on affinity... now that we
@@ -1515,9 +1574,6 @@ public final class ActivityStackSupervisor {
} else {
ActivityOptions.abort(options);
}
- if (r.task == null) Slog.v(TAG,
- "startActivityUncheckedLocked: task left null",
- new RuntimeException("here").fillInStackTrace());
return ActivityManager.START_RETURN_INTENT_TO_CALLER;
}
if ((launchFlags &
@@ -1610,9 +1666,6 @@ public final class ActivityStackSupervisor {
} else {
ActivityOptions.abort(options);
}
- if (r.task == null) Slog.v(TAG,
- "startActivityUncheckedLocked: task left null",
- new RuntimeException("here").fillInStackTrace());
return ActivityManager.START_TASK_TO_FRONT;
}
}
@@ -1650,15 +1703,9 @@ public final class ActivityStackSupervisor {
// We don't need to start a new activity, and
// the client said not to do anything if that
// is the case, so this is it!
- if (r.task == null) Slog.v(TAG,
- "startActivityUncheckedLocked: task left null",
- new RuntimeException("here").fillInStackTrace());
return ActivityManager.START_RETURN_INTENT_TO_CALLER;
}
top.deliverNewIntentLocked(callingUid, r.intent);
- if (r.task == null) Slog.v(TAG,
- "startActivityUncheckedLocked: task left null",
- new RuntimeException("here").fillInStackTrace());
return ActivityManager.START_DELIVERED_TO_TOP;
}
}
@@ -1671,9 +1718,6 @@ public final class ActivityStackSupervisor {
r.requestCode, Activity.RESULT_CANCELED, null);
}
ActivityOptions.abort(options);
- if (r.task == null) Slog.v(TAG,
- "startActivityUncheckedLocked: task left null",
- new RuntimeException("here").fillInStackTrace());
return ActivityManager.START_CLASS_NOT_FOUND;
}
@@ -1684,7 +1728,7 @@ public final class ActivityStackSupervisor {
if (r.resultTo == null && !addingToTask
&& (launchFlags&Intent.FLAG_ACTIVITY_NEW_TASK) != 0) {
targetStack = adjustStackFocus(r);
- moveHomeStack(targetStack.isHomeStack());
+ targetStack.moveToFront();
if (reuseTask == null) {
r.setTask(targetStack.createTaskRecord(getNextTaskId(),
newTaskInfo != null ? newTaskInfo : r.info,
@@ -1702,13 +1746,13 @@ public final class ActivityStackSupervisor {
== (Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_TASK_ON_HOME)) {
// Caller wants to appear on home activity, so before starting
// their own activity we will bring home to the front.
- r.task.mOnTopOfHome = true;
+ r.task.mOnTopOfHome = r.task.stack.isOnHomeDisplay();
}
}
} else if (sourceRecord != null) {
TaskRecord sourceTask = sourceRecord.task;
targetStack = sourceTask.stack;
- moveHomeStack(targetStack.isHomeStack());
+ targetStack.moveToFront();
if (!addingToTask &&
(launchFlags&Intent.FLAG_ACTIVITY_CLEAR_TOP) != 0) {
// In this case, we are adding the activity to an existing
@@ -1726,9 +1770,6 @@ public final class ActivityStackSupervisor {
targetStack.resumeTopActivityLocked(null);
}
ActivityOptions.abort(options);
- if (r.task == null) Slog.w(TAG,
- "startActivityUncheckedLocked: task left null",
- new RuntimeException("here").fillInStackTrace());
return ActivityManager.START_DELIVERED_TO_TOP;
}
} else if (!addingToTask &&
@@ -1762,7 +1803,7 @@ public final class ActivityStackSupervisor {
// of a new task... just put it in the top task, though these days
// this case should never happen.
targetStack = adjustStackFocus(r);
- moveHomeStack(targetStack.isHomeStack());
+ targetStack.moveToFront();
ActivityRecord prev = targetStack.topActivity();
r.setTask(prev != null ? prev.task
: targetStack.createTaskRecord(getNextTaskId(), r.info, intent, true),
@@ -1954,17 +1995,21 @@ public final class ActivityStackSupervisor {
boolean handleAppDiedLocked(ProcessRecord app) {
boolean hasVisibleActivities = false;
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- hasVisibleActivities |= mStacks.get(stackNdx).handleAppDiedLocked(app);
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ hasVisibleActivities |= stacks.get(stackNdx).handleAppDiedLocked(app);
+ }
}
return hasVisibleActivities;
}
void closeSystemDialogsLocked() {
- final int numStacks = mStacks.size();
- for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- stack.closeSystemDialogsLocked();
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ stacks.get(stackNdx).closeSystemDialogsLocked();
+ }
}
}
@@ -1977,11 +2022,14 @@ public final class ActivityStackSupervisor {
*/
boolean forceStopPackageLocked(String name, boolean doit, boolean evenPersistent, int userId) {
boolean didSomething = false;
- final int numStacks = mStacks.size();
- for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- if (stack.forceStopPackageLocked(name, doit, evenPersistent, userId)) {
- didSomething = true;
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ final int numStacks = stacks.size();
+ for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ if (stack.forceStopPackageLocked(name, doit, evenPersistent, userId)) {
+ didSomething = true;
+ }
}
}
return didSomething;
@@ -1996,15 +2044,18 @@ public final class ActivityStackSupervisor {
// we don't blow away the previous app if this activity is being
// hosted by the process that is actually still the foreground.
ProcessRecord fgApp = null;
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- if (isFrontStack(stack)) {
- if (stack.mResumedActivity != null) {
- fgApp = stack.mResumedActivity.app;
- } else if (stack.mPausingActivity != null) {
- fgApp = stack.mPausingActivity.app;
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ if (isFrontStack(stack)) {
+ if (stack.mResumedActivity != null) {
+ fgApp = stack.mResumedActivity.app;
+ } else if (stack.mPausingActivity != null) {
+ fgApp = stack.mPausingActivity.app;
+ }
+ break;
}
- break;
}
}
@@ -2027,13 +2078,20 @@ public final class ActivityStackSupervisor {
if (targetStack == null) {
targetStack = getFocusedStack();
}
+ // Do targetStack first.
boolean result = false;
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- if (isFrontStack(stack)) {
+ if (isFrontStack(targetStack)) {
+ result = targetStack.resumeTopActivityLocked(target, targetOptions);
+ }
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
if (stack == targetStack) {
- result = stack.resumeTopActivityLocked(target, targetOptions);
- } else {
+ // Already started above.
+ continue;
+ }
+ if (isFrontStack(stack)) {
stack.resumeTopActivityLocked(null);
}
}
@@ -2042,38 +2100,133 @@ public final class ActivityStackSupervisor {
}
void finishTopRunningActivityLocked(ProcessRecord app) {
- final int numStacks = mStacks.size();
- for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- stack.finishTopRunningActivityLocked(app);
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ final int numStacks = stacks.size();
+ for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ stack.finishTopRunningActivityLocked(app);
+ }
}
}
void findTaskToMoveToFrontLocked(int taskId, int flags, Bundle options) {
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- if (mStacks.get(stackNdx).findTaskToMoveToFrontLocked(taskId, flags, options)) {
- if (DEBUG_STACK) Slog.d(TAG, "findTaskToMoveToFront: moved to front of stack=" +
- mStacks.get(stackNdx));
- return;
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ if (stacks.get(stackNdx).findTaskToMoveToFrontLocked(taskId, flags, options)) {
+ if (DEBUG_STACK) Slog.d(TAG, "findTaskToMoveToFront: moved to front of stack="
+ + stacks.get(stackNdx));
+ return;
+ }
}
}
}
ActivityStack getStack(int stackId) {
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- if (stack.getStackId() == stackId) {
- return stack;
+ WeakReference<ActivityContainer> weakReference = mActivityContainers.get(stackId);
+ if (weakReference != null) {
+ ActivityContainer activityContainer = weakReference.get();
+ if (activityContainer != null) {
+ return activityContainer.mStack;
+ } else {
+ mActivityContainers.remove(stackId);
}
}
return null;
}
ArrayList<ActivityStack> getStacks() {
- return new ArrayList<ActivityStack>(mStacks);
+ ArrayList<ActivityStack> allStacks = new ArrayList<ActivityStack>();
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ allStacks.addAll(mActivityDisplays.valueAt(displayNdx).mStacks);
+ }
+ return allStacks;
+ }
+
+ IBinder getHomeActivityToken() {
+ final ArrayList<TaskRecord> tasks = mHomeStack.getAllTasks();
+ for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) {
+ final TaskRecord task = tasks.get(taskNdx);
+ if (task.isHomeTask()) {
+ final ArrayList<ActivityRecord> activities = task.mActivities;
+ for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
+ final ActivityRecord r = activities.get(activityNdx);
+ if (r.isHomeActivity()) {
+ return r.appToken;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ ActivityContainer createActivityContainer(ActivityRecord parentActivity, int stackId,
+ IActivityContainerCallback callback) {
+ ActivityContainer activityContainer = new ActivityContainer(parentActivity, stackId,
+ callback);
+ mActivityContainers.put(stackId, new WeakReference<ActivityContainer>(activityContainer));
+ if (parentActivity != null) {
+ parentActivity.mChildContainers.add(activityContainer.mStack);
+ }
+ return activityContainer;
}
- int createStack() {
+ ActivityContainer createActivityContainer(ActivityRecord parentActivity,
+ IActivityContainerCallback callback) {
+ return createActivityContainer(parentActivity, getNextStackId(), callback);
+ }
+
+ void removeChildActivityContainers(ActivityRecord parentActivity) {
+ for (int ndx = mActivityContainers.size() - 1; ndx >= 0; --ndx) {
+ final ActivityContainer container = mActivityContainers.valueAt(ndx).get();
+ if (container == null) {
+ mActivityContainers.removeAt(ndx);
+ continue;
+ }
+ if (container.mParentActivity != parentActivity) {
+ continue;
+ }
+
+ ActivityStack stack = container.mStack;
+ ActivityRecord top = stack.topRunningNonDelayedActivityLocked(null);
+ if (top != null) {
+ // TODO: Make sure the next activity doesn't start up when top is destroyed.
+ stack.destroyActivityLocked(top, true, true, "stack parent destroyed");
+ }
+ mActivityContainers.removeAt(ndx);
+ container.detachLocked();
+ }
+ }
+
+ void deleteActivityContainer(IActivityContainer container) {
+ ActivityContainer activityContainer = (ActivityContainer)container;
+ if (activityContainer != null) {
+ activityContainer.mStack.destroyActivitiesLocked(null, true,
+ "deleteActivityContainer");
+ final ActivityRecord parent = activityContainer.mParentActivity;
+ if (parent != null) {
+ parent.mChildContainers.remove(activityContainer);
+ }
+ final int stackId = activityContainer.mStackId;
+ mActivityContainers.remove(stackId);
+ mWindowManager.removeStack(stackId);
+ }
+ }
+
+ private int createStackOnDisplay(ActivityRecord parentActivity, int stackId, int displayId) {
+ ActivityDisplay activityDisplay = mActivityDisplays.get(displayId);
+ if (activityDisplay == null) {
+ return -1;
+ }
+
+ ActivityContainer activityContainer =
+ createActivityContainer(parentActivity, stackId, null);
+ activityContainer.attachToDisplayLocked(activityDisplay);
+ return stackId;
+ }
+
+ int getNextStackId() {
while (true) {
if (++mLastStackId <= HOME_STACK_ID) {
mLastStackId = HOME_STACK_ID + 1;
@@ -2082,7 +2235,6 @@ public final class ActivityStackSupervisor {
break;
}
}
- mStacks.add(new ActivityStack(mService, mContext, mLooper, mLastStackId));
return mLastStackId;
}
@@ -2096,7 +2248,7 @@ public final class ActivityStackSupervisor {
Slog.w(TAG, "moveTaskToStack: no stack for id=" + stackId);
return;
}
- removeTask(task);
+ task.stack.removeTask(task);
stack.addTask(task, toTop);
mWindowManager.addTask(taskId, stackId, toTop);
resumeTopActivitiesLocked();
@@ -2104,15 +2256,18 @@ public final class ActivityStackSupervisor {
ActivityRecord findTaskLocked(ActivityRecord r) {
if (DEBUG_TASKS) Slog.d(TAG, "Looking for task of " + r);
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- if (!r.isApplicationActivity() && !stack.isHomeStack()) {
- if (DEBUG_TASKS) Slog.d(TAG, "Skipping stack: " + stack);
- continue;
- }
- final ActivityRecord ar = stack.findTaskLocked(r);
- if (ar != null) {
- return ar;
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ if (!r.isApplicationActivity() && !stack.isHomeStack()) {
+ if (DEBUG_TASKS) Slog.d(TAG, "Skipping stack: " + stack);
+ continue;
+ }
+ final ActivityRecord ar = stack.findTaskLocked(r);
+ if (ar != null) {
+ return ar;
+ }
}
}
if (DEBUG_TASKS) Slog.d(TAG, "No task found");
@@ -2120,10 +2275,13 @@ public final class ActivityStackSupervisor {
}
ActivityRecord findActivityLocked(Intent intent, ActivityInfo info) {
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityRecord ar = mStacks.get(stackNdx).findActivityLocked(intent, info);
- if (ar != null) {
- return ar;
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityRecord ar = stacks.get(stackNdx).findActivityLocked(intent, info);
+ if (ar != null) {
+ return ar;
+ }
}
}
return null;
@@ -2151,8 +2309,11 @@ public final class ActivityStackSupervisor {
final long endTime = System.currentTimeMillis() + timeout;
while (true) {
boolean cantShutdown = false;
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- cantShutdown |= mStacks.get(stackNdx).checkReadyForSleepLocked();
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ cantShutdown |= stacks.get(stackNdx).checkReadyForSleepLocked();
+ }
}
if (cantShutdown) {
long timeRemaining = endTime - System.currentTimeMillis();
@@ -2183,11 +2344,14 @@ public final class ActivityStackSupervisor {
if (mGoingToSleep.isHeld()) {
mGoingToSleep.release();
}
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- stack.awakeFromSleepingLocked();
- if (isFrontStack(stack)) {
- resumeTopActivitiesLocked();
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ stack.awakeFromSleepingLocked();
+ if (isFrontStack(stack)) {
+ resumeTopActivitiesLocked();
+ }
}
}
mGoingToSleepActivities.clear();
@@ -2206,8 +2370,11 @@ public final class ActivityStackSupervisor {
if (!mSleepTimeout) {
boolean dontSleep = false;
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- dontSleep |= mStacks.get(stackNdx).checkReadyForSleepLocked();
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ dontSleep |= stacks.get(stackNdx).checkReadyForSleepLocked();
+ }
}
if (mStoppingActivities.size() > 0) {
@@ -2230,8 +2397,11 @@ public final class ActivityStackSupervisor {
}
}
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- mStacks.get(stackNdx).goToSleep();
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ stacks.get(stackNdx).goToSleep();
+ }
}
removeSleepTimeouts();
@@ -2258,37 +2428,45 @@ public final class ActivityStackSupervisor {
}
void handleAppCrashLocked(ProcessRecord app) {
- final int numStacks = mStacks.size();
- for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- stack.handleAppCrashLocked(app);
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ final int numStacks = stacks.size();
+ for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ stack.handleAppCrashLocked(app);
+ }
}
}
void ensureActivitiesVisibleLocked(ActivityRecord starting, int configChanges) {
// First the front stacks. In case any are not fullscreen and are in front of home.
boolean showHomeBehindStack = false;
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- if (isFrontStack(stack)) {
- showHomeBehindStack =
- stack.ensureActivitiesVisibleLocked(starting, configChanges);
- }
- }
- // Now do back stacks.
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- if (!isFrontStack(stack)) {
- stack.ensureActivitiesVisibleLocked(starting, configChanges, showHomeBehindStack);
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ final int topStackNdx = stacks.size() - 1;
+ for (int stackNdx = topStackNdx; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ if (stackNdx == topStackNdx) {
+ // Top stack.
+ showHomeBehindStack =
+ stack.ensureActivitiesVisibleLocked(starting, configChanges);
+ } else {
+ // Back stack.
+ stack.ensureActivitiesVisibleLocked(starting, configChanges,
+ showHomeBehindStack);
+ }
}
}
}
void scheduleDestroyAllActivities(ProcessRecord app, String reason) {
- final int numStacks = mStacks.size();
- for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- stack.scheduleDestroyActivities(app, false, reason);
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ final int numStacks = stacks.size();
+ for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ stack.scheduleDestroyActivities(app, false, reason);
+ }
}
}
@@ -2298,8 +2476,13 @@ public final class ActivityStackSupervisor {
mCurrentUser = userId;
mStartingUsers.add(uss);
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- mStacks.get(stackNdx).switchUserLocked(userId);
+ for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
+ final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ stack.switchUserLocked(userId);
+ mWindowManager.moveTaskToTop(stack.topTask().taskId);
+ }
}
ActivityStack stack = getStack(restoreStackId);
@@ -2307,8 +2490,13 @@ public final class ActivityStackSupervisor {
stack = mHomeStack;
}
final boolean homeInFront = stack.isHomeStack();
- moveHomeStack(homeInFront);
- mWindowManager.moveTaskToTop(stack.topTask().taskId);
+ if (stack.isOnHomeDisplay()) {
+ moveHomeStack(homeInFront);
+ mWindowManager.moveTaskToTop(stack.topTask().taskId);
+ } else {
+ // Stack was moved to another display while user was swapped out.
+ resumeHomeActivity(null);
+ }
return homeInFront;
}
@@ -2353,8 +2541,9 @@ public final class ActivityStackSupervisor {
}
void validateTopActivitiesLocked() {
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
+ // FIXME
+/* for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
final ActivityRecord r = stack.topRunningActivityLocked(null);
final ActivityState state = r == null ? ActivityState.DESTROYED : r.state;
if (isFrontStack(stack)) {
@@ -2384,26 +2573,18 @@ public final class ActivityStackSupervisor {
}
}
}
- }
-
- private static String stackStateToString(int stackState) {
- switch (stackState) {
- case STACK_STATE_HOME_IN_FRONT: return "STACK_STATE_HOME_IN_FRONT";
- case STACK_STATE_HOME_TO_BACK: return "STACK_STATE_HOME_TO_BACK";
- case STACK_STATE_HOME_IN_BACK: return "STACK_STATE_HOME_IN_BACK";
- case STACK_STATE_HOME_TO_FRONT: return "STACK_STATE_HOME_TO_FRONT";
- default: return "Unknown stackState=" + stackState;
- }
+*/
}
public void dump(PrintWriter pw, String prefix) {
pw.print(prefix); pw.print("mDismissKeyguardOnNextActivity=");
pw.println(mDismissKeyguardOnNextActivity);
pw.print(prefix); pw.print("mFocusedStack=" + mFocusedStack);
- pw.print(" mStackState="); pw.println(stackStateToString(mStackState));
+ pw.print(" mLastFocusedStack="); pw.println(mLastFocusedStack);
pw.print(prefix); pw.println("mSleepTimeout=" + mSleepTimeout);
pw.print(prefix); pw.println("mCurTaskId=" + mCurTaskId);
pw.print(prefix); pw.println("mUserStackInFront=" + mUserStackInFront);
+ pw.print(prefix); pw.println("mActivityContainers=" + mActivityContainers);
}
ArrayList<ActivityRecord> getDumpActivitiesLocked(String name) {
@@ -2429,42 +2610,48 @@ public final class ActivityStackSupervisor {
boolean dumpClient, String dumpPackage) {
boolean printed = false;
boolean needSep = false;
- final int numStacks = mStacks.size();
- for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- StringBuilder stackHeader = new StringBuilder(128);
- stackHeader.append(" Stack #");
- stackHeader.append(mStacks.indexOf(stack));
- stackHeader.append(":");
- printed |= stack.dumpActivitiesLocked(fd, pw, dumpAll, dumpClient, dumpPackage, needSep,
- stackHeader.toString());
- printed |= dumpHistoryList(fd, pw, stack.mLRUActivities, " ", "Run", false, !dumpAll,
- false, dumpPackage, true, " Running activities (most recent first):", null);
-
- needSep = printed;
- boolean pr = printThisActivity(pw, stack.mPausingActivity, dumpPackage, needSep,
- " mPausingActivity: ");
- if (pr) {
- printed = true;
- needSep = false;
- }
- pr = printThisActivity(pw, stack.mResumedActivity, dumpPackage, needSep,
- " mResumedActivity: ");
- if (pr) {
- printed = true;
- needSep = false;
- }
- if (dumpAll) {
- pr = printThisActivity(pw, stack.mLastPausedActivity, dumpPackage, needSep,
- " mLastPausedActivity: ");
+ for (int displayNdx = 0; displayNdx < mActivityDisplays.size(); ++displayNdx) {
+ ActivityDisplay activityDisplay = mActivityDisplays.valueAt(displayNdx);
+ pw.print("Display #"); pw.println(activityDisplay.mDisplayId);
+ ArrayList<ActivityStack> stacks = activityDisplay.mStacks;
+ final int numStacks = stacks.size();
+ for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
+ final ActivityStack stack = stacks.get(stackNdx);
+ StringBuilder stackHeader = new StringBuilder(128);
+ stackHeader.append(" Stack #");
+ stackHeader.append(stack.mStackId);
+ stackHeader.append(":");
+ printed |= stack.dumpActivitiesLocked(fd, pw, dumpAll, dumpClient, dumpPackage,
+ needSep, stackHeader.toString());
+ printed |= dumpHistoryList(fd, pw, stack.mLRUActivities, " ", "Run", false,
+ !dumpAll, false, dumpPackage, true,
+ " Running activities (most recent first):", null);
+
+ needSep = printed;
+ boolean pr = printThisActivity(pw, stack.mPausingActivity, dumpPackage, needSep,
+ " mPausingActivity: ");
if (pr) {
printed = true;
- needSep = true;
+ needSep = false;
}
- printed |= printThisActivity(pw, stack.mLastNoHistoryActivity, dumpPackage,
- needSep, " mLastNoHistoryActivity: ");
+ pr = printThisActivity(pw, stack.mResumedActivity, dumpPackage, needSep,
+ " mResumedActivity: ");
+ if (pr) {
+ printed = true;
+ needSep = false;
+ }
+ if (dumpAll) {
+ pr = printThisActivity(pw, stack.mLastPausedActivity, dumpPackage, needSep,
+ " mLastPausedActivity: ");
+ if (pr) {
+ printed = true;
+ needSep = true;
+ }
+ printed |= printThisActivity(pw, stack.mLastNoHistoryActivity, dumpPackage,
+ needSep, " mLastNoHistoryActivity: ");
+ }
+ needSep = printed;
}
- needSep = printed;
}
printed |= dumpHistoryList(fd, pw, mFinishingActivities, " ", "Fin", false, !dumpAll,
@@ -2581,7 +2768,9 @@ public final class ActivityStackSupervisor {
}
final void scheduleResumeTopActivities() {
- mHandler.sendEmptyMessage(RESUME_TOP_ACTIVITY_MSG);
+ if (!mHandler.hasMessages(RESUME_TOP_ACTIVITY_MSG)) {
+ mHandler.sendEmptyMessage(RESUME_TOP_ACTIVITY_MSG);
+ }
}
void removeSleepTimeouts() {
@@ -2594,6 +2783,101 @@ public final class ActivityStackSupervisor {
mHandler.sendEmptyMessageDelayed(SLEEP_TIMEOUT_MSG, SLEEP_TIMEOUT);
}
+ @Override
+ public void onDisplayAdded(int displayId) {
+ mHandler.sendMessage(mHandler.obtainMessage(HANDLE_DISPLAY_ADDED, displayId, 0));
+ }
+
+ @Override
+ public void onDisplayRemoved(int displayId) {
+ mHandler.sendMessage(mHandler.obtainMessage(HANDLE_DISPLAY_REMOVED, displayId, 0));
+ }
+
+ @Override
+ public void onDisplayChanged(int displayId) {
+ mHandler.sendMessage(mHandler.obtainMessage(HANDLE_DISPLAY_CHANGED, displayId, 0));
+ }
+
+ public void handleDisplayAddedLocked(int displayId) {
+ boolean newDisplay;
+ synchronized (mService) {
+ newDisplay = mActivityDisplays.get(displayId) == null;
+ if (newDisplay) {
+ ActivityDisplay activityDisplay = new ActivityDisplay(displayId);
+ mActivityDisplays.put(displayId, activityDisplay);
+ }
+ }
+ if (newDisplay) {
+ mWindowManager.onDisplayAdded(displayId);
+ }
+ }
+
+ public void handleDisplayRemovedLocked(int displayId) {
+ synchronized (mService) {
+ ActivityDisplay activityDisplay = mActivityDisplays.get(displayId);
+ if (activityDisplay != null) {
+ ArrayList<ActivityStack> stacks = activityDisplay.mStacks;
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ stacks.get(stackNdx).mActivityContainer.detachLocked();
+ }
+ mActivityDisplays.remove(displayId);
+ }
+ }
+ mWindowManager.onDisplayRemoved(displayId);
+ }
+
+ public void handleDisplayChangedLocked(int displayId) {
+ synchronized (mService) {
+ ActivityDisplay activityDisplay = mActivityDisplays.get(displayId);
+ if (activityDisplay != null) {
+ // TODO: Update the bounds.
+ }
+ }
+ mWindowManager.onDisplayChanged(displayId);
+ }
+
+ StackInfo getStackInfo(ActivityStack stack) {
+ StackInfo info = new StackInfo();
+ mWindowManager.getStackBounds(stack.mStackId, info.bounds);
+ info.displayId = Display.DEFAULT_DISPLAY;
+ info.stackId = stack.mStackId;
+
+ ArrayList<TaskRecord> tasks = stack.getAllTasks();
+ final int numTasks = tasks.size();
+ int[] taskIds = new int[numTasks];
+ String[] taskNames = new String[numTasks];
+ for (int i = 0; i < numTasks; ++i) {
+ final TaskRecord task = tasks.get(i);
+ taskIds[i] = task.taskId;
+ taskNames[i] = task.origActivity != null ? task.origActivity.flattenToString()
+ : task.realActivity != null ? task.realActivity.flattenToString()
+ : task.getTopActivity() != null ? task.getTopActivity().packageName
+ : "unknown";
+ }
+ info.taskIds = taskIds;
+ info.taskNames = taskNames;
+ return info;
+ }
+
+ StackInfo getStackInfoLocked(int stackId) {
+ ActivityStack stack = getStack(stackId);
+ if (stack != null) {
+ return getStackInfo(stack);
+ }
+ return null;
+ }
+
+ ArrayList<StackInfo> getAllStackInfosLocked() {
+ ArrayList<StackInfo> list = new ArrayList<StackInfo>();
+ for (int displayNdx = 0; displayNdx < mActivityDisplays.size(); ++displayNdx) {
+ ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+ for (int ndx = stacks.size() - 1; ndx >= 0; --ndx) {
+ list.add(getStackInfo(stacks.get(ndx)));
+ }
+ }
+ return list;
+ }
+
private final class ActivityStackSupervisorHandler extends Handler {
public ActivityStackSupervisorHandler(Looper looper) {
@@ -2657,7 +2941,251 @@ public final class ActivityStackSupervisor {
}
}
} break;
+ case HANDLE_DISPLAY_ADDED: {
+ handleDisplayAddedLocked(msg.arg1);
+ } break;
+ case HANDLE_DISPLAY_CHANGED: {
+ handleDisplayChangedLocked(msg.arg1);
+ } break;
+ case HANDLE_DISPLAY_REMOVED: {
+ handleDisplayRemovedLocked(msg.arg1);
+ } break;
+ }
+ }
+ }
+
+ class ActivityContainer extends IActivityContainer.Stub {
+ final int mStackId;
+ final IActivityContainerCallback mCallback;
+ final ActivityStack mStack;
+ final ActivityRecord mParentActivity;
+ final String mIdString;
+
+ /** Display this ActivityStack is currently on. Null if not attached to a Display. */
+ ActivityDisplay mActivityDisplay;
+
+ ActivityContainer(ActivityRecord parentActivity, int stackId,
+ IActivityContainerCallback callback) {
+ synchronized (mService) {
+ mStackId = stackId;
+ mStack = new ActivityStack(this);
+ mParentActivity = parentActivity;
+ mCallback = callback;
+ mIdString = "ActivtyContainer{" + mStackId + ", parent=" + mParentActivity + "}";
+ if (DEBUG_STACK) Slog.d(TAG, "Creating " + this);
+ }
+ }
+
+ void attachToDisplayLocked(ActivityDisplay activityDisplay) {
+ if (DEBUG_STACK) Slog.d(TAG, "attachToDisplayLocked: " + this
+ + " to display=" + activityDisplay);
+ mActivityDisplay = activityDisplay;
+ mStack.mDisplayId = activityDisplay.mDisplayId;
+ mStack.mStacks = activityDisplay.mStacks;
+
+ activityDisplay.attachActivities(mStack);
+ mWindowManager.attachStack(mStackId, activityDisplay.mDisplayId);
+ }
+
+ @Override
+ public void attachToDisplay(int displayId) {
+ synchronized (mService) {
+ ActivityDisplay activityDisplay = mActivityDisplays.get(displayId);
+ if (activityDisplay == null) {
+ return;
+ }
+ attachToDisplayLocked(activityDisplay);
+ }
+ }
+
+ @Override
+ public int getDisplayId() {
+ if (mActivityDisplay != null) {
+ return mActivityDisplay.mDisplayId;
}
+ return -1;
+ }
+
+ @Override
+ public boolean injectEvent(InputEvent event) {
+ final long origId = Binder.clearCallingIdentity();
+ try {
+ if (mActivityDisplay != null) {
+ return mInputManagerInternal.injectInputEvent(event,
+ mActivityDisplay.mDisplayId,
+ InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
+ }
+ return false;
+ } finally {
+ Binder.restoreCallingIdentity(origId);
+ }
+ }
+
+ private void detachLocked() {
+ if (DEBUG_STACK) Slog.d(TAG, "detachLocked: " + this + " from display="
+ + mActivityDisplay + " Callers=" + Debug.getCallers(2));
+ if (mActivityDisplay != null) {
+ mActivityDisplay.detachActivitiesLocked(mStack);
+ mActivityDisplay = null;
+ mStack.mDisplayId = -1;
+ mStack.mStacks = null;
+ mWindowManager.detachStack(mStackId);
+ }
+ }
+
+ @Override
+ public void detachFromDisplay() {
+ synchronized (mService) {
+ detachLocked();
+ }
+ }
+
+ @Override
+ public final int startActivity(Intent intent) {
+ mService.enforceNotIsolatedCaller("ActivityContainer.startActivity");
+ int userId = mService.handleIncomingUser(Binder.getCallingPid(),
+ Binder.getCallingUid(), mCurrentUser, false, true, "ActivityContainer", null);
+ // TODO: Switch to user app stacks here.
+ String mimeType = intent.getType();
+ if (mimeType == null && intent.getData() != null
+ && "content".equals(intent.getData().getScheme())) {
+ mimeType = mService.getProviderMimeType(intent.getData(), userId);
+ }
+ return startActivityMayWait(null, -1, null, intent, mimeType, null, null, 0, 0, null,
+ null, null, null, null, userId, this);
+ }
+
+ @Override
+ public final int startActivityIntentSender(IIntentSender intentSender) {
+ mService.enforceNotIsolatedCaller("ActivityContainer.startActivityIntentSender");
+
+ if (!(intentSender instanceof PendingIntentRecord)) {
+ throw new IllegalArgumentException("Bad PendingIntent object");
+ }
+
+ return ((PendingIntentRecord)intentSender).sendInner(0, null, null, null, null, null,
+ null, 0, 0, 0, null, this);
+ }
+
+ @Override
+ public IBinder asBinder() {
+ return this;
+ }
+
+ @Override
+ public void attachToSurface(Surface surface, int width, int height, int density) {
+ mService.enforceNotIsolatedCaller("ActivityContainer.attachToSurface");
+
+ final long origId = Binder.clearCallingIdentity();
+ try {
+ synchronized (mService) {
+ ActivityDisplay activityDisplay =
+ new ActivityDisplay(surface, width, height, density);
+ mActivityDisplays.put(activityDisplay.mDisplayId, activityDisplay);
+ attachToDisplayLocked(activityDisplay);
+ mStack.resumeTopActivityLocked(null);
+ }
+ if (DEBUG_STACK) Slog.d(TAG, "attachToSurface: " + this + " to display="
+ + mActivityDisplay);
+ } finally {
+ Binder.restoreCallingIdentity(origId);
+ }
+ }
+
+ ActivityStackSupervisor getOuter() {
+ return ActivityStackSupervisor.this;
+ }
+
+ boolean isAttached() {
+ return mActivityDisplay != null;
+ }
+
+ void getBounds(Point outBounds) {
+ if (mActivityDisplay != null) {
+ mActivityDisplay.getBounds(outBounds);
+ } else {
+ outBounds.set(0, 0);
+ }
+ }
+
+ @Override
+ public String toString() {
+ return mIdString + (mActivityDisplay == null ? "N" : "A");
+ }
+ }
+
+ /** Exactly one of these classes per Display in the system. Capable of holding zero or more
+ * attached {@link ActivityStack}s */
+ final class ActivityDisplay {
+ /** Actual Display this object tracks. */
+ int mDisplayId;
+ Display mDisplay;
+ DisplayInfo mDisplayInfo = new DisplayInfo();
+ Surface mSurface;
+
+ /** All of the stacks on this display. Order matters, topmost stack is in front of all other
+ * stacks, bottommost behind. Accessed directly by ActivityManager package classes */
+ final ArrayList<ActivityStack> mStacks = new ArrayList<ActivityStack>();
+
+ /** If this display is for an ActivityView then the VirtualDisplay created for it is stored
+ * here. */
+ VirtualDisplay mVirtualDisplay;
+
+ ActivityDisplay(int displayId) {
+ init(mDisplayManager.getDisplay(displayId));
+ }
+
+ ActivityDisplay(Surface surface, int width, int height, int density) {
+ DisplayManagerGlobal dm = DisplayManagerGlobal.getInstance();
+ long ident = Binder.clearCallingIdentity();
+ try {
+ mVirtualDisplay = dm.createVirtualDisplay(mService.mContext,
+ VIRTUAL_DISPLAY_BASE_NAME, width, height, density, surface,
+ DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC |
+ DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+
+ init(mVirtualDisplay.getDisplay());
+ mSurface = surface;
+
+ mWindowManager.handleDisplayAdded(mDisplayId);
+ }
+
+ private void init(Display display) {
+ mDisplay = display;
+ mDisplayId = display.getDisplayId();
+ mDisplay.getDisplayInfo(mDisplayInfo);
+ }
+
+ void attachActivities(ActivityStack stack) {
+ if (DEBUG_STACK) Slog.v(TAG, "attachActivities: attaching " + stack + " to displayId="
+ + mDisplayId);
+ mStacks.add(stack);
+ }
+
+ void detachActivitiesLocked(ActivityStack stack) {
+ if (DEBUG_STACK) Slog.v(TAG, "detachActivitiesLocked: detaching " + stack
+ + " from displayId=" + mDisplayId);
+ mStacks.remove(stack);
+ if (mStacks.isEmpty() && mVirtualDisplay != null) {
+ mVirtualDisplay.release();
+ mVirtualDisplay = null;
+ }
+ mSurface.release();
+ }
+
+ void getBounds(Point bounds) {
+ mDisplay.getDisplayInfo(mDisplayInfo);
+ bounds.x = mDisplayInfo.appWidth;
+ bounds.y = mDisplayInfo.appHeight;
+ }
+
+ @Override
+ public String toString() {
+ return "ActivityDisplay={" + mDisplayId + (mVirtualDisplay == null ? "" : "V")
+ + " numStacks=" + mStacks.size() + "}";
}
}
}
diff --git a/services/java/com/android/server/am/AppBindRecord.java b/services/core/java/com/android/server/am/AppBindRecord.java
index 06265fd6856d..06265fd6856d 100644
--- a/services/java/com/android/server/am/AppBindRecord.java
+++ b/services/core/java/com/android/server/am/AppBindRecord.java
diff --git a/services/java/com/android/server/am/AppErrorDialog.java b/services/core/java/com/android/server/am/AppErrorDialog.java
index 0ba62c53dcd9..0ba62c53dcd9 100644
--- a/services/java/com/android/server/am/AppErrorDialog.java
+++ b/services/core/java/com/android/server/am/AppErrorDialog.java
diff --git a/services/java/com/android/server/am/AppErrorResult.java b/services/core/java/com/android/server/am/AppErrorResult.java
index c6a5720b537e..c6a5720b537e 100644
--- a/services/java/com/android/server/am/AppErrorResult.java
+++ b/services/core/java/com/android/server/am/AppErrorResult.java
diff --git a/services/java/com/android/server/am/AppNotRespondingDialog.java b/services/core/java/com/android/server/am/AppNotRespondingDialog.java
index f4c166421c35..f4c166421c35 100644
--- a/services/java/com/android/server/am/AppNotRespondingDialog.java
+++ b/services/core/java/com/android/server/am/AppNotRespondingDialog.java
diff --git a/services/java/com/android/server/am/AppWaitingForDebuggerDialog.java b/services/core/java/com/android/server/am/AppWaitingForDebuggerDialog.java
index 27865a88da99..27865a88da99 100644
--- a/services/java/com/android/server/am/AppWaitingForDebuggerDialog.java
+++ b/services/core/java/com/android/server/am/AppWaitingForDebuggerDialog.java
diff --git a/services/java/com/android/server/am/BackupRecord.java b/services/core/java/com/android/server/am/BackupRecord.java
index 5fa7e6a37133..5fa7e6a37133 100644
--- a/services/java/com/android/server/am/BackupRecord.java
+++ b/services/core/java/com/android/server/am/BackupRecord.java
diff --git a/services/java/com/android/server/am/BaseErrorDialog.java b/services/core/java/com/android/server/am/BaseErrorDialog.java
index 6ede8f865065..6ede8f865065 100644
--- a/services/java/com/android/server/am/BaseErrorDialog.java
+++ b/services/core/java/com/android/server/am/BaseErrorDialog.java
diff --git a/services/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java
index 2d596788a829..ff06513fb858 100644
--- a/services/java/com/android/server/am/BatteryStatsService.java
+++ b/services/core/java/com/android/server/am/BatteryStatsService.java
@@ -24,6 +24,7 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.BatteryStats;
import android.os.Binder;
+import android.os.Handler;
import android.os.IBinder;
import android.os.Parcel;
import android.os.Process;
@@ -54,8 +55,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub {
private boolean mBluetoothPendingStats;
private BluetoothHeadset mBluetoothHeadset;
- BatteryStatsService(String filename) {
- mStats = new BatteryStatsImpl(filename);
+ BatteryStatsService(String filename, Handler handler) {
+ mStats = new BatteryStatsImpl(filename, handler);
}
public void publish(Context context) {
diff --git a/services/java/com/android/server/am/BroadcastFilter.java b/services/core/java/com/android/server/am/BroadcastFilter.java
index 986b8ea3c41f..986b8ea3c41f 100644
--- a/services/java/com/android/server/am/BroadcastFilter.java
+++ b/services/core/java/com/android/server/am/BroadcastFilter.java
diff --git a/services/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java
index bfb667f8aca0..aef9e5c38e6f 100644
--- a/services/java/com/android/server/am/BroadcastQueue.java
+++ b/services/core/java/com/android/server/am/BroadcastQueue.java
@@ -33,6 +33,7 @@ import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
+import android.os.Looper;
import android.os.Message;
import android.os.Process;
import android.os.RemoteException;
@@ -132,7 +133,14 @@ public final class BroadcastQueue {
static final int BROADCAST_INTENT_MSG = ActivityManagerService.FIRST_BROADCAST_QUEUE_MSG;
static final int BROADCAST_TIMEOUT_MSG = ActivityManagerService.FIRST_BROADCAST_QUEUE_MSG + 1;
- final Handler mHandler = new Handler() {
+ final BroadcastHandler mHandler;
+
+ private final class BroadcastHandler extends Handler {
+ public BroadcastHandler(Looper looper) {
+ super(looper, null, true);
+ }
+
+ @Override
public void handleMessage(Message msg) {
switch (msg.what) {
case BROADCAST_INTENT_MSG: {
@@ -164,9 +172,10 @@ public final class BroadcastQueue {
}
}
- BroadcastQueue(ActivityManagerService service, String name, long timeoutPeriod,
- boolean allowDelayBehindServices) {
+ BroadcastQueue(ActivityManagerService service, Handler handler,
+ String name, long timeoutPeriod, boolean allowDelayBehindServices) {
mService = service;
+ mHandler = new BroadcastHandler(handler.getLooper());
mQueueName = name;
mTimeoutPeriod = timeoutPeriod;
mDelayBehindServices = allowDelayBehindServices;
diff --git a/services/java/com/android/server/am/BroadcastRecord.java b/services/core/java/com/android/server/am/BroadcastRecord.java
index b2cfd7a87242..b2cfd7a87242 100644
--- a/services/java/com/android/server/am/BroadcastRecord.java
+++ b/services/core/java/com/android/server/am/BroadcastRecord.java
diff --git a/services/java/com/android/server/am/CompatModeDialog.java b/services/core/java/com/android/server/am/CompatModeDialog.java
index 202cc7cad79d..202cc7cad79d 100644
--- a/services/java/com/android/server/am/CompatModeDialog.java
+++ b/services/core/java/com/android/server/am/CompatModeDialog.java
diff --git a/services/java/com/android/server/am/CompatModePackages.java b/services/core/java/com/android/server/am/CompatModePackages.java
index 59e678738444..ec500c2ee154 100644
--- a/services/java/com/android/server/am/CompatModePackages.java
+++ b/services/core/java/com/android/server/am/CompatModePackages.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package com.android.server.am;
import java.io.File;
@@ -19,6 +35,7 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.res.CompatibilityInfo;
import android.os.Handler;
+import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
import android.util.AtomicFile;
@@ -41,22 +58,27 @@ public final class CompatModePackages {
private static final int MSG_WRITE = ActivityManagerService.FIRST_COMPAT_MODE_MSG;
- private final Handler mHandler = new Handler() {
- @Override public void handleMessage(Message msg) {
+ private final CompatHandler mHandler;
+
+ private final class CompatHandler extends Handler {
+ public CompatHandler(Looper looper) {
+ super(looper, null, true);
+ }
+
+ @Override
+ public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_WRITE:
saveCompatModes();
break;
- default:
- super.handleMessage(msg);
- break;
}
}
};
- public CompatModePackages(ActivityManagerService service, File systemDir) {
+ public CompatModePackages(ActivityManagerService service, File systemDir, Handler handler) {
mService = service;
mFile = new AtomicFile(new File(systemDir, "packages-compat.xml"));
+ mHandler = new CompatHandler(handler.getLooper());
FileInputStream fis = null;
try {
@@ -64,9 +86,14 @@ public final class CompatModePackages {
XmlPullParser parser = Xml.newPullParser();
parser.setInput(fis, null);
int eventType = parser.getEventType();
- while (eventType != XmlPullParser.START_TAG) {
+ while (eventType != XmlPullParser.START_TAG &&
+ eventType != XmlPullParser.END_DOCUMENT) {
eventType = parser.next();
}
+ if (eventType == XmlPullParser.END_DOCUMENT) {
+ return;
+ }
+
String tagName = parser.getName();
if ("compat-packages".equals(tagName)) {
eventType = parser.next();
diff --git a/services/java/com/android/server/am/ConnectionRecord.java b/services/core/java/com/android/server/am/ConnectionRecord.java
index 423e540229db..423e540229db 100644
--- a/services/java/com/android/server/am/ConnectionRecord.java
+++ b/services/core/java/com/android/server/am/ConnectionRecord.java
diff --git a/services/java/com/android/server/am/ContentProviderConnection.java b/services/core/java/com/android/server/am/ContentProviderConnection.java
index f2c9e2fd2297..f2c9e2fd2297 100644
--- a/services/java/com/android/server/am/ContentProviderConnection.java
+++ b/services/core/java/com/android/server/am/ContentProviderConnection.java
diff --git a/services/java/com/android/server/am/ContentProviderRecord.java b/services/core/java/com/android/server/am/ContentProviderRecord.java
index 646b7d2994de..646b7d2994de 100644
--- a/services/java/com/android/server/am/ContentProviderRecord.java
+++ b/services/core/java/com/android/server/am/ContentProviderRecord.java
diff --git a/services/java/com/android/server/am/CoreSettingsObserver.java b/services/core/java/com/android/server/am/CoreSettingsObserver.java
index 10ea67c34465..10ea67c34465 100644
--- a/services/java/com/android/server/am/CoreSettingsObserver.java
+++ b/services/core/java/com/android/server/am/CoreSettingsObserver.java
diff --git a/services/java/com/android/server/am/EventLogTags.logtags b/services/core/java/com/android/server/am/EventLogTags.logtags
index d3cc56b53028..d3cc56b53028 100644
--- a/services/java/com/android/server/am/EventLogTags.logtags
+++ b/services/core/java/com/android/server/am/EventLogTags.logtags
diff --git a/services/java/com/android/server/am/FactoryErrorDialog.java b/services/core/java/com/android/server/am/FactoryErrorDialog.java
index f4632c135dfc..f4632c135dfc 100644
--- a/services/java/com/android/server/am/FactoryErrorDialog.java
+++ b/services/core/java/com/android/server/am/FactoryErrorDialog.java
diff --git a/services/java/com/android/server/am/IntentBindRecord.java b/services/core/java/com/android/server/am/IntentBindRecord.java
index 21cf266c62b1..21cf266c62b1 100644
--- a/services/java/com/android/server/am/IntentBindRecord.java
+++ b/services/core/java/com/android/server/am/IntentBindRecord.java
diff --git a/services/java/com/android/server/am/LaunchWarningWindow.java b/services/core/java/com/android/server/am/LaunchWarningWindow.java
index 30c306655af0..30c306655af0 100644
--- a/services/java/com/android/server/am/LaunchWarningWindow.java
+++ b/services/core/java/com/android/server/am/LaunchWarningWindow.java
diff --git a/services/java/com/android/server/am/NativeCrashListener.java b/services/core/java/com/android/server/am/NativeCrashListener.java
index 2c7f1f13098b..b12843bcf678 100644
--- a/services/java/com/android/server/am/NativeCrashListener.java
+++ b/services/core/java/com/android/server/am/NativeCrashListener.java
@@ -95,8 +95,8 @@ final class NativeCrashListener extends Thread {
* Daemon thread that accept()s incoming domain socket connections from debuggerd
* and processes the crash dump that is passed through.
*/
- NativeCrashListener() {
- mAm = ActivityManagerService.self();
+ NativeCrashListener(ActivityManagerService am) {
+ mAm = am;
}
@Override
diff --git a/services/java/com/android/server/am/PendingIntentRecord.java b/services/core/java/com/android/server/am/PendingIntentRecord.java
index 17f24a928b90..00fa21658e51 100644
--- a/services/java/com/android/server/am/PendingIntentRecord.java
+++ b/services/core/java/com/android/server/am/PendingIntentRecord.java
@@ -17,6 +17,7 @@
package com.android.server.am;
import android.app.ActivityManager;
+import android.app.IActivityContainer;
import android.content.IIntentSender;
import android.content.IIntentReceiver;
import android.app.PendingIntent;
@@ -190,13 +191,13 @@ final class PendingIntentRecord extends IIntentSender.Stub {
public int send(int code, Intent intent, String resolvedType,
IIntentReceiver finishedReceiver, String requiredPermission) {
return sendInner(code, intent, resolvedType, finishedReceiver,
- requiredPermission, null, null, 0, 0, 0, null);
+ requiredPermission, null, null, 0, 0, 0, null, null);
}
int sendInner(int code, Intent intent, String resolvedType,
IIntentReceiver finishedReceiver, String requiredPermission,
IBinder resultTo, String resultWho, int requestCode,
- int flagsMask, int flagsValues, Bundle options) {
+ int flagsMask, int flagsValues, Bundle options, IActivityContainer container) {
synchronized(owner) {
if (!canceled) {
sent = true;
@@ -251,7 +252,7 @@ final class PendingIntentRecord extends IIntentSender.Stub {
} else {
owner.startActivityInPackage(uid, key.packageName, finalIntent,
resolvedType, resultTo, resultWho, requestCode, 0,
- options, userId);
+ options, userId, container);
}
} catch (RuntimeException e) {
Slog.w(ActivityManagerService.TAG,
@@ -302,7 +303,8 @@ final class PendingIntentRecord extends IIntentSender.Stub {
}
return ActivityManager.START_CANCELED;
}
-
+
+ @Override
protected void finalize() throws Throwable {
try {
if (!canceled) {
diff --git a/services/java/com/android/server/am/PendingThumbnailsRecord.java b/services/core/java/com/android/server/am/PendingThumbnailsRecord.java
index e4eb4d04c155..e4eb4d04c155 100644
--- a/services/java/com/android/server/am/PendingThumbnailsRecord.java
+++ b/services/core/java/com/android/server/am/PendingThumbnailsRecord.java
diff --git a/services/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java
index d3777c7ae134..f5920c8db355 100644
--- a/services/java/com/android/server/am/ProcessList.java
+++ b/services/core/java/com/android/server/am/ProcessList.java
@@ -18,6 +18,8 @@ package com.android.server.am;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.ByteBuffer;
import android.app.ActivityManager;
import com.android.internal.util.MemInfoReader;
@@ -26,6 +28,8 @@ import com.android.server.wm.WindowManagerService;
import android.content.res.Resources;
import android.graphics.Point;
import android.os.SystemProperties;
+import android.net.LocalSocketAddress;
+import android.net.LocalSocket;
import android.util.Slog;
import android.view.Display;
@@ -141,6 +145,16 @@ final class ProcessList {
// Threshold of number of cached+empty where we consider memory critical.
static final int TRIM_LOW_THRESHOLD = 5;
+ // Low Memory Killer Daemon command codes.
+ // These must be kept in sync with the definitions in lmkd.c
+ //
+ // LMK_TARGET <minfree> <minkillprio> ... (up to 6 pairs)
+ // LMK_PROCPRIO <pid> <prio>
+ // LMK_PROCREMOVE <pid>
+ static final byte LMK_TARGET = 0;
+ static final byte LMK_PROCPRIO = 1;
+ static final byte LMK_PROCREMOVE = 2;
+
// These are the various interesting memory levels that we will give to
// the OOM killer. Note that the OOM killer only supports 6 slots, so we
// can't give it a different value for every possible kind of process.
@@ -150,18 +164,18 @@ final class ProcessList {
};
// These are the low-end OOM level limits. This is appropriate for an
// HVGA or smaller phone with less than 512MB. Values are in KB.
- private final long[] mOomMinFreeLow = new long[] {
+ private final int[] mOomMinFreeLow = new int[] {
8192, 12288, 16384,
24576, 28672, 32768
};
// These are the high-end OOM level limits. This is appropriate for a
// 1280x800 or larger screen with around 1GB RAM. Values are in KB.
- private final long[] mOomMinFreeHigh = new long[] {
+ private final int[] mOomMinFreeHigh = new int[] {
49152, 61440, 73728,
86016, 98304, 122880
};
// The actual OOM killer memory levels we are using.
- private final long[] mOomMinFree = new long[mOomAdj.length];
+ private final int[] mOomMinFree = new int[mOomAdj.length];
private final long mTotalMemMb;
@@ -169,6 +183,9 @@ final class ProcessList {
private boolean mHaveDisplaySize;
+ private static LocalSocket sLmkdSocket;
+ private static OutputStream sLmkdOutputStream;
+
ProcessList() {
MemInfoReader minfo = new MemInfoReader();
minfo.readMemInfo();
@@ -202,9 +219,6 @@ final class ProcessList {
+ " dh=" + displayHeight);
}
- StringBuilder adjString = new StringBuilder();
- StringBuilder memString = new StringBuilder();
-
float scale = scaleMem > scaleDisp ? scaleMem : scaleDisp;
if (scale < 0) scale = 0;
else if (scale > 1) scale = 1;
@@ -217,20 +231,20 @@ final class ProcessList {
}
for (int i=0; i<mOomAdj.length; i++) {
- long low = mOomMinFreeLow[i];
- long high = mOomMinFreeHigh[i];
- mOomMinFree[i] = (long)(low + ((high-low)*scale));
+ int low = mOomMinFreeLow[i];
+ int high = mOomMinFreeHigh[i];
+ mOomMinFree[i] = (int)(low + ((high-low)*scale));
}
if (minfree_abs >= 0) {
for (int i=0; i<mOomAdj.length; i++) {
- mOomMinFree[i] = (long)((float)minfree_abs * mOomMinFree[i] / mOomMinFree[mOomAdj.length - 1]);
+ mOomMinFree[i] = (int)((float)minfree_abs * mOomMinFree[i] / mOomMinFree[mOomAdj.length - 1]);
}
}
if (minfree_adj != 0) {
for (int i=0; i<mOomAdj.length; i++) {
- mOomMinFree[i] += (long)((float)minfree_adj * mOomMinFree[i] / mOomMinFree[mOomAdj.length - 1]);
+ mOomMinFree[i] += (int)((float)minfree_adj * mOomMinFree[i] / mOomMinFree[mOomAdj.length - 1]);
if (mOomMinFree[i] < 0) {
mOomMinFree[i] = 0;
}
@@ -242,15 +256,6 @@ final class ProcessList {
// before killing background processes.
mCachedRestoreLevel = (getMemLevel(ProcessList.CACHED_APP_MAX_ADJ)/1024) / 3;
- for (int i=0; i<mOomAdj.length; i++) {
- if (i > 0) {
- adjString.append(',');
- memString.append(',');
- }
- adjString.append(mOomAdj[i]);
- memString.append((mOomMinFree[i]*1024)/PAGE_SIZE);
- }
-
// Ask the kernel to try to keep enough memory free to allocate 3 full
// screen 32bpp buffers without entering direct reclaim.
int reserve = displayWidth * displayHeight * 4 * 3 / 1024;
@@ -268,10 +273,15 @@ final class ProcessList {
}
}
- //Slog.i("XXXXXXX", "******************************* MINFREE: " + memString);
if (write) {
- writeFile("/sys/module/lowmemorykiller/parameters/adj", adjString.toString());
- writeFile("/sys/module/lowmemorykiller/parameters/minfree", memString.toString());
+ ByteBuffer buf = ByteBuffer.allocate(4 * (2*mOomAdj.length + 1));
+ buf.putInt(LMK_TARGET);
+ for (int i=0; i<mOomAdj.length; i++) {
+ buf.putInt((mOomMinFree[i]*1024)/PAGE_SIZE);
+ buf.putInt(mOomAdj[i]);
+ }
+
+ writeLmkd(buf);
SystemProperties.set("sys.sysctl.extra_free_kbytes", Integer.toString(reserve));
}
// GB: 2048,3072,4096,6144,7168,8192
@@ -506,19 +516,78 @@ final class ProcessList {
return mCachedRestoreLevel;
}
- private void writeFile(String path, String data) {
- FileOutputStream fos = null;
+ /**
+ * Set the out-of-memory badness adjustment for a process.
+ *
+ * @param pid The process identifier to set.
+ * @param amt Adjustment value -- lmkd allows -16 to +15.
+ *
+ * {@hide}
+ */
+ public static final void setOomAdj(int pid, int amt) {
+ if (amt == UNKNOWN_ADJ)
+ return;
+
+ ByteBuffer buf = ByteBuffer.allocate(4 * 3);
+ buf.putInt(LMK_PROCPRIO);
+ buf.putInt(pid);
+ buf.putInt(amt);
+ writeLmkd(buf);
+ }
+
+ /*
+ * {@hide}
+ */
+ public static final void remove(int pid) {
+ ByteBuffer buf = ByteBuffer.allocate(4 * 2);
+ buf.putInt(LMK_PROCREMOVE);
+ buf.putInt(pid);
+ writeLmkd(buf);
+ }
+
+ private static boolean openLmkdSocket() {
try {
- fos = new FileOutputStream(path);
- fos.write(data.getBytes());
- } catch (IOException e) {
- Slog.w(ActivityManagerService.TAG, "Unable to write " + path);
- } finally {
- if (fos != null) {
+ sLmkdSocket = new LocalSocket(LocalSocket.SOCKET_SEQPACKET);
+ sLmkdSocket.connect(
+ new LocalSocketAddress("lmkd",
+ LocalSocketAddress.Namespace.RESERVED));
+ sLmkdOutputStream = sLmkdSocket.getOutputStream();
+ } catch (IOException ex) {
+ Slog.w(ActivityManagerService.TAG,
+ "lowmemorykiller daemon socket open failed");
+ sLmkdSocket = null;
+ return false;
+ }
+
+ return true;
+ }
+
+ private static void writeLmkd(ByteBuffer buf) {
+
+ for (int i = 0; i < 3; i++) {
+ if (sLmkdSocket == null) {
+ if (openLmkdSocket() == false) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException ie) {
+ }
+ continue;
+ }
+ }
+
+ try {
+ sLmkdOutputStream.write(buf.array(), 0, buf.position());
+ return;
+ } catch (IOException ex) {
+ Slog.w(ActivityManagerService.TAG,
+ "Error writing to lowmemorykiller socket");
+
try {
- fos.close();
- } catch (IOException e) {
+ sLmkdSocket.close();
+ } catch (IOException ex2) {
}
+
+ sLmkdSocket = null;
}
}
}
diff --git a/services/java/com/android/server/am/ProcessMemInfo.java b/services/core/java/com/android/server/am/ProcessMemInfo.java
index c94694e7c4b1..c94694e7c4b1 100644
--- a/services/java/com/android/server/am/ProcessMemInfo.java
+++ b/services/core/java/com/android/server/am/ProcessMemInfo.java
diff --git a/services/java/com/android/server/am/ProcessRecord.java b/services/core/java/com/android/server/am/ProcessRecord.java
index 217a8d6159a1..217a8d6159a1 100644
--- a/services/java/com/android/server/am/ProcessRecord.java
+++ b/services/core/java/com/android/server/am/ProcessRecord.java
diff --git a/services/java/com/android/server/am/ProcessStatsService.java b/services/core/java/com/android/server/am/ProcessStatsService.java
index e05fcda70ff0..e05fcda70ff0 100644
--- a/services/java/com/android/server/am/ProcessStatsService.java
+++ b/services/core/java/com/android/server/am/ProcessStatsService.java
diff --git a/services/java/com/android/server/am/ProviderMap.java b/services/core/java/com/android/server/am/ProviderMap.java
index 7da8c48dea35..7da8c48dea35 100644
--- a/services/java/com/android/server/am/ProviderMap.java
+++ b/services/core/java/com/android/server/am/ProviderMap.java
diff --git a/services/java/com/android/server/am/ReceiverList.java b/services/core/java/com/android/server/am/ReceiverList.java
index fa8c1dfc4fda..fa8c1dfc4fda 100644
--- a/services/java/com/android/server/am/ReceiverList.java
+++ b/services/core/java/com/android/server/am/ReceiverList.java
diff --git a/services/java/com/android/server/am/ServiceRecord.java b/services/core/java/com/android/server/am/ServiceRecord.java
index 80e6e9497ece..cb04835dce53 100644
--- a/services/java/com/android/server/am/ServiceRecord.java
+++ b/services/core/java/com/android/server/am/ServiceRecord.java
@@ -18,7 +18,8 @@ package com.android.server.am;
import com.android.internal.app.ProcessStats;
import com.android.internal.os.BatteryStatsImpl;
-import com.android.server.NotificationManagerService;
+import com.android.server.LocalServices;
+import com.android.server.notification.NotificationManagerInternal;
import android.app.INotificationManager;
import android.app.Notification;
@@ -427,8 +428,8 @@ final class ServiceRecord extends Binder {
final Notification localForegroundNoti = foregroundNoti;
ams.mHandler.post(new Runnable() {
public void run() {
- NotificationManagerService nm =
- (NotificationManagerService) NotificationManager.getService();
+ NotificationManagerInternal nm = LocalServices.getService(
+ NotificationManagerInternal.class);
if (nm == null) {
return;
}
@@ -479,7 +480,7 @@ final class ServiceRecord extends Binder {
throw new RuntimeException("icon must be non-zero");
}
int[] outId = new int[1];
- nm.enqueueNotificationInternal(localPackageName, localPackageName,
+ nm.enqueueNotification(localPackageName, localPackageName,
appUid, appPid, null, localForegroundId, localForegroundNoti,
outId, userId);
} catch (RuntimeException e) {
diff --git a/services/java/com/android/server/am/StrictModeViolationDialog.java b/services/core/java/com/android/server/am/StrictModeViolationDialog.java
index fda1ec130980..fda1ec130980 100644
--- a/services/java/com/android/server/am/StrictModeViolationDialog.java
+++ b/services/core/java/com/android/server/am/StrictModeViolationDialog.java
diff --git a/services/java/com/android/server/am/TaskAccessInfo.java b/services/core/java/com/android/server/am/TaskAccessInfo.java
index 50aeec1172ca..50aeec1172ca 100644
--- a/services/java/com/android/server/am/TaskAccessInfo.java
+++ b/services/core/java/com/android/server/am/TaskAccessInfo.java
diff --git a/services/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java
index 5f32dbb4b419..9740812e654c 100644
--- a/services/java/com/android/server/am/TaskRecord.java
+++ b/services/core/java/com/android/server/am/TaskRecord.java
@@ -60,7 +60,8 @@ final class TaskRecord extends ThumbnailHolder {
/** Takes on same set of values as ActivityRecord.mActivityType */
private int mTaskType;
- /** Launch the home activity when leaving this task. */
+ /** Launch the home activity when leaving this task. Will be false for tasks that are not on
+ * Display.DEFAULT_DISPLAY. */
boolean mOnTopOfHome = false;
TaskRecord(int _taskId, ActivityInfo info, Intent _intent) {
@@ -163,7 +164,7 @@ final class TaskRecord extends ThumbnailHolder {
final void setFrontOfTask() {
boolean foundFront = false;
final int numActivities = mActivities.size();
- for (int activityNdx = 0; numActivities < activityNdx; ++activityNdx) {
+ for (int activityNdx = 0; activityNdx < numActivities; ++activityNdx) {
final ActivityRecord r = mActivities.get(activityNdx);
if (foundFront || r.finishing) {
r.frontOfTask = false;
diff --git a/services/java/com/android/server/am/ThumbnailHolder.java b/services/core/java/com/android/server/am/ThumbnailHolder.java
index a6974f56356d..a6974f56356d 100644
--- a/services/java/com/android/server/am/ThumbnailHolder.java
+++ b/services/core/java/com/android/server/am/ThumbnailHolder.java
diff --git a/services/java/com/android/server/am/UriPermission.java b/services/core/java/com/android/server/am/UriPermission.java
index 1f12b74432a3..1f12b74432a3 100644
--- a/services/java/com/android/server/am/UriPermission.java
+++ b/services/core/java/com/android/server/am/UriPermission.java
diff --git a/services/java/com/android/server/am/UriPermissionOwner.java b/services/core/java/com/android/server/am/UriPermissionOwner.java
index 7bbd3bcc2eb9..7bbd3bcc2eb9 100644
--- a/services/java/com/android/server/am/UriPermissionOwner.java
+++ b/services/core/java/com/android/server/am/UriPermissionOwner.java
diff --git a/services/java/com/android/server/am/UsageStatsService.java b/services/core/java/com/android/server/am/UsageStatsService.java
index e96d8b1ce91c..09cb344531c3 100644
--- a/services/java/com/android/server/am/UsageStatsService.java
+++ b/services/core/java/com/android/server/am/UsageStatsService.java
@@ -396,9 +396,14 @@ public final class UsageStatsService extends IUsageStats.Stub {
XmlPullParser parser = Xml.newPullParser();
parser.setInput(fis, null);
int eventType = parser.getEventType();
- while (eventType != XmlPullParser.START_TAG) {
+ while (eventType != XmlPullParser.START_TAG &&
+ eventType != XmlPullParser.END_DOCUMENT) {
eventType = parser.next();
}
+ if (eventType == XmlPullParser.END_DOCUMENT) {
+ return;
+ }
+
String tagName = parser.getName();
if ("usage-history".equals(tagName)) {
String pkg = null;
diff --git a/services/java/com/android/server/am/UserStartedState.java b/services/core/java/com/android/server/am/UserStartedState.java
index d3e73d5222a4..d3e73d5222a4 100644
--- a/services/java/com/android/server/am/UserStartedState.java
+++ b/services/core/java/com/android/server/am/UserStartedState.java
diff --git a/services/java/com/android/server/am/package.html b/services/core/java/com/android/server/am/package.html
index c9f96a66ab3b..c9f96a66ab3b 100644
--- a/services/java/com/android/server/am/package.html
+++ b/services/core/java/com/android/server/am/package.html
diff --git a/services/java/com/android/server/ClipboardService.java b/services/core/java/com/android/server/clipboard/ClipboardService.java
index 069ae23f5596..6aa596d9d78e 100644
--- a/services/java/com/android/server/ClipboardService.java
+++ b/services/core/java/com/android/server/clipboard/ClipboardService.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server;
+package com.android.server.clipboard;
import android.app.ActivityManagerNative;
import android.app.AppGlobals;
diff --git a/services/java/com/android/server/connectivity/DataConnectionStats.java b/services/core/java/com/android/server/connectivity/DataConnectionStats.java
index 227ab2341012..227ab2341012 100644
--- a/services/java/com/android/server/connectivity/DataConnectionStats.java
+++ b/services/core/java/com/android/server/connectivity/DataConnectionStats.java
diff --git a/services/java/com/android/server/connectivity/Nat464Xlat.java b/services/core/java/com/android/server/connectivity/Nat464Xlat.java
index a15d678520bc..a15d678520bc 100644
--- a/services/java/com/android/server/connectivity/Nat464Xlat.java
+++ b/services/core/java/com/android/server/connectivity/Nat464Xlat.java
diff --git a/services/java/com/android/server/connectivity/PacManager.java b/services/core/java/com/android/server/connectivity/PacManager.java
index 7786fe6e4254..7786fe6e4254 100644
--- a/services/java/com/android/server/connectivity/PacManager.java
+++ b/services/core/java/com/android/server/connectivity/PacManager.java
diff --git a/services/java/com/android/server/connectivity/Tethering.java b/services/core/java/com/android/server/connectivity/Tethering.java
index 231a40aef67f..adf1dfc10ef5 100644
--- a/services/java/com/android/server/connectivity/Tethering.java
+++ b/services/core/java/com/android/server/connectivity/Tethering.java
@@ -51,6 +51,7 @@ import com.android.internal.util.IState;
import com.android.internal.util.State;
import com.android.internal.util.StateMachine;
import com.android.server.IoThread;
+import com.android.server.net.BaseNetworkObserver;
import com.google.android.collect.Lists;
import java.io.FileDescriptor;
@@ -70,7 +71,7 @@ import java.util.Set;
*
* TODO - look for parent classes and code sharing
*/
-public class Tethering extends INetworkManagementEventObserver.Stub {
+public class Tethering extends BaseNetworkObserver {
private Context mContext;
private final static String TAG = "Tethering";
@@ -315,14 +316,6 @@ public class Tethering extends INetworkManagementEventObserver.Stub {
}
}
- public void addressUpdated(String address, String iface, int flags, int scope) {}
-
- public void addressRemoved(String address, String iface, int flags, int scope) {}
-
- public void limitReached(String limitName, String iface) {}
-
- public void interfaceClassDataActivityChanged(String label, boolean active) {}
-
public int tether(String iface) {
if (DBG) Log.d(TAG, "Tethering " + iface);
TetherInterfaceSM sm = null;
diff --git a/services/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java
index 03405e7c0cbc..0a5855296c81 100644
--- a/services/java/com/android/server/connectivity/Vpn.java
+++ b/services/core/java/com/android/server/connectivity/Vpn.java
@@ -608,10 +608,10 @@ public class Vpn extends BaseNetworkStateTracker {
int appId = UserHandle.getAppId(Binder.getCallingUid());
final long token = Binder.clearCallingIdentity();
try {
- // System dialogs are also allowed to control VPN.
+ // System VPN dialogs are also allowed to control VPN.
PackageManager pm = mContext.getPackageManager();
ApplicationInfo app = pm.getApplicationInfo(VpnConfig.DIALOGS_PACKAGE, 0);
- if (appId == app.uid) {
+ if (((app.flags & ApplicationInfo.FLAG_SYSTEM) != 0) && (appId == app.uid)) {
return;
}
} catch (Exception e) {
diff --git a/services/java/com/android/server/content/ContentService.java b/services/core/java/com/android/server/content/ContentService.java
index 023bf2b20614..023bf2b20614 100644
--- a/services/java/com/android/server/content/ContentService.java
+++ b/services/core/java/com/android/server/content/ContentService.java
diff --git a/services/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java
index 71d8d9911f9a..71d8d9911f9a 100644
--- a/services/java/com/android/server/content/SyncManager.java
+++ b/services/core/java/com/android/server/content/SyncManager.java
diff --git a/services/java/com/android/server/content/SyncOperation.java b/services/core/java/com/android/server/content/SyncOperation.java
index 485674782aeb..485674782aeb 100644
--- a/services/java/com/android/server/content/SyncOperation.java
+++ b/services/core/java/com/android/server/content/SyncOperation.java
diff --git a/services/java/com/android/server/content/SyncQueue.java b/services/core/java/com/android/server/content/SyncQueue.java
index 6f3fe6e1d37b..6f3fe6e1d37b 100644
--- a/services/java/com/android/server/content/SyncQueue.java
+++ b/services/core/java/com/android/server/content/SyncQueue.java
diff --git a/services/java/com/android/server/content/SyncStorageEngine.java b/services/core/java/com/android/server/content/SyncStorageEngine.java
index 5ebf9ea9ba5e..124bc60df10c 100644
--- a/services/java/com/android/server/content/SyncStorageEngine.java
+++ b/services/core/java/com/android/server/content/SyncStorageEngine.java
@@ -1697,9 +1697,15 @@ public class SyncStorageEngine extends Handler {
XmlPullParser parser = Xml.newPullParser();
parser.setInput(fis, null);
int eventType = parser.getEventType();
- while (eventType != XmlPullParser.START_TAG) {
+ while (eventType != XmlPullParser.START_TAG &&
+ eventType != XmlPullParser.END_DOCUMENT) {
eventType = parser.next();
}
+ if (eventType == XmlPullParser.END_DOCUMENT) {
+ Log.i(TAG, "No initial accounts");
+ return;
+ }
+
String tagName = parser.getName();
if ("accounts".equals(tagName)) {
String listen = parser.getAttributeValue(null, XML_ATTR_LISTEN_FOR_TICKLES);
diff --git a/services/java/com/android/server/display/DisplayAdapter.java b/services/core/java/com/android/server/display/DisplayAdapter.java
index b411a0db7184..b411a0db7184 100644
--- a/services/java/com/android/server/display/DisplayAdapter.java
+++ b/services/core/java/com/android/server/display/DisplayAdapter.java
diff --git a/services/java/com/android/server/display/DisplayDevice.java b/services/core/java/com/android/server/display/DisplayDevice.java
index 41611475d9c8..9ec1122b7859 100644
--- a/services/java/com/android/server/display/DisplayDevice.java
+++ b/services/core/java/com/android/server/display/DisplayDevice.java
@@ -17,6 +17,7 @@
package com.android.server.display;
import android.graphics.Rect;
+import android.hardware.display.DisplayViewport;
import android.os.IBinder;
import android.view.Surface;
import android.view.SurfaceControl;
diff --git a/services/java/com/android/server/display/DisplayDeviceInfo.java b/services/core/java/com/android/server/display/DisplayDeviceInfo.java
index 11c5d879b498..75f1f53f79db 100644
--- a/services/java/com/android/server/display/DisplayDeviceInfo.java
+++ b/services/core/java/com/android/server/display/DisplayDeviceInfo.java
@@ -16,6 +16,7 @@
package com.android.server.display;
+import android.hardware.display.DisplayViewport;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.Surface;
@@ -63,6 +64,7 @@ final class DisplayDeviceInfo {
/**
* Flag: Indicates that the display device is owned by a particular application
* and that no other application should be able to interact with it.
+ * Should typically be used together with {@link #FLAG_OWN_CONTENT_ONLY}.
*/
public static final int FLAG_PRIVATE = 1 << 4;
@@ -78,6 +80,12 @@ final class DisplayDeviceInfo {
public static final int FLAG_PRESENTATION = 1 << 6;
/**
+ * Flag: Only show this display's own content; do not mirror
+ * the content of another display.
+ */
+ public static final int FLAG_OWN_CONTENT_ONLY = 1 << 7;
+
+ /**
* Touch attachment: Display does not receive touch.
*/
public static final int TOUCH_NONE = 0;
@@ -297,6 +305,9 @@ final class DisplayDeviceInfo {
if ((flags & FLAG_PRESENTATION) != 0) {
msg.append(", FLAG_PRESENTATION");
}
+ if ((flags & FLAG_OWN_CONTENT_ONLY) != 0) {
+ msg.append(", FLAG_OWN_CONTENT_ONLY");
+ }
return msg.toString();
}
}
diff --git a/services/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index bcb677fa455f..6be6405daa4d 100644
--- a/services/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -23,14 +23,20 @@ import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.display.DisplayManager;
import android.hardware.display.DisplayManagerGlobal;
+import android.hardware.display.DisplayManagerInternal;
+import android.hardware.display.DisplayViewport;
+import android.hardware.display.DisplayManagerInternal.DisplayTransactionListener;
import android.hardware.display.IDisplayManager;
import android.hardware.display.IDisplayManagerCallback;
import android.hardware.display.WifiDisplayStatus;
+import android.hardware.input.InputManagerInternal;
import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
+import android.os.IBinder.DeathRecipient;
import android.os.Looper;
import android.os.Message;
+import android.os.Process;
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.SystemProperties;
@@ -41,7 +47,11 @@ import android.util.SparseArray;
import android.view.Display;
import android.view.DisplayInfo;
import android.view.Surface;
+import android.view.WindowManagerInternal;
+import com.android.server.DisplayThread;
+import com.android.server.LocalServices;
+import com.android.server.SystemService;
import com.android.server.UiThread;
import java.io.FileDescriptor;
@@ -93,7 +103,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
* avoid this by making all potentially reentrant out-calls asynchronous.
* </p>
*/
-public final class DisplayManagerService extends IDisplayManager.Stub {
+public final class DisplayManagerService extends SystemService {
private static final String TAG = "DisplayManagerService";
private static final boolean DEBUG = false;
@@ -102,7 +112,6 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
// Otherwise WFD is enabled according to the value of config_enableWifiDisplay.
private static final String FORCE_WIFI_DISPLAY_ENABLE = "persist.debug.wfd.enable";
- private static final String SYSTEM_HEADLESS = "ro.config.headless";
private static final long WAIT_FOR_DEFAULT_DISPLAY_TIMEOUT = 10000;
private static final int MSG_REGISTER_DEFAULT_DISPLAY_ADAPTER = 1;
@@ -116,12 +125,11 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
private static final int DISPLAY_BLANK_STATE_UNBLANKED = 2;
private final Context mContext;
- private final boolean mHeadless;
private final DisplayManagerHandler mHandler;
private final Handler mUiHandler;
private final DisplayAdapterListener mDisplayAdapterListener;
- private WindowManagerFuncs mWindowManagerFuncs;
- private InputManagerFuncs mInputManagerFuncs;
+ private WindowManagerInternal mWindowManagerInternal;
+ private InputManagerInternal mInputManagerInternal;
// The synchronization root for the display manager.
// This lock guards most of the display manager's state.
@@ -200,59 +208,52 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
private final DisplayViewport mTempDefaultViewport = new DisplayViewport();
private final DisplayViewport mTempExternalTouchViewport = new DisplayViewport();
- public DisplayManagerService(Context context, Handler mainHandler) {
+ public DisplayManagerService(Context context) {
+ super(context);
mContext = context;
- mHeadless = SystemProperties.get(SYSTEM_HEADLESS).equals("1");
-
- mHandler = new DisplayManagerHandler(mainHandler.getLooper());
+ mHandler = new DisplayManagerHandler(DisplayThread.get().getLooper());
mUiHandler = UiThread.getHandler();
mDisplayAdapterListener = new DisplayAdapterListener();
mSingleDisplayDemoMode = SystemProperties.getBoolean("persist.demo.singledisplay", false);
+ }
+ @Override
+ public void onStart() {
mHandler.sendEmptyMessage(MSG_REGISTER_DEFAULT_DISPLAY_ADAPTER);
+
+ publishBinderService(Context.DISPLAY_SERVICE, new BinderService(),
+ true /*allowIsolated*/);
+ publishLocalService(DisplayManagerInternal.class, new LocalService());
}
- /**
- * Pauses the boot process to wait for the first display to be initialized.
- */
- public boolean waitForDefaultDisplay() {
- synchronized (mSyncRoot) {
- long timeout = SystemClock.uptimeMillis() + WAIT_FOR_DEFAULT_DISPLAY_TIMEOUT;
- while (mLogicalDisplays.get(Display.DEFAULT_DISPLAY) == null) {
- long delay = timeout - SystemClock.uptimeMillis();
- if (delay <= 0) {
- return false;
- }
- if (DEBUG) {
- Slog.d(TAG, "waitForDefaultDisplay: waiting, timeout=" + delay);
- }
- try {
- mSyncRoot.wait(delay);
- } catch (InterruptedException ex) {
+ @Override
+ public void onBootPhase(int phase) {
+ if (phase == PHASE_WAIT_FOR_DEFAULT_DISPLAY) {
+ synchronized (mSyncRoot) {
+ long timeout = SystemClock.uptimeMillis() + WAIT_FOR_DEFAULT_DISPLAY_TIMEOUT;
+ while (mLogicalDisplays.get(Display.DEFAULT_DISPLAY) == null) {
+ long delay = timeout - SystemClock.uptimeMillis();
+ if (delay <= 0) {
+ throw new RuntimeException("Timeout waiting for default display "
+ + "to be initialized.");
+ }
+ if (DEBUG) {
+ Slog.d(TAG, "waitForDefaultDisplay: waiting, timeout=" + delay);
+ }
+ try {
+ mSyncRoot.wait(delay);
+ } catch (InterruptedException ex) {
+ }
}
}
}
- return true;
}
- /**
- * Called during initialization to associate the display manager with the
- * window manager.
- */
- public void setWindowManager(WindowManagerFuncs windowManagerFuncs) {
+ // TODO: Use dependencies or a boot phase
+ public void windowManagerAndInputReady() {
synchronized (mSyncRoot) {
- mWindowManagerFuncs = windowManagerFuncs;
- scheduleTraversalLocked(false);
- }
- }
-
- /**
- * Called during initialization to associate the display manager with the
- * input manager.
- */
- public void setInputManager(InputManagerFuncs inputManagerFuncs) {
- synchronized (mSyncRoot) {
- mInputManagerFuncs = inputManagerFuncs;
+ mWindowManagerInternal = LocalServices.getService(WindowManagerInternal.class);
+ mInputManagerInternal = LocalServices.getService(InputManagerInternal.class);
scheduleTraversalLocked(false);
}
}
@@ -269,59 +270,19 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
mHandler.sendEmptyMessage(MSG_REGISTER_ADDITIONAL_DISPLAY_ADAPTERS);
}
- /**
- * Returns true if the device is headless.
- *
- * @return True if the device is headless.
- */
- public boolean isHeadless() {
- return mHeadless;
- }
-
- /**
- * Registers a display transaction listener to provide the client a chance to
- * update its surfaces within the same transaction as any display layout updates.
- *
- * @param listener The listener to register.
- */
- public void registerDisplayTransactionListener(DisplayTransactionListener listener) {
- if (listener == null) {
- throw new IllegalArgumentException("listener must not be null");
- }
-
+ private void registerDisplayTransactionListenerInternal(
+ DisplayTransactionListener listener) {
// List is self-synchronized copy-on-write.
mDisplayTransactionListeners.add(listener);
}
- /**
- * Unregisters a display transaction listener to provide the client a chance to
- * update its surfaces within the same transaction as any display layout updates.
- *
- * @param listener The listener to unregister.
- */
- public void unregisterDisplayTransactionListener(DisplayTransactionListener listener) {
- if (listener == null) {
- throw new IllegalArgumentException("listener must not be null");
- }
-
+ private void unregisterDisplayTransactionListenerInternal(
+ DisplayTransactionListener listener) {
// List is self-synchronized copy-on-write.
mDisplayTransactionListeners.remove(listener);
}
- /**
- * Overrides the display information of a particular logical display.
- * This is used by the window manager to control the size and characteristics
- * of the default display. It is expected to apply the requested change
- * to the display information synchronously so that applications will immediately
- * observe the new state.
- *
- * NOTE: This method must be the only entry point by which the window manager
- * influences the logical configuration of displays.
- *
- * @param displayId The logical display id.
- * @param info The new data to be stored.
- */
- public void setDisplayInfoOverrideFromWindowManager(
+ private void setDisplayInfoOverrideFromWindowManagerInternal(
int displayId, DisplayInfo info) {
synchronized (mSyncRoot) {
LogicalDisplay display = mLogicalDisplays.get(displayId);
@@ -334,11 +295,7 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
}
}
- /**
- * Called by the window manager to perform traversals while holding a
- * surface flinger transaction.
- */
- public void performTraversalInTransactionFromWindowManager() {
+ private void performTraversalInTransactionFromWindowManagerInternal() {
synchronized (mSyncRoot) {
if (!mPendingTraversal) {
return;
@@ -354,10 +311,7 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
}
}
- /**
- * Called by the power manager to blank all displays.
- */
- public void blankAllDisplaysFromPowerManager() {
+ private void blankAllDisplaysFromPowerManagerInternal() {
synchronized (mSyncRoot) {
if (mAllDisplayBlankStateFromPowerManager != DISPLAY_BLANK_STATE_BLANKED) {
mAllDisplayBlankStateFromPowerManager = DISPLAY_BLANK_STATE_BLANKED;
@@ -367,10 +321,7 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
}
}
- /**
- * Called by the power manager to unblank all displays.
- */
- public void unblankAllDisplaysFromPowerManager() {
+ private void unblankAllDisplaysFromPowerManagerInternal() {
synchronized (mSyncRoot) {
if (mAllDisplayBlankStateFromPowerManager != DISPLAY_BLANK_STATE_UNBLANKED) {
mAllDisplayBlankStateFromPowerManager = DISPLAY_BLANK_STATE_UNBLANKED;
@@ -380,70 +331,40 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
}
}
- /**
- * Returns information about the specified logical display.
- *
- * @param displayId The logical display id.
- * @return The logical display info, or null if the display does not exist. The
- * returned object must be treated as immutable.
- */
- @Override // Binder call
- public DisplayInfo getDisplayInfo(int displayId) {
- final int callingUid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mSyncRoot) {
- LogicalDisplay display = mLogicalDisplays.get(displayId);
- if (display != null) {
- DisplayInfo info = display.getDisplayInfoLocked();
- if (info.hasAccess(callingUid)) {
- return info;
- }
+ private DisplayInfo getDisplayInfoInternal(int displayId, int callingUid) {
+ synchronized (mSyncRoot) {
+ LogicalDisplay display = mLogicalDisplays.get(displayId);
+ if (display != null) {
+ DisplayInfo info = display.getDisplayInfoLocked();
+ if (info.hasAccess(callingUid)) {
+ return info;
}
- return null;
}
- } finally {
- Binder.restoreCallingIdentity(token);
+ return null;
}
}
- /**
- * Returns the list of all display ids.
- */
- @Override // Binder call
- public int[] getDisplayIds() {
- final int callingUid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mSyncRoot) {
- final int count = mLogicalDisplays.size();
- int[] displayIds = new int[count];
- int n = 0;
- for (int i = 0; i < count; i++) {
- LogicalDisplay display = mLogicalDisplays.valueAt(i);
- DisplayInfo info = display.getDisplayInfoLocked();
- if (info.hasAccess(callingUid)) {
- displayIds[n++] = mLogicalDisplays.keyAt(i);
- }
- }
- if (n != count) {
- displayIds = Arrays.copyOfRange(displayIds, 0, n);
+ private int[] getDisplayIdsInternal(int callingUid) {
+ synchronized (mSyncRoot) {
+ final int count = mLogicalDisplays.size();
+ int[] displayIds = new int[count];
+ int n = 0;
+ for (int i = 0; i < count; i++) {
+ LogicalDisplay display = mLogicalDisplays.valueAt(i);
+ DisplayInfo info = display.getDisplayInfoLocked();
+ if (info.hasAccess(callingUid)) {
+ displayIds[n++] = mLogicalDisplays.keyAt(i);
}
- return displayIds;
}
- } finally {
- Binder.restoreCallingIdentity(token);
+ if (n != count) {
+ displayIds = Arrays.copyOfRange(displayIds, 0, n);
+ }
+ return displayIds;
}
}
- @Override // Binder call
- public void registerCallback(IDisplayManagerCallback callback) {
- if (callback == null) {
- throw new IllegalArgumentException("listener must not be null");
- }
-
+ private void registerCallbackInternal(IDisplayManagerCallback callback, int callingPid) {
synchronized (mSyncRoot) {
- int callingPid = Binder.getCallingPid();
if (mCallbacks.get(callingPid) != null) {
throw new SecurityException("The calling process has already "
+ "registered an IDisplayManagerCallback.");
@@ -469,24 +390,14 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
}
}
- @Override // Binder call
- public void startWifiDisplayScan() {
- mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
- "Permission required to start wifi display scans");
-
- final int callingPid = Binder.getCallingPid();
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mSyncRoot) {
- CallbackRecord record = mCallbacks.get(callingPid);
- if (record == null) {
- throw new IllegalStateException("The calling process has not "
- + "registered an IDisplayManagerCallback.");
- }
- startWifiDisplayScanLocked(record);
+ private void startWifiDisplayScanInternal(int callingPid) {
+ synchronized (mSyncRoot) {
+ CallbackRecord record = mCallbacks.get(callingPid);
+ if (record == null) {
+ throw new IllegalStateException("The calling process has not "
+ + "registered an IDisplayManagerCallback.");
}
- } finally {
- Binder.restoreCallingIdentity(token);
+ startWifiDisplayScanLocked(record);
}
}
@@ -501,24 +412,14 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
}
}
- @Override // Binder call
- public void stopWifiDisplayScan() {
- mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
- "Permission required to stop wifi display scans");
-
- final int callingPid = Binder.getCallingPid();
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mSyncRoot) {
- CallbackRecord record = mCallbacks.get(callingPid);
- if (record == null) {
- throw new IllegalStateException("The calling process has not "
- + "registered an IDisplayManagerCallback.");
- }
- stopWifiDisplayScanLocked(record);
+ private void stopWifiDisplayScanInternal(int callingPid) {
+ synchronized (mSyncRoot) {
+ CallbackRecord record = mCallbacks.get(callingPid);
+ if (record == null) {
+ throw new IllegalStateException("The calling process has not "
+ + "registered an IDisplayManagerCallback.");
}
- } finally {
- Binder.restoreCallingIdentity(token);
+ stopWifiDisplayScanLocked(record);
}
}
@@ -537,255 +438,113 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
}
}
- @Override // Binder call
- public void connectWifiDisplay(String address) {
- if (address == null) {
- throw new IllegalArgumentException("address must not be null");
- }
- mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
- "Permission required to connect to a wifi display");
-
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mSyncRoot) {
- if (mWifiDisplayAdapter != null) {
- mWifiDisplayAdapter.requestConnectLocked(address);
- }
+ private void connectWifiDisplayInternal(String address) {
+ synchronized (mSyncRoot) {
+ if (mWifiDisplayAdapter != null) {
+ mWifiDisplayAdapter.requestConnectLocked(address);
}
- } finally {
- Binder.restoreCallingIdentity(token);
}
}
- @Override
- public void pauseWifiDisplay() {
- mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
- "Permission required to pause a wifi display session");
-
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mSyncRoot) {
- if (mWifiDisplayAdapter != null) {
- mWifiDisplayAdapter.requestPauseLocked();
- }
+ private void pauseWifiDisplayInternal() {
+ synchronized (mSyncRoot) {
+ if (mWifiDisplayAdapter != null) {
+ mWifiDisplayAdapter.requestPauseLocked();
}
- } finally {
- Binder.restoreCallingIdentity(token);
}
}
- @Override
- public void resumeWifiDisplay() {
- mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
- "Permission required to resume a wifi display session");
-
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mSyncRoot) {
- if (mWifiDisplayAdapter != null) {
- mWifiDisplayAdapter.requestResumeLocked();
- }
+ private void resumeWifiDisplayInternal() {
+ synchronized (mSyncRoot) {
+ if (mWifiDisplayAdapter != null) {
+ mWifiDisplayAdapter.requestResumeLocked();
}
- } finally {
- Binder.restoreCallingIdentity(token);
}
}
- @Override // Binder call
- public void disconnectWifiDisplay() {
- // This request does not require special permissions.
- // Any app can request disconnection from the currently active wifi display.
- // This exception should no longer be needed once wifi display control moves
- // to the media router service.
-
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mSyncRoot) {
- if (mWifiDisplayAdapter != null) {
- mWifiDisplayAdapter.requestDisconnectLocked();
- }
+ private void disconnectWifiDisplayInternal() {
+ synchronized (mSyncRoot) {
+ if (mWifiDisplayAdapter != null) {
+ mWifiDisplayAdapter.requestDisconnectLocked();
}
- } finally {
- Binder.restoreCallingIdentity(token);
}
}
- @Override // Binder call
- public void renameWifiDisplay(String address, String alias) {
- if (address == null) {
- throw new IllegalArgumentException("address must not be null");
- }
- mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
- "Permission required to rename to a wifi display");
-
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mSyncRoot) {
- if (mWifiDisplayAdapter != null) {
- mWifiDisplayAdapter.requestRenameLocked(address, alias);
- }
+ private void renameWifiDisplayInternal(String address, String alias) {
+ synchronized (mSyncRoot) {
+ if (mWifiDisplayAdapter != null) {
+ mWifiDisplayAdapter.requestRenameLocked(address, alias);
}
- } finally {
- Binder.restoreCallingIdentity(token);
}
}
- @Override // Binder call
- public void forgetWifiDisplay(String address) {
- if (address == null) {
- throw new IllegalArgumentException("address must not be null");
- }
- mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
- "Permission required to forget to a wifi display");
-
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mSyncRoot) {
- if (mWifiDisplayAdapter != null) {
- mWifiDisplayAdapter.requestForgetLocked(address);
- }
+ private void forgetWifiDisplayInternal(String address) {
+ synchronized (mSyncRoot) {
+ if (mWifiDisplayAdapter != null) {
+ mWifiDisplayAdapter.requestForgetLocked(address);
}
- } finally {
- Binder.restoreCallingIdentity(token);
}
}
- @Override // Binder call
- public WifiDisplayStatus getWifiDisplayStatus() {
- // This request does not require special permissions.
- // Any app can get information about available wifi displays.
-
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mSyncRoot) {
- if (mWifiDisplayAdapter != null) {
- return mWifiDisplayAdapter.getWifiDisplayStatusLocked();
- }
- return new WifiDisplayStatus();
+ private WifiDisplayStatus getWifiDisplayStatusInternal() {
+ synchronized (mSyncRoot) {
+ if (mWifiDisplayAdapter != null) {
+ return mWifiDisplayAdapter.getWifiDisplayStatusLocked();
}
- } finally {
- Binder.restoreCallingIdentity(token);
+ return new WifiDisplayStatus();
}
}
- @Override // Binder call
- public int createVirtualDisplay(IBinder appToken, String packageName,
+ private int createVirtualDisplayInternal(IBinder appToken, int callingUid, String packageName,
String name, int width, int height, int densityDpi, Surface surface, int flags) {
- final int callingUid = Binder.getCallingUid();
- if (!validatePackageName(callingUid, packageName)) {
- throw new SecurityException("packageName must match the calling uid");
- }
- if (appToken == null) {
- throw new IllegalArgumentException("appToken must not be null");
- }
- if (TextUtils.isEmpty(name)) {
- throw new IllegalArgumentException("name must be non-null and non-empty");
- }
- if (width <= 0 || height <= 0 || densityDpi <= 0) {
- throw new IllegalArgumentException("width, height, and densityDpi must be "
- + "greater than 0");
- }
- if (surface == null) {
- throw new IllegalArgumentException("surface must not be null");
- }
- if ((flags & DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC) != 0) {
- if (mContext.checkCallingPermission(android.Manifest.permission.CAPTURE_VIDEO_OUTPUT)
- != PackageManager.PERMISSION_GRANTED
- && mContext.checkCallingPermission(
- android.Manifest.permission.CAPTURE_SECURE_VIDEO_OUTPUT)
- != PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException("Requires CAPTURE_VIDEO_OUTPUT or "
- + "CAPTURE_SECURE_VIDEO_OUTPUT permission to create a "
- + "public virtual display.");
- }
- }
- if ((flags & DisplayManager.VIRTUAL_DISPLAY_FLAG_SECURE) != 0) {
- if (mContext.checkCallingPermission(
- android.Manifest.permission.CAPTURE_SECURE_VIDEO_OUTPUT)
- != PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException("Requires CAPTURE_SECURE_VIDEO_OUTPUT "
- + "to create a secure virtual display.");
+ synchronized (mSyncRoot) {
+ if (mVirtualDisplayAdapter == null) {
+ Slog.w(TAG, "Rejecting request to create private virtual display "
+ + "because the virtual display adapter is not available.");
+ return -1;
}
- }
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mSyncRoot) {
- if (mVirtualDisplayAdapter == null) {
- Slog.w(TAG, "Rejecting request to create private virtual display "
- + "because the virtual display adapter is not available.");
- return -1;
- }
-
- DisplayDevice device = mVirtualDisplayAdapter.createVirtualDisplayLocked(
- appToken, callingUid, packageName, name, width, height, densityDpi,
- surface, flags);
- if (device == null) {
- return -1;
- }
-
- handleDisplayDeviceAddedLocked(device);
- LogicalDisplay display = findLogicalDisplayForDeviceLocked(device);
- if (display != null) {
- return display.getDisplayIdLocked();
- }
+ DisplayDevice device = mVirtualDisplayAdapter.createVirtualDisplayLocked(
+ appToken, callingUid, packageName, name, width, height, densityDpi,
+ surface, flags);
+ if (device == null) {
+ return -1;
+ }
- // Something weird happened and the logical display was not created.
- Slog.w(TAG, "Rejecting request to create virtual display "
- + "because the logical display was not created.");
- mVirtualDisplayAdapter.releaseVirtualDisplayLocked(appToken);
- handleDisplayDeviceRemovedLocked(device);
+ handleDisplayDeviceAddedLocked(device);
+ LogicalDisplay display = findLogicalDisplayForDeviceLocked(device);
+ if (display != null) {
+ return display.getDisplayIdLocked();
}
- } finally {
- Binder.restoreCallingIdentity(token);
+
+ // Something weird happened and the logical display was not created.
+ Slog.w(TAG, "Rejecting request to create virtual display "
+ + "because the logical display was not created.");
+ mVirtualDisplayAdapter.releaseVirtualDisplayLocked(appToken);
+ handleDisplayDeviceRemovedLocked(device);
}
return -1;
}
- @Override // Binder call
- public void releaseVirtualDisplay(IBinder appToken) {
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mSyncRoot) {
- if (mVirtualDisplayAdapter == null) {
- return;
- }
-
- DisplayDevice device =
- mVirtualDisplayAdapter.releaseVirtualDisplayLocked(appToken);
- if (device != null) {
- handleDisplayDeviceRemovedLocked(device);
- }
+ private void releaseVirtualDisplayInternal(IBinder appToken) {
+ synchronized (mSyncRoot) {
+ if (mVirtualDisplayAdapter == null) {
+ return;
}
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
- private boolean validatePackageName(int uid, String packageName) {
- if (packageName != null) {
- String[] packageNames = mContext.getPackageManager().getPackagesForUid(uid);
- if (packageNames != null) {
- for (String n : packageNames) {
- if (n.equals(packageName)) {
- return true;
- }
- }
+ DisplayDevice device =
+ mVirtualDisplayAdapter.releaseVirtualDisplayLocked(appToken);
+ if (device != null) {
+ handleDisplayDeviceRemovedLocked(device);
}
}
- return false;
}
private void registerDefaultDisplayAdapter() {
// Register default display adapter.
synchronized (mSyncRoot) {
- if (mHeadless) {
- registerDisplayAdapterLocked(new HeadlessDisplayAdapter(
- mSyncRoot, mContext, mHandler, mDisplayAdapterListener));
- } else {
- registerDisplayAdapterLocked(new LocalDisplayAdapter(
- mSyncRoot, mContext, mHandler, mDisplayAdapterListener));
- }
+ registerDisplayAdapterLocked(new LocalDisplayAdapter(
+ mSyncRoot, mContext, mHandler, mDisplayAdapterListener));
}
}
@@ -1002,26 +761,13 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
}
// Tell the input system about these new viewports.
- if (mInputManagerFuncs != null) {
+ if (mInputManagerInternal != null) {
mHandler.sendEmptyMessage(MSG_UPDATE_VIEWPORT);
}
}
- /**
- * Tells the display manager whether there is interesting unique content on the
- * specified logical display. This is used to control automatic mirroring.
- * <p>
- * If the display has unique content, then the display manager arranges for it
- * to be presented on a physical display if appropriate. Otherwise, the display manager
- * may choose to make the physical display mirror some other logical display.
- * </p>
- *
- * @param displayId The logical display id to update.
- * @param hasContent True if the logical display has content.
- * @param inTraversal True if called from WindowManagerService during a window traversal prior
- * to call to performTraversalInTransactionFromWindowManager.
- */
- public void setDisplayHasContent(int displayId, boolean hasContent, boolean inTraversal) {
+ private void setDisplayHasContentInternal(int displayId, boolean hasContent,
+ boolean inTraversal) {
synchronized (mSyncRoot) {
LogicalDisplay display = mLogicalDisplays.get(displayId);
if (display != null && display.hasContentLocked() != hasContent) {
@@ -1042,13 +788,13 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
}
private void configureDisplayInTransactionLocked(DisplayDevice device) {
- DisplayDeviceInfo info = device.getDisplayDeviceInfoLocked();
- boolean isPrivate = (info.flags & DisplayDeviceInfo.FLAG_PRIVATE) != 0;
+ final DisplayDeviceInfo info = device.getDisplayDeviceInfoLocked();
+ final boolean ownContent = (info.flags & DisplayDeviceInfo.FLAG_OWN_CONTENT_ONLY) != 0;
// Find the logical display that the display device is showing.
- // Private displays never mirror other displays.
+ // Certain displays only ever show their own content.
LogicalDisplay display = findLogicalDisplayForDeviceLocked(device);
- if (!isPrivate) {
+ if (!ownContent) {
if (display != null && !display.hasContentLocked()) {
// If the display does not have any content of its own, then
// automatically mirror the default logical display contents.
@@ -1107,7 +853,7 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
// Requests that performTraversalsInTransactionFromWindowManager be called at a
// later time to apply changes to surfaces and displays.
private void scheduleTraversalLocked(boolean inTraversal) {
- if (!mPendingTraversal && mWindowManagerFuncs != null) {
+ if (!mPendingTraversal && mWindowManagerInternal != null) {
mPendingTraversal = true;
if (!inTraversal) {
mHandler.sendEmptyMessage(MSG_REQUEST_TRAVERSAL);
@@ -1140,20 +886,10 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
mTempCallbacks.clear();
}
- @Override // Binder call
- public void dump(FileDescriptor fd, final PrintWriter pw, String[] args) {
- if (mContext == null
- || mContext.checkCallingOrSelfPermission(Manifest.permission.DUMP)
- != PackageManager.PERMISSION_GRANTED) {
- pw.println("Permission Denial: can't dump DisplayManager from from pid="
- + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid());
- return;
- }
-
+ private void dumpInternal(PrintWriter pw) {
pw.println("DISPLAY MANAGER (dumpsys display)");
synchronized (mSyncRoot) {
- pw.println(" mHeadless=" + mHeadless);
pw.println(" mOnlyCode=" + mOnlyCore);
pw.println(" mSafeMode=" + mSafeMode);
pw.println(" mPendingTraversal=" + mPendingTraversal);
@@ -1212,30 +948,6 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
public static final class SyncRoot {
}
- /**
- * Private interface to the window manager.
- */
- public interface WindowManagerFuncs {
- /**
- * Request that the window manager call
- * {@link #performTraversalInTransactionFromWindowManager} within a surface
- * transaction at a later time.
- */
- void requestTraversal();
- }
-
- /**
- * Private interface to the input manager.
- */
- public interface InputManagerFuncs {
- /**
- * Sets information about the displays as needed by the input system.
- * The input system should copy this information if required.
- */
- void setDisplayViewports(DisplayViewport defaultViewport,
- DisplayViewport externalTouchViewport);
- }
-
private final class DisplayManagerHandler extends Handler {
public DisplayManagerHandler(Looper looper) {
super(looper, null, true /*async*/);
@@ -1257,7 +969,7 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
break;
case MSG_REQUEST_TRAVERSAL:
- mWindowManagerFuncs.requestTraversal();
+ mWindowManagerInternal.requestTraversalFromDisplayManager();
break;
case MSG_UPDATE_VIEWPORT: {
@@ -1265,7 +977,7 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
mTempDefaultViewport.copyFrom(mDefaultViewport);
mTempExternalTouchViewport.copyFrom(mExternalTouchViewport);
}
- mInputManagerFuncs.setDisplayViewports(
+ mInputManagerInternal.setDisplayViewports(
mTempDefaultViewport, mTempExternalTouchViewport);
break;
}
@@ -1328,4 +1040,325 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
}
}
}
+
+ private final class BinderService extends IDisplayManager.Stub {
+ /**
+ * Returns information about the specified logical display.
+ *
+ * @param displayId The logical display id.
+ * @return The logical display info, or null if the display does not exist. The
+ * returned object must be treated as immutable.
+ */
+ @Override // Binder call
+ public DisplayInfo getDisplayInfo(int displayId) {
+ final int callingUid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ return getDisplayInfoInternal(displayId, callingUid);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ /**
+ * Returns the list of all display ids.
+ */
+ @Override // Binder call
+ public int[] getDisplayIds() {
+ final int callingUid = Binder.getCallingUid();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ return getDisplayIdsInternal(callingUid);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override // Binder call
+ public void registerCallback(IDisplayManagerCallback callback) {
+ if (callback == null) {
+ throw new IllegalArgumentException("listener must not be null");
+ }
+
+ final int callingPid = Binder.getCallingPid();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ registerCallbackInternal(callback, callingPid);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override // Binder call
+ public void startWifiDisplayScan() {
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
+ "Permission required to start wifi display scans");
+
+ final int callingPid = Binder.getCallingPid();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ startWifiDisplayScanInternal(callingPid);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override // Binder call
+ public void stopWifiDisplayScan() {
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
+ "Permission required to stop wifi display scans");
+
+ final int callingPid = Binder.getCallingPid();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ stopWifiDisplayScanInternal(callingPid);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override // Binder call
+ public void connectWifiDisplay(String address) {
+ if (address == null) {
+ throw new IllegalArgumentException("address must not be null");
+ }
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
+ "Permission required to connect to a wifi display");
+
+ final long token = Binder.clearCallingIdentity();
+ try {
+ connectWifiDisplayInternal(address);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override // Binder call
+ public void disconnectWifiDisplay() {
+ // This request does not require special permissions.
+ // Any app can request disconnection from the currently active wifi display.
+ // This exception should no longer be needed once wifi display control moves
+ // to the media router service.
+
+ final long token = Binder.clearCallingIdentity();
+ try {
+ disconnectWifiDisplayInternal();
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override // Binder call
+ public void renameWifiDisplay(String address, String alias) {
+ if (address == null) {
+ throw new IllegalArgumentException("address must not be null");
+ }
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
+ "Permission required to rename to a wifi display");
+
+ final long token = Binder.clearCallingIdentity();
+ try {
+ renameWifiDisplayInternal(address, alias);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override // Binder call
+ public void forgetWifiDisplay(String address) {
+ if (address == null) {
+ throw new IllegalArgumentException("address must not be null");
+ }
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
+ "Permission required to forget to a wifi display");
+
+ final long token = Binder.clearCallingIdentity();
+ try {
+ forgetWifiDisplayInternal(address);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override // Binder call
+ public void pauseWifiDisplay() {
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
+ "Permission required to pause a wifi display session");
+
+ final long token = Binder.clearCallingIdentity();
+ try {
+ pauseWifiDisplayInternal();
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override // Binder call
+ public void resumeWifiDisplay() {
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
+ "Permission required to resume a wifi display session");
+
+ final long token = Binder.clearCallingIdentity();
+ try {
+ resumeWifiDisplayInternal();
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override // Binder call
+ public WifiDisplayStatus getWifiDisplayStatus() {
+ // This request does not require special permissions.
+ // Any app can get information about available wifi displays.
+
+ final long token = Binder.clearCallingIdentity();
+ try {
+ return getWifiDisplayStatusInternal();
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override // Binder call
+ public int createVirtualDisplay(IBinder appToken, String packageName,
+ String name, int width, int height, int densityDpi, Surface surface, int flags) {
+ final int callingUid = Binder.getCallingUid();
+ if (!validatePackageName(callingUid, packageName)) {
+ throw new SecurityException("packageName must match the calling uid");
+ }
+ if (appToken == null) {
+ throw new IllegalArgumentException("appToken must not be null");
+ }
+ if (TextUtils.isEmpty(name)) {
+ throw new IllegalArgumentException("name must be non-null and non-empty");
+ }
+ if (width <= 0 || height <= 0 || densityDpi <= 0) {
+ throw new IllegalArgumentException("width, height, and densityDpi must be "
+ + "greater than 0");
+ }
+ if (surface == null) {
+ throw new IllegalArgumentException("surface must not be null");
+ }
+ if (callingUid != Process.SYSTEM_UID &&
+ (flags & DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC) != 0) {
+ if (mContext.checkCallingPermission(android.Manifest.permission.CAPTURE_VIDEO_OUTPUT)
+ != PackageManager.PERMISSION_GRANTED
+ && mContext.checkCallingPermission(
+ android.Manifest.permission.CAPTURE_SECURE_VIDEO_OUTPUT)
+ != PackageManager.PERMISSION_GRANTED) {
+ throw new SecurityException("Requires CAPTURE_VIDEO_OUTPUT or "
+ + "CAPTURE_SECURE_VIDEO_OUTPUT permission to create a "
+ + "public virtual display.");
+ }
+ }
+ if ((flags & DisplayManager.VIRTUAL_DISPLAY_FLAG_SECURE) != 0) {
+ if (mContext.checkCallingPermission(
+ android.Manifest.permission.CAPTURE_SECURE_VIDEO_OUTPUT)
+ != PackageManager.PERMISSION_GRANTED) {
+ throw new SecurityException("Requires CAPTURE_SECURE_VIDEO_OUTPUT "
+ + "to create a secure virtual display.");
+ }
+ }
+
+ final long token = Binder.clearCallingIdentity();
+ try {
+ return createVirtualDisplayInternal(appToken, callingUid, packageName,
+ name, width, height, densityDpi, surface, flags);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override // Binder call
+ public void releaseVirtualDisplay(IBinder appToken) {
+ final long token = Binder.clearCallingIdentity();
+ try {
+ releaseVirtualDisplayInternal(appToken);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ @Override // Binder call
+ public void dump(FileDescriptor fd, final PrintWriter pw, String[] args) {
+ if (mContext == null
+ || mContext.checkCallingOrSelfPermission(Manifest.permission.DUMP)
+ != PackageManager.PERMISSION_GRANTED) {
+ pw.println("Permission Denial: can't dump DisplayManager from from pid="
+ + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid());
+ return;
+ }
+
+ final long token = Binder.clearCallingIdentity();
+ try {
+ dumpInternal(pw);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ private boolean validatePackageName(int uid, String packageName) {
+ if (packageName != null) {
+ String[] packageNames = mContext.getPackageManager().getPackagesForUid(uid);
+ if (packageNames != null) {
+ for (String n : packageNames) {
+ if (n.equals(packageName)) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+ }
+
+ private final class LocalService extends DisplayManagerInternal {
+ @Override
+ public void blankAllDisplaysFromPowerManager() {
+ blankAllDisplaysFromPowerManagerInternal();
+ }
+
+ @Override
+ public void unblankAllDisplaysFromPowerManager() {
+ unblankAllDisplaysFromPowerManagerInternal();
+ }
+
+ @Override
+ public DisplayInfo getDisplayInfo(int displayId) {
+ return getDisplayInfoInternal(displayId, Process.myUid());
+ }
+
+ @Override
+ public void registerDisplayTransactionListener(DisplayTransactionListener listener) {
+ if (listener == null) {
+ throw new IllegalArgumentException("listener must not be null");
+ }
+
+ registerDisplayTransactionListenerInternal(listener);
+ }
+
+ @Override
+ public void unregisterDisplayTransactionListener(DisplayTransactionListener listener) {
+ if (listener == null) {
+ throw new IllegalArgumentException("listener must not be null");
+ }
+
+ unregisterDisplayTransactionListenerInternal(listener);
+ }
+
+ @Override
+ public void setDisplayInfoOverrideFromWindowManager(int displayId, DisplayInfo info) {
+ setDisplayInfoOverrideFromWindowManagerInternal(displayId, info);
+ }
+
+ @Override
+ public void performTraversalInTransactionFromWindowManager() {
+ performTraversalInTransactionFromWindowManagerInternal();
+ }
+
+ @Override
+ public void setDisplayHasContent(int displayId, boolean hasContent, boolean inTraversal) {
+ setDisplayHasContentInternal(displayId, hasContent, inTraversal);
+ }
+ }
}
diff --git a/services/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
index cb8f3e20d368..cb8f3e20d368 100644
--- a/services/java/com/android/server/display/LocalDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
diff --git a/services/java/com/android/server/display/LogicalDisplay.java b/services/core/java/com/android/server/display/LogicalDisplay.java
index 7e357c0c3a7c..7e357c0c3a7c 100644
--- a/services/java/com/android/server/display/LogicalDisplay.java
+++ b/services/core/java/com/android/server/display/LogicalDisplay.java
diff --git a/services/java/com/android/server/display/OverlayDisplayAdapter.java b/services/core/java/com/android/server/display/OverlayDisplayAdapter.java
index 007acf716598..007acf716598 100644
--- a/services/java/com/android/server/display/OverlayDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/OverlayDisplayAdapter.java
diff --git a/services/java/com/android/server/display/OverlayDisplayWindow.java b/services/core/java/com/android/server/display/OverlayDisplayWindow.java
index f1dd60a75424..f1dd60a75424 100644
--- a/services/java/com/android/server/display/OverlayDisplayWindow.java
+++ b/services/core/java/com/android/server/display/OverlayDisplayWindow.java
diff --git a/services/java/com/android/server/display/PersistentDataStore.java b/services/core/java/com/android/server/display/PersistentDataStore.java
index 67b36958a35a..67b36958a35a 100644
--- a/services/java/com/android/server/display/PersistentDataStore.java
+++ b/services/core/java/com/android/server/display/PersistentDataStore.java
diff --git a/services/java/com/android/server/display/VirtualDisplayAdapter.java b/services/core/java/com/android/server/display/VirtualDisplayAdapter.java
index 46d473ce6ba3..95ca0d2b4b43 100644
--- a/services/java/com/android/server/display/VirtualDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/VirtualDisplayAdapter.java
@@ -157,8 +157,11 @@ final class VirtualDisplayAdapter extends DisplayAdapter {
mInfo.yDpi = mDensityDpi;
mInfo.flags = 0;
if ((mFlags & DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC) == 0) {
- mInfo.flags |= DisplayDeviceInfo.FLAG_PRIVATE |
- DisplayDeviceInfo.FLAG_NEVER_BLANK;
+ mInfo.flags |= DisplayDeviceInfo.FLAG_PRIVATE
+ | DisplayDeviceInfo.FLAG_NEVER_BLANK
+ | DisplayDeviceInfo.FLAG_OWN_CONTENT_ONLY;
+ } else if ((mFlags & DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY) != 0) {
+ mInfo.flags |= DisplayDeviceInfo.FLAG_OWN_CONTENT_ONLY;
}
if ((mFlags & DisplayManager.VIRTUAL_DISPLAY_FLAG_SECURE) != 0) {
mInfo.flags |= DisplayDeviceInfo.FLAG_SECURE;
diff --git a/services/java/com/android/server/display/WifiDisplayAdapter.java b/services/core/java/com/android/server/display/WifiDisplayAdapter.java
index cd57941bcc3e..cd57941bcc3e 100644
--- a/services/java/com/android/server/display/WifiDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/WifiDisplayAdapter.java
diff --git a/services/java/com/android/server/display/WifiDisplayController.java b/services/core/java/com/android/server/display/WifiDisplayController.java
index dbb59b269bf5..dbb59b269bf5 100644
--- a/services/java/com/android/server/display/WifiDisplayController.java
+++ b/services/core/java/com/android/server/display/WifiDisplayController.java
diff --git a/services/java/com/android/server/dreams/DreamController.java b/services/core/java/com/android/server/dreams/DreamController.java
index 85ef33e2742a..649b5c989fdb 100644
--- a/services/java/com/android/server/dreams/DreamController.java
+++ b/services/core/java/com/android/server/dreams/DreamController.java
@@ -85,6 +85,7 @@ final class DreamController {
pw.println(" mToken=" + mCurrentDream.mToken);
pw.println(" mName=" + mCurrentDream.mName);
pw.println(" mIsTest=" + mCurrentDream.mIsTest);
+ pw.println(" mCanDoze=" + mCurrentDream.mCanDoze);
pw.println(" mUserId=" + mCurrentDream.mUserId);
pw.println(" mBound=" + mCurrentDream.mBound);
pw.println(" mService=" + mCurrentDream.mService);
@@ -94,15 +95,18 @@ final class DreamController {
}
}
- public void startDream(Binder token, ComponentName name, boolean isTest, int userId) {
+ public void startDream(Binder token, ComponentName name,
+ boolean isTest, boolean canDoze, int userId) {
stopDream();
// Close the notification shade. Don't need to send to all, but better to be explicit.
mContext.sendBroadcastAsUser(mCloseNotificationShadeIntent, UserHandle.ALL);
- Slog.i(TAG, "Starting dream: name=" + name + ", isTest=" + isTest + ", userId=" + userId);
+ Slog.i(TAG, "Starting dream: name=" + name
+ + ", isTest=" + isTest + ", canDoze=" + canDoze
+ + ", userId=" + userId);
- mCurrentDream = new DreamRecord(token, name, isTest, userId);
+ mCurrentDream = new DreamRecord(token, name, isTest, canDoze, userId);
try {
mIWindowManager.addWindowToken(token, WindowManager.LayoutParams.TYPE_DREAM);
@@ -140,7 +144,8 @@ final class DreamController {
final DreamRecord oldDream = mCurrentDream;
mCurrentDream = null;
Slog.i(TAG, "Stopping dream: name=" + oldDream.mName
- + ", isTest=" + oldDream.mIsTest + ", userId=" + oldDream.mUserId);
+ + ", isTest=" + oldDream.mIsTest + ", canDoze=" + oldDream.mCanDoze
+ + ", userId=" + oldDream.mUserId);
mHandler.removeCallbacks(mStopUnconnectedDreamRunnable);
@@ -187,7 +192,7 @@ final class DreamController {
private void attach(IDreamService service) {
try {
service.asBinder().linkToDeath(mCurrentDream, 0);
- service.attach(mCurrentDream.mToken);
+ service.attach(mCurrentDream.mToken, mCurrentDream.mCanDoze);
} catch (RemoteException ex) {
Slog.e(TAG, "The dream service died unexpectedly.", ex);
stopDream();
@@ -213,6 +218,7 @@ final class DreamController {
public final Binder mToken;
public final ComponentName mName;
public final boolean mIsTest;
+ public final boolean mCanDoze;
public final int mUserId;
public boolean mBound;
@@ -221,10 +227,11 @@ final class DreamController {
public boolean mSentStartBroadcast;
public DreamRecord(Binder token, ComponentName name,
- boolean isTest, int userId) {
+ boolean isTest, boolean canDoze, int userId) {
mToken = token;
mName = name;
mIsTest = isTest;
+ mCanDoze = canDoze;
mUserId = userId;
}
diff --git a/services/core/java/com/android/server/dreams/DreamManagerService.java b/services/core/java/com/android/server/dreams/DreamManagerService.java
new file mode 100644
index 000000000000..fd2f8a151f85
--- /dev/null
+++ b/services/core/java/com/android/server/dreams/DreamManagerService.java
@@ -0,0 +1,655 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.dreams;
+
+import com.android.internal.util.DumpUtils;
+import com.android.server.FgThread;
+import com.android.server.SystemService;
+
+import android.Manifest;
+import android.app.ActivityManager;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.os.Binder;
+import android.os.Build;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.PowerManager;
+import android.os.SystemClock;
+import android.os.SystemProperties;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.service.dreams.DreamManagerInternal;
+import android.service.dreams.DreamService;
+import android.service.dreams.IDozeHardware;
+import android.service.dreams.IDreamManager;
+import android.text.TextUtils;
+import android.util.Slog;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+
+import libcore.util.Objects;
+
+/**
+ * Service api for managing dreams.
+ *
+ * @hide
+ */
+public final class DreamManagerService extends SystemService {
+ private static final boolean DEBUG = false;
+ private static final String TAG = "DreamManagerService";
+
+ private final Object mLock = new Object();
+
+ private final Context mContext;
+ private final DreamHandler mHandler;
+ private final DreamController mController;
+ private final PowerManager mPowerManager;
+ private final PowerManager.WakeLock mDozeWakeLock;
+ private final McuHal mMcuHal; // synchronized on self
+
+ private Binder mCurrentDreamToken;
+ private ComponentName mCurrentDreamName;
+ private int mCurrentDreamUserId;
+ private boolean mCurrentDreamIsTest;
+ private boolean mCurrentDreamCanDoze;
+ private boolean mCurrentDreamIsDozing;
+ private DozeHardwareWrapper mCurrentDreamDozeHardware;
+
+ public DreamManagerService(Context context) {
+ super(context);
+ mContext = context;
+ mHandler = new DreamHandler(FgThread.get().getLooper());
+ mController = new DreamController(context, mHandler, mControllerListener);
+
+ mPowerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
+ mDozeWakeLock = mPowerManager.newWakeLock(PowerManager.DOZE_WAKE_LOCK, TAG);
+
+ mMcuHal = McuHal.open();
+ if (mMcuHal != null) {
+ mMcuHal.reset();
+ }
+ }
+
+ @Override
+ public void onStart() {
+ publishBinderService(DreamService.DREAM_SERVICE, new BinderService());
+ publishLocalService(DreamManagerInternal.class, new LocalService());
+ }
+
+ @Override
+ public void onBootPhase(int phase) {
+ if (phase == SystemService.PHASE_THIRD_PARTY_APPS_CAN_START) {
+ mContext.registerReceiver(new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ synchronized (mLock) {
+ stopDreamLocked();
+ }
+ }
+ }, new IntentFilter(Intent.ACTION_USER_SWITCHED), null, mHandler);
+ }
+ }
+
+ private void dumpInternal(PrintWriter pw) {
+ pw.println("DREAM MANAGER (dumpsys dreams)");
+ pw.println();
+
+ pw.println("mMcuHal=" + mMcuHal);
+ pw.println();
+ pw.println("mCurrentDreamToken=" + mCurrentDreamToken);
+ pw.println("mCurrentDreamName=" + mCurrentDreamName);
+ pw.println("mCurrentDreamUserId=" + mCurrentDreamUserId);
+ pw.println("mCurrentDreamIsTest=" + mCurrentDreamIsTest);
+ pw.println("mCurrentDreamCanDoze=" + mCurrentDreamCanDoze);
+ pw.println("mCurrentDreamIsDozing=" + mCurrentDreamIsDozing);
+ pw.println("mCurrentDreamDozeHardware=" + mCurrentDreamDozeHardware);
+ pw.println();
+
+ DumpUtils.dumpAsync(mHandler, new DumpUtils.Dump() {
+ @Override
+ public void dump(PrintWriter pw) {
+ mController.dump(pw);
+ }
+ }, pw, 200);
+ }
+
+ private boolean isDreamingInternal() {
+ synchronized (mLock) {
+ return mCurrentDreamToken != null && !mCurrentDreamIsTest;
+ }
+ }
+
+ private void requestDreamInternal() {
+ // Ask the power manager to nap. It will eventually call back into
+ // startDream() if/when it is appropriate to start dreaming.
+ // Because napping could cause the screen to turn off immediately if the dream
+ // cannot be started, we keep one eye open and gently poke user activity.
+ long time = SystemClock.uptimeMillis();
+ mPowerManager.userActivity(time, true /*noChangeLights*/);
+ mPowerManager.nap(time);
+ }
+
+ private void requestAwakenInternal() {
+ // Treat an explicit request to awaken as user activity so that the
+ // device doesn't immediately go to sleep if the timeout expired,
+ // for example when being undocked.
+ long time = SystemClock.uptimeMillis();
+ mPowerManager.userActivity(time, false /*noChangeLights*/);
+ stopDreamInternal();
+ }
+
+ private void finishSelfInternal(IBinder token) {
+ if (DEBUG) {
+ Slog.d(TAG, "Dream finished: " + token);
+ }
+
+ // Note that a dream finishing and self-terminating is not
+ // itself considered user activity. If the dream is ending because
+ // the user interacted with the device then user activity will already
+ // have been poked so the device will stay awake a bit longer.
+ // If the dream is ending on its own for other reasons and no wake
+ // locks are held and the user activity timeout has expired then the
+ // device may simply go to sleep.
+ synchronized (mLock) {
+ if (mCurrentDreamToken == token) {
+ stopDreamLocked();
+ }
+ }
+ }
+
+ private void testDreamInternal(ComponentName dream, int userId) {
+ synchronized (mLock) {
+ startDreamLocked(dream, true /*isTest*/, false /*canDoze*/, userId);
+ }
+ }
+
+ private void startDreamInternal(boolean doze) {
+ final int userId = ActivityManager.getCurrentUser();
+ final ComponentName dream = doze ? getDozeComponent() : chooseDreamForUser(userId);
+ if (dream != null) {
+ synchronized (mLock) {
+ startDreamLocked(dream, false /*isTest*/, doze, userId);
+ }
+ }
+ }
+
+ private void stopDreamInternal() {
+ synchronized (mLock) {
+ stopDreamLocked();
+ }
+ }
+
+ private void startDozingInternal(IBinder token) {
+ if (DEBUG) {
+ Slog.d(TAG, "Dream requested to start dozing: " + token);
+ }
+
+ synchronized (mLock) {
+ if (mCurrentDreamToken == token && mCurrentDreamCanDoze
+ && !mCurrentDreamIsDozing) {
+ mCurrentDreamIsDozing = true;
+ mDozeWakeLock.acquire();
+ }
+ }
+ }
+
+ private void stopDozingInternal(IBinder token) {
+ if (DEBUG) {
+ Slog.d(TAG, "Dream requested to stop dozing: " + token);
+ }
+
+ synchronized (mLock) {
+ if (mCurrentDreamToken == token && mCurrentDreamIsDozing) {
+ mCurrentDreamIsDozing = false;
+ mDozeWakeLock.release();
+ }
+ }
+ }
+
+ private IDozeHardware getDozeHardwareInternal(IBinder token) {
+ synchronized (mLock) {
+ if (mCurrentDreamToken == token && mCurrentDreamCanDoze
+ && mCurrentDreamDozeHardware == null && mMcuHal != null) {
+ mCurrentDreamDozeHardware = new DozeHardwareWrapper();
+ return mCurrentDreamDozeHardware;
+ }
+ return null;
+ }
+ }
+
+ private ComponentName chooseDreamForUser(int userId) {
+ ComponentName[] dreams = getDreamComponentsForUser(userId);
+ return dreams != null && dreams.length != 0 ? dreams[0] : null;
+ }
+
+ private ComponentName[] getDreamComponentsForUser(int userId) {
+ String names = Settings.Secure.getStringForUser(mContext.getContentResolver(),
+ Settings.Secure.SCREENSAVER_COMPONENTS,
+ userId);
+ ComponentName[] components = componentsFromString(names);
+
+ // first, ensure components point to valid services
+ List<ComponentName> validComponents = new ArrayList<ComponentName>();
+ if (components != null) {
+ for (ComponentName component : components) {
+ if (serviceExists(component)) {
+ validComponents.add(component);
+ } else {
+ Slog.w(TAG, "Dream " + component + " does not exist");
+ }
+ }
+ }
+
+ // fallback to the default dream component if necessary
+ if (validComponents.isEmpty()) {
+ ComponentName defaultDream = getDefaultDreamComponentForUser(userId);
+ if (defaultDream != null) {
+ Slog.w(TAG, "Falling back to default dream " + defaultDream);
+ validComponents.add(defaultDream);
+ }
+ }
+ return validComponents.toArray(new ComponentName[validComponents.size()]);
+ }
+
+ private void setDreamComponentsForUser(int userId, ComponentName[] componentNames) {
+ Settings.Secure.putStringForUser(mContext.getContentResolver(),
+ Settings.Secure.SCREENSAVER_COMPONENTS,
+ componentsToString(componentNames),
+ userId);
+ }
+
+ private ComponentName getDefaultDreamComponentForUser(int userId) {
+ String name = Settings.Secure.getStringForUser(mContext.getContentResolver(),
+ Settings.Secure.SCREENSAVER_DEFAULT_COMPONENT,
+ userId);
+ return name == null ? null : ComponentName.unflattenFromString(name);
+ }
+
+ private ComponentName getDozeComponent() {
+ // Read the component from a system property to facilitate debugging.
+ // Note that for production devices, the dream should actually be declared in
+ // a config.xml resource.
+ String name = Build.IS_DEBUGGABLE ? SystemProperties.get("debug.doze.component") : null;
+ if (TextUtils.isEmpty(name)) {
+ // Read the component from a config.xml resource.
+ // The value should be specified in a resource overlay for the product.
+ name = mContext.getResources().getString(
+ com.android.internal.R.string.config_dozeComponent);
+ }
+ return TextUtils.isEmpty(name) ? null : ComponentName.unflattenFromString(name);
+ }
+
+ private boolean serviceExists(ComponentName name) {
+ try {
+ return name != null && mContext.getPackageManager().getServiceInfo(name, 0) != null;
+ } catch (NameNotFoundException e) {
+ return false;
+ }
+ }
+
+ private void startDreamLocked(final ComponentName name,
+ final boolean isTest, final boolean canDoze, final int userId) {
+ if (Objects.equal(mCurrentDreamName, name)
+ && mCurrentDreamIsTest == isTest
+ && mCurrentDreamCanDoze == canDoze
+ && mCurrentDreamUserId == userId) {
+ return;
+ }
+
+ stopDreamLocked();
+
+ if (DEBUG) Slog.i(TAG, "Entering dreamland.");
+
+ final Binder newToken = new Binder();
+ mCurrentDreamToken = newToken;
+ mCurrentDreamName = name;
+ mCurrentDreamIsTest = isTest;
+ mCurrentDreamCanDoze = canDoze;
+ mCurrentDreamUserId = userId;
+
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mController.startDream(newToken, name, isTest, canDoze, userId);
+ }
+ });
+ }
+
+ private void stopDreamLocked() {
+ if (mCurrentDreamToken != null) {
+ if (DEBUG) Slog.i(TAG, "Leaving dreamland.");
+
+ cleanupDreamLocked();
+
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mController.stopDream();
+ }
+ });
+ }
+ }
+
+ private void cleanupDreamLocked() {
+ mCurrentDreamToken = null;
+ mCurrentDreamName = null;
+ mCurrentDreamIsTest = false;
+ mCurrentDreamCanDoze = false;
+ mCurrentDreamUserId = 0;
+ if (mCurrentDreamIsDozing) {
+ mCurrentDreamIsDozing = false;
+ mDozeWakeLock.release();
+ }
+ if (mCurrentDreamDozeHardware != null) {
+ mCurrentDreamDozeHardware.release();
+ mCurrentDreamDozeHardware = null;
+ }
+ }
+
+ private void checkPermission(String permission) {
+ if (mContext.checkCallingOrSelfPermission(permission)
+ != PackageManager.PERMISSION_GRANTED) {
+ throw new SecurityException("Access denied to process: " + Binder.getCallingPid()
+ + ", must have permission " + permission);
+ }
+ }
+
+ private static String componentsToString(ComponentName[] componentNames) {
+ StringBuilder names = new StringBuilder();
+ if (componentNames != null) {
+ for (ComponentName componentName : componentNames) {
+ if (names.length() > 0) {
+ names.append(',');
+ }
+ names.append(componentName.flattenToString());
+ }
+ }
+ return names.toString();
+ }
+
+ private static ComponentName[] componentsFromString(String names) {
+ if (names == null) {
+ return null;
+ }
+ String[] namesArray = names.split(",");
+ ComponentName[] componentNames = new ComponentName[namesArray.length];
+ for (int i = 0; i < namesArray.length; i++) {
+ componentNames[i] = ComponentName.unflattenFromString(namesArray[i]);
+ }
+ return componentNames;
+ }
+
+ private final DreamController.Listener mControllerListener = new DreamController.Listener() {
+ @Override
+ public void onDreamStopped(Binder token) {
+ synchronized (mLock) {
+ if (mCurrentDreamToken == token) {
+ cleanupDreamLocked();
+ }
+ }
+ }
+ };
+
+ /**
+ * Handler for asynchronous operations performed by the dream manager.
+ * Ensures operations to {@link DreamController} are single-threaded.
+ */
+ private final class DreamHandler extends Handler {
+ public DreamHandler(Looper looper) {
+ super(looper, null, true /*async*/);
+ }
+ }
+
+ private final class BinderService extends IDreamManager.Stub {
+ @Override // Binder call
+ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ if (mContext.checkCallingOrSelfPermission(Manifest.permission.DUMP)
+ != PackageManager.PERMISSION_GRANTED) {
+ pw.println("Permission Denial: can't dump DreamManager from from pid="
+ + Binder.getCallingPid()
+ + ", uid=" + Binder.getCallingUid());
+ return;
+ }
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ dumpInternal(pw);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public ComponentName[] getDreamComponents() {
+ checkPermission(android.Manifest.permission.READ_DREAM_STATE);
+
+ final int userId = UserHandle.getCallingUserId();
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ return getDreamComponentsForUser(userId);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public void setDreamComponents(ComponentName[] componentNames) {
+ checkPermission(android.Manifest.permission.WRITE_DREAM_STATE);
+
+ final int userId = UserHandle.getCallingUserId();
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ setDreamComponentsForUser(userId, componentNames);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public ComponentName getDefaultDreamComponent() {
+ checkPermission(android.Manifest.permission.READ_DREAM_STATE);
+
+ final int userId = UserHandle.getCallingUserId();
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ return getDefaultDreamComponentForUser(userId);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public boolean isDreaming() {
+ checkPermission(android.Manifest.permission.READ_DREAM_STATE);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ return isDreamingInternal();
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public void dream() {
+ checkPermission(android.Manifest.permission.WRITE_DREAM_STATE);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ requestDreamInternal();
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public void testDream(ComponentName dream) {
+ if (dream == null) {
+ throw new IllegalArgumentException("dream must not be null");
+ }
+ checkPermission(android.Manifest.permission.WRITE_DREAM_STATE);
+
+ final int callingUserId = UserHandle.getCallingUserId();
+ final int currentUserId = ActivityManager.getCurrentUser();
+ if (callingUserId != currentUserId) {
+ // This check is inherently prone to races but at least it's something.
+ Slog.w(TAG, "Aborted attempt to start a test dream while a different "
+ + " user is active: callingUserId=" + callingUserId
+ + ", currentUserId=" + currentUserId);
+ return;
+ }
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ testDreamInternal(dream, callingUserId);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public void awaken() {
+ checkPermission(android.Manifest.permission.WRITE_DREAM_STATE);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ requestAwakenInternal();
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public void finishSelf(IBinder token) {
+ // Requires no permission, called by Dream from an arbitrary process.
+ if (token == null) {
+ throw new IllegalArgumentException("token must not be null");
+ }
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ finishSelfInternal(token);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public void startDozing(IBinder token) {
+ // Requires no permission, called by Dream from an arbitrary process.
+ if (token == null) {
+ throw new IllegalArgumentException("token must not be null");
+ }
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ startDozingInternal(token);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public void stopDozing(IBinder token) {
+ // Requires no permission, called by Dream from an arbitrary process.
+ if (token == null) {
+ throw new IllegalArgumentException("token must not be null");
+ }
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ stopDozingInternal(token);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public IDozeHardware getDozeHardware(IBinder token) {
+ // Requires no permission, called by Dream from an arbitrary process.
+ if (token == null) {
+ throw new IllegalArgumentException("token must not be null");
+ }
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ return getDozeHardwareInternal(token);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+ }
+
+ private final class LocalService extends DreamManagerInternal {
+ @Override
+ public void startDream(boolean doze) {
+ startDreamInternal(doze);
+ }
+
+ @Override
+ public void stopDream() {
+ stopDreamInternal();
+ }
+
+ @Override
+ public boolean isDreaming() {
+ return isDreamingInternal();
+ }
+ }
+
+ private final class DozeHardwareWrapper extends IDozeHardware.Stub {
+ private boolean mReleased;
+
+ public void release() {
+ synchronized (mMcuHal) {
+ if (!mReleased) {
+ mReleased = true;
+ mMcuHal.reset();
+ }
+ }
+ }
+
+ @Override // Binder call
+ public byte[] sendMessage(String msg, byte[] arg) {
+ if (msg == null) {
+ throw new IllegalArgumentException("msg must not be null");
+ }
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ synchronized (mMcuHal) {
+ if (mReleased) {
+ throw new IllegalStateException("This operation cannot be performed "
+ + "because the dream has ended.");
+ }
+ return mMcuHal.sendMessage(msg, arg);
+ }
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/dreams/McuHal.java b/services/core/java/com/android/server/dreams/McuHal.java
new file mode 100644
index 000000000000..1dc79c7bf0e6
--- /dev/null
+++ b/services/core/java/com/android/server/dreams/McuHal.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.dreams;
+
+import android.service.dreams.DozeHardware;
+
+/**
+ * Provides access to the low-level microcontroller hardware abstraction layer.
+ */
+final class McuHal {
+ private final long mPtr;
+
+ private static native long nativeOpen();
+ private static native byte[] nativeSendMessage(long ptr, String msg, byte[] arg);
+
+ private McuHal(long ptr) {
+ mPtr = ptr;
+ }
+
+ public static McuHal open() {
+ long ptr = nativeOpen();
+ return ptr != 0 ? new McuHal(ptr) : null;
+ }
+
+ public void reset() {
+ sendMessage(DozeHardware.MSG_ENABLE_MCU, DozeHardware.VALUE_OFF);
+ }
+
+ public byte[] sendMessage(String msg, byte[] arg) {
+ return nativeSendMessage(mPtr, msg, arg);
+ }
+}
diff --git a/services/java/com/android/server/firewall/AndFilter.java b/services/core/java/com/android/server/firewall/AndFilter.java
index 13551de8a02f..13551de8a02f 100644
--- a/services/java/com/android/server/firewall/AndFilter.java
+++ b/services/core/java/com/android/server/firewall/AndFilter.java
diff --git a/services/java/com/android/server/firewall/CategoryFilter.java b/services/core/java/com/android/server/firewall/CategoryFilter.java
index 246c09630c67..246c09630c67 100644
--- a/services/java/com/android/server/firewall/CategoryFilter.java
+++ b/services/core/java/com/android/server/firewall/CategoryFilter.java
diff --git a/services/java/com/android/server/firewall/Filter.java b/services/core/java/com/android/server/firewall/Filter.java
index 0a124f768f6c..0a124f768f6c 100644
--- a/services/java/com/android/server/firewall/Filter.java
+++ b/services/core/java/com/android/server/firewall/Filter.java
diff --git a/services/java/com/android/server/firewall/FilterFactory.java b/services/core/java/com/android/server/firewall/FilterFactory.java
index dea8b4000ccd..dea8b4000ccd 100644
--- a/services/java/com/android/server/firewall/FilterFactory.java
+++ b/services/core/java/com/android/server/firewall/FilterFactory.java
diff --git a/services/java/com/android/server/firewall/FilterList.java b/services/core/java/com/android/server/firewall/FilterList.java
index d34b2038e5bf..d34b2038e5bf 100644
--- a/services/java/com/android/server/firewall/FilterList.java
+++ b/services/core/java/com/android/server/firewall/FilterList.java
diff --git a/services/java/com/android/server/firewall/IntentFirewall.java b/services/core/java/com/android/server/firewall/IntentFirewall.java
index aaa0b585eddb..88a2207d53b6 100644
--- a/services/java/com/android/server/firewall/IntentFirewall.java
+++ b/services/core/java/com/android/server/firewall/IntentFirewall.java
@@ -26,6 +26,7 @@ import android.content.pm.PackageManager;
import android.os.Environment;
import android.os.FileObserver;
import android.os.Handler;
+import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
import android.util.ArrayMap;
@@ -106,8 +107,9 @@ public class IntentFirewall {
}
}
- public IntentFirewall(AMSInterface ams) {
+ public IntentFirewall(AMSInterface ams, Handler handler) {
mAms = ams;
+ mHandler = new FirewallHandler(handler.getLooper());
File rulesDir = getRulesDir();
rulesDir.mkdirs();
@@ -531,7 +533,13 @@ public class IntentFirewall {
new ArrayMap<ComponentName, Rule[]>(0);
}
- final Handler mHandler = new Handler() {
+ final FirewallHandler mHandler;
+
+ private final class FirewallHandler extends Handler {
+ public FirewallHandler(Looper looper) {
+ super(looper, null, true);
+ }
+
@Override
public void handleMessage(Message msg) {
readRulesDir(getRulesDir());
diff --git a/services/java/com/android/server/firewall/NotFilter.java b/services/core/java/com/android/server/firewall/NotFilter.java
index 09bf629a0df3..09bf629a0df3 100644
--- a/services/java/com/android/server/firewall/NotFilter.java
+++ b/services/core/java/com/android/server/firewall/NotFilter.java
diff --git a/services/java/com/android/server/firewall/OrFilter.java b/services/core/java/com/android/server/firewall/OrFilter.java
index f6a6f22278e4..f6a6f22278e4 100644
--- a/services/java/com/android/server/firewall/OrFilter.java
+++ b/services/core/java/com/android/server/firewall/OrFilter.java
diff --git a/services/java/com/android/server/firewall/PortFilter.java b/services/core/java/com/android/server/firewall/PortFilter.java
index 84ace553ee78..84ace553ee78 100644
--- a/services/java/com/android/server/firewall/PortFilter.java
+++ b/services/core/java/com/android/server/firewall/PortFilter.java
diff --git a/services/java/com/android/server/firewall/SenderFilter.java b/services/core/java/com/android/server/firewall/SenderFilter.java
index c0eee69b4b0d..c0eee69b4b0d 100644
--- a/services/java/com/android/server/firewall/SenderFilter.java
+++ b/services/core/java/com/android/server/firewall/SenderFilter.java
diff --git a/services/java/com/android/server/firewall/SenderPermissionFilter.java b/services/core/java/com/android/server/firewall/SenderPermissionFilter.java
index caa65f36157a..caa65f36157a 100644
--- a/services/java/com/android/server/firewall/SenderPermissionFilter.java
+++ b/services/core/java/com/android/server/firewall/SenderPermissionFilter.java
diff --git a/services/java/com/android/server/firewall/StringFilter.java b/services/core/java/com/android/server/firewall/StringFilter.java
index 28e99b372d54..28e99b372d54 100644
--- a/services/java/com/android/server/firewall/StringFilter.java
+++ b/services/core/java/com/android/server/firewall/StringFilter.java
diff --git a/services/java/com/android/server/input/InputApplicationHandle.java b/services/core/java/com/android/server/input/InputApplicationHandle.java
index 42c10526bcec..3cf7edcd6b2e 100644
--- a/services/java/com/android/server/input/InputApplicationHandle.java
+++ b/services/core/java/com/android/server/input/InputApplicationHandle.java
@@ -26,7 +26,7 @@ public final class InputApplicationHandle {
// Pointer to the native input application handle.
// This field is lazily initialized via JNI.
@SuppressWarnings("unused")
- private int ptr;
+ private long ptr;
// The window manager's application window token.
public final Object appWindowToken;
diff --git a/services/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index 31458056c7f5..e49382ea43e6 100644
--- a/services/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -16,11 +16,12 @@
package com.android.server.input;
+import android.view.Display;
import com.android.internal.R;
import com.android.internal.util.XmlUtils;
+import com.android.server.DisplayThread;
+import com.android.server.LocalServices;
import com.android.server.Watchdog;
-import com.android.server.display.DisplayManagerService;
-import com.android.server.display.DisplayViewport;
import org.xmlpull.v1.XmlPullParser;
@@ -44,9 +45,12 @@ import android.content.res.Resources.NotFoundException;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.database.ContentObserver;
+import android.hardware.display.DisplayViewport;
import android.hardware.input.IInputDevicesChangedListener;
import android.hardware.input.IInputManager;
+import android.hardware.input.InputDeviceIdentifier;
import android.hardware.input.InputManager;
+import android.hardware.input.InputManagerInternal;
import android.hardware.input.KeyboardLayout;
import android.os.Binder;
import android.os.Bundle;
@@ -94,7 +98,7 @@ import libcore.util.Objects;
* Wraps the C++ InputManager and provides its callbacks.
*/
public class InputManagerService extends IInputManager.Stub
- implements Watchdog.Monitor, DisplayManagerService.InputManagerFuncs {
+ implements Watchdog.Monitor {
static final String TAG = "InputManager";
static final boolean DEBUG = false;
@@ -107,7 +111,7 @@ public class InputManagerService extends IInputManager.Stub
private static final int MSG_RELOAD_DEVICE_ALIASES = 5;
// Pointer to native input manager service object.
- private final int mPtr;
+ private final long mPtr;
private final Context mContext;
private final InputManagerHandler mHandler;
@@ -146,46 +150,46 @@ public class InputManagerService extends IInputManager.Stub
IInputFilter mInputFilter; // guarded by mInputFilterLock
InputFilterHost mInputFilterHost; // guarded by mInputFilterLock
- private static native int nativeInit(InputManagerService service,
+ private static native long nativeInit(InputManagerService service,
Context context, MessageQueue messageQueue);
- private static native void nativeStart(int ptr);
- private static native void nativeSetDisplayViewport(int ptr, boolean external,
+ private static native void nativeStart(long ptr);
+ private static native void nativeSetDisplayViewport(long ptr, boolean external,
int displayId, int rotation,
int logicalLeft, int logicalTop, int logicalRight, int logicalBottom,
int physicalLeft, int physicalTop, int physicalRight, int physicalBottom,
int deviceWidth, int deviceHeight);
- private static native int nativeGetScanCodeState(int ptr,
+ private static native int nativeGetScanCodeState(long ptr,
int deviceId, int sourceMask, int scanCode);
- private static native int nativeGetKeyCodeState(int ptr,
+ private static native int nativeGetKeyCodeState(long ptr,
int deviceId, int sourceMask, int keyCode);
- private static native int nativeGetSwitchState(int ptr,
+ private static native int nativeGetSwitchState(long ptr,
int deviceId, int sourceMask, int sw);
- private static native boolean nativeHasKeys(int ptr,
+ private static native boolean nativeHasKeys(long ptr,
int deviceId, int sourceMask, int[] keyCodes, boolean[] keyExists);
- private static native void nativeRegisterInputChannel(int ptr, InputChannel inputChannel,
+ private static native void nativeRegisterInputChannel(long ptr, InputChannel inputChannel,
InputWindowHandle inputWindowHandle, boolean monitor);
- private static native void nativeUnregisterInputChannel(int ptr, InputChannel inputChannel);
- private static native void nativeSetInputFilterEnabled(int ptr, boolean enable);
- private static native int nativeInjectInputEvent(int ptr, InputEvent event,
+ private static native void nativeUnregisterInputChannel(long ptr, InputChannel inputChannel);
+ private static native void nativeSetInputFilterEnabled(long ptr, boolean enable);
+ private static native int nativeInjectInputEvent(long ptr, InputEvent event, int displayId,
int injectorPid, int injectorUid, int syncMode, int timeoutMillis,
int policyFlags);
- private static native void nativeSetInputWindows(int ptr, InputWindowHandle[] windowHandles);
- private static native void nativeSetInputDispatchMode(int ptr, boolean enabled, boolean frozen);
- private static native void nativeSetSystemUiVisibility(int ptr, int visibility);
- private static native void nativeSetFocusedApplication(int ptr,
+ private static native void nativeSetInputWindows(long ptr, InputWindowHandle[] windowHandles);
+ private static native void nativeSetInputDispatchMode(long ptr, boolean enabled, boolean frozen);
+ private static native void nativeSetSystemUiVisibility(long ptr, int visibility);
+ private static native void nativeSetFocusedApplication(long ptr,
InputApplicationHandle application);
- private static native boolean nativeTransferTouchFocus(int ptr,
+ private static native boolean nativeTransferTouchFocus(long ptr,
InputChannel fromChannel, InputChannel toChannel);
- private static native void nativeSetPointerSpeed(int ptr, int speed);
- private static native void nativeSetShowTouches(int ptr, boolean enabled);
- private static native void nativeVibrate(int ptr, int deviceId, long[] pattern,
+ private static native void nativeSetPointerSpeed(long ptr, int speed);
+ private static native void nativeSetShowTouches(long ptr, boolean enabled);
+ private static native void nativeVibrate(long ptr, int deviceId, long[] pattern,
int repeat, int token);
- private static native void nativeCancelVibrate(int ptr, int deviceId, int token);
- private static native void nativeReloadKeyboardLayouts(int ptr);
- private static native void nativeReloadDeviceAliases(int ptr);
- private static native String nativeDump(int ptr);
- private static native void nativeMonitor(int ptr);
+ private static native void nativeCancelVibrate(long ptr, int deviceId, int token);
+ private static native void nativeReloadKeyboardLayouts(long ptr);
+ private static native void nativeReloadDeviceAliases(long ptr);
+ private static native String nativeDump(long ptr);
+ private static native void nativeMonitor(long ptr);
// Input event injection constants defined in InputDispatcher.h.
private static final int INPUT_EVENT_INJECTION_SUCCEEDED = 0;
@@ -241,15 +245,17 @@ public class InputManagerService extends IInputManager.Stub
/** Whether to use the dev/input/event or uevent subsystem for the audio jack. */
final boolean mUseDevInputEventForAudioJack;
- public InputManagerService(Context context, Handler handler) {
+ public InputManagerService(Context context) {
this.mContext = context;
- this.mHandler = new InputManagerHandler(handler.getLooper());
+ this.mHandler = new InputManagerHandler(DisplayThread.get().getLooper());
mUseDevInputEventForAudioJack =
context.getResources().getBoolean(R.bool.config_useDevInputEventForAudioJack);
Slog.i(TAG, "Initializing input manager, mUseDevInputEventForAudioJack="
+ mUseDevInputEventForAudioJack);
mPtr = nativeInit(this, mContext, mHandler.getLooper().getQueue());
+
+ LocalServices.addService(InputManagerInternal.class, new LocalService());
}
public void setWindowManagerCallbacks(WindowManagerCallbacks callbacks) {
@@ -329,8 +335,7 @@ public class InputManagerService extends IInputManager.Stub
nativeReloadDeviceAliases(mPtr);
}
- @Override
- public void setDisplayViewports(DisplayViewport defaultViewport,
+ private void setDisplayViewportsInternal(DisplayViewport defaultViewport,
DisplayViewport externalTouchViewport) {
if (defaultViewport.valid) {
setDisplayViewport(false, defaultViewport);
@@ -378,7 +383,7 @@ public class InputManagerService extends IInputManager.Stub
public int getScanCodeState(int deviceId, int sourceMask, int scanCode) {
return nativeGetScanCodeState(mPtr, deviceId, sourceMask, scanCode);
}
-
+
/**
* Gets the current state of a switch by switch code.
* @param deviceId The input device id, or -1 to consult all devices.
@@ -413,10 +418,10 @@ public class InputManagerService extends IInputManager.Stub
throw new IllegalArgumentException("keyExists must not be null and must be at "
+ "least as large as keyCodes.");
}
-
+
return nativeHasKeys(mPtr, deviceId, sourceMask, keyCodes, keyExists);
}
-
+
/**
* Creates an input channel that will receive all input from the input dispatcher.
* @param inputChannelName The input channel name.
@@ -426,7 +431,7 @@ public class InputManagerService extends IInputManager.Stub
if (inputChannelName == null) {
throw new IllegalArgumentException("inputChannelName must not be null.");
}
-
+
InputChannel[] inputChannels = InputChannel.openInputChannelPair(inputChannelName);
nativeRegisterInputChannel(mPtr, inputChannels[0], null, true);
inputChannels[0].dispose(); // don't need to retain the Java object reference
@@ -444,10 +449,10 @@ public class InputManagerService extends IInputManager.Stub
if (inputChannel == null) {
throw new IllegalArgumentException("inputChannel must not be null.");
}
-
+
nativeRegisterInputChannel(mPtr, inputChannel, inputWindowHandle, false);
}
-
+
/**
* Unregisters an input channel.
* @param inputChannel The input channel to unregister.
@@ -456,7 +461,7 @@ public class InputManagerService extends IInputManager.Stub
if (inputChannel == null) {
throw new IllegalArgumentException("inputChannel must not be null.");
}
-
+
nativeUnregisterInputChannel(mPtr, inputChannel);
}
@@ -505,6 +510,10 @@ public class InputManagerService extends IInputManager.Stub
@Override // Binder call
public boolean injectInputEvent(InputEvent event, int mode) {
+ return injectInputEventInternal(event, Display.DEFAULT_DISPLAY, mode);
+ }
+
+ private boolean injectInputEventInternal(InputEvent event, int displayId, int mode) {
if (event == null) {
throw new IllegalArgumentException("event must not be null");
}
@@ -519,7 +528,7 @@ public class InputManagerService extends IInputManager.Stub
final long ident = Binder.clearCallingIdentity();
final int result;
try {
- result = nativeInjectInputEvent(mPtr, event, pid, uid, mode,
+ result = nativeInjectInputEvent(mPtr, event, displayId, pid, uid, mode,
INJECTION_TIMEOUT_MILLIS, WindowManagerPolicy.FLAG_DISABLE_KEY_REPEAT);
} finally {
Binder.restoreCallingIdentity(ident);
@@ -894,35 +903,62 @@ public class InputManagerService extends IInputManager.Stub
}
}
- @Override // Binder call
- public String getCurrentKeyboardLayoutForInputDevice(String inputDeviceDescriptor) {
- if (inputDeviceDescriptor == null) {
- throw new IllegalArgumentException("inputDeviceDescriptor must not be null");
+ /**
+ * Builds a layout descriptor for the vendor/product. This returns the
+ * descriptor for ids that aren't useful (such as the default 0, 0).
+ */
+ private String getLayoutDescriptor(InputDeviceIdentifier identifier) {
+ if (identifier == null || identifier.getDescriptor() == null) {
+ throw new IllegalArgumentException("identifier and descriptor must not be null");
}
+ if (identifier.getVendorId() == 0 && identifier.getProductId() == 0) {
+ return identifier.getDescriptor();
+ }
+ StringBuilder bob = new StringBuilder();
+ bob.append("vendor:").append(identifier.getVendorId());
+ bob.append(",product:").append(identifier.getProductId());
+ return bob.toString();
+ }
+
+ @Override // Binder call
+ public String getCurrentKeyboardLayoutForInputDevice(InputDeviceIdentifier identifier) {
+
+ String key = getLayoutDescriptor(identifier);
synchronized (mDataStore) {
- return mDataStore.getCurrentKeyboardLayout(inputDeviceDescriptor);
+ String layout = null;
+ // try loading it using the layout descriptor if we have it
+ layout = mDataStore.getCurrentKeyboardLayout(key);
+ if (layout == null && !key.equals(identifier.getDescriptor())) {
+ // if it doesn't exist fall back to the device descriptor
+ layout = mDataStore.getCurrentKeyboardLayout(identifier.getDescriptor());
+ }
+ if (DEBUG) {
+ Slog.d(TAG, "Loaded keyboard layout id for " + key + " and got "
+ + layout);
+ }
+ return layout;
}
}
@Override // Binder call
- public void setCurrentKeyboardLayoutForInputDevice(String inputDeviceDescriptor,
+ public void setCurrentKeyboardLayoutForInputDevice(InputDeviceIdentifier identifier,
String keyboardLayoutDescriptor) {
if (!checkCallingPermission(android.Manifest.permission.SET_KEYBOARD_LAYOUT,
"setCurrentKeyboardLayoutForInputDevice()")) {
throw new SecurityException("Requires SET_KEYBOARD_LAYOUT permission");
}
- if (inputDeviceDescriptor == null) {
- throw new IllegalArgumentException("inputDeviceDescriptor must not be null");
- }
if (keyboardLayoutDescriptor == null) {
throw new IllegalArgumentException("keyboardLayoutDescriptor must not be null");
}
+ String key = getLayoutDescriptor(identifier);
synchronized (mDataStore) {
try {
- if (mDataStore.setCurrentKeyboardLayout(
- inputDeviceDescriptor, keyboardLayoutDescriptor)) {
+ if (mDataStore.setCurrentKeyboardLayout(key, keyboardLayoutDescriptor)) {
+ if (DEBUG) {
+ Slog.d(TAG, "Saved keyboard layout using " + key);
+ }
mHandler.sendEmptyMessage(MSG_RELOAD_KEYBOARD_LAYOUTS);
}
} finally {
@@ -932,36 +968,39 @@ public class InputManagerService extends IInputManager.Stub
}
@Override // Binder call
- public String[] getKeyboardLayoutsForInputDevice(String inputDeviceDescriptor) {
- if (inputDeviceDescriptor == null) {
- throw new IllegalArgumentException("inputDeviceDescriptor must not be null");
- }
-
+ public String[] getKeyboardLayoutsForInputDevice(InputDeviceIdentifier identifier) {
+ String key = getLayoutDescriptor(identifier);
synchronized (mDataStore) {
- return mDataStore.getKeyboardLayouts(inputDeviceDescriptor);
+ String[] layouts = mDataStore.getKeyboardLayouts(key);
+ if ((layouts == null || layouts.length == 0)
+ && !key.equals(identifier.getDescriptor())) {
+ layouts = mDataStore.getKeyboardLayouts(identifier.getDescriptor());
+ }
+ return layouts;
}
}
@Override // Binder call
- public void addKeyboardLayoutForInputDevice(String inputDeviceDescriptor,
+ public void addKeyboardLayoutForInputDevice(InputDeviceIdentifier identifier,
String keyboardLayoutDescriptor) {
if (!checkCallingPermission(android.Manifest.permission.SET_KEYBOARD_LAYOUT,
"addKeyboardLayoutForInputDevice()")) {
throw new SecurityException("Requires SET_KEYBOARD_LAYOUT permission");
}
- if (inputDeviceDescriptor == null) {
- throw new IllegalArgumentException("inputDeviceDescriptor must not be null");
- }
if (keyboardLayoutDescriptor == null) {
throw new IllegalArgumentException("keyboardLayoutDescriptor must not be null");
}
+ String key = getLayoutDescriptor(identifier);
synchronized (mDataStore) {
try {
- String oldLayout = mDataStore.getCurrentKeyboardLayout(inputDeviceDescriptor);
- if (mDataStore.addKeyboardLayout(inputDeviceDescriptor, keyboardLayoutDescriptor)
+ String oldLayout = mDataStore.getCurrentKeyboardLayout(key);
+ if (oldLayout == null && !key.equals(identifier.getDescriptor())) {
+ oldLayout = mDataStore.getCurrentKeyboardLayout(identifier.getDescriptor());
+ }
+ if (mDataStore.addKeyboardLayout(key, keyboardLayoutDescriptor)
&& !Objects.equal(oldLayout,
- mDataStore.getCurrentKeyboardLayout(inputDeviceDescriptor))) {
+ mDataStore.getCurrentKeyboardLayout(key))) {
mHandler.sendEmptyMessage(MSG_RELOAD_KEYBOARD_LAYOUTS);
}
} finally {
@@ -971,26 +1010,31 @@ public class InputManagerService extends IInputManager.Stub
}
@Override // Binder call
- public void removeKeyboardLayoutForInputDevice(String inputDeviceDescriptor,
+ public void removeKeyboardLayoutForInputDevice(InputDeviceIdentifier identifier,
String keyboardLayoutDescriptor) {
if (!checkCallingPermission(android.Manifest.permission.SET_KEYBOARD_LAYOUT,
"removeKeyboardLayoutForInputDevice()")) {
throw new SecurityException("Requires SET_KEYBOARD_LAYOUT permission");
}
- if (inputDeviceDescriptor == null) {
- throw new IllegalArgumentException("inputDeviceDescriptor must not be null");
- }
if (keyboardLayoutDescriptor == null) {
throw new IllegalArgumentException("keyboardLayoutDescriptor must not be null");
}
+ String key = getLayoutDescriptor(identifier);
synchronized (mDataStore) {
try {
- String oldLayout = mDataStore.getCurrentKeyboardLayout(inputDeviceDescriptor);
- if (mDataStore.removeKeyboardLayout(inputDeviceDescriptor,
- keyboardLayoutDescriptor)
- && !Objects.equal(oldLayout,
- mDataStore.getCurrentKeyboardLayout(inputDeviceDescriptor))) {
+ String oldLayout = mDataStore.getCurrentKeyboardLayout(key);
+ if (oldLayout == null && !key.equals(identifier.getDescriptor())) {
+ oldLayout = mDataStore.getCurrentKeyboardLayout(identifier.getDescriptor());
+ }
+ boolean removed = mDataStore.removeKeyboardLayout(key, keyboardLayoutDescriptor);
+ if (!key.equals(identifier.getDescriptor())) {
+ // We need to remove from both places to ensure it is gone
+ removed |= mDataStore.removeKeyboardLayout(identifier.getDescriptor(),
+ keyboardLayoutDescriptor);
+ }
+ if (removed && !Objects.equal(oldLayout,
+ mDataStore.getCurrentKeyboardLayout(key))) {
mHandler.sendEmptyMessage(MSG_RELOAD_KEYBOARD_LAYOUTS);
}
} finally {
@@ -1007,14 +1051,15 @@ public class InputManagerService extends IInputManager.Stub
private void handleSwitchKeyboardLayout(int deviceId, int direction) {
final InputDevice device = getInputDevice(deviceId);
if (device != null) {
- final String inputDeviceDescriptor = device.getDescriptor();
final boolean changed;
final String keyboardLayoutDescriptor;
+
+ String key = getLayoutDescriptor(device.getIdentifier());
synchronized (mDataStore) {
try {
- changed = mDataStore.switchKeyboardLayout(inputDeviceDescriptor, direction);
+ changed = mDataStore.switchKeyboardLayout(key, direction);
keyboardLayoutDescriptor = mDataStore.getCurrentKeyboardLayout(
- inputDeviceDescriptor);
+ key);
} finally {
mDataStore.saveIfNeeded();
}
@@ -1042,11 +1087,11 @@ public class InputManagerService extends IInputManager.Stub
public void setInputWindows(InputWindowHandle[] windowHandles) {
nativeSetInputWindows(mPtr, windowHandles);
}
-
+
public void setFocusedApplication(InputApplicationHandle application) {
nativeSetFocusedApplication(mPtr, application);
}
-
+
public void setInputDispatchMode(boolean enabled, boolean frozen) {
nativeSetInputDispatchMode(mPtr, enabled, frozen);
}
@@ -1321,8 +1366,9 @@ public class InputManagerService extends IInputManager.Stub
}
// Native callback.
- private int interceptMotionBeforeQueueingWhenScreenOff(int policyFlags) {
- return mWindowManagerCallbacks.interceptMotionBeforeQueueingWhenScreenOff(policyFlags);
+ private int interceptMotionBeforeQueueingWhenScreenOff(long whenNanos, int policyFlags) {
+ return mWindowManagerCallbacks.interceptMotionBeforeQueueingWhenScreenOff(
+ whenNanos, policyFlags);
}
// Native callback.
@@ -1426,13 +1472,12 @@ public class InputManagerService extends IInputManager.Stub
}
// Native callback.
- private String[] getKeyboardLayoutOverlay(String inputDeviceDescriptor) {
+ private String[] getKeyboardLayoutOverlay(InputDeviceIdentifier identifier) {
if (!mSystemReady) {
return null;
}
- String keyboardLayoutDescriptor = getCurrentKeyboardLayoutForInputDevice(
- inputDeviceDescriptor);
+ String keyboardLayoutDescriptor = getCurrentKeyboardLayoutForInputDevice(identifier);
if (keyboardLayoutDescriptor == null) {
return null;
}
@@ -1483,7 +1528,7 @@ public class InputManagerService extends IInputManager.Stub
public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags, boolean isScreenOn);
- public int interceptMotionBeforeQueueingWhenScreenOff(int policyFlags);
+ public int interceptMotionBeforeQueueingWhenScreenOff(long whenNanos, int policyFlags);
public long interceptKeyBeforeDispatching(InputWindowHandle focus,
KeyEvent event, int policyFlags);
@@ -1549,7 +1594,7 @@ public class InputManagerService extends IInputManager.Stub
synchronized (mInputFilterLock) {
if (!mDisconnected) {
- nativeInjectInputEvent(mPtr, event, 0, 0,
+ nativeInjectInputEvent(mPtr, event, Display.DEFAULT_DISPLAY, 0, 0,
InputManager.INJECT_INPUT_EVENT_MODE_ASYNC, 0,
policyFlags | WindowManagerPolicy.FLAG_FILTERED);
}
@@ -1639,4 +1684,17 @@ public class InputManagerService extends IInputManager.Stub
onVibratorTokenDied(this);
}
}
+
+ private final class LocalService extends InputManagerInternal {
+ @Override
+ public void setDisplayViewports(
+ DisplayViewport defaultViewport, DisplayViewport externalTouchViewport) {
+ setDisplayViewportsInternal(defaultViewport, externalTouchViewport);
+ }
+
+ @Override
+ public boolean injectInputEvent(InputEvent event, int displayId, int mode) {
+ return injectInputEventInternal(event, displayId, mode);
+ }
+ }
}
diff --git a/services/java/com/android/server/input/InputWindowHandle.java b/services/core/java/com/android/server/input/InputWindowHandle.java
index 9eb9a3342f21..9a70f38ceac7 100644
--- a/services/java/com/android/server/input/InputWindowHandle.java
+++ b/services/core/java/com/android/server/input/InputWindowHandle.java
@@ -28,7 +28,7 @@ public final class InputWindowHandle {
// Pointer to the native input window handle.
// This field is lazily initialized via JNI.
@SuppressWarnings("unused")
- private int ptr;
+ private long ptr;
// The input application handle.
public final InputApplicationHandle inputApplicationHandle;
diff --git a/services/java/com/android/server/input/PersistentDataStore.java b/services/core/java/com/android/server/input/PersistentDataStore.java
index 71de776c081c..71de776c081c 100644
--- a/services/java/com/android/server/input/PersistentDataStore.java
+++ b/services/core/java/com/android/server/input/PersistentDataStore.java
diff --git a/services/core/java/com/android/server/lights/Light.java b/services/core/java/com/android/server/lights/Light.java
new file mode 100644
index 000000000000..b496b4c6ce8c
--- /dev/null
+++ b/services/core/java/com/android/server/lights/Light.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.lights;
+
+public abstract class Light {
+ public static final int LIGHT_FLASH_NONE = 0;
+ public static final int LIGHT_FLASH_TIMED = 1;
+ public static final int LIGHT_FLASH_HARDWARE = 2;
+
+ /**
+ * Light brightness is managed by a user setting.
+ */
+ public static final int BRIGHTNESS_MODE_USER = 0;
+
+ /**
+ * Light brightness is managed by a light sensor.
+ */
+ public static final int BRIGHTNESS_MODE_SENSOR = 1;
+
+ public abstract void setBrightness(int brightness);
+ public abstract void setBrightness(int brightness, int brightnessMode);
+ public abstract void setColor(int color);
+ public abstract void setFlashing(int color, int mode, int onMS, int offMS);
+ public abstract void pulse();
+ public abstract void pulse(int color, int onMS);
+ public abstract void turnOff();
+} \ No newline at end of file
diff --git a/services/core/java/com/android/server/lights/LightsManager.java b/services/core/java/com/android/server/lights/LightsManager.java
new file mode 100644
index 000000000000..2f20509dddf5
--- /dev/null
+++ b/services/core/java/com/android/server/lights/LightsManager.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.lights;
+
+public abstract class LightsManager {
+ public static final int LIGHT_ID_BACKLIGHT = 0;
+ public static final int LIGHT_ID_KEYBOARD = 1;
+ public static final int LIGHT_ID_BUTTONS = 2;
+ public static final int LIGHT_ID_BATTERY = 3;
+ public static final int LIGHT_ID_NOTIFICATIONS = 4;
+ public static final int LIGHT_ID_ATTENTION = 5;
+ public static final int LIGHT_ID_BLUETOOTH = 6;
+ public static final int LIGHT_ID_WIFI = 7;
+ public static final int LIGHT_ID_COUNT = 8;
+
+ public abstract Light getLight(int id);
+}
diff --git a/services/java/com/android/server/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
index 89bfcacd8cac..62c0ec9a2ce0 100644
--- a/services/java/com/android/server/LightsService.java
+++ b/services/core/java/com/android/server/lights/LightsService.java
@@ -14,59 +14,38 @@
* limitations under the License.
*/
-package com.android.server;
+package com.android.server.lights;
+
+import com.android.server.SystemService;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Handler;
import android.os.IHardwareService;
-import android.os.ServiceManager;
import android.os.Message;
import android.util.Slog;
import java.io.FileInputStream;
import java.io.FileOutputStream;
-public class LightsService {
- private static final String TAG = "LightsService";
- private static final boolean DEBUG = false;
-
- public static final int LIGHT_ID_BACKLIGHT = 0;
- public static final int LIGHT_ID_KEYBOARD = 1;
- public static final int LIGHT_ID_BUTTONS = 2;
- public static final int LIGHT_ID_BATTERY = 3;
- public static final int LIGHT_ID_NOTIFICATIONS = 4;
- public static final int LIGHT_ID_ATTENTION = 5;
- public static final int LIGHT_ID_BLUETOOTH = 6;
- public static final int LIGHT_ID_WIFI = 7;
- public static final int LIGHT_ID_COUNT = 8;
-
- public static final int LIGHT_FLASH_NONE = 0;
- public static final int LIGHT_FLASH_TIMED = 1;
- public static final int LIGHT_FLASH_HARDWARE = 2;
-
- /**
- * Light brightness is managed by a user setting.
- */
- public static final int BRIGHTNESS_MODE_USER = 0;
-
- /**
- * Light brightness is managed by a light sensor.
- */
- public static final int BRIGHTNESS_MODE_SENSOR = 1;
+public class LightsService extends SystemService {
+ static final String TAG = "LightsService";
+ static final boolean DEBUG = false;
- private final Light mLights[] = new Light[LIGHT_ID_COUNT];
+ final LightImpl mLights[] = new LightImpl[LightsManager.LIGHT_ID_COUNT];
- public final class Light {
+ private final class LightImpl extends Light {
- private Light(int id) {
+ private LightImpl(int id) {
mId = id;
}
+ @Override
public void setBrightness(int brightness) {
setBrightness(brightness, BRIGHTNESS_MODE_USER);
}
+ @Override
public void setBrightness(int brightness, int brightnessMode) {
synchronized (this) {
int color = brightness & 0x000000ff;
@@ -75,23 +54,26 @@ public class LightsService {
}
}
+ @Override
public void setColor(int color) {
synchronized (this) {
setLightLocked(color, LIGHT_FLASH_NONE, 0, 0, 0);
}
}
+ @Override
public void setFlashing(int color, int mode, int onMS, int offMS) {
synchronized (this) {
setLightLocked(color, mode, onMS, offMS, BRIGHTNESS_MODE_USER);
}
}
-
+ @Override
public void pulse() {
pulse(0x00ffffff, 7);
}
+ @Override
public void pulse(int color, int onMS) {
synchronized (this) {
if (mColor == 0 && !mFlashing) {
@@ -101,6 +83,7 @@ public class LightsService {
}
}
+ @Override
public void turnOff() {
synchronized (this) {
setLightLocked(0, LIGHT_FLASH_NONE, 0, 0, 0);
@@ -153,9 +136,10 @@ public class LightsService {
}
public void setFlashlightEnabled(boolean on) {
- if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.FLASHLIGHT)
+ final Context context = getContext();
+ if (context.checkCallingOrSelfPermission(android.Manifest.permission.FLASHLIGHT)
!= PackageManager.PERMISSION_GRANTED &&
- mContext.checkCallingOrSelfPermission(android.Manifest.permission.HARDWARE_TEST)
+ context.checkCallingOrSelfPermission(android.Manifest.permission.HARDWARE_TEST)
!= PackageManager.PERMISSION_GRANTED) {
throw new SecurityException("Requires FLASHLIGHT or HARDWARE_TEST permission");
}
@@ -172,42 +156,52 @@ public class LightsService {
}
};
- LightsService(Context context) {
+ public LightsService(Context context) {
+ super(context);
mNativePointer = init_native();
- mContext = context;
- ServiceManager.addService("hardware", mLegacyFlashlightHack);
-
- for (int i = 0; i < LIGHT_ID_COUNT; i++) {
- mLights[i] = new Light(i);
+ for (int i = 0; i < LightsManager.LIGHT_ID_COUNT; i++) {
+ mLights[i] = new LightImpl(i);
}
}
+ @Override
+ public void onStart() {
+ publishBinderService("hardware", mLegacyFlashlightHack);
+ publishLocalService(LightsManager.class, mService);
+ }
+
+ private final LightsManager mService = new LightsManager() {
+ @Override
+ public com.android.server.lights.Light getLight(int id) {
+ if (id < LIGHT_ID_COUNT) {
+ return mLights[id];
+ } else {
+ return null;
+ }
+ }
+ };
+
+ @Override
protected void finalize() throws Throwable {
finalize_native(mNativePointer);
super.finalize();
}
- public Light getLight(int id) {
- return mLights[id];
- }
-
private Handler mH = new Handler() {
@Override
public void handleMessage(Message msg) {
- Light light = (Light)msg.obj;
+ LightImpl light = (LightImpl)msg.obj;
light.stopFlashing();
}
};
- private static native int init_native();
- private static native void finalize_native(int ptr);
+ private static native long init_native();
+ private static native void finalize_native(long ptr);
- private static native void setLight_native(int ptr, int light, int color, int mode,
+ static native void setLight_native(long ptr, int light, int color, int mode,
int onMS, int offMS, int brightnessMode);
- private final Context mContext;
-
- private int mNativePointer;
+ private long mNativePointer;
}
diff --git a/services/java/com/android/server/location/ComprehensiveCountryDetector.java b/services/core/java/com/android/server/location/ComprehensiveCountryDetector.java
index 354858b15368..354858b15368 100644
--- a/services/java/com/android/server/location/ComprehensiveCountryDetector.java
+++ b/services/core/java/com/android/server/location/ComprehensiveCountryDetector.java
diff --git a/services/java/com/android/server/location/CountryDetectorBase.java b/services/core/java/com/android/server/location/CountryDetectorBase.java
index 8326ef949858..8326ef949858 100644
--- a/services/java/com/android/server/location/CountryDetectorBase.java
+++ b/services/core/java/com/android/server/location/CountryDetectorBase.java
diff --git a/services/java/com/android/server/location/FlpHardwareProvider.java b/services/core/java/com/android/server/location/FlpHardwareProvider.java
index fab84a85ae0c..fab84a85ae0c 100644
--- a/services/java/com/android/server/location/FlpHardwareProvider.java
+++ b/services/core/java/com/android/server/location/FlpHardwareProvider.java
diff --git a/services/java/com/android/server/location/FusedLocationHardwareSecure.java b/services/core/java/com/android/server/location/FusedLocationHardwareSecure.java
index 389bd2477c84..389bd2477c84 100644
--- a/services/java/com/android/server/location/FusedLocationHardwareSecure.java
+++ b/services/core/java/com/android/server/location/FusedLocationHardwareSecure.java
diff --git a/services/java/com/android/server/location/FusedProxy.java b/services/core/java/com/android/server/location/FusedProxy.java
index f7fac774c979..f7fac774c979 100644
--- a/services/java/com/android/server/location/FusedProxy.java
+++ b/services/core/java/com/android/server/location/FusedProxy.java
diff --git a/services/java/com/android/server/location/GeocoderProxy.java b/services/core/java/com/android/server/location/GeocoderProxy.java
index 5d4a7701fbfb..5d4a7701fbfb 100644
--- a/services/java/com/android/server/location/GeocoderProxy.java
+++ b/services/core/java/com/android/server/location/GeocoderProxy.java
diff --git a/services/java/com/android/server/location/GeofenceManager.java b/services/core/java/com/android/server/location/GeofenceManager.java
index e24bf7620fe3..e24bf7620fe3 100644
--- a/services/java/com/android/server/location/GeofenceManager.java
+++ b/services/core/java/com/android/server/location/GeofenceManager.java
diff --git a/services/java/com/android/server/location/GeofenceProxy.java b/services/core/java/com/android/server/location/GeofenceProxy.java
index bbc1f472387f..bbc1f472387f 100644
--- a/services/java/com/android/server/location/GeofenceProxy.java
+++ b/services/core/java/com/android/server/location/GeofenceProxy.java
diff --git a/services/java/com/android/server/location/GeofenceState.java b/services/core/java/com/android/server/location/GeofenceState.java
index 3ebe20a7e8e6..3ebe20a7e8e6 100644
--- a/services/java/com/android/server/location/GeofenceState.java
+++ b/services/core/java/com/android/server/location/GeofenceState.java
diff --git a/services/java/com/android/server/location/GpsLocationProvider.java b/services/core/java/com/android/server/location/GpsLocationProvider.java
index 9c76c19051e8..9c76c19051e8 100644
--- a/services/java/com/android/server/location/GpsLocationProvider.java
+++ b/services/core/java/com/android/server/location/GpsLocationProvider.java
diff --git a/services/java/com/android/server/location/GpsXtraDownloader.java b/services/core/java/com/android/server/location/GpsXtraDownloader.java
index e4200736fd8e..e4200736fd8e 100644
--- a/services/java/com/android/server/location/GpsXtraDownloader.java
+++ b/services/core/java/com/android/server/location/GpsXtraDownloader.java
diff --git a/services/java/com/android/server/location/LocationBasedCountryDetector.java b/services/core/java/com/android/server/location/LocationBasedCountryDetector.java
index 03db621c03a8..03db621c03a8 100644
--- a/services/java/com/android/server/location/LocationBasedCountryDetector.java
+++ b/services/core/java/com/android/server/location/LocationBasedCountryDetector.java
diff --git a/services/java/com/android/server/location/LocationBlacklist.java b/services/core/java/com/android/server/location/LocationBlacklist.java
index 6f22689320ca..6f22689320ca 100644
--- a/services/java/com/android/server/location/LocationBlacklist.java
+++ b/services/core/java/com/android/server/location/LocationBlacklist.java
diff --git a/services/java/com/android/server/location/LocationFudger.java b/services/core/java/com/android/server/location/LocationFudger.java
index 2a68743c578d..2a68743c578d 100644
--- a/services/java/com/android/server/location/LocationFudger.java
+++ b/services/core/java/com/android/server/location/LocationFudger.java
diff --git a/services/java/com/android/server/location/LocationProviderInterface.java b/services/core/java/com/android/server/location/LocationProviderInterface.java
index 6f0923233e19..6f0923233e19 100644
--- a/services/java/com/android/server/location/LocationProviderInterface.java
+++ b/services/core/java/com/android/server/location/LocationProviderInterface.java
diff --git a/services/java/com/android/server/location/LocationProviderProxy.java b/services/core/java/com/android/server/location/LocationProviderProxy.java
index 14db862065e3..14db862065e3 100644
--- a/services/java/com/android/server/location/LocationProviderProxy.java
+++ b/services/core/java/com/android/server/location/LocationProviderProxy.java
diff --git a/services/java/com/android/server/location/MockProvider.java b/services/core/java/com/android/server/location/MockProvider.java
index 36c43ff1ce1d..36c43ff1ce1d 100644
--- a/services/java/com/android/server/location/MockProvider.java
+++ b/services/core/java/com/android/server/location/MockProvider.java
diff --git a/services/java/com/android/server/location/PassiveProvider.java b/services/core/java/com/android/server/location/PassiveProvider.java
index 71bae07680a3..71bae07680a3 100644
--- a/services/java/com/android/server/location/PassiveProvider.java
+++ b/services/core/java/com/android/server/location/PassiveProvider.java
diff --git a/services/java/com/android/server/media/MediaRouterService.java b/services/core/java/com/android/server/media/MediaRouterService.java
index a31695b885b2..f91ea8c03a39 100644
--- a/services/java/com/android/server/media/MediaRouterService.java
+++ b/services/core/java/com/android/server/media/MediaRouterService.java
@@ -16,7 +16,6 @@
package com.android.server.media;
-import com.android.internal.util.Objects;
import com.android.server.Watchdog;
import android.Manifest;
@@ -52,6 +51,7 @@ import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Objects;
/**
* Provides a mechanism for discovering media routes and manages media playback
@@ -384,7 +384,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub
ClientRecord clientRecord = mAllClientRecords.get(client.asBinder());
if (clientRecord != null) {
final String oldRouteId = clientRecord.mSelectedRouteId;
- if (!Objects.equal(routeId, oldRouteId)) {
+ if (!Objects.equals(routeId, oldRouteId)) {
if (DEBUG) {
Slog.d(TAG, clientRecord + ": Set selected route, routeId=" + routeId
+ ", oldRouteId=" + oldRouteId
@@ -1257,12 +1257,12 @@ public final class MediaRouterService extends IMediaRouterService.Stub
mDescriptor = descriptor;
if (descriptor != null) {
final String name = computeName(descriptor);
- if (!Objects.equal(mMutableInfo.name, name)) {
+ if (!Objects.equals(mMutableInfo.name, name)) {
mMutableInfo.name = name;
changed = true;
}
final String description = computeDescription(descriptor);
- if (!Objects.equal(mMutableInfo.description, description)) {
+ if (!Objects.equals(mMutableInfo.description, description)) {
mMutableInfo.description = description;
changed = true;
}
diff --git a/services/java/com/android/server/media/RemoteDisplayProviderProxy.java b/services/core/java/com/android/server/media/RemoteDisplayProviderProxy.java
index b248ee0759d8..a5fe9f2ceb39 100644
--- a/services/java/com/android/server/media/RemoteDisplayProviderProxy.java
+++ b/services/core/java/com/android/server/media/RemoteDisplayProviderProxy.java
@@ -16,8 +16,6 @@
package com.android.server.media;
-import com.android.internal.util.Objects;
-
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -35,6 +33,7 @@ import android.util.Slog;
import java.io.PrintWriter;
import java.lang.ref.WeakReference;
+import java.util.Objects;
/**
* Maintains a connection to a particular remote display provider service.
@@ -101,7 +100,7 @@ final class RemoteDisplayProviderProxy implements ServiceConnection {
}
public void setSelectedDisplay(String id) {
- if (!Objects.equal(mSelectedDisplayId, id)) {
+ if (!Objects.equals(mSelectedDisplayId, id)) {
if (mConnectionReady && mSelectedDisplayId != null) {
mActiveConnection.disconnect(mSelectedDisplayId);
}
@@ -293,7 +292,7 @@ final class RemoteDisplayProviderProxy implements ServiceConnection {
}
private void setDisplayState(RemoteDisplayState state) {
- if (!Objects.equal(mDisplayState, state)) {
+ if (!Objects.equals(mDisplayState, state)) {
mDisplayState = state;
if (!mScheduledDisplayStateChangedCallback) {
mScheduledDisplayStateChangedCallback = true;
diff --git a/services/java/com/android/server/media/RemoteDisplayProviderWatcher.java b/services/core/java/com/android/server/media/RemoteDisplayProviderWatcher.java
index 6a5f563683a3..6a5f563683a3 100644
--- a/services/java/com/android/server/media/RemoteDisplayProviderWatcher.java
+++ b/services/core/java/com/android/server/media/RemoteDisplayProviderWatcher.java
diff --git a/services/java/com/android/server/net/LockdownVpnTracker.java b/services/core/java/com/android/server/net/LockdownVpnTracker.java
index a2e9d6768696..a2e9d6768696 100644
--- a/services/java/com/android/server/net/LockdownVpnTracker.java
+++ b/services/core/java/com/android/server/net/LockdownVpnTracker.java
diff --git a/services/java/com/android/server/net/NetworkIdentitySet.java b/services/core/java/com/android/server/net/NetworkIdentitySet.java
index 397f9f41d8a0..397f9f41d8a0 100644
--- a/services/java/com/android/server/net/NetworkIdentitySet.java
+++ b/services/core/java/com/android/server/net/NetworkIdentitySet.java
diff --git a/services/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index d568b11c70a1..eb7cc4c89e4d 100644
--- a/services/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -133,7 +133,6 @@ import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.IndentingPrintWriter;
-import com.android.internal.util.Objects;
import com.google.android.collect.Lists;
import com.google.android.collect.Maps;
import com.google.android.collect.Sets;
@@ -155,6 +154,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import libcore.io.IoUtils;
@@ -688,7 +688,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
// mobile templates are relevant when SIM is ready and
// subscriberId matches.
if (tele.getSimState() == SIM_STATE_READY) {
- return Objects.equal(tele.getSubscriberId(), template.getSubscriberId());
+ return Objects.equals(tele.getSubscriberId(), template.getSubscriberId());
} else {
return false;
}
@@ -946,7 +946,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
// TODO: offer more granular control over radio states once
// 4965893 is available.
if (tele.getSimState() == SIM_STATE_READY
- && Objects.equal(tele.getSubscriberId(), template.getSubscriberId())) {
+ && Objects.equals(tele.getSubscriberId(), template.getSubscriberId())) {
setPolicyDataEnable(TYPE_MOBILE, enabled);
setPolicyDataEnable(TYPE_WIMAX, enabled);
}
diff --git a/services/java/com/android/server/net/NetworkStatsCollection.java b/services/core/java/com/android/server/net/NetworkStatsCollection.java
index 3169035786ec..475482f6dd0b 100644
--- a/services/java/com/android/server/net/NetworkStatsCollection.java
+++ b/services/core/java/com/android/server/net/NetworkStatsCollection.java
@@ -34,7 +34,6 @@ import android.util.AtomicFile;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.FileRotator;
import com.android.internal.util.IndentingPrintWriter;
-import com.android.internal.util.Objects;
import com.google.android.collect.Lists;
import com.google.android.collect.Maps;
@@ -50,6 +49,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
import libcore.io.IoUtils;
@@ -508,7 +508,7 @@ public class NetworkStatsCollection implements FileRotator.Reader {
this.uid = uid;
this.set = set;
this.tag = tag;
- hashCode = Objects.hashCode(ident, uid, set, tag);
+ hashCode = Objects.hash(ident, uid, set, tag);
}
@Override
@@ -521,7 +521,7 @@ public class NetworkStatsCollection implements FileRotator.Reader {
if (obj instanceof Key) {
final Key key = (Key) obj;
return uid == key.uid && set == key.set && tag == key.tag
- && Objects.equal(ident, key.ident);
+ && Objects.equals(ident, key.ident);
}
return false;
}
diff --git a/services/java/com/android/server/net/NetworkStatsRecorder.java b/services/core/java/com/android/server/net/NetworkStatsRecorder.java
index cea084b51849..cea084b51849 100644
--- a/services/java/com/android/server/net/NetworkStatsRecorder.java
+++ b/services/core/java/com/android/server/net/NetworkStatsRecorder.java
diff --git a/services/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java
index 5d6adc22685e..5d6adc22685e 100644
--- a/services/java/com/android/server/net/NetworkStatsService.java
+++ b/services/core/java/com/android/server/net/NetworkStatsService.java
diff --git a/services/core/java/com/android/server/notification/NotificationDelegate.java b/services/core/java/com/android/server/notification/NotificationDelegate.java
new file mode 100644
index 000000000000..df2aaca49eca
--- /dev/null
+++ b/services/core/java/com/android/server/notification/NotificationDelegate.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.notification;
+
+public interface NotificationDelegate {
+ void onSetDisabled(int status);
+ void onClearAll();
+ void onNotificationClick(String pkg, String tag, int id);
+ void onNotificationClear(String pkg, String tag, int id);
+ void onNotificationError(String pkg, String tag, int id,
+ int uid, int initialPid, String message);
+ void onPanelRevealed();
+}
diff --git a/services/core/java/com/android/server/notification/NotificationManagerInternal.java b/services/core/java/com/android/server/notification/NotificationManagerInternal.java
new file mode 100644
index 000000000000..b695b6819b4f
--- /dev/null
+++ b/services/core/java/com/android/server/notification/NotificationManagerInternal.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.notification;
+
+import android.app.Notification;
+
+public interface NotificationManagerInternal {
+ void enqueueNotification(String pkg, String basePkg, int callingUid, int callingPid,
+ String tag, int id, Notification notification, int[] idReceived, int userId);
+}
diff --git a/services/java/com/android/server/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 04386759df50..bd4442e696f3 100644
--- a/services/java/com/android/server/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server;
+package com.android.server.notification;
import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT;
import static org.xmlpull.v1.XmlPullParser.END_TAG;
@@ -47,7 +47,6 @@ import android.content.res.Resources;
import android.database.ContentObserver;
import android.graphics.Bitmap;
import android.media.AudioManager;
-import android.media.IAudioService;
import android.media.IRingtonePlayer;
import android.net.Uri;
import android.os.Binder;
@@ -56,9 +55,7 @@ import android.os.IBinder;
import android.os.Message;
import android.os.Process;
import android.os.RemoteException;
-import android.os.ServiceManager;
import android.os.UserHandle;
-import android.os.UserManager;
import android.os.Vibrator;
import android.provider.Settings;
import android.service.notification.INotificationListener;
@@ -78,6 +75,12 @@ import android.widget.Toast;
import com.android.internal.R;
import com.android.internal.notification.NotificationScorer;
+import com.android.server.EventLogTags;
+import com.android.server.statusbar.StatusBarManagerInternal;
+import com.android.server.SystemService;
+import com.android.server.lights.Light;
+import com.android.server.lights.LightsManager;
+
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -99,66 +102,61 @@ import java.util.Set;
import libcore.io.IoUtils;
-
/** {@hide} */
-public class NotificationManagerService extends INotificationManager.Stub
-{
- private static final String TAG = "NotificationService";
- private static final boolean DBG = false;
+public class NotificationManagerService extends SystemService {
+ static final String TAG = "NotificationService";
+ static final boolean DBG = false;
- private static final int MAX_PACKAGE_NOTIFICATIONS = 50;
+ static final int MAX_PACKAGE_NOTIFICATIONS = 50;
// message codes
- private static final int MESSAGE_TIMEOUT = 2;
+ static final int MESSAGE_TIMEOUT = 2;
- private static final int LONG_DELAY = 3500; // 3.5 seconds
- private static final int SHORT_DELAY = 2000; // 2 seconds
+ static final int LONG_DELAY = 3500; // 3.5 seconds
+ static final int SHORT_DELAY = 2000; // 2 seconds
- private static final long[] DEFAULT_VIBRATE_PATTERN = {0, 250, 250, 250};
- private static final int VIBRATE_PATTERN_MAXLEN = 8 * 2 + 1; // up to eight bumps
+ static final long[] DEFAULT_VIBRATE_PATTERN = {0, 250, 250, 250};
+ static final int VIBRATE_PATTERN_MAXLEN = 8 * 2 + 1; // up to eight bumps
- private static final int DEFAULT_STREAM_TYPE = AudioManager.STREAM_NOTIFICATION;
- private static final boolean SCORE_ONGOING_HIGHER = false;
+ static final int DEFAULT_STREAM_TYPE = AudioManager.STREAM_NOTIFICATION;
+ static final boolean SCORE_ONGOING_HIGHER = false;
- private static final int JUNK_SCORE = -1000;
- private static final int NOTIFICATION_PRIORITY_MULTIPLIER = 10;
- private static final int SCORE_DISPLAY_THRESHOLD = Notification.PRIORITY_MIN * NOTIFICATION_PRIORITY_MULTIPLIER;
+ static final int JUNK_SCORE = -1000;
+ static final int NOTIFICATION_PRIORITY_MULTIPLIER = 10;
+ static final int SCORE_DISPLAY_THRESHOLD = Notification.PRIORITY_MIN * NOTIFICATION_PRIORITY_MULTIPLIER;
// Notifications with scores below this will not interrupt the user, either via LED or
// sound or vibration
- private static final int SCORE_INTERRUPTION_THRESHOLD =
+ static final int SCORE_INTERRUPTION_THRESHOLD =
Notification.PRIORITY_LOW * NOTIFICATION_PRIORITY_MULTIPLIER;
- private static final boolean ENABLE_BLOCKED_NOTIFICATIONS = true;
- private static final boolean ENABLE_BLOCKED_TOASTS = true;
+ static final boolean ENABLE_BLOCKED_NOTIFICATIONS = true;
+ static final boolean ENABLE_BLOCKED_TOASTS = true;
- private static final String ENABLED_NOTIFICATION_LISTENERS_SEPARATOR = ":";
+ static final String ENABLED_NOTIFICATION_LISTENERS_SEPARATOR = ":";
- final Context mContext;
- final IActivityManager mAm;
- final UserManager mUserManager;
- final IBinder mForegroundToken = new Binder();
+ private IActivityManager mAm;
+ AudioManager mAudioManager;
+ StatusBarManagerInternal mStatusBar;
+ Vibrator mVibrator;
+ final IBinder mForegroundToken = new Binder();
private WorkerHandler mHandler;
- private StatusBarManagerService mStatusBar;
- private LightsService.Light mNotificationLight;
- private LightsService.Light mAttentionLight;
+ private Light mNotificationLight;
+ Light mAttentionLight;
private int mDefaultNotificationColor;
private int mDefaultNotificationLedOn;
- private int mDefaultNotificationLedOff;
+ private int mDefaultNotificationLedOff;
private long[] mDefaultVibrationPattern;
- private long[] mFallbackVibrationPattern;
-
- private boolean mSystemReady;
- private int mDisabledNotifications;
- private NotificationRecord mSoundNotification;
- private NotificationRecord mVibrateNotification;
+ private long[] mFallbackVibrationPattern;
+ boolean mSystemReady;
- private IAudioService mAudioService;
- private Vibrator mVibrator;
+ int mDisabledNotifications;
+ NotificationRecord mSoundNotification;
+ NotificationRecord mVibrateNotification;
// for enabling and disabling notification pulse behavior
private boolean mScreenOn = true;
@@ -166,15 +164,15 @@ public class NotificationManagerService extends INotificationManager.Stub
private boolean mNotificationPulseEnabled;
// used as a mutex for access to all active notifications & listeners
- private final ArrayList<NotificationRecord> mNotificationList =
+ final ArrayList<NotificationRecord> mNotificationList =
new ArrayList<NotificationRecord>();
- private ArrayList<ToastRecord> mToastQueue;
+ final ArrayList<ToastRecord> mToastQueue = new ArrayList<ToastRecord>();
- private ArrayList<NotificationRecord> mLights = new ArrayList<NotificationRecord>();
- private NotificationRecord mLedNotification;
+ ArrayList<NotificationRecord> mLights = new ArrayList<NotificationRecord>();
+ NotificationRecord mLedNotification;
- private final AppOpsManager mAppOps;
+ private AppOpsManager mAppOps;
// contains connections to all connected listeners, including app services
// and system listeners
@@ -202,9 +200,9 @@ public class NotificationManagerService extends INotificationManager.Stub
private static final String TAG_PACKAGE = "package";
private static final String ATTR_NAME = "name";
- private final ArrayList<NotificationScorer> mScorers = new ArrayList<NotificationScorer>();
+ final ArrayList<NotificationScorer> mScorers = new ArrayList<NotificationScorer>();
- private class NotificationListenerInfo implements DeathRecipient {
+ private class NotificationListenerInfo implements IBinder.DeathRecipient {
INotificationListener listener;
ComponentName component;
int userid;
@@ -260,10 +258,11 @@ public class NotificationManagerService extends INotificationManager.Stub
@Override
public void binderDied() {
- if (connection == null) {
- // This is not a service; it won't be recreated. We can give up this connection.
- unregisterListener(this.listener, this.userid);
- }
+ // Remove the listener, but don't unbind from the service. The system will bring the
+ // service back up, and the onServiceConnected handler will readd the listener with the
+ // new binding. If this isn't a bound service, and is just a registered
+ // INotificationListener, just removing it from the list is all we need to do anyway.
+ removeListenerImpl(this.listener, this.userid);
}
/** convenience method for looking in mEnabledListenersForCurrentUser */
@@ -400,12 +399,14 @@ public class NotificationManagerService extends INotificationManager.Stub
tag = parser.getName();
if (type == START_TAG) {
if (TAG_BODY.equals(tag)) {
- version = Integer.parseInt(parser.getAttributeValue(null, ATTR_VERSION));
+ version = Integer.parseInt(
+ parser.getAttributeValue(null, ATTR_VERSION));
} else if (TAG_BLOCKED_PKGS.equals(tag)) {
while ((type = parser.next()) != END_DOCUMENT) {
tag = parser.getName();
if (TAG_PACKAGE.equals(tag)) {
- mBlockedPackages.add(parser.getAttributeValue(null, ATTR_NAME));
+ mBlockedPackages.add(
+ parser.getAttributeValue(null, ATTR_NAME));
} else if (TAG_BLOCKED_PKGS.equals(tag) && type == END_TAG) {
break;
}
@@ -428,15 +429,6 @@ public class NotificationManagerService extends INotificationManager.Stub
}
}
- /**
- * Use this when you just want to know if notifications are OK for this package.
- */
- public boolean areNotificationsEnabledForPackage(String pkg, int uid) {
- checkCallerIsSystem();
- return (mAppOps.checkOpNoThrow(AppOpsManager.OP_POST_NOTIFICATION, uid, pkg)
- == AppOpsManager.MODE_ALLOWED);
- }
-
/** Use this when you actually want to post a notification or toast.
*
* Unchecked. Not exposed via Binder, but can be called in the course of enqueue*().
@@ -450,21 +442,6 @@ public class NotificationManagerService extends INotificationManager.Stub
return true;
}
- public void setNotificationsEnabledForPackage(String pkg, int uid, boolean enabled) {
- checkCallerIsSystem();
-
- Slog.v(TAG, (enabled?"en":"dis") + "abling notifications for " + pkg);
-
- mAppOps.setMode(AppOpsManager.OP_POST_NOTIFICATION, uid, pkg,
- enabled ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED);
-
- // Now, cancel any outstanding notifications that are part of a just-disabled app
- if (ENABLE_BLOCKED_NOTIFICATIONS && !enabled) {
- cancelAllNotificationsInt(pkg, 0, 0, true, UserHandle.getUserId(uid));
- }
- }
-
-
private static String idDebugString(Context baseContext, String packageName, int id) {
Context c = null;
@@ -490,57 +467,6 @@ public class NotificationManagerService extends INotificationManager.Stub
}
}
- /**
- * System-only API for getting a list of current (i.e. not cleared) notifications.
- *
- * Requires ACCESS_NOTIFICATIONS which is signature|system.
- */
- @Override
- public StatusBarNotification[] getActiveNotifications(String callingPkg) {
- // enforce() will ensure the calling uid has the correct permission
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.ACCESS_NOTIFICATIONS,
- "NotificationManagerService.getActiveNotifications");
-
- StatusBarNotification[] tmp = null;
- int uid = Binder.getCallingUid();
-
- // noteOp will check to make sure the callingPkg matches the uid
- if (mAppOps.noteOpNoThrow(AppOpsManager.OP_ACCESS_NOTIFICATIONS, uid, callingPkg)
- == AppOpsManager.MODE_ALLOWED) {
- synchronized (mNotificationList) {
- tmp = new StatusBarNotification[mNotificationList.size()];
- final int N = mNotificationList.size();
- for (int i=0; i<N; i++) {
- tmp[i] = mNotificationList.get(i).sbn;
- }
- }
- }
- return tmp;
- }
-
- /**
- * System-only API for getting a list of recent (cleared, no longer shown) notifications.
- *
- * Requires ACCESS_NOTIFICATIONS which is signature|system.
- */
- @Override
- public StatusBarNotification[] getHistoricalNotifications(String callingPkg, int count) {
- // enforce() will ensure the calling uid has the correct permission
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.ACCESS_NOTIFICATIONS,
- "NotificationManagerService.getHistoricalNotifications");
-
- StatusBarNotification[] tmp = null;
- int uid = Binder.getCallingUid();
-
- // noteOp will check to make sure the callingPkg matches the uid
- if (mAppOps.noteOpNoThrow(AppOpsManager.OP_ACCESS_NOTIFICATIONS, uid, callingPkg)
- == AppOpsManager.MODE_ALLOWED) {
- synchronized (mArchive) {
- tmp = mArchive.getArray(count);
- }
- }
- return tmp;
- }
/**
* Remove notification access for any services that no longer exist.
@@ -548,12 +474,12 @@ public class NotificationManagerService extends INotificationManager.Stub
void disableNonexistentListeners() {
int currentUser = ActivityManager.getCurrentUser();
String flatIn = Settings.Secure.getStringForUser(
- mContext.getContentResolver(),
+ getContext().getContentResolver(),
Settings.Secure.ENABLED_NOTIFICATION_LISTENERS,
currentUser);
if (!TextUtils.isEmpty(flatIn)) {
if (DBG) Slog.v(TAG, "flat before: " + flatIn);
- PackageManager pm = mContext.getPackageManager();
+ PackageManager pm = getContext().getPackageManager();
List<ResolveInfo> installedServices = pm.queryIntentServicesAsUser(
new Intent(NotificationListenerService.SERVICE_INTERFACE),
PackageManager.GET_SERVICES | PackageManager.GET_META_DATA,
@@ -589,7 +515,7 @@ public class NotificationManagerService extends INotificationManager.Stub
}
if (DBG) Slog.v(TAG, "flat after: " + flatOut);
if (!flatIn.equals(flatOut)) {
- Settings.Secure.putStringForUser(mContext.getContentResolver(),
+ Settings.Secure.putStringForUser(getContext().getContentResolver(),
Settings.Secure.ENABLED_NOTIFICATION_LISTENERS,
flatOut, currentUser);
}
@@ -603,7 +529,7 @@ public class NotificationManagerService extends INotificationManager.Stub
void rebindListenerServices() {
final int currentUser = ActivityManager.getCurrentUser();
String flat = Settings.Secure.getStringForUser(
- mContext.getContentResolver(),
+ getContext().getContentResolver(),
Settings.Secure.ENABLED_NOTIFICATION_LISTENERS,
currentUser);
@@ -652,28 +578,6 @@ public class NotificationManagerService extends INotificationManager.Stub
}
}
- /**
- * Register a listener binder directly with the notification manager.
- *
- * Only works with system callers. Apps should extend
- * {@link android.service.notification.NotificationListenerService}.
- */
- @Override
- public void registerListener(final INotificationListener listener,
- final ComponentName component, final int userid) {
- checkCallerIsSystem();
-
- synchronized (mNotificationList) {
- try {
- NotificationListenerInfo info
- = new NotificationListenerInfo(listener, component, userid, true);
- listener.asBinder().linkToDeath(info, 0);
- mListeners.add(info);
- } catch (RemoteException e) {
- // already dead
- }
- }
- }
/**
* Version of registerListener that takes the name of a
@@ -703,7 +607,7 @@ public class NotificationManagerService extends INotificationManager.Stub
if (DBG) Slog.v(TAG, " disconnecting old listener: " + info.listener);
mListeners.remove(i);
if (info.connection != null) {
- mContext.unbindService(info.connection);
+ getContext().unbindService(info.connection);
}
}
}
@@ -713,21 +617,25 @@ public class NotificationManagerService extends INotificationManager.Stub
intent.putExtra(Intent.EXTRA_CLIENT_LABEL,
R.string.notification_listener_binding_label);
- intent.putExtra(Intent.EXTRA_CLIENT_INTENT, PendingIntent.getActivity(
- mContext, 0, new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS), 0));
+
+ final PendingIntent pendingIntent = PendingIntent.getActivity(
+ getContext(), 0, new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS), 0);
+ intent.putExtra(Intent.EXTRA_CLIENT_INTENT, pendingIntent);
try {
if (DBG) Slog.v(TAG, "binding: " + intent);
- if (!mContext.bindServiceAsUser(intent,
+ if (!getContext().bindServiceAsUser(intent,
new ServiceConnection() {
INotificationListener mListener;
+
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
synchronized (mNotificationList) {
mServicesBinding.remove(servicesBindingTag);
try {
mListener = INotificationListener.Stub.asInterface(service);
- NotificationListenerInfo info = new NotificationListenerInfo(
+ NotificationListenerInfo info
+ = new NotificationListenerInfo(
mListener, name, userid, this);
service.linkToDeath(info, 0);
mListeners.add(info);
@@ -756,28 +664,6 @@ public class NotificationManagerService extends INotificationManager.Stub
}
}
- /**
- * Remove a listener binder directly
- */
- @Override
- public void unregisterListener(INotificationListener listener, int userid) {
- // no need to check permissions; if your listener binder is in the list,
- // that's proof that you had permission to add it in the first place
-
- synchronized (mNotificationList) {
- final int N = mListeners.size();
- for (int i=N-1; i>=0; i--) {
- final NotificationListenerInfo info = mListeners.get(i);
- if (info.listener.asBinder() == listener.asBinder()
- && info.userid == userid) {
- mListeners.remove(i);
- if (info.connection != null) {
- mContext.unbindService(info.connection);
- }
- }
- }
- }
- }
/**
* Remove a listener service for the given user by ComponentName
@@ -794,7 +680,7 @@ public class NotificationManagerService extends INotificationManager.Stub
mListeners.remove(i);
if (info.connection != null) {
try {
- mContext.unbindService(info.connection);
+ getContext().unbindService(info.connection);
} catch (IllegalArgumentException ex) {
// something happened to the service: we think we have a connection
// but it's bogus.
@@ -809,7 +695,7 @@ public class NotificationManagerService extends INotificationManager.Stub
/**
* asynchronously notify all listeners about a new notification
*/
- private void notifyPostedLocked(NotificationRecord n) {
+ void notifyPostedLocked(NotificationRecord n) {
// make a copy in case changes are made to the underlying Notification object
final StatusBarNotification sbn = n.sbn.clone();
for (final NotificationListenerInfo info : mListeners) {
@@ -824,7 +710,7 @@ public class NotificationManagerService extends INotificationManager.Stub
/**
* asynchronously notify all listeners about a removed notification
*/
- private void notifyRemovedLocked(NotificationRecord n) {
+ void notifyRemovedLocked(NotificationRecord n) {
// make a copy in case changes are made to the underlying Notification object
// NOTE: this copy is lightweight: it doesn't include heavyweight parts of the notification
final StatusBarNotification sbn_light = n.sbn.cloneLight();
@@ -840,7 +726,14 @@ public class NotificationManagerService extends INotificationManager.Stub
// -- APIs to support listeners clicking/clearing notifications --
+ private void checkNullListener(INotificationListener listener) {
+ if (listener == null) {
+ throw new IllegalArgumentException("Listener must not be null");
+ }
+ }
+
private NotificationListenerInfo checkListenerToken(INotificationListener listener) {
+ checkNullListener(listener);
final IBinder token = listener.asBinder();
final int N = mListeners.size();
for (int i=0; i<N; i++) {
@@ -850,66 +743,7 @@ public class NotificationManagerService extends INotificationManager.Stub
throw new SecurityException("Disallowed call from unknown listener: " + listener);
}
- /**
- * Allow an INotificationListener to simulate a "clear all" operation.
- *
- * {@see com.android.server.StatusBarManagerService.NotificationCallbacks#onClearAllNotifications}
- *
- * @param token The binder for the listener, to check that the caller is allowed
- */
- public void cancelAllNotificationsFromListener(INotificationListener token) {
- NotificationListenerInfo info = checkListenerToken(token);
- long identity = Binder.clearCallingIdentity();
- try {
- cancelAll(info.userid);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
- /**
- * Allow an INotificationListener to simulate clearing (dismissing) a single notification.
- *
- * {@see com.android.server.StatusBarManagerService.NotificationCallbacks#onNotificationClear}
- *
- * @param token The binder for the listener, to check that the caller is allowed
- */
- public void cancelNotificationFromListener(INotificationListener token, String pkg, String tag, int id) {
- NotificationListenerInfo info = checkListenerToken(token);
- long identity = Binder.clearCallingIdentity();
- try {
- cancelNotification(pkg, tag, id, 0,
- Notification.FLAG_ONGOING_EVENT | Notification.FLAG_FOREGROUND_SERVICE,
- true,
- info.userid);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- /**
- * Allow an INotificationListener to request the list of outstanding notifications seen by
- * the current user. Useful when starting up, after which point the listener callbacks should
- * be used.
- *
- * @param token The binder for the listener, to check that the caller is allowed
- */
- public StatusBarNotification[] getActiveNotificationsFromListener(INotificationListener token) {
- NotificationListenerInfo info = checkListenerToken(token);
-
- StatusBarNotification[] result = new StatusBarNotification[0];
- ArrayList<StatusBarNotification> list = new ArrayList<StatusBarNotification>();
- synchronized (mNotificationList) {
- final int N = mNotificationList.size();
- for (int i=0; i<N; i++) {
- StatusBarNotification sbn = mNotificationList.get(i).sbn;
- if (info.enabledAndUserMatches(sbn)) {
- list.add(sbn);
- }
- }
- }
- return list.toArray(result);
- }
// -- end of listener APIs --
@@ -992,8 +826,8 @@ public class NotificationManagerService extends INotificationManager.Stub
return String.format(
"NotificationRecord(0x%08x: pkg=%s user=%s id=%d tag=%s score=%d: %s)",
System.identityHashCode(this),
- this.sbn.getPackageName(), this.sbn.getUser(), this.sbn.getId(), this.sbn.getTag(),
- this.sbn.getScore(), this.sbn.getNotification());
+ this.sbn.getPackageName(), this.sbn.getUser(), this.sbn.getId(),
+ this.sbn.getTag(), this.sbn.getScore(), this.sbn.getNotification());
}
}
@@ -1031,9 +865,9 @@ public class NotificationManagerService extends INotificationManager.Stub
}
}
- private StatusBarManagerService.NotificationCallbacks mNotificationCallbacks
- = new StatusBarManagerService.NotificationCallbacks() {
+ private final NotificationDelegate mNotificationDelegate = new NotificationDelegate() {
+ @Override
public void onSetDisabled(int status) {
synchronized (mNotificationList) {
mDisabledNotifications = status;
@@ -1041,7 +875,7 @@ public class NotificationManagerService extends INotificationManager.Stub
// cancel whatever's going on
long identity = Binder.clearCallingIdentity();
try {
- final IRingtonePlayer player = mAudioService.getRingtonePlayer();
+ final IRingtonePlayer player = mAudioManager.getRingtonePlayer();
if (player != null) {
player.stopAsync();
}
@@ -1060,12 +894,14 @@ public class NotificationManagerService extends INotificationManager.Stub
}
}
+ @Override
public void onClearAll() {
// XXX to be totally correct, the caller should tell us which user
// this is for.
cancelAll(ActivityManager.getCurrentUser());
}
+ @Override
public void onNotificationClick(String pkg, String tag, int id) {
// XXX to be totally correct, the caller should tell us which user
// this is for.
@@ -1074,6 +910,7 @@ public class NotificationManagerService extends INotificationManager.Stub
ActivityManager.getCurrentUser());
}
+ @Override
public void onNotificationClear(String pkg, String tag, int id) {
// XXX to be totally correct, the caller should tell us which user
// this is for.
@@ -1082,6 +919,7 @@ public class NotificationManagerService extends INotificationManager.Stub
true, ActivityManager.getCurrentUser());
}
+ @Override
public void onPanelRevealed() {
synchronized (mNotificationList) {
// sound
@@ -1089,7 +927,7 @@ public class NotificationManagerService extends INotificationManager.Stub
long identity = Binder.clearCallingIdentity();
try {
- final IRingtonePlayer player = mAudioService.getRingtonePlayer();
+ final IRingtonePlayer player = mAudioManager.getRingtonePlayer();
if (player != null) {
player.stopAsync();
}
@@ -1114,6 +952,7 @@ public class NotificationManagerService extends INotificationManager.Stub
}
}
+ @Override
public void onNotificationError(String pkg, String tag, int id,
int uid, int initialPid, String message) {
Slog.d(TAG, "onNotification error pkg=" + pkg + " tag=" + tag + " id=" + id
@@ -1168,7 +1007,7 @@ public class NotificationManagerService extends INotificationManager.Stub
if (packageChanged) {
// We cancel notifications for packages which have just been disabled
try {
- final int enabled = mContext.getPackageManager()
+ final int enabled = getContext().getPackageManager()
.getApplicationEnabledSetting(pkgName);
if (enabled == PackageManager.COMPONENT_ENABLED_STATE_ENABLED
|| enabled == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) {
@@ -1244,7 +1083,7 @@ public class NotificationManagerService extends INotificationManager.Stub
}
void observe() {
- ContentResolver resolver = mContext.getContentResolver();
+ ContentResolver resolver = getContext().getContentResolver();
resolver.registerContentObserver(NOTIFICATION_LIGHT_PULSE_URI,
false, this, UserHandle.USER_ALL);
resolver.registerContentObserver(ENABLED_NOTIFICATION_LISTENERS_URI,
@@ -1257,7 +1096,7 @@ public class NotificationManagerService extends INotificationManager.Stub
}
public void update(Uri uri) {
- ContentResolver resolver = mContext.getContentResolver();
+ ContentResolver resolver = getContext().getContentResolver();
if (uri == null || NOTIFICATION_LIGHT_PULSE_URI.equals(uri)) {
boolean pulseEnabled = Settings.System.getInt(resolver,
Settings.System.NOTIFICATION_LIGHT_PULSE, 0) != 0;
@@ -1287,28 +1126,28 @@ public class NotificationManagerService extends INotificationManager.Stub
return out;
}
- NotificationManagerService(Context context, StatusBarManagerService statusBar,
- LightsService lights)
- {
- super();
- mContext = context;
- mVibrator = (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE);
+ public NotificationManagerService(Context context) {
+ super(context);
+ }
+
+ @Override
+ public void onStart() {
mAm = ActivityManagerNative.getDefault();
- mUserManager = (UserManager)context.getSystemService(Context.USER_SERVICE);
- mToastQueue = new ArrayList<ToastRecord>();
- mHandler = new WorkerHandler();
+ mAppOps = (AppOpsManager) getContext().getSystemService(Context.APP_OPS_SERVICE);
+ mVibrator = (Vibrator) getContext().getSystemService(Context.VIBRATOR_SERVICE);
- mAppOps = (AppOpsManager)context.getSystemService(Context.APP_OPS_SERVICE);
+ mHandler = new WorkerHandler();
importOldBlockDb();
- mStatusBar = statusBar;
- statusBar.setNotificationCallbacks(mNotificationCallbacks);
+ mStatusBar = getLocalService(StatusBarManagerInternal.class);
+ mStatusBar.setNotificationDelegate(mNotificationDelegate);
- mNotificationLight = lights.getLight(LightsService.LIGHT_ID_NOTIFICATIONS);
- mAttentionLight = lights.getLight(LightsService.LIGHT_ID_ATTENTION);
+ final LightsManager lights = getLocalService(LightsManager.class);
+ mNotificationLight = lights.getLight(LightsManager.LIGHT_ID_NOTIFICATIONS);
+ mAttentionLight = lights.getLight(LightsManager.LIGHT_ID_ATTENTION);
- Resources resources = mContext.getResources();
+ Resources resources = getContext().getResources();
mDefaultNotificationColor = resources.getColor(
R.color.config_defaultNotificationColor);
mDefaultNotificationLedOn = resources.getInteger(
@@ -1330,7 +1169,7 @@ public class NotificationManagerService extends INotificationManager.Stub
// After that, including subsequent boots, init with notifications turned on.
// This works on the first boot because the setup wizard will toggle this
// flag at least once and we'll go back to 0 after that.
- if (0 == Settings.Global.getInt(mContext.getContentResolver(),
+ if (0 == Settings.Global.getInt(getContext().getContentResolver(),
Settings.Global.DEVICE_PROVISIONED, 0)) {
mDisabledNotifications = StatusBarManager.DISABLE_NOTIFICATION_ALERTS;
}
@@ -1343,7 +1182,7 @@ public class NotificationManagerService extends INotificationManager.Stub
filter.addAction(Intent.ACTION_USER_PRESENT);
filter.addAction(Intent.ACTION_USER_STOPPED);
filter.addAction(Intent.ACTION_USER_SWITCHED);
- mContext.registerReceiver(mIntentReceiver, filter);
+ getContext().registerReceiver(mIntentReceiver, filter);
IntentFilter pkgFilter = new IntentFilter();
pkgFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
pkgFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
@@ -1351,9 +1190,9 @@ public class NotificationManagerService extends INotificationManager.Stub
pkgFilter.addAction(Intent.ACTION_PACKAGE_RESTARTED);
pkgFilter.addAction(Intent.ACTION_QUERY_PACKAGE_RESTART);
pkgFilter.addDataScheme("package");
- mContext.registerReceiver(mIntentReceiver, pkgFilter);
+ getContext().registerReceiver(mIntentReceiver, pkgFilter);
IntentFilter sdFilter = new IntentFilter(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE);
- mContext.registerReceiver(mIntentReceiver, sdFilter);
+ getContext().registerReceiver(mIntentReceiver, sdFilter);
mSettingsObserver = new SettingsObserver(mHandler);
mSettingsObserver.observe();
@@ -1363,9 +1202,9 @@ public class NotificationManagerService extends INotificationManager.Stub
R.array.config_notificationScorers);
for (String scorerName : notificationScorerNames) {
try {
- Class<?> scorerClass = mContext.getClassLoader().loadClass(scorerName);
+ Class<?> scorerClass = getContext().getClassLoader().loadClass(scorerName);
NotificationScorer scorer = (NotificationScorer) scorerClass.newInstance();
- scorer.initialize(mContext);
+ scorer.initialize(getContext());
mScorers.add(scorer);
} catch (ClassNotFoundException e) {
Slog.w(TAG, "Couldn't find scorer " + scorerName + ".", e);
@@ -1375,6 +1214,9 @@ public class NotificationManagerService extends INotificationManager.Stub
Slog.w(TAG, "Problem accessing scorer " + scorerName + ".", e);
}
}
+
+ publishBinderService(Context.NOTIFICATION_SERVICE, mService);
+ publishLocalService(NotificationManagerInternal.class, mInternalService);
}
/**
@@ -1383,12 +1225,12 @@ public class NotificationManagerService extends INotificationManager.Stub
private void importOldBlockDb() {
loadBlockDb();
- PackageManager pm = mContext.getPackageManager();
+ PackageManager pm = getContext().getPackageManager();
for (String pkg : mBlockedPackages) {
PackageInfo info = null;
try {
info = pm.getPackageInfo(pkg, 0);
- setNotificationsEnabledForPackage(pkg, info.applicationInfo.uid, false);
+ setNotificationsEnabledForPackageImpl(pkg, info.applicationInfo.uid, false);
} catch (NameNotFoundException e) {
// forget you
}
@@ -1399,244 +1241,423 @@ public class NotificationManagerService extends INotificationManager.Stub
}
}
- void systemReady() {
- mAudioService = IAudioService.Stub.asInterface(
- ServiceManager.getService(Context.AUDIO_SERVICE));
+ @Override
+ public void onBootPhase(int phase) {
+ if (phase == SystemService.PHASE_SYSTEM_SERVICES_READY) {
+ // no beeping until we're basically done booting
+ mSystemReady = true;
- // no beeping until we're basically done booting
- mSystemReady = true;
+ // Grab our optional AudioService
+ mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
- // make sure our listener services are properly bound
- rebindListenerServices();
+ // make sure our listener services are properly bound
+ rebindListenerServices();
+ }
}
- // Toasts
- // ============================================================================
- public void enqueueToast(String pkg, ITransientNotification callback, int duration)
- {
- if (DBG) Slog.i(TAG, "enqueueToast pkg=" + pkg + " callback=" + callback + " duration=" + duration);
+ void setNotificationsEnabledForPackageImpl(String pkg, int uid, boolean enabled) {
+ Slog.v(TAG, (enabled?"en":"dis") + "abling notifications for " + pkg);
- if (pkg == null || callback == null) {
- Slog.e(TAG, "Not doing toast. pkg=" + pkg + " callback=" + callback);
- return ;
+ mAppOps.setMode(AppOpsManager.OP_POST_NOTIFICATION, uid, pkg,
+ enabled ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED);
+
+ // Now, cancel any outstanding notifications that are part of a just-disabled app
+ if (ENABLE_BLOCKED_NOTIFICATIONS && !enabled) {
+ cancelAllNotificationsInt(pkg, 0, 0, true, UserHandle.getUserId(uid));
}
+ }
- final boolean isSystemToast = isCallerSystem() || ("android".equals(pkg));
+ private final IBinder mService = new INotificationManager.Stub() {
+ // Toasts
+ // ============================================================================
- if (ENABLE_BLOCKED_TOASTS && !noteNotificationOp(pkg, Binder.getCallingUid())) {
- if (!isSystemToast) {
- Slog.e(TAG, "Suppressing toast from package " + pkg + " by user request.");
- return;
+ @Override
+ public void enqueueToast(String pkg, ITransientNotification callback, int duration)
+ {
+ if (DBG) {
+ Slog.i(TAG, "enqueueToast pkg=" + pkg + " callback=" + callback
+ + " duration=" + duration);
}
- }
- synchronized (mToastQueue) {
- int callingPid = Binder.getCallingPid();
- long callingId = Binder.clearCallingIdentity();
- try {
- ToastRecord record;
- int index = indexOfToastLocked(pkg, callback);
- // If it's already in the queue, we update it in place, we don't
- // move it to the end of the queue.
- if (index >= 0) {
- record = mToastQueue.get(index);
- record.update(duration);
- } else {
- // Limit the number of toasts that any given package except the android
- // package can enqueue. Prevents DOS attacks and deals with leaks.
- if (!isSystemToast) {
- int count = 0;
- final int N = mToastQueue.size();
- for (int i=0; i<N; i++) {
- final ToastRecord r = mToastQueue.get(i);
- if (r.pkg.equals(pkg)) {
- count++;
- if (count >= MAX_PACKAGE_NOTIFICATIONS) {
- Slog.e(TAG, "Package has already posted " + count
- + " toasts. Not showing more. Package=" + pkg);
- return;
+ if (pkg == null || callback == null) {
+ Slog.e(TAG, "Not doing toast. pkg=" + pkg + " callback=" + callback);
+ return ;
+ }
+
+ final boolean isSystemToast = isCallerSystem() || ("android".equals(pkg));
+
+ if (ENABLE_BLOCKED_TOASTS && !noteNotificationOp(pkg, Binder.getCallingUid())) {
+ if (!isSystemToast) {
+ Slog.e(TAG, "Suppressing toast from package " + pkg + " by user request.");
+ return;
+ }
+ }
+
+ synchronized (mToastQueue) {
+ int callingPid = Binder.getCallingPid();
+ long callingId = Binder.clearCallingIdentity();
+ try {
+ ToastRecord record;
+ int index = indexOfToastLocked(pkg, callback);
+ // If it's already in the queue, we update it in place, we don't
+ // move it to the end of the queue.
+ if (index >= 0) {
+ record = mToastQueue.get(index);
+ record.update(duration);
+ } else {
+ // Limit the number of toasts that any given package except the android
+ // package can enqueue. Prevents DOS attacks and deals with leaks.
+ if (!isSystemToast) {
+ int count = 0;
+ final int N = mToastQueue.size();
+ for (int i=0; i<N; i++) {
+ final ToastRecord r = mToastQueue.get(i);
+ if (r.pkg.equals(pkg)) {
+ count++;
+ if (count >= MAX_PACKAGE_NOTIFICATIONS) {
+ Slog.e(TAG, "Package has already posted " + count
+ + " toasts. Not showing more. Package=" + pkg);
+ return;
+ }
}
- }
+ }
}
+
+ record = new ToastRecord(callingPid, pkg, callback, duration);
+ mToastQueue.add(record);
+ index = mToastQueue.size() - 1;
+ keepProcessAliveLocked(callingPid);
+ }
+ // If it's at index 0, it's the current toast. It doesn't matter if it's
+ // new or just been updated. Call back and tell it to show itself.
+ // If the callback fails, this will remove it from the list, so don't
+ // assume that it's valid after this.
+ if (index == 0) {
+ showNextToastLocked();
}
+ } finally {
+ Binder.restoreCallingIdentity(callingId);
+ }
+ }
+ }
+
+ @Override
+ public void cancelToast(String pkg, ITransientNotification callback) {
+ Slog.i(TAG, "cancelToast pkg=" + pkg + " callback=" + callback);
+
+ if (pkg == null || callback == null) {
+ Slog.e(TAG, "Not cancelling notification. pkg=" + pkg + " callback=" + callback);
+ return ;
+ }
- record = new ToastRecord(callingPid, pkg, callback, duration);
- mToastQueue.add(record);
- index = mToastQueue.size() - 1;
- keepProcessAliveLocked(callingPid);
+ synchronized (mToastQueue) {
+ long callingId = Binder.clearCallingIdentity();
+ try {
+ int index = indexOfToastLocked(pkg, callback);
+ if (index >= 0) {
+ cancelToastLocked(index);
+ } else {
+ Slog.w(TAG, "Toast already cancelled. pkg=" + pkg
+ + " callback=" + callback);
+ }
+ } finally {
+ Binder.restoreCallingIdentity(callingId);
}
- // If it's at index 0, it's the current toast. It doesn't matter if it's
- // new or just been updated. Call back and tell it to show itself.
- // If the callback fails, this will remove it from the list, so don't
- // assume that it's valid after this.
- if (index == 0) {
- showNextToastLocked();
+ }
+ }
+
+ @Override
+ public void enqueueNotificationWithTag(String pkg, String basePkg, String tag, int id,
+ Notification notification, int[] idOut, int userId) throws RemoteException {
+ enqueueNotificationInternal(pkg, basePkg, Binder.getCallingUid(),
+ Binder.getCallingPid(), tag, id, notification, idOut, userId);
+ }
+
+ @Override
+ public void cancelNotificationWithTag(String pkg, String tag, int id, int userId) {
+ checkCallerIsSystemOrSameApp(pkg);
+ userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
+ Binder.getCallingUid(), userId, true, false, "cancelNotificationWithTag", pkg);
+ // Don't allow client applications to cancel foreground service notis.
+ cancelNotification(pkg, tag, id, 0,
+ Binder.getCallingUid() == Process.SYSTEM_UID
+ ? 0 : Notification.FLAG_FOREGROUND_SERVICE, false, userId);
+ }
+
+ @Override
+ public void cancelAllNotifications(String pkg, int userId) {
+ checkCallerIsSystemOrSameApp(pkg);
+
+ userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
+ Binder.getCallingUid(), userId, true, false, "cancelAllNotifications", pkg);
+
+ // Calling from user space, don't allow the canceling of actively
+ // running foreground services.
+ cancelAllNotificationsInt(pkg, 0, Notification.FLAG_FOREGROUND_SERVICE, true, userId);
+ }
+
+ @Override
+ public void setNotificationsEnabledForPackage(String pkg, int uid, boolean enabled) {
+ checkCallerIsSystem();
+
+ setNotificationsEnabledForPackageImpl(pkg, uid, enabled);
+ }
+
+ /**
+ * Use this when you just want to know if notifications are OK for this package.
+ */
+ @Override
+ public boolean areNotificationsEnabledForPackage(String pkg, int uid) {
+ checkCallerIsSystem();
+ return (mAppOps.checkOpNoThrow(AppOpsManager.OP_POST_NOTIFICATION, uid, pkg)
+ == AppOpsManager.MODE_ALLOWED);
+ }
+
+ /**
+ * System-only API for getting a list of current (i.e. not cleared) notifications.
+ *
+ * Requires ACCESS_NOTIFICATIONS which is signature|system.
+ */
+ @Override
+ public StatusBarNotification[] getActiveNotifications(String callingPkg) {
+ // enforce() will ensure the calling uid has the correct permission
+ getContext().enforceCallingOrSelfPermission(
+ android.Manifest.permission.ACCESS_NOTIFICATIONS,
+ "NotificationManagerService.getActiveNotifications");
+
+ StatusBarNotification[] tmp = null;
+ int uid = Binder.getCallingUid();
+
+ // noteOp will check to make sure the callingPkg matches the uid
+ if (mAppOps.noteOpNoThrow(AppOpsManager.OP_ACCESS_NOTIFICATIONS, uid, callingPkg)
+ == AppOpsManager.MODE_ALLOWED) {
+ synchronized (mNotificationList) {
+ tmp = new StatusBarNotification[mNotificationList.size()];
+ final int N = mNotificationList.size();
+ for (int i=0; i<N; i++) {
+ tmp[i] = mNotificationList.get(i).sbn;
+ }
}
- } finally {
- Binder.restoreCallingIdentity(callingId);
}
+ return tmp;
}
- }
- public void cancelToast(String pkg, ITransientNotification callback) {
- Slog.i(TAG, "cancelToast pkg=" + pkg + " callback=" + callback);
+ /**
+ * System-only API for getting a list of recent (cleared, no longer shown) notifications.
+ *
+ * Requires ACCESS_NOTIFICATIONS which is signature|system.
+ */
+ @Override
+ public StatusBarNotification[] getHistoricalNotifications(String callingPkg, int count) {
+ // enforce() will ensure the calling uid has the correct permission
+ getContext().enforceCallingOrSelfPermission(
+ android.Manifest.permission.ACCESS_NOTIFICATIONS,
+ "NotificationManagerService.getHistoricalNotifications");
+
+ StatusBarNotification[] tmp = null;
+ int uid = Binder.getCallingUid();
+
+ // noteOp will check to make sure the callingPkg matches the uid
+ if (mAppOps.noteOpNoThrow(AppOpsManager.OP_ACCESS_NOTIFICATIONS, uid, callingPkg)
+ == AppOpsManager.MODE_ALLOWED) {
+ synchronized (mArchive) {
+ tmp = mArchive.getArray(count);
+ }
+ }
+ return tmp;
+ }
- if (pkg == null || callback == null) {
- Slog.e(TAG, "Not cancelling notification. pkg=" + pkg + " callback=" + callback);
- return ;
+ /**
+ * Register a listener binder directly with the notification manager.
+ *
+ * Only works with system callers. Apps should extend
+ * {@link android.service.notification.NotificationListenerService}.
+ */
+ @Override
+ public void registerListener(final INotificationListener listener,
+ final ComponentName component, final int userid) {
+ checkCallerIsSystem();
+ checkNullListener(listener);
+ registerListenerImpl(listener, component, userid);
}
- synchronized (mToastQueue) {
- long callingId = Binder.clearCallingIdentity();
+ /**
+ * Remove a listener binder directly
+ */
+ @Override
+ public void unregisterListener(INotificationListener listener, int userid) {
+ checkNullListener(listener);
+ // no need to check permissions; if your listener binder is in the list,
+ // that's proof that you had permission to add it in the first place
+ unregisterListenerImpl(listener, userid);
+ }
+
+ /**
+ * Allow an INotificationListener to simulate a "clear all" operation.
+ *
+ * {@see com.android.server.StatusBarManagerService.NotificationCallbacks#onClearAllNotifications}
+ *
+ * @param token The binder for the listener, to check that the caller is allowed
+ */
+ @Override
+ public void cancelAllNotificationsFromListener(INotificationListener token) {
+ NotificationListenerInfo info = checkListenerToken(token);
+ long identity = Binder.clearCallingIdentity();
try {
- int index = indexOfToastLocked(pkg, callback);
- if (index >= 0) {
- cancelToastLocked(index);
- } else {
- Slog.w(TAG, "Toast already cancelled. pkg=" + pkg + " callback=" + callback);
- }
+ cancelAll(info.userid);
} finally {
- Binder.restoreCallingIdentity(callingId);
+ Binder.restoreCallingIdentity(identity);
}
}
- }
- private void showNextToastLocked() {
- ToastRecord record = mToastQueue.get(0);
- while (record != null) {
- if (DBG) Slog.d(TAG, "Show pkg=" + record.pkg + " callback=" + record.callback);
+ /**
+ * Allow an INotificationListener to simulate clearing (dismissing) a single notification.
+ *
+ * {@see com.android.server.StatusBarManagerService.NotificationCallbacks#onNotificationClear}
+ *
+ * @param token The binder for the listener, to check that the caller is allowed
+ */
+ @Override
+ public void cancelNotificationFromListener(INotificationListener token, String pkg,
+ String tag, int id) {
+ NotificationListenerInfo info = checkListenerToken(token);
+ long identity = Binder.clearCallingIdentity();
try {
- record.callback.show();
- scheduleTimeoutLocked(record);
- return;
- } catch (RemoteException e) {
- Slog.w(TAG, "Object died trying to show notification " + record.callback
- + " in package " + record.pkg);
- // remove it from the list and let the process die
- int index = mToastQueue.indexOf(record);
- if (index >= 0) {
- mToastQueue.remove(index);
- }
- keepProcessAliveLocked(record.pid);
- if (mToastQueue.size() > 0) {
- record = mToastQueue.get(0);
- } else {
- record = null;
+ cancelNotification(pkg, tag, id, 0,
+ Notification.FLAG_ONGOING_EVENT | Notification.FLAG_FOREGROUND_SERVICE,
+ true,
+ info.userid);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ /**
+ * Allow an INotificationListener to request the list of outstanding notifications seen by
+ * the current user. Useful when starting up, after which point the listener callbacks
+ * should be used.
+ *
+ * @param token The binder for the listener, to check that the caller is allowed
+ */
+ @Override
+ public StatusBarNotification[] getActiveNotificationsFromListener(
+ INotificationListener token) {
+ NotificationListenerInfo info = checkListenerToken(token);
+
+ StatusBarNotification[] result = new StatusBarNotification[0];
+ ArrayList<StatusBarNotification> list = new ArrayList<StatusBarNotification>();
+ synchronized (mNotificationList) {
+ final int N = mNotificationList.size();
+ for (int i=0; i<N; i++) {
+ StatusBarNotification sbn = mNotificationList.get(i).sbn;
+ if (info.enabledAndUserMatches(sbn)) {
+ list.add(sbn);
+ }
}
}
+ return list.toArray(result);
}
- }
- private void cancelToastLocked(int index) {
- ToastRecord record = mToastQueue.get(index);
- try {
- record.callback.hide();
- } catch (RemoteException e) {
- Slog.w(TAG, "Object died trying to hide notification " + record.callback
- + " in package " + record.pkg);
- // don't worry about this, we're about to remove it from
- // the list anyway
+ @Override
+ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ if (getContext().checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
+ != PackageManager.PERMISSION_GRANTED) {
+ pw.println("Permission Denial: can't dump NotificationManager from from pid="
+ + Binder.getCallingPid()
+ + ", uid=" + Binder.getCallingUid());
+ return;
+ }
+
+ dumpImpl(pw);
}
- mToastQueue.remove(index);
- keepProcessAliveLocked(record.pid);
- if (mToastQueue.size() > 0) {
- // Show the next one. If the callback fails, this will remove
- // it from the list, so don't assume that the list hasn't changed
- // after this point.
- showNextToastLocked();
+ };
+
+ void dumpImpl(PrintWriter pw) {
+ pw.println("Current Notification Manager state:");
+
+ pw.println(" Listeners (" + mEnabledListenersForCurrentUser.size()
+ + ") enabled for current user:");
+ for (ComponentName cmpt : mEnabledListenersForCurrentUser) {
+ pw.println(" " + cmpt);
}
- }
- private void scheduleTimeoutLocked(ToastRecord r)
- {
- mHandler.removeCallbacksAndMessages(r);
- Message m = Message.obtain(mHandler, MESSAGE_TIMEOUT, r);
- long delay = r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY;
- mHandler.sendMessageDelayed(m, delay);
- }
+ pw.println(" Live listeners (" + mListeners.size() + "):");
+ for (NotificationListenerInfo info : mListeners) {
+ pw.println(" " + info.component
+ + " (user " + info.userid + "): " + info.listener
+ + (info.isSystem?" SYSTEM":""));
+ }
+
+ int N;
- private void handleTimeout(ToastRecord record)
- {
- if (DBG) Slog.d(TAG, "Timeout pkg=" + record.pkg + " callback=" + record.callback);
synchronized (mToastQueue) {
- int index = indexOfToastLocked(record.pkg, record.callback);
- if (index >= 0) {
- cancelToastLocked(index);
+ N = mToastQueue.size();
+ if (N > 0) {
+ pw.println(" Toast Queue:");
+ for (int i=0; i<N; i++) {
+ mToastQueue.get(i).dump(pw, " ");
+ }
+ pw.println(" ");
}
+
}
- }
- // lock on mToastQueue
- private int indexOfToastLocked(String pkg, ITransientNotification callback)
- {
- IBinder cbak = callback.asBinder();
- ArrayList<ToastRecord> list = mToastQueue;
- int len = list.size();
- for (int i=0; i<len; i++) {
- ToastRecord r = list.get(i);
- if (r.pkg.equals(pkg) && r.callback.asBinder() == cbak) {
- return i;
+ synchronized (mNotificationList) {
+ N = mNotificationList.size();
+ if (N > 0) {
+ pw.println(" Notification List:");
+ for (int i=0; i<N; i++) {
+ mNotificationList.get(i).dump(pw, " ", getContext());
+ }
+ pw.println(" ");
}
- }
- return -1;
- }
- // lock on mToastQueue
- private void keepProcessAliveLocked(int pid)
- {
- int toastCount = 0; // toasts from this pid
- ArrayList<ToastRecord> list = mToastQueue;
- int N = list.size();
- for (int i=0; i<N; i++) {
- ToastRecord r = list.get(i);
- if (r.pid == pid) {
- toastCount++;
+ N = mLights.size();
+ if (N > 0) {
+ pw.println(" Lights List:");
+ for (int i=0; i<N; i++) {
+ pw.println(" " + mLights.get(i));
+ }
+ pw.println(" ");
}
- }
- try {
- mAm.setProcessForeground(mForegroundToken, pid, toastCount > 0);
- } catch (RemoteException e) {
- // Shouldn't happen.
- }
- }
- private final class WorkerHandler extends Handler
- {
- @Override
- public void handleMessage(Message msg)
- {
- switch (msg.what)
- {
- case MESSAGE_TIMEOUT:
- handleTimeout((ToastRecord)msg.obj);
+ pw.println(" mSoundNotification=" + mSoundNotification);
+ pw.println(" mVibrateNotification=" + mVibrateNotification);
+ pw.println(" mDisabledNotifications=0x"
+ + Integer.toHexString(mDisabledNotifications));
+ pw.println(" mSystemReady=" + mSystemReady);
+ pw.println(" mArchive=" + mArchive.toString());
+ Iterator<StatusBarNotification> iter = mArchive.descendingIterator();
+ int i=0;
+ while (iter.hasNext()) {
+ pw.println(" " + iter.next());
+ if (++i >= 5) {
+ if (iter.hasNext()) pw.println(" ...");
break;
+ }
}
- }
- }
-
- // Notifications
- // ============================================================================
- public void enqueueNotificationWithTag(String pkg, String basePkg, String tag, int id,
- Notification notification, int[] idOut, int userId)
- {
- enqueueNotificationInternal(pkg, basePkg, Binder.getCallingUid(), Binder.getCallingPid(),
- tag, id, notification, idOut, userId);
- }
-
- private final static int clamp(int x, int low, int high) {
- return (x < low) ? low : ((x > high) ? high : x);
+ }
}
- // Not exposed via Binder; for system use only (otherwise malicious apps could spoof the
- // uid/pid of another application)
+ /**
+ * The private API only accessible to the system process.
+ */
+ private final NotificationManagerInternal mInternalService = new NotificationManagerInternal() {
+ @Override
+ public void enqueueNotification(String pkg, String basePkg, int callingUid, int callingPid,
+ String tag, int id, Notification notification, int[] idReceived, int userId) {
+ enqueueNotificationInternal(pkg, basePkg, callingUid, callingPid, tag, id, notification,
+ idReceived, userId);
+ }
+ };
- public void enqueueNotificationInternal(final String pkg, String basePkg, final int callingUid,
+ void enqueueNotificationInternal(final String pkg, String basePkg, final int callingUid,
final int callingPid, final String tag, final int id, final Notification notification,
- int[] idOut, int incomingUserId)
- {
+ int[] idOut, int incomingUserId) {
if (DBG) {
- Slog.v(TAG, "enqueueNotificationInternal: pkg=" + pkg + " id=" + id + " notification=" + notification);
+ Slog.v(TAG, "enqueueNotificationInternal: pkg=" + pkg + " id=" + id
+ + " notification=" + notification);
}
checkCallerIsSystemOrSameApp(pkg);
final boolean isSystemNotification = isUidSystem(callingUid) || ("android".equals(pkg));
@@ -1787,23 +1808,21 @@ public class NotificationManagerService extends INotificationManager.Stub
if (notification.icon != 0) {
if (old != null && old.statusBarKey != null) {
r.statusBarKey = old.statusBarKey;
- long identity = Binder.clearCallingIdentity();
+ final long identity = Binder.clearCallingIdentity();
try {
mStatusBar.updateNotification(r.statusBarKey, n);
- }
- finally {
+ } finally {
Binder.restoreCallingIdentity(identity);
}
} else {
- long identity = Binder.clearCallingIdentity();
+ final long identity = Binder.clearCallingIdentity();
try {
r.statusBarKey = mStatusBar.addNotification(n);
if ((n.getNotification().flags & Notification.FLAG_SHOW_LIGHTS) != 0
&& canInterrupt) {
mAttentionLight.pulse();
}
- }
- finally {
+ } finally {
Binder.restoreCallingIdentity(identity);
}
}
@@ -1816,33 +1835,32 @@ public class NotificationManagerService extends INotificationManager.Stub
} else {
Slog.e(TAG, "Not posting notification with icon==0: " + notification);
if (old != null && old.statusBarKey != null) {
- long identity = Binder.clearCallingIdentity();
+ final long identity = Binder.clearCallingIdentity();
try {
mStatusBar.removeNotification(old.statusBarKey);
- }
- finally {
+ } finally {
Binder.restoreCallingIdentity(identity);
}
notifyRemovedLocked(r);
}
// ATTENTION: in a future release we will bail out here
- // so that we do not play sounds, show lights, etc. for invalid notifications
+ // so that we do not play sounds, show lights, etc. for invalid
+ // notifications
Slog.e(TAG, "WARNING: In a future release this will crash the app: "
+ n.getPackageName());
}
// If we're not supposed to beep, vibrate, etc. then don't.
- if (((mDisabledNotifications & StatusBarManager.DISABLE_NOTIFICATION_ALERTS) == 0)
+ if (((mDisabledNotifications
+ & StatusBarManager.DISABLE_NOTIFICATION_ALERTS) == 0)
&& (!(old != null
&& (notification.flags & Notification.FLAG_ONLY_ALERT_ONCE) != 0 ))
&& (r.getUserId() == UserHandle.USER_ALL ||
(r.getUserId() == userId && r.getUserId() == currentUser))
&& canInterrupt
- && mSystemReady) {
-
- final AudioManager audioManager = (AudioManager) mContext
- .getSystemService(Context.AUDIO_SERVICE);
+ && mSystemReady
+ && mAudioManager != null) {
// sound
@@ -1861,7 +1879,7 @@ public class NotificationManagerService extends INotificationManager.Stub
soundUri = Settings.System.DEFAULT_NOTIFICATION_URI;
// check to see if the default notification sound is silent
- ContentResolver resolver = mContext.getContentResolver();
+ ContentResolver resolver = getContext().getContentResolver();
hasValidSound = Settings.System.getString(resolver,
Settings.System.NOTIFICATION_SOUND) != null;
} else if (notification.sound != null) {
@@ -1870,7 +1888,8 @@ public class NotificationManagerService extends INotificationManager.Stub
}
if (hasValidSound) {
- boolean looping = (notification.flags & Notification.FLAG_INSISTENT) != 0;
+ boolean looping =
+ (notification.flags & Notification.FLAG_INSISTENT) != 0;
int audioStreamType;
if (notification.audioStreamType >= 0) {
audioStreamType = notification.audioStreamType;
@@ -1880,11 +1899,12 @@ public class NotificationManagerService extends INotificationManager.Stub
mSoundNotification = r;
// do not play notifications if stream volume is 0 (typically because
// ringer mode is silent) or if there is a user of exclusive audio focus
- if ((audioManager.getStreamVolume(audioStreamType) != 0)
- && !audioManager.isAudioFocusExclusive()) {
+ if ((mAudioManager.getStreamVolume(audioStreamType) != 0)
+ && !mAudioManager.isAudioFocusExclusive()) {
final long identity = Binder.clearCallingIdentity();
try {
- final IRingtonePlayer player = mAudioService.getRingtonePlayer();
+ final IRingtonePlayer player =
+ mAudioManager.getRingtonePlayer();
if (player != null) {
player.playAsync(soundUri, user, looping, audioStreamType);
}
@@ -1904,7 +1924,7 @@ public class NotificationManagerService extends INotificationManager.Stub
final boolean convertSoundToVibration =
!hasCustomVibrate
&& hasValidSound
- && (audioManager.getRingerMode()
+ && (mAudioManager.getRingerMode()
== AudioManager.RINGER_MODE_VIBRATE);
// The DEFAULT_VIBRATE flag trumps any custom vibration AND the fallback.
@@ -1912,7 +1932,7 @@ public class NotificationManagerService extends INotificationManager.Stub
(notification.defaults & Notification.DEFAULT_VIBRATE) != 0;
if ((useDefaultVibrate || convertSoundToVibration || hasCustomVibrate)
- && !(audioManager.getRingerMode()
+ && !(mAudioManager.getRingerMode()
== AudioManager.RINGER_MODE_SILENT)) {
mVibrateNotification = r;
@@ -1966,8 +1986,173 @@ public class NotificationManagerService extends INotificationManager.Stub
idOut[0] = id;
}
- private void sendAccessibilityEvent(Notification notification, CharSequence packageName) {
- AccessibilityManager manager = AccessibilityManager.getInstance(mContext);
+ void registerListenerImpl(final INotificationListener listener,
+ final ComponentName component, final int userid) {
+ synchronized (mNotificationList) {
+ try {
+ NotificationListenerInfo info
+ = new NotificationListenerInfo(listener, component, userid, true);
+ listener.asBinder().linkToDeath(info, 0);
+ mListeners.add(info);
+ } catch (RemoteException e) {
+ // already dead
+ }
+ }
+ }
+
+ /**
+ * Removes a listener from the list and unbinds from its service.
+ */
+ void unregisterListenerImpl(final INotificationListener listener, final int userid) {
+ NotificationListenerInfo info = removeListenerImpl(listener, userid);
+ if (info != null && info.connection != null) {
+ getContext().unbindService(info.connection);
+ }
+ }
+
+ /**
+ * Removes a listener from the list but does not unbind from the listener's service.
+ *
+ * @return the removed listener.
+ */
+ NotificationListenerInfo removeListenerImpl(
+ final INotificationListener listener, final int userid) {
+ NotificationListenerInfo listenerInfo = null;
+ synchronized (mNotificationList) {
+ final int N = mListeners.size();
+ for (int i=N-1; i>=0; i--) {
+ final NotificationListenerInfo info = mListeners.get(i);
+ if (info.listener.asBinder() == listener.asBinder()
+ && info.userid == userid) {
+ listenerInfo = mListeners.remove(i);
+ }
+ }
+ }
+ return listenerInfo;
+ }
+
+ void showNextToastLocked() {
+ ToastRecord record = mToastQueue.get(0);
+ while (record != null) {
+ if (DBG) Slog.d(TAG, "Show pkg=" + record.pkg + " callback=" + record.callback);
+ try {
+ record.callback.show();
+ scheduleTimeoutLocked(record);
+ return;
+ } catch (RemoteException e) {
+ Slog.w(TAG, "Object died trying to show notification " + record.callback
+ + " in package " + record.pkg);
+ // remove it from the list and let the process die
+ int index = mToastQueue.indexOf(record);
+ if (index >= 0) {
+ mToastQueue.remove(index);
+ }
+ keepProcessAliveLocked(record.pid);
+ if (mToastQueue.size() > 0) {
+ record = mToastQueue.get(0);
+ } else {
+ record = null;
+ }
+ }
+ }
+ }
+
+ void cancelToastLocked(int index) {
+ ToastRecord record = mToastQueue.get(index);
+ try {
+ record.callback.hide();
+ } catch (RemoteException e) {
+ Slog.w(TAG, "Object died trying to hide notification " + record.callback
+ + " in package " + record.pkg);
+ // don't worry about this, we're about to remove it from
+ // the list anyway
+ }
+ mToastQueue.remove(index);
+ keepProcessAliveLocked(record.pid);
+ if (mToastQueue.size() > 0) {
+ // Show the next one. If the callback fails, this will remove
+ // it from the list, so don't assume that the list hasn't changed
+ // after this point.
+ showNextToastLocked();
+ }
+ }
+
+ private void scheduleTimeoutLocked(ToastRecord r)
+ {
+ mHandler.removeCallbacksAndMessages(r);
+ Message m = Message.obtain(mHandler, MESSAGE_TIMEOUT, r);
+ long delay = r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY;
+ mHandler.sendMessageDelayed(m, delay);
+ }
+
+ private void handleTimeout(ToastRecord record)
+ {
+ if (DBG) Slog.d(TAG, "Timeout pkg=" + record.pkg + " callback=" + record.callback);
+ synchronized (mToastQueue) {
+ int index = indexOfToastLocked(record.pkg, record.callback);
+ if (index >= 0) {
+ cancelToastLocked(index);
+ }
+ }
+ }
+
+ // lock on mToastQueue
+ int indexOfToastLocked(String pkg, ITransientNotification callback)
+ {
+ IBinder cbak = callback.asBinder();
+ ArrayList<ToastRecord> list = mToastQueue;
+ int len = list.size();
+ for (int i=0; i<len; i++) {
+ ToastRecord r = list.get(i);
+ if (r.pkg.equals(pkg) && r.callback.asBinder() == cbak) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ // lock on mToastQueue
+ void keepProcessAliveLocked(int pid)
+ {
+ int toastCount = 0; // toasts from this pid
+ ArrayList<ToastRecord> list = mToastQueue;
+ int N = list.size();
+ for (int i=0; i<N; i++) {
+ ToastRecord r = list.get(i);
+ if (r.pid == pid) {
+ toastCount++;
+ }
+ }
+ try {
+ mAm.setProcessForeground(mForegroundToken, pid, toastCount > 0);
+ } catch (RemoteException e) {
+ // Shouldn't happen.
+ }
+ }
+
+ private final class WorkerHandler extends Handler
+ {
+ @Override
+ public void handleMessage(Message msg)
+ {
+ switch (msg.what)
+ {
+ case MESSAGE_TIMEOUT:
+ handleTimeout((ToastRecord)msg.obj);
+ break;
+ }
+ }
+ }
+
+
+ // Notifications
+ // ============================================================================
+ static int clamp(int x, int low, int high) {
+ return (x < low) ? low : ((x > high) ? high : x);
+ }
+
+ void sendAccessibilityEvent(Notification notification, CharSequence packageName) {
+ AccessibilityManager manager = AccessibilityManager.getInstance(getContext());
if (!manager.isEnabled()) {
return;
}
@@ -2001,11 +2186,10 @@ public class NotificationManagerService extends INotificationManager.Stub
// status bar
if (r.getNotification().icon != 0) {
- long identity = Binder.clearCallingIdentity();
+ final long identity = Binder.clearCallingIdentity();
try {
mStatusBar.removeNotification(r.statusBarKey);
- }
- finally {
+ } finally {
Binder.restoreCallingIdentity(identity);
}
r.statusBarKey = null;
@@ -2017,7 +2201,7 @@ public class NotificationManagerService extends INotificationManager.Stub
mSoundNotification = null;
final long identity = Binder.clearCallingIdentity();
try {
- final IRingtonePlayer player = mAudioService.getRingtonePlayer();
+ final IRingtonePlayer player = mAudioManager.getRingtonePlayer();
if (player != null) {
player.stopAsync();
}
@@ -2053,7 +2237,7 @@ public class NotificationManagerService extends INotificationManager.Stub
* Cancels a notification ONLY if it has all of the {@code mustHaveFlags}
* and none of the {@code mustNotHaveFlags}.
*/
- private void cancelNotification(final String pkg, final String tag, final int id,
+ void cancelNotification(final String pkg, final String tag, final int id,
final int mustHaveFlags, final int mustNotHaveFlags, final boolean sendDelete,
final int userId) {
// In enqueueNotificationInternal notifications are added by scheduling the
@@ -2146,26 +2330,7 @@ public class NotificationManagerService extends INotificationManager.Stub
}
}
- public void cancelNotificationWithTag(String pkg, String tag, int id, int userId) {
- checkCallerIsSystemOrSameApp(pkg);
- userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
- Binder.getCallingUid(), userId, true, false, "cancelNotificationWithTag", pkg);
- // Don't allow client applications to cancel foreground service notis.
- cancelNotification(pkg, tag, id, 0,
- Binder.getCallingUid() == Process.SYSTEM_UID
- ? 0 : Notification.FLAG_FOREGROUND_SERVICE, false, userId);
- }
-
- public void cancelAllNotifications(String pkg, int userId) {
- checkCallerIsSystemOrSameApp(pkg);
- userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
- Binder.getCallingUid(), userId, true, false, "cancelAllNotifications", pkg);
-
- // Calling from user space, don't allow the canceling of actively
- // running foreground services.
- cancelAllNotificationsInt(pkg, 0, Notification.FLAG_FOREGROUND_SERVICE, true, userId);
- }
// Return true if the UID is a system or phone UID and therefore should not have
// any notifications or toasts blocked.
@@ -2225,7 +2390,7 @@ public class NotificationManagerService extends INotificationManager.Stub
}
// lock on mNotificationList
- private void updateLightsLocked()
+ void updateLightsLocked()
{
// handle notification lights
if (mLedNotification == null) {
@@ -2251,14 +2416,14 @@ public class NotificationManagerService extends INotificationManager.Stub
}
if (mNotificationPulseEnabled) {
// pulse repeatedly
- mNotificationLight.setFlashing(ledARGB, LightsService.LIGHT_FLASH_TIMED,
+ mNotificationLight.setFlashing(ledARGB, Light.LIGHT_FLASH_TIMED,
ledOnMS, ledOffMS);
}
}
}
// lock on mNotificationList
- private int indexOfNotificationLocked(String pkg, String tag, int id, int userId)
+ int indexOfNotificationLocked(String pkg, String tag, int id, int userId)
{
ArrayList<NotificationRecord> list = mNotificationList;
final int len = list.size();
@@ -2288,81 +2453,4 @@ public class NotificationManagerService extends INotificationManager.Stub
updateLightsLocked();
}
}
-
- // ======================================================================
- @Override
- protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
- != PackageManager.PERMISSION_GRANTED) {
- pw.println("Permission Denial: can't dump NotificationManager from from pid="
- + Binder.getCallingPid()
- + ", uid=" + Binder.getCallingUid());
- return;
- }
-
- pw.println("Current Notification Manager state:");
-
- pw.println(" Listeners (" + mEnabledListenersForCurrentUser.size()
- + ") enabled for current user:");
- for (ComponentName cmpt : mEnabledListenersForCurrentUser) {
- pw.println(" " + cmpt);
- }
-
- pw.println(" Live listeners (" + mListeners.size() + "):");
- for (NotificationListenerInfo info : mListeners) {
- pw.println(" " + info.component
- + " (user " + info.userid + "): " + info.listener
- + (info.isSystem?" SYSTEM":""));
- }
-
- int N;
-
- synchronized (mToastQueue) {
- N = mToastQueue.size();
- if (N > 0) {
- pw.println(" Toast Queue:");
- for (int i=0; i<N; i++) {
- mToastQueue.get(i).dump(pw, " ");
- }
- pw.println(" ");
- }
-
- }
-
- synchronized (mNotificationList) {
- N = mNotificationList.size();
- if (N > 0) {
- pw.println(" Notification List:");
- for (int i=0; i<N; i++) {
- mNotificationList.get(i).dump(pw, " ", mContext);
- }
- pw.println(" ");
- }
-
- N = mLights.size();
- if (N > 0) {
- pw.println(" Lights List:");
- for (int i=0; i<N; i++) {
- pw.println(" " + mLights.get(i));
- }
- pw.println(" ");
- }
-
- pw.println(" mSoundNotification=" + mSoundNotification);
- pw.println(" mVibrateNotification=" + mVibrateNotification);
- pw.println(" mDisabledNotifications=0x" + Integer.toHexString(mDisabledNotifications));
- pw.println(" mSystemReady=" + mSystemReady);
- pw.println(" mArchive=" + mArchive.toString());
- Iterator<StatusBarNotification> iter = mArchive.descendingIterator();
- int i=0;
- while (iter.hasNext()) {
- pw.println(" " + iter.next());
- if (++i >= 5) {
- if (iter.hasNext()) pw.println(" ...");
- break;
- }
- }
-
- }
- }
}
diff --git a/services/java/com/android/server/os/SchedulingPolicyService.java b/services/core/java/com/android/server/os/SchedulingPolicyService.java
index c0123bf1b0f5..c0123bf1b0f5 100644
--- a/services/java/com/android/server/os/SchedulingPolicyService.java
+++ b/services/core/java/com/android/server/os/SchedulingPolicyService.java
diff --git a/services/java/com/android/server/pm/BasePermission.java b/services/core/java/com/android/server/pm/BasePermission.java
index 4f27408a6fff..4f27408a6fff 100644
--- a/services/java/com/android/server/pm/BasePermission.java
+++ b/services/core/java/com/android/server/pm/BasePermission.java
diff --git a/services/java/com/android/server/pm/GrantedPermissions.java b/services/core/java/com/android/server/pm/GrantedPermissions.java
index 14258a46a564..14258a46a564 100644
--- a/services/java/com/android/server/pm/GrantedPermissions.java
+++ b/services/core/java/com/android/server/pm/GrantedPermissions.java
diff --git a/services/java/com/android/server/pm/Installer.java b/services/core/java/com/android/server/pm/Installer.java
index 734d07136aff..6185e5010466 100644
--- a/services/java/com/android/server/pm/Installer.java
+++ b/services/core/java/com/android/server/pm/Installer.java
@@ -16,6 +16,9 @@
package com.android.server.pm;
+import com.android.server.SystemService;
+
+import android.content.Context;
import android.content.pm.PackageStats;
import android.net.LocalSocket;
import android.net.LocalSocketAddress;
@@ -25,21 +28,28 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-public final class Installer {
+public final class Installer extends SystemService {
private static final String TAG = "Installer";
private static final boolean LOCAL_DEBUG = false;
InputStream mIn;
-
OutputStream mOut;
-
LocalSocket mSocket;
byte buf[] = new byte[1024];
-
int buflen = 0;
+ public Installer(Context context) {
+ super(context);
+ }
+
+ @Override
+ public void onStart() {
+ Slog.i(TAG, "Waiting for installd to be ready.");
+ ping();
+ }
+
private boolean connect() {
if (mSocket != null) {
return true;
@@ -265,7 +275,7 @@ public final class Installer {
return execute(builder.toString());
}
- public int createUserData(String name, int uid, int userId) {
+ public int createUserData(String name, int uid, int userId, String seinfo) {
StringBuilder builder = new StringBuilder("mkuserdata");
builder.append(' ');
builder.append(name);
@@ -273,6 +283,8 @@ public final class Installer {
builder.append(uid);
builder.append(' ');
builder.append(userId);
+ builder.append(' ');
+ builder.append(seinfo != null ? seinfo : "!");
return execute(builder.toString());
}
diff --git a/services/java/com/android/server/pm/KeySetManager.java b/services/core/java/com/android/server/pm/KeySetManager.java
index 66dc1d13c0e1..66dc1d13c0e1 100644
--- a/services/java/com/android/server/pm/KeySetManager.java
+++ b/services/core/java/com/android/server/pm/KeySetManager.java
diff --git a/services/java/com/android/server/pm/PackageKeySetData.java b/services/core/java/com/android/server/pm/PackageKeySetData.java
index cb60621a851d..cb60621a851d 100644
--- a/services/java/com/android/server/pm/PackageKeySetData.java
+++ b/services/core/java/com/android/server/pm/PackageKeySetData.java
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index dc63ca27c7db..0f2bea68d98d 100755
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -38,10 +38,11 @@ import com.android.internal.content.PackageHelper;
import com.android.internal.util.FastPrintWriter;
import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.XmlUtils;
-import com.android.server.DeviceStorageMonitorService;
import com.android.server.EventLogTags;
import com.android.server.IntentResolver;
+import com.android.server.ServiceThread;
+import com.android.server.LocalServices;
import com.android.server.Watchdog;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -92,6 +93,7 @@ import android.content.pm.VerificationParams;
import android.content.pm.VerifierDeviceIdentity;
import android.content.pm.VerifierInfo;
import android.content.res.Resources;
+import android.hardware.display.DisplayManager;
import android.net.Uri;
import android.os.Binder;
import android.os.Build;
@@ -127,7 +129,6 @@ import android.util.Slog;
import android.util.SparseArray;
import android.util.Xml;
import android.view.Display;
-import android.view.WindowManager;
import java.io.BufferedOutputStream;
import java.io.File;
@@ -162,6 +163,7 @@ import libcore.io.Libcore;
import libcore.io.StructStat;
import com.android.internal.R;
+import com.android.server.storage.DeviceStorageMonitorInternal;
/**
* Keep track of all those .apks everywhere.
@@ -260,8 +262,7 @@ public class PackageManagerService extends IPackageManager.Stub {
static final String mTempContainerPrefix = "smdl2tmp";
- final HandlerThread mHandlerThread = new HandlerThread("PackageManager",
- Process.THREAD_PRIORITY_BACKGROUND);
+ final ServiceThread mHandlerThread;
final PackageHandler mHandler;
final int mSdkVersion = Build.VERSION.SDK_INT;
@@ -1067,6 +1068,12 @@ public class PackageManagerService extends IPackageManager.Stub {
return res;
}
+ private static void getDefaultDisplayMetrics(Context context, DisplayMetrics metrics) {
+ DisplayManager displayManager = (DisplayManager) context.getSystemService(
+ Context.DISPLAY_SERVICE);
+ displayManager.getDisplay(Display.DEFAULT_DISPLAY).getMetrics(metrics);
+ }
+
public PackageManagerService(Context context, Installer installer,
boolean factoryTest, boolean onlyCore) {
EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_PMS_START,
@@ -1114,17 +1121,16 @@ public class PackageManagerService extends IPackageManager.Stub {
mInstaller = installer;
- WindowManager wm = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
- Display d = wm.getDefaultDisplay();
- d.getMetrics(mMetrics);
+ getDefaultDisplayMetrics(context, mMetrics);
synchronized (mInstallLock) {
// writer
synchronized (mPackages) {
+ mHandlerThread = new ServiceThread(TAG,
+ Process.THREAD_PRIORITY_BACKGROUND, true /*allowIo*/);
mHandlerThread.start();
mHandler = new PackageHandler(mHandlerThread.getLooper());
- Watchdog.getInstance().addThread(mHandler, mHandlerThread.getName(),
- WATCHDOG_TIMEOUT);
+ Watchdog.getInstance().addThread(mHandler, WATCHDOG_TIMEOUT);
File dataDir = Environment.getDataDirectory();
mAppDataDir = new File(dataDir, "data");
@@ -2540,15 +2546,41 @@ public class PackageManagerService extends IPackageManager.Stub {
}
}
+ /**
+ * Compares two sets of signatures. Returns:
+ * <br />
+ * {@link PackageManager#SIGNATURE_NEITHER_SIGNED}: if both signature sets are null,
+ * <br />
+ * {@link PackageManager#SIGNATURE_FIRST_NOT_SIGNED}: if the first signature set is null,
+ * <br />
+ * {@link PackageManager#SIGNATURE_SECOND_NOT_SIGNED}: if the second signature set is null,
+ * <br />
+ * {@link PackageManager#SIGNATURE_MATCH}: if the two signature sets are identical,
+ * <br />
+ * {@link PackageManager#SIGNATURE_NO_MATCH}: if the two signature sets differ.
+ */
static int compareSignatures(Signature[] s1, Signature[] s2) {
if (s1 == null) {
return s2 == null
? PackageManager.SIGNATURE_NEITHER_SIGNED
: PackageManager.SIGNATURE_FIRST_NOT_SIGNED;
}
+
if (s2 == null) {
return PackageManager.SIGNATURE_SECOND_NOT_SIGNED;
}
+
+ if (s1.length != s2.length) {
+ return PackageManager.SIGNATURE_NO_MATCH;
+ }
+
+ // Since both signature sets are of size 1, we can compare without HashSets.
+ if (s1.length == 1) {
+ return s1[0].equals(s2[0]) ?
+ PackageManager.SIGNATURE_MATCH :
+ PackageManager.SIGNATURE_NO_MATCH;
+ }
+
HashSet<Signature> set1 = new HashSet<Signature>();
for (Signature sig : s1) {
set1.add(sig);
@@ -3999,7 +4031,7 @@ public class PackageManagerService extends IPackageManager.Stub {
for (int user : users) {
if (user != 0) {
res = mInstaller.createUserData(packageName,
- UserHandle.getUid(user, uid), user);
+ UserHandle.getUid(user, uid), user, seinfo);
if (res < 0) {
return res;
}
@@ -7352,6 +7384,15 @@ public class PackageManagerService extends IPackageManager.Stub {
return pkgLite.recommendedInstallLocation;
}
+ private long getMemoryLowThreshold() {
+ final DeviceStorageMonitorInternal
+ dsm = LocalServices.getService(DeviceStorageMonitorInternal.class);
+ if (dsm == null) {
+ return 0L;
+ }
+ return dsm.getMemoryLowThreshold();
+ }
+
/*
* Invoke remote method to get package information and install
* location values. Override install location based on default
@@ -7369,15 +7410,9 @@ public class PackageManagerService extends IPackageManager.Stub {
Slog.w(TAG, "Conflicting flags specified for installing on both internal and external");
ret = PackageManager.INSTALL_FAILED_INVALID_INSTALL_LOCATION;
} else {
- final long lowThreshold;
-
- final DeviceStorageMonitorService dsm = (DeviceStorageMonitorService) ServiceManager
- .getService(DeviceStorageMonitorService.SERVICE);
- if (dsm == null) {
+ final long lowThreshold = getMemoryLowThreshold();
+ if (lowThreshold == 0L) {
Log.w(TAG, "Couldn't get low memory threshold; no free limit imposed");
- lowThreshold = 0L;
- } else {
- lowThreshold = dsm.getMemoryLowThreshold();
}
try {
@@ -7935,8 +7970,8 @@ public class PackageManagerService extends IPackageManager.Stub {
boolean checkFreeStorage(IMediaContainerService imcs) throws RemoteException {
final long lowThreshold;
- final DeviceStorageMonitorService dsm = (DeviceStorageMonitorService) ServiceManager
- .getService(DeviceStorageMonitorService.SERVICE);
+ final DeviceStorageMonitorInternal
+ dsm = LocalServices.getService(DeviceStorageMonitorInternal.class);
if (dsm == null) {
Log.w(TAG, "Couldn't get low memory threshold; no free limit imposed");
lowThreshold = 0L;
@@ -9751,10 +9786,10 @@ public class PackageManagerService extends IPackageManager.Stub {
clearExternalStorageDataSync(packageName, userId, true);
if (succeeded) {
// invoke DeviceStorageMonitor's update method to clear any notifications
- DeviceStorageMonitorService dsm = (DeviceStorageMonitorService)
- ServiceManager.getService(DeviceStorageMonitorService.SERVICE);
+ DeviceStorageMonitorInternal
+ dsm = LocalServices.getService(DeviceStorageMonitorInternal.class);
if (dsm != null) {
- dsm.updateMemory();
+ dsm.checkMemory();
}
}
if(observer != null) {
@@ -11614,12 +11649,17 @@ public class PackageManagerService extends IPackageManager.Stub {
return true;
}
+ @Override
public boolean isStorageLow() {
final long token = Binder.clearCallingIdentity();
try {
- final DeviceStorageMonitorService dsm = (DeviceStorageMonitorService) ServiceManager
- .getService(DeviceStorageMonitorService.SERVICE);
- return dsm.isMemoryLow();
+ final DeviceStorageMonitorInternal
+ dsm = LocalServices.getService(DeviceStorageMonitorInternal.class);
+ if (dsm != null) {
+ return dsm.isMemoryLow();
+ } else {
+ return false;
+ }
} finally {
Binder.restoreCallingIdentity(token);
}
diff --git a/services/java/com/android/server/pm/PackageSetting.java b/services/core/java/com/android/server/pm/PackageSetting.java
index b4478610509d..b4478610509d 100644
--- a/services/java/com/android/server/pm/PackageSetting.java
+++ b/services/core/java/com/android/server/pm/PackageSetting.java
diff --git a/services/java/com/android/server/pm/PackageSettingBase.java b/services/core/java/com/android/server/pm/PackageSettingBase.java
index 7747c8f9ecdf..7747c8f9ecdf 100644
--- a/services/java/com/android/server/pm/PackageSettingBase.java
+++ b/services/core/java/com/android/server/pm/PackageSettingBase.java
diff --git a/services/java/com/android/server/pm/PackageSignatures.java b/services/core/java/com/android/server/pm/PackageSignatures.java
index 9a20be7c8d76..9a20be7c8d76 100644
--- a/services/java/com/android/server/pm/PackageSignatures.java
+++ b/services/core/java/com/android/server/pm/PackageSignatures.java
diff --git a/services/java/com/android/server/pm/PackageVerificationResponse.java b/services/core/java/com/android/server/pm/PackageVerificationResponse.java
index b2ae0dd433da..b2ae0dd433da 100644
--- a/services/java/com/android/server/pm/PackageVerificationResponse.java
+++ b/services/core/java/com/android/server/pm/PackageVerificationResponse.java
diff --git a/services/java/com/android/server/pm/PackageVerificationState.java b/services/core/java/com/android/server/pm/PackageVerificationState.java
index 3214e8895fd5..3214e8895fd5 100644
--- a/services/java/com/android/server/pm/PackageVerificationState.java
+++ b/services/core/java/com/android/server/pm/PackageVerificationState.java
diff --git a/services/java/com/android/server/pm/PendingPackage.java b/services/core/java/com/android/server/pm/PendingPackage.java
index c17cc46dbfb5..c17cc46dbfb5 100644
--- a/services/java/com/android/server/pm/PendingPackage.java
+++ b/services/core/java/com/android/server/pm/PendingPackage.java
diff --git a/services/java/com/android/server/pm/PreferredActivity.java b/services/core/java/com/android/server/pm/PreferredActivity.java
index f93ba2fe9c59..89169264b0b6 100644
--- a/services/java/com/android/server/pm/PreferredActivity.java
+++ b/services/core/java/com/android/server/pm/PreferredActivity.java
@@ -17,7 +17,6 @@
package com.android.server.pm;
import com.android.internal.util.XmlUtils;
-import com.android.server.PreferredComponent;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
diff --git a/services/java/com/android/server/PreferredComponent.java b/services/core/java/com/android/server/pm/PreferredComponent.java
index a7af252ca2ed..f437372e31a0 100644
--- a/services/java/com/android/server/PreferredComponent.java
+++ b/services/core/java/com/android/server/pm/PreferredComponent.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server;
+package com.android.server.pm;
import com.android.internal.util.XmlUtils;
diff --git a/services/java/com/android/server/pm/PreferredIntentResolver.java b/services/core/java/com/android/server/pm/PreferredIntentResolver.java
index bce24d7b8817..bce24d7b8817 100644
--- a/services/java/com/android/server/pm/PreferredIntentResolver.java
+++ b/services/core/java/com/android/server/pm/PreferredIntentResolver.java
diff --git a/services/java/com/android/server/pm/SELinuxMMAC.java b/services/core/java/com/android/server/pm/SELinuxMMAC.java
index 04f43d9676f7..1d68afa546e8 100644
--- a/services/java/com/android/server/pm/SELinuxMMAC.java
+++ b/services/core/java/com/android/server/pm/SELinuxMMAC.java
@@ -48,12 +48,11 @@ public final class SELinuxMMAC {
private static final boolean DEBUG_POLICY_INSTALL = DEBUG_POLICY || false;
// Signature seinfo values read from policy.
- private static final HashMap<Signature, String> sSigSeinfo =
- new HashMap<Signature, String>();
+ private static HashMap<Signature, Policy> sSigSeinfo =
+ new HashMap<Signature, Policy>();
- // Package name seinfo values read from policy.
- private static final HashMap<String, String> sPackageSeinfo =
- new HashMap<String, String>();
+ // Default seinfo read from policy.
+ private static String sDefaultSeinfo = null;
// Locations of potential install policy files.
private static final File[] INSTALL_POLICY_FILE = {
@@ -61,9 +60,45 @@ public final class SELinuxMMAC {
new File(Environment.getRootDirectory(), "etc/security/mac_permissions.xml"),
null};
+ // Signature policy stanzas
+ static class Policy {
+ private String seinfo;
+ private final HashMap<String, String> pkgMap;
+
+ Policy() {
+ seinfo = null;
+ pkgMap = new HashMap<String, String>();
+ }
+
+ void putSeinfo(String seinfoValue) {
+ seinfo = seinfoValue;
+ }
+
+ void putPkg(String pkg, String seinfoValue) {
+ pkgMap.put(pkg, seinfoValue);
+ }
+
+ // Valid policy stanza means there exists a global
+ // seinfo value or at least one package policy.
+ boolean isValid() {
+ return (seinfo != null) || (!pkgMap.isEmpty());
+ }
+
+ String checkPolicy(String pkgName) {
+ // Check for package name seinfo value first.
+ String seinfoValue = pkgMap.get(pkgName);
+ if (seinfoValue != null) {
+ return seinfoValue;
+ }
+
+ // Return the global seinfo value.
+ return seinfo;
+ }
+ }
+
private static void flushInstallPolicy() {
sSigSeinfo.clear();
- sPackageSeinfo.clear();
+ sDefaultSeinfo = null;
}
/**
@@ -87,6 +122,10 @@ public final class SELinuxMMAC {
}
private static boolean readInstallPolicy(File[] policyFiles) {
+ // Temp structures to hold the rules while we parse the xml file.
+ // We add all the rules together once we know there's no structural problems.
+ HashMap<Signature, Policy> sigSeinfo = new HashMap<Signature, Policy>();
+ String defaultSeinfo = null;
FileReader policyFile = null;
int i = 0;
@@ -107,8 +146,6 @@ public final class SELinuxMMAC {
Slog.d(TAG, "Using install policy file " + policyFiles[i].getPath());
- flushInstallPolicy();
-
try {
XmlPullParser parser = Xml.newPullParser();
parser.setInput(policyFile);
@@ -138,63 +175,49 @@ public final class SELinuxMMAC {
XmlUtils.skipCurrentTag(parser);
continue;
}
- String seinfo = readSeinfoTag(parser);
- if (seinfo != null) {
- if (DEBUG_POLICY_INSTALL)
- Slog.i(TAG, "<signer> tag: (" + cert + ") assigned seinfo="
- + seinfo);
-
- sSigSeinfo.put(signature, seinfo);
+ Policy policy = readPolicyTags(parser);
+ if (policy.isValid()) {
+ sigSeinfo.put(signature, policy);
}
} else if ("default".equals(tagName)) {
- String seinfo = readSeinfoTag(parser);
- if (seinfo != null) {
- if (DEBUG_POLICY_INSTALL)
- Slog.i(TAG, "<default> tag assigned seinfo=" + seinfo);
-
- // The 'null' signature is the default seinfo value
- sSigSeinfo.put(null, seinfo);
- }
- } else if ("package".equals(tagName)) {
- String pkgName = parser.getAttributeValue(null, "name");
- if (pkgName == null) {
- Slog.w(TAG, "<package> without name at "
- + parser.getPositionDescription());
- XmlUtils.skipCurrentTag(parser);
- continue;
- }
- String seinfo = readSeinfoTag(parser);
- if (seinfo != null) {
- if (DEBUG_POLICY_INSTALL)
- Slog.i(TAG, "<package> tag: (" + pkgName +
- ") assigned seinfo=" + seinfo);
+ // Value is null if default tag is absent or seinfo tag is malformed.
+ defaultSeinfo = readSeinfoTag(parser);
+ if (DEBUG_POLICY_INSTALL)
+ Slog.i(TAG, "<default> tag assigned seinfo=" + defaultSeinfo);
- sPackageSeinfo.put(pkgName, seinfo);
- }
} else {
XmlUtils.skipCurrentTag(parser);
- continue;
}
}
} catch (XmlPullParserException e) {
- Slog.w(TAG, "Got execption parsing ", e);
- } catch (IOException e) {
- Slog.w(TAG, "Got execption parsing ", e);
- }
- try {
- policyFile.close();
+ // An error outside of a stanza means a structural problem
+ // with the xml file. So ignore it.
+ Slog.w(TAG, "Got exception parsing ", e);
+ return false;
} catch (IOException e) {
- //omit
+ Slog.w(TAG, "Got exception parsing ", e);
+ return false;
+ } finally {
+ try {
+ policyFile.close();
+ } catch (IOException e) {
+ //omit
+ }
}
+
+ flushInstallPolicy();
+ sSigSeinfo = sigSeinfo;
+ sDefaultSeinfo = defaultSeinfo;
+
return true;
}
- private static String readSeinfoTag(XmlPullParser parser) throws
+ private static Policy readPolicyTags(XmlPullParser parser) throws
IOException, XmlPullParserException {
int type;
int outerDepth = parser.getDepth();
- String seinfo = null;
+ Policy policy = new Policy();
while ((type=parser.next()) != XmlPullParser.END_DOCUMENT
&& (type != XmlPullParser.END_TAG
|| parser.getDepth() > outerDepth)) {
@@ -205,19 +228,98 @@ public final class SELinuxMMAC {
String tagName = parser.getName();
if ("seinfo".equals(tagName)) {
- String seinfoValue = parser.getAttributeValue(null, "value");
- if (validateValue(seinfoValue)) {
- seinfo = seinfoValue;
- } else {
- Slog.w(TAG, "<seinfo> without valid value at "
+ String seinfo = parseSeinfo(parser);
+ if (seinfo != null) {
+ policy.putSeinfo(seinfo);
+ }
+ XmlUtils.skipCurrentTag(parser);
+ } else if ("package".equals(tagName)) {
+ String pkg = parser.getAttributeValue(null, "name");
+ if (!validatePackageName(pkg)) {
+ Slog.w(TAG, "<package> without valid name at "
+ parser.getPositionDescription());
+ XmlUtils.skipCurrentTag(parser);
+ continue;
+ }
+
+ String seinfo = readSeinfoTag(parser);
+ if (seinfo != null) {
+ policy.putPkg(pkg, seinfo);
}
+ } else {
+ XmlUtils.skipCurrentTag(parser);
+ }
+ }
+ return policy;
+ }
+
+ private static String readSeinfoTag(XmlPullParser parser) throws
+ IOException, XmlPullParserException {
+
+ int type;
+ int outerDepth = parser.getDepth();
+ String seinfo = null;
+ while ((type=parser.next()) != XmlPullParser.END_DOCUMENT
+ && (type != XmlPullParser.END_TAG
+ || parser.getDepth() > outerDepth)) {
+ if (type == XmlPullParser.END_TAG
+ || type == XmlPullParser.TEXT) {
+ continue;
+ }
+
+ String tagName = parser.getName();
+ if ("seinfo".equals(tagName)) {
+ seinfo = parseSeinfo(parser);
}
XmlUtils.skipCurrentTag(parser);
}
return seinfo;
}
+ private static String parseSeinfo(XmlPullParser parser) {
+
+ String seinfoValue = parser.getAttributeValue(null, "value");
+ if (!validateValue(seinfoValue)) {
+ Slog.w(TAG, "<seinfo> without valid value at "
+ + parser.getPositionDescription());
+ seinfoValue = null;
+ }
+ return seinfoValue;
+ }
+
+ /**
+ * General validation routine for package names.
+ * Returns a boolean indicating if the passed string
+ * is a valid android package name.
+ */
+ private static boolean validatePackageName(String name) {
+ if (name == null)
+ return false;
+
+ final int N = name.length();
+ boolean hasSep = false;
+ boolean front = true;
+ for (int i=0; i<N; i++) {
+ final char c = name.charAt(i);
+ if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
+ front = false;
+ continue;
+ }
+ if (!front) {
+ if ((c >= '0' && c <= '9') || c == '_') {
+ continue;
+ }
+ }
+ if (c == '.') {
+ hasSep = true;
+ front = true;
+ continue;
+ }
+ return false;
+ }
+ return hasSep;
+ }
+
/**
* General validation routine for tag values.
* Returns a boolean indicating if the passed string
@@ -245,10 +347,11 @@ public final class SELinuxMMAC {
* The label is attached to the ApplicationInfo instance of the package.
* @param PackageParser.Package object representing the package
* to labeled.
- * @return String holding the value of the seinfo label that was assigned.
- * Value may be null which indicates no seinfo label was assigned.
+ * @return boolean which determines whether a non null seinfo label
+ * was assigned to the package. A null value simply meaning that
+ * no policy matched.
*/
- public static void assignSeinfoValue(PackageParser.Package pkg) {
+ public static boolean assignSeinfoValue(PackageParser.Package pkg) {
/*
* Non system installed apps should be treated the same. This
@@ -264,31 +367,28 @@ public final class SELinuxMMAC {
if (s == null)
continue;
- if (sSigSeinfo.containsKey(s)) {
- String seinfo = pkg.applicationInfo.seinfo = sSigSeinfo.get(s);
- if (DEBUG_POLICY_INSTALL)
- Slog.i(TAG, "package (" + pkg.packageName +
- ") labeled with seinfo=" + seinfo);
+ Policy policy = sSigSeinfo.get(s);
+ if (policy != null) {
+ String seinfo = policy.checkPolicy(pkg.packageName);
+ if (seinfo != null) {
+ pkg.applicationInfo.seinfo = seinfo;
+ if (DEBUG_POLICY_INSTALL)
+ Slog.i(TAG, "package (" + pkg.packageName +
+ ") labeled with seinfo=" + seinfo);
- return;
+ return true;
+ }
}
}
-
- // Check for seinfo labeled by package.
- if (sPackageSeinfo.containsKey(pkg.packageName)) {
- String seinfo = pkg.applicationInfo.seinfo = sPackageSeinfo.get(pkg.packageName);
- if (DEBUG_POLICY_INSTALL)
- Slog.i(TAG, "package (" + pkg.packageName +
- ") labeled with seinfo=" + seinfo);
- return;
- }
}
// If we have a default seinfo value then great, otherwise
// we set a null object and that is what we started with.
- String seinfo = pkg.applicationInfo.seinfo = sSigSeinfo.get(null);
+ pkg.applicationInfo.seinfo = sDefaultSeinfo;
if (DEBUG_POLICY_INSTALL)
- Slog.i(TAG, "package (" + pkg.packageName +
- ") labeled with seinfo=" + (seinfo == null ? "null" : seinfo));
+ Slog.i(TAG, "package (" + pkg.packageName + ") labeled with seinfo="
+ + (sDefaultSeinfo == null ? "null" : sDefaultSeinfo));
+
+ return (sDefaultSeinfo != null);
}
}
diff --git a/services/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 19bfe01600fd..8f18b2391b7d 100644
--- a/services/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -2679,7 +2679,8 @@ final class Settings {
ps.setInstalled((ps.pkgFlags&ApplicationInfo.FLAG_SYSTEM) != 0, userHandle);
// Need to create a data directory for all apps under this user.
installer.createUserData(ps.name,
- UserHandle.getUid(userHandle, ps.appId), userHandle);
+ UserHandle.getUid(userHandle, ps.appId), userHandle,
+ ps.pkg.applicationInfo.seinfo);
}
readDefaultPreferredAppsLPw(service, userHandle);
writePackageRestrictionsLPr(userHandle);
diff --git a/services/java/com/android/server/pm/SharedUserSetting.java b/services/core/java/com/android/server/pm/SharedUserSetting.java
index ca1eeea69745..ca1eeea69745 100644
--- a/services/java/com/android/server/pm/SharedUserSetting.java
+++ b/services/core/java/com/android/server/pm/SharedUserSetting.java
diff --git a/services/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index c33134a24d19..c33134a24d19 100644
--- a/services/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
diff --git a/services/java/com/android/server/power/DisplayBlanker.java b/services/core/java/com/android/server/power/DisplayBlanker.java
index 6072053f96f2..6072053f96f2 100644
--- a/services/java/com/android/server/power/DisplayBlanker.java
+++ b/services/core/java/com/android/server/power/DisplayBlanker.java
diff --git a/services/java/com/android/server/power/DisplayPowerController.java b/services/core/java/com/android/server/power/DisplayPowerController.java
index 30bc9226da24..e83f734995b7 100644
--- a/services/java/com/android/server/power/DisplayPowerController.java
+++ b/services/core/java/com/android/server/power/DisplayPowerController.java
@@ -16,10 +16,10 @@
package com.android.server.power;
-import com.android.server.LightsService;
-import com.android.server.TwilightService;
-import com.android.server.TwilightService.TwilightState;
-import com.android.server.display.DisplayManagerService;
+import com.android.server.lights.LightsManager;
+import com.android.server.twilight.TwilightListener;
+import com.android.server.twilight.TwilightManager;
+import com.android.server.twilight.TwilightState;
import android.animation.Animator;
import android.animation.ObjectAnimator;
@@ -179,13 +179,10 @@ final class DisplayPowerController {
private Handler mCallbackHandler;
// The lights service.
- private final LightsService mLights;
+ private final LightsManager mLights;
// The twilight service.
- private final TwilightService mTwilight;
-
- // The display manager.
- private final DisplayManagerService mDisplayManager;
+ private final TwilightManager mTwilight;
// The sensor manager.
private final SensorManager mSensorManager;
@@ -196,6 +193,9 @@ final class DisplayPowerController {
// The light sensor, or null if not available or needed.
private Sensor mLightSensor;
+ // The doze screen brightness.
+ private final int mScreenBrightnessDozeConfig;
+
// The dim screen brightness.
private final int mScreenBrightnessDimConfig;
@@ -351,8 +351,7 @@ final class DisplayPowerController {
* Creates the display power controller.
*/
public DisplayPowerController(Looper looper, Context context, Notifier notifier,
- LightsService lights, TwilightService twilight, SensorManager sensorManager,
- DisplayManagerService displayManager,
+ LightsManager lights, TwilightManager twilight, SensorManager sensorManager,
SuspendBlocker displaySuspendBlocker, DisplayBlanker displayBlanker,
Callbacks callbacks, Handler callbackHandler) {
mHandler = new DisplayControllerHandler(looper);
@@ -365,10 +364,12 @@ final class DisplayPowerController {
mLights = lights;
mTwilight = twilight;
mSensorManager = sensorManager;
- mDisplayManager = displayManager;
final Resources resources = context.getResources();
+ mScreenBrightnessDozeConfig = clampAbsoluteBrightness(resources.getInteger(
+ com.android.internal.R.integer.config_screenBrightnessDoze));
+
mScreenBrightnessDimConfig = clampAbsoluteBrightness(resources.getInteger(
com.android.internal.R.integer.config_screenBrightnessDim));
@@ -526,9 +527,8 @@ final class DisplayPowerController {
}
private void initialize() {
- mPowerState = new DisplayPowerState(
- new ElectronBeam(mDisplayManager), mDisplayBlanker,
- mLights.getLight(LightsService.LIGHT_ID_BACKLIGHT));
+ mPowerState = new DisplayPowerState(new ElectronBeam(), mDisplayBlanker,
+ mLights.getLight(LightsManager.LIGHT_ID_BACKLIGHT));
mElectronBeamOnAnimator = ObjectAnimator.ofFloat(
mPowerState, DisplayPowerState.ELECTRON_BEAM_LEVEL, 0.0f, 1.0f);
@@ -565,7 +565,7 @@ final class DisplayPowerController {
final boolean mustNotify;
boolean mustInitialize = false;
boolean updateAutoBrightness = mTwilightChanged;
- boolean wasDim = false;
+ boolean wasDimOrDoze = false;
mTwilightChanged = false;
synchronized (mLock) {
@@ -585,7 +585,8 @@ final class DisplayPowerController {
!= mPendingRequestLocked.screenAutoBrightnessAdjustment) {
updateAutoBrightness = true;
}
- wasDim = (mPowerRequest.screenState == DisplayPowerRequest.SCREEN_STATE_DIM);
+ wasDimOrDoze = (mPowerRequest.screenState == DisplayPowerRequest.SCREEN_STATE_DIM
+ || mPowerRequest.screenState == DisplayPowerRequest.SCREEN_STATE_DOZE);
mPowerRequest.copyFrom(mPendingRequestLocked);
mWaitingForNegativeProximity |= mPendingWaitForNegativeProximityLocked;
mPendingWaitForNegativeProximityLocked = false;
@@ -631,12 +632,12 @@ final class DisplayPowerController {
// Turn on the light sensor if needed.
if (mLightSensor != null) {
- setLightSensorEnabled(mPowerRequest.useAutoBrightness
- && wantScreenOn(mPowerRequest.screenState), updateAutoBrightness);
+ setLightSensorEnabled(mPowerRequest.wantLightSensorEnabled(),
+ updateAutoBrightness);
}
// Set the screen brightness.
- if (wantScreenOn(mPowerRequest.screenState)) {
+ if (mPowerRequest.wantScreenOnAny()) {
int target;
boolean slow;
if (mScreenAutoBrightness >= 0 && mLightSensorEnabled) {
@@ -653,12 +654,16 @@ final class DisplayPowerController {
slow = false;
mUsingScreenAutoBrightness = false;
}
- if (mPowerRequest.screenState == DisplayPowerRequest.SCREEN_STATE_DIM) {
+ if (mPowerRequest.screenState == DisplayPowerRequest.SCREEN_STATE_DOZE) {
+ // Dim quickly to the doze state.
+ target = mScreenBrightnessDozeConfig;
+ slow = false;
+ } else if (mPowerRequest.screenState == DisplayPowerRequest.SCREEN_STATE_DIM) {
// Dim quickly by at least some minimum amount.
target = Math.min(target - SCREEN_DIM_MINIMUM_REDUCTION,
mScreenBrightnessDimConfig);
slow = false;
- } else if (wasDim) {
+ } else if (wasDimOrDoze) {
// Brighten quickly.
slow = false;
}
@@ -674,7 +679,7 @@ final class DisplayPowerController {
// Screen off due to proximity.
setScreenOn(false);
unblockScreenOn();
- } else if (wantScreenOn(mPowerRequest.screenState)) {
+ } else if (mPowerRequest.wantScreenOnAny()) {
// Want screen on.
// Wait for previous off animation to complete beforehand.
// It is relatively short but if we cancel it and switch to the
@@ -1219,6 +1224,7 @@ final class DisplayPowerController {
pw.println();
pw.println("Display Controller Configuration:");
+ pw.println(" mScreenBrightnessDozeConfig=" + mScreenBrightnessDozeConfig);
pw.println(" mScreenBrightnessDimConfig=" + mScreenBrightnessDimConfig);
pw.println(" mScreenBrightnessRangeMinimum=" + mScreenBrightnessRangeMinimum);
pw.println(" mScreenBrightnessRangeMaximum=" + mScreenBrightnessRangeMaximum);
@@ -1296,15 +1302,6 @@ final class DisplayPowerController {
}
}
- private static boolean wantScreenOn(int state) {
- switch (state) {
- case DisplayPowerRequest.SCREEN_STATE_BRIGHT:
- case DisplayPowerRequest.SCREEN_STATE_DIM:
- return true;
- }
- return false;
- }
-
/**
* Asynchronous callbacks from the power controller to the power manager service.
*/
@@ -1370,8 +1367,7 @@ final class DisplayPowerController {
}
};
- private final TwilightService.TwilightListener mTwilightListener =
- new TwilightService.TwilightListener() {
+ private final TwilightListener mTwilightListener = new TwilightListener() {
@Override
public void onTwilightStateChanged() {
mTwilightChanged = true;
diff --git a/services/java/com/android/server/power/DisplayPowerRequest.java b/services/core/java/com/android/server/power/DisplayPowerRequest.java
index 22f17d77ef71..6061a4037d33 100644
--- a/services/java/com/android/server/power/DisplayPowerRequest.java
+++ b/services/core/java/com/android/server/power/DisplayPowerRequest.java
@@ -30,10 +30,11 @@ import android.os.PowerManager;
*/
final class DisplayPowerRequest {
public static final int SCREEN_STATE_OFF = 0;
- public static final int SCREEN_STATE_DIM = 1;
- public static final int SCREEN_STATE_BRIGHT = 2;
+ public static final int SCREEN_STATE_DOZE = 1;
+ public static final int SCREEN_STATE_DIM = 2;
+ public static final int SCREEN_STATE_BRIGHT = 3;
- // The requested minimum screen power state: off, dim or bright.
+ // The requested minimum screen power state: off, doze, dim or bright.
public int screenState;
// If true, the proximity sensor overrides the screen state when an object is
@@ -75,6 +76,23 @@ final class DisplayPowerRequest {
copyFrom(other);
}
+ // Returns true if we want the screen on in any mode, including doze.
+ public boolean wantScreenOnAny() {
+ return screenState != SCREEN_STATE_OFF;
+ }
+
+ // Returns true if we want the screen on in a normal mode, excluding doze.
+ // This is usually what we want to tell the rest of the system. For compatibility
+ // reasons, we pretend the screen is off when dozing.
+ public boolean wantScreenOnNormal() {
+ return screenState == SCREEN_STATE_DIM || screenState == SCREEN_STATE_BRIGHT;
+ }
+
+ public boolean wantLightSensorEnabled() {
+ // Specifically, we don't want the light sensor while dozing.
+ return useAutoBrightness && wantScreenOnNormal();
+ }
+
public void copyFrom(DisplayPowerRequest other) {
screenState = other.screenState;
useProximitySensor = other.useProximitySensor;
diff --git a/services/java/com/android/server/power/DisplayPowerState.java b/services/core/java/com/android/server/power/DisplayPowerState.java
index 5c048f150a45..8e331ad9b984 100644
--- a/services/java/com/android/server/power/DisplayPowerState.java
+++ b/services/core/java/com/android/server/power/DisplayPowerState.java
@@ -16,7 +16,7 @@
package com.android.server.power;
-import com.android.server.LightsService;
+import com.android.server.lights.Light;
import android.os.AsyncTask;
import android.os.Handler;
@@ -56,7 +56,7 @@ final class DisplayPowerState {
private final Choreographer mChoreographer;
private final ElectronBeam mElectronBeam;
private final DisplayBlanker mDisplayBlanker;
- private final LightsService.Light mBacklight;
+ private final Light mBacklight;
private final PhotonicModulator mPhotonicModulator;
private boolean mScreenOn;
@@ -72,7 +72,7 @@ final class DisplayPowerState {
private Runnable mCleanListener;
public DisplayPowerState(ElectronBeam electronBean,
- DisplayBlanker displayBlanker, LightsService.Light backlight) {
+ DisplayBlanker displayBlanker, Light backlight) {
mHandler = new Handler(true /*async*/);
mChoreographer = Choreographer.getInstance();
mElectronBeam = electronBean;
diff --git a/services/java/com/android/server/power/ElectronBeam.java b/services/core/java/com/android/server/power/ElectronBeam.java
index 729bd1669e83..64921d73a784 100644
--- a/services/java/com/android/server/power/ElectronBeam.java
+++ b/services/core/java/com/android/server/power/ElectronBeam.java
@@ -23,6 +23,8 @@ import java.nio.FloatBuffer;
import android.graphics.PixelFormat;
import android.graphics.SurfaceTexture;
+import android.hardware.display.DisplayManagerInternal;
+import android.hardware.display.DisplayManagerInternal.DisplayTransactionListener;
import android.opengl.EGL14;
import android.opengl.EGLConfig;
import android.opengl.EGLContext;
@@ -40,8 +42,7 @@ import android.view.Surface;
import android.view.SurfaceControl;
import android.view.SurfaceSession;
-import com.android.server.display.DisplayManagerService;
-import com.android.server.display.DisplayTransactionListener;
+import com.android.server.LocalServices;
/**
* Bzzzoooop! *crackle*
@@ -77,7 +78,7 @@ final class ElectronBeam {
private boolean mPrepared;
private int mMode;
- private final DisplayManagerService mDisplayManager;
+ private final DisplayManagerInternal mDisplayManagerInternal;
private int mDisplayLayerStack; // layer stack associated with primary display
private int mDisplayWidth; // real width, not rotated
private int mDisplayHeight; // real height, not rotated
@@ -118,8 +119,8 @@ final class ElectronBeam {
public static final int MODE_FADE = 2;
- public ElectronBeam(DisplayManagerService displayManager) {
- mDisplayManager = displayManager;
+ public ElectronBeam() {
+ mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class);
}
/**
@@ -138,7 +139,7 @@ final class ElectronBeam {
// Get the display size and layer stack.
// This is not expected to change while the electron beam surface is showing.
- DisplayInfo displayInfo = mDisplayManager.getDisplayInfo(Display.DEFAULT_DISPLAY);
+ DisplayInfo displayInfo = mDisplayManagerInternal.getDisplayInfo(Display.DEFAULT_DISPLAY);
mDisplayLayerStack = displayInfo.layerStack;
mDisplayWidth = displayInfo.getNaturalWidth();
mDisplayHeight = displayInfo.getNaturalHeight();
@@ -527,7 +528,7 @@ final class ElectronBeam {
mSurface = new Surface();
mSurface.copyFrom(mSurfaceControl);
- mSurfaceLayout = new NaturalSurfaceLayout(mDisplayManager, mSurfaceControl);
+ mSurfaceLayout = new NaturalSurfaceLayout(mDisplayManagerInternal, mSurfaceControl);
mSurfaceLayout.onDisplayTransaction();
} finally {
SurfaceControl.closeTransaction();
@@ -685,20 +686,21 @@ final class ElectronBeam {
* owns the electron beam.
*/
private static final class NaturalSurfaceLayout implements DisplayTransactionListener {
- private final DisplayManagerService mDisplayManager;
+ private final DisplayManagerInternal mDisplayManagerInternal;
private SurfaceControl mSurfaceControl;
- public NaturalSurfaceLayout(DisplayManagerService displayManager, SurfaceControl surfaceControl) {
- mDisplayManager = displayManager;
+ public NaturalSurfaceLayout(DisplayManagerInternal displayManagerInternal,
+ SurfaceControl surfaceControl) {
+ mDisplayManagerInternal = displayManagerInternal;
mSurfaceControl = surfaceControl;
- mDisplayManager.registerDisplayTransactionListener(this);
+ mDisplayManagerInternal.registerDisplayTransactionListener(this);
}
public void dispose() {
synchronized (this) {
mSurfaceControl = null;
}
- mDisplayManager.unregisterDisplayTransactionListener(this);
+ mDisplayManagerInternal.unregisterDisplayTransactionListener(this);
}
@Override
@@ -708,7 +710,8 @@ final class ElectronBeam {
return;
}
- DisplayInfo displayInfo = mDisplayManager.getDisplayInfo(Display.DEFAULT_DISPLAY);
+ DisplayInfo displayInfo =
+ mDisplayManagerInternal.getDisplayInfo(Display.DEFAULT_DISPLAY);
switch (displayInfo.rotation) {
case Surface.ROTATION_0:
mSurfaceControl.setPosition(0, 0);
diff --git a/services/java/com/android/server/power/Notifier.java b/services/core/java/com/android/server/power/Notifier.java
index 264e2e9c3b15..264e2e9c3b15 100644
--- a/services/java/com/android/server/power/Notifier.java
+++ b/services/core/java/com/android/server/power/Notifier.java
diff --git a/services/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 134718b38c96..c251af1268c1 100644
--- a/services/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -20,12 +20,12 @@ import com.android.internal.app.IAppOpsService;
import com.android.internal.app.IBatteryStats;
import com.android.server.BatteryService;
import com.android.server.EventLogTags;
-import com.android.server.LightsService;
-import com.android.server.TwilightService;
+import com.android.server.LocalServices;
+import com.android.server.ServiceThread;
+import com.android.server.lights.Light;
+import com.android.server.lights.LightsManager;
+import com.android.server.twilight.TwilightManager;
import com.android.server.Watchdog;
-import com.android.server.am.ActivityManagerService;
-import com.android.server.display.DisplayManagerService;
-import com.android.server.dreams.DreamManagerService;
import android.Manifest;
import android.content.BroadcastReceiver;
@@ -38,16 +38,17 @@ import android.content.res.Resources;
import android.database.ContentObserver;
import android.hardware.SensorManager;
import android.hardware.SystemSensorManager;
+import android.hardware.display.DisplayManagerInternal;
import android.net.Uri;
import android.os.BatteryManager;
import android.os.Binder;
import android.os.Handler;
-import android.os.HandlerThread;
import android.os.IBinder;
import android.os.IPowerManager;
import android.os.Looper;
import android.os.Message;
import android.os.PowerManager;
+import android.os.PowerManagerInternal;
import android.os.Process;
import android.os.RemoteException;
import android.os.SystemClock;
@@ -56,6 +57,7 @@ import android.os.SystemService;
import android.os.UserHandle;
import android.os.WorkSource;
import android.provider.Settings;
+import android.service.dreams.DreamManagerInternal;
import android.util.EventLog;
import android.util.Log;
import android.util.Slog;
@@ -72,7 +74,7 @@ import libcore.util.Objects;
* The power manager service is responsible for coordinating power management
* functions on the device.
*/
-public final class PowerManagerService extends IPowerManager.Stub
+public final class PowerManagerService extends com.android.server.SystemService
implements Watchdog.Monitor {
private static final String TAG = "PowerManagerService";
@@ -81,7 +83,7 @@ public final class PowerManagerService extends IPowerManager.Stub
// Message: Sent when a user activity timeout occurs to update the power state.
private static final int MSG_USER_ACTIVITY_TIMEOUT = 1;
- // Message: Sent when the device enters or exits a napping or dreaming state.
+ // Message: Sent when the device enters or exits a dreaming or dozing state.
private static final int MSG_SANDMAN = 2;
// Message: Sent when the screen on blocker is released.
private static final int MSG_SCREEN_ON_BLOCKER_RELEASED = 3;
@@ -115,19 +117,21 @@ public final class PowerManagerService extends IPowerManager.Stub
// Wakefulness: The device is asleep and can only be awoken by a call to wakeUp().
// The screen should be off or in the process of being turned off by the display controller.
+ // The device typically passes through the dozing state first.
private static final int WAKEFULNESS_ASLEEP = 0;
// Wakefulness: The device is fully awake. It can be put to sleep by a call to goToSleep().
- // When the user activity timeout expires, the device may start napping or go to sleep.
+ // When the user activity timeout expires, the device may start dreaming or go to sleep.
private static final int WAKEFULNESS_AWAKE = 1;
- // Wakefulness: The device is napping. It is deciding whether to dream or go to sleep
- // but hasn't gotten around to it yet. It can be awoken by a call to wakeUp(), which
- // ends the nap. User activity may brighten the screen but does not end the nap.
- private static final int WAKEFULNESS_NAPPING = 2;
// Wakefulness: The device is dreaming. It can be awoken by a call to wakeUp(),
// which ends the dream. The device goes to sleep when goToSleep() is called, when
// the dream ends or when unplugged.
// User activity may brighten the screen but does not end the dream.
- private static final int WAKEFULNESS_DREAMING = 3;
+ private static final int WAKEFULNESS_DREAMING = 2;
+ // Wakefulness: The device is dozing. It is almost asleep but is allowing a special
+ // low-power "doze" dream to run which keeps the display on but lets the application
+ // processor be suspended. It can be awoken by a call to wakeUp() which ends the dream.
+ // The device fully goes to sleep if the dream cannot be started or ends on its own.
+ private static final int WAKEFULNESS_DOZING = 3;
// Summarizes the state of all active wakelocks.
private static final int WAKE_LOCK_CPU = 1 << 0;
@@ -136,6 +140,7 @@ public final class PowerManagerService extends IPowerManager.Stub
private static final int WAKE_LOCK_BUTTON_BRIGHT = 1 << 3;
private static final int WAKE_LOCK_PROXIMITY_SCREEN_OFF = 1 << 4;
private static final int WAKE_LOCK_STAY_AWAKE = 1 << 5; // only set if already awake
+ private static final int WAKE_LOCK_DOZE = 1 << 6;
// Summarizes the user activity state.
private static final int USER_ACTIVITY_SCREEN_BRIGHT = 1 << 0;
@@ -162,26 +167,21 @@ public final class PowerManagerService extends IPowerManager.Stub
// Poll interval in milliseconds for watching boot animation finished.
private static final int BOOT_ANIMATION_POLL_INTERVAL = 200;
- // If the battery level drops by this percentage and the user activity timeout
- // has expired, then assume the device is receiving insufficient current to charge
- // effectively and terminate the dream.
- private static final int DREAM_BATTERY_LEVEL_DRAIN_CUTOFF = 5;
-
- private Context mContext;
- private LightsService mLightsService;
+ private final Context mContext;
+ private LightsManager mLightsManager;
private BatteryService mBatteryService;
- private DisplayManagerService mDisplayManagerService;
+ private DisplayManagerInternal mDisplayManagerInternal;
private IBatteryStats mBatteryStats;
private IAppOpsService mAppOps;
- private HandlerThread mHandlerThread;
+ private ServiceThread mHandlerThread;
private PowerManagerHandler mHandler;
private WindowManagerPolicy mPolicy;
private Notifier mNotifier;
private DisplayPowerController mDisplayPowerController;
private WirelessChargerDetector mWirelessChargerDetector;
private SettingsObserver mSettingsObserver;
- private DreamManagerService mDreamManager;
- private LightsService.Light mAttentionLight;
+ private DreamManagerInternal mDreamManager;
+ private Light mAttentionLight;
private final Object mLock = new Object();
@@ -193,6 +193,10 @@ public final class PowerManagerService extends IPowerManager.Stub
// This is distinct from the screen power state, which is managed separately.
private int mWakefulness;
+ // True if the sandman has just been summoned for the first time since entering the
+ // dreaming or dozing state. Indicates whether a new dream should begin.
+ private boolean mSandmanSummoned;
+
// True if MSG_SANDMAN has been scheduled.
private boolean mSandmanScheduled;
@@ -231,9 +235,6 @@ public final class PowerManagerService extends IPowerManager.Stub
// requested because it is updated asynchronously by the display power controller.
private final DisplayPowerRequest mDisplayPowerRequest = new DisplayPowerRequest();
- // The time the screen was last turned off, in elapsedRealtime() timebase.
- private long mLastScreenOffEventElapsedRealTime;
-
// True if the display power state has been fully applied, which means the display
// is actually on or actually off or whatever was requested.
private boolean mDisplayReady;
@@ -266,6 +267,14 @@ public final class PowerManagerService extends IPowerManager.Stub
// True if boot completed occurred. We keep the screen on until this happens.
private boolean mBootCompleted;
+ // True if auto-suspend mode is enabled.
+ // Refer to autosuspend.h.
+ private boolean mAutoSuspendModeEnabled;
+
+ // True if interactive mode is enabled.
+ // Refer to power.h.
+ private boolean mInteractiveModeEnabled;
+
// True if the device is plugged into a power source.
private boolean mIsPowered;
@@ -283,6 +292,12 @@ public final class PowerManagerService extends IPowerManager.Stub
// The current dock state.
private int mDockState = Intent.EXTRA_DOCK_STATE_UNDOCKED;
+ // True to decouple auto-suspend mode from the display state.
+ private boolean mDecoupleAutoSuspendModeFromDisplayConfig;
+
+ // True to decouple interactive mode from the display state.
+ private boolean mDecoupleInteractiveModeFromDisplayConfig;
+
// True if the device should wake up when plugged or unplugged.
private boolean mWakeUpWhenPluggedOrUnpluggedConfig;
@@ -301,6 +316,22 @@ public final class PowerManagerService extends IPowerManager.Stub
// Default value for dreams activate-on-dock
private boolean mDreamsActivatedOnDockByDefaultConfig;
+ // True if dreams can run while not plugged in.
+ private boolean mDreamsEnabledOnBatteryConfig;
+
+ // Minimum battery level to allow dreaming when powered.
+ // Use -1 to disable this safety feature.
+ private int mDreamsBatteryLevelMinimumWhenPoweredConfig;
+
+ // Minimum battery level to allow dreaming when not powered.
+ // Use -1 to disable this safety feature.
+ private int mDreamsBatteryLevelMinimumWhenNotPoweredConfig;
+
+ // If the battery level drops by this percentage and the user activity timeout
+ // has expired, then assume the device is receiving insufficient current to charge
+ // effectively and terminate the dream. Use -1 to disable this safety feature.
+ private int mDreamsBatteryLevelDrainCutoffConfig;
+
// True if dreams are enabled by the user.
private boolean mDreamsEnabledSetting;
@@ -376,7 +407,9 @@ public final class PowerManagerService extends IPowerManager.Stub
private static native void nativeSetInteractive(boolean enable);
private static native void nativeSetAutoSuspend(boolean enable);
- public PowerManagerService() {
+ public PowerManagerService(Context context) {
+ super(context);
+ mContext = context;
synchronized (mLock) {
mWakeLockSuspendBlocker = createSuspendBlockerLocked("PowerManagerService.WakeLocks");
mDisplaySuspendBlocker = createSuspendBlockerLocked("PowerManagerService.Display");
@@ -392,25 +425,31 @@ public final class PowerManagerService extends IPowerManager.Stub
nativeSetPowerState(true, true);
}
+ @Override
+ public void onStart() {
+ publishBinderService(Context.POWER_SERVICE, new BinderService());
+ publishLocalService(PowerManagerInternal.class, new LocalService());
+ }
+
/**
* Initialize the power manager.
* Must be called before any other functions within the power manager are called.
*/
- public void init(Context context, LightsService ls,
- ActivityManagerService am, BatteryService bs, IBatteryStats bss,
- IAppOpsService appOps, DisplayManagerService dm) {
- mContext = context;
- mLightsService = ls;
+ public void init(LightsManager ls,
+ BatteryService bs, IBatteryStats bss,
+ IAppOpsService appOps) {
+ mLightsManager = ls;
mBatteryService = bs;
mBatteryStats = bss;
mAppOps = appOps;
- mDisplayManagerService = dm;
- mHandlerThread = new HandlerThread(TAG);
+ mDisplayManagerInternal = getLocalService(DisplayManagerInternal.class);
+ mHandlerThread = new ServiceThread(TAG,
+ Process.THREAD_PRIORITY_DISPLAY, false /*allowIo*/);
mHandlerThread.start();
mHandler = new PowerManagerHandler(mHandlerThread.getLooper());
Watchdog.getInstance().addMonitor(this);
- Watchdog.getInstance().addThread(mHandler, mHandlerThread.getName());
+ Watchdog.getInstance().addThread(mHandler);
// Forcibly turn the screen on at boot so that it is in a known power state.
// We do this in init() rather than in the constructor because setting the
@@ -421,18 +460,18 @@ public final class PowerManagerService extends IPowerManager.Stub
mDisplayBlanker.unblankAllDisplays();
}
- public void setPolicy(WindowManagerPolicy policy) {
+ void setPolicy(WindowManagerPolicy policy) {
synchronized (mLock) {
mPolicy = policy;
}
}
- public void systemReady(TwilightService twilight, DreamManagerService dreamManager) {
+ public void systemReady() {
synchronized (mLock) {
mSystemReady = true;
- mDreamManager = dreamManager;
+ mDreamManager = LocalServices.getService(DreamManagerInternal.class);
- PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
+ PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
mScreenBrightnessSettingMinimum = pm.getMinimumScreenBrightnessSetting();
mScreenBrightnessSettingMaximum = pm.getMaximumScreenBrightnessSetting();
mScreenBrightnessSettingDefault = pm.getDefaultScreenBrightnessSetting();
@@ -448,15 +487,16 @@ public final class PowerManagerService extends IPowerManager.Stub
// The display power controller runs on the power manager service's
// own handler thread to ensure timely operation.
mDisplayPowerController = new DisplayPowerController(mHandler.getLooper(),
- mContext, mNotifier, mLightsService, twilight, sensorManager,
- mDisplayManagerService, mDisplaySuspendBlocker, mDisplayBlanker,
+ mContext, mNotifier, mLightsManager,
+ LocalServices.getService(TwilightManager.class), sensorManager,
+ mDisplaySuspendBlocker, mDisplayBlanker,
mDisplayPowerControllerCallbacks, mHandler);
mWirelessChargerDetector = new WirelessChargerDetector(sensorManager,
createSuspendBlockerLocked("PowerManagerService.WirelessChargerDetector"),
mHandler);
mSettingsObserver = new SettingsObserver(mHandler);
- mAttentionLight = mLightsService.getLight(LightsService.LIGHT_ID_ATTENTION);
+ mAttentionLight = mLightsManager.getLight(LightsManager.LIGHT_ID_ATTENTION);
// Register for broadcasts from other components of the system.
IntentFilter filter = new IntentFilter();
@@ -515,6 +555,10 @@ public final class PowerManagerService extends IPowerManager.Stub
private void readConfigurationLocked() {
final Resources resources = mContext.getResources();
+ mDecoupleAutoSuspendModeFromDisplayConfig = resources.getBoolean(
+ com.android.internal.R.bool.config_powerDecoupleAutoSuspendModeFromDisplay);
+ mDecoupleInteractiveModeFromDisplayConfig = resources.getBoolean(
+ com.android.internal.R.bool.config_powerDecoupleInteractiveModeFromDisplay);
mWakeUpWhenPluggedOrUnpluggedConfig = resources.getBoolean(
com.android.internal.R.bool.config_unplugTurnsOnScreen);
mSuspendWhenScreenOffDueToProximityConfig = resources.getBoolean(
@@ -527,6 +571,14 @@ public final class PowerManagerService extends IPowerManager.Stub
com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault);
mDreamsActivatedOnDockByDefaultConfig = resources.getBoolean(
com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault);
+ mDreamsEnabledOnBatteryConfig = resources.getBoolean(
+ com.android.internal.R.bool.config_dreamsEnabledOnBattery);
+ mDreamsBatteryLevelMinimumWhenPoweredConfig = resources.getInteger(
+ com.android.internal.R.integer.config_dreamsBatteryLevelMinimumWhenPowered);
+ mDreamsBatteryLevelMinimumWhenNotPoweredConfig = resources.getInteger(
+ com.android.internal.R.integer.config_dreamsBatteryLevelMinimumWhenNotPowered);
+ mDreamsBatteryLevelDrainCutoffConfig = resources.getInteger(
+ com.android.internal.R.integer.config_dreamsBatteryLevelDrainCutoff);
}
private void updateSettingsLocked() {
@@ -579,41 +631,6 @@ public final class PowerManagerService extends IPowerManager.Stub
updatePowerStateLocked();
}
- @Override // Binder call
- public void acquireWakeLockWithUid(IBinder lock, int flags, String tag, String packageName,
- int uid) {
- acquireWakeLock(lock, flags, tag, packageName, new WorkSource(uid));
- }
-
- @Override // Binder call
- public void acquireWakeLock(IBinder lock, int flags, String tag, String packageName,
- WorkSource ws) {
- if (lock == null) {
- throw new IllegalArgumentException("lock must not be null");
- }
- if (packageName == null) {
- throw new IllegalArgumentException("packageName must not be null");
- }
- PowerManager.validateWakeLockParameters(flags, tag);
-
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.WAKE_LOCK, null);
- if (ws != null && ws.size() != 0) {
- mContext.enforceCallingOrSelfPermission(
- android.Manifest.permission.UPDATE_DEVICE_STATS, null);
- } else {
- ws = null;
- }
-
- final int uid = Binder.getCallingUid();
- final int pid = Binder.getCallingPid();
- final long ident = Binder.clearCallingIdentity();
- try {
- acquireWakeLockInternal(lock, flags, tag, packageName, ws, uid, pid);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
private void acquireWakeLockInternal(IBinder lock, int flags, String tag, String packageName,
WorkSource ws, int uid, int pid) {
synchronized (mLock) {
@@ -668,22 +685,6 @@ public final class PowerManagerService extends IPowerManager.Stub
}
}
- @Override // Binder call
- public void releaseWakeLock(IBinder lock, int flags) {
- if (lock == null) {
- throw new IllegalArgumentException("lock must not be null");
- }
-
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.WAKE_LOCK, null);
-
- final long ident = Binder.clearCallingIdentity();
- try {
- releaseWakeLockInternal(lock, flags);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
private void releaseWakeLockInternal(IBinder lock, int flags) {
synchronized (mLock) {
int index = findWakeLockIndexLocked(lock);
@@ -746,43 +747,6 @@ public final class PowerManagerService extends IPowerManager.Stub
}
}
- @Override // Binder call
- public void updateWakeLockUids(IBinder lock, int[] uids) {
- WorkSource ws = null;
-
- if (uids != null) {
- ws = new WorkSource();
- // XXX should WorkSource have a way to set uids as an int[] instead of adding them
- // one at a time?
- for (int i = 0; i < uids.length; i++) {
- ws.add(uids[i]);
- }
- }
- updateWakeLockWorkSource(lock, ws);
- }
-
- @Override // Binder call
- public void updateWakeLockWorkSource(IBinder lock, WorkSource ws) {
- if (lock == null) {
- throw new IllegalArgumentException("lock must not be null");
- }
-
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.WAKE_LOCK, null);
- if (ws != null && ws.size() != 0) {
- mContext.enforceCallingOrSelfPermission(
- android.Manifest.permission.UPDATE_DEVICE_STATS, null);
- } else {
- ws = null;
- }
-
- final long ident = Binder.clearCallingIdentity();
- try {
- updateWakeLockWorkSourceInternal(lock, ws);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
private void updateWakeLockWorkSourceInternal(IBinder lock, WorkSource ws) {
synchronized (mLock) {
int index = findWakeLockIndexLocked(lock);
@@ -834,16 +798,6 @@ public final class PowerManagerService extends IPowerManager.Stub
}
}
- @Override // Binder call
- public boolean isWakeLockLevelSupported(int level) {
- final long ident = Binder.clearCallingIdentity();
- try {
- return isWakeLockLevelSupportedInternal(level);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
@SuppressWarnings("deprecation")
private boolean isWakeLockLevelSupportedInternal(int level) {
synchronized (mLock) {
@@ -852,6 +806,7 @@ public final class PowerManagerService extends IPowerManager.Stub
case PowerManager.SCREEN_DIM_WAKE_LOCK:
case PowerManager.SCREEN_BRIGHT_WAKE_LOCK:
case PowerManager.FULL_WAKE_LOCK:
+ case PowerManager.DOZE_WAKE_LOCK:
return true;
case PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK:
@@ -863,40 +818,6 @@ public final class PowerManagerService extends IPowerManager.Stub
}
}
- @Override // Binder call
- public void userActivity(long eventTime, int event, int flags) {
- final long now = SystemClock.uptimeMillis();
- if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER)
- != PackageManager.PERMISSION_GRANTED) {
- // Once upon a time applications could call userActivity().
- // Now we require the DEVICE_POWER permission. Log a warning and ignore the
- // request instead of throwing a SecurityException so we don't break old apps.
- synchronized (mLock) {
- if (now >= mLastWarningAboutUserActivityPermission + (5 * 60 * 1000)) {
- mLastWarningAboutUserActivityPermission = now;
- Slog.w(TAG, "Ignoring call to PowerManager.userActivity() because the "
- + "caller does not have DEVICE_POWER permission. "
- + "Please fix your app! "
- + " pid=" + Binder.getCallingPid()
- + " uid=" + Binder.getCallingUid());
- }
- }
- return;
- }
-
- if (eventTime > SystemClock.uptimeMillis()) {
- throw new IllegalArgumentException("event time must not be in the future");
- }
-
- final int uid = Binder.getCallingUid();
- final long ident = Binder.clearCallingIdentity();
- try {
- userActivityInternal(eventTime, event, flags, uid);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
// Called from native code.
private void userActivityFromNative(long eventTime, int event, int flags) {
userActivityInternal(eventTime, event, flags, Process.SYSTEM_UID);
@@ -918,7 +839,8 @@ public final class PowerManagerService extends IPowerManager.Stub
}
if (eventTime < mLastSleepTime || eventTime < mLastWakeTime
- || mWakefulness == WAKEFULNESS_ASLEEP || !mBootCompleted || !mSystemReady) {
+ || mWakefulness == WAKEFULNESS_ASLEEP || mWakefulness == WAKEFULNESS_DOZING
+ || !mBootCompleted || !mSystemReady) {
return false;
}
@@ -941,22 +863,6 @@ public final class PowerManagerService extends IPowerManager.Stub
return false;
}
- @Override // Binder call
- public void wakeUp(long eventTime) {
- if (eventTime > SystemClock.uptimeMillis()) {
- throw new IllegalArgumentException("event time must not be in the future");
- }
-
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
-
- final long ident = Binder.clearCallingIdentity();
- try {
- wakeUpInternal(eventTime);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
// Called from native code.
private void wakeUpFromNative(long eventTime) {
wakeUpInternal(eventTime);
@@ -983,18 +889,21 @@ public final class PowerManagerService extends IPowerManager.Stub
switch (mWakefulness) {
case WAKEFULNESS_ASLEEP:
Slog.i(TAG, "Waking up from sleep...");
- sendPendingNotificationsLocked();
- mNotifier.onWakeUpStarted();
- mSendWakeUpFinishedNotificationWhenReady = true;
break;
case WAKEFULNESS_DREAMING:
Slog.i(TAG, "Waking up from dream...");
break;
- case WAKEFULNESS_NAPPING:
- Slog.i(TAG, "Waking up from nap...");
+ case WAKEFULNESS_DOZING:
+ Slog.i(TAG, "Waking up from dozing...");
break;
}
+ if (mWakefulness != WAKEFULNESS_DREAMING) {
+ sendPendingNotificationsLocked();
+ mNotifier.onWakeUpStarted();
+ mSendWakeUpFinishedNotificationWhenReady = true;
+ }
+
mLastWakeTime = eventTime;
mWakefulness = WAKEFULNESS_AWAKE;
mDirty |= DIRTY_WAKEFULNESS;
@@ -1004,22 +913,6 @@ public final class PowerManagerService extends IPowerManager.Stub
return true;
}
- @Override // Binder call
- public void goToSleep(long eventTime, int reason) {
- if (eventTime > SystemClock.uptimeMillis()) {
- throw new IllegalArgumentException("event time must not be in the future");
- }
-
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
-
- final long ident = Binder.clearCallingIdentity();
- try {
- goToSleepInternal(eventTime, reason);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
// Called from native code.
private void goToSleepFromNative(long eventTime, int reason) {
goToSleepInternal(eventTime, reason);
@@ -1033,13 +926,17 @@ public final class PowerManagerService extends IPowerManager.Stub
}
}
+ // This method is called goToSleep for historical reasons but we actually start
+ // dozing before really going to sleep.
@SuppressWarnings("deprecation")
private boolean goToSleepNoUpdateLocked(long eventTime, int reason) {
if (DEBUG_SPEW) {
Slog.d(TAG, "goToSleepNoUpdateLocked: eventTime=" + eventTime + ", reason=" + reason);
}
- if (eventTime < mLastWakeTime || mWakefulness == WAKEFULNESS_ASLEEP
+ if (eventTime < mLastWakeTime
+ || mWakefulness == WAKEFULNESS_ASLEEP
+ || mWakefulness == WAKEFULNESS_DOZING
|| !mBootCompleted || !mSystemReady) {
return false;
}
@@ -1063,7 +960,8 @@ public final class PowerManagerService extends IPowerManager.Stub
mLastSleepTime = eventTime;
mDirty |= DIRTY_WAKEFULNESS;
- mWakefulness = WAKEFULNESS_ASLEEP;
+ mWakefulness = WAKEFULNESS_DOZING;
+ mSandmanSummoned = true;
// Report the number of wake locks that will be cleared by going to sleep.
int numWakeLocksCleared = 0;
@@ -1082,22 +980,6 @@ public final class PowerManagerService extends IPowerManager.Stub
return true;
}
- @Override // Binder call
- public void nap(long eventTime) {
- if (eventTime > SystemClock.uptimeMillis()) {
- throw new IllegalArgumentException("event time must not be in the future");
- }
-
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
-
- final long ident = Binder.clearCallingIdentity();
- try {
- napInternal(eventTime);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
private void napInternal(long eventTime) {
synchronized (mLock) {
if (napNoUpdateLocked(eventTime)) {
@@ -1119,7 +1001,26 @@ public final class PowerManagerService extends IPowerManager.Stub
Slog.i(TAG, "Nap time...");
mDirty |= DIRTY_WAKEFULNESS;
- mWakefulness = WAKEFULNESS_NAPPING;
+ mWakefulness = WAKEFULNESS_DREAMING;
+ mSandmanSummoned = true;
+ return true;
+ }
+
+ // Done dozing, drop everything and go to sleep.
+ private boolean reallyGoToSleepNoUpdateLocked(long eventTime) {
+ if (DEBUG_SPEW) {
+ Slog.d(TAG, "reallyGoToSleepNoUpdateLocked: eventTime=" + eventTime);
+ }
+
+ if (eventTime < mLastWakeTime || mWakefulness == WAKEFULNESS_ASLEEP
+ || !mBootCompleted || !mSystemReady) {
+ return false;
+ }
+
+ Slog.i(TAG, "Sleeping...");
+
+ mDirty |= DIRTY_WAKEFULNESS;
+ mWakefulness = WAKEFULNESS_ASLEEP;
return true;
}
@@ -1198,7 +1099,7 @@ public final class PowerManagerService extends IPowerManager.Stub
mPlugType = mBatteryService.getPlugType();
mBatteryLevel = mBatteryService.getBatteryLevel();
- if (DEBUG) {
+ if (DEBUG_SPEW) {
Slog.d(TAG, "updateIsPoweredLocked: wasPowered=" + wasPowered
+ ", mIsPowered=" + mIsPowered
+ ", oldPlugType=" + oldPlugType
@@ -1258,8 +1159,7 @@ public final class PowerManagerService extends IPowerManager.Stub
}
// If already dreaming and becoming powered, then don't wake.
- if (mIsPowered && (mWakefulness == WAKEFULNESS_NAPPING
- || mWakefulness == WAKEFULNESS_DREAMING)) {
+ if (mIsPowered && mWakefulness == WAKEFULNESS_DREAMING) {
return false;
}
@@ -1306,35 +1206,45 @@ public final class PowerManagerService extends IPowerManager.Stub
mWakeLockSummary |= WAKE_LOCK_CPU;
break;
case PowerManager.FULL_WAKE_LOCK:
- if (mWakefulness != WAKEFULNESS_ASLEEP) {
+ if (mWakefulness == WAKEFULNESS_AWAKE
+ || mWakefulness == WAKEFULNESS_DREAMING) {
mWakeLockSummary |= WAKE_LOCK_CPU
| WAKE_LOCK_SCREEN_BRIGHT | WAKE_LOCK_BUTTON_BRIGHT;
- if (mWakefulness == WAKEFULNESS_AWAKE) {
- mWakeLockSummary |= WAKE_LOCK_STAY_AWAKE;
- }
+ }
+ if (mWakefulness == WAKEFULNESS_AWAKE) {
+ mWakeLockSummary |= WAKE_LOCK_STAY_AWAKE;
}
break;
case PowerManager.SCREEN_BRIGHT_WAKE_LOCK:
- if (mWakefulness != WAKEFULNESS_ASLEEP) {
+ if (mWakefulness == WAKEFULNESS_AWAKE
+ || mWakefulness == WAKEFULNESS_DREAMING) {
mWakeLockSummary |= WAKE_LOCK_CPU | WAKE_LOCK_SCREEN_BRIGHT;
- if (mWakefulness == WAKEFULNESS_AWAKE) {
- mWakeLockSummary |= WAKE_LOCK_STAY_AWAKE;
- }
+ }
+ if (mWakefulness == WAKEFULNESS_AWAKE) {
+ mWakeLockSummary |= WAKE_LOCK_STAY_AWAKE;
}
break;
case PowerManager.SCREEN_DIM_WAKE_LOCK:
- if (mWakefulness != WAKEFULNESS_ASLEEP) {
+ if (mWakefulness == WAKEFULNESS_AWAKE
+ || mWakefulness == WAKEFULNESS_DREAMING) {
mWakeLockSummary |= WAKE_LOCK_CPU | WAKE_LOCK_SCREEN_DIM;
- if (mWakefulness == WAKEFULNESS_AWAKE) {
- mWakeLockSummary |= WAKE_LOCK_STAY_AWAKE;
- }
+ }
+ if (mWakefulness == WAKEFULNESS_AWAKE) {
+ mWakeLockSummary |= WAKE_LOCK_STAY_AWAKE;
}
break;
case PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK:
- if (mWakefulness != WAKEFULNESS_ASLEEP) {
+ if (mWakefulness == WAKEFULNESS_AWAKE
+ || mWakefulness == WAKEFULNESS_DREAMING
+ || mWakefulness == WAKEFULNESS_DOZING) {
mWakeLockSummary |= WAKE_LOCK_PROXIMITY_SCREEN_OFF;
}
break;
+ case PowerManager.DOZE_WAKE_LOCK:
+ if (mWakefulness == WAKEFULNESS_DOZING) {
+ mWakeLockSummary |= WAKE_LOCK_DOZE;
+ }
+ break;
}
}
@@ -1359,7 +1269,8 @@ public final class PowerManagerService extends IPowerManager.Stub
mHandler.removeMessages(MSG_USER_ACTIVITY_TIMEOUT);
long nextTimeout = 0;
- if (mWakefulness != WAKEFULNESS_ASLEEP) {
+ if (mWakefulness == WAKEFULNESS_AWAKE
+ || mWakefulness == WAKEFULNESS_DREAMING) {
final int screenOffTimeout = getScreenOffTimeoutLocked();
final int screenDimDuration = getScreenDimDurationLocked(screenOffTimeout);
@@ -1380,8 +1291,7 @@ public final class PowerManagerService extends IPowerManager.Stub
&& mLastUserActivityTimeNoChangeLights >= mLastWakeTime) {
nextTimeout = mLastUserActivityTimeNoChangeLights + screenOffTimeout;
if (now < nextTimeout
- && mDisplayPowerRequest.screenState
- != DisplayPowerRequest.SCREEN_STATE_OFF) {
+ && mDisplayPowerRequest.wantScreenOnNormal()) {
mUserActivitySummary = mDisplayPowerRequest.screenState
== DisplayPowerRequest.SCREEN_STATE_BRIGHT ?
USER_ACTIVITY_SCREEN_BRIGHT : USER_ACTIVITY_SCREEN_DIM;
@@ -1443,7 +1353,7 @@ public final class PowerManagerService extends IPowerManager.Stub
/**
* Updates the wakefulness of the device.
*
- * This is the function that decides whether the device should start napping
+ * This is the function that decides whether the device should start dreaming
* based on the current wake locks and user activity state. It may modify mDirty
* if the wakefulness changes.
*
@@ -1532,7 +1442,7 @@ public final class PowerManagerService extends IPowerManager.Stub
}
/**
- * Called when the device enters or exits a napping or dreaming state.
+ * Called when the device enters or exits a dreaming or dozing state.
*
* We do this asynchronously because we must call out of the power manager to start
* the dream and we don't want to hold our lock while doing so. There is a risk that
@@ -1540,46 +1450,60 @@ public final class PowerManagerService extends IPowerManager.Stub
*/
private void handleSandman() { // runs on handler thread
// Handle preconditions.
- boolean startDreaming = false;
+ final boolean startDreaming;
+ final int wakefulness;
synchronized (mLock) {
mSandmanScheduled = false;
- boolean canDream = canDreamLocked();
- if (DEBUG_SPEW) {
- Slog.d(TAG, "handleSandman: canDream=" + canDream
- + ", mWakefulness=" + wakefulnessToString(mWakefulness));
- }
-
- if (canDream && mWakefulness == WAKEFULNESS_NAPPING) {
- startDreaming = true;
+ wakefulness = mWakefulness;
+ if (mSandmanSummoned) {
+ startDreaming = ((wakefulness == WAKEFULNESS_DREAMING && canDreamLocked())
+ || wakefulness == WAKEFULNESS_DOZING);
+ mSandmanSummoned = false;
+ } else {
+ startDreaming = false;
}
}
// Start dreaming if needed.
// We only control the dream on the handler thread, so we don't need to worry about
// concurrent attempts to start or stop the dream.
- boolean isDreaming = false;
+ final boolean isDreaming;
if (mDreamManager != null) {
+ // Restart the dream whenever the sandman is summoned.
if (startDreaming) {
- mDreamManager.startDream();
+ mDreamManager.stopDream();
+ mDreamManager.startDream(wakefulness == WAKEFULNESS_DOZING);
}
isDreaming = mDreamManager.isDreaming();
+ } else {
+ isDreaming = false;
}
// Update dream state.
- // We might need to stop the dream again if the preconditions changed.
- boolean continueDreaming = false;
synchronized (mLock) {
- if (isDreaming && canDreamLocked()) {
- if (mWakefulness == WAKEFULNESS_NAPPING) {
- mWakefulness = WAKEFULNESS_DREAMING;
- mDirty |= DIRTY_WAKEFULNESS;
- mBatteryLevelWhenDreamStarted = mBatteryLevel;
- updatePowerStateLocked();
- continueDreaming = true;
- } else if (mWakefulness == WAKEFULNESS_DREAMING) {
- if (!isBeingKeptAwakeLocked()
+ // Remember the initial battery level when the dream started.
+ if (startDreaming && isDreaming) {
+ mBatteryLevelWhenDreamStarted = mBatteryLevel;
+ if (wakefulness == WAKEFULNESS_DOZING) {
+ Slog.i(TAG, "Dozing...");
+ } else {
+ Slog.i(TAG, "Dreaming...");
+ }
+ }
+
+ // If preconditions changed, wait for the next iteration to determine
+ // whether the dream should continue (or be restarted).
+ if (mSandmanSummoned || mWakefulness != wakefulness) {
+ return; // wait for next cycle
+ }
+
+ // Determine whether the dream should continue.
+ if (wakefulness == WAKEFULNESS_DREAMING) {
+ if (isDreaming && canDreamLocked()) {
+ if (mDreamsBatteryLevelDrainCutoffConfig >= 0
&& mBatteryLevel < mBatteryLevelWhenDreamStarted
- - DREAM_BATTERY_LEVEL_DRAIN_CUTOFF) {
+ - mDreamsBatteryLevelDrainCutoffConfig
+ && !isBeingKeptAwakeLocked()) {
// If the user activity timeout expired and the battery appears
// to be draining faster than it is charging then stop dreaming
// and go to sleep.
@@ -1589,53 +1513,64 @@ public final class PowerManagerService extends IPowerManager.Stub
+ mBatteryLevelWhenDreamStarted + "%. "
+ "Battery level now: " + mBatteryLevel + "%.");
} else {
- continueDreaming = true;
+ return; // continue dreaming
}
}
- }
- if (!continueDreaming) {
- handleDreamFinishedLocked();
+
+ // Dream has ended or will be stopped. Update the power state.
+ if (isItBedTimeYetLocked()) {
+ goToSleepNoUpdateLocked(SystemClock.uptimeMillis(),
+ PowerManager.GO_TO_SLEEP_REASON_TIMEOUT);
+ updatePowerStateLocked();
+ } else {
+ wakeUpNoUpdateLocked(SystemClock.uptimeMillis());
+ updatePowerStateLocked();
+ }
+ } else if (wakefulness == WAKEFULNESS_DOZING) {
+ if (isDreaming) {
+ return; // continue dozing
+ }
+
+ // Doze has ended or will be stopped. Update the power state.
+ reallyGoToSleepNoUpdateLocked(SystemClock.uptimeMillis());
+ updatePowerStateLocked();
}
}
- // Stop dreaming if needed.
- // It's possible that something else changed to make us need to start the dream again.
- // If so, then the power manager will have posted another message to the handler
- // to take care of it later.
- if (mDreamManager != null) {
- if (!continueDreaming) {
- mDreamManager.stopDream();
- }
+ // Stop dream.
+ if (isDreaming) {
+ mDreamManager.stopDream();
}
}
/**
- * Returns true if the device is allowed to dream in its current state
- * assuming that it is currently napping or dreaming.
+ * Returns true if the device is allowed to dream in its current state.
+ * This function is not called when dozing.
*/
private boolean canDreamLocked() {
- return mDreamsSupportedConfig
- && mDreamsEnabledSetting
- && mDisplayPowerRequest.screenState != DisplayPowerRequest.SCREEN_STATE_OFF
- && mBootCompleted
- && (mIsPowered || isBeingKeptAwakeLocked());
- }
-
- /**
- * Called when a dream is ending to figure out what to do next.
- */
- private void handleDreamFinishedLocked() {
- if (mWakefulness == WAKEFULNESS_NAPPING
- || mWakefulness == WAKEFULNESS_DREAMING) {
- if (isItBedTimeYetLocked()) {
- goToSleepNoUpdateLocked(SystemClock.uptimeMillis(),
- PowerManager.GO_TO_SLEEP_REASON_TIMEOUT);
- updatePowerStateLocked();
- } else {
- wakeUpNoUpdateLocked(SystemClock.uptimeMillis());
- updatePowerStateLocked();
+ if (mWakefulness != WAKEFULNESS_DREAMING
+ || !mDreamsSupportedConfig
+ || !mDreamsEnabledSetting
+ || !mDisplayPowerRequest.wantScreenOnNormal()
+ || !mBootCompleted) {
+ return false;
+ }
+ if (!isBeingKeptAwakeLocked()) {
+ if (!mIsPowered && !mDreamsEnabledOnBatteryConfig) {
+ return false;
+ }
+ if (!mIsPowered
+ && mDreamsBatteryLevelMinimumWhenNotPoweredConfig >= 0
+ && mBatteryLevel < mDreamsBatteryLevelMinimumWhenNotPoweredConfig) {
+ return false;
+ }
+ if (mIsPowered
+ && mDreamsBatteryLevelMinimumWhenPoweredConfig >= 0
+ && mBatteryLevel < mDreamsBatteryLevelMinimumWhenPoweredConfig) {
+ return false;
}
}
+ return true;
}
private void handleScreenOnBlockerReleased() {
@@ -1657,19 +1592,10 @@ public final class PowerManagerService extends IPowerManager.Stub
if ((dirty & (DIRTY_WAKE_LOCKS | DIRTY_USER_ACTIVITY | DIRTY_WAKEFULNESS
| DIRTY_ACTUAL_DISPLAY_POWER_STATE_UPDATED | DIRTY_BOOT_COMPLETED
| DIRTY_SETTINGS | DIRTY_SCREEN_ON_BLOCKER_RELEASED)) != 0) {
- int newScreenState = getDesiredScreenPowerStateLocked();
- if (newScreenState != mDisplayPowerRequest.screenState) {
- if (newScreenState == DisplayPowerRequest.SCREEN_STATE_OFF
- && mDisplayPowerRequest.screenState
- != DisplayPowerRequest.SCREEN_STATE_OFF) {
- mLastScreenOffEventElapsedRealTime = SystemClock.elapsedRealtime();
- }
-
- mDisplayPowerRequest.screenState = newScreenState;
- nativeSetPowerState(
- newScreenState != DisplayPowerRequest.SCREEN_STATE_OFF,
- newScreenState == DisplayPowerRequest.SCREEN_STATE_BRIGHT);
- }
+ final int newScreenState = getDesiredScreenPowerStateLocked();
+ mDisplayPowerRequest.screenState = newScreenState;
+ nativeSetPowerState(isScreenOnLocked(),
+ newScreenState == DisplayPowerRequest.SCREEN_STATE_BRIGHT);
int screenBrightness = mScreenBrightnessSettingDefault;
float screenAutoBrightnessAdjustment = 0.0f;
@@ -1736,6 +1662,10 @@ public final class PowerManagerService extends IPowerManager.Stub
return DisplayPowerRequest.SCREEN_STATE_OFF;
}
+ if ((mWakeLockSummary & WAKE_LOCK_DOZE) != 0) {
+ return DisplayPowerRequest.SCREEN_STATE_DOZE;
+ }
+
if ((mWakeLockSummary & WAKE_LOCK_SCREEN_BRIGHT) != 0
|| (mUserActivitySummary & USER_ACTIVITY_SCREEN_BRIGHT) != 0
|| !mBootCompleted) {
@@ -1787,7 +1717,18 @@ public final class PowerManagerService extends IPowerManager.Stub
*/
private void updateSuspendBlockerLocked() {
final boolean needWakeLockSuspendBlocker = ((mWakeLockSummary & WAKE_LOCK_CPU) != 0);
- final boolean needDisplaySuspendBlocker = needDisplaySuspendBlocker();
+ final boolean needDisplaySuspendBlocker = needDisplaySuspendBlockerLocked();
+ final boolean autoSuspend = !needDisplaySuspendBlocker;
+
+ // Disable auto-suspend if needed.
+ if (!autoSuspend) {
+ if (mDecoupleAutoSuspendModeFromDisplayConfig) {
+ setAutoSuspendModeLocked(false);
+ }
+ if (mDecoupleInteractiveModeFromDisplayConfig) {
+ setInteractiveModeLocked(true);
+ }
+ }
// First acquire suspend blockers if needed.
if (needWakeLockSuspendBlocker && !mHoldingWakeLockSuspendBlocker) {
@@ -1808,17 +1749,27 @@ public final class PowerManagerService extends IPowerManager.Stub
mDisplaySuspendBlocker.release();
mHoldingDisplaySuspendBlocker = false;
}
+
+ // Enable auto-suspend if needed.
+ if (autoSuspend) {
+ if (mDecoupleInteractiveModeFromDisplayConfig) {
+ setInteractiveModeLocked(false);
+ }
+ if (mDecoupleAutoSuspendModeFromDisplayConfig) {
+ setAutoSuspendModeLocked(true);
+ }
+ }
}
/**
* Return true if we must keep a suspend blocker active on behalf of the display.
* We do so if the screen is on or is in transition between states.
*/
- private boolean needDisplaySuspendBlocker() {
+ private boolean needDisplaySuspendBlockerLocked() {
if (!mDisplayReady) {
return true;
}
- if (mDisplayPowerRequest.screenState != DisplayPowerRequest.SCREEN_STATE_OFF) {
+ if (mDisplayPowerRequest.wantScreenOnNormal()) {
// If we asked for the screen to be on but it is off due to the proximity
// sensor then we may suspend but only if the configuration allows it.
// On some hardware it may not be safe to suspend because the proximity
@@ -1828,26 +1779,46 @@ public final class PowerManagerService extends IPowerManager.Stub
return true;
}
}
+ // Let the system suspend if the screen is off or dozing.
return false;
}
- @Override // Binder call
- public boolean isScreenOn() {
- final long ident = Binder.clearCallingIdentity();
- try {
- return isScreenOnInternal();
- } finally {
- Binder.restoreCallingIdentity(ident);
+ private void setAutoSuspendModeLocked(boolean enable) {
+ if (enable != mAutoSuspendModeEnabled) {
+ if (DEBUG) {
+ Slog.d(TAG, "Setting auto-suspend mode to " + enable);
+ }
+ mAutoSuspendModeEnabled = enable;
+ nativeSetAutoSuspend(enable);
+ }
+ }
+
+ private void setInteractiveModeLocked(boolean enable) {
+ if (enable != mInteractiveModeEnabled) {
+ if (DEBUG) {
+ Slog.d(TAG, "Setting interactive mode to " + enable);
+ }
+ mInteractiveModeEnabled = enable;
+ nativeSetInteractive(enable);
}
}
private boolean isScreenOnInternal() {
synchronized (mLock) {
- return !mSystemReady
- || mDisplayPowerRequest.screenState != DisplayPowerRequest.SCREEN_STATE_OFF;
+ // XXX This is a temporary hack to let certain parts of the system pretend the
+ // screen is still on even when dozing and we would normally want to report
+ // screen off. Will be removed when the window manager is modified to use
+ // the true blanking state of the display.
+ return isScreenOnLocked()
+ || mWakefulness == WAKEFULNESS_DOZING;
}
}
+ private boolean isScreenOnLocked() {
+ return mWakefulness == WAKEFULNESS_AWAKE
+ || mWakefulness == WAKEFULNESS_DREAMING;
+ }
+
private void handleBatteryStateChangedLocked() {
mDirty |= DIRTY_BATTERY_STATE;
updatePowerStateLocked();
@@ -1885,43 +1856,6 @@ public final class PowerManagerService extends IPowerManager.Stub
updatePowerStateLocked();
}
- /**
- * Reboots the device.
- *
- * @param confirm If true, shows a reboot confirmation dialog.
- * @param reason The reason for the reboot, or null if none.
- * @param wait If true, this call waits for the reboot to complete and does not return.
- */
- @Override // Binder call
- public void reboot(boolean confirm, String reason, boolean wait) {
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.REBOOT, null);
-
- final long ident = Binder.clearCallingIdentity();
- try {
- shutdownOrRebootInternal(false, confirm, reason, wait);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
- /**
- * Shuts down the device.
- *
- * @param confirm If true, shows a shutdown confirmation dialog.
- * @param wait If true, this call waits for the shutdown to complete and does not return.
- */
- @Override // Binder call
- public void shutdown(boolean confirm, boolean wait) {
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.REBOOT, null);
-
- final long ident = Binder.clearCallingIdentity();
- try {
- shutdownOrRebootInternal(true, confirm, null, wait);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
private void shutdownOrRebootInternal(final boolean shutdown, final boolean confirm,
final String reason, boolean wait) {
if (mHandler == null || !mSystemReady) {
@@ -1959,22 +1893,6 @@ public final class PowerManagerService extends IPowerManager.Stub
}
}
- /**
- * Crash the runtime (causing a complete restart of the Android framework).
- * Requires REBOOT permission. Mostly for testing. Should not return.
- */
- @Override // Binder call
- public void crash(String message) {
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.REBOOT, null);
-
- final long ident = Binder.clearCallingIdentity();
- try {
- crashInternal(message);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
private void crashInternal(final String message) {
Thread t = new Thread("PowerManagerService.crash()") {
@Override
@@ -1990,51 +1908,11 @@ public final class PowerManagerService extends IPowerManager.Stub
}
}
- /**
- * Set the setting that determines whether the device stays on when plugged in.
- * The argument is a bit string, with each bit specifying a power source that,
- * when the device is connected to that source, causes the device to stay on.
- * See {@link android.os.BatteryManager} for the list of power sources that
- * can be specified. Current values include {@link android.os.BatteryManager#BATTERY_PLUGGED_AC}
- * and {@link android.os.BatteryManager#BATTERY_PLUGGED_USB}
- *
- * Used by "adb shell svc power stayon ..."
- *
- * @param val an {@code int} containing the bits that specify which power sources
- * should cause the device to stay on.
- */
- @Override // Binder call
- public void setStayOnSetting(int val) {
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.WRITE_SETTINGS, null);
-
- final long ident = Binder.clearCallingIdentity();
- try {
- setStayOnSettingInternal(val);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
private void setStayOnSettingInternal(int val) {
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.STAY_ON_WHILE_PLUGGED_IN, val);
}
- /**
- * Used by device administration to set the maximum screen off timeout.
- *
- * This method must only be called by the device administration policy manager.
- */
- @Override // Binder call
- public void setMaximumScreenOffTimeoutFromDeviceAdmin(int timeMs) {
- final long ident = Binder.clearCallingIdentity();
- try {
- setMaximumScreenOffTimeoutFromDeviceAdminInternal(timeMs);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
private void setMaximumScreenOffTimeoutFromDeviceAdminInternal(int timeMs) {
synchronized (mLock) {
mMaximumScreenOffTimeoutFromDeviceAdmin = timeMs;
@@ -2048,23 +1926,8 @@ public final class PowerManagerService extends IPowerManager.Stub
&& mMaximumScreenOffTimeoutFromDeviceAdmin < Integer.MAX_VALUE;
}
- /**
- * Used by the phone application to make the attention LED flash when ringing.
- */
- @Override // Binder call
- public void setAttentionLight(boolean on, int color) {
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
-
- final long ident = Binder.clearCallingIdentity();
- try {
- setAttentionLightInternal(on, color);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
private void setAttentionLightInternal(boolean on, int color) {
- LightsService.Light light;
+ Light light;
synchronized (mLock) {
if (!mSystemReady) {
return;
@@ -2073,38 +1936,7 @@ public final class PowerManagerService extends IPowerManager.Stub
}
// Control light outside of lock.
- light.setFlashing(color, LightsService.LIGHT_FLASH_HARDWARE, (on ? 3 : 0), 0);
- }
-
- /**
- * Used by the Watchdog.
- */
- public long timeSinceScreenWasLastOn() {
- synchronized (mLock) {
- if (mDisplayPowerRequest.screenState != DisplayPowerRequest.SCREEN_STATE_OFF) {
- return 0;
- }
- return SystemClock.elapsedRealtime() - mLastScreenOffEventElapsedRealTime;
- }
- }
-
- /**
- * Used by the window manager to override the screen brightness based on the
- * current foreground activity.
- *
- * This method must only be called by the window manager.
- *
- * @param brightness The overridden brightness, or -1 to disable the override.
- */
- public void setScreenBrightnessOverrideFromWindowManager(int brightness) {
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
-
- final long ident = Binder.clearCallingIdentity();
- try {
- setScreenBrightnessOverrideFromWindowManagerInternal(brightness);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
+ light.setFlashing(color, Light.LIGHT_FLASH_HARDWARE, (on ? 3 : 0), 0);
}
private void setScreenBrightnessOverrideFromWindowManagerInternal(int brightness) {
@@ -2117,40 +1949,6 @@ public final class PowerManagerService extends IPowerManager.Stub
}
}
- /**
- * Used by the window manager to override the button brightness based on the
- * current foreground activity.
- *
- * This method must only be called by the window manager.
- *
- * @param brightness The overridden brightness, or -1 to disable the override.
- */
- public void setButtonBrightnessOverrideFromWindowManager(int brightness) {
- // Do nothing.
- // Button lights are not currently supported in the new implementation.
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
- }
-
- /**
- * Used by the window manager to override the user activity timeout based on the
- * current foreground activity. It can only be used to make the timeout shorter
- * than usual, not longer.
- *
- * This method must only be called by the window manager.
- *
- * @param timeoutMillis The overridden timeout, or -1 to disable the override.
- */
- public void setUserActivityTimeoutOverrideFromWindowManager(long timeoutMillis) {
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
-
- final long ident = Binder.clearCallingIdentity();
- try {
- setUserActivityTimeoutOverrideFromWindowManagerInternal(timeoutMillis);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
private void setUserActivityTimeoutOverrideFromWindowManagerInternal(long timeoutMillis) {
synchronized (mLock) {
if (mUserActivityTimeoutOverrideFromWindowManager != timeoutMillis) {
@@ -2161,30 +1959,6 @@ public final class PowerManagerService extends IPowerManager.Stub
}
}
- /**
- * Used by the settings application and brightness control widgets to
- * temporarily override the current screen brightness setting so that the
- * user can observe the effect of an intended settings change without applying
- * it immediately.
- *
- * The override will be canceled when the setting value is next updated.
- *
- * @param brightness The overridden brightness.
- *
- * @see android.provider.Settings.System#SCREEN_BRIGHTNESS
- */
- @Override // Binder call
- public void setTemporaryScreenBrightnessSettingOverride(int brightness) {
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
-
- final long ident = Binder.clearCallingIdentity();
- try {
- setTemporaryScreenBrightnessSettingOverrideInternal(brightness);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
private void setTemporaryScreenBrightnessSettingOverrideInternal(int brightness) {
synchronized (mLock) {
if (mTemporaryScreenBrightnessSettingOverride != brightness) {
@@ -2195,30 +1969,6 @@ public final class PowerManagerService extends IPowerManager.Stub
}
}
- /**
- * Used by the settings application and brightness control widgets to
- * temporarily override the current screen auto-brightness adjustment setting so that the
- * user can observe the effect of an intended settings change without applying
- * it immediately.
- *
- * The override will be canceled when the setting value is next updated.
- *
- * @param adj The overridden brightness, or Float.NaN to disable the override.
- *
- * @see Settings.System#SCREEN_AUTO_BRIGHTNESS_ADJ
- */
- @Override // Binder call
- public void setTemporaryScreenAutoBrightnessAdjustmentSettingOverride(float adj) {
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
-
- final long ident = Binder.clearCallingIdentity();
- try {
- setTemporaryScreenAutoBrightnessAdjustmentSettingOverrideInternal(adj);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
private void setTemporaryScreenAutoBrightnessAdjustmentSettingOverrideInternal(float adj) {
synchronized (mLock) {
// Note: This condition handles NaN because NaN is not equal to any other
@@ -2265,16 +2015,7 @@ public final class PowerManagerService extends IPowerManager.Stub
}
}
- @Override // Binder call
- protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- if (mContext.checkCallingOrSelfPermission(Manifest.permission.DUMP)
- != PackageManager.PERMISSION_GRANTED) {
- pw.println("Permission Denial: can't dump PowerManager from from pid="
- + Binder.getCallingPid()
- + ", uid=" + Binder.getCallingUid());
- return;
- }
-
+ private void dumpInternal(PrintWriter pw) {
pw.println("POWER MANAGER (dumpsys power)\n");
final DisplayPowerController dpc;
@@ -2292,10 +2033,13 @@ public final class PowerManagerService extends IPowerManager.Stub
pw.println(" mProximityPositive=" + mProximityPositive);
pw.println(" mBootCompleted=" + mBootCompleted);
pw.println(" mSystemReady=" + mSystemReady);
+ pw.println(" mAutoSuspendModeEnabled=" + mAutoSuspendModeEnabled);
+ pw.println(" mInteactiveModeEnabled=" + mInteractiveModeEnabled);
pw.println(" mWakeLockSummary=0x" + Integer.toHexString(mWakeLockSummary));
pw.println(" mUserActivitySummary=0x" + Integer.toHexString(mUserActivitySummary));
pw.println(" mRequestWaitForNegativeProximity=" + mRequestWaitForNegativeProximity);
pw.println(" mSandmanScheduled=" + mSandmanScheduled);
+ pw.println(" mSandmanSummoned=" + mSandmanSummoned);
pw.println(" mLastWakeTime=" + TimeUtils.formatUptime(mLastWakeTime));
pw.println(" mLastSleepTime=" + TimeUtils.formatUptime(mLastSleepTime));
pw.println(" mSendWakeUpFinishedNotificationWhenReady="
@@ -2311,6 +2055,10 @@ public final class PowerManagerService extends IPowerManager.Stub
pw.println();
pw.println("Settings and Configuration:");
+ pw.println(" mDecoupleAutoSuspendModeFromDisplayConfig="
+ + mDecoupleAutoSuspendModeFromDisplayConfig);
+ pw.println(" mDecoupleInteractiveModeFromDisplayConfig="
+ + mDecoupleInteractiveModeFromDisplayConfig);
pw.println(" mWakeUpWhenPluggedOrUnpluggedConfig="
+ mWakeUpWhenPluggedOrUnpluggedConfig);
pw.println(" mSuspendWhenScreenOffDueToProximityConfig="
@@ -2321,6 +2069,14 @@ public final class PowerManagerService extends IPowerManager.Stub
+ mDreamsActivatedOnSleepByDefaultConfig);
pw.println(" mDreamsActivatedOnDockByDefaultConfig="
+ mDreamsActivatedOnDockByDefaultConfig);
+ pw.println(" mDreamsEnabledOnBatteryConfig="
+ + mDreamsEnabledOnBatteryConfig);
+ pw.println(" mDreamsBatteryLevelMinimumWhenPoweredConfig="
+ + mDreamsBatteryLevelMinimumWhenPoweredConfig);
+ pw.println(" mDreamsBatteryLevelMinimumWhenNotPoweredConfig="
+ + mDreamsBatteryLevelMinimumWhenNotPoweredConfig);
+ pw.println(" mDreamsBatteryLevelDrainCutoffConfig="
+ + mDreamsBatteryLevelDrainCutoffConfig);
pw.println(" mDreamsEnabledSetting=" + mDreamsEnabledSetting);
pw.println(" mDreamsActivateOnSleepSetting=" + mDreamsActivateOnSleepSetting);
pw.println(" mDreamsActivateOnDockSetting=" + mDreamsActivateOnDockSetting);
@@ -2396,8 +2152,8 @@ public final class PowerManagerService extends IPowerManager.Stub
return "Awake";
case WAKEFULNESS_DREAMING:
return "Dreaming";
- case WAKEFULNESS_NAPPING:
- return "Napping";
+ case WAKEFULNESS_DOZING:
+ return "Dozing";
default:
return Integer.toString(wakefulness);
}
@@ -2574,6 +2330,7 @@ public final class PowerManagerService extends IPowerManager.Stub
+ " (uid=" + mOwnerUid + ", pid=" + mOwnerPid + ", ws=" + mWorkSource + ")";
}
+ @SuppressWarnings("deprecation")
private String getLockLevelString() {
switch (mFlags & PowerManager.WAKE_LOCK_LEVEL_MASK) {
case PowerManager.FULL_WAKE_LOCK:
@@ -2586,6 +2343,8 @@ public final class PowerManagerService extends IPowerManager.Stub
return "PARTIAL_WAKE_LOCK ";
case PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK:
return "PROXIMITY_SCREEN_OFF_WAKE_LOCK";
+ case PowerManager.DOZE_WAKE_LOCK:
+ return "DOZE_WAKE_LOCK ";
default:
return "??? ";
}
@@ -2715,18 +2474,26 @@ public final class PowerManagerService extends IPowerManager.Stub
public void blankAllDisplays() {
synchronized (this) {
mBlanked = true;
- mDisplayManagerService.blankAllDisplaysFromPowerManager();
- nativeSetInteractive(false);
- nativeSetAutoSuspend(true);
+ mDisplayManagerInternal.blankAllDisplaysFromPowerManager();
+ if (!mDecoupleInteractiveModeFromDisplayConfig) {
+ setInteractiveModeLocked(false);
+ }
+ if (!mDecoupleAutoSuspendModeFromDisplayConfig) {
+ setAutoSuspendModeLocked(true);
+ }
}
}
@Override
public void unblankAllDisplays() {
synchronized (this) {
- nativeSetAutoSuspend(false);
- nativeSetInteractive(true);
- mDisplayManagerService.unblankAllDisplaysFromPowerManager();
+ if (!mDecoupleAutoSuspendModeFromDisplayConfig) {
+ setAutoSuspendModeLocked(false);
+ }
+ if (!mDecoupleInteractiveModeFromDisplayConfig) {
+ setInteractiveModeLocked(true);
+ }
+ mDisplayManagerInternal.unblankAllDisplaysFromPowerManager();
mBlanked = false;
}
}
@@ -2738,4 +2505,444 @@ public final class PowerManagerService extends IPowerManager.Stub
}
}
}
+
+ private final class BinderService extends IPowerManager.Stub {
+ @Override // Binder call
+ public void acquireWakeLockWithUid(IBinder lock, int flags, String tag,
+ String packageName, int uid) {
+ acquireWakeLock(lock, flags, tag, packageName, new WorkSource(uid));
+ }
+
+ @Override // Binder call
+ public void acquireWakeLock(IBinder lock, int flags, String tag, String packageName,
+ WorkSource ws) {
+ if (lock == null) {
+ throw new IllegalArgumentException("lock must not be null");
+ }
+ if (packageName == null) {
+ throw new IllegalArgumentException("packageName must not be null");
+ }
+ PowerManager.validateWakeLockParameters(flags, tag);
+
+ mContext.enforceCallingOrSelfPermission(android.Manifest.permission.WAKE_LOCK, null);
+ if (ws != null && ws.size() != 0) {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.UPDATE_DEVICE_STATS, null);
+ } else {
+ ws = null;
+ }
+
+ final int uid = Binder.getCallingUid();
+ final int pid = Binder.getCallingPid();
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ acquireWakeLockInternal(lock, flags, tag, packageName, ws, uid, pid);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public void releaseWakeLock(IBinder lock, int flags) {
+ if (lock == null) {
+ throw new IllegalArgumentException("lock must not be null");
+ }
+
+ mContext.enforceCallingOrSelfPermission(android.Manifest.permission.WAKE_LOCK, null);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ releaseWakeLockInternal(lock, flags);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public void updateWakeLockUids(IBinder lock, int[] uids) {
+ WorkSource ws = null;
+
+ if (uids != null) {
+ ws = new WorkSource();
+ // XXX should WorkSource have a way to set uids as an int[] instead of adding them
+ // one at a time?
+ for (int i = 0; i < uids.length; i++) {
+ ws.add(uids[i]);
+ }
+ }
+ updateWakeLockWorkSource(lock, ws);
+ }
+
+ @Override // Binder call
+ public void updateWakeLockWorkSource(IBinder lock, WorkSource ws) {
+ if (lock == null) {
+ throw new IllegalArgumentException("lock must not be null");
+ }
+
+ mContext.enforceCallingOrSelfPermission(android.Manifest.permission.WAKE_LOCK, null);
+ if (ws != null && ws.size() != 0) {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.UPDATE_DEVICE_STATS, null);
+ } else {
+ ws = null;
+ }
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ updateWakeLockWorkSourceInternal(lock, ws);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public boolean isWakeLockLevelSupported(int level) {
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ return isWakeLockLevelSupportedInternal(level);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public void userActivity(long eventTime, int event, int flags) {
+ final long now = SystemClock.uptimeMillis();
+ if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER)
+ != PackageManager.PERMISSION_GRANTED) {
+ // Once upon a time applications could call userActivity().
+ // Now we require the DEVICE_POWER permission. Log a warning and ignore the
+ // request instead of throwing a SecurityException so we don't break old apps.
+ synchronized (mLock) {
+ if (now >= mLastWarningAboutUserActivityPermission + (5 * 60 * 1000)) {
+ mLastWarningAboutUserActivityPermission = now;
+ Slog.w(TAG, "Ignoring call to PowerManager.userActivity() because the "
+ + "caller does not have DEVICE_POWER permission. "
+ + "Please fix your app! "
+ + " pid=" + Binder.getCallingPid()
+ + " uid=" + Binder.getCallingUid());
+ }
+ }
+ return;
+ }
+
+ if (eventTime > SystemClock.uptimeMillis()) {
+ throw new IllegalArgumentException("event time must not be in the future");
+ }
+
+ final int uid = Binder.getCallingUid();
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ userActivityInternal(eventTime, event, flags, uid);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public void wakeUp(long eventTime) {
+ if (eventTime > SystemClock.uptimeMillis()) {
+ throw new IllegalArgumentException("event time must not be in the future");
+ }
+
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.DEVICE_POWER, null);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ wakeUpInternal(eventTime);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public void goToSleep(long eventTime, int reason) {
+ if (eventTime > SystemClock.uptimeMillis()) {
+ throw new IllegalArgumentException("event time must not be in the future");
+ }
+
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.DEVICE_POWER, null);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ goToSleepInternal(eventTime, reason);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public void nap(long eventTime) {
+ if (eventTime > SystemClock.uptimeMillis()) {
+ throw new IllegalArgumentException("event time must not be in the future");
+ }
+
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.DEVICE_POWER, null);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ napInternal(eventTime);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public boolean isScreenOn() {
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ return isScreenOnInternal();
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ /**
+ * Reboots the device.
+ *
+ * @param confirm If true, shows a reboot confirmation dialog.
+ * @param reason The reason for the reboot, or null if none.
+ * @param wait If true, this call waits for the reboot to complete and does not return.
+ */
+ @Override // Binder call
+ public void reboot(boolean confirm, String reason, boolean wait) {
+ mContext.enforceCallingOrSelfPermission(android.Manifest.permission.REBOOT, null);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ shutdownOrRebootInternal(false, confirm, reason, wait);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ /**
+ * Shuts down the device.
+ *
+ * @param confirm If true, shows a shutdown confirmation dialog.
+ * @param wait If true, this call waits for the shutdown to complete and does not return.
+ */
+ @Override // Binder call
+ public void shutdown(boolean confirm, boolean wait) {
+ mContext.enforceCallingOrSelfPermission(android.Manifest.permission.REBOOT, null);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ shutdownOrRebootInternal(true, confirm, null, wait);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ /**
+ * Crash the runtime (causing a complete restart of the Android framework).
+ * Requires REBOOT permission. Mostly for testing. Should not return.
+ */
+ @Override // Binder call
+ public void crash(String message) {
+ mContext.enforceCallingOrSelfPermission(android.Manifest.permission.REBOOT, null);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ crashInternal(message);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ /**
+ * Set the setting that determines whether the device stays on when plugged in.
+ * The argument is a bit string, with each bit specifying a power source that,
+ * when the device is connected to that source, causes the device to stay on.
+ * See {@link android.os.BatteryManager} for the list of power sources that
+ * can be specified. Current values include
+ * {@link android.os.BatteryManager#BATTERY_PLUGGED_AC}
+ * and {@link android.os.BatteryManager#BATTERY_PLUGGED_USB}
+ *
+ * Used by "adb shell svc power stayon ..."
+ *
+ * @param val an {@code int} containing the bits that specify which power sources
+ * should cause the device to stay on.
+ */
+ @Override // Binder call
+ public void setStayOnSetting(int val) {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.WRITE_SETTINGS, null);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ setStayOnSettingInternal(val);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ /**
+ * Used by device administration to set the maximum screen off timeout.
+ *
+ * This method must only be called by the device administration policy manager.
+ */
+ @Override // Binder call
+ public void setMaximumScreenOffTimeoutFromDeviceAdmin(int timeMs) {
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ setMaximumScreenOffTimeoutFromDeviceAdminInternal(timeMs);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ /**
+ * Used by the settings application and brightness control widgets to
+ * temporarily override the current screen brightness setting so that the
+ * user can observe the effect of an intended settings change without applying
+ * it immediately.
+ *
+ * The override will be canceled when the setting value is next updated.
+ *
+ * @param brightness The overridden brightness.
+ *
+ * @see android.provider.Settings.System#SCREEN_BRIGHTNESS
+ */
+ @Override // Binder call
+ public void setTemporaryScreenBrightnessSettingOverride(int brightness) {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.DEVICE_POWER, null);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ setTemporaryScreenBrightnessSettingOverrideInternal(brightness);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ /**
+ * Used by the settings application and brightness control widgets to
+ * temporarily override the current screen auto-brightness adjustment setting so that the
+ * user can observe the effect of an intended settings change without applying
+ * it immediately.
+ *
+ * The override will be canceled when the setting value is next updated.
+ *
+ * @param adj The overridden brightness, or Float.NaN to disable the override.
+ *
+ * @see Settings.System#SCREEN_AUTO_BRIGHTNESS_ADJ
+ */
+ @Override // Binder call
+ public void setTemporaryScreenAutoBrightnessAdjustmentSettingOverride(float adj) {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.DEVICE_POWER, null);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ setTemporaryScreenAutoBrightnessAdjustmentSettingOverrideInternal(adj);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ /**
+ * Used by the phone application to make the attention LED flash when ringing.
+ */
+ @Override // Binder call
+ public void setAttentionLight(boolean on, int color) {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.DEVICE_POWER, null);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ setAttentionLightInternal(on, color);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ if (mContext.checkCallingOrSelfPermission(Manifest.permission.DUMP)
+ != PackageManager.PERMISSION_GRANTED) {
+ pw.println("Permission Denial: can't dump PowerManager from from pid="
+ + Binder.getCallingPid()
+ + ", uid=" + Binder.getCallingUid());
+ return;
+ }
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ dumpInternal(pw);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+ }
+
+ private final class LocalService extends PowerManagerInternal {
+ /**
+ * Used by the window manager to override the screen brightness based on the
+ * current foreground activity.
+ *
+ * This method must only be called by the window manager.
+ *
+ * @param brightness The overridden brightness, or -1 to disable the override.
+ */
+ @Override
+ public void setScreenBrightnessOverrideFromWindowManager(int brightness) {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.DEVICE_POWER, null);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ setScreenBrightnessOverrideFromWindowManagerInternal(brightness);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ /**
+ * Used by the window manager to override the button brightness based on the
+ * current foreground activity.
+ *
+ * This method must only be called by the window manager.
+ *
+ * @param brightness The overridden brightness, or -1 to disable the override.
+ */
+ @Override
+ public void setButtonBrightnessOverrideFromWindowManager(int brightness) {
+ // Do nothing.
+ // Button lights are not currently supported in the new implementation.
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.DEVICE_POWER, null);
+ }
+
+ /**
+ * Used by the window manager to override the user activity timeout based on the
+ * current foreground activity. It can only be used to make the timeout shorter
+ * than usual, not longer.
+ *
+ * This method must only be called by the window manager.
+ *
+ * @param timeoutMillis The overridden timeout, or -1 to disable the override.
+ */
+ @Override
+ public void setUserActivityTimeoutOverrideFromWindowManager(long timeoutMillis) {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.DEVICE_POWER, null);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ setUserActivityTimeoutOverrideFromWindowManagerInternal(timeoutMillis);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override
+ public void setPolicy(WindowManagerPolicy policy) {
+ PowerManagerService.this.setPolicy(policy);
+ }
+ }
}
diff --git a/services/java/com/android/server/power/RampAnimator.java b/services/core/java/com/android/server/power/RampAnimator.java
index 4a4f0801240e..4a4f0801240e 100644
--- a/services/java/com/android/server/power/RampAnimator.java
+++ b/services/core/java/com/android/server/power/RampAnimator.java
diff --git a/services/java/com/android/server/power/ScreenOnBlocker.java b/services/core/java/com/android/server/power/ScreenOnBlocker.java
index dbbbc6d2ab20..dbbbc6d2ab20 100644
--- a/services/java/com/android/server/power/ScreenOnBlocker.java
+++ b/services/core/java/com/android/server/power/ScreenOnBlocker.java
diff --git a/services/java/com/android/server/power/ShutdownThread.java b/services/core/java/com/android/server/power/ShutdownThread.java
index 88a27f5f74dd..88a27f5f74dd 100644
--- a/services/java/com/android/server/power/ShutdownThread.java
+++ b/services/core/java/com/android/server/power/ShutdownThread.java
diff --git a/services/java/com/android/server/power/SuspendBlocker.java b/services/core/java/com/android/server/power/SuspendBlocker.java
index 70b278a6f2df..70b278a6f2df 100644
--- a/services/java/com/android/server/power/SuspendBlocker.java
+++ b/services/core/java/com/android/server/power/SuspendBlocker.java
diff --git a/services/java/com/android/server/power/WirelessChargerDetector.java b/services/core/java/com/android/server/power/WirelessChargerDetector.java
index 38f5d7740842..38f5d7740842 100644
--- a/services/java/com/android/server/power/WirelessChargerDetector.java
+++ b/services/core/java/com/android/server/power/WirelessChargerDetector.java
diff --git a/services/java/com/android/server/search/SearchManagerService.java b/services/core/java/com/android/server/search/SearchManagerService.java
index b5d81d1a10fd..b5d81d1a10fd 100644
--- a/services/java/com/android/server/search/SearchManagerService.java
+++ b/services/core/java/com/android/server/search/SearchManagerService.java
diff --git a/services/java/com/android/server/search/Searchables.java b/services/core/java/com/android/server/search/Searchables.java
index 0ffbb7d0aa59..0ffbb7d0aa59 100644
--- a/services/java/com/android/server/search/Searchables.java
+++ b/services/core/java/com/android/server/search/Searchables.java
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
new file mode 100644
index 000000000000..4f7518966681
--- /dev/null
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.statusbar;
+
+import com.android.server.notification.NotificationDelegate;
+
+import android.os.IBinder;
+import android.service.notification.StatusBarNotification;
+
+public interface StatusBarManagerInternal {
+ void setNotificationDelegate(NotificationDelegate delegate);
+ IBinder addNotification(StatusBarNotification notification);
+ void updateNotification(IBinder key, StatusBarNotification notification);
+ void removeNotification(IBinder key);
+}
diff --git a/services/java/com/android/server/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index f207c08c579c..2ae467eabdd1 100644
--- a/services/java/com/android/server/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -14,26 +14,28 @@
* limitations under the License.
*/
-package com.android.server;
+package com.android.server.statusbar;
import android.app.StatusBarManager;
+import android.os.Binder;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.os.UserHandle;
import android.service.notification.StatusBarNotification;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
-import android.os.Binder;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.os.UserHandle;
import android.util.Slog;
import com.android.internal.statusbar.IStatusBar;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.statusbar.StatusBarIcon;
import com.android.internal.statusbar.StatusBarIconList;
+import com.android.server.LocalServices;
+import com.android.server.notification.NotificationDelegate;
import com.android.server.wm.WindowManagerService;
import java.io.FileDescriptor;
@@ -51,31 +53,31 @@ import java.util.Map;
public class StatusBarManagerService extends IStatusBarService.Stub
implements WindowManagerService.OnHardKeyboardStatusChangeListener
{
- static final String TAG = "StatusBarManagerService";
- static final boolean SPEW = false;
-
- final Context mContext;
- final WindowManagerService mWindowManager;
- Handler mHandler = new Handler();
- NotificationCallbacks mNotificationCallbacks;
- volatile IStatusBar mBar;
- StatusBarIconList mIcons = new StatusBarIconList();
- HashMap<IBinder,StatusBarNotification> mNotifications
+ private static final String TAG = "StatusBarManagerService";
+ private static final boolean SPEW = false;
+
+ private final Context mContext;
+ private final WindowManagerService mWindowManager;
+ private Handler mHandler = new Handler();
+ private NotificationDelegate mNotificationDelegate;
+ private volatile IStatusBar mBar;
+ private StatusBarIconList mIcons = new StatusBarIconList();
+ private HashMap<IBinder,StatusBarNotification> mNotifications
= new HashMap<IBinder,StatusBarNotification>();
// for disabling the status bar
- final ArrayList<DisableRecord> mDisableRecords = new ArrayList<DisableRecord>();
- IBinder mSysUiVisToken = new Binder();
- int mDisabled = 0;
+ private final ArrayList<DisableRecord> mDisableRecords = new ArrayList<DisableRecord>();
+ private IBinder mSysUiVisToken = new Binder();
+ private int mDisabled = 0;
- Object mLock = new Object();
+ private Object mLock = new Object();
// encompasses lights-out mode and other flags defined on View
- int mSystemUiVisibility = 0;
- boolean mMenuVisible = false;
- int mImeWindowVis = 0;
- int mImeBackDisposition;
- IBinder mImeToken = null;
- int mCurrentUserId;
+ private int mSystemUiVisibility = 0;
+ private boolean mMenuVisible = false;
+ private int mImeWindowVis = 0;
+ private int mImeBackDisposition;
+ private IBinder mImeToken = null;
+ private int mCurrentUserId;
private class DisableRecord implements IBinder.DeathRecipient {
int userId;
@@ -90,16 +92,6 @@ public class StatusBarManagerService extends IStatusBarService.Stub
}
}
- public interface NotificationCallbacks {
- void onSetDisabled(int status);
- void onClearAll();
- void onNotificationClick(String pkg, String tag, int id);
- void onNotificationClear(String pkg, String tag, int id);
- void onPanelRevealed();
- void onNotificationError(String pkg, String tag, int id,
- int uid, int initialPid, String message);
- }
-
/**
* Construct the service, add the status bar view to the window manager
*/
@@ -110,15 +102,74 @@ public class StatusBarManagerService extends IStatusBarService.Stub
final Resources res = context.getResources();
mIcons.defineSlots(res.getStringArray(com.android.internal.R.array.config_statusBarIcons));
- }
- public void setNotificationCallbacks(NotificationCallbacks listener) {
- mNotificationCallbacks = listener;
+ LocalServices.addService(StatusBarManagerInternal.class, mInternalService);
}
+ /**
+ * Private API used by NotificationManagerService.
+ */
+ private final StatusBarManagerInternal mInternalService = new StatusBarManagerInternal() {
+ @Override
+ public void setNotificationDelegate(NotificationDelegate delegate) {
+ synchronized (mNotifications) {
+ mNotificationDelegate = delegate;
+ }
+ }
+
+ @Override
+ public IBinder addNotification(StatusBarNotification notification) {
+ synchronized (mNotifications) {
+ IBinder key = new Binder();
+ mNotifications.put(key, notification);
+ if (mBar != null) {
+ try {
+ mBar.addNotification(key, notification);
+ } catch (RemoteException ex) {
+ }
+ }
+ return key;
+ }
+ }
+
+ @Override
+ public void updateNotification(IBinder key, StatusBarNotification notification) {
+ synchronized (mNotifications) {
+ if (!mNotifications.containsKey(key)) {
+ throw new IllegalArgumentException("updateNotification key not found: " + key);
+ }
+ mNotifications.put(key, notification);
+ if (mBar != null) {
+ try {
+ mBar.updateNotification(key, notification);
+ } catch (RemoteException ex) {
+ }
+ }
+ }
+ }
+
+ @Override
+ public void removeNotification(IBinder key) {
+ synchronized (mNotifications) {
+ final StatusBarNotification n = mNotifications.remove(key);
+ if (n == null) {
+ Slog.e(TAG, "removeNotification key not found: " + key);
+ return;
+ }
+ if (mBar != null) {
+ try {
+ mBar.removeNotification(key);
+ } catch (RemoteException ex) {
+ }
+ }
+ }
+ }
+ };
+
// ================================================================================
// From IStatusBarService
// ================================================================================
+ @Override
public void expandNotificationsPanel() {
enforceExpandStatusBar();
@@ -130,6 +181,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub
}
}
+ @Override
public void collapsePanels() {
enforceExpandStatusBar();
@@ -141,6 +193,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub
}
}
+ @Override
public void expandSettingsPanel() {
enforceExpandStatusBar();
@@ -152,6 +205,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub
}
}
+ @Override
public void disable(int what, IBinder token, String pkg) {
disableInternal(mCurrentUserId, what, token, pkg);
}
@@ -177,7 +231,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub
mDisabled = net;
mHandler.post(new Runnable() {
public void run() {
- mNotificationCallbacks.onSetDisabled(net);
+ mNotificationDelegate.onSetDisabled(net);
}
});
if (mBar != null) {
@@ -189,6 +243,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub
}
}
+ @Override
public void setIcon(String slot, String iconPackage, int iconId, int iconLevel,
String contentDescription) {
enforceStatusBar();
@@ -214,6 +269,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub
}
}
+ @Override
public void setIconVisibility(String slot, boolean visible) {
enforceStatusBar();
@@ -241,6 +297,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub
}
}
+ @Override
public void removeIcon(String slot) {
enforceStatusBar();
@@ -265,6 +322,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub
* Hide or show the on-screen Menu key. Only call this from the window manager, typically in
* response to a window with FLAG_NEEDS_MENU_KEY set.
*/
+ @Override
public void topAppWindowChanged(final boolean menuVisible) {
enforceStatusBar();
@@ -285,6 +343,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub
}
}
+ @Override
public void setImeWindowStatus(final IBinder token, final int vis, final int backDisposition) {
enforceStatusBar();
@@ -312,6 +371,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub
}
}
+ @Override
public void setSystemUiVisibility(int vis, int mask) {
// also allows calls from window manager which is in this process.
enforceStatusBarService();
@@ -344,6 +404,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub
}
}
+ @Override
public void setHardKeyboardEnabled(final boolean enabled) {
mHandler.post(new Runnable() {
public void run() {
@@ -426,6 +487,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub
// ================================================================================
// Callbacks from the status bar service.
// ================================================================================
+ @Override
public void registerStatusBar(IStatusBar bar, StatusBarIconList iconList,
List<IBinder> notificationKeys, List<StatusBarNotification> notifications,
int switches[], List<IBinder> binders) {
@@ -458,86 +520,64 @@ public class StatusBarManagerService extends IStatusBarService.Stub
* The status bar service should call this each time the user brings the panel from
* invisible to visible in order to clear the notification light.
*/
+ @Override
public void onPanelRevealed() {
enforceStatusBarService();
-
- // tell the notification manager to turn off the lights.
- mNotificationCallbacks.onPanelRevealed();
+ long identity = Binder.clearCallingIdentity();
+ try {
+ // tell the notification manager to turn off the lights.
+ mNotificationDelegate.onPanelRevealed();
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
+ @Override
public void onNotificationClick(String pkg, String tag, int id) {
enforceStatusBarService();
-
- mNotificationCallbacks.onNotificationClick(pkg, tag, id);
+ long identity = Binder.clearCallingIdentity();
+ try {
+ mNotificationDelegate.onNotificationClick(pkg, tag, id);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
+ @Override
public void onNotificationError(String pkg, String tag, int id,
int uid, int initialPid, String message) {
enforceStatusBarService();
-
- // WARNING: this will call back into us to do the remove. Don't hold any locks.
- mNotificationCallbacks.onNotificationError(pkg, tag, id, uid, initialPid, message);
+ long identity = Binder.clearCallingIdentity();
+ try {
+ // WARNING: this will call back into us to do the remove. Don't hold any locks.
+ mNotificationDelegate.onNotificationError(pkg, tag, id, uid, initialPid, message);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
+ @Override
public void onNotificationClear(String pkg, String tag, int id) {
enforceStatusBarService();
-
- mNotificationCallbacks.onNotificationClear(pkg, tag, id);
+ long identity = Binder.clearCallingIdentity();
+ try {
+ mNotificationDelegate.onNotificationClear(pkg, tag, id);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
+ @Override
public void onClearAllNotifications() {
enforceStatusBarService();
-
- mNotificationCallbacks.onClearAll();
- }
-
- // ================================================================================
- // Callbacks for NotificationManagerService.
- // ================================================================================
- public IBinder addNotification(StatusBarNotification notification) {
- synchronized (mNotifications) {
- IBinder key = new Binder();
- mNotifications.put(key, notification);
- if (mBar != null) {
- try {
- mBar.addNotification(key, notification);
- } catch (RemoteException ex) {
- }
- }
- return key;
+ long identity = Binder.clearCallingIdentity();
+ try {
+ mNotificationDelegate.onClearAll();
+ } finally {
+ Binder.restoreCallingIdentity(identity);
}
}
- public void updateNotification(IBinder key, StatusBarNotification notification) {
- synchronized (mNotifications) {
- if (!mNotifications.containsKey(key)) {
- throw new IllegalArgumentException("updateNotification key not found: " + key);
- }
- mNotifications.put(key, notification);
- if (mBar != null) {
- try {
- mBar.updateNotification(key, notification);
- } catch (RemoteException ex) {
- }
- }
- }
- }
-
- public void removeNotification(IBinder key) {
- synchronized (mNotifications) {
- final StatusBarNotification n = mNotifications.remove(key);
- if (n == null) {
- Slog.e(TAG, "removeNotification key not found: " + key);
- return;
- }
- if (mBar != null) {
- try {
- mBar.removeNotification(key);
- } catch (RemoteException ex) {
- }
- }
- }
- }
// ================================================================================
// Can be called from any thread
diff --git a/services/core/java/com/android/server/storage/DeviceStorageMonitorInternal.java b/services/core/java/com/android/server/storage/DeviceStorageMonitorInternal.java
new file mode 100644
index 000000000000..a91a81b3bffc
--- /dev/null
+++ b/services/core/java/com/android/server/storage/DeviceStorageMonitorInternal.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.storage;
+
+public interface DeviceStorageMonitorInternal {
+ boolean isMemoryLow();
+ long getMemoryLowThreshold();
+ void checkMemory();
+}
+
diff --git a/services/java/com/android/server/DeviceStorageMonitorService.java b/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java
index 016c561077dc..43a99e082295 100644
--- a/services/java/com/android/server/DeviceStorageMonitorService.java
+++ b/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java
@@ -14,7 +14,10 @@
* limitations under the License.
*/
-package com.android.server;
+package com.android.server.storage;
+
+import com.android.server.EventLogTags;
+import com.android.server.SystemService;
import android.app.Notification;
import android.app.NotificationManager;
@@ -29,8 +32,8 @@ import android.os.Binder;
import android.os.Environment;
import android.os.FileObserver;
import android.os.Handler;
+import android.os.IBinder;
import android.os.Message;
-import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.StatFs;
@@ -66,13 +69,13 @@ import java.io.PrintWriter;
* settings parameter with a default value of 2MB), the free memory is
* logged to the event log.
*/
-public class DeviceStorageMonitorService extends Binder {
- private static final String TAG = "DeviceStorageMonitorService";
+public class DeviceStorageMonitorService extends SystemService {
+ static final String TAG = "DeviceStorageMonitorService";
- private static final boolean DEBUG = false;
- private static final boolean localLOGV = false;
+ static final boolean DEBUG = false;
+ static final boolean localLOGV = false;
- private static final int DEVICE_MEMORY_WHAT = 1;
+ static final int DEVICE_MEMORY_WHAT = 1;
private static final int MONITOR_INTERVAL = 1; //in minutes
private static final int LOW_MEMORY_NOTIFICATION_ID = 1;
@@ -84,33 +87,32 @@ public class DeviceStorageMonitorService extends Binder {
private long mFreeMemAfterLastCacheClear; // on /data
private long mLastReportedFreeMem;
private long mLastReportedFreeMemTime;
- private boolean mLowMemFlag=false;
+ boolean mLowMemFlag=false;
private boolean mMemFullFlag=false;
- private Context mContext;
- private ContentResolver mResolver;
- private long mTotalMemory; // on /data
- private StatFs mDataFileStats;
- private StatFs mSystemFileStats;
- private StatFs mCacheFileStats;
+ private final ContentResolver mResolver;
+ private final long mTotalMemory; // on /data
+ private final StatFs mDataFileStats;
+ private final StatFs mSystemFileStats;
+ private final StatFs mCacheFileStats;
private static final File DATA_PATH = Environment.getDataDirectory();
private static final File SYSTEM_PATH = Environment.getRootDirectory();
private static final File CACHE_PATH = Environment.getDownloadCacheDirectory();
private long mThreadStartTime = -1;
- private boolean mClearSucceeded = false;
- private boolean mClearingCache;
- private Intent mStorageLowIntent;
- private Intent mStorageOkIntent;
- private Intent mStorageFullIntent;
- private Intent mStorageNotFullIntent;
+ boolean mClearSucceeded = false;
+ boolean mClearingCache;
+ private final Intent mStorageLowIntent;
+ private final Intent mStorageOkIntent;
+ private final Intent mStorageFullIntent;
+ private final Intent mStorageNotFullIntent;
private CachePackageDataObserver mClearCacheObserver;
- private final CacheFileDeletedObserver mCacheFileDeletedObserver;
+ private CacheFileDeletedObserver mCacheFileDeletedObserver;
private static final int _TRUE = 1;
private static final int _FALSE = 0;
// This is the raw threshold that has been set at which we consider
// storage to be low.
- private long mMemLowThreshold;
+ long mMemLowThreshold;
// This is the threshold at which we start trying to flush caches
// to get below the low threshold limit. It is less than the low
// threshold; we will allow storage to get a bit beyond the limit
@@ -126,13 +128,13 @@ public class DeviceStorageMonitorService extends Binder {
/**
* This string is used for ServiceManager access to this class.
*/
- public static final String SERVICE = "devicestoragemonitor";
+ static final String SERVICE = "devicestoragemonitor";
/**
* Handler that checks the amount of disk space on the device and sends a
* notification if the device runs low on disk space
*/
- Handler mHandler = new Handler() {
+ private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
//don't handle an invalid message
@@ -144,7 +146,7 @@ public class DeviceStorageMonitorService extends Binder {
}
};
- class CachePackageDataObserver extends IPackageDataObserver.Stub {
+ private class CachePackageDataObserver extends IPackageDataObserver.Stub {
public void onRemoveCompleted(String packageName, boolean succeeded) {
mClearSucceeded = succeeded;
mClearingCache = false;
@@ -154,7 +156,7 @@ public class DeviceStorageMonitorService extends Binder {
}
}
- private final void restatDataDir() {
+ private void restatDataDir() {
try {
mDataFileStats.restat(DATA_PATH.getAbsolutePath());
mFreeMem = (long) mDataFileStats.getAvailableBlocks() *
@@ -206,7 +208,7 @@ public class DeviceStorageMonitorService extends Binder {
}
}
- private final void clearCache() {
+ private void clearCache() {
if (mClearCacheObserver == null) {
// Lazy instantiation
mClearCacheObserver = new CachePackageDataObserver();
@@ -223,7 +225,7 @@ public class DeviceStorageMonitorService extends Binder {
}
}
- private final void checkMemory(boolean checkCache) {
+ void checkMemory(boolean checkCache) {
//if the thread that was started to clear cache is still running do nothing till its
//finished clearing cache. Ideally this flag could be modified by clearCache
// and should be accessed via a lock but even if it does this test will fail now and
@@ -300,7 +302,7 @@ public class DeviceStorageMonitorService extends Binder {
postCheckMemoryMsg(true, DEFAULT_CHECK_INTERVAL);
}
- private void postCheckMemoryMsg(boolean clearCache, long delay) {
+ void postCheckMemoryMsg(boolean clearCache, long delay) {
// Remove queued messages
mHandler.removeMessages(DEVICE_MEMORY_WHAT);
mHandler.sendMessageDelayed(mHandler.obtainMessage(DEVICE_MEMORY_WHAT,
@@ -308,14 +310,10 @@ public class DeviceStorageMonitorService extends Binder {
delay);
}
- /**
- * Constructor to run service. initializes the disk space threshold value
- * and posts an empty message to kickstart the process.
- */
public DeviceStorageMonitorService(Context context) {
+ super(context);
mLastReportedFreeMemTime = 0;
- mContext = context;
- mResolver = mContext.getContentResolver();
+ mResolver = context.getContentResolver();
//create StatFs object
mDataFileStats = new StatFs(DATA_PATH.getAbsolutePath());
mSystemFileStats = new StatFs(SYSTEM_PATH.getAbsolutePath());
@@ -331,9 +329,16 @@ public class DeviceStorageMonitorService extends Binder {
mStorageFullIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
mStorageNotFullIntent = new Intent(Intent.ACTION_DEVICE_STORAGE_NOT_FULL);
mStorageNotFullIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
+ }
+ /**
+ * Initializes the disk space threshold value and posts an empty message to
+ * kickstart the process.
+ */
+ @Override
+ public void onStart() {
// cache storage thresholds
- final StorageManager sm = StorageManager.from(context);
+ final StorageManager sm = StorageManager.from(getContext());
mMemLowThreshold = sm.getStorageLowBytes(DATA_PATH);
mMemFullThreshold = sm.getStorageFullBytes(DATA_PATH);
@@ -345,6 +350,78 @@ public class DeviceStorageMonitorService extends Binder {
mCacheFileDeletedObserver = new CacheFileDeletedObserver();
mCacheFileDeletedObserver.startWatching();
+
+ publishBinderService(SERVICE, mRemoteService);
+ publishLocalService(DeviceStorageMonitorInternal.class, mLocalService);
+ }
+
+ private final DeviceStorageMonitorInternal mLocalService = new DeviceStorageMonitorInternal() {
+ @Override
+ public void checkMemory() {
+ // force an early check
+ postCheckMemoryMsg(true, 0);
+ }
+
+ @Override
+ public boolean isMemoryLow() {
+ return mLowMemFlag;
+ }
+
+ @Override
+ public long getMemoryLowThreshold() {
+ return mMemLowThreshold;
+ }
+ };
+
+ private final IBinder mRemoteService = new Binder() {
+ @Override
+ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ if (getContext().checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
+ != PackageManager.PERMISSION_GRANTED) {
+
+ pw.println("Permission Denial: can't dump " + SERVICE + " from from pid="
+ + Binder.getCallingPid()
+ + ", uid=" + Binder.getCallingUid());
+ return;
+ }
+
+ dumpImpl(pw);
+ }
+ };
+
+ void dumpImpl(PrintWriter pw) {
+ final Context context = getContext();
+
+ pw.println("Current DeviceStorageMonitor state:");
+
+ pw.print(" mFreeMem="); pw.print(Formatter.formatFileSize(context, mFreeMem));
+ pw.print(" mTotalMemory=");
+ pw.println(Formatter.formatFileSize(context, mTotalMemory));
+
+ pw.print(" mFreeMemAfterLastCacheClear=");
+ pw.println(Formatter.formatFileSize(context, mFreeMemAfterLastCacheClear));
+
+ pw.print(" mLastReportedFreeMem=");
+ pw.print(Formatter.formatFileSize(context, mLastReportedFreeMem));
+ pw.print(" mLastReportedFreeMemTime=");
+ TimeUtils.formatDuration(mLastReportedFreeMemTime, SystemClock.elapsedRealtime(), pw);
+ pw.println();
+
+ pw.print(" mLowMemFlag="); pw.print(mLowMemFlag);
+ pw.print(" mMemFullFlag="); pw.println(mMemFullFlag);
+
+ pw.print(" mClearSucceeded="); pw.print(mClearSucceeded);
+ pw.print(" mClearingCache="); pw.println(mClearingCache);
+
+ pw.print(" mMemLowThreshold=");
+ pw.print(Formatter.formatFileSize(context, mMemLowThreshold));
+ pw.print(" mMemFullThreshold=");
+ pw.println(Formatter.formatFileSize(context, mMemFullThreshold));
+
+ pw.print(" mMemCacheStartTrimThreshold=");
+ pw.print(Formatter.formatFileSize(context, mMemCacheStartTrimThreshold));
+ pw.print(" mMemCacheTrimToThreshold=");
+ pw.println(Formatter.formatFileSize(context, mMemCacheTrimToThreshold));
}
/**
@@ -352,7 +429,8 @@ public class DeviceStorageMonitorService extends Binder {
* an error dialog indicating low disk space and launch the Installer
* application
*/
- private final void sendNotification() {
+ private void sendNotification() {
+ final Context context = getContext();
if(localLOGV) Slog.i(TAG, "Sending low memory notification");
//log the event to event log with the amount of free storage(in bytes) left on the device
EventLog.writeEvent(EventLogTags.LOW_STORAGE, mFreeMem);
@@ -363,86 +441,58 @@ public class DeviceStorageMonitorService extends Binder {
lowMemIntent.putExtra("memory", mFreeMem);
lowMemIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
NotificationManager mNotificationMgr =
- (NotificationManager)mContext.getSystemService(
+ (NotificationManager)context.getSystemService(
Context.NOTIFICATION_SERVICE);
- CharSequence title = mContext.getText(
+ CharSequence title = context.getText(
com.android.internal.R.string.low_internal_storage_view_title);
- CharSequence details = mContext.getText(
+ CharSequence details = context.getText(
com.android.internal.R.string.low_internal_storage_view_text);
- PendingIntent intent = PendingIntent.getActivityAsUser(mContext, 0, lowMemIntent, 0,
+ PendingIntent intent = PendingIntent.getActivityAsUser(context, 0, lowMemIntent, 0,
null, UserHandle.CURRENT);
Notification notification = new Notification();
notification.icon = com.android.internal.R.drawable.stat_notify_disk_full;
notification.tickerText = title;
notification.flags |= Notification.FLAG_NO_CLEAR;
- notification.setLatestEventInfo(mContext, title, details, intent);
+ notification.setLatestEventInfo(context, title, details, intent);
mNotificationMgr.notifyAsUser(null, LOW_MEMORY_NOTIFICATION_ID, notification,
UserHandle.ALL);
- mContext.sendStickyBroadcastAsUser(mStorageLowIntent, UserHandle.ALL);
+ context.sendStickyBroadcastAsUser(mStorageLowIntent, UserHandle.ALL);
}
/**
* Cancels low storage notification and sends OK intent.
*/
- private final void cancelNotification() {
+ private void cancelNotification() {
+ final Context context = getContext();
if(localLOGV) Slog.i(TAG, "Canceling low memory notification");
NotificationManager mNotificationMgr =
- (NotificationManager)mContext.getSystemService(
+ (NotificationManager)context.getSystemService(
Context.NOTIFICATION_SERVICE);
//cancel notification since memory has been freed
mNotificationMgr.cancelAsUser(null, LOW_MEMORY_NOTIFICATION_ID, UserHandle.ALL);
- mContext.removeStickyBroadcastAsUser(mStorageLowIntent, UserHandle.ALL);
- mContext.sendBroadcastAsUser(mStorageOkIntent, UserHandle.ALL);
+ context.removeStickyBroadcastAsUser(mStorageLowIntent, UserHandle.ALL);
+ context.sendBroadcastAsUser(mStorageOkIntent, UserHandle.ALL);
}
/**
* Send a notification when storage is full.
*/
- private final void sendFullNotification() {
+ private void sendFullNotification() {
if(localLOGV) Slog.i(TAG, "Sending memory full notification");
- mContext.sendStickyBroadcastAsUser(mStorageFullIntent, UserHandle.ALL);
+ getContext().sendStickyBroadcastAsUser(mStorageFullIntent, UserHandle.ALL);
}
/**
* Cancels memory full notification and sends "not full" intent.
*/
- private final void cancelFullNotification() {
+ private void cancelFullNotification() {
if(localLOGV) Slog.i(TAG, "Canceling memory full notification");
- mContext.removeStickyBroadcastAsUser(mStorageFullIntent, UserHandle.ALL);
- mContext.sendBroadcastAsUser(mStorageNotFullIntent, UserHandle.ALL);
- }
-
- public void updateMemory() {
- int callingUid = getCallingUid();
- if(callingUid != Process.SYSTEM_UID) {
- return;
- }
- // force an early check
- postCheckMemoryMsg(true, 0);
- }
-
- /**
- * Callable from other things in the system service to obtain the low memory
- * threshold.
- *
- * @return low memory threshold in bytes
- */
- public long getMemoryLowThreshold() {
- return mMemLowThreshold;
+ getContext().removeStickyBroadcastAsUser(mStorageFullIntent, UserHandle.ALL);
+ getContext().sendBroadcastAsUser(mStorageNotFullIntent, UserHandle.ALL);
}
- /**
- * Callable from other things in the system process to check whether memory
- * is low.
- *
- * @return true is memory is low
- */
- public boolean isMemoryLow() {
- return mLowMemFlag;
- }
-
- public static class CacheFileDeletedObserver extends FileObserver {
+ private static class CacheFileDeletedObserver extends FileObserver {
public CacheFileDeletedObserver() {
super(Environment.getDownloadCacheDirectory().getAbsolutePath(), FileObserver.DELETE);
}
@@ -452,40 +502,4 @@ public class DeviceStorageMonitorService extends Binder {
EventLogTags.writeCacheFileDeleted(path);
}
}
-
- @Override
- protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
- != PackageManager.PERMISSION_GRANTED) {
-
- pw.println("Permission Denial: can't dump " + SERVICE + " from from pid="
- + Binder.getCallingPid()
- + ", uid=" + Binder.getCallingUid());
- return;
- }
-
- pw.println("Current DeviceStorageMonitor state:");
- pw.print(" mFreeMem="); pw.print(Formatter.formatFileSize(mContext, mFreeMem));
- pw.print(" mTotalMemory=");
- pw.println(Formatter.formatFileSize(mContext, mTotalMemory));
- pw.print(" mFreeMemAfterLastCacheClear=");
- pw.println(Formatter.formatFileSize(mContext, mFreeMemAfterLastCacheClear));
- pw.print(" mLastReportedFreeMem=");
- pw.print(Formatter.formatFileSize(mContext, mLastReportedFreeMem));
- pw.print(" mLastReportedFreeMemTime=");
- TimeUtils.formatDuration(mLastReportedFreeMemTime, SystemClock.elapsedRealtime(), pw);
- pw.println();
- pw.print(" mLowMemFlag="); pw.print(mLowMemFlag);
- pw.print(" mMemFullFlag="); pw.println(mMemFullFlag);
- pw.print(" mClearSucceeded="); pw.print(mClearSucceeded);
- pw.print(" mClearingCache="); pw.println(mClearingCache);
- pw.print(" mMemLowThreshold=");
- pw.print(Formatter.formatFileSize(mContext, mMemLowThreshold));
- pw.print(" mMemFullThreshold=");
- pw.println(Formatter.formatFileSize(mContext, mMemFullThreshold));
- pw.print(" mMemCacheStartTrimThreshold=");
- pw.print(Formatter.formatFileSize(mContext, mMemCacheStartTrimThreshold));
- pw.print(" mMemCacheTrimToThreshold=");
- pw.println(Formatter.formatFileSize(mContext, mMemCacheTrimToThreshold));
- }
}
diff --git a/services/core/java/com/android/server/twilight/TwilightListener.java b/services/core/java/com/android/server/twilight/TwilightListener.java
new file mode 100644
index 000000000000..29ead445892e
--- /dev/null
+++ b/services/core/java/com/android/server/twilight/TwilightListener.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.twilight;
+
+public interface TwilightListener {
+ void onTwilightStateChanged();
+} \ No newline at end of file
diff --git a/services/core/java/com/android/server/twilight/TwilightManager.java b/services/core/java/com/android/server/twilight/TwilightManager.java
new file mode 100644
index 000000000000..b3de58b279af
--- /dev/null
+++ b/services/core/java/com/android/server/twilight/TwilightManager.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.twilight;
+
+import android.os.Handler;
+
+public interface TwilightManager {
+ void registerListener(TwilightListener listener, Handler handler);
+ TwilightState getCurrentState();
+}
diff --git a/services/java/com/android/server/TwilightService.java b/services/core/java/com/android/server/twilight/TwilightService.java
index 0356faa610f5..a71961c8fe9b 100644
--- a/services/java/com/android/server/TwilightService.java
+++ b/services/core/java/com/android/server/twilight/TwilightService.java
@@ -14,7 +14,10 @@
* limitations under the License.
*/
-package com.android.server;
+package com.android.server.twilight;
+
+import com.android.server.SystemService;
+import com.android.server.TwilightCalculator;
import android.app.AlarmManager;
import android.app.PendingIntent;
@@ -34,9 +37,7 @@ import android.text.format.DateUtils;
import android.text.format.Time;
import android.util.Slog;
-import java.text.DateFormat;
import java.util.ArrayList;
-import java.util.Date;
import java.util.Iterator;
import libcore.util.Objects;
@@ -47,78 +48,92 @@ import libcore.util.Objects;
* Used by the UI mode manager and other components to adjust night mode
* effects based on sunrise and sunset.
*/
-public final class TwilightService {
- private static final String TAG = "TwilightService";
-
- private static final boolean DEBUG = false;
-
- private static final String ACTION_UPDATE_TWILIGHT_STATE =
+public final class TwilightService extends SystemService {
+ static final String TAG = "TwilightService";
+ static final boolean DEBUG = false;
+ static final String ACTION_UPDATE_TWILIGHT_STATE =
"com.android.server.action.UPDATE_TWILIGHT_STATE";
- private final Context mContext;
- private final AlarmManager mAlarmManager;
- private final LocationManager mLocationManager;
- private final LocationHandler mLocationHandler;
+ final Object mLock = new Object();
- private final Object mLock = new Object();
+ AlarmManager mAlarmManager;
+ LocationManager mLocationManager;
+ LocationHandler mLocationHandler;
- private final ArrayList<TwilightListenerRecord> mListeners =
+ final ArrayList<TwilightListenerRecord> mListeners =
new ArrayList<TwilightListenerRecord>();
- private boolean mSystemReady;
-
- private TwilightState mTwilightState;
+ TwilightState mTwilightState;
public TwilightService(Context context) {
- mContext = context;
+ super(context);
+ }
- mAlarmManager = (AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE);
- mLocationManager = (LocationManager)mContext.getSystemService(Context.LOCATION_SERVICE);
+ @Override
+ public void onStart() {
+ mAlarmManager = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE);
+ mLocationManager = (LocationManager) getContext().getSystemService(
+ Context.LOCATION_SERVICE);
mLocationHandler = new LocationHandler();
+
+ IntentFilter filter = new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED);
+ filter.addAction(Intent.ACTION_TIME_CHANGED);
+ filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
+ filter.addAction(ACTION_UPDATE_TWILIGHT_STATE);
+ getContext().registerReceiver(mUpdateLocationReceiver, filter);
+
+ publishLocalService(TwilightManager.class, mService);
}
- void systemReady() {
- synchronized (mLock) {
- mSystemReady = true;
+ private static class TwilightListenerRecord implements Runnable {
+ private final TwilightListener mListener;
+ private final Handler mHandler;
- IntentFilter filter = new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED);
- filter.addAction(Intent.ACTION_TIME_CHANGED);
- filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
- filter.addAction(ACTION_UPDATE_TWILIGHT_STATE);
- mContext.registerReceiver(mUpdateLocationReceiver, filter);
+ public TwilightListenerRecord(TwilightListener listener, Handler handler) {
+ mListener = listener;
+ mHandler = handler;
+ }
- if (!mListeners.isEmpty()) {
- mLocationHandler.enableLocationUpdates();
- }
+ public void postUpdate() {
+ mHandler.post(this);
}
- }
- /**
- * Gets the current twilight state.
- *
- * @return The current twilight state, or null if no information is available.
- */
- public TwilightState getCurrentState() {
- synchronized (mLock) {
- return mTwilightState;
+ @Override
+ public void run() {
+ mListener.onTwilightStateChanged();
}
+
}
- /**
- * Listens for twilight time.
- *
- * @param listener The listener.
- * @param handler The handler on which to post calls into the listener.
- */
- public void registerListener(TwilightListener listener, Handler handler) {
- synchronized (mLock) {
- mListeners.add(new TwilightListenerRecord(listener, handler));
+ private final TwilightManager mService = new TwilightManager() {
+ /**
+ * Gets the current twilight state.
+ *
+ * @return The current twilight state, or null if no information is available.
+ */
+ @Override
+ public TwilightState getCurrentState() {
+ synchronized (mLock) {
+ return mTwilightState;
+ }
+ }
+
+ /**
+ * Listens for twilight time.
+ *
+ * @param listener The listener.
+ */
+ @Override
+ public void registerListener(TwilightListener listener, Handler handler) {
+ synchronized (mLock) {
+ mListeners.add(new TwilightListenerRecord(listener, handler));
- if (mSystemReady && mListeners.size() == 1) {
- mLocationHandler.enableLocationUpdates();
+ if (mListeners.size() == 1) {
+ mLocationHandler.enableLocationUpdates();
+ }
}
}
- }
+ };
private void setTwilightState(TwilightState state) {
synchronized (mLock) {
@@ -128,9 +143,10 @@ public final class TwilightService {
}
mTwilightState = state;
- int count = mListeners.size();
- for (int i = 0; i < count; i++) {
- mListeners.get(i).post();
+
+ final int listenerLen = mListeners.size();
+ for (int i = 0; i < listenerLen; i++) {
+ mListeners.get(i).postUpdate();
}
}
}
@@ -162,124 +178,6 @@ public final class TwilightService {
return distance >= totalAccuracy;
}
- /**
- * Describes whether it is day or night.
- * This object is immutable.
- */
- public static final class TwilightState {
- private final boolean mIsNight;
- private final long mYesterdaySunset;
- private final long mTodaySunrise;
- private final long mTodaySunset;
- private final long mTomorrowSunrise;
-
- TwilightState(boolean isNight,
- long yesterdaySunset,
- long todaySunrise, long todaySunset,
- long tomorrowSunrise) {
- mIsNight = isNight;
- mYesterdaySunset = yesterdaySunset;
- mTodaySunrise = todaySunrise;
- mTodaySunset = todaySunset;
- mTomorrowSunrise = tomorrowSunrise;
- }
-
- /**
- * Returns true if it is currently night time.
- */
- public boolean isNight() {
- return mIsNight;
- }
-
- /**
- * Returns the time of yesterday's sunset in the System.currentTimeMillis() timebase,
- * or -1 if the sun never sets.
- */
- public long getYesterdaySunset() {
- return mYesterdaySunset;
- }
-
- /**
- * Returns the time of today's sunrise in the System.currentTimeMillis() timebase,
- * or -1 if the sun never rises.
- */
- public long getTodaySunrise() {
- return mTodaySunrise;
- }
-
- /**
- * Returns the time of today's sunset in the System.currentTimeMillis() timebase,
- * or -1 if the sun never sets.
- */
- public long getTodaySunset() {
- return mTodaySunset;
- }
-
- /**
- * Returns the time of tomorrow's sunrise in the System.currentTimeMillis() timebase,
- * or -1 if the sun never rises.
- */
- public long getTomorrowSunrise() {
- return mTomorrowSunrise;
- }
-
- @Override
- public boolean equals(Object o) {
- return o instanceof TwilightState && equals((TwilightState)o);
- }
-
- public boolean equals(TwilightState other) {
- return other != null
- && mIsNight == other.mIsNight
- && mYesterdaySunset == other.mYesterdaySunset
- && mTodaySunrise == other.mTodaySunrise
- && mTodaySunset == other.mTodaySunset
- && mTomorrowSunrise == other.mTomorrowSunrise;
- }
-
- @Override
- public int hashCode() {
- return 0; // don't care
- }
-
- @Override
- public String toString() {
- DateFormat f = DateFormat.getDateTimeInstance();
- return "{TwilightState: isNight=" + mIsNight
- + ", mYesterdaySunset=" + f.format(new Date(mYesterdaySunset))
- + ", mTodaySunrise=" + f.format(new Date(mTodaySunrise))
- + ", mTodaySunset=" + f.format(new Date(mTodaySunset))
- + ", mTomorrowSunrise=" + f.format(new Date(mTomorrowSunrise))
- + "}";
- }
- }
-
- /**
- * Listener for changes in twilight state.
- */
- public interface TwilightListener {
- public void onTwilightStateChanged();
- }
-
- private static final class TwilightListenerRecord implements Runnable {
- private final TwilightListener mListener;
- private final Handler mHandler;
-
- public TwilightListenerRecord(TwilightListener listener, Handler handler) {
- mListener = listener;
- mHandler = handler;
- }
-
- public void post() {
- mHandler.post(this);
- }
-
- @Override
- public void run() {
- mListener.onTwilightStateChanged();
- }
- }
-
private final class LocationHandler extends Handler {
private static final int MSG_ENABLE_LOCATION_UPDATES = 1;
private static final int MSG_GET_NEW_LOCATION_UPDATE = 2;
@@ -518,11 +416,12 @@ public final class TwilightService {
}
Intent updateIntent = new Intent(ACTION_UPDATE_TWILIGHT_STATE);
- PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, updateIntent, 0);
+ PendingIntent pendingIntent = PendingIntent.getBroadcast(
+ getContext(), 0, updateIntent, 0);
mAlarmManager.cancel(pendingIntent);
mAlarmManager.setExact(AlarmManager.RTC, nextUpdate, pendingIntent);
}
- };
+ }
private final BroadcastReceiver mUpdateLocationReceiver = new BroadcastReceiver() {
@Override
diff --git a/services/core/java/com/android/server/twilight/TwilightState.java b/services/core/java/com/android/server/twilight/TwilightState.java
new file mode 100644
index 000000000000..91e24d7d55bf
--- /dev/null
+++ b/services/core/java/com/android/server/twilight/TwilightState.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.twilight;
+
+import java.text.DateFormat;
+import java.util.Date;
+
+/**
+ * Describes whether it is day or night.
+ * This object is immutable.
+ */
+public class TwilightState {
+ private final boolean mIsNight;
+ private final long mYesterdaySunset;
+ private final long mTodaySunrise;
+ private final long mTodaySunset;
+ private final long mTomorrowSunrise;
+
+ TwilightState(boolean isNight,
+ long yesterdaySunset,
+ long todaySunrise, long todaySunset,
+ long tomorrowSunrise) {
+ mIsNight = isNight;
+ mYesterdaySunset = yesterdaySunset;
+ mTodaySunrise = todaySunrise;
+ mTodaySunset = todaySunset;
+ mTomorrowSunrise = tomorrowSunrise;
+ }
+
+ /**
+ * Returns true if it is currently night time.
+ */
+ public boolean isNight() {
+ return mIsNight;
+ }
+
+ /**
+ * Returns the time of yesterday's sunset in the System.currentTimeMillis() timebase,
+ * or -1 if the sun never sets.
+ */
+ public long getYesterdaySunset() {
+ return mYesterdaySunset;
+ }
+
+ /**
+ * Returns the time of today's sunrise in the System.currentTimeMillis() timebase,
+ * or -1 if the sun never rises.
+ */
+ public long getTodaySunrise() {
+ return mTodaySunrise;
+ }
+
+ /**
+ * Returns the time of today's sunset in the System.currentTimeMillis() timebase,
+ * or -1 if the sun never sets.
+ */
+ public long getTodaySunset() {
+ return mTodaySunset;
+ }
+
+ /**
+ * Returns the time of tomorrow's sunrise in the System.currentTimeMillis() timebase,
+ * or -1 if the sun never rises.
+ */
+ public long getTomorrowSunrise() {
+ return mTomorrowSunrise;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ return o instanceof TwilightState && equals((TwilightState)o);
+ }
+
+ public boolean equals(TwilightState other) {
+ return other != null
+ && mIsNight == other.mIsNight
+ && mYesterdaySunset == other.mYesterdaySunset
+ && mTodaySunrise == other.mTodaySunrise
+ && mTodaySunset == other.mTodaySunset
+ && mTomorrowSunrise == other.mTomorrowSunrise;
+ }
+
+ @Override
+ public int hashCode() {
+ return 0; // don't care
+ }
+
+ @Override
+ public String toString() {
+ DateFormat f = DateFormat.getDateTimeInstance();
+ return "{TwilightState: isNight=" + mIsNight
+ + ", mYesterdaySunset=" + f.format(new Date(mYesterdaySunset))
+ + ", mTodaySunrise=" + f.format(new Date(mTodaySunrise))
+ + ", mTodaySunset=" + f.format(new Date(mTodaySunset))
+ + ", mTomorrowSunrise=" + f.format(new Date(mTomorrowSunrise))
+ + "}";
+ }
+}
diff --git a/services/java/com/android/server/updates/CarrierProvisioningUrlsInstallReceiver.java b/services/core/java/com/android/server/updates/CarrierProvisioningUrlsInstallReceiver.java
index b53fb650c627..b53fb650c627 100644
--- a/services/java/com/android/server/updates/CarrierProvisioningUrlsInstallReceiver.java
+++ b/services/core/java/com/android/server/updates/CarrierProvisioningUrlsInstallReceiver.java
diff --git a/services/java/com/android/server/updates/CertPinInstallReceiver.java b/services/core/java/com/android/server/updates/CertPinInstallReceiver.java
index c03fbc3d0aed..c03fbc3d0aed 100644
--- a/services/java/com/android/server/updates/CertPinInstallReceiver.java
+++ b/services/core/java/com/android/server/updates/CertPinInstallReceiver.java
diff --git a/services/java/com/android/server/updates/ConfigUpdateInstallReceiver.java b/services/core/java/com/android/server/updates/ConfigUpdateInstallReceiver.java
index 9601e9ad7ccb..9601e9ad7ccb 100644
--- a/services/java/com/android/server/updates/ConfigUpdateInstallReceiver.java
+++ b/services/core/java/com/android/server/updates/ConfigUpdateInstallReceiver.java
diff --git a/services/java/com/android/server/updates/IntentFirewallInstallReceiver.java b/services/core/java/com/android/server/updates/IntentFirewallInstallReceiver.java
index 0b54f92103dd..0b54f92103dd 100644
--- a/services/java/com/android/server/updates/IntentFirewallInstallReceiver.java
+++ b/services/core/java/com/android/server/updates/IntentFirewallInstallReceiver.java
diff --git a/services/java/com/android/server/updates/SELinuxPolicyInstallReceiver.java b/services/core/java/com/android/server/updates/SELinuxPolicyInstallReceiver.java
index 5dd30f1bf4d8..e43081436324 100644
--- a/services/java/com/android/server/updates/SELinuxPolicyInstallReceiver.java
+++ b/services/core/java/com/android/server/updates/SELinuxPolicyInstallReceiver.java
@@ -125,25 +125,11 @@ public class SELinuxPolicyInstallReceiver extends ConfigUpdateInstallReceiver {
SystemProperties.set("selinux.reload_policy", "1");
}
- private void setEnforcingMode(Context context) {
- String mode = Settings.Global.getString(context.getContentResolver(),
- Settings.Global.SELINUX_STATUS);
- if ("1".equals(mode)) {
- Slog.i(TAG, "Setting enforcing mode");
- SystemProperties.set("persist.selinux.enforcing", mode);
- } else if ("0".equals(mode)) {
- Slog.i(TAG, "Tried to set permissive mode, ignoring");
- } else {
- Slog.e(TAG, "Got invalid enforcing mode: " + mode);
- }
- }
-
@Override
protected void postInstall(Context context, Intent intent) {
try {
unpackBundle();
applyUpdate();
- setEnforcingMode(context);
} catch (IllegalArgumentException e) {
Slog.e(TAG, "SELinux policy update malformed: ", e);
} catch (IOException e) {
diff --git a/services/java/com/android/server/updates/SmsShortCodesInstallReceiver.java b/services/core/java/com/android/server/updates/SmsShortCodesInstallReceiver.java
index 0f14f57cbd5a..0f14f57cbd5a 100644
--- a/services/java/com/android/server/updates/SmsShortCodesInstallReceiver.java
+++ b/services/core/java/com/android/server/updates/SmsShortCodesInstallReceiver.java
diff --git a/services/java/com/android/server/updates/TZInfoInstallReceiver.java b/services/core/java/com/android/server/updates/TZInfoInstallReceiver.java
index 83adbdbd7799..83adbdbd7799 100644
--- a/services/java/com/android/server/updates/TZInfoInstallReceiver.java
+++ b/services/core/java/com/android/server/updates/TZInfoInstallReceiver.java
diff --git a/services/java/com/android/server/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index e6b6b93a1d46..97ea52c0a4a2 100644
--- a/services/java/com/android/server/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server;
+package com.android.server.wallpaper;
import static android.os.ParcelFileDescriptor.*;
@@ -85,8 +85,8 @@ import com.android.internal.content.PackageMonitor;
import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.JournaledFile;
-class WallpaperManagerService extends IWallpaperManager.Stub {
- static final String TAG = "WallpaperService";
+public class WallpaperManagerService extends IWallpaperManager.Stub {
+ static final String TAG = "WallpaperManagerService";
static final boolean DEBUG = false;
final Object mLock = new Object[0];
@@ -98,7 +98,6 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
static final long MIN_WALLPAPER_CRASH_TIME = 10000;
static final String WALLPAPER = "wallpaper";
static final String WALLPAPER_INFO = "wallpaper_info.xml";
-
/**
* Name of the component used to display bitmap wallpapers from either the gallery or
* built-in wallpapers.
@@ -505,7 +504,12 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
}
}
- String getName() {
+ /** Called by SystemBackupAgent */
+ public String getName() {
+ // Verify caller is the system
+ if (Binder.getCallingUid() != android.os.Process.SYSTEM_UID) {
+ throw new RuntimeException("getName() can only be called from the system process");
+ }
synchronized (mLock) {
return mWallpaperMap.get(0).name;
}
@@ -1175,7 +1179,11 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
}
// Called by SystemBackupAgent after files are restored to disk.
- void settingsRestored() {
+ public void settingsRestored() {
+ // Verify caller is the system
+ if (Binder.getCallingUid() != android.os.Process.SYSTEM_UID) {
+ throw new RuntimeException("settingsRestored() can only be called from the system process");
+ }
// TODO: If necessary, make it work for secondary users as well. This currently assumes
// restores only to the primary user
if (DEBUG) Slog.v(TAG, "settingsRestored");
diff --git a/services/java/com/android/server/wifi/README.txt b/services/core/java/com/android/server/wifi/README.txt
index 39e14751ab13..39e14751ab13 100644
--- a/services/java/com/android/server/wifi/README.txt
+++ b/services/core/java/com/android/server/wifi/README.txt
diff --git a/services/java/com/android/server/wifi/WifiController.java b/services/core/java/com/android/server/wifi/WifiController.java
index bdb0a5e27f49..bdb0a5e27f49 100644
--- a/services/java/com/android/server/wifi/WifiController.java
+++ b/services/core/java/com/android/server/wifi/WifiController.java
diff --git a/services/java/com/android/server/wifi/WifiNotificationController.java b/services/core/java/com/android/server/wifi/WifiNotificationController.java
index a9206e09b803..a9206e09b803 100644
--- a/services/java/com/android/server/wifi/WifiNotificationController.java
+++ b/services/core/java/com/android/server/wifi/WifiNotificationController.java
diff --git a/services/java/com/android/server/wifi/WifiService.java b/services/core/java/com/android/server/wifi/WifiService.java
index aecf9aea5b6a..aecf9aea5b6a 100644
--- a/services/java/com/android/server/wifi/WifiService.java
+++ b/services/core/java/com/android/server/wifi/WifiService.java
diff --git a/services/java/com/android/server/wifi/WifiSettingsStore.java b/services/core/java/com/android/server/wifi/WifiSettingsStore.java
index 3ff80616142c..3ff80616142c 100644
--- a/services/java/com/android/server/wifi/WifiSettingsStore.java
+++ b/services/core/java/com/android/server/wifi/WifiSettingsStore.java
diff --git a/services/java/com/android/server/wifi/WifiTrafficPoller.java b/services/core/java/com/android/server/wifi/WifiTrafficPoller.java
index b4985509047c..b4985509047c 100644
--- a/services/java/com/android/server/wifi/WifiTrafficPoller.java
+++ b/services/core/java/com/android/server/wifi/WifiTrafficPoller.java
diff --git a/services/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java
index 756e06a68d87..756e06a68d87 100644
--- a/services/java/com/android/server/wm/AppTransition.java
+++ b/services/core/java/com/android/server/wm/AppTransition.java
diff --git a/services/java/com/android/server/wm/AppWindowAnimator.java b/services/core/java/com/android/server/wm/AppWindowAnimator.java
index 3cccf1d534f2..7fe895b57a90 100644
--- a/services/java/com/android/server/wm/AppWindowAnimator.java
+++ b/services/core/java/com/android/server/wm/AppWindowAnimator.java
@@ -1,4 +1,18 @@
-// Copyright 2012 Google Inc. All Rights Reserved.
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package com.android.server.wm;
diff --git a/services/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index e98014bdea3e..ca4ad8a32e0d 100644
--- a/services/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -105,6 +105,8 @@ class AppWindowToken extends WindowToken {
// Input application handle used by the input dispatcher.
final InputApplicationHandle mInputApplicationHandle;
+ boolean mDeferRemoval;
+
AppWindowToken(WindowManagerService _service, IApplicationToken _token) {
super(_service, _token.asBinder(),
WindowManager.LayoutParams.TYPE_APPLICATION, true);
diff --git a/services/java/com/android/server/wm/BlackFrame.java b/services/core/java/com/android/server/wm/BlackFrame.java
index 5aa266d473bd..5aa266d473bd 100644
--- a/services/java/com/android/server/wm/BlackFrame.java
+++ b/services/core/java/com/android/server/wm/BlackFrame.java
diff --git a/services/java/com/android/server/wm/DimLayer.java b/services/core/java/com/android/server/wm/DimLayer.java
index c189ddd86c14..c09ea5cead82 100644
--- a/services/java/com/android/server/wm/DimLayer.java
+++ b/services/core/java/com/android/server/wm/DimLayer.java
@@ -1,4 +1,18 @@
-// Copyright 2012 Google Inc. All Rights Reserved.
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package com.android.server.wm;
@@ -51,9 +65,9 @@ public class DimLayer {
/** Owning stack */
final TaskStack mStack;
- DimLayer(WindowManagerService service, TaskStack stack) {
+ DimLayer(WindowManagerService service, TaskStack stack, DisplayContent displayContent) {
mStack = stack;
- mDisplayContent = stack.getDisplayContent();
+ mDisplayContent = displayContent;
final int displayId = mDisplayContent.getDisplayId();
if (DEBUG) Slog.v(TAG, "Ctor: displayId=" + displayId);
SurfaceControl.openTransaction();
@@ -125,8 +139,54 @@ public class DimLayer {
}
}
+ /**
+ * @param layer The new layer value.
+ * @param inTransaction Whether the call is made within a surface transaction.
+ */
+ void adjustSurface(int layer, boolean inTransaction) {
+ final int dw, dh;
+ final float xPos, yPos;
+ if (!mStack.isFullscreen()) {
+ dw = mBounds.width();
+ dh = mBounds.height();
+ xPos = mBounds.left;
+ yPos = mBounds.top;
+ } else {
+ // Set surface size to screen size.
+ final DisplayInfo info = mDisplayContent.getDisplayInfo();
+ // Multiply by 1.5 so that rotating a frozen surface that includes this does not expose
+ // a corner.
+ dw = (int) (info.logicalWidth * 1.5);
+ dh = (int) (info.logicalHeight * 1.5);
+ // back off position so 1/4 of Surface is before and 1/4 is after.
+ xPos = -1 * dw / 6;
+ yPos = -1 * dh / 6;
+ }
+
+ try {
+ if (!inTransaction) {
+ SurfaceControl.openTransaction();
+ }
+ mDimSurface.setPosition(xPos, yPos);
+ mDimSurface.setSize(dw, dh);
+ mDimSurface.setLayer(layer);
+ } catch (RuntimeException e) {
+ Slog.w(TAG, "Failure setting size or layer", e);
+ } finally {
+ if (!inTransaction) {
+ SurfaceControl.closeTransaction();
+ }
+ }
+ mLastBounds.set(mBounds);
+ mLayer = layer;
+ }
+
+ // Assumes that surface transactions are currently closed.
void setBounds(Rect bounds) {
mBounds.set(bounds);
+ if (isDimming() && !mLastBounds.equals(bounds)) {
+ adjustSurface(mLayer, false);
+ }
}
/**
@@ -164,35 +224,8 @@ public class DimLayer {
return;
}
- final int dw, dh;
- final float xPos, yPos;
- if (mStack.hasSibling()) {
- dw = mBounds.width();
- dh = mBounds.height();
- xPos = mBounds.left;
- yPos = mBounds.right;
- } else {
- // Set surface size to screen size.
- final DisplayInfo info = mDisplayContent.getDisplayInfo();
- // Multiply by 1.5 so that rotating a frozen surface that includes this does not expose a
- // corner.
- dw = (int) (info.logicalWidth * 1.5);
- dh = (int) (info.logicalHeight * 1.5);
- // back off position so 1/4 of Surface is before and 1/4 is after.
- xPos = -1 * dw / 6;
- yPos = -1 * dh / 6;
- }
-
if (!mLastBounds.equals(mBounds) || mLayer != layer) {
- try {
- mDimSurface.setPosition(xPos, yPos);
- mDimSurface.setSize(dw, dh);
- mDimSurface.setLayer(layer);
- } catch (RuntimeException e) {
- Slog.w(TAG, "Failure setting size or layer", e);
- }
- mLastBounds.set(mBounds);
- mLayer = layer;
+ adjustSurface(layer, true);
}
long curTime = SystemClock.uptimeMillis();
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
new file mode 100644
index 000000000000..d4bcd5c48083
--- /dev/null
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -0,0 +1,415 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm;
+
+import static com.android.server.am.ActivityStackSupervisor.HOME_STACK_ID;
+import static com.android.server.wm.WindowManagerService.DEBUG_VISIBILITY;
+import static com.android.server.wm.WindowManagerService.TAG;
+
+import android.graphics.Rect;
+import android.graphics.Region;
+import android.util.Slog;
+import android.view.Display;
+import android.view.DisplayInfo;
+import android.view.Surface;
+
+import java.io.PrintWriter;
+import java.util.ArrayList;
+
+class DisplayContentList extends ArrayList<DisplayContent> {
+}
+
+/**
+ * Utility class for keeping track of the WindowStates and other pertinent contents of a
+ * particular Display.
+ *
+ * IMPORTANT: No method from this class should ever be used without holding
+ * WindowManagerService.mWindowMap.
+ */
+class DisplayContent {
+
+ /** Unique identifier of this stack. */
+ private final int mDisplayId;
+
+ /** Z-ordered (bottom-most first) list of all Window objects. Assigned to an element
+ * from mDisplayWindows; */
+ private final WindowList mWindows = new WindowList();
+
+ // This protects the following display size properties, so that
+ // getDisplaySize() doesn't need to acquire the global lock. This is
+ // needed because the window manager sometimes needs to use ActivityThread
+ // while it has its global state locked (for example to load animation
+ // resources), but the ActivityThread also needs get the current display
+ // size sometimes when it has its package lock held.
+ //
+ // These will only be modified with both mWindowMap and mDisplaySizeLock
+ // held (in that order) so the window manager doesn't need to acquire this
+ // lock when needing these values in its normal operation.
+ final Object mDisplaySizeLock = new Object();
+ int mInitialDisplayWidth = 0;
+ int mInitialDisplayHeight = 0;
+ int mInitialDisplayDensity = 0;
+ int mBaseDisplayWidth = 0;
+ int mBaseDisplayHeight = 0;
+ int mBaseDisplayDensity = 0;
+ private final DisplayInfo mDisplayInfo = new DisplayInfo();
+ private final Display mDisplay;
+
+ Rect mBaseDisplayRect = new Rect();
+ Rect mContentRect = new Rect();
+
+ // Accessed directly by all users.
+ boolean layoutNeeded;
+ int pendingLayoutChanges;
+ final boolean isDefaultDisplay;
+
+ /** Window tokens that are in the process of exiting, but still on screen for animations. */
+ final ArrayList<WindowToken> mExitingTokens = new ArrayList<WindowToken>();
+
+ /** Array containing all TaskStacks on this display. Array
+ * is stored in display order with the current bottom stack at 0. */
+ private final ArrayList<TaskStack> mStacks = new ArrayList<TaskStack>();
+
+ /** A special TaskStack with id==HOME_STACK_ID that moves to the bottom whenever any TaskStack
+ * (except a future lockscreen TaskStack) moves to the top. */
+ private TaskStack mHomeStack = null;
+
+ /** Detect user tapping outside of current focused stack bounds .*/
+ StackTapPointerEventListener mTapDetector;
+
+ /** Detect user tapping outside of current focused stack bounds .*/
+ Region mTouchExcludeRegion = new Region();
+
+ /** Save allocating when calculating rects */
+ Rect mTmpRect = new Rect();
+
+ /** For gathering Task objects in order. */
+ final ArrayList<Task> mTmpTaskHistory = new ArrayList<Task>();
+
+ final WindowManagerService mService;
+
+ /** Remove this display when animation on it has completed. */
+ boolean mDeferredRemoval;
+
+ /**
+ * @param display May not be null.
+ * @param service You know.
+ */
+ DisplayContent(Display display, WindowManagerService service) {
+ mDisplay = display;
+ mDisplayId = display.getDisplayId();
+ display.getDisplayInfo(mDisplayInfo);
+ isDefaultDisplay = mDisplayId == Display.DEFAULT_DISPLAY;
+ mService = service;
+ }
+
+ int getDisplayId() {
+ return mDisplayId;
+ }
+
+ WindowList getWindowList() {
+ return mWindows;
+ }
+
+ Display getDisplay() {
+ return mDisplay;
+ }
+
+ DisplayInfo getDisplayInfo() {
+ return mDisplayInfo;
+ }
+
+ /**
+ * Returns true if the specified UID has access to this display.
+ */
+ public boolean hasAccess(int uid) {
+ return mDisplay.hasAccess(uid);
+ }
+
+ public boolean isPrivate() {
+ return (mDisplay.getFlags() & Display.FLAG_PRIVATE) != 0;
+ }
+
+ ArrayList<TaskStack> getStacks() {
+ return mStacks;
+ }
+
+ /**
+ * Retrieve the tasks on this display in stack order from the bottommost TaskStack up.
+ * @return All the Tasks, in order, on this display.
+ */
+ ArrayList<Task> getTasks() {
+ mTmpTaskHistory.clear();
+ final int numStacks = mStacks.size();
+ for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
+ mTmpTaskHistory.addAll(mStacks.get(stackNdx).getTasks());
+ }
+ return mTmpTaskHistory;
+ }
+
+ TaskStack getHomeStack() {
+ if (mHomeStack == null) {
+ Slog.e(TAG, "getHomeStack: Returning null from this=" + this);
+ }
+ return mHomeStack;
+ }
+
+ void updateDisplayInfo() {
+ mDisplay.getDisplayInfo(mDisplayInfo);
+ for (int i = mStacks.size() - 1; i >= 0; --i) {
+ mStacks.get(i).updateDisplayInfo();
+ }
+ }
+
+ void getLogicalDisplayRect(Rect out) {
+ // Uses same calculation as in LogicalDisplay#configureDisplayInTransactionLocked.
+ final int orientation = mDisplayInfo.rotation;
+ boolean rotated = (orientation == Surface.ROTATION_90
+ || orientation == Surface.ROTATION_270);
+ final int physWidth = rotated ? mBaseDisplayHeight : mBaseDisplayWidth;
+ final int physHeight = rotated ? mBaseDisplayWidth : mBaseDisplayHeight;
+ int width = mDisplayInfo.logicalWidth;
+ int left = (physWidth - width) / 2;
+ int height = mDisplayInfo.logicalHeight;
+ int top = (physHeight - height) / 2;
+ out.set(left, top, left + width, top + height);
+ }
+
+ /** Refer to {@link WindowManagerService#attachStack(int, int)} */
+ void attachStack(TaskStack stack) {
+ if (stack.mStackId == HOME_STACK_ID) {
+ if (mHomeStack != null) {
+ throw new IllegalArgumentException("attachStack: HOME_STACK_ID (0) not first.");
+ }
+ mHomeStack = stack;
+ }
+ mStacks.add(stack);
+ layoutNeeded = true;
+ }
+
+ void moveStack(TaskStack stack, boolean toTop) {
+ mStacks.remove(stack);
+ mStacks.add(toTop ? mStacks.size() : 0, stack);
+ }
+
+ void detachStack(TaskStack stack) {
+ mStacks.remove(stack);
+ }
+
+ /**
+ * Propagate the new bounds to all child stacks.
+ * @param contentRect The bounds to apply at the top level.
+ */
+ void resize(Rect contentRect) {
+ mContentRect.set(contentRect);
+ }
+
+ int stackIdFromPoint(int x, int y) {
+ for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final TaskStack stack = mStacks.get(stackNdx);
+ stack.getBounds(mTmpRect);
+ if (mTmpRect.contains(x, y)) {
+ return stack.mStackId;
+ }
+ }
+ return -1;
+ }
+
+ void setTouchExcludeRegion(TaskStack focusedStack) {
+ mTouchExcludeRegion.set(mBaseDisplayRect);
+ WindowList windows = getWindowList();
+ for (int i = windows.size() - 1; i >= 0; --i) {
+ final WindowState win = windows.get(i);
+ final TaskStack stack = win.getStack();
+ if (win.isVisibleLw() && stack != null && stack != focusedStack) {
+ mTmpRect.set(win.mVisibleFrame);
+ mTmpRect.intersect(win.mVisibleInsets);
+ mTouchExcludeRegion.op(mTmpRect, Region.Op.DIFFERENCE);
+ }
+ }
+ }
+
+ void switchUserStacks(int newUserId) {
+ final WindowList windows = getWindowList();
+ for (int i = 0; i < windows.size(); i++) {
+ final WindowState win = windows.get(i);
+ if (win.isHiddenFromUserLocked()) {
+ if (DEBUG_VISIBILITY) Slog.w(TAG, "user changing " + newUserId + " hiding "
+ + win + ", attrs=" + win.mAttrs.type + ", belonging to "
+ + win.mOwnerUid);
+ win.hideLw(false);
+ }
+ }
+
+ for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ mStacks.get(stackNdx).switchUser(newUserId);
+ }
+ }
+
+ void resetAnimationBackgroundAnimator() {
+ for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ mStacks.get(stackNdx).resetAnimationBackgroundAnimator();
+ }
+ }
+
+ boolean animateDimLayers() {
+ boolean result = false;
+ for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ result |= mStacks.get(stackNdx).animateDimLayers();
+ }
+ return result;
+ }
+
+ void resetDimming() {
+ for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ mStacks.get(stackNdx).resetDimmingTag();
+ }
+ }
+
+ boolean isDimming() {
+ for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ if (mStacks.get(stackNdx).isDimming()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ void stopDimmingIfNeeded() {
+ for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ mStacks.get(stackNdx).stopDimmingIfNeeded();
+ }
+ }
+
+ void close() {
+ for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ mStacks.get(stackNdx).close();
+ }
+ }
+
+ boolean isAnimating() {
+ for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final TaskStack stack = mStacks.get(stackNdx);
+ if (stack.isAnimating()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ void checkForDeferredActions() {
+ boolean animating = false;
+ for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final TaskStack stack = mStacks.get(stackNdx);
+ if (stack.isAnimating()) {
+ animating = true;
+ } else {
+ if (stack.mDeferDetach) {
+ mService.detachStackLocked(this, stack);
+ }
+ final ArrayList<Task> tasks = stack.getTasks();
+ for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) {
+ final Task task = tasks.get(taskNdx);
+ AppTokenList tokens = task.mAppTokens;
+ for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) {
+ AppWindowToken wtoken = tokens.get(tokenNdx);
+ if (wtoken.mDeferRemoval) {
+ wtoken.mDeferRemoval = false;
+ mService.removeAppFromTaskLocked(wtoken);
+ }
+ }
+ if (task.mDeferRemoval) {
+ task.mDeferRemoval = false;
+ mService.removeTaskLocked(task);
+ }
+ }
+ }
+ }
+ if (!animating && mDeferredRemoval) {
+ mService.onDisplayRemoved(mDisplayId);
+ }
+ }
+
+ public void dump(String prefix, PrintWriter pw) {
+ pw.print(prefix); pw.print("Display: mDisplayId="); pw.println(mDisplayId);
+ final String subPrefix = " " + prefix;
+ pw.print(subPrefix); pw.print("init="); pw.print(mInitialDisplayWidth); pw.print("x");
+ pw.print(mInitialDisplayHeight); pw.print(" "); pw.print(mInitialDisplayDensity);
+ pw.print("dpi");
+ if (mInitialDisplayWidth != mBaseDisplayWidth
+ || mInitialDisplayHeight != mBaseDisplayHeight
+ || mInitialDisplayDensity != mBaseDisplayDensity) {
+ pw.print(" base=");
+ pw.print(mBaseDisplayWidth); pw.print("x"); pw.print(mBaseDisplayHeight);
+ pw.print(" "); pw.print(mBaseDisplayDensity); pw.print("dpi");
+ }
+ pw.print(" cur=");
+ pw.print(mDisplayInfo.logicalWidth);
+ pw.print("x"); pw.print(mDisplayInfo.logicalHeight);
+ pw.print(" app=");
+ pw.print(mDisplayInfo.appWidth);
+ pw.print("x"); pw.print(mDisplayInfo.appHeight);
+ pw.print(" rng="); pw.print(mDisplayInfo.smallestNominalAppWidth);
+ pw.print("x"); pw.print(mDisplayInfo.smallestNominalAppHeight);
+ pw.print("-"); pw.print(mDisplayInfo.largestNominalAppWidth);
+ pw.print("x"); pw.println(mDisplayInfo.largestNominalAppHeight);
+ pw.print(subPrefix); pw.print("deferred="); pw.print(mDeferredRemoval);
+ pw.print(" layoutNeeded="); pw.println(layoutNeeded);
+ for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final TaskStack stack = mStacks.get(stackNdx);
+ pw.print(prefix); pw.print("mStacks[" + stackNdx + "]"); pw.println(stack.mStackId);
+ stack.dump(prefix + " ", pw);
+ }
+ pw.println();
+ pw.println(" Application tokens in bottom up Z order:");
+ int ndx = 0;
+ final int numStacks = mStacks.size();
+ for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
+ ArrayList<Task> tasks = mStacks.get(stackNdx).getTasks();
+ for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) {
+ AppTokenList tokens = tasks.get(taskNdx).mAppTokens;
+ for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) {
+ final AppWindowToken wtoken = tokens.get(tokenNdx);
+ pw.print(" App #"); pw.print(ndx++);
+ pw.print(' '); pw.print(wtoken); pw.println(":");
+ wtoken.dump(pw, " ");
+ }
+ }
+ }
+ if (ndx == 0) {
+ pw.println(" None");
+ }
+ pw.println();
+ if (!mExitingTokens.isEmpty()) {
+ pw.println();
+ pw.println(" Exiting tokens:");
+ for (int i=mExitingTokens.size()-1; i>=0; i--) {
+ WindowToken token = mExitingTokens.get(i);
+ pw.print(" Exiting #"); pw.print(i);
+ pw.print(' '); pw.print(token);
+ pw.println(':');
+ token.dump(pw, " ");
+ }
+ }
+ pw.println();
+ }
+
+ @Override
+ public String toString() {
+ return "Display " + mDisplayId + " info=" + mDisplayInfo + " stacks=" + mStacks;
+ }
+}
diff --git a/services/java/com/android/server/wm/DisplayMagnifier.java b/services/core/java/com/android/server/wm/DisplayMagnifier.java
index 382d7b4a94af..382d7b4a94af 100644
--- a/services/java/com/android/server/wm/DisplayMagnifier.java
+++ b/services/core/java/com/android/server/wm/DisplayMagnifier.java
diff --git a/services/java/com/android/server/wm/DisplaySettings.java b/services/core/java/com/android/server/wm/DisplaySettings.java
index 34d1a647e10f..34d1a647e10f 100644
--- a/services/java/com/android/server/wm/DisplaySettings.java
+++ b/services/core/java/com/android/server/wm/DisplaySettings.java
diff --git a/services/java/com/android/server/wm/DragState.java b/services/core/java/com/android/server/wm/DragState.java
index a73793968f49..a73793968f49 100644
--- a/services/java/com/android/server/wm/DragState.java
+++ b/services/core/java/com/android/server/wm/DragState.java
diff --git a/services/java/com/android/server/wm/FakeWindowImpl.java b/services/core/java/com/android/server/wm/FakeWindowImpl.java
index 5a3471b06215..5a3471b06215 100644
--- a/services/java/com/android/server/wm/FakeWindowImpl.java
+++ b/services/core/java/com/android/server/wm/FakeWindowImpl.java
diff --git a/services/java/com/android/server/wm/FocusedStackFrame.java b/services/core/java/com/android/server/wm/FocusedStackFrame.java
index cc48b867f6df..f1f5fe88cc85 100644
--- a/services/java/com/android/server/wm/FocusedStackFrame.java
+++ b/services/core/java/com/android/server/wm/FocusedStackFrame.java
@@ -41,7 +41,7 @@ class FocusedStackFrame {
private final SurfaceControl mSurfaceControl;
private final Surface mSurface = new Surface();
private final Rect mLastBounds = new Rect();
- private final Rect mBounds = new Rect();
+ final Rect mBounds = new Rect();
private final Rect mTmpDrawRect = new Rect();
public FocusedStackFrame(Display display, SurfaceSession session) {
@@ -131,9 +131,9 @@ class FocusedStackFrame {
}
}
- public void setBounds(Rect bounds) {
- if (false && DEBUG_STACK) Slog.i(TAG, "setBounds: bounds=" + bounds);
- mBounds.set(bounds);
+ public void setBounds(TaskStack stack) {
+ stack.getBounds(mBounds);
+ if (false && DEBUG_STACK) Slog.i(TAG, "setBounds: bounds=" + mBounds);
}
public void setLayer(int layer) {
diff --git a/services/java/com/android/server/wm/InputMonitor.java b/services/core/java/com/android/server/wm/InputMonitor.java
index 3d2ec4577acf..4aae5c12383a 100644
--- a/services/java/com/android/server/wm/InputMonitor.java
+++ b/services/core/java/com/android/server/wm/InputMonitor.java
@@ -58,6 +58,8 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
private final Object mInputDevicesReadyMonitor = new Object();
private boolean mInputDevicesReady;
+ Rect mTmpRect = new Rect();
+
public InputMonitor(WindowManagerService service) {
mService = service;
}
@@ -175,7 +177,8 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
if (modal && child.mAppToken != null) {
// Limit the outer touch to the activity stack region.
flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
- inputWindowHandle.touchableRegion.set(child.getStackBounds());
+ child.getStackBounds(mTmpRect);
+ inputWindowHandle.touchableRegion.set(mTmpRect);
} else {
// Not modal or full screen modal
child.getTouchableRegion(inputWindowHandle.touchableRegion);
@@ -361,8 +364,8 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
* motion event processing when the screen is off since these events are normally
* dropped. */
@Override
- public int interceptMotionBeforeQueueingWhenScreenOff(int policyFlags) {
- return mService.mPolicy.interceptMotionBeforeQueueingWhenScreenOff(policyFlags);
+ public int interceptMotionBeforeQueueingWhenScreenOff(long whenNanos, int policyFlags) {
+ return mService.mPolicy.interceptMotionBeforeQueueingWhenScreenOff(whenNanos, policyFlags);
}
/* Provides an opportunity for the window manager policy to process a key before
diff --git a/services/java/com/android/server/wm/KeyguardDisableHandler.java b/services/core/java/com/android/server/wm/KeyguardDisableHandler.java
index 859df519169c..859df519169c 100644
--- a/services/java/com/android/server/wm/KeyguardDisableHandler.java
+++ b/services/core/java/com/android/server/wm/KeyguardDisableHandler.java
diff --git a/services/java/com/android/server/wm/PointerEventDispatcher.java b/services/core/java/com/android/server/wm/PointerEventDispatcher.java
index 6b0e4c9f010a..6b0e4c9f010a 100644
--- a/services/java/com/android/server/wm/PointerEventDispatcher.java
+++ b/services/core/java/com/android/server/wm/PointerEventDispatcher.java
diff --git a/services/java/com/android/server/wm/ScreenRotationAnimation.java b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
index e630737b40b7..e630737b40b7 100644
--- a/services/java/com/android/server/wm/ScreenRotationAnimation.java
+++ b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
diff --git a/services/java/com/android/server/wm/Session.java b/services/core/java/com/android/server/wm/Session.java
index 87cabc9a510b..ca9076f51496 100644
--- a/services/java/com/android/server/wm/Session.java
+++ b/services/core/java/com/android/server/wm/Session.java
@@ -293,7 +293,11 @@ final class Session extends IWindowSession.Stub
// !!! FIXME: put all this heavy stuff onto the mH looper, as well as
// the actual drag event dispatch stuff in the dragstate
- Display display = callingWin.mDisplayContent.getDisplay();
+ final DisplayContent displayContent = callingWin.getDisplayContent();
+ if (displayContent == null) {
+ return false;
+ }
+ Display display = displayContent.getDisplay();
mService.mDragState.register(display);
mService.mInputMonitor.updateInputWindowsLw(true /*force*/);
if (!mService.mInputManager.transferTouchFocus(callingWin.mInputChannel,
diff --git a/services/java/com/android/server/wm/StackTapPointerEventListener.java b/services/core/java/com/android/server/wm/StackTapPointerEventListener.java
index 19d8ab372afe..19d8ab372afe 100644
--- a/services/java/com/android/server/wm/StackTapPointerEventListener.java
+++ b/services/core/java/com/android/server/wm/StackTapPointerEventListener.java
diff --git a/services/java/com/android/server/wm/StartingData.java b/services/core/java/com/android/server/wm/StartingData.java
index 7115b0fd02e5..7115b0fd02e5 100644
--- a/services/java/com/android/server/wm/StartingData.java
+++ b/services/core/java/com/android/server/wm/StartingData.java
diff --git a/services/java/com/android/server/wm/StrictModeFlash.java b/services/core/java/com/android/server/wm/StrictModeFlash.java
index fb5876b65aed..fb5876b65aed 100644
--- a/services/java/com/android/server/wm/StrictModeFlash.java
+++ b/services/core/java/com/android/server/wm/StrictModeFlash.java
diff --git a/services/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 13fdbc83b2ce..09c4e20b6d5a 100644
--- a/services/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -16,15 +16,17 @@
package com.android.server.wm;
+import static com.android.server.wm.WindowManagerService.TAG;
+
import android.util.EventLog;
-import com.android.server.EventLogTags;
+import android.util.Slog;
class Task {
-// private final String TAG = "TaskGroup";
TaskStack mStack;
final AppTokenList mAppTokens = new AppTokenList();
final int taskId;
final int mUserId;
+ boolean mDeferRemoval = false;
Task(AppWindowToken wtoken, TaskStack stack, int userId) {
taskId = wtoken.groupId;
@@ -38,18 +40,24 @@ class Task {
}
void addAppToken(int addPos, AppWindowToken wtoken) {
+ final int lastPos = mAppTokens.size();
+ if (addPos > lastPos) {
+ // We lost an app token. Don't crash though.
+ Slog.e(TAG, "Task.addAppToken: Out of bounds attempt token=" + wtoken + " addPos="
+ + addPos + " lastPos=" + lastPos);
+ addPos = lastPos;
+ }
mAppTokens.add(addPos, wtoken);
+ mDeferRemoval = false;
}
boolean removeAppToken(AppWindowToken wtoken) {
- mAppTokens.remove(wtoken);
+ boolean removed = mAppTokens.remove(wtoken);
if (mAppTokens.size() == 0) {
EventLog.writeEvent(com.android.server.EventLogTags.WM_TASK_REMOVED, taskId,
"removeAppToken: last token");
- mStack.removeTask(this);
- return true;
}
- return false;
+ return removed;
}
@Override
diff --git a/services/java/com/android/server/wm/TaskGroup.java b/services/core/java/com/android/server/wm/TaskGroup.java
index 1f1dd5832d55..1f1dd5832d55 100644
--- a/services/java/com/android/server/wm/TaskGroup.java
+++ b/services/core/java/com/android/server/wm/TaskGroup.java
diff --git a/services/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java
index cb29df474874..81db8b306aa0 100644
--- a/services/java/com/android/server/wm/TaskStack.java
+++ b/services/core/java/com/android/server/wm/TaskStack.java
@@ -26,8 +26,6 @@ import android.util.Slog;
import android.util.TypedValue;
import com.android.server.EventLogTags;
-import static com.android.server.am.ActivityStackSupervisor.HOME_STACK_ID;
-
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -43,23 +41,29 @@ public class TaskStack {
private final WindowManagerService mService;
/** The display this stack sits under. */
- private final DisplayContent mDisplayContent;
+ private DisplayContent mDisplayContent;
/** The Tasks that define this stack. Oldest Tasks are at the bottom. The ordering must match
* mTaskHistory in the ActivityStack with the same mStackId */
private final ArrayList<Task> mTasks = new ArrayList<Task>();
- /** The StackBox this sits in. */
- StackBox mStackBox;
+ /** For comparison with DisplayContent bounds. */
+ private Rect mTmpRect = new Rect();
+
+ /** Content limits relative to the DisplayContent this sits in. */
+ private Rect mBounds = new Rect();
+
+ /** Whether mBounds is fullscreen */
+ private boolean mFullscreen = true;
/** Used to support {@link android.view.WindowManager.LayoutParams#FLAG_DIM_BEHIND} */
- final DimLayer mDimLayer;
+ private DimLayer mDimLayer;
/** The particular window with FLAG_DIM_BEHIND set. If null, hide mDimLayer. */
WindowStateAnimator mDimWinAnimator;
/** Support for non-zero {@link android.view.animation.Animation#getBackgroundColor()} */
- final DimLayer mAnimationBackgroundSurface;
+ DimLayer mAnimationBackgroundSurface;
/** The particular window with an Animation with non-zero background color. */
WindowStateAnimator mAnimationBackgroundAnimator;
@@ -68,12 +72,18 @@ public class TaskStack {
* then stop any dimming. */
boolean mDimmingTag;
- TaskStack(WindowManagerService service, int stackId, DisplayContent displayContent) {
+ /** Application tokens that are exiting, but still on screen for animations. */
+ final AppTokenList mExitingAppTokens = new AppTokenList();
+
+ /** Detach this stack from its display when animation completes. */
+ boolean mDeferDetach;
+
+ TaskStack(WindowManagerService service, int stackId) {
mService = service;
mStackId = stackId;
- mDisplayContent = displayContent;
- mDimLayer = new DimLayer(service, this);
- mAnimationBackgroundSurface = new DimLayer(service, this);
+ // TODO: remove bounds from log, they are always 0.
+ EventLog.writeEvent(EventLogTags.WM_STACK_CREATED, stackId, mBounds.left, mBounds.top,
+ mBounds.right, mBounds.bottom);
}
DisplayContent getDisplayContent() {
@@ -84,12 +94,73 @@ public class TaskStack {
return mTasks;
}
- boolean isHomeStack() {
- return mStackId == HOME_STACK_ID;
+ void resizeWindows() {
+ final boolean underStatusBar = mBounds.top == 0;
+
+ final ArrayList<WindowState> resizingWindows = mService.mResizingWindows;
+ for (int taskNdx = mTasks.size() - 1; taskNdx >= 0; --taskNdx) {
+ final ArrayList<AppWindowToken> activities = mTasks.get(taskNdx).mAppTokens;
+ for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
+ final ArrayList<WindowState> windows = activities.get(activityNdx).allAppWindows;
+ for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
+ final WindowState win = windows.get(winNdx);
+ if (!resizingWindows.contains(win)) {
+ if (WindowManagerService.DEBUG_RESIZE) Slog.d(TAG,
+ "setBounds: Resizing " + win);
+ resizingWindows.add(win);
+ }
+ win.mUnderStatusBar = underStatusBar;
+ }
+ }
+ }
}
- boolean hasSibling() {
- return mStackBox.mParent != null;
+ boolean setBounds(Rect bounds) {
+ boolean oldFullscreen = mFullscreen;
+ if (mDisplayContent != null) {
+ mDisplayContent.getLogicalDisplayRect(mTmpRect);
+ mFullscreen = mTmpRect.equals(bounds);
+ }
+
+ if (mBounds.equals(bounds) && oldFullscreen == mFullscreen) {
+ return false;
+ }
+
+ mDimLayer.setBounds(bounds);
+ mAnimationBackgroundSurface.setBounds(bounds);
+ mBounds.set(bounds);
+
+ return true;
+ }
+
+ void getBounds(Rect out) {
+ out.set(mBounds);
+ }
+
+ void updateDisplayInfo() {
+ if (mFullscreen && mDisplayContent != null) {
+ mDisplayContent.getLogicalDisplayRect(mTmpRect);
+ setBounds(mTmpRect);
+ }
+ }
+
+ boolean isFullscreen() {
+ return mFullscreen;
+ }
+
+ boolean isAnimating() {
+ for (int taskNdx = mTasks.size() - 1; taskNdx >= 0; --taskNdx) {
+ final ArrayList<AppWindowToken> activities = mTasks.get(taskNdx).mAppTokens;
+ for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
+ final ArrayList<WindowState> windows = activities.get(activityNdx).allAppWindows;
+ for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
+ if (windows.get(winNdx).mWinAnimator.isAnimating()) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
}
/**
@@ -97,9 +168,7 @@ public class TaskStack {
* @param task The task to add.
* @param toTop Whether to add it to the top or bottom.
*/
- boolean addTask(Task task, boolean toTop) {
- mStackBox.makeDirty();
-
+ void addTask(Task task, boolean toTop) {
int stackNdx;
if (!toTop) {
stackNdx = 0;
@@ -121,40 +190,60 @@ public class TaskStack {
mTasks.add(stackNdx, task);
task.mStack = this;
- mDisplayContent.addTask(task, toTop);
- return mDisplayContent.moveHomeStackBox(mStackId == HOME_STACK_ID);
+ mDisplayContent.moveStack(this, true);
+ EventLog.writeEvent(EventLogTags.WM_TASK_MOVED, task.taskId, toTop ? 1 : 0, stackNdx);
}
- boolean moveTaskToTop(Task task) {
+ void moveTaskToTop(Task task) {
if (DEBUG_TASK_MOVEMENT) Slog.d(TAG, "moveTaskToTop: task=" + task + " Callers="
+ Debug.getCallers(6));
mTasks.remove(task);
- return addTask(task, true);
+ addTask(task, true);
}
- boolean moveTaskToBottom(Task task) {
+ void moveTaskToBottom(Task task) {
if (DEBUG_TASK_MOVEMENT) Slog.d(TAG, "moveTaskToBottom: task=" + task);
mTasks.remove(task);
- return addTask(task, false);
+ addTask(task, false);
}
/**
- * Delete a Task from this stack. If it is the last Task in the stack, remove this stack from
- * its parent StackBox and merge the parent.
+ * Delete a Task from this stack. If it is the last Task in the stack, move this stack to the
+ * back.
* @param task The Task to delete.
*/
void removeTask(Task task) {
if (DEBUG_TASK_MOVEMENT) Slog.d(TAG, "removeTask: task=" + task);
- mStackBox.makeDirty();
mTasks.remove(task);
- mDisplayContent.removeTask(task);
+ if (mDisplayContent != null) {
+ if (mTasks.isEmpty()) {
+ mDisplayContent.moveStack(this, false);
+ }
+ mDisplayContent.layoutNeeded = true;
+ }
+ }
+
+ void attachDisplayContent(DisplayContent displayContent) {
+ if (mDisplayContent != null) {
+ throw new IllegalStateException("attachDisplayContent: Already attached");
+ }
+
+ mDisplayContent = displayContent;
+ mDimLayer = new DimLayer(mService, this, displayContent);
+ mAnimationBackgroundSurface = new DimLayer(mService, this, displayContent);
+ updateDisplayInfo();
}
- int remove() {
+ void detachDisplay() {
+ EventLog.writeEvent(EventLogTags.WM_STACK_REMOVED, mStackId);
+ for (int taskNdx = mTasks.size() - 1; taskNdx >= 0; --taskNdx) {
+ mService.tmpRemoveTaskWindowsLocked(mTasks.get(taskNdx));
+ }
mAnimationBackgroundSurface.destroySurface();
+ mAnimationBackgroundSurface = null;
mDimLayer.destroySurface();
- EventLog.writeEvent(EventLogTags.WM_STACK_REMOVED, mStackId);
- return mStackBox.remove();
+ mDimLayer = null;
+ mDisplayContent = null;
}
void resetAnimationBackgroundAnimator() {
@@ -259,28 +348,6 @@ public class TaskStack {
}
}
- void setBounds(Rect bounds, boolean underStatusBar) {
- mDimLayer.setBounds(bounds);
- mAnimationBackgroundSurface.setBounds(bounds);
-
- final ArrayList<WindowState> resizingWindows = mService.mResizingWindows;
- for (int taskNdx = mTasks.size() - 1; taskNdx >= 0; --taskNdx) {
- final ArrayList<AppWindowToken> activities = mTasks.get(taskNdx).mAppTokens;
- for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
- final ArrayList<WindowState> windows = activities.get(activityNdx).allAppWindows;
- for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
- final WindowState win = windows.get(winNdx);
- if (!resizingWindows.contains(win)) {
- if (WindowManagerService.DEBUG_RESIZE) Slog.d(TAG,
- "setBounds: Resizing " + win);
- resizingWindows.add(win);
- }
- win.mUnderStatusBar = underStatusBar;
- }
- }
- }
- }
-
void switchUser(int userId) {
int top = mTasks.size();
for (int taskNdx = 0; taskNdx < top; ++taskNdx) {
@@ -293,8 +360,14 @@ public class TaskStack {
}
}
+ void close() {
+ mDimLayer.mDimSurface.destroy();
+ mAnimationBackgroundSurface.mDimSurface.destroy();
+ }
+
public void dump(String prefix, PrintWriter pw) {
pw.print(prefix); pw.print("mStackId="); pw.println(mStackId);
+ pw.print(prefix); pw.print("mDeferDetach="); pw.println(mDeferDetach);
for (int taskNdx = 0; taskNdx < mTasks.size(); ++taskNdx) {
pw.print(prefix); pw.println(mTasks.get(taskNdx));
}
@@ -307,6 +380,17 @@ public class TaskStack {
mDimLayer.printTo(prefix, pw);
pw.print(prefix); pw.print("mDimWinAnimator="); pw.println(mDimWinAnimator);
}
+ if (!mExitingAppTokens.isEmpty()) {
+ pw.println();
+ pw.println(" Exiting application tokens:");
+ for (int i=mExitingAppTokens.size()-1; i>=0; i--) {
+ WindowToken token = mExitingAppTokens.get(i);
+ pw.print(" Exiting App #"); pw.print(i);
+ pw.print(' '); pw.print(token);
+ pw.println(':');
+ token.dump(pw, " ");
+ }
+ }
}
@Override
diff --git a/services/java/com/android/server/wm/ViewServer.java b/services/core/java/com/android/server/wm/ViewServer.java
index a763e2c724c4..a763e2c724c4 100644
--- a/services/java/com/android/server/wm/ViewServer.java
+++ b/services/core/java/com/android/server/wm/ViewServer.java
diff --git a/services/java/com/android/server/wm/Watermark.java b/services/core/java/com/android/server/wm/Watermark.java
index e226e3d73e47..e226e3d73e47 100644
--- a/services/java/com/android/server/wm/Watermark.java
+++ b/services/core/java/com/android/server/wm/Watermark.java
diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/core/java/com/android/server/wm/WindowAnimator.java
index 91f15f3fb7f1..0c682587f19d 100644
--- a/services/java/com/android/server/wm/WindowAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowAnimator.java
@@ -1,4 +1,18 @@
-// Copyright 2012 Google Inc. All Rights Reserved.
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package com.android.server.wm;
@@ -64,7 +78,7 @@ public class WindowAnimator {
Object mLastWindowFreezeSource;
SparseArray<DisplayContentsAnimator> mDisplayContentsAnimators =
- new SparseArray<WindowAnimator.DisplayContentsAnimator>(2);
+ new SparseArray<DisplayContentsAnimator>(2);
boolean mInitialized = false;
@@ -151,14 +165,33 @@ public class WindowAnimator {
}
private void updateAppWindowsLocked(int displayId) {
- final DisplayContent displayContent = mService.getDisplayContentLocked(displayId);
- final ArrayList<Task> tasks = displayContent.getTasks();
- final int numTasks = tasks.size();
- for (int taskNdx = 0; taskNdx < numTasks; ++taskNdx) {
- final AppTokenList tokens = tasks.get(taskNdx).mAppTokens;
- final int numTokens = tokens.size();
- for (int tokenNdx = 0; tokenNdx < numTokens; ++tokenNdx) {
- final AppWindowAnimator appAnimator = tokens.get(tokenNdx).mAppAnimator;
+ ArrayList<TaskStack> stacks = mService.getDisplayContentLocked(displayId).getStacks();
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final TaskStack stack = stacks.get(stackNdx);
+ final ArrayList<Task> tasks = stack.getTasks();
+ for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) {
+ final AppTokenList tokens = tasks.get(taskNdx).mAppTokens;
+ for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) {
+ final AppWindowAnimator appAnimator = tokens.get(tokenNdx).mAppAnimator;
+ final boolean wasAnimating = appAnimator.animation != null
+ && appAnimator.animation != AppWindowAnimator.sDummyAnimation;
+ if (appAnimator.stepAnimationLocked(mCurrentTime)) {
+ mAnimating = true;
+ } else if (wasAnimating) {
+ // stopped animating, do one more pass through the layout
+ setAppLayoutChanges(appAnimator,
+ WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER,
+ "appToken " + appAnimator.mAppToken + " done");
+ if (WindowManagerService.DEBUG_ANIM) Slog.v(TAG,
+ "updateWindowsApps...: done animating " + appAnimator.mAppToken);
+ }
+ }
+ }
+
+ final AppTokenList exitingAppTokens = stack.mExitingAppTokens;
+ final int NEAT = exitingAppTokens.size();
+ for (int i = 0; i < NEAT; i++) {
+ final AppWindowAnimator appAnimator = exitingAppTokens.get(i).mAppAnimator;
final boolean wasAnimating = appAnimator.animation != null
&& appAnimator.animation != AppWindowAnimator.sDummyAnimation;
if (appAnimator.stepAnimationLocked(mCurrentTime)) {
@@ -166,29 +199,12 @@ public class WindowAnimator {
} else if (wasAnimating) {
// stopped animating, do one more pass through the layout
setAppLayoutChanges(appAnimator, WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER,
- "appToken " + appAnimator.mAppToken + " done");
+ "exiting appToken " + appAnimator.mAppToken + " done");
if (WindowManagerService.DEBUG_ANIM) Slog.v(TAG,
- "updateWindowsApps...: done animating " + appAnimator.mAppToken);
+ "updateWindowsApps...: done animating exiting " + appAnimator.mAppToken);
}
}
}
-
- final AppTokenList exitingAppTokens = displayContent.mExitingAppTokens;
- final int NEAT = exitingAppTokens.size();
- for (int i = 0; i < NEAT; i++) {
- final AppWindowAnimator appAnimator = exitingAppTokens.get(i).mAppAnimator;
- final boolean wasAnimating = appAnimator.animation != null
- && appAnimator.animation != AppWindowAnimator.sDummyAnimation;
- if (appAnimator.stepAnimationLocked(mCurrentTime)) {
- mAnimating = true;
- } else if (wasAnimating) {
- // stopped animating, do one more pass through the layout
- setAppLayoutChanges(appAnimator, WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER,
- "exiting appToken " + appAnimator.mAppToken + " done");
- if (WindowManagerService.DEBUG_ANIM) Slog.v(TAG,
- "updateWindowsApps...: done animating exiting " + appAnimator.mAppToken);
- }
- }
}
private void updateWindowsLocked(final int displayId) {
@@ -449,11 +465,6 @@ public class WindowAnimator {
}
}
- private void performAnimationsLocked(final int displayId) {
- updateWindowsLocked(displayId);
- updateWallpaperLocked(displayId);
- }
-
/** Locked on mService.mWindowMap. */
private void animateLocked() {
@@ -494,7 +505,8 @@ public class WindowAnimator {
// Update animations of all applications, including those
// associated with exiting/removed apps
- performAnimationsLocked(displayId);
+ updateWindowsLocked(displayId);
+ updateWallpaperLocked(displayId);
final WindowList windows = mService.getWindowListLocked(displayId);
final int N = windows.size();
@@ -642,11 +654,16 @@ public class WindowAnimator {
}
int getPendingLayoutChanges(final int displayId) {
+ if (displayId < 0) {
+ return 0;
+ }
return mService.getDisplayContentLocked(displayId).pendingLayoutChanges;
}
void setPendingLayoutChanges(final int displayId, final int changes) {
- mService.getDisplayContentLocked(displayId).pendingLayoutChanges |= changes;
+ if (displayId >= 0) {
+ mService.getDisplayContentLocked(displayId).pendingLayoutChanges |= changes;
+ }
}
void setAppLayoutChanges(final AppWindowAnimator appAnimator, final int changes, String s) {
@@ -655,7 +672,7 @@ public class WindowAnimator {
WindowList windows = appAnimator.mAppToken.allAppWindows;
for (int i = windows.size() - 1; i >= 0; i--) {
final int displayId = windows.get(i).getDisplayId();
- if (displays.indexOfKey(displayId) < 0) {
+ if (displayId >= 0 && displays.indexOfKey(displayId) < 0) {
setPendingLayoutChanges(displayId, changes);
if (WindowManagerService.DEBUG_LAYOUT_REPEATS) {
mService.debugLayoutRepeats(s, getPendingLayoutChanges(displayId));
@@ -676,10 +693,15 @@ public class WindowAnimator {
}
void setScreenRotationAnimationLocked(int displayId, ScreenRotationAnimation animation) {
- getDisplayContentsAnimatorLocked(displayId).mScreenRotationAnimation = animation;
+ if (displayId >= 0) {
+ getDisplayContentsAnimatorLocked(displayId).mScreenRotationAnimation = animation;
+ }
}
ScreenRotationAnimation getScreenRotationAnimationLocked(int displayId) {
+ if (displayId < 0) {
+ return null;
+ }
return getDisplayContentsAnimatorLocked(displayId).mScreenRotationAnimation;
}
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 3ed507656fd6..fb5d7a79c025 100644
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -18,11 +18,10 @@ package com.android.server.wm;
import static android.view.WindowManager.LayoutParams.*;
-import static com.android.server.am.ActivityStackSupervisor.HOME_STACK_ID;
-
import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
import android.app.AppOpsManager;
+import android.util.ArraySet;
import android.util.TimeUtils;
import android.view.IWindowId;
@@ -35,17 +34,16 @@ import com.android.internal.view.IInputMethodClient;
import com.android.internal.view.IInputMethodManager;
import com.android.internal.view.WindowManagerPolicyThread;
import com.android.server.AttributeCache;
+import com.android.server.DisplayThread;
import com.android.server.EventLogTags;
+import com.android.server.LocalServices;
import com.android.server.UiThread;
import com.android.server.Watchdog;
import com.android.server.am.BatteryStatsService;
-import com.android.server.display.DisplayManagerService;
import com.android.server.input.InputManagerService;
-import com.android.server.power.PowerManagerService;
import com.android.server.power.ShutdownThread;
import android.Manifest;
-import android.app.ActivityManager.StackBoxInfo;
import android.app.ActivityManagerNative;
import android.app.IActivityManager;
import android.app.StatusBarManager;
@@ -69,6 +67,7 @@ import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Region;
import android.hardware.display.DisplayManager;
+import android.hardware.display.DisplayManagerInternal;
import android.os.Binder;
import android.os.Bundle;
import android.os.Debug;
@@ -80,6 +79,7 @@ import android.os.Message;
import android.os.Parcel;
import android.os.ParcelFileDescriptor;
import android.os.PowerManager;
+import android.os.PowerManagerInternal;
import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
@@ -117,6 +117,7 @@ import android.view.InputEventReceiver;
import android.view.KeyEvent;
import android.view.MagnificationSpec;
import android.view.MotionEvent;
+import android.view.WindowManagerInternal;
import android.view.Surface.OutOfResourcesException;
import android.view.Surface;
import android.view.SurfaceControl;
@@ -155,8 +156,7 @@ import java.util.List;
/** {@hide} */
public class WindowManagerService extends IWindowManager.Stub
- implements Watchdog.Monitor, WindowManagerPolicy.WindowManagerFuncs,
- DisplayManagerService.WindowManagerFuncs, DisplayManager.DisplayListener {
+ implements Watchdog.Monitor, WindowManagerPolicy.WindowManagerFuncs {
static final String TAG = "WindowManager";
static final boolean DEBUG = false;
static final boolean DEBUG_ADD_REMOVE = false;
@@ -188,6 +188,7 @@ public class WindowManagerService extends IWindowManager.Stub
static final boolean DEBUG_WINDOW_TRACE = false;
static final boolean DEBUG_TASK_MOVEMENT = false;
static final boolean DEBUG_STACK = false;
+ static final boolean DEBUG_DISPLAY = false;
static final boolean SHOW_SURFACE_ALLOC = false;
static final boolean SHOW_TRANSACTIONS = false;
static final boolean SHOW_LIGHT_TRANSACTIONS = false || SHOW_TRANSACTIONS;
@@ -272,10 +273,10 @@ public class WindowManagerService extends IWindowManager.Stub
// Default input dispatching timeout in nanoseconds.
static final long DEFAULT_INPUT_DISPATCHING_TIMEOUT_NANOS = 5000 * 1000000L;
- /** Minimum value for createStack and resizeStack weight value */
+ /** Minimum value for attachStack and resizeStack weight value */
public static final float STACK_WEIGHT_MIN = 0.2f;
- /** Maximum value for createStack and resizeStack weight value */
+ /** Maximum value for attachStack and resizeStack weight value */
public static final float STACK_WEIGHT_MAX = 0.8f;
static final int UPDATE_FOCUS_NORMAL = 0;
@@ -293,8 +294,6 @@ public class WindowManagerService extends IWindowManager.Stub
final private KeyguardDisableHandler mKeyguardDisableHandler;
- private final boolean mHeadless;
-
final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@@ -369,6 +368,11 @@ public class WindowManagerService extends IWindowManager.Stub
final ArrayList<WindowState> mPendingRemove = new ArrayList<WindowState>();
/**
+ * Stacks whose animations have ended and whose tasks, apps, selves may now be removed.
+ */
+ final ArraySet<TaskStack> mPendingStacksRemove = new ArraySet<TaskStack>();
+
+ /**
* Used when processing mPendingRemove to avoid working on the original array.
*/
WindowState[] mPendingRemoveTmp = new WindowState[20];
@@ -534,14 +538,15 @@ public class WindowManagerService extends IWindowManager.Stub
AppWindowToken mFocusedApp = null;
- PowerManagerService mPowerManager;
+ PowerManager mPowerManager;
+ PowerManagerInternal mPowerManagerInternal;
float mWindowAnimationScale = 1.0f;
float mTransitionAnimationScale = 1.0f;
float mAnimatorDurationScale = 1.0f;
final InputManagerService mInputManager;
- final DisplayManagerService mDisplayManagerService;
+ final DisplayManagerInternal mDisplayManagerInternal;
final DisplayManager mDisplayManager;
// Who is holding the screen on.
@@ -600,6 +605,9 @@ public class WindowManagerService extends IWindowManager.Stub
final WindowAnimator mAnimator;
SparseArray<Task> mTaskIdToTask = new SparseArray<Task>();
+
+ /** All of the TaskStacks in the window manager, unordered. For an ordered list call
+ * DisplayContent.getStacks(). */
SparseArray<TaskStack> mStackIdToStack = new SparseArray<TaskStack>();
private final PointerEventDispatcher mPointerEventDispatcher;
@@ -694,23 +702,22 @@ public class WindowManagerService extends IWindowManager.Stub
final boolean mOnlyCore;
public static WindowManagerService main(final Context context,
- final PowerManagerService pm, final DisplayManagerService dm,
- final InputManagerService im, final Handler wmHandler,
+ final InputManagerService im,
final boolean haveInputMethods, final boolean showBootMsgs,
final boolean onlyCore) {
final WindowManagerService[] holder = new WindowManagerService[1];
- wmHandler.runWithScissors(new Runnable() {
+ DisplayThread.getHandler().runWithScissors(new Runnable() {
@Override
public void run() {
- holder[0] = new WindowManagerService(context, pm, dm, im,
+ holder[0] = new WindowManagerService(context, im,
haveInputMethods, showBootMsgs, onlyCore);
}
}, 0);
return holder[0];
}
- private void initPolicy(Handler uiHandler) {
- uiHandler.runWithScissors(new Runnable() {
+ private void initPolicy() {
+ UiThread.getHandler().runWithScissors(new Runnable() {
@Override
public void run() {
WindowManagerPolicyThread.set(Thread.currentThread(), Looper.myLooper());
@@ -723,8 +730,7 @@ public class WindowManagerService extends IWindowManager.Stub
}, 0);
}
- private WindowManagerService(Context context, PowerManagerService pm,
- DisplayManagerService displayManager, InputManagerService inputManager,
+ private WindowManagerService(Context context, InputManagerService inputManager,
boolean haveInputMethods, boolean showBootMsgs, boolean onlyCore) {
mContext = context;
mHaveInputMethods = haveInputMethods;
@@ -733,8 +739,7 @@ public class WindowManagerService extends IWindowManager.Stub
mLimitedAlphaCompositing = context.getResources().getBoolean(
com.android.internal.R.bool.config_sf_limitedAlpha);
mInputManager = inputManager; // Must be before createDisplayContentLocked.
- mDisplayManagerService = displayManager;
- mHeadless = displayManager.isHeadless();
+ mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class);
mDisplaySettings = new DisplaySettings(context);
mDisplaySettings.readSettingsLocked();
@@ -742,7 +747,6 @@ public class WindowManagerService extends IWindowManager.Stub
mFxSession = new SurfaceSession();
mDisplayManager = (DisplayManager)context.getSystemService(Context.DISPLAY_SERVICE);
- mDisplayManager.registerDisplayListener(this, null);
Display[] displays = mDisplayManager.getDisplays();
for (Display display : displays) {
createDisplayContentLocked(display);
@@ -750,10 +754,11 @@ public class WindowManagerService extends IWindowManager.Stub
mKeyguardDisableHandler = new KeyguardDisableHandler(mContext, mPolicy);
- mPowerManager = pm;
- mPowerManager.setPolicy(mPolicy);
- PowerManager pmc = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
- mScreenFrozenLock = pmc.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "SCREEN_FROZEN");
+ mPowerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
+ mPowerManagerInternal = LocalServices.getService(PowerManagerInternal.class);
+ mPowerManagerInternal.setPolicy(mPolicy); // TODO: register as local service instead
+ mScreenFrozenLock = mPowerManager.newWakeLock(
+ PowerManager.PARTIAL_WAKE_LOCK, "SCREEN_FROZEN");
mScreenFrozenLock.setReferenceCounted(false);
mAppTransition = new AppTransition(context, mH);
@@ -783,13 +788,13 @@ public class WindowManagerService extends IWindowManager.Stub
filter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED);
mContext.registerReceiver(mBroadcastReceiver, filter);
- mHoldingScreenWakeLock = pmc.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
- | PowerManager.ON_AFTER_RELEASE, TAG);
+ mHoldingScreenWakeLock = mPowerManager.newWakeLock(
+ PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, TAG);
mHoldingScreenWakeLock.setReferenceCounted(false);
mAnimator = new WindowAnimator(this);
- initPolicy(UiThread.getHandler());
+ initPolicy();
// Add ourself to the Watchdog monitors.
Watchdog.getInstance().addMonitor(this);
@@ -802,6 +807,8 @@ public class WindowManagerService extends IWindowManager.Stub
} finally {
SurfaceControl.closeTransaction();
}
+
+ LocalServices.addService(WindowManagerInternal.class, new LocalService());
}
public InputMonitor getInputMonitor() {
@@ -871,7 +878,7 @@ public class WindowManagerService extends IWindowManager.Stub
final int count = token.windows.size();
for (int i = 0; i < count; i++) {
final WindowState win = token.windows.get(i);
- if (win.mDisplayContent == displayContent) {
+ if (win.getDisplayContent() == displayContent) {
windowList.add(win);
}
}
@@ -902,7 +909,7 @@ public class WindowManagerService extends IWindowManager.Stub
private int addAppWindowToListLocked(final WindowState win) {
final IWindow client = win.mClient;
final WindowToken token = win.mToken;
- final DisplayContent displayContent = win.mDisplayContent;
+ final DisplayContent displayContent = win.getDisplayContent();
final WindowList windows = win.getWindowList();
final int N = windows.size();
@@ -1079,7 +1086,7 @@ public class WindowManagerService extends IWindowManager.Stub
private void addAttachedWindowToListLocked(final WindowState win, boolean addToToken) {
final WindowToken token = win.mToken;
- final DisplayContent displayContent = win.mDisplayContent;
+ final DisplayContent displayContent = win.getDisplayContent();
final WindowState attached = win.mAttachedWindow;
WindowList tokenWindowList = getTokenWindowsOnDisplay(token, displayContent);
@@ -2013,7 +2020,10 @@ public class WindowManagerService extends IWindowManager.Stub
}
void updateWallpaperOffsetLocked(WindowState changingTarget, boolean sync) {
- final DisplayContent displayContent = changingTarget.mDisplayContent;
+ final DisplayContent displayContent = changingTarget.getDisplayContent();
+ if (displayContent == null) {
+ return;
+ }
final DisplayInfo displayInfo = displayContent.getDisplayInfo();
final int dw = displayInfo.logicalWidth;
final int dh = displayInfo.logicalHeight;
@@ -2073,7 +2083,10 @@ public class WindowManagerService extends IWindowManager.Stub
void updateWallpaperVisibilityLocked() {
final boolean visible = isWallpaperVisible(mWallpaperTarget);
- final DisplayContent displayContent = mWallpaperTarget.mDisplayContent;
+ final DisplayContent displayContent = mWallpaperTarget.getDisplayContent();
+ if (displayContent == null) {
+ return;
+ }
final DisplayInfo displayInfo = displayContent.getDisplayInfo();
final int dw = displayInfo.logicalWidth;
final int dh = displayInfo.logicalHeight;
@@ -2428,7 +2441,10 @@ public class WindowManagerService extends IWindowManager.Stub
//Slog.i(TAG, "*** Running exit animation...");
win.mExiting = true;
win.mRemoveOnExit = true;
- win.mDisplayContent.layoutNeeded = true;
+ final DisplayContent displayContent = win.getDisplayContent();
+ if (displayContent != null) {
+ displayContent.layoutNeeded = true;
+ }
updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES,
false /*updateInputWindows*/);
performLayoutAndPlaceSurfacesLocked();
@@ -2485,8 +2501,6 @@ public class WindowManagerService extends IWindowManager.Stub
mAppOps.finishOp(win.mAppOp, win.getOwningUid(), win.getOwningPackage());
}
- final WindowList windows = win.getWindowList();
- windows.remove(win);
mPendingRemove.remove(win);
mResizingWindows.remove(win);
mWindowsChanged = true;
@@ -2542,12 +2556,19 @@ public class WindowManagerService extends IWindowManager.Stub
WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
}
- if (!mInLayout) {
- assignLayersLocked(windows);
- win.mDisplayContent.layoutNeeded = true;
- performLayoutAndPlaceSurfacesLocked();
- if (win.mAppToken != null) {
- win.mAppToken.updateReportedVisibilityLocked();
+ final WindowList windows = win.getWindowList();
+ if (windows != null) {
+ windows.remove(win);
+ if (!mInLayout) {
+ assignLayersLocked(windows);
+ final DisplayContent displayContent = win.getDisplayContent();
+ if (displayContent != null) {
+ displayContent.layoutNeeded = true;
+ }
+ performLayoutAndPlaceSurfacesLocked();
+ if (win.mAppToken != null) {
+ win.mAppToken.updateReportedVisibilityLocked();
+ }
}
}
@@ -2622,7 +2643,10 @@ public class WindowManagerService extends IWindowManager.Stub
w.mGivenVisibleInsets.scale(w.mGlobalScale);
w.mGivenTouchableRegion.scale(w.mGlobalScale);
}
- w.mDisplayContent.layoutNeeded = true;
+ final DisplayContent displayContent = w.getDisplayContent();
+ if (displayContent != null) {
+ displayContent.layoutNeeded = true;
+ }
performLayoutAndPlaceSurfacesLocked();
}
}
@@ -2708,7 +2732,12 @@ public class WindowManagerService extends IWindowManager.Stub
mTmpFloats[Matrix.MSKEW_X] = dsdy;
mTmpFloats[Matrix.MSCALE_Y] = dtdy;
matrix.setValues(mTmpFloats);
- final DisplayInfo displayInfo = window.mDisplayContent.getDisplayInfo();
+ final DisplayContent displayContent = window.getDisplayContent();
+ if (displayContent == null) {
+ return;
+ }
+
+ final DisplayInfo displayInfo = window.getDisplayContent().getDisplayInfo();
final RectF dispRect = new RectF(0, 0,
displayInfo.logicalWidth, displayInfo.logicalHeight);
matrix.mapRect(dispRect);
@@ -2717,7 +2746,7 @@ public class WindowManagerService extends IWindowManager.Stub
window.mGivenTouchableRegion.op((int)dispRect.left, (int)dispRect.top,
(int)dispRect.right, (int)dispRect.bottom, Region.Op.DIFFERENCE);
window.mTouchableInsets = ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION;
- window.mDisplayContent.layoutNeeded = true;
+ displayContent.layoutNeeded = true;
performLayoutAndPlaceSurfacesLocked();
}
@@ -2998,7 +3027,10 @@ public class WindowManagerService extends IWindowManager.Stub
WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
}
- win.mDisplayContent.layoutNeeded = true;
+ final DisplayContent displayContent = win.getDisplayContent();
+ if (displayContent != null) {
+ displayContent.layoutNeeded = true;
+ }
win.mGivenInsetsPending = (flags&WindowManagerGlobal.RELAYOUT_INSETS_PENDING) != 0;
configChanged = updateOrientationFromAppTokensLocked(false);
performLayoutAndPlaceSurfacesLocked();
@@ -3092,7 +3124,10 @@ public class WindowManagerService extends IWindowManager.Stub
getDefaultDisplayContentLocked().pendingLayoutChanges |=
WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
}
- win.mDisplayContent.layoutNeeded = true;
+ final DisplayContent displayContent = win.getDisplayContent();
+ if (displayContent != null) {
+ displayContent.layoutNeeded = true;
+ }
requestTraversalLocked();
}
}
@@ -3350,7 +3385,7 @@ public class WindowManagerService extends IWindowManager.Stub
for (int i=0; i<N; i++) {
WindowState win = wtoken.windows.get(i);
- displayContent = win.mDisplayContent;
+ displayContent = win.getDisplayContent();
if (win.mWinAnimator.isAnimating()) {
delayed = true;
@@ -3365,7 +3400,9 @@ public class WindowManagerService extends IWindowManager.Stub
WindowManagerPolicy.TRANSIT_EXIT);
}
changed = true;
- displayContent.layoutNeeded = true;
+ if (displayContent != null) {
+ displayContent.layoutNeeded = true;
+ }
}
}
@@ -3378,7 +3415,9 @@ public class WindowManagerService extends IWindowManager.Stub
}
if (delayed) {
- displayContent.mExitingTokens.add(wtoken);
+ if (displayContent != null) {
+ displayContent.mExitingTokens.add(wtoken);
+ }
} else if (wtoken.windowType == TYPE_WALLPAPER) {
mWallpaperTokens.remove(wtoken);
}
@@ -3393,6 +3432,8 @@ public class WindowManagerService extends IWindowManager.Stub
}
private Task createTask(int taskId, int stackId, int userId, AppWindowToken atoken) {
+ if (DEBUG_STACK) Slog.i(TAG, "createTask: taskId=" + taskId + " stackId=" + stackId
+ + " atoken=" + atoken);
final TaskStack stack = mStackIdToStack.get(stackId);
if (stack == null) {
throw new IllegalArgumentException("addAppToken: invalid stackId=" + stackId);
@@ -3446,7 +3487,7 @@ public class WindowManagerService extends IWindowManager.Stub
Task task = mTaskIdToTask.get(taskId);
if (task == null) {
- task = createTask(taskId, stackId, userId, atoken);
+ createTask(taskId, stackId, userId, atoken);
} else {
task.addAppToken(addPos, atoken);
}
@@ -3474,8 +3515,8 @@ public class WindowManagerService extends IWindowManager.Stub
Slog.w(TAG, "Attempted to set group id of non-existing app token: " + token);
return;
}
- Task oldTask = mTaskIdToTask.get(atoken.groupId);
- oldTask.removeAppToken(atoken);
+ final Task oldTask = mTaskIdToTask.get(atoken.groupId);
+ removeAppFromTaskLocked(atoken);
atoken.groupId = groupId;
Task newTask = mTaskIdToTask.get(groupId);
@@ -3626,7 +3667,7 @@ public class WindowManagerService extends IWindowManager.Stub
if (freezeThisOneIfNeeded != null) {
AppWindowToken atoken = findAppWindowToken(freezeThisOneIfNeeded);
if (atoken != null) {
- startAppFreezingScreenLocked(atoken, ActivityInfo.CONFIG_ORIENTATION);
+ startAppFreezingScreenLocked(atoken);
}
}
config = computeNewConfigurationLocked();
@@ -3768,7 +3809,10 @@ public class WindowManagerService extends IWindowManager.Stub
if (mFocusedApp != null) {
Task task = mTaskIdToTask.get(mFocusedApp.groupId);
stack = task.mStack;
- task.getDisplayContent().setTouchExcludeRegion(stack);
+ final DisplayContent displayContent = task.getDisplayContent();
+ if (displayContent != null) {
+ displayContent.setTouchExcludeRegion(stack);
+ }
} else {
stack = null;
}
@@ -3778,10 +3822,8 @@ public class WindowManagerService extends IWindowManager.Stub
if (stack == null) {
mFocusedStackFrame.setVisibility(false);
} else {
- final StackBox box = stack.mStackBox;
- final Rect bounds = box.mBounds;
- final boolean multipleStacks = box.mParent != null;
- mFocusedStackFrame.setBounds(bounds);
+ mFocusedStackFrame.setBounds(stack);
+ final boolean multipleStacks = !stack.isFullscreen();
mFocusedStackFrame.setVisibility(multipleStacks);
}
} finally {
@@ -3798,27 +3840,23 @@ public class WindowManagerService extends IWindowManager.Stub
}
synchronized(mWindowMap) {
- boolean changed = false;
+ final AppWindowToken newFocus;
if (token == null) {
if (DEBUG_FOCUS_LIGHT) Slog.v(TAG, "Clearing focused app, was " + mFocusedApp);
- changed = mFocusedApp != null;
- mFocusedApp = null;
- if (changed) {
- mInputMonitor.setFocusedAppLw(null);
- }
+ newFocus = null;
} else {
- AppWindowToken newFocus = findAppWindowToken(token);
+ newFocus = findAppWindowToken(token);
if (newFocus == null) {
Slog.w(TAG, "Attempted to set focus to non-existing app token: " + token);
- return;
}
- changed = mFocusedApp != newFocus;
if (DEBUG_FOCUS_LIGHT) Slog.v(TAG, "Set focused app to: " + newFocus
+ " old focus=" + mFocusedApp + " moveFocusNow=" + moveFocusNow);
+ }
+
+ final boolean changed = mFocusedApp != newFocus;
+ if (changed) {
mFocusedApp = newFocus;
- if (changed) {
- mInputMonitor.setFocusedAppLw(newFocus);
- }
+ mInputMonitor.setFocusedAppLw(null);
}
if (moveFocusNow && changed) {
@@ -4159,10 +4197,25 @@ public class WindowManagerService extends IWindowManager.Stub
AppWindowToken atoken = findAppWindowToken(token);
if (atoken != null) {
atoken.appFullscreen = toOpaque;
+ // When making translucent, wait until windows below have been drawn.
+ if (toOpaque) {
+ // Making opaque so do it now.
+ setWindowOpaque(token, true);
+ }
requestTraversal();
}
}
+ public void setWindowOpaque(IBinder token, boolean isOpaque) {
+ AppWindowToken wtoken = findAppWindowToken(token);
+ if (wtoken != null) {
+ WindowState win = wtoken.findMainWindow();
+ if (win != null) {
+ win.mWinAnimator.setOpaque(isOpaque);
+ }
+ }
+ }
+
boolean setTokenVisibilityLocked(AppWindowToken wtoken, WindowManager.LayoutParams lp,
boolean visible, int transit, boolean performLayout) {
boolean delayed = false;
@@ -4219,7 +4272,10 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
changed = true;
- win.mDisplayContent.layoutNeeded = true;
+ final DisplayContent displayContent = win.getDisplayContent();
+ if (displayContent != null) {
+ displayContent.layoutNeeded = true;
+ }
}
} else if (win.isVisibleNow()) {
if (!runningAppAnimation) {
@@ -4233,7 +4289,10 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
changed = true;
- win.mDisplayContent.layoutNeeded = true;
+ final DisplayContent displayContent = win.getDisplayContent();
+ if (displayContent != null) {
+ displayContent.layoutNeeded = true;
+ }
}
}
@@ -4381,7 +4440,10 @@ public class WindowManagerService extends IWindowManager.Stub
}
w.mLastFreezeDuration = 0;
unfrozeWindows = true;
- w.mDisplayContent.layoutNeeded = true;
+ final DisplayContent displayContent = w.getDisplayContent();
+ if (displayContent != null) {
+ displayContent.layoutNeeded = true;
+ }
}
}
if (force || unfrozeWindows) {
@@ -4401,8 +4463,7 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
- public void startAppFreezingScreenLocked(AppWindowToken wtoken,
- int configChanges) {
+ private void startAppFreezingScreenLocked(AppWindowToken wtoken) {
if (DEBUG_ORIENTATION) {
RuntimeException e = null;
if (!HIDE_STACK_CRAWLS) {
@@ -4451,7 +4512,7 @@ public class WindowManagerService extends IWindowManager.Stub
return;
}
final long origId = Binder.clearCallingIdentity();
- startAppFreezingScreenLocked(wtoken, configChanges);
+ startAppFreezingScreenLocked(wtoken);
Binder.restoreCallingIdentity(origId);
}
}
@@ -4476,6 +4537,15 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
+ void removeAppFromTaskLocked(AppWindowToken wtoken) {
+ final Task task = mTaskIdToTask.get(wtoken.groupId);
+ if (task != null) {
+ if (!task.removeAppToken(wtoken)) {
+ Slog.e(TAG, "removeAppFromTaskLocked: token=" + wtoken + " not found.");
+ }
+ }
+ }
+
@Override
public void removeAppToken(IBinder token) {
if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS,
@@ -4508,26 +4578,24 @@ public class WindowManagerService extends IWindowManager.Stub
TAG, "Removing app " + wtoken + " delayed=" + delayed
+ " animation=" + wtoken.mAppAnimator.animation
+ " animating=" + wtoken.mAppAnimator.animating);
- final Task task = mTaskIdToTask.get(wtoken.groupId);
- DisplayContent displayContent = task.getDisplayContent();
+ if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG, "removeAppToken: "
+ + wtoken + " delayed=" + delayed + " Callers=" + Debug.getCallers(4));
+ final TaskStack stack = mTaskIdToTask.get(wtoken.groupId).mStack;
if (delayed) {
// set the token aside because it has an active animation to be finished
if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG,
"removeAppToken make exiting: " + wtoken);
- displayContent.mExitingAppTokens.add(wtoken);
+ stack.mExitingAppTokens.add(wtoken);
+ wtoken.mDeferRemoval = true;
} else {
// Make sure there is no animation running on this token,
// so any windows associated with it will be removed as
// soon as their animations are complete
wtoken.mAppAnimator.clearAnimation();
wtoken.mAppAnimator.animating = false;
+ removeAppFromTaskLocked(wtoken);
}
- if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG,
- "removeAppToken: " + wtoken);
- if (task.removeAppToken(wtoken)) {
- mTaskIdToTask.delete(wtoken.groupId);
- }
wtoken.removed = true;
if (wtoken.startingData != null) {
startingToken = wtoken;
@@ -4572,13 +4640,15 @@ public class WindowManagerService extends IWindowManager.Stub
mH.sendMessage(m);
}
}
+
private boolean tmpRemoveAppWindowsLocked(WindowToken token) {
- final int NW = token.windows.size();
+ WindowList windows = token.windows;
+ final int NW = windows.size();
if (NW > 0) {
mWindowsChanged = true;
}
- for (int i=0; i<NW; i++) {
- WindowState win = token.windows.get(i);
+ for (int i = 0; i < NW; i++) {
+ WindowState win = windows.get(i);
if (DEBUG_WINDOW_MOVEMENT) Slog.v(TAG, "Tmp removing app window " + win);
win.getWindowList().remove(win);
int j = win.mChildWindows.size();
@@ -4594,29 +4664,32 @@ public class WindowManagerService extends IWindowManager.Stub
}
void dumpAppTokensLocked() {
- final int numDisplays = mDisplayContents.size();
- for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- final DisplayContent displayContent = mDisplayContents.valueAt(displayNdx);
- Slog.v(TAG, " Display " + displayContent.getDisplayId());
- final ArrayList<Task> tasks = displayContent.getTasks();
- int i = displayContent.numTokens();
- for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) {
- AppTokenList tokens = tasks.get(taskNdx).mAppTokens;
- for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) {
- final AppWindowToken wtoken = tokens.get(tokenNdx);
- Slog.v(TAG, " #" + --i + ": " + wtoken.token);
+ final int numStacks = mStackIdToStack.size();
+ for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
+ final TaskStack stack = mStackIdToStack.valueAt(stackNdx);
+ Slog.v(TAG, " Stack #" + stack.mStackId + " tasks from bottom to top:");
+ final ArrayList<Task> tasks = stack.getTasks();
+ final int numTasks = tasks.size();
+ for (int taskNdx = 0; taskNdx < numTasks; ++taskNdx) {
+ final Task task = tasks.get(taskNdx);
+ Slog.v(TAG, " Task #" + task.taskId + " activities from bottom to top:");
+ AppTokenList tokens = task.mAppTokens;
+ final int numTokens = tokens.size();
+ for (int tokenNdx = 0; tokenNdx < numTokens; ++tokenNdx) {
+ Slog.v(TAG, " activity #" + tokenNdx + ": " + tokens.get(tokenNdx).token);
}
}
}
}
void dumpWindowsLocked() {
- int i = 0;
final int numDisplays = mDisplayContents.size();
for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- final WindowList windows = mDisplayContents.valueAt(displayNdx).getWindowList();
+ final DisplayContent displayContent = mDisplayContents.valueAt(displayNdx);
+ Slog.v(TAG, " Display #" + displayContent.getDisplayId());
+ final WindowList windows = displayContent.getWindowList();
for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
- Slog.v(TAG, " #" + i++ + ": " + windows.get(winNdx));
+ Slog.v(TAG, " #" + winNdx + ": " + windows.get(winNdx));
}
}
}
@@ -4728,23 +4801,28 @@ public class WindowManagerService extends IWindowManager.Stub
final int NW = token.windows.size();
for (int i=0; i<NW; i++) {
final WindowState win = token.windows.get(i);
- if (win.mDisplayContent == displayContent) {
+ final DisplayContent winDisplayContent = win.getDisplayContent();
+ if (winDisplayContent == displayContent || winDisplayContent == null) {
+ win.mDisplayContent = displayContent;
index = reAddWindowLocked(index, win);
}
}
return index;
}
+ void tmpRemoveTaskWindowsLocked(Task task) {
+ AppTokenList tokens = task.mAppTokens;
+ for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) {
+ tmpRemoveAppWindowsLocked(tokens.get(tokenNdx));
+ }
+ }
+
void moveStackWindowsLocked(DisplayContent displayContent) {
// First remove all of the windows from the list.
final ArrayList<Task> tasks = displayContent.getTasks();
final int numTasks = tasks.size();
for (int taskNdx = 0; taskNdx < numTasks; ++taskNdx) {
- AppTokenList tokens = tasks.get(taskNdx).mAppTokens;
- final int numTokens = tokens.size();
- for (int tokenNdx = numTokens - 1; tokenNdx >= 0; --tokenNdx) {
- tmpRemoveAppWindowsLocked(tokens.get(tokenNdx));
- }
+ tmpRemoveTaskWindowsLocked(tasks.get(taskNdx));
}
// And now add them back at the correct place.
@@ -4788,10 +4866,14 @@ public class WindowManagerService extends IWindowManager.Stub
}
final TaskStack stack = task.mStack;
final DisplayContent displayContent = task.getDisplayContent();
- final boolean isHomeStackTask = stack.isHomeStack();
- if (isHomeStackTask != displayContent.homeOnTop()) {
- // First move the stack itself.
- displayContent.moveHomeStackBox(isHomeStackTask);
+ displayContent.moveStack(stack, true);
+ if (displayContent.isDefaultDisplay) {
+ final TaskStack homeStack = displayContent.getHomeStack();
+ if (homeStack != stack) {
+ // When a non-home stack moves to the top, the home stack moves to the
+ // bottom.
+ displayContent.moveStack(homeStack, false);
+ }
}
stack.moveTaskToTop(task);
}
@@ -4820,54 +4902,74 @@ public class WindowManagerService extends IWindowManager.Stub
}
/**
- * Create a new TaskStack and place it next to an existing stack.
+ * Create a new TaskStack and place it on a DisplayContent.
* @param stackId The unique identifier of the new stack.
- * @param relativeStackBoxId The existing stack that this stack goes before or after.
- * @param position One of:
- * {@link StackBox#TASK_STACK_GOES_BEFORE}
- * {@link StackBox#TASK_STACK_GOES_AFTER}
- * {@link StackBox#TASK_STACK_GOES_ABOVE}
- * {@link StackBox#TASK_STACK_GOES_BELOW}
- * {@link StackBox#TASK_STACK_GOES_UNDER}
- * {@link StackBox#TASK_STACK_GOES_OVER}
- * @param weight Relative weight for determining how big to make the new TaskStack.
+ * @param displayId The unique identifier of the DisplayContent.
*/
- public void createStack(int stackId, int relativeStackBoxId, int position, float weight) {
- synchronized (mWindowMap) {
- if (position <= StackBox.TASK_STACK_GOES_BELOW &&
- (weight < STACK_WEIGHT_MIN || weight > STACK_WEIGHT_MAX)) {
- throw new IllegalArgumentException(
- "createStack: weight must be between " + STACK_WEIGHT_MIN + " and " +
- STACK_WEIGHT_MAX + ", weight=" + weight);
- }
- final int numDisplays = mDisplayContents.size();
- for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- final DisplayContent displayContent = mDisplayContents.valueAt(displayNdx);
- TaskStack stack = displayContent.createStack(stackId, relativeStackBoxId, position,
- weight);
- if (stack != null) {
- mStackIdToStack.put(stackId, stack);
- performLayoutAndPlaceSurfacesLocked();
- return;
+ public void attachStack(int stackId, int displayId) {
+ final long origId = Binder.clearCallingIdentity();
+ try {
+ synchronized (mWindowMap) {
+ final DisplayContent displayContent = mDisplayContents.get(displayId);
+ if (displayContent != null) {
+ TaskStack stack = mStackIdToStack.get(stackId);
+ if (stack == null) {
+ if (DEBUG_STACK) Slog.d(TAG, "attachStack: stackId=" + stackId);
+ stack = new TaskStack(this, stackId);
+ mStackIdToStack.put(stackId, stack);
+ }
+ stack.attachDisplayContent(displayContent);
+ displayContent.attachStack(stack);
+ moveStackWindowsLocked(displayContent);
+ final WindowList windows = displayContent.getWindowList();
+ for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
+ windows.get(winNdx).reportResized();
+ }
}
}
- Slog.e(TAG, "createStack: Unable to find relativeStackBoxId=" + relativeStackBoxId);
+ } finally {
+ Binder.restoreCallingIdentity(origId);
}
}
- public int removeStack(int stackId) {
+ void detachStackLocked(DisplayContent displayContent, TaskStack stack) {
+ displayContent.detachStack(stack);
+ stack.detachDisplay();
+ }
+
+ public void detachStack(int stackId) {
synchronized (mWindowMap) {
- final TaskStack stack = mStackIdToStack.get(stackId);
+ TaskStack stack = mStackIdToStack.get(stackId);
if (stack != null) {
- mStackIdToStack.delete(stackId);
- int nextStackId = stack.remove();
- stack.getDisplayContent().layoutNeeded = true;
- requestTraversalLocked();
- return nextStackId;
+ final DisplayContent displayContent = stack.getDisplayContent();
+ if (displayContent != null) {
+ if (stack.isAnimating()) {
+ stack.mDeferDetach = true;
+ return;
+ }
+ detachStackLocked(displayContent, stack);
+ }
}
- if (DEBUG_STACK) Slog.i(TAG, "removeStack: could not find stackId=" + stackId);
}
- return HOME_STACK_ID;
+ }
+
+ public void removeStack(int stackId) {
+ mStackIdToStack.remove(stackId);
+ }
+
+ void removeTaskLocked(Task task) {
+ final int taskId = task.taskId;
+ final TaskStack stack = task.mStack;
+ if (stack.isAnimating()) {
+ if (DEBUG_STACK) Slog.i(TAG, "removeTask: deferring removing taskId=" + taskId);
+ task.mDeferRemoval = true;
+ return;
+ }
+ if (DEBUG_STACK) Slog.i(TAG, "removeTask: removing taskId=" + taskId);
+ EventLog.writeEvent(EventLogTags.WM_TASK_REMOVED, taskId, "removeTask");
+ task.mDeferRemoval = false;
+ task.mStack.removeTask(task);
+ mTaskIdToTask.delete(task.taskId);
}
public void removeTask(int taskId) {
@@ -4877,15 +4979,14 @@ public class WindowManagerService extends IWindowManager.Stub
if (DEBUG_STACK) Slog.i(TAG, "removeTask: could not find taskId=" + taskId);
return;
}
- final TaskStack stack = task.mStack;
- EventLog.writeEvent(EventLogTags.WM_TASK_REMOVED, taskId, "removeTask");
- stack.removeTask(task);
- stack.getDisplayContent().layoutNeeded = true;
+ removeTaskLocked(task);
}
}
public void addTask(int taskId, int stackId, boolean toTop) {
synchronized (mWindowMap) {
+ if (DEBUG_STACK) Slog.i(TAG, "addTask: adding taskId=" + taskId
+ + " to " + (toTop ? "top" : "bottom"));
Task task = mTaskIdToTask.get(taskId);
if (task == null) {
return;
@@ -4898,40 +4999,28 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
- public void resizeStackBox(int stackBoxId, float weight) {
- if (weight < STACK_WEIGHT_MIN || weight > STACK_WEIGHT_MAX) {
- throw new IllegalArgumentException(
- "resizeStack: weight must be between " + STACK_WEIGHT_MIN + " and " +
- STACK_WEIGHT_MAX + ", weight=" + weight);
- }
+ public void resizeStack(int stackId, Rect bounds) {
synchronized (mWindowMap) {
- final int numDisplays = mDisplayContents.size();
- for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- if (mDisplayContents.valueAt(displayNdx).resizeStack(stackBoxId, weight)) {
- performLayoutAndPlaceSurfacesLocked();
- return;
- }
+ final TaskStack stack = mStackIdToStack.get(stackId);
+ if (stack == null) {
+ throw new IllegalArgumentException("resizeStack: stackId " + stackId
+ + " not found.");
+ }
+ if (stack.setBounds(bounds)) {
+ stack.resizeWindows();
+ stack.getDisplayContent().layoutNeeded = true;
+ performLayoutAndPlaceSurfacesLocked();
}
- }
- throw new IllegalArgumentException("resizeStack: stackBoxId " + stackBoxId
- + " not found.");
- }
-
- public ArrayList<StackBoxInfo> getStackBoxInfos() {
- synchronized(mWindowMap) {
- return getDefaultDisplayContentLocked().getStackBoxInfos();
}
}
- public Rect getStackBounds(int stackId) {
- final int numDisplays = mDisplayContents.size();
- for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- Rect bounds = mDisplayContents.valueAt(displayNdx).getStackBounds(stackId);
- if (bounds != null) {
- return bounds;
- }
+ public void getStackBounds(int stackId, Rect bounds) {
+ final TaskStack stack = mStackIdToStack.get(stackId);
+ if (stack != null) {
+ stack.getBounds(bounds);
+ return;
}
- return null;
+ bounds.setEmpty();
}
// -------------------------------------------------------------
@@ -5207,7 +5296,7 @@ public class WindowManagerService extends IWindowManager.Stub
final int numDisplays = mDisplayContents.size();
for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
final DisplayContent displayContent = mDisplayContents.valueAt(displayNdx);
- displayContent.switchUserStacks(oldUserId, newUserId);
+ displayContent.switchUserStacks(newUserId);
rebuildAppWindowListLocked(displayContent);
}
performLayoutAndPlaceSurfacesLocked();
@@ -5259,7 +5348,7 @@ public class WindowManagerService extends IWindowManager.Stub
public void performBootTimeout() {
synchronized(mWindowMap) {
- if (mDisplayEnabled || mHeadless) {
+ if (mDisplayEnabled) {
return;
}
Slog.w(TAG, "***** BOOT TIMEOUT: forcing display enabled");
@@ -5443,7 +5532,6 @@ public class WindowManagerService extends IWindowManager.Stub
// only allow disables from pids which have count on, etc.
@Override
public void showStrictModeViolation(boolean on) {
- if (mHeadless) return;
int pid = Binder.getCallingPid();
mH.sendMessage(mH.obtainMessage(H.SHOW_STRICT_MODE_VIOLATION, on ? 1 : 0, pid));
}
@@ -5589,14 +5677,13 @@ public class WindowManagerService extends IWindowManager.Stub
continue;
}
appWin = ws;
- stackBounds.set(ws.getStackBounds());
+ ws.getStackBounds(stackBounds);
}
}
// We keep on including windows until we go past a full-screen
// window.
- boolean fullscreen = ws.isFullscreen(dw, dh);
- including = !ws.mIsImWindow && !fullscreen;
+ including = !ws.mIsImWindow && !ws.isFullscreen(dw, dh);
final WindowStateAnimator winAnim = ws.mWinAnimator;
if (maxLayer < winAnim.mSurfaceLayer) {
@@ -5622,11 +5709,6 @@ public class WindowManagerService extends IWindowManager.Stub
ws.isDisplayedLw()) {
screenshotReady = true;
}
-
- if (fullscreen) {
- // No point in continuing down through windows.
- break;
- }
}
if (appToken != null && appWin == null) {
@@ -5970,7 +6052,7 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
- mDisplayManagerService.performTraversalInTransactionFromWindowManager();
+ mDisplayManagerInternal.performTraversalInTransactionFromWindowManager();
} finally {
if (!inTransaction) {
SurfaceControl.closeTransaction();
@@ -6664,7 +6746,7 @@ public class WindowManagerService extends IWindowManager.Stub
displayInfo.getLogicalMetrics(mRealDisplayMetrics,
CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO, null);
displayInfo.getAppMetrics(mDisplayMetrics);
- mDisplayManagerService.setDisplayInfoOverrideFromWindowManager(
+ mDisplayManagerInternal.setDisplayInfoOverrideFromWindowManager(
displayContent.getDisplayId(), displayInfo);
}
if (false) {
@@ -6997,7 +7079,7 @@ public class WindowManagerService extends IWindowManager.Stub
synchronized(displayContent.mDisplaySizeLock) {
// Bootstrap the default logical display from the display manager.
final DisplayInfo displayInfo = displayContent.getDisplayInfo();
- DisplayInfo newDisplayInfo = mDisplayManagerService.getDisplayInfo(displayId);
+ DisplayInfo newDisplayInfo = mDisplayManagerInternal.getDisplayInfo(displayId);
if (newDisplayInfo != null) {
displayInfo.copyFrom(newDisplayInfo);
}
@@ -7367,15 +7449,18 @@ public class WindowManagerService extends IWindowManager.Stub
case APP_FREEZE_TIMEOUT: {
synchronized (mWindowMap) {
Slog.w(TAG, "App freeze timeout expired.");
- DisplayContent displayContent = getDefaultDisplayContentLocked();
- final ArrayList<Task> tasks = displayContent.getTasks();
- for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) {
- AppTokenList tokens = tasks.get(taskNdx).mAppTokens;
- for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) {
- AppWindowToken tok = tokens.get(tokenNdx);
- if (tok.mAppAnimator.freezingScreen) {
- Slog.w(TAG, "Force clearing freeze: " + tok);
- unsetAppFreezingScreenLocked(tok, true, true);
+ final int numStacks = mStackIdToStack.size();
+ for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
+ final TaskStack stack = mStackIdToStack.valueAt(stackNdx);
+ final ArrayList<Task> tasks = stack.getTasks();
+ for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) {
+ AppTokenList tokens = tasks.get(taskNdx).mAppTokens;
+ for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) {
+ AppWindowToken tok = tokens.get(tokenNdx);
+ if (tok.mAppAnimator.freezingScreen) {
+ Slog.w(TAG, "Force clearing freeze: " + tok);
+ unsetAppFreezingScreenLocked(tok, true, true);
+ }
}
}
}
@@ -7482,9 +7567,7 @@ public class WindowManagerService extends IWindowManager.Stub
}
case DO_DISPLAY_ADDED:
- synchronized (mWindowMap) {
- handleDisplayAddedLocked(msg.arg1);
- }
+ handleDisplayAdded(msg.arg1);
break;
case DO_DISPLAY_REMOVED:
@@ -7943,7 +8026,6 @@ public class WindowManagerService extends IWindowManager.Stub
}
final void rebuildAppWindowListLocked() {
- // TODO: Multidisplay, when ActivityStacks and tasks exist on more than one display.
rebuildAppWindowListLocked(getDefaultDisplayContentLocked());
}
@@ -7988,27 +8070,37 @@ public class WindowManagerService extends IWindowManager.Stub
// in the main app list, but still have windows shown. We put them
// in the back because now that the animation is over we no longer
// will care about them.
- AppTokenList exitingAppTokens = displayContent.mExitingAppTokens;
- int NT = exitingAppTokens.size();
- for (int j=0; j<NT; j++) {
- i = reAddAppWindowsLocked(displayContent, i, exitingAppTokens.get(j));
+ final ArrayList<TaskStack> stacks = displayContent.getStacks();
+ final int numStacks = stacks.size();
+ for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
+ AppTokenList exitingAppTokens = stacks.get(stackNdx).mExitingAppTokens;
+ int NT = exitingAppTokens.size();
+ for (int j = 0; j < NT; j++) {
+ i = reAddAppWindowsLocked(displayContent, i, exitingAppTokens.get(j));
+ }
}
// And add in the still active app tokens in Z order.
- final ArrayList<Task> tasks = displayContent.getTasks();
- final int numTasks = tasks.size();
- for (int taskNdx = 0; taskNdx < numTasks; ++taskNdx) {
- final AppTokenList tokens = tasks.get(taskNdx).mAppTokens;
- final int numTokens = tokens.size();
- for (int tokenNdx = 0; tokenNdx < numTokens; ++tokenNdx) {
- final AppWindowToken wtoken = tokens.get(tokenNdx);
- i = reAddAppWindowsLocked(displayContent, i, wtoken);
+ for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
+ final ArrayList<Task> tasks = stacks.get(stackNdx).getTasks();
+ final int numTasks = tasks.size();
+ for (int taskNdx = 0; taskNdx < numTasks; ++taskNdx) {
+ final AppTokenList tokens = tasks.get(taskNdx).mAppTokens;
+ final int numTokens = tokens.size();
+ for (int tokenNdx = 0; tokenNdx < numTokens; ++tokenNdx) {
+ final AppWindowToken wtoken = tokens.get(tokenNdx);
+ if (wtoken.mDeferRemoval) {
+ continue;
+ }
+ i = reAddAppWindowsLocked(displayContent, i, wtoken);
+ }
}
}
i -= lastBelow;
if (i != numRemoved) {
- Slog.w(TAG, "Rebuild removed " + numRemoved + " windows but added " + i,
+ Slog.w(TAG, "On display=" + displayContent.getDisplayId() + " Rebuild removed " +
+ numRemoved + " windows but added " + i,
new RuntimeException("here").fillInStackTrace());
for (i=0; i<numRemoved; i++) {
WindowState ws = mRebuildTmp[i];
@@ -8224,7 +8316,7 @@ public class WindowManagerService extends IWindowManager.Stub
}
mPolicy.getContentRectLw(mTmpContentRect);
- displayContent.setStackBoxSize(mTmpContentRect);
+ displayContent.resize(mTmpContentRect);
int seq = mLayoutSeq+1;
if (seq < 0) seq = 0;
@@ -8368,8 +8460,7 @@ public class WindowManagerService extends IWindowManager.Stub
// it frozen/off until this window draws at its new
// orientation.
if (!okToDisplay()) {
- if (DEBUG_ORIENTATION) Slog.v(TAG,
- "Changing surface while display frozen: " + w);
+ if (DEBUG_ORIENTATION) Slog.v(TAG, "Changing surface while display frozen: " + w);
w.mOrientationChanging = true;
w.mLastFreezeDuration = 0;
mInnerFields.mOrientationChangeComplete = false;
@@ -8677,15 +8768,14 @@ public class WindowManagerService extends IWindowManager.Stub
mAppTransition.setIdle();
// Restore window app tokens to the ActivityManager views
- final DisplayContent displayContent = getDefaultDisplayContentLocked();
- final ArrayList<Task> tasks = displayContent.getTasks();
- final int numTasks = tasks.size();
- for (int taskNdx = 0; taskNdx < numTasks; ++taskNdx) {
- final AppTokenList tokens = tasks.get(taskNdx).mAppTokens;
- final int numTokens = tokens.size();
- for (int tokenNdx = 0; tokenNdx < numTokens; ++tokenNdx) {
- final AppWindowToken wtoken = tokens.get(tokenNdx);
- wtoken.sendingToBottom = false;
+ ArrayList<TaskStack> stacks = getDefaultDisplayContentLocked().getStacks();
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ArrayList<Task> tasks = stacks.get(stackNdx).getTasks();
+ for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) {
+ final AppTokenList tokens = tasks.get(taskNdx).mAppTokens;
+ for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) {
+ tokens.get(tokenNdx).sendingToBottom = false;
+ }
}
}
rebuildAppWindowListLocked();
@@ -8819,7 +8909,8 @@ public class WindowManagerService extends IWindowManager.Stub
if (canBeSeen) {
// This function assumes that the contents of the default display are
// processed first before secondary displays.
- if (w.mDisplayContent.isDefaultDisplay) {
+ final DisplayContent displayContent = w.getDisplayContent();
+ if (displayContent != null && displayContent.isDefaultDisplay) {
// While a dream or keyguard is showing, obscure ordinary application
// content on secondary displays (by forcibly enabling mirroring unless
// there is other content we want to show) but still allow opaque
@@ -8828,8 +8919,9 @@ public class WindowManagerService extends IWindowManager.Stub
mInnerFields.mObscureApplicationContentOnSecondaryDisplays = true;
}
mInnerFields.mDisplayHasContent = true;
- } else if (!mInnerFields.mObscureApplicationContentOnSecondaryDisplays
- || (mInnerFields.mObscured && type == TYPE_KEYGUARD_DIALOG)) {
+ } else if (displayContent != null &&
+ (!mInnerFields.mObscureApplicationContentOnSecondaryDisplays
+ || (mInnerFields.mObscured && type == TYPE_KEYGUARD_DIALOG))) {
// Allow full screen keyguard presentation dialogs to be seen.
mInnerFields.mDisplayHasContent = true;
}
@@ -8837,7 +8929,7 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
- private void handleFlagDimBehind(WindowState w, int innerDw, int innerDh) {
+ private void handleFlagDimBehind(WindowState w) {
final WindowManager.LayoutParams attrs = w.mAttrs;
if ((attrs.flags & FLAG_DIM_BEHIND) != 0
&& w.isDisplayedLw()
@@ -8855,22 +8947,23 @@ public class WindowManagerService extends IWindowManager.Stub
private void updateAllDrawnLocked(DisplayContent displayContent) {
// See if any windows have been drawn, so they (and others
// associated with them) can now be shown.
- final ArrayList<Task> tasks = displayContent.getTasks();
- final int numTasks = tasks.size();
- for (int taskNdx = 0; taskNdx < numTasks; ++taskNdx) {
- final AppTokenList tokens = tasks.get(taskNdx).mAppTokens;
- final int numTokens = tokens.size();
- for (int tokenNdx = 0; tokenNdx < numTokens; ++tokenNdx) {
- final AppWindowToken wtoken = tokens.get(tokenNdx);
- if (!wtoken.allDrawn) {
- int numInteresting = wtoken.numInterestingWindows;
- if (numInteresting > 0 && wtoken.numDrawnWindows >= numInteresting) {
- if (DEBUG_VISIBILITY) Slog.v(TAG,
- "allDrawn: " + wtoken
- + " interesting=" + numInteresting
- + " drawn=" + wtoken.numDrawnWindows);
- wtoken.allDrawn = true;
- mH.obtainMessage(H.NOTIFY_ACTIVITY_DRAWN, wtoken.token).sendToTarget();
+ ArrayList<TaskStack> stacks = displayContent.getStacks();
+ for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ArrayList<Task> tasks = stacks.get(stackNdx).getTasks();
+ for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) {
+ final AppTokenList tokens = tasks.get(taskNdx).mAppTokens;
+ for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) {
+ final AppWindowToken wtoken = tokens.get(tokenNdx);
+ if (!wtoken.allDrawn) {
+ int numInteresting = wtoken.numInterestingWindows;
+ if (numInteresting > 0 && wtoken.numDrawnWindows >= numInteresting) {
+ if (DEBUG_VISIBILITY) Slog.v(TAG,
+ "allDrawn: " + wtoken
+ + " interesting=" + numInteresting
+ + " drawn=" + wtoken.numDrawnWindows);
+ wtoken.allDrawn = true;
+ mH.obtainMessage(H.NOTIFY_ACTIVITY_DRAWN, wtoken.token).sendToTarget();
+ }
}
}
}
@@ -8901,10 +8994,14 @@ public class WindowManagerService extends IWindowManager.Stub
for (i=displayContent.mExitingTokens.size()-1; i>=0; i--) {
displayContent.mExitingTokens.get(i).hasVisible = false;
}
+ }
+ for (int stackNdx = mStackIdToStack.size() - 1; stackNdx >= 0; --stackNdx) {
// Initialize state of exiting applications.
- for (i=displayContent.mExitingAppTokens.size()-1; i>=0; i--) {
- displayContent.mExitingAppTokens.get(i).hasVisible = false;
+ final AppTokenList exitingAppTokens =
+ mStackIdToStack.valueAt(stackNdx).mExitingAppTokens;
+ for (int tokenNdx = exitingAppTokens.size() - 1; tokenNdx >= 0; --tokenNdx) {
+ exitingAppTokens.get(tokenNdx).hasVisible = false;
}
}
@@ -9023,6 +9120,10 @@ public class WindowManagerService extends IWindowManager.Stub
final int N = windows.size();
for (i=N-1; i>=0; i--) {
WindowState w = windows.get(i);
+ final TaskStack stack = w.getStack();
+ if (stack == null) {
+ continue;
+ }
final boolean obscuredChanged = w.mObscured != mInnerFields.mObscured;
@@ -9032,8 +9133,8 @@ public class WindowManagerService extends IWindowManager.Stub
handleNotObscuredLocked(w, currentTime, innerDw, innerDh);
}
- if (!w.getStack().testDimmingTag()) {
- handleFlagDimBehind(w, innerDw, innerDh);
+ if (!stack.testDimmingTag()) {
+ handleFlagDimBehind(w);
}
if (isDefaultDisplay && obscuredChanged && (mWallpaperTarget == w)
@@ -9157,7 +9258,7 @@ public class WindowManagerService extends IWindowManager.Stub
updateResizingWindows(w);
}
- mDisplayManagerService.setDisplayHasContent(displayId,
+ mDisplayManagerInternal.setDisplayHasContent(displayId,
mInnerFields.mDisplayHasContent,
true /* inTraversal, must call performTraversalInTrans... below */);
@@ -9174,7 +9275,7 @@ public class WindowManagerService extends IWindowManager.Stub
// Give the display manager a chance to adjust properties
// like display rotation if it needs to.
- mDisplayManagerService.performTraversalInTransactionFromWindowManager();
+ mDisplayManagerInternal.performTraversalInTransactionFromWindowManager();
} catch (RuntimeException e) {
Log.wtf(TAG, "Unhandled exception in Window Manager", e);
@@ -9249,57 +9350,7 @@ public class WindowManagerService extends IWindowManager.Stub
// Don't remove this window until rotation has completed.
continue;
}
- final WindowStateAnimator winAnimator = win.mWinAnimator;
- try {
- if (DEBUG_RESIZE || DEBUG_ORIENTATION) Slog.v(TAG,
- "Reporting new frame to " + win + ": " + win.mCompatFrame);
- int diff = 0;
- boolean configChanged = win.isConfigChanged();
- if ((DEBUG_RESIZE || DEBUG_ORIENTATION || DEBUG_CONFIGURATION)
- && configChanged) {
- Slog.i(TAG, "Sending new config to window " + win + ": "
- + winAnimator.mSurfaceW + "x" + winAnimator.mSurfaceH
- + " / " + mCurConfiguration + " / 0x"
- + Integer.toHexString(diff));
- }
- win.setConfiguration(mCurConfiguration);
- if (DEBUG_ORIENTATION &&
- winAnimator.mDrawState == WindowStateAnimator.DRAW_PENDING) Slog.i(
- TAG, "Resizing " + win + " WITH DRAW PENDING");
- final IWindow client = win.mClient;
- final Rect frame = win.mFrame;
- final Rect overscanInsets = win.mLastOverscanInsets;
- final Rect contentInsets = win.mLastContentInsets;
- final Rect visibleInsets = win.mLastVisibleInsets;
- final boolean reportDraw
- = winAnimator.mDrawState == WindowStateAnimator.DRAW_PENDING;
- final Configuration newConfig = configChanged ? win.mConfiguration : null;
- if (win.mClient instanceof IWindow.Stub) {
- // To prevent deadlock simulate one-way call if win.mClient is a local object.
- mH.post(new Runnable() {
- @Override
- public void run() {
- try {
- client.resized(frame, overscanInsets, contentInsets,
- visibleInsets, reportDraw, newConfig);
- } catch (RemoteException e) {
- // Not a remote call, RemoteException won't be raised.
- }
- }
- });
- } else {
- client.resized(frame, overscanInsets, contentInsets, visibleInsets, reportDraw,
- newConfig);
- }
- win.mOverscanInsetsChanged = false;
- win.mContentInsetsChanged = false;
- win.mVisibleInsetsChanged = false;
- winAnimator.mSurfaceResized = false;
- } catch (RemoteException e) {
- win.mOrientationChanging = false;
- win.mLastFreezeDuration = (int)(SystemClock.elapsedRealtime()
- - mDisplayFreezeTime);
- }
+ win.reportResized();
mResizingWindows.remove(i);
}
@@ -9347,9 +9398,13 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
}
+ }
- // Time to remove any exiting applications?
- AppTokenList exitingAppTokens = displayContent.mExitingAppTokens;
+ // Time to remove any exiting applications?
+ for (int stackNdx = mStackIdToStack.size() - 1; stackNdx >= 0; --stackNdx) {
+ // Initialize state of exiting applications.
+ final AppTokenList exitingAppTokens =
+ mStackIdToStack.valueAt(stackNdx).mExitingAppTokens;
for (i = exitingAppTokens.size() - 1; i >= 0; i--) {
AppWindowToken token = exitingAppTokens.get(i);
if (!token.hasVisible && !mClosingApps.contains(token)) {
@@ -9360,10 +9415,7 @@ public class WindowManagerService extends IWindowManager.Stub
token.mAppAnimator.animating = false;
if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG,
"performLayout: App token exiting now removed" + token);
- final Task task = mTaskIdToTask.get(token.groupId);
- if (task != null && task.removeAppToken(token)) {
- mTaskIdToTask.delete(token.groupId);
- }
+ removeAppFromTaskLocked(token);
exitingAppTokens.remove(i);
}
}
@@ -9398,18 +9450,18 @@ public class WindowManagerService extends IWindowManager.Stub
setHoldScreenLocked(mInnerFields.mHoldScreen);
if (!mDisplayFrozen) {
if (mInnerFields.mScreenBrightness < 0 || mInnerFields.mScreenBrightness > 1.0f) {
- mPowerManager.setScreenBrightnessOverrideFromWindowManager(-1);
+ mPowerManagerInternal.setScreenBrightnessOverrideFromWindowManager(-1);
} else {
- mPowerManager.setScreenBrightnessOverrideFromWindowManager(
+ mPowerManagerInternal.setScreenBrightnessOverrideFromWindowManager(
toBrightnessOverride(mInnerFields.mScreenBrightness));
}
if (mInnerFields.mButtonBrightness < 0 || mInnerFields.mButtonBrightness > 1.0f) {
- mPowerManager.setButtonBrightnessOverrideFromWindowManager(-1);
+ mPowerManagerInternal.setButtonBrightnessOverrideFromWindowManager(-1);
} else {
- mPowerManager.setButtonBrightnessOverrideFromWindowManager(
+ mPowerManagerInternal.setButtonBrightnessOverrideFromWindowManager(
toBrightnessOverride(mInnerFields.mButtonBrightness));
}
- mPowerManager.setUserActivityTimeoutOverrideFromWindowManager(
+ mPowerManagerInternal.setUserActivityTimeoutOverrideFromWindowManager(
mInnerFields.mUserActivityTimeout);
}
@@ -9444,8 +9496,9 @@ public class WindowManagerService extends IWindowManager.Stub
for (i = 0; i < N; i++) {
WindowState w = mPendingRemoveTmp[i];
removeWindowInnerLocked(w.mSession, w);
- if (!displayList.contains(w.mDisplayContent)) {
- displayList.add(w.mDisplayContent);
+ final DisplayContent displayContent = w.getDisplayContent();
+ if (displayContent != null && !displayList.contains(displayContent)) {
+ displayList.add(displayContent);
}
}
@@ -9455,6 +9508,11 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
+ // Remove all deferred displays stacks, tasks, and activities.
+ for (int displayNdx = mDisplayContents.size() - 1; displayNdx >= 0; --displayNdx) {
+ mDisplayContents.valueAt(displayNdx).checkForDeferredActions();
+ }
+
setFocusedStackFrame();
// Check to see if we are now in a state where the screen should
@@ -9543,8 +9601,7 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
- @Override
- public void requestTraversal() {
+ void requestTraversal() {
synchronized (mWindowMap) {
requestTraversalLocked();
}
@@ -9922,6 +9979,7 @@ public class WindowManagerService extends IWindowManager.Stub
}
// TODO(multidisplay): rotation on main screen only.
+ displayContent.updateDisplayInfo();
screenRotationAnimation = new ScreenRotationAnimation(mContext, displayContent,
mFxSession, inTransaction, mPolicy.isDefaultOrientationForced());
mAnimator.setScreenRotationAnimationLocked(displayId, screenRotationAnimation);
@@ -10731,6 +10789,7 @@ public class WindowManagerService extends IWindowManager.Stub
private DisplayContent newDisplayContentLocked(final Display display) {
DisplayContent displayContent = new DisplayContent(display, this);
final int displayId = display.getDisplayId();
+ if (DEBUG_DISPLAY) Slog.v(TAG, "Adding display=" + display);
mDisplayContents.put(displayId, displayContent);
DisplayInfo displayInfo = displayContent.getDisplayInfo();
@@ -10741,7 +10800,7 @@ public class WindowManagerService extends IWindowManager.Stub
displayInfo.overscanTop = rect.top;
displayInfo.overscanRight = rect.right;
displayInfo.overscanBottom = rect.bottom;
- mDisplayManagerService.setDisplayInfoOverrideFromWindowManager(
+ mDisplayManagerInternal.setDisplayInfoOverrideFromWindowManager(
displayId, displayInfo);
}
configureDisplayPolicyLocked(displayContent);
@@ -10811,20 +10870,20 @@ public class WindowManagerService extends IWindowManager.Stub
return displayContent != null ? displayContent.getWindowList() : null;
}
- @Override
public void onDisplayAdded(int displayId) {
mH.sendMessage(mH.obtainMessage(H.DO_DISPLAY_ADDED, displayId, 0));
}
- private void handleDisplayAddedLocked(int displayId) {
- final Display display = mDisplayManager.getDisplay(displayId);
- if (display != null) {
- createDisplayContentLocked(display);
- displayReady(displayId);
+ public void handleDisplayAdded(int displayId) {
+ synchronized (mWindowMap) {
+ final Display display = mDisplayManager.getDisplay(displayId);
+ if (display != null) {
+ createDisplayContentLocked(display);
+ displayReady(displayId);
+ }
}
}
- @Override
public void onDisplayRemoved(int displayId) {
mH.sendMessage(mH.obtainMessage(H.DO_DISPLAY_REMOVED, displayId, 0));
}
@@ -10832,21 +10891,20 @@ public class WindowManagerService extends IWindowManager.Stub
private void handleDisplayRemovedLocked(int displayId) {
final DisplayContent displayContent = getDisplayContentLocked(displayId);
if (displayContent != null) {
+ if (displayContent.isAnimating()) {
+ displayContent.mDeferredRemoval = true;
+ return;
+ }
+ if (DEBUG_DISPLAY) Slog.v(TAG, "Removing display=" + displayContent);
mDisplayContents.delete(displayId);
displayContent.close();
if (displayId == Display.DEFAULT_DISPLAY) {
unregisterPointerEventListener(displayContent.mTapDetector);
}
- WindowList windows = displayContent.getWindowList();
- while (!windows.isEmpty()) {
- final WindowState win = windows.get(windows.size() - 1);
- removeWindowLocked(win.mSession, win);
- }
}
mAnimator.removeDisplayLocked(displayId);
}
- @Override
public void onDisplayChanged(int displayId) {
mH.sendMessage(mH.obtainMessage(H.DO_DISPLAY_CHANGED, displayId, 0));
}
@@ -10862,4 +10920,11 @@ public class WindowManagerService extends IWindowManager.Stub
public Object getWindowManagerLock() {
return mWindowMap;
}
+
+ private final class LocalService extends WindowManagerInternal {
+ @Override
+ public void requestTraversalFromDisplayManager() {
+ requestTraversal();
+ }
+ }
}
diff --git a/services/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 4d53cea4370d..9f3415e63586 100644
--- a/services/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -16,8 +16,11 @@
package com.android.server.wm;
-import static com.android.server.wm.WindowManagerService.DEBUG_VISIBILITY;
+import static com.android.server.wm.WindowManagerService.DEBUG_CONFIGURATION;
import static com.android.server.wm.WindowManagerService.DEBUG_LAYOUT;
+import static com.android.server.wm.WindowManagerService.DEBUG_ORIENTATION;
+import static com.android.server.wm.WindowManagerService.DEBUG_RESIZE;
+import static com.android.server.wm.WindowManagerService.DEBUG_VISIBILITY;
import static android.view.WindowManager.LayoutParams.FIRST_SUB_WINDOW;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_COMPATIBLE_WINDOW;
@@ -29,7 +32,9 @@ import static android.view.WindowManager.LayoutParams.TYPE_KEYGUARD;
import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
import android.app.AppOpsManager;
+import android.os.Debug;
import android.os.RemoteCallbackList;
+import android.os.SystemClock;
import android.util.TimeUtils;
import android.view.IWindowFocusObserver;
import android.view.IWindowId;
@@ -370,19 +375,17 @@ final class WindowState implements WindowManagerPolicy.WindowState {
mAttachedWindow.mChildWindows.add(this);
} else {
for (int i = 0; i < children_size; i++) {
- WindowState child = (WindowState)mAttachedWindow.mChildWindows.get(i);
- if (this.mSubLayer < child.mSubLayer) {
+ WindowState child = mAttachedWindow.mChildWindows.get(i);
+ if (mSubLayer < child.mSubLayer) {
mAttachedWindow.mChildWindows.add(i, this);
break;
- } else if (this.mSubLayer > child.mSubLayer) {
+ } else if (mSubLayer > child.mSubLayer) {
continue;
}
- if (this.mBaseLayer <= child.mBaseLayer) {
+ if (mBaseLayer <= child.mBaseLayer) {
mAttachedWindow.mChildWindows.add(i, this);
break;
- } else {
- continue;
}
}
if (children_size == mAttachedWindow.mChildWindows.size()) {
@@ -463,8 +466,8 @@ final class WindowState implements WindowManagerPolicy.WindowState {
mHaveFrame = true;
TaskStack stack = mAppToken != null ? getStack() : null;
- if (stack != null && stack.hasSibling()) {
- mContainingFrame.set(getStackBounds(stack));
+ if (stack != null && !stack.isFullscreen()) {
+ getStackBounds(stack, mContainingFrame);
if (mUnderStatusBar) {
mContainingFrame.top = pf.top;
}
@@ -593,9 +596,12 @@ final class WindowState implements WindowManagerPolicy.WindowState {
}
if (mIsWallpaper && (fw != mFrame.width() || fh != mFrame.height())) {
- final DisplayInfo displayInfo = mDisplayContent.getDisplayInfo();
- mService.updateWallpaperOffsetLocked(this,
- displayInfo.logicalWidth, displayInfo.logicalHeight, false);
+ final DisplayContent displayContent = getDisplayContent();
+ if (displayContent != null) {
+ final DisplayInfo displayInfo = displayContent.getDisplayInfo();
+ mService.updateWallpaperOffsetLocked(this,
+ displayInfo.logicalWidth, displayInfo.logicalHeight, false);
+ }
}
if (DEBUG_LAYOUT || WindowManagerService.localLOGV) Slog.v(TAG,
@@ -708,8 +714,16 @@ final class WindowState implements WindowManagerPolicy.WindowState {
return mOverscanInsetsChanged || mContentInsetsChanged || mVisibleInsetsChanged;
}
+ public DisplayContent getDisplayContent() {
+ return mAppToken == null ? mDisplayContent : getStack().getDisplayContent();
+ }
+
public int getDisplayId() {
- return mDisplayContent.getDisplayId();
+ final DisplayContent displayContent = getDisplayContent();
+ if (displayContent == null) {
+ return -1;
+ }
+ return displayContent.getDisplayId();
}
TaskStack getStack() {
@@ -717,21 +731,28 @@ final class WindowState implements WindowManagerPolicy.WindowState {
if (wtoken != null) {
Task task = mService.mTaskIdToTask.get(wtoken.groupId);
if (task != null) {
- return task.mStack;
+ if (task.mStack != null) {
+ return task.mStack;
+ }
+ Slog.e(TAG, "getStack: mStack null for task=" + task);
+ } else {
+ Slog.e(TAG, "getStack: " + this + " couldn't find taskId=" + wtoken.groupId
+ + " Callers=" + Debug.getCallers(4));
}
}
return mDisplayContent.getHomeStack();
}
- Rect getStackBounds() {
- return getStackBounds(getStack());
+ void getStackBounds(Rect bounds) {
+ getStackBounds(getStack(), bounds);
}
- private Rect getStackBounds(TaskStack stack) {
+ private void getStackBounds(TaskStack stack, Rect bounds) {
if (stack != null) {
- return stack.mStackBox.mBounds;
+ stack.getBounds(bounds);
+ return;
}
- return mFrame;
+ bounds.set(mFrame);
}
public long getInputDispatchingTimeoutNanos() {
@@ -1190,7 +1211,12 @@ final class WindowState implements WindowManagerPolicy.WindowState {
@Override
public boolean isDefaultDisplay() {
- return mDisplayContent.isDefaultDisplay;
+ final DisplayContent displayContent = getDisplayContent();
+ if (displayContent == null) {
+ // Only a window that was on a non-default display can be detached from it.
+ return false;
+ }
+ return getDisplayContent().isDefaultDisplay;
}
public void setShowToOwnerOnlyLocked(boolean showToOwnerOnly) {
@@ -1207,7 +1233,11 @@ final class WindowState implements WindowManagerPolicy.WindowState {
&& win.mAppToken != null && win.mAppToken.showWhenLocked) {
// Save some cycles by not calling getDisplayInfo unless it is an application
// window intended for all users.
- final DisplayInfo displayInfo = win.mDisplayContent.getDisplayInfo();
+ final DisplayContent displayContent = win.getDisplayContent();
+ if (displayContent == null) {
+ return true;
+ }
+ final DisplayInfo displayInfo = displayContent.getDisplayInfo();
if (win.mFrame.left <= 0 && win.mFrame.top <= 0
&& win.mFrame.right >= displayInfo.appWidth
&& win.mFrame.bottom >= displayInfo.appHeight) {
@@ -1249,7 +1279,8 @@ final class WindowState implements WindowManagerPolicy.WindowState {
}
WindowList getWindowList() {
- return mDisplayContent.getWindowList();
+ final DisplayContent displayContent = getDisplayContent();
+ return displayContent == null ? null : displayContent.getWindowList();
}
/**
@@ -1278,6 +1309,54 @@ final class WindowState implements WindowManagerPolicy.WindowState {
}
}
+ void reportResized() {
+ try {
+ if (DEBUG_RESIZE || DEBUG_ORIENTATION) Slog.v(TAG, "Reporting new frame to " + this
+ + ": " + mCompatFrame);
+ boolean configChanged = isConfigChanged();
+ if ((DEBUG_RESIZE || DEBUG_ORIENTATION || DEBUG_CONFIGURATION) && configChanged) {
+ Slog.i(TAG, "Sending new config to window " + this + ": "
+ + mWinAnimator.mSurfaceW + "x" + mWinAnimator.mSurfaceH
+ + " / " + mService.mCurConfiguration);
+ }
+ setConfiguration(mService.mCurConfiguration);
+ if (DEBUG_ORIENTATION && mWinAnimator.mDrawState == WindowStateAnimator.DRAW_PENDING)
+ Slog.i(TAG, "Resizing " + this + " WITH DRAW PENDING");
+
+ final Rect frame = mFrame;
+ final Rect overscanInsets = mLastOverscanInsets;
+ final Rect contentInsets = mLastContentInsets;
+ final Rect visibleInsets = mLastVisibleInsets;
+ final boolean reportDraw = mWinAnimator.mDrawState == WindowStateAnimator.DRAW_PENDING;
+ final Configuration newConfig = configChanged ? mConfiguration : null;
+ if (mClient instanceof IWindow.Stub) {
+ // To prevent deadlock simulate one-way call if win.mClient is a local object.
+ mService.mH.post(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ mClient.resized(frame, overscanInsets, contentInsets,
+ visibleInsets, reportDraw, newConfig);
+ } catch (RemoteException e) {
+ // Not a remote call, RemoteException won't be raised.
+ }
+ }
+ });
+ } else {
+ mClient.resized(frame, overscanInsets, contentInsets, visibleInsets, reportDraw,
+ newConfig);
+ }
+ mOverscanInsetsChanged = false;
+ mContentInsetsChanged = false;
+ mVisibleInsetsChanged = false;
+ mWinAnimator.mSurfaceResized = false;
+ } catch (RemoteException e) {
+ mOrientationChanging = false;
+ mLastFreezeDuration = (int)(SystemClock.elapsedRealtime()
+ - mService.mDisplayFreezeTime);
+ }
+ }
+
public void registerFocusObserver(IWindowFocusObserver observer) {
synchronized(mService.mWindowMap) {
if (mFocusCallbacks == null) {
@@ -1302,7 +1381,7 @@ final class WindowState implements WindowManagerPolicy.WindowState {
}
void dump(PrintWriter pw, String prefix, boolean dumpAll) {
- pw.print(prefix); pw.print("mDisplayId="); pw.print(mDisplayContent.getDisplayId());
+ pw.print(prefix); pw.print("mDisplayId="); pw.print(getDisplayId());
pw.print(" mSession="); pw.print(mSession);
pw.print(" mClient="); pw.println(mClient.asBinder());
pw.print(prefix); pw.print("mOwnerUid="); pw.print(mOwnerUid);
diff --git a/services/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index c405170da280..93f6d2292e6b 100644
--- a/services/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -1,4 +1,18 @@
-// Copyright 2012 Google Inc. All Rights Reserved.
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package com.android.server.wm;
@@ -150,8 +164,6 @@ class WindowStateAnimator {
int mAttrFlags;
int mAttrType;
- final int mLayerStack;
-
public WindowStateAnimator(final WindowState win) {
final WindowManagerService service = win.mService;
@@ -159,7 +171,7 @@ class WindowStateAnimator {
mAnimator = service.mAnimator;
mPolicy = service.mPolicy;
mContext = service.mContext;
- final DisplayInfo displayInfo = win.mDisplayContent.getDisplayInfo();
+ final DisplayInfo displayInfo = win.getDisplayContent().getDisplayInfo();
mAnimDw = displayInfo.appWidth;
mAnimDh = displayInfo.appHeight;
@@ -171,7 +183,6 @@ class WindowStateAnimator {
mAttrFlags = win.mAttrs.flags;
mAttrType = win.mAttrs.type;
mIsWallpaper = win.mIsWallpaper;
- mLayerStack = win.mDisplayContent.getDisplay().getLayerStack();
}
public void setAnimation(Animation anim) {
@@ -243,7 +254,8 @@ class WindowStateAnimator {
// Save the animation state as it was before this step so WindowManagerService can tell if
// we just started or just stopped animating by comparing mWasAnimating with isAnimating().
mWasAnimating = mAnimating;
- if (mService.okToDisplay()) {
+ final DisplayContent displayContent = mWin.getDisplayContent();
+ if (displayContent != null && mService.okToDisplay()) {
// We will run animations as long as the display isn't frozen.
if (mWin.isDrawnLw() && mAnimation != null) {
@@ -258,7 +270,7 @@ class WindowStateAnimator {
" scale=" + mService.mWindowAnimationScale);
mAnimation.initialize(mWin.mFrame.width(), mWin.mFrame.height(),
mAnimDw, mAnimDh);
- final DisplayInfo displayInfo = mWin.mDisplayContent.getDisplayInfo();
+ final DisplayInfo displayInfo = displayContent.getDisplayInfo();
mAnimDw = displayInfo.appWidth;
mAnimDh = displayInfo.appHeight;
mAnimation.setStartTime(currentTime);
@@ -337,7 +349,9 @@ class WindowStateAnimator {
+ mWin.mPolicyVisibilityAfterAnim);
}
mWin.mPolicyVisibility = mWin.mPolicyVisibilityAfterAnim;
- mWin.mDisplayContent.layoutNeeded = true;
+ if (displayContent != null) {
+ displayContent.layoutNeeded = true;
+ }
if (!mWin.mPolicyVisibility) {
if (mService.mCurrentFocus == mWin) {
if (WindowManagerService.DEBUG_FOCUS_LIGHT) Slog.i(TAG,
@@ -363,11 +377,13 @@ class WindowStateAnimator {
} else if (mAttrType == LayoutParams.TYPE_STATUS_BAR && mWin.mPolicyVisibility) {
// Upon completion of a not-visible to visible status bar animation a relayout is
// required.
- mWin.mDisplayContent.layoutNeeded = true;
+ if (displayContent != null) {
+ displayContent.layoutNeeded = true;
+ }
}
finishExit();
- final int displayId = mWin.mDisplayContent.getDisplayId();
+ final int displayId = mWin.getDisplayId();
mAnimator.setPendingLayoutChanges(displayId, WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM);
if (WindowManagerService.DEBUG_LAYOUT_REPEATS) mService.debugLayoutRepeats(
"WindowStateAnimator", mAnimator.getPendingLayoutChanges(displayId));
@@ -487,6 +503,7 @@ class WindowStateAnimator {
private final Rect mWindowCrop = new Rect();
private boolean mShown = false;
private int mLayerStack;
+ private boolean mIsOpaque;
private final String mName;
public SurfaceTrace(SurfaceSession s,
@@ -572,6 +589,16 @@ class WindowStateAnimator {
}
@Override
+ public void setOpaque(boolean isOpaque) {
+ if (isOpaque != mIsOpaque) {
+ Slog.v(SURFACE_TAG, "setOpaque(" + isOpaque + "): OLD:" + this
+ + ". Called by " + Debug.getCallers(3));
+ mIsOpaque = isOpaque;
+ }
+ super.setOpaque(isOpaque);
+ }
+
+ @Override
public void hide() {
if (mShown) {
Slog.v(SURFACE_TAG, "hide: OLD:" + this + ". Called by " + Debug.getCallers(3));
@@ -617,7 +644,8 @@ class WindowStateAnimator {
+ mName + " (" + mLayerStack + "): shown=" + mShown + " layer=" + mLayer
+ " alpha=" + mSurfaceTraceAlpha + " " + mPosition.x + "," + mPosition.y
+ " " + mSize.x + "x" + mSize.y
- + " crop=" + mWindowCrop.toShortString();
+ + " crop=" + mWindowCrop.toShortString()
+ + " opaque=" + mIsOpaque;
}
}
@@ -732,7 +760,10 @@ class WindowStateAnimator {
mSurfaceY = mWin.mFrame.top + mWin.mYOffset;
mSurfaceControl.setPosition(mSurfaceX, mSurfaceY);
mSurfaceLayer = mAnimLayer;
- mSurfaceControl.setLayerStack(mLayerStack);
+ final DisplayContent displayContent = mWin.getDisplayContent();
+ if (displayContent != null) {
+ mSurfaceControl.setLayerStack(displayContent.getDisplay().getLayerStack());
+ }
mSurfaceControl.setLayer(mAnimLayer);
mSurfaceControl.setAlpha(0);
mSurfaceShown = false;
@@ -921,8 +952,7 @@ class WindowStateAnimator {
tmpMatrix.postConcat(screenRotationAnimation.getEnterTransformation().getMatrix());
}
//TODO (multidisplay): Magnification is supported only for the default display.
- if (mService.mDisplayMagnifier != null
- && mWin.getDisplayId() == Display.DEFAULT_DISPLAY) {
+ if (mService.mDisplayMagnifier != null && displayId == Display.DEFAULT_DISPLAY) {
MagnificationSpec spec = mService.mDisplayMagnifier
.getMagnificationSpecForWindowLocked(mWin);
if (spec != null && !spec.isNop()) {
@@ -1002,7 +1032,7 @@ class WindowStateAnimator {
&& mWin.mBaseLayer < mAnimator.mAboveUniverseLayer);
MagnificationSpec spec = null;
//TODO (multidisplay): Magnification is supported only for the default display.
- if (mService.mDisplayMagnifier != null && mWin.getDisplayId() == Display.DEFAULT_DISPLAY) {
+ if (mService.mDisplayMagnifier != null && displayId == Display.DEFAULT_DISPLAY) {
spec = mService.mDisplayMagnifier.getMagnificationSpecForWindowLocked(mWin);
}
if (applyUniverseTransformation || spec != null) {
@@ -1080,7 +1110,11 @@ class WindowStateAnimator {
void updateSurfaceWindowCrop(final boolean recoveringMemory) {
final WindowState w = mWin;
- DisplayInfo displayInfo = w.mDisplayContent.getDisplayInfo();
+ final DisplayContent displayContent = w.getDisplayContent();
+ if (displayContent == null) {
+ return;
+ }
+ DisplayInfo displayInfo = displayContent.getDisplayInfo();
// Need to recompute a new system decor rect each time.
if ((w.mAttrs.flags & LayoutParams.FLAG_SCALED) != 0) {
@@ -1181,8 +1215,7 @@ class WindowStateAnimator {
"SIZE " + width + "x" + height, null);
mSurfaceResized = true;
mSurfaceControl.setSize(width, height);
- final int displayId = w.mDisplayContent.getDisplayId();
- mAnimator.setPendingLayoutChanges(displayId,
+ mAnimator.setPendingLayoutChanges(w.getDisplayId(),
WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER);
if ((w.mAttrs.flags & LayoutParams.FLAG_DIM_BEHIND) != 0) {
w.getStack().startDimmingIfNeeded(this);
@@ -1329,8 +1362,7 @@ class WindowStateAnimator {
Slog.w(TAG, "setTransparentRegionHint: null mSurface after mHasSurface true");
return;
}
- if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG,
- ">>> OPEN TRANSACTION setTransparentRegion");
+ if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, ">>> OPEN TRANSACTION setTransparentRegion");
SurfaceControl.openTransaction();
try {
if (SHOW_TRANSACTIONS) WindowManagerService.logSurface(mWin,
@@ -1356,8 +1388,7 @@ class WindowStateAnimator {
// transformation is being applied by the animation.
return;
}
- if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG,
- ">>> OPEN TRANSACTION setWallpaperOffset");
+ if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, ">>> OPEN TRANSACTION setWallpaperOffset");
SurfaceControl.openTransaction();
try {
if (WindowManagerService.SHOW_TRANSACTIONS) WindowManagerService.logSurface(mWin,
@@ -1375,6 +1406,22 @@ class WindowStateAnimator {
}
}
+ void setOpaque(boolean isOpaque) {
+ if (mSurfaceControl == null) {
+ return;
+ }
+ if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, ">>> OPEN TRANSACTION setOpaque");
+ SurfaceControl.openTransaction();
+ try {
+ if (SHOW_TRANSACTIONS) WindowManagerService.logSurface(mWin, "isOpaque=" + isOpaque,
+ null);
+ mSurfaceControl.setOpaque(isOpaque);
+ } finally {
+ SurfaceControl.closeTransaction();
+ if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, "<<< CLOSE TRANSACTION setOpaque");
+ }
+ }
+
// This must be called while inside a transaction.
boolean performShowLocked() {
if (mWin.isHiddenFromUserLocked()) {
@@ -1444,7 +1491,10 @@ class WindowStateAnimator {
// do a layout. If called from within the transaction
// loop, this will cause it to restart with a new
// layout.
- c.mDisplayContent.layoutNeeded = true;
+ final DisplayContent displayContent = c.getDisplayContent();
+ if (displayContent != null) {
+ displayContent.layoutNeeded = true;
+ }
}
}
}
diff --git a/services/java/com/android/server/wm/WindowToken.java b/services/core/java/com/android/server/wm/WindowToken.java
index 22671234c538..22671234c538 100644
--- a/services/java/com/android/server/wm/WindowToken.java
+++ b/services/core/java/com/android/server/wm/WindowToken.java
diff --git a/services/core/jni/Android.mk b/services/core/jni/Android.mk
new file mode 100644
index 000000000000..d1cfff4909b1
--- /dev/null
+++ b/services/core/jni/Android.mk
@@ -0,0 +1,57 @@
+# This file is included by the top level services directory to collect source
+# files
+LOCAL_REL_DIR := core/jni
+
+LOCAL_SRC_FILES += \
+ $(LOCAL_REL_DIR)/com_android_server_AlarmManagerService.cpp \
+ $(LOCAL_REL_DIR)/com_android_server_AssetAtlasService.cpp \
+ $(LOCAL_REL_DIR)/com_android_server_ConsumerIrService.cpp \
+ $(LOCAL_REL_DIR)/com_android_server_dreams_McuHal.cpp \
+ $(LOCAL_REL_DIR)/com_android_server_input_InputApplicationHandle.cpp \
+ $(LOCAL_REL_DIR)/com_android_server_input_InputManagerService.cpp \
+ $(LOCAL_REL_DIR)/com_android_server_input_InputWindowHandle.cpp \
+ $(LOCAL_REL_DIR)/com_android_server_lights_LightsService.cpp \
+ $(LOCAL_REL_DIR)/com_android_server_power_PowerManagerService.cpp \
+ $(LOCAL_REL_DIR)/com_android_server_SerialService.cpp \
+ $(LOCAL_REL_DIR)/com_android_server_SystemServer.cpp \
+ $(LOCAL_REL_DIR)/com_android_server_UsbDeviceManager.cpp \
+ $(LOCAL_REL_DIR)/com_android_server_UsbHostManager.cpp \
+ $(LOCAL_REL_DIR)/com_android_server_VibratorService.cpp \
+ $(LOCAL_REL_DIR)/com_android_server_location_GpsLocationProvider.cpp \
+ $(LOCAL_REL_DIR)/com_android_server_location_FlpHardwareProvider.cpp \
+ $(LOCAL_REL_DIR)/com_android_server_connectivity_Vpn.cpp \
+ $(LOCAL_REL_DIR)/onload.cpp
+
+LOCAL_C_INCLUDES += \
+ $(JNI_H_INCLUDE) \
+ frameworks/base/services \
+ frameworks/base/libs \
+ frameworks/base/core/jni \
+ frameworks/native/services \
+ external/skia/include/core \
+ libcore/include \
+ libcore/include/libsuspend \
+ $(call include-path-for, libhardware)/hardware \
+ $(call include-path-for, libhardware_legacy)/hardware_legacy \
+
+LOCAL_SHARED_LIBRARIES += \
+ libandroid_runtime \
+ libandroidfw \
+ libbinder \
+ libcutils \
+ liblog \
+ libhardware \
+ libhardware_legacy \
+ libnativehelper \
+ libutils \
+ libui \
+ libinput \
+ libinputservice \
+ libsensorservice \
+ libskia \
+ libgui \
+ libusbhost \
+ libsuspend \
+ libEGL \
+ libGLESv2
+
diff --git a/services/core/jni/com_android_server_AlarmManagerService.cpp b/services/core/jni/com_android_server_AlarmManagerService.cpp
new file mode 100644
index 000000000000..342515bb3bb0
--- /dev/null
+++ b/services/core/jni/com_android_server_AlarmManagerService.cpp
@@ -0,0 +1,321 @@
+/* //device/libs/android_runtime/android_server_AlarmManagerService.cpp
+**
+** Copyright 2006, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+#define LOG_TAG "AlarmManagerService"
+
+#include "JNIHelp.h"
+#include "jni.h"
+#include <utils/Log.h>
+#include <utils/misc.h>
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/epoll.h>
+#include <sys/timerfd.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <netinet/in.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <unistd.h>
+#include <linux/ioctl.h>
+#include <linux/android_alarm.h>
+
+namespace android {
+
+static const size_t N_ANDROID_TIMERFDS = ANDROID_ALARM_TYPE_COUNT + 1;
+static const clockid_t android_alarm_to_clockid[N_ANDROID_TIMERFDS] = {
+ CLOCK_REALTIME_ALARM,
+ CLOCK_REALTIME,
+ CLOCK_BOOTTIME_ALARM,
+ CLOCK_BOOTTIME,
+ CLOCK_MONOTONIC,
+ CLOCK_REALTIME,
+};
+/* to match the legacy alarm driver implementation, we need an extra
+ CLOCK_REALTIME fd which exists specifically to be canceled on RTC changes */
+
+class AlarmImpl
+{
+public:
+ AlarmImpl(int *fds, size_t n_fds);
+ virtual ~AlarmImpl();
+
+ virtual int set(int type, struct timespec *ts) = 0;
+ virtual int waitForAlarm() = 0;
+
+protected:
+ int *fds;
+ size_t n_fds;
+};
+
+class AlarmImplAlarmDriver : public AlarmImpl
+{
+public:
+ AlarmImplAlarmDriver(int fd) : AlarmImpl(&fd, 1) { }
+
+ int set(int type, struct timespec *ts);
+ int waitForAlarm();
+};
+
+class AlarmImplTimerFd : public AlarmImpl
+{
+public:
+ AlarmImplTimerFd(int fds[N_ANDROID_TIMERFDS], int epollfd) :
+ AlarmImpl(fds, N_ANDROID_TIMERFDS), epollfd(epollfd) { }
+ ~AlarmImplTimerFd();
+
+ int set(int type, struct timespec *ts);
+ int waitForAlarm();
+
+private:
+ int epollfd;
+};
+
+AlarmImpl::AlarmImpl(int *fds_, size_t n_fds) : fds(new int[n_fds]),
+ n_fds(n_fds)
+{
+ memcpy(fds, fds_, n_fds * sizeof(fds[0]));
+}
+
+AlarmImpl::~AlarmImpl()
+{
+ for (size_t i = 0; i < n_fds; i++) {
+ close(fds[i]);
+ }
+ delete [] fds;
+}
+
+int AlarmImplAlarmDriver::set(int type, struct timespec *ts)
+{
+ return ioctl(fds[0], ANDROID_ALARM_SET(type), ts);
+}
+
+int AlarmImplAlarmDriver::waitForAlarm()
+{
+ return ioctl(fds[0], ANDROID_ALARM_WAIT);
+}
+
+AlarmImplTimerFd::~AlarmImplTimerFd()
+{
+ for (size_t i = 0; i < N_ANDROID_TIMERFDS; i++) {
+ epoll_ctl(epollfd, EPOLL_CTL_DEL, fds[i], NULL);
+ }
+ close(epollfd);
+}
+
+int AlarmImplTimerFd::set(int type, struct timespec *ts)
+{
+ if (type > ANDROID_ALARM_TYPE_COUNT) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (!ts->tv_nsec && !ts->tv_sec) {
+ ts->tv_nsec = 1;
+ }
+ /* timerfd interprets 0 = disarm, so replace with a practically
+ equivalent deadline of 1 ns */
+
+ struct itimerspec spec;
+ memset(&spec, 0, sizeof(spec));
+ memcpy(&spec.it_value, ts, sizeof(spec.it_value));
+
+ return timerfd_settime(fds[type], TFD_TIMER_ABSTIME, &spec, NULL);
+}
+
+int AlarmImplTimerFd::waitForAlarm()
+{
+ epoll_event events[N_ANDROID_TIMERFDS];
+
+ int nevents = epoll_wait(epollfd, events, N_ANDROID_TIMERFDS, -1);
+ if (nevents < 0) {
+ return nevents;
+ }
+
+ int result = 0;
+ for (int i = 0; i < nevents; i++) {
+ uint32_t alarm_idx = events[i].data.u32;
+ uint64_t unused;
+ ssize_t err = read(fds[alarm_idx], &unused, sizeof(unused));
+ if (err < 0) {
+ if (alarm_idx == ANDROID_ALARM_TYPE_COUNT && errno == ECANCELED) {
+ result |= ANDROID_ALARM_TIME_CHANGE_MASK;
+ } else {
+ return err;
+ }
+ } else {
+ result |= (1 << alarm_idx);
+ }
+ }
+
+ return result;
+}
+
+static jint android_server_AlarmManagerService_setKernelTimezone(JNIEnv*, jobject, jlong, jint minswest)
+{
+ struct timezone tz;
+
+ tz.tz_minuteswest = minswest;
+ tz.tz_dsttime = 0;
+
+ int result = settimeofday(NULL, &tz);
+ if (result < 0) {
+ ALOGE("Unable to set kernel timezone to %d: %s\n", minswest, strerror(errno));
+ return -1;
+ } else {
+ ALOGD("Kernel timezone updated to %d minutes west of GMT\n", minswest);
+ }
+
+ return 0;
+}
+
+static jlong init_alarm_driver()
+{
+ int fd = open("/dev/alarm", O_RDWR);
+ if (fd < 0) {
+ ALOGV("opening alarm driver failed: %s", strerror(errno));
+ return 0;
+ }
+
+ AlarmImpl *ret = new AlarmImplAlarmDriver(fd);
+ return reinterpret_cast<jlong>(ret);
+}
+
+static jlong init_timerfd()
+{
+ int epollfd;
+ int fds[N_ANDROID_TIMERFDS];
+
+ epollfd = epoll_create(N_ANDROID_TIMERFDS);
+ if (epollfd < 0) {
+ ALOGV("epoll_create(%u) failed: %s", N_ANDROID_TIMERFDS,
+ strerror(errno));
+ return 0;
+ }
+
+ for (size_t i = 0; i < N_ANDROID_TIMERFDS; i++) {
+ fds[i] = timerfd_create(android_alarm_to_clockid[i], 0);
+ if (fds[i] < 0) {
+ ALOGV("timerfd_create(%u) failed: %s", android_alarm_to_clockid[i],
+ strerror(errno));
+ close(epollfd);
+ for (size_t j = 0; j < i; j++) {
+ close(fds[j]);
+ }
+ return 0;
+ }
+ }
+
+ AlarmImpl *ret = new AlarmImplTimerFd(fds, epollfd);
+
+ for (size_t i = 0; i < N_ANDROID_TIMERFDS; i++) {
+ epoll_event event;
+ event.events = EPOLLIN | EPOLLWAKEUP;
+ event.data.u32 = i;
+
+ int err = epoll_ctl(epollfd, EPOLL_CTL_ADD, fds[i], &event);
+ if (err < 0) {
+ ALOGV("epoll_ctl(EPOLL_CTL_ADD) failed: %s", strerror(errno));
+ delete ret;
+ return 0;
+ }
+ }
+
+ struct itimerspec spec;
+ memset(&spec, 0, sizeof(spec));
+ /* 0 = disarmed; the timerfd doesn't need to be armed to get
+ RTC change notifications, just set up as cancelable */
+
+ int err = timerfd_settime(fds[ANDROID_ALARM_TYPE_COUNT],
+ TFD_TIMER_ABSTIME | TFD_TIMER_CANCEL_ON_SET, &spec, NULL);
+ if (err < 0) {
+ ALOGV("timerfd_settime() failed: %s", strerror(errno));
+ delete ret;
+ return 0;
+ }
+
+ return reinterpret_cast<jlong>(ret);
+}
+
+static jlong android_server_AlarmManagerService_init(JNIEnv*, jobject)
+{
+ jlong ret = init_alarm_driver();
+ if (ret) {
+ return ret;
+ }
+
+ return init_timerfd();
+}
+
+static void android_server_AlarmManagerService_close(JNIEnv*, jobject, jlong nativeData)
+{
+ AlarmImpl *impl = reinterpret_cast<AlarmImpl *>(nativeData);
+ delete impl;
+}
+
+static void android_server_AlarmManagerService_set(JNIEnv*, jobject, jlong nativeData, jint type, jlong seconds, jlong nanoseconds)
+{
+ AlarmImpl *impl = reinterpret_cast<AlarmImpl *>(nativeData);
+ struct timespec ts;
+ ts.tv_sec = seconds;
+ ts.tv_nsec = nanoseconds;
+
+ int result = impl->set(type, &ts);
+ if (result < 0)
+ {
+ ALOGE("Unable to set alarm to %lld.%09lld: %s\n", seconds, nanoseconds, strerror(errno));
+ }
+}
+
+static jint android_server_AlarmManagerService_waitForAlarm(JNIEnv*, jobject, jlong nativeData)
+{
+ AlarmImpl *impl = reinterpret_cast<AlarmImpl *>(nativeData);
+ int result = 0;
+
+ do
+ {
+ result = impl->waitForAlarm();
+ } while (result < 0 && errno == EINTR);
+
+ if (result < 0)
+ {
+ ALOGE("Unable to wait on alarm: %s\n", strerror(errno));
+ return 0;
+ }
+
+ return result;
+}
+
+static JNINativeMethod sMethods[] = {
+ /* name, signature, funcPtr */
+ {"init", "()J", (void*)android_server_AlarmManagerService_init},
+ {"close", "(J)V", (void*)android_server_AlarmManagerService_close},
+ {"set", "(JIJJ)V", (void*)android_server_AlarmManagerService_set},
+ {"waitForAlarm", "(J)I", (void*)android_server_AlarmManagerService_waitForAlarm},
+ {"setKernelTimezone", "(JI)I", (void*)android_server_AlarmManagerService_setKernelTimezone},
+};
+
+int register_android_server_AlarmManagerService(JNIEnv* env)
+{
+ return jniRegisterNativeMethods(env, "com/android/server/AlarmManagerService",
+ sMethods, NELEM(sMethods));
+}
+
+} /* namespace android */
diff --git a/services/jni/com_android_server_AssetAtlasService.cpp b/services/core/jni/com_android_server_AssetAtlasService.cpp
index 885d21eca925..4a1b55d5d9d5 100644
--- a/services/jni/com_android_server_AssetAtlasService.cpp
+++ b/services/core/jni/com_android_server_AssetAtlasService.cpp
@@ -54,11 +54,11 @@ static struct {
jfieldID mNativeCanvas;
} gCanvasFinalizerClassInfo;
-#define GET_INT(object, field) \
- env->GetIntField(object, field)
+#define GET_LONG(object, field) \
+ env->GetLongField(object, field)
-#define SET_INT(object, field, value) \
- env->SetIntField(object, field, value)
+#define SET_LONG(object, field, value) \
+ env->SetLongField(object, field, value)
// ----------------------------------------------------------------------------
// Canvas management
@@ -67,9 +67,9 @@ static struct {
static inline void swapCanvasPtr(JNIEnv* env, jobject canvasObj, SkCanvas* newCanvas) {
jobject canvasFinalizerObj = env->GetObjectField(canvasObj, gCanvasClassInfo.mFinalizer);
SkCanvas* previousCanvas = reinterpret_cast<SkCanvas*>(
- GET_INT(canvasObj, gCanvasClassInfo.mNativeCanvas));
- SET_INT(canvasObj, gCanvasClassInfo.mNativeCanvas, (int) newCanvas);
- SET_INT(canvasFinalizerObj, gCanvasFinalizerClassInfo.mNativeCanvas, (int) newCanvas);
+ GET_LONG(canvasObj, gCanvasClassInfo.mNativeCanvas));
+ SET_LONG(canvasObj, gCanvasClassInfo.mNativeCanvas, (long) newCanvas);
+ SET_LONG(canvasFinalizerObj, gCanvasFinalizerClassInfo.mNativeCanvas, (long) newCanvas);
SkSafeUnref(previousCanvas);
}
@@ -261,10 +261,10 @@ int register_android_server_AssetAtlasService(JNIEnv* env) {
FIND_CLASS(clazz, "android/graphics/Canvas");
GET_FIELD_ID(gCanvasClassInfo.mFinalizer, clazz, "mFinalizer",
"Landroid/graphics/Canvas$CanvasFinalizer;");
- GET_FIELD_ID(gCanvasClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "I");
+ GET_FIELD_ID(gCanvasClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "J");
FIND_CLASS(clazz, "android/graphics/Canvas$CanvasFinalizer");
- GET_FIELD_ID(gCanvasFinalizerClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "I");
+ GET_FIELD_ID(gCanvasFinalizerClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "J");
return jniRegisterNativeMethods(env, kClassPathName, gMethods, NELEM(gMethods));
}
diff --git a/services/jni/com_android_server_ConsumerIrService.cpp b/services/core/jni/com_android_server_ConsumerIrService.cpp
index 004c0aaad445..004c0aaad445 100644
--- a/services/jni/com_android_server_ConsumerIrService.cpp
+++ b/services/core/jni/com_android_server_ConsumerIrService.cpp
diff --git a/services/jni/com_android_server_SerialService.cpp b/services/core/jni/com_android_server_SerialService.cpp
index b889b78cc1f9..b889b78cc1f9 100644
--- a/services/jni/com_android_server_SerialService.cpp
+++ b/services/core/jni/com_android_server_SerialService.cpp
diff --git a/services/jni/com_android_server_SystemServer.cpp b/services/core/jni/com_android_server_SystemServer.cpp
index 0625544effdc..0625544effdc 100644
--- a/services/jni/com_android_server_SystemServer.cpp
+++ b/services/core/jni/com_android_server_SystemServer.cpp
diff --git a/services/jni/com_android_server_UsbDeviceManager.cpp b/services/core/jni/com_android_server_UsbDeviceManager.cpp
index 355173384892..355173384892 100644
--- a/services/jni/com_android_server_UsbDeviceManager.cpp
+++ b/services/core/jni/com_android_server_UsbDeviceManager.cpp
diff --git a/services/jni/com_android_server_UsbHostManager.cpp b/services/core/jni/com_android_server_UsbHostManager.cpp
index 639790b7de19..f1fa6cf07f60 100644
--- a/services/jni/com_android_server_UsbHostManager.cpp
+++ b/services/core/jni/com_android_server_UsbHostManager.cpp
@@ -73,6 +73,9 @@ static int usb_device_added(const char *devname, void* client_data) {
uint8_t deviceClass = deviceDesc->bDeviceClass;
uint8_t deviceSubClass = deviceDesc->bDeviceSubClass;
uint8_t protocol = deviceDesc->bDeviceProtocol;
+ char *manufacturer = usb_device_get_manufacturer_name(device);
+ char *product = usb_device_get_product_name(device);
+ char *serial = usb_device_get_serial(device);
usb_descriptor_iter_init(device, &iter);
@@ -109,12 +112,19 @@ static int usb_device_added(const char *devname, void* client_data) {
env->SetIntArrayRegion(endpointArray, 0, length, endpointValues.array());
jstring deviceName = env->NewStringUTF(devname);
+ jstring manufacturerName = env->NewStringUTF(manufacturer);
+ jstring productName = env->NewStringUTF(product);
+ jstring serialNumber = env->NewStringUTF(serial);
env->CallVoidMethod(thiz, method_usbDeviceAdded,
deviceName, vendorId, productId, deviceClass,
- deviceSubClass, protocol, interfaceArray, endpointArray);
+ deviceSubClass, protocol, manufacturerName,
+ productName, serialNumber, interfaceArray, endpointArray);
env->DeleteLocalRef(interfaceArray);
env->DeleteLocalRef(endpointArray);
+ env->DeleteLocalRef(serialNumber);
+ env->DeleteLocalRef(productName);
+ env->DeleteLocalRef(manufacturerName);
env->DeleteLocalRef(deviceName);
checkAndClearExceptionFromCallback(env, __FUNCTION__);
@@ -179,7 +189,7 @@ int register_android_server_UsbHostManager(JNIEnv *env)
ALOGE("Can't find com/android/server/usb/UsbHostManager");
return -1;
}
- method_usbDeviceAdded = env->GetMethodID(clazz, "usbDeviceAdded", "(Ljava/lang/String;IIIII[I[I)V");
+ method_usbDeviceAdded = env->GetMethodID(clazz, "usbDeviceAdded", "(Ljava/lang/String;IIIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[I[I)V");
if (method_usbDeviceAdded == NULL) {
ALOGE("Can't find usbDeviceAdded");
return -1;
diff --git a/services/jni/com_android_server_VibratorService.cpp b/services/core/jni/com_android_server_VibratorService.cpp
index 2b3f74a97184..2b3f74a97184 100644
--- a/services/jni/com_android_server_VibratorService.cpp
+++ b/services/core/jni/com_android_server_VibratorService.cpp
diff --git a/services/jni/com_android_server_connectivity_Vpn.cpp b/services/core/jni/com_android_server_connectivity_Vpn.cpp
index bf34a748061d..bf34a748061d 100644
--- a/services/jni/com_android_server_connectivity_Vpn.cpp
+++ b/services/core/jni/com_android_server_connectivity_Vpn.cpp
diff --git a/services/core/jni/com_android_server_dreams_McuHal.cpp b/services/core/jni/com_android_server_dreams_McuHal.cpp
new file mode 100644
index 000000000000..a6d929730683
--- /dev/null
+++ b/services/core/jni/com_android_server_dreams_McuHal.cpp
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "McuHal"
+
+//#define LOG_NDEBUG 0
+
+#include "JNIHelp.h"
+#include "jni.h"
+
+#include <ScopedUtfChars.h>
+#include <ScopedPrimitiveArray.h>
+
+#include <utils/Errors.h>
+#include <utils/Log.h>
+#include <hardware/mcu.h>
+
+namespace android {
+
+static jlong nativeOpen(JNIEnv* env, jclass clazz) {
+ mcu_module_t* module = NULL;
+ status_t err = hw_get_module(MCU_HARDWARE_MODULE_ID,
+ (hw_module_t const**)&module);
+ if (err) {
+ ALOGE("Couldn't load %s module (%s)", MCU_HARDWARE_MODULE_ID, strerror(-err));
+ return 0;
+ }
+
+ err = module->init(module);
+ if (err) {
+ ALOGE("Couldn't initialize %s module (%s)", MCU_HARDWARE_MODULE_ID, strerror(-err));
+ return 0;
+ }
+
+ return reinterpret_cast<jlong>(module);
+}
+
+static jbyteArray nativeSendMessage(JNIEnv* env, jclass clazz,
+ jlong ptr, jstring msgStr, jbyteArray argArray) {
+ mcu_module_t* module = reinterpret_cast<mcu_module_t*>(ptr);
+
+ ScopedUtfChars msg(env, msgStr);
+ ALOGV("Sending message %s to MCU", msg.c_str());
+
+ void* result = NULL;
+ size_t resultSize = 0;
+ status_t err;
+ if (argArray) {
+ ScopedByteArrayRO arg(env, argArray);
+ err = module->sendMessage(module, msg.c_str(), arg.get(), arg.size(),
+ &result, &resultSize);
+ } else {
+ err = module->sendMessage(module, msg.c_str(), NULL, 0, &result, &resultSize);
+ }
+ if (err) {
+ ALOGE("Couldn't send message to MCU (%s)", strerror(-err));
+ return NULL;
+ }
+
+ if (!result) {
+ return NULL;
+ }
+
+ jbyteArray resultArray = env->NewByteArray(resultSize);
+ if (resultArray) {
+ env->SetByteArrayRegion(resultArray, 0, resultSize, static_cast<jbyte*>(result));
+ }
+ free(result);
+ return resultArray;
+}
+
+static JNINativeMethod gMcuHalMethods[] = {
+ /* name, signature, funcPtr */
+ { "nativeOpen", "()J",
+ (void*) nativeOpen },
+ { "nativeSendMessage", "(JLjava/lang/String;[B)[B",
+ (void*) nativeSendMessage },
+};
+
+int register_android_server_dreams_McuHal(JNIEnv* env) {
+ int res = jniRegisterNativeMethods(env, "com/android/server/dreams/McuHal",
+ gMcuHalMethods, NELEM(gMcuHalMethods));
+ LOG_FATAL_IF(res < 0, "Unable to register native methods.");
+ return 0;
+}
+
+} /* namespace android */
diff --git a/services/jni/com_android_server_input_InputApplicationHandle.cpp b/services/core/jni/com_android_server_input_InputApplicationHandle.cpp
index b9681ab76cd1..f943d168e7d6 100644
--- a/services/jni/com_android_server_input_InputApplicationHandle.cpp
+++ b/services/core/jni/com_android_server_input_InputApplicationHandle.cpp
@@ -90,7 +90,7 @@ sp<InputApplicationHandle> android_server_InputApplicationHandle_getHandle(
AutoMutex _l(gHandleMutex);
- int ptr = env->GetIntField(inputApplicationHandleObj, gInputApplicationHandleClassInfo.ptr);
+ jlong ptr = env->GetLongField(inputApplicationHandleObj, gInputApplicationHandleClassInfo.ptr);
NativeInputApplicationHandle* handle;
if (ptr) {
handle = reinterpret_cast<NativeInputApplicationHandle*>(ptr);
@@ -98,8 +98,8 @@ sp<InputApplicationHandle> android_server_InputApplicationHandle_getHandle(
jweak objWeak = env->NewWeakGlobalRef(inputApplicationHandleObj);
handle = new NativeInputApplicationHandle(objWeak);
handle->incStrong((void*)android_server_InputApplicationHandle_getHandle);
- env->SetIntField(inputApplicationHandleObj, gInputApplicationHandleClassInfo.ptr,
- reinterpret_cast<int>(handle));
+ env->SetLongField(inputApplicationHandleObj, gInputApplicationHandleClassInfo.ptr,
+ reinterpret_cast<jlong>(handle));
}
return handle;
}
@@ -110,9 +110,9 @@ sp<InputApplicationHandle> android_server_InputApplicationHandle_getHandle(
static void android_server_InputApplicationHandle_nativeDispose(JNIEnv* env, jobject obj) {
AutoMutex _l(gHandleMutex);
- int ptr = env->GetIntField(obj, gInputApplicationHandleClassInfo.ptr);
+ jlong ptr = env->GetLongField(obj, gInputApplicationHandleClassInfo.ptr);
if (ptr) {
- env->SetIntField(obj, gInputApplicationHandleClassInfo.ptr, 0);
+ env->SetLongField(obj, gInputApplicationHandleClassInfo.ptr, 0);
NativeInputApplicationHandle* handle = reinterpret_cast<NativeInputApplicationHandle*>(ptr);
handle->decStrong((void*)android_server_InputApplicationHandle_getHandle);
@@ -143,7 +143,7 @@ int register_android_server_InputApplicationHandle(JNIEnv* env) {
FIND_CLASS(clazz, "com/android/server/input/InputApplicationHandle");
GET_FIELD_ID(gInputApplicationHandleClassInfo.ptr, clazz,
- "ptr", "I");
+ "ptr", "J");
GET_FIELD_ID(gInputApplicationHandleClassInfo.name, clazz,
"name", "Ljava/lang/String;");
diff --git a/services/jni/com_android_server_input_InputApplicationHandle.h b/services/core/jni/com_android_server_input_InputApplicationHandle.h
index 89d48c63cf3a..89d48c63cf3a 100644
--- a/services/jni/com_android_server_input_InputApplicationHandle.h
+++ b/services/core/jni/com_android_server_input_InputApplicationHandle.h
diff --git a/services/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp
index 4ab2086e10df..3fccf53ac796 100644
--- a/services/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/core/jni/com_android_server_input_InputManagerService.cpp
@@ -99,6 +99,12 @@ static struct {
jclass clazz;
} gMotionEventClassInfo;
+static struct {
+ jclass clazz;
+ jmethodID constructor;
+} gInputDeviceIdentifierInfo;
+
+
// --- Global functions ---
@@ -144,8 +150,6 @@ static void loadSystemIconAsSprite(JNIEnv* env, jobject contextObj, int32_t styl
enum {
WM_ACTION_PASS_TO_USER = 1,
- WM_ACTION_WAKE_UP = 2,
- WM_ACTION_GO_TO_SLEEP = 4,
};
@@ -183,7 +187,7 @@ public:
virtual void getReaderConfiguration(InputReaderConfiguration* outConfig);
virtual sp<PointerControllerInterface> obtainPointerController(int32_t deviceId);
virtual void notifyInputDevicesChanged(const Vector<InputDeviceInfo>& inputDevices);
- virtual sp<KeyCharacterMap> getKeyboardLayoutOverlay(const String8& inputDeviceDescriptor);
+ virtual sp<KeyCharacterMap> getKeyboardLayoutOverlay(const InputDeviceIdentifier& identifier);
virtual String8 getDeviceAlias(const InputDeviceIdentifier& identifier);
/* --- InputDispatcherPolicyInterface implementation --- */
@@ -492,13 +496,16 @@ void NativeInputManager::notifyInputDevicesChanged(const Vector<InputDeviceInfo>
}
sp<KeyCharacterMap> NativeInputManager::getKeyboardLayoutOverlay(
- const String8& inputDeviceDescriptor) {
+ const InputDeviceIdentifier& identifier) {
JNIEnv* env = jniEnv();
sp<KeyCharacterMap> result;
- ScopedLocalRef<jstring> descriptorObj(env, env->NewStringUTF(inputDeviceDescriptor.string()));
+ ScopedLocalRef<jstring> descriptor(env, env->NewStringUTF(identifier.descriptor.string()));
+ ScopedLocalRef<jobject> identifierObj(env, env->NewObject(gInputDeviceIdentifierInfo.clazz,
+ gInputDeviceIdentifierInfo.constructor, descriptor.get(),
+ identifier.vendor, identifier.product));
ScopedLocalRef<jobjectArray> arrayObj(env, jobjectArray(env->CallObjectMethod(mServiceObj,
- gServiceClassInfo.getKeyboardLayoutOverlay, descriptorObj.get())));
+ gServiceClassInfo.getKeyboardLayoutOverlay, identifierObj.get())));
if (arrayObj.get()) {
ScopedLocalRef<jstring> filenameObj(env,
jstring(env->GetObjectArrayElement(arrayObj.get(), 0)));
@@ -834,7 +841,7 @@ void NativeInputManager::interceptMotionBeforeQueueing(nsecs_t when, uint32_t& p
JNIEnv* env = jniEnv();
jint wmActions = env->CallIntMethod(mServiceObj,
gServiceClassInfo.interceptMotionBeforeQueueingWhenScreenOff,
- policyFlags);
+ when, policyFlags);
if (checkAndClearExceptionFromCallback(env,
"interceptMotionBeforeQueueingWhenScreenOff")) {
wmActions = 0;
@@ -850,20 +857,6 @@ void NativeInputManager::interceptMotionBeforeQueueing(nsecs_t when, uint32_t& p
void NativeInputManager::handleInterceptActions(jint wmActions, nsecs_t when,
uint32_t& policyFlags) {
- if (wmActions & WM_ACTION_GO_TO_SLEEP) {
-#if DEBUG_INPUT_DISPATCHER_POLICY
- ALOGD("handleInterceptActions: Going to sleep.");
-#endif
- android_server_PowerManagerService_goToSleep(when);
- }
-
- if (wmActions & WM_ACTION_WAKE_UP) {
-#if DEBUG_INPUT_DISPATCHER_POLICY
- ALOGD("handleInterceptActions: Waking up.");
-#endif
- android_server_PowerManagerService_wakeUp(when);
- }
-
if (wmActions & WM_ACTION_PASS_TO_USER) {
policyFlags |= POLICY_FLAG_PASS_TO_USER;
} else {
@@ -977,7 +970,7 @@ void NativeInputManager::loadPointerResources(PointerResources* outResources) {
// ----------------------------------------------------------------------------
-static jint nativeInit(JNIEnv* env, jclass clazz,
+static jlong nativeInit(JNIEnv* env, jclass clazz,
jobject serviceObj, jobject contextObj, jobject messageQueueObj) {
sp<MessageQueue> messageQueue = android_os_MessageQueue_getMessageQueue(env, messageQueueObj);
if (messageQueue == NULL) {
@@ -988,10 +981,10 @@ static jint nativeInit(JNIEnv* env, jclass clazz,
NativeInputManager* im = new NativeInputManager(contextObj, serviceObj,
messageQueue->getLooper());
im->incStrong(0);
- return reinterpret_cast<jint>(im);
+ return reinterpret_cast<jlong>(im);
}
-static void nativeStart(JNIEnv* env, jclass clazz, jint ptr) {
+static void nativeStart(JNIEnv* env, jclass clazz, jlong ptr) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
status_t result = im->getInputManager()->start();
@@ -1000,7 +993,7 @@ static void nativeStart(JNIEnv* env, jclass clazz, jint ptr) {
}
}
-static void nativeSetDisplayViewport(JNIEnv* env, jclass clazz, jint ptr, jboolean external,
+static void nativeSetDisplayViewport(JNIEnv* env, jclass clazz, jlong ptr, jboolean external,
jint displayId, jint orientation,
jint logicalLeft, jint logicalTop, jint logicalRight, jint logicalBottom,
jint physicalLeft, jint physicalTop, jint physicalRight, jint physicalBottom,
@@ -1024,31 +1017,31 @@ static void nativeSetDisplayViewport(JNIEnv* env, jclass clazz, jint ptr, jboole
}
static jint nativeGetScanCodeState(JNIEnv* env, jclass clazz,
- jint ptr, jint deviceId, jint sourceMask, jint scanCode) {
+ jlong ptr, jint deviceId, jint sourceMask, jint scanCode) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
- return im->getInputManager()->getReader()->getScanCodeState(
+ return (jint) im->getInputManager()->getReader()->getScanCodeState(
deviceId, uint32_t(sourceMask), scanCode);
}
static jint nativeGetKeyCodeState(JNIEnv* env, jclass clazz,
- jint ptr, jint deviceId, jint sourceMask, jint keyCode) {
+ jlong ptr, jint deviceId, jint sourceMask, jint keyCode) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
- return im->getInputManager()->getReader()->getKeyCodeState(
+ return (jint) im->getInputManager()->getReader()->getKeyCodeState(
deviceId, uint32_t(sourceMask), keyCode);
}
static jint nativeGetSwitchState(JNIEnv* env, jclass clazz,
- jint ptr, jint deviceId, jint sourceMask, jint sw) {
+ jlong ptr, jint deviceId, jint sourceMask, jint sw) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
- return im->getInputManager()->getReader()->getSwitchState(
+ return (jint) im->getInputManager()->getReader()->getSwitchState(
deviceId, uint32_t(sourceMask), sw);
}
static jboolean nativeHasKeys(JNIEnv* env, jclass clazz,
- jint ptr, jint deviceId, jint sourceMask, jintArray keyCodes, jbooleanArray outFlags) {
+ jlong ptr, jint deviceId, jint sourceMask, jintArray keyCodes, jbooleanArray outFlags) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
int32_t* codes = env->GetIntArrayElements(keyCodes, NULL);
@@ -1056,8 +1049,12 @@ static jboolean nativeHasKeys(JNIEnv* env, jclass clazz,
jsize numCodes = env->GetArrayLength(keyCodes);
jboolean result;
if (numCodes == env->GetArrayLength(keyCodes)) {
- result = im->getInputManager()->getReader()->hasKeys(
- deviceId, uint32_t(sourceMask), numCodes, codes, flags);
+ if (im->getInputManager()->getReader()->hasKeys(
+ deviceId, uint32_t(sourceMask), numCodes, codes, flags)) {
+ result = JNI_TRUE;
+ } else {
+ result = JNI_FALSE;
+ }
} else {
result = JNI_FALSE;
}
@@ -1082,7 +1079,7 @@ static void handleInputChannelDisposed(JNIEnv* env,
}
static void nativeRegisterInputChannel(JNIEnv* env, jclass clazz,
- jint ptr, jobject inputChannelObj, jobject inputWindowHandleObj, jboolean monitor) {
+ jlong ptr, jobject inputChannelObj, jobject inputWindowHandleObj, jboolean monitor) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
sp<InputChannel> inputChannel = android_view_InputChannel_getInputChannel(env,
@@ -1111,7 +1108,7 @@ static void nativeRegisterInputChannel(JNIEnv* env, jclass clazz,
}
static void nativeUnregisterInputChannel(JNIEnv* env, jclass clazz,
- jint ptr, jobject inputChannelObj) {
+ jlong ptr, jobject inputChannelObj) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
sp<InputChannel> inputChannel = android_view_InputChannel_getInputChannel(env,
@@ -1132,14 +1129,14 @@ static void nativeUnregisterInputChannel(JNIEnv* env, jclass clazz,
}
static void nativeSetInputFilterEnabled(JNIEnv* env, jclass clazz,
- jint ptr, jboolean enabled) {
+ jlong ptr, jboolean enabled) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
im->getInputManager()->getDispatcher()->setInputFilterEnabled(enabled);
}
static jint nativeInjectInputEvent(JNIEnv* env, jclass clazz,
- jint ptr, jobject inputEventObj, jint injectorPid, jint injectorUid,
+ jlong ptr, jobject inputEventObj, jint displayId, jint injectorPid, jint injectorUid,
jint syncMode, jint timeoutMillis, jint policyFlags) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
@@ -1151,8 +1148,8 @@ static jint nativeInjectInputEvent(JNIEnv* env, jclass clazz,
return INPUT_EVENT_INJECTION_FAILED;
}
- return im->getInputManager()->getDispatcher()->injectInputEvent(
- & keyEvent, injectorPid, injectorUid, syncMode, timeoutMillis,
+ return (jint) im->getInputManager()->getDispatcher()->injectInputEvent(
+ & keyEvent, displayId, injectorPid, injectorUid, syncMode, timeoutMillis,
uint32_t(policyFlags));
} else if (env->IsInstanceOf(inputEventObj, gMotionEventClassInfo.clazz)) {
const MotionEvent* motionEvent = android_view_MotionEvent_getNativePtr(env, inputEventObj);
@@ -1161,8 +1158,8 @@ static jint nativeInjectInputEvent(JNIEnv* env, jclass clazz,
return INPUT_EVENT_INJECTION_FAILED;
}
- return im->getInputManager()->getDispatcher()->injectInputEvent(
- motionEvent, injectorPid, injectorUid, syncMode, timeoutMillis,
+ return (jint) im->getInputManager()->getDispatcher()->injectInputEvent(
+ motionEvent, displayId, injectorPid, injectorUid, syncMode, timeoutMillis,
uint32_t(policyFlags));
} else {
jniThrowRuntimeException(env, "Invalid input event type.");
@@ -1171,35 +1168,35 @@ static jint nativeInjectInputEvent(JNIEnv* env, jclass clazz,
}
static void nativeSetInputWindows(JNIEnv* env, jclass clazz,
- jint ptr, jobjectArray windowHandleObjArray) {
+ jlong ptr, jobjectArray windowHandleObjArray) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
im->setInputWindows(env, windowHandleObjArray);
}
static void nativeSetFocusedApplication(JNIEnv* env, jclass clazz,
- jint ptr, jobject applicationHandleObj) {
+ jlong ptr, jobject applicationHandleObj) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
im->setFocusedApplication(env, applicationHandleObj);
}
static void nativeSetInputDispatchMode(JNIEnv* env,
- jclass clazz, jint ptr, jboolean enabled, jboolean frozen) {
+ jclass clazz, jlong ptr, jboolean enabled, jboolean frozen) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
im->setInputDispatchMode(enabled, frozen);
}
static void nativeSetSystemUiVisibility(JNIEnv* env,
- jclass clazz, jint ptr, jint visibility) {
+ jclass clazz, jlong ptr, jint visibility) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
im->setSystemUiVisibility(visibility);
}
static jboolean nativeTransferTouchFocus(JNIEnv* env,
- jclass clazz, jint ptr, jobject fromChannelObj, jobject toChannelObj) {
+ jclass clazz, jlong ptr, jobject fromChannelObj, jobject toChannelObj) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
sp<InputChannel> fromChannel =
@@ -1208,29 +1205,33 @@ static jboolean nativeTransferTouchFocus(JNIEnv* env,
android_view_InputChannel_getInputChannel(env, toChannelObj);
if (fromChannel == NULL || toChannel == NULL) {
- return false;
+ return JNI_FALSE;
}
- return im->getInputManager()->getDispatcher()->
- transferTouchFocus(fromChannel, toChannel);
+ if (im->getInputManager()->getDispatcher()->
+ transferTouchFocus(fromChannel, toChannel)) {
+ return JNI_TRUE;
+ } else {
+ return JNI_FALSE;
+ }
}
static void nativeSetPointerSpeed(JNIEnv* env,
- jclass clazz, jint ptr, jint speed) {
+ jclass clazz, jlong ptr, jint speed) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
im->setPointerSpeed(speed);
}
static void nativeSetShowTouches(JNIEnv* env,
- jclass clazz, jint ptr, jboolean enabled) {
+ jclass clazz, jlong ptr, jboolean enabled) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
im->setShowTouches(enabled);
}
static void nativeVibrate(JNIEnv* env,
- jclass clazz, jint ptr, jint deviceId, jlongArray patternObj,
+ jclass clazz, jlong ptr, jint deviceId, jlongArray patternObj,
jint repeat, jint token) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
@@ -1247,7 +1248,7 @@ static void nativeVibrate(JNIEnv* env,
nsecs_t pattern[patternSize];
for (size_t i = 0; i < patternSize; i++) {
pattern[i] = max(jlong(0), min(patternMillis[i],
- MAX_VIBRATE_PATTERN_DELAY_NSECS / 1000000LL)) * 1000000LL;
+ (jlong)(MAX_VIBRATE_PATTERN_DELAY_NSECS / 1000000LL))) * 1000000LL;
}
env->ReleasePrimitiveArrayCritical(patternObj, patternMillis, JNI_ABORT);
@@ -1255,14 +1256,14 @@ static void nativeVibrate(JNIEnv* env,
}
static void nativeCancelVibrate(JNIEnv* env,
- jclass clazz, jint ptr, jint deviceId, jint token) {
+ jclass clazz, jlong ptr, jint deviceId, jint token) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
im->getInputManager()->getReader()->cancelVibrate(deviceId, token);
}
static void nativeReloadKeyboardLayouts(JNIEnv* env,
- jclass clazz, jint ptr) {
+ jclass clazz, jlong ptr) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
im->getInputManager()->getReader()->requestRefreshConfiguration(
@@ -1270,14 +1271,14 @@ static void nativeReloadKeyboardLayouts(JNIEnv* env,
}
static void nativeReloadDeviceAliases(JNIEnv* env,
- jclass clazz, jint ptr) {
+ jclass clazz, jlong ptr) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
im->getInputManager()->getReader()->requestRefreshConfiguration(
InputReaderConfiguration::CHANGE_DEVICE_ALIAS);
}
-static jstring nativeDump(JNIEnv* env, jclass clazz, jint ptr) {
+static jstring nativeDump(JNIEnv* env, jclass clazz, jlong ptr) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
String8 dump;
@@ -1285,7 +1286,7 @@ static jstring nativeDump(JNIEnv* env, jclass clazz, jint ptr) {
return env->NewStringUTF(dump.string());
}
-static void nativeMonitor(JNIEnv* env, jclass clazz, jint ptr) {
+static void nativeMonitor(JNIEnv* env, jclass clazz, jlong ptr) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
im->getInputManager()->getReader()->monitor();
@@ -1297,54 +1298,54 @@ static void nativeMonitor(JNIEnv* env, jclass clazz, jint ptr) {
static JNINativeMethod gInputManagerMethods[] = {
/* name, signature, funcPtr */
{ "nativeInit",
- "(Lcom/android/server/input/InputManagerService;Landroid/content/Context;Landroid/os/MessageQueue;)I",
+ "(Lcom/android/server/input/InputManagerService;Landroid/content/Context;Landroid/os/MessageQueue;)J",
(void*) nativeInit },
- { "nativeStart", "(I)V",
+ { "nativeStart", "(J)V",
(void*) nativeStart },
- { "nativeSetDisplayViewport", "(IZIIIIIIIIIIII)V",
+ { "nativeSetDisplayViewport", "(JZIIIIIIIIIIII)V",
(void*) nativeSetDisplayViewport },
- { "nativeGetScanCodeState", "(IIII)I",
+ { "nativeGetScanCodeState", "(JIII)I",
(void*) nativeGetScanCodeState },
- { "nativeGetKeyCodeState", "(IIII)I",
+ { "nativeGetKeyCodeState", "(JIII)I",
(void*) nativeGetKeyCodeState },
- { "nativeGetSwitchState", "(IIII)I",
+ { "nativeGetSwitchState", "(JIII)I",
(void*) nativeGetSwitchState },
- { "nativeHasKeys", "(III[I[Z)Z",
+ { "nativeHasKeys", "(JII[I[Z)Z",
(void*) nativeHasKeys },
{ "nativeRegisterInputChannel",
- "(ILandroid/view/InputChannel;Lcom/android/server/input/InputWindowHandle;Z)V",
+ "(JLandroid/view/InputChannel;Lcom/android/server/input/InputWindowHandle;Z)V",
(void*) nativeRegisterInputChannel },
- { "nativeUnregisterInputChannel", "(ILandroid/view/InputChannel;)V",
+ { "nativeUnregisterInputChannel", "(JLandroid/view/InputChannel;)V",
(void*) nativeUnregisterInputChannel },
- { "nativeSetInputFilterEnabled", "(IZ)V",
+ { "nativeSetInputFilterEnabled", "(JZ)V",
(void*) nativeSetInputFilterEnabled },
- { "nativeInjectInputEvent", "(ILandroid/view/InputEvent;IIIII)I",
+ { "nativeInjectInputEvent", "(JLandroid/view/InputEvent;IIIIII)I",
(void*) nativeInjectInputEvent },
- { "nativeSetInputWindows", "(I[Lcom/android/server/input/InputWindowHandle;)V",
+ { "nativeSetInputWindows", "(J[Lcom/android/server/input/InputWindowHandle;)V",
(void*) nativeSetInputWindows },
- { "nativeSetFocusedApplication", "(ILcom/android/server/input/InputApplicationHandle;)V",
+ { "nativeSetFocusedApplication", "(JLcom/android/server/input/InputApplicationHandle;)V",
(void*) nativeSetFocusedApplication },
- { "nativeSetInputDispatchMode", "(IZZ)V",
+ { "nativeSetInputDispatchMode", "(JZZ)V",
(void*) nativeSetInputDispatchMode },
- { "nativeSetSystemUiVisibility", "(II)V",
+ { "nativeSetSystemUiVisibility", "(JI)V",
(void*) nativeSetSystemUiVisibility },
- { "nativeTransferTouchFocus", "(ILandroid/view/InputChannel;Landroid/view/InputChannel;)Z",
+ { "nativeTransferTouchFocus", "(JLandroid/view/InputChannel;Landroid/view/InputChannel;)Z",
(void*) nativeTransferTouchFocus },
- { "nativeSetPointerSpeed", "(II)V",
+ { "nativeSetPointerSpeed", "(JI)V",
(void*) nativeSetPointerSpeed },
- { "nativeSetShowTouches", "(IZ)V",
+ { "nativeSetShowTouches", "(JZ)V",
(void*) nativeSetShowTouches },
- { "nativeVibrate", "(II[JII)V",
+ { "nativeVibrate", "(JI[JII)V",
(void*) nativeVibrate },
- { "nativeCancelVibrate", "(III)V",
+ { "nativeCancelVibrate", "(JII)V",
(void*) nativeCancelVibrate },
- { "nativeReloadKeyboardLayouts", "(I)V",
+ { "nativeReloadKeyboardLayouts", "(J)V",
(void*) nativeReloadKeyboardLayouts },
- { "nativeReloadDeviceAliases", "(I)V",
+ { "nativeReloadDeviceAliases", "(J)V",
(void*) nativeReloadDeviceAliases },
- { "nativeDump", "(I)Ljava/lang/String;",
+ { "nativeDump", "(J)Ljava/lang/String;",
(void*) nativeDump },
- { "nativeMonitor", "(I)V",
+ { "nativeMonitor", "(J)V",
(void*) nativeMonitor },
};
@@ -1394,7 +1395,7 @@ int register_android_server_InputManager(JNIEnv* env) {
GET_METHOD_ID(gServiceClassInfo.interceptMotionBeforeQueueingWhenScreenOff,
clazz,
- "interceptMotionBeforeQueueingWhenScreenOff", "(I)I");
+ "interceptMotionBeforeQueueingWhenScreenOff", "(JI)I");
GET_METHOD_ID(gServiceClassInfo.interceptKeyBeforeDispatching, clazz,
"interceptKeyBeforeDispatching",
@@ -1438,7 +1439,8 @@ int register_android_server_InputManager(JNIEnv* env) {
"getPointerIcon", "()Landroid/view/PointerIcon;");
GET_METHOD_ID(gServiceClassInfo.getKeyboardLayoutOverlay, clazz,
- "getKeyboardLayoutOverlay", "(Ljava/lang/String;)[Ljava/lang/String;");
+ "getKeyboardLayoutOverlay",
+ "(Landroid/hardware/input/InputDeviceIdentifier;)[Ljava/lang/String;");
GET_METHOD_ID(gServiceClassInfo.getDeviceAlias, clazz,
"getDeviceAlias", "(Ljava/lang/String;)Ljava/lang/String;");
@@ -1458,6 +1460,13 @@ int register_android_server_InputManager(JNIEnv* env) {
FIND_CLASS(gMotionEventClassInfo.clazz, "android/view/MotionEvent");
gMotionEventClassInfo.clazz = jclass(env->NewGlobalRef(gMotionEventClassInfo.clazz));
+ // InputDeviceIdentifier
+
+ FIND_CLASS(gInputDeviceIdentifierInfo.clazz, "android/hardware/input/InputDeviceIdentifier");
+ gInputDeviceIdentifierInfo.clazz = jclass(env->NewGlobalRef(gInputDeviceIdentifierInfo.clazz));
+ GET_METHOD_ID(gInputDeviceIdentifierInfo.constructor, gInputDeviceIdentifierInfo.clazz,
+ "<init>", "(Ljava/lang/String;II)V");
+
return 0;
}
diff --git a/services/jni/com_android_server_input_InputWindowHandle.cpp b/services/core/jni/com_android_server_input_InputWindowHandle.cpp
index 82e3dad58c13..b80183c73b80 100644
--- a/services/jni/com_android_server_input_InputWindowHandle.cpp
+++ b/services/core/jni/com_android_server_input_InputWindowHandle.cpp
@@ -173,7 +173,7 @@ sp<NativeInputWindowHandle> android_server_InputWindowHandle_getHandle(
AutoMutex _l(gHandleMutex);
- int ptr = env->GetIntField(inputWindowHandleObj, gInputWindowHandleClassInfo.ptr);
+ jlong ptr = env->GetLongField(inputWindowHandleObj, gInputWindowHandleClassInfo.ptr);
NativeInputWindowHandle* handle;
if (ptr) {
handle = reinterpret_cast<NativeInputWindowHandle*>(ptr);
@@ -187,8 +187,8 @@ sp<NativeInputWindowHandle> android_server_InputWindowHandle_getHandle(
jweak objWeak = env->NewWeakGlobalRef(inputWindowHandleObj);
handle = new NativeInputWindowHandle(inputApplicationHandle, objWeak);
handle->incStrong((void*)android_server_InputWindowHandle_getHandle);
- env->SetIntField(inputWindowHandleObj, gInputWindowHandleClassInfo.ptr,
- reinterpret_cast<int>(handle));
+ env->SetLongField(inputWindowHandleObj, gInputWindowHandleClassInfo.ptr,
+ reinterpret_cast<jlong>(handle));
}
return handle;
}
@@ -199,9 +199,9 @@ sp<NativeInputWindowHandle> android_server_InputWindowHandle_getHandle(
static void android_server_InputWindowHandle_nativeDispose(JNIEnv* env, jobject obj) {
AutoMutex _l(gHandleMutex);
- int ptr = env->GetIntField(obj, gInputWindowHandleClassInfo.ptr);
+ jlong ptr = env->GetLongField(obj, gInputWindowHandleClassInfo.ptr);
if (ptr) {
- env->SetIntField(obj, gInputWindowHandleClassInfo.ptr, 0);
+ env->SetLongField(obj, gInputWindowHandleClassInfo.ptr, 0);
NativeInputWindowHandle* handle = reinterpret_cast<NativeInputWindowHandle*>(ptr);
handle->decStrong((void*)android_server_InputWindowHandle_getHandle);
@@ -232,7 +232,7 @@ int register_android_server_InputWindowHandle(JNIEnv* env) {
FIND_CLASS(clazz, "com/android/server/input/InputWindowHandle");
GET_FIELD_ID(gInputWindowHandleClassInfo.ptr, clazz,
- "ptr", "I");
+ "ptr", "J");
GET_FIELD_ID(gInputWindowHandleClassInfo.inputApplicationHandle,
clazz,
diff --git a/services/jni/com_android_server_input_InputWindowHandle.h b/services/core/jni/com_android_server_input_InputWindowHandle.h
index 2cfa17d34b83..2cfa17d34b83 100644
--- a/services/jni/com_android_server_input_InputWindowHandle.h
+++ b/services/core/jni/com_android_server_input_InputWindowHandle.h
diff --git a/services/jni/com_android_server_LightsService.cpp b/services/core/jni/com_android_server_lights_LightsService.cpp
index 401e1aaf8851..d51e044c4dbe 100644
--- a/services/jni/com_android_server_LightsService.cpp
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp
@@ -60,7 +60,7 @@ static light_device_t* get_device(hw_module_t* module, char const* name)
}
}
-static jint init_native(JNIEnv *env, jobject clazz)
+static jlong init_native(JNIEnv *env, jobject clazz)
{
int err;
hw_module_t* module;
@@ -90,10 +90,10 @@ static jint init_native(JNIEnv *env, jobject clazz)
memset(devices, 0, sizeof(Devices));
}
- return (jint)devices;
+ return (jlong)devices;
}
-static void finalize_native(JNIEnv *env, jobject clazz, int ptr)
+static void finalize_native(JNIEnv *env, jobject clazz, jlong ptr)
{
Devices* devices = (Devices*)ptr;
if (devices == NULL) {
@@ -103,8 +103,8 @@ static void finalize_native(JNIEnv *env, jobject clazz, int ptr)
free(devices);
}
-static void setLight_native(JNIEnv *env, jobject clazz, int ptr,
- int light, int colorARGB, int flashMode, int onMS, int offMS, int brightnessMode)
+static void setLight_native(JNIEnv *env, jobject clazz, jlong ptr,
+ jint light, jint colorARGB, jint flashMode, jint onMS, jint offMS, jint brightnessMode)
{
Devices* devices = (Devices*)ptr;
light_state_t state;
@@ -127,14 +127,14 @@ static void setLight_native(JNIEnv *env, jobject clazz, int ptr,
}
static JNINativeMethod method_table[] = {
- { "init_native", "()I", (void*)init_native },
- { "finalize_native", "(I)V", (void*)finalize_native },
- { "setLight_native", "(IIIIIII)V", (void*)setLight_native },
+ { "init_native", "()J", (void*)init_native },
+ { "finalize_native", "(J)V", (void*)finalize_native },
+ { "setLight_native", "(JIIIIII)V", (void*)setLight_native },
};
int register_android_server_LightsService(JNIEnv *env)
{
- return jniRegisterNativeMethods(env, "com/android/server/LightsService",
+ return jniRegisterNativeMethods(env, "com/android/server/lights/LightsService",
method_table, NELEM(method_table));
}
diff --git a/services/jni/com_android_server_location_FlpHardwareProvider.cpp b/services/core/jni/com_android_server_location_FlpHardwareProvider.cpp
index 6c14887ef627..6c14887ef627 100644
--- a/services/jni/com_android_server_location_FlpHardwareProvider.cpp
+++ b/services/core/jni/com_android_server_location_FlpHardwareProvider.cpp
diff --git a/services/jni/com_android_server_location_GpsLocationProvider.cpp b/services/core/jni/com_android_server_location_GpsLocationProvider.cpp
index aec254b181d4..e9ba116c26bf 100644
--- a/services/jni/com_android_server_location_GpsLocationProvider.cpp
+++ b/services/core/jni/com_android_server_location_GpsLocationProvider.cpp
@@ -387,7 +387,11 @@ static void android_location_GpsLocationProvider_class_init_native(JNIEnv* env,
}
static jboolean android_location_GpsLocationProvider_is_supported(JNIEnv* env, jclass clazz) {
- return (sGpsInterface != NULL);
+ if (sGpsInterface != NULL) {
+ return JNI_TRUE;
+ } else {
+ return JNI_FALSE;
+ }
}
static jboolean android_location_GpsLocationProvider_init(JNIEnv* env, jobject obj)
@@ -398,7 +402,7 @@ static jboolean android_location_GpsLocationProvider_init(JNIEnv* env, jobject o
// fail if the main interface fails to initialize
if (!sGpsInterface || sGpsInterface->init(&sGpsCallbacks) != 0)
- return false;
+ return JNI_FALSE;
// if XTRA initialization fails we will disable it by sGpsXtraInterface to NULL,
// but continue to allow the rest of the GPS interface to work.
@@ -413,7 +417,7 @@ static jboolean android_location_GpsLocationProvider_init(JNIEnv* env, jobject o
if (sGpsGeofencingInterface)
sGpsGeofencingInterface->init(&sGpsGeofenceCallbacks);
- return true;
+ return JNI_TRUE;
}
static void android_location_GpsLocationProvider_cleanup(JNIEnv* env, jobject obj)
@@ -425,27 +429,42 @@ static void android_location_GpsLocationProvider_cleanup(JNIEnv* env, jobject ob
static jboolean android_location_GpsLocationProvider_set_position_mode(JNIEnv* env, jobject obj,
jint mode, jint recurrence, jint min_interval, jint preferred_accuracy, jint preferred_time)
{
- if (sGpsInterface)
- return (sGpsInterface->set_position_mode(mode, recurrence, min_interval, preferred_accuracy,
- preferred_time) == 0);
+ if (sGpsInterface) {
+ if (sGpsInterface->set_position_mode(mode, recurrence, min_interval, preferred_accuracy,
+ preferred_time) == 0) {
+ return JNI_TRUE;
+ } else {
+ return JNI_FALSE;
+ }
+ }
else
- return false;
+ return JNI_FALSE;
}
static jboolean android_location_GpsLocationProvider_start(JNIEnv* env, jobject obj)
{
- if (sGpsInterface)
- return (sGpsInterface->start() == 0);
+ if (sGpsInterface) {
+ if (sGpsInterface->start() == 0) {
+ return JNI_TRUE;
+ } else {
+ return JNI_FALSE;
+ }
+ }
else
- return false;
+ return JNI_FALSE;
}
static jboolean android_location_GpsLocationProvider_stop(JNIEnv* env, jobject obj)
{
- if (sGpsInterface)
- return (sGpsInterface->stop() == 0);
+ if (sGpsInterface) {
+ if (sGpsInterface->stop() == 0) {
+ return JNI_TRUE;
+ } else {
+ return JNI_FALSE;
+ }
+ }
else
- return false;
+ return JNI_FALSE;
}
static void android_location_GpsLocationProvider_delete_aiding_data(JNIEnv* env, jobject obj, jint flags)
@@ -482,7 +501,7 @@ static jint android_location_GpsLocationProvider_read_sv_status(JNIEnv* env, job
env->ReleaseFloatArrayElements(elevArray, elev, 0);
env->ReleaseFloatArrayElements(azumArray, azim, 0);
env->ReleaseIntArrayElements(maskArray, mask, 0);
- return num_svs;
+ return (jint) num_svs;
}
static void android_location_GpsLocationProvider_agps_set_reference_location_cellid(JNIEnv* env,
@@ -552,7 +571,7 @@ static jint android_location_GpsLocationProvider_read_nmea(JNIEnv* env, jobject
length = buffer_size;
memcpy(nmea, sNmeaString, length);
env->ReleasePrimitiveArrayCritical(nmeaArray, nmea, JNI_ABORT);
- return length;
+ return (jint) length;
}
static void android_location_GpsLocationProvider_inject_time(JNIEnv* env, jobject obj,
@@ -571,7 +590,11 @@ static void android_location_GpsLocationProvider_inject_location(JNIEnv* env, jo
static jboolean android_location_GpsLocationProvider_supports_xtra(JNIEnv* env, jobject obj)
{
- return (sGpsXtraInterface != NULL);
+ if (sGpsXtraInterface != NULL) {
+ return JNI_TRUE;
+ } else {
+ return JNI_FALSE;
+ }
}
static void android_location_GpsLocationProvider_inject_xtra_data(JNIEnv* env, jobject obj,
@@ -658,7 +681,7 @@ static jstring android_location_GpsLocationProvider_get_internal_state(JNIEnv* e
}
static void android_location_GpsLocationProvider_update_network_state(JNIEnv* env, jobject obj,
- jboolean connected, int type, jboolean roaming, jboolean available, jstring extraInfo, jstring apn)
+ jboolean connected, jint type, jboolean roaming, jboolean available, jstring extraInfo, jstring apn)
{
if (sAGpsRilInterface && sAGpsRilInterface->update_network_state) {
diff --git a/services/jni/com_android_server_power_PowerManagerService.cpp b/services/core/jni/com_android_server_power_PowerManagerService.cpp
index 151e134ee3ba..151e134ee3ba 100644
--- a/services/jni/com_android_server_power_PowerManagerService.cpp
+++ b/services/core/jni/com_android_server_power_PowerManagerService.cpp
diff --git a/services/jni/com_android_server_power_PowerManagerService.h b/services/core/jni/com_android_server_power_PowerManagerService.h
index 0808b80f18ff..0808b80f18ff 100644
--- a/services/jni/com_android_server_power_PowerManagerService.h
+++ b/services/core/jni/com_android_server_power_PowerManagerService.h
diff --git a/services/jni/onload.cpp b/services/core/jni/onload.cpp
index efc34a2aca41..00986d5d3537 100644
--- a/services/jni/onload.cpp
+++ b/services/core/jni/onload.cpp
@@ -36,6 +36,7 @@ int register_android_server_location_GpsLocationProvider(JNIEnv* env);
int register_android_server_location_FlpHardwareProvider(JNIEnv* env);
int register_android_server_connectivity_Vpn(JNIEnv* env);
int register_android_server_AssetAtlasService(JNIEnv* env);
+int register_android_server_dreams_McuHal(JNIEnv* env);
};
using namespace android;
@@ -67,7 +68,7 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* reserved)
register_android_server_connectivity_Vpn(env);
register_android_server_AssetAtlasService(env);
register_android_server_ConsumerIrService(env);
-
+ register_android_server_dreams_McuHal(env);
return JNI_VERSION_1_4;
}
diff --git a/services/devicepolicy/Android.mk b/services/devicepolicy/Android.mk
new file mode 100644
index 000000000000..a55d1386671c
--- /dev/null
+++ b/services/devicepolicy/Android.mk
@@ -0,0 +1,12 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := services.devicepolicy
+
+LOCAL_SRC_FILES += \
+ $(call all-java-files-under,java)
+
+LOCAL_JAVA_LIBRARIES := conscrypt
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/services/java/com/android/server/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 2bb99d68ed77..296d852248d1 100644
--- a/services/java/com/android/server/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server;
+package com.android.server.devicepolicy;
import static android.Manifest.permission.MANAGE_CA_CERTIFICATES;
@@ -25,6 +25,7 @@ import com.android.internal.util.JournaledFile;
import com.android.internal.util.XmlUtils;
import com.android.internal.widget.LockPatternUtils;
import com.android.org.conscrypt.TrustedCertificateStore;
+import com.android.server.SystemService;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -117,7 +118,7 @@ import java.util.Set;
*/
public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
- private static final String TAG = "DevicePolicyManagerService";
+ private static final String LOG_TAG = "DevicePolicyManagerService";
private static final String DEVICE_POLICIES_XML = "device_policies.xml";
@@ -149,6 +150,26 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
*/
private boolean mHasFeature;
+ public static final class Lifecycle extends SystemService {
+ private DevicePolicyManagerService mService;
+
+ public Lifecycle(Context context) {
+ super(context);
+ mService = new DevicePolicyManagerService(context);
+ }
+
+ @Override
+ public void onStart() {
+ publishBinderService(Context.DEVICE_POLICY_SERVICE, mService);
+ }
+
+ @Override
+ public void onBootPhase(int phase) {
+ if (phase == PHASE_LOCK_SETTINGS_READY) {
+ mService.systemReady();
+ }
+ }
+ }
public static class DevicePolicyData {
int mActivePasswordQuality = DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
int mActivePasswordLength = 0;
@@ -186,7 +207,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
getSendingUserId());
if (Intent.ACTION_BOOT_COMPLETED.equals(action)
|| ACTION_EXPIRED_PASSWORD_NOTIFICATION.equals(action)) {
- if (DBG) Slog.v(TAG, "Sending password expiration notifications for action "
+ if (DBG) Slog.v(LOG_TAG, "Sending password expiration notifications for action "
+ action + " for user " + userHandle);
mHandler.post(new Runnable() {
public void run() {
@@ -218,6 +239,28 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
};
static class ActiveAdmin {
+ private static final String TAG_DISABLE_KEYGUARD_FEATURES = "disable-keyguard-features";
+ private static final String TAG_DISABLE_CAMERA = "disable-camera";
+ private static final String TAG_ENCRYPTION_REQUESTED = "encryption-requested";
+ private static final String TAG_PASSWORD_EXPIRATION_DATE = "password-expiration-date";
+ private static final String TAG_PASSWORD_EXPIRATION_TIMEOUT = "password-expiration-timeout";
+ private static final String TAG_GLOBAL_PROXY_EXCLUSION_LIST = "global-proxy-exclusion-list";
+ private static final String TAG_GLOBAL_PROXY_SPEC = "global-proxy-spec";
+ private static final String TAG_SPECIFIES_GLOBAL_PROXY = "specifies-global-proxy";
+ private static final String TAG_MAX_FAILED_PASSWORD_WIPE = "max-failed-password-wipe";
+ private static final String TAG_MAX_TIME_TO_UNLOCK = "max-time-to-unlock";
+ private static final String TAG_MIN_PASSWORD_NONLETTER = "min-password-nonletter";
+ private static final String TAG_MIN_PASSWORD_SYMBOLS = "min-password-symbols";
+ private static final String TAG_MIN_PASSWORD_NUMERIC = "min-password-numeric";
+ private static final String TAG_MIN_PASSWORD_LETTERS = "min-password-letters";
+ private static final String TAG_MIN_PASSWORD_LOWERCASE = "min-password-lowercase";
+ private static final String TAG_MIN_PASSWORD_UPPERCASE = "min-password-uppercase";
+ private static final String TAG_PASSWORD_HISTORY_LENGTH = "password-history-length";
+ private static final String TAG_MIN_PASSWORD_LENGTH = "min-password-length";
+ private static final String ATTR_VALUE = "value";
+ private static final String TAG_PASSWORD_QUALITY = "password-quality";
+ private static final String TAG_POLICIES = "policies";
+
final DeviceAdminInfo info;
int passwordQuality = DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
@@ -281,103 +324,103 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
void writeToXml(XmlSerializer out)
throws IllegalArgumentException, IllegalStateException, IOException {
- out.startTag(null, "policies");
+ out.startTag(null, TAG_POLICIES);
info.writePoliciesToXml(out);
- out.endTag(null, "policies");
+ out.endTag(null, TAG_POLICIES);
if (passwordQuality != DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
- out.startTag(null, "password-quality");
- out.attribute(null, "value", Integer.toString(passwordQuality));
- out.endTag(null, "password-quality");
+ out.startTag(null, TAG_PASSWORD_QUALITY);
+ out.attribute(null, ATTR_VALUE, Integer.toString(passwordQuality));
+ out.endTag(null, TAG_PASSWORD_QUALITY);
if (minimumPasswordLength != DEF_MINIMUM_PASSWORD_LENGTH) {
- out.startTag(null, "min-password-length");
- out.attribute(null, "value", Integer.toString(minimumPasswordLength));
- out.endTag(null, "min-password-length");
+ out.startTag(null, TAG_MIN_PASSWORD_LENGTH);
+ out.attribute(null, ATTR_VALUE, Integer.toString(minimumPasswordLength));
+ out.endTag(null, TAG_MIN_PASSWORD_LENGTH);
}
if(passwordHistoryLength != DEF_PASSWORD_HISTORY_LENGTH) {
- out.startTag(null, "password-history-length");
- out.attribute(null, "value", Integer.toString(passwordHistoryLength));
- out.endTag(null, "password-history-length");
+ out.startTag(null, TAG_PASSWORD_HISTORY_LENGTH);
+ out.attribute(null, ATTR_VALUE, Integer.toString(passwordHistoryLength));
+ out.endTag(null, TAG_PASSWORD_HISTORY_LENGTH);
}
if (minimumPasswordUpperCase != DEF_MINIMUM_PASSWORD_UPPER_CASE) {
- out.startTag(null, "min-password-uppercase");
- out.attribute(null, "value", Integer.toString(minimumPasswordUpperCase));
- out.endTag(null, "min-password-uppercase");
+ out.startTag(null, TAG_MIN_PASSWORD_UPPERCASE);
+ out.attribute(null, ATTR_VALUE, Integer.toString(minimumPasswordUpperCase));
+ out.endTag(null, TAG_MIN_PASSWORD_UPPERCASE);
}
if (minimumPasswordLowerCase != DEF_MINIMUM_PASSWORD_LOWER_CASE) {
- out.startTag(null, "min-password-lowercase");
- out.attribute(null, "value", Integer.toString(minimumPasswordLowerCase));
- out.endTag(null, "min-password-lowercase");
+ out.startTag(null, TAG_MIN_PASSWORD_LOWERCASE);
+ out.attribute(null, ATTR_VALUE, Integer.toString(minimumPasswordLowerCase));
+ out.endTag(null, TAG_MIN_PASSWORD_LOWERCASE);
}
if (minimumPasswordLetters != DEF_MINIMUM_PASSWORD_LETTERS) {
- out.startTag(null, "min-password-letters");
- out.attribute(null, "value", Integer.toString(minimumPasswordLetters));
- out.endTag(null, "min-password-letters");
+ out.startTag(null, TAG_MIN_PASSWORD_LETTERS);
+ out.attribute(null, ATTR_VALUE, Integer.toString(minimumPasswordLetters));
+ out.endTag(null, TAG_MIN_PASSWORD_LETTERS);
}
if (minimumPasswordNumeric != DEF_MINIMUM_PASSWORD_NUMERIC) {
- out.startTag(null, "min-password-numeric");
- out.attribute(null, "value", Integer.toString(minimumPasswordNumeric));
- out.endTag(null, "min-password-numeric");
+ out.startTag(null, TAG_MIN_PASSWORD_NUMERIC);
+ out.attribute(null, ATTR_VALUE, Integer.toString(minimumPasswordNumeric));
+ out.endTag(null, TAG_MIN_PASSWORD_NUMERIC);
}
if (minimumPasswordSymbols != DEF_MINIMUM_PASSWORD_SYMBOLS) {
- out.startTag(null, "min-password-symbols");
- out.attribute(null, "value", Integer.toString(minimumPasswordSymbols));
- out.endTag(null, "min-password-symbols");
+ out.startTag(null, TAG_MIN_PASSWORD_SYMBOLS);
+ out.attribute(null, ATTR_VALUE, Integer.toString(minimumPasswordSymbols));
+ out.endTag(null, TAG_MIN_PASSWORD_SYMBOLS);
}
if (minimumPasswordNonLetter > DEF_MINIMUM_PASSWORD_NON_LETTER) {
- out.startTag(null, "min-password-nonletter");
- out.attribute(null, "value", Integer.toString(minimumPasswordNonLetter));
- out.endTag(null, "min-password-nonletter");
+ out.startTag(null, TAG_MIN_PASSWORD_NONLETTER);
+ out.attribute(null, ATTR_VALUE, Integer.toString(minimumPasswordNonLetter));
+ out.endTag(null, TAG_MIN_PASSWORD_NONLETTER);
}
}
if (maximumTimeToUnlock != DEF_MAXIMUM_TIME_TO_UNLOCK) {
- out.startTag(null, "max-time-to-unlock");
- out.attribute(null, "value", Long.toString(maximumTimeToUnlock));
- out.endTag(null, "max-time-to-unlock");
+ out.startTag(null, TAG_MAX_TIME_TO_UNLOCK);
+ out.attribute(null, ATTR_VALUE, Long.toString(maximumTimeToUnlock));
+ out.endTag(null, TAG_MAX_TIME_TO_UNLOCK);
}
if (maximumFailedPasswordsForWipe != DEF_MAXIMUM_FAILED_PASSWORDS_FOR_WIPE) {
- out.startTag(null, "max-failed-password-wipe");
- out.attribute(null, "value", Integer.toString(maximumFailedPasswordsForWipe));
- out.endTag(null, "max-failed-password-wipe");
+ out.startTag(null, TAG_MAX_FAILED_PASSWORD_WIPE);
+ out.attribute(null, ATTR_VALUE, Integer.toString(maximumFailedPasswordsForWipe));
+ out.endTag(null, TAG_MAX_FAILED_PASSWORD_WIPE);
}
if (specifiesGlobalProxy) {
- out.startTag(null, "specifies-global-proxy");
- out.attribute(null, "value", Boolean.toString(specifiesGlobalProxy));
- out.endTag(null, "specifies_global_proxy");
+ out.startTag(null, TAG_SPECIFIES_GLOBAL_PROXY);
+ out.attribute(null, ATTR_VALUE, Boolean.toString(specifiesGlobalProxy));
+ out.endTag(null, TAG_SPECIFIES_GLOBAL_PROXY);
if (globalProxySpec != null) {
- out.startTag(null, "global-proxy-spec");
- out.attribute(null, "value", globalProxySpec);
- out.endTag(null, "global-proxy-spec");
+ out.startTag(null, TAG_GLOBAL_PROXY_SPEC);
+ out.attribute(null, ATTR_VALUE, globalProxySpec);
+ out.endTag(null, TAG_GLOBAL_PROXY_SPEC);
}
if (globalProxyExclusionList != null) {
- out.startTag(null, "global-proxy-exclusion-list");
- out.attribute(null, "value", globalProxyExclusionList);
- out.endTag(null, "global-proxy-exclusion-list");
+ out.startTag(null, TAG_GLOBAL_PROXY_EXCLUSION_LIST);
+ out.attribute(null, ATTR_VALUE, globalProxyExclusionList);
+ out.endTag(null, TAG_GLOBAL_PROXY_EXCLUSION_LIST);
}
}
if (passwordExpirationTimeout != DEF_PASSWORD_EXPIRATION_TIMEOUT) {
- out.startTag(null, "password-expiration-timeout");
- out.attribute(null, "value", Long.toString(passwordExpirationTimeout));
- out.endTag(null, "password-expiration-timeout");
+ out.startTag(null, TAG_PASSWORD_EXPIRATION_TIMEOUT);
+ out.attribute(null, ATTR_VALUE, Long.toString(passwordExpirationTimeout));
+ out.endTag(null, TAG_PASSWORD_EXPIRATION_TIMEOUT);
}
if (passwordExpirationDate != DEF_PASSWORD_EXPIRATION_DATE) {
- out.startTag(null, "password-expiration-date");
- out.attribute(null, "value", Long.toString(passwordExpirationDate));
- out.endTag(null, "password-expiration-date");
+ out.startTag(null, TAG_PASSWORD_EXPIRATION_DATE);
+ out.attribute(null, ATTR_VALUE, Long.toString(passwordExpirationDate));
+ out.endTag(null, TAG_PASSWORD_EXPIRATION_DATE);
}
if (encryptionRequested) {
- out.startTag(null, "encryption-requested");
- out.attribute(null, "value", Boolean.toString(encryptionRequested));
- out.endTag(null, "encryption-requested");
+ out.startTag(null, TAG_ENCRYPTION_REQUESTED);
+ out.attribute(null, ATTR_VALUE, Boolean.toString(encryptionRequested));
+ out.endTag(null, TAG_ENCRYPTION_REQUESTED);
}
if (disableCamera) {
- out.startTag(null, "disable-camera");
- out.attribute(null, "value", Boolean.toString(disableCamera));
- out.endTag(null, "disable-camera");
+ out.startTag(null, TAG_DISABLE_CAMERA);
+ out.attribute(null, ATTR_VALUE, Boolean.toString(disableCamera));
+ out.endTag(null, TAG_DISABLE_CAMERA);
}
if (disabledKeyguardFeatures != DEF_KEYGUARD_FEATURES_DISABLED) {
- out.startTag(null, "disable-keyguard-features");
- out.attribute(null, "value", Integer.toString(disabledKeyguardFeatures));
- out.endTag(null, "disable-keyguard-features");
+ out.startTag(null, TAG_DISABLE_KEYGUARD_FEATURES);
+ out.attribute(null, ATTR_VALUE, Integer.toString(disabledKeyguardFeatures));
+ out.endTag(null, TAG_DISABLE_KEYGUARD_FEATURES);
}
}
@@ -391,67 +434,67 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
continue;
}
String tag = parser.getName();
- if ("policies".equals(tag)) {
+ if (TAG_POLICIES.equals(tag)) {
info.readPoliciesFromXml(parser);
- } else if ("password-quality".equals(tag)) {
+ } else if (TAG_PASSWORD_QUALITY.equals(tag)) {
passwordQuality = Integer.parseInt(
- parser.getAttributeValue(null, "value"));
- } else if ("min-password-length".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE));
+ } else if (TAG_MIN_PASSWORD_LENGTH.equals(tag)) {
minimumPasswordLength = Integer.parseInt(
- parser.getAttributeValue(null, "value"));
- } else if ("password-history-length".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE));
+ } else if (TAG_PASSWORD_HISTORY_LENGTH.equals(tag)) {
passwordHistoryLength = Integer.parseInt(
- parser.getAttributeValue(null, "value"));
- } else if ("min-password-uppercase".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE));
+ } else if (TAG_MIN_PASSWORD_UPPERCASE.equals(tag)) {
minimumPasswordUpperCase = Integer.parseInt(
- parser.getAttributeValue(null, "value"));
- } else if ("min-password-lowercase".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE));
+ } else if (TAG_MIN_PASSWORD_LOWERCASE.equals(tag)) {
minimumPasswordLowerCase = Integer.parseInt(
- parser.getAttributeValue(null, "value"));
- } else if ("min-password-letters".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE));
+ } else if (TAG_MIN_PASSWORD_LETTERS.equals(tag)) {
minimumPasswordLetters = Integer.parseInt(
- parser.getAttributeValue(null, "value"));
- } else if ("min-password-numeric".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE));
+ } else if (TAG_MIN_PASSWORD_NUMERIC.equals(tag)) {
minimumPasswordNumeric = Integer.parseInt(
- parser.getAttributeValue(null, "value"));
- } else if ("min-password-symbols".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE));
+ } else if (TAG_MIN_PASSWORD_SYMBOLS.equals(tag)) {
minimumPasswordSymbols = Integer.parseInt(
- parser.getAttributeValue(null, "value"));
- } else if ("min-password-nonletter".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE));
+ } else if (TAG_MIN_PASSWORD_NONLETTER.equals(tag)) {
minimumPasswordNonLetter = Integer.parseInt(
- parser.getAttributeValue(null, "value"));
- } else if ("max-time-to-unlock".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE));
+ } else if (TAG_MAX_TIME_TO_UNLOCK.equals(tag)) {
maximumTimeToUnlock = Long.parseLong(
- parser.getAttributeValue(null, "value"));
- } else if ("max-failed-password-wipe".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE));
+ } else if (TAG_MAX_FAILED_PASSWORD_WIPE.equals(tag)) {
maximumFailedPasswordsForWipe = Integer.parseInt(
- parser.getAttributeValue(null, "value"));
- } else if ("specifies-global-proxy".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE));
+ } else if (TAG_SPECIFIES_GLOBAL_PROXY.equals(tag)) {
specifiesGlobalProxy = Boolean.parseBoolean(
- parser.getAttributeValue(null, "value"));
- } else if ("global-proxy-spec".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE));
+ } else if (TAG_GLOBAL_PROXY_SPEC.equals(tag)) {
globalProxySpec =
- parser.getAttributeValue(null, "value");
- } else if ("global-proxy-exclusion-list".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE);
+ } else if (TAG_GLOBAL_PROXY_EXCLUSION_LIST.equals(tag)) {
globalProxyExclusionList =
- parser.getAttributeValue(null, "value");
- } else if ("password-expiration-timeout".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE);
+ } else if (TAG_PASSWORD_EXPIRATION_TIMEOUT.equals(tag)) {
passwordExpirationTimeout = Long.parseLong(
- parser.getAttributeValue(null, "value"));
- } else if ("password-expiration-date".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE));
+ } else if (TAG_PASSWORD_EXPIRATION_DATE.equals(tag)) {
passwordExpirationDate = Long.parseLong(
- parser.getAttributeValue(null, "value"));
- } else if ("encryption-requested".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE));
+ } else if (TAG_ENCRYPTION_REQUESTED.equals(tag)) {
encryptionRequested = Boolean.parseBoolean(
- parser.getAttributeValue(null, "value"));
- } else if ("disable-camera".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE));
+ } else if (TAG_DISABLE_CAMERA.equals(tag)) {
disableCamera = Boolean.parseBoolean(
- parser.getAttributeValue(null, "value"));
- } else if ("disable-keyguard-features".equals(tag)) {
+ parser.getAttributeValue(null, ATTR_VALUE));
+ } else if (TAG_DISABLE_KEYGUARD_FEATURES.equals(tag)) {
disabledKeyguardFeatures = Integer.parseInt(
- parser.getAttributeValue(null, "value"));
+ parser.getAttributeValue(null, ATTR_VALUE));
} else {
- Slog.w(TAG, "Unknown admin tag: " + tag);
+ Slog.w(LOG_TAG, "Unknown admin tag: " + tag);
}
XmlUtils.skipCurrentTag(parser);
}
@@ -513,7 +556,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
private void handlePackagesChanged(int userHandle) {
boolean removed = false;
- if (DBG) Slog.d(TAG, "Handling package changes for user " + userHandle);
+ if (DBG) Slog.d(LOG_TAG, "Handling package changes for user " + userHandle);
DevicePolicyData policy = getUserData(userHandle);
IPackageManager pm = AppGlobals.getPackageManager();
for (int i = policy.mAdminList.size() - 1; i >= 0; i--) {
@@ -585,7 +628,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
void removeUserData(int userHandle) {
synchronized (this) {
if (userHandle == UserHandle.USER_OWNER) {
- Slog.w(TAG, "Tried to remove device policy file for user 0! Ignoring.");
+ Slog.w(LOG_TAG, "Tried to remove device policy file for user 0! Ignoring.");
return;
}
DevicePolicyData policy = mUserData.get(userHandle);
@@ -595,7 +638,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
File policyFile = new File(Environment.getUserSystemDirectory(userHandle),
DEVICE_POLICIES_XML);
policyFile.delete();
- Slog.i(TAG, "Removed device policy file " + policyFile.getAbsolutePath());
+ Slog.i(LOG_TAG, "Removed device policy file " + policyFile.getAbsolutePath());
}
}
@@ -792,10 +835,12 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
try {
return new DeviceAdminInfo(mContext, infos.get(0));
} catch (XmlPullParserException e) {
- Slog.w(TAG, "Bad device admin requested for user=" + userHandle + ": " + adminName, e);
+ Slog.w(LOG_TAG, "Bad device admin requested for user=" + userHandle + ": " + adminName,
+ e);
return null;
} catch (IOException e) {
- Slog.w(TAG, "Bad device admin requested for user=" + userHandle + ": " + adminName, e);
+ Slog.w(LOG_TAG, "Bad device admin requested for user=" + userHandle + ": " + adminName,
+ e);
return null;
}
}
@@ -922,7 +967,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
ComponentName.unflattenFromString(name), userHandle);
if (DBG && (UserHandle.getUserId(dai.getActivityInfo().applicationInfo.uid)
!= userHandle)) {
- Slog.w(TAG, "findAdmin returned an incorrect uid "
+ Slog.w(LOG_TAG, "findAdmin returned an incorrect uid "
+ dai.getActivityInfo().applicationInfo.uid + " for user "
+ userHandle);
}
@@ -933,7 +978,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
policy.mAdminList.add(ap);
}
} catch (RuntimeException e) {
- Slog.w(TAG, "Failed loading admin " + name, e);
+ Slog.w(LOG_TAG, "Failed loading admin " + name, e);
}
} else if ("failed-password-attempts".equals(tag)) {
policy.mFailedPasswordAttempts = Integer.parseInt(
@@ -962,22 +1007,22 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
parser.getAttributeValue(null, "nonletter"));
XmlUtils.skipCurrentTag(parser);
} else {
- Slog.w(TAG, "Unknown tag: " + tag);
+ Slog.w(LOG_TAG, "Unknown tag: " + tag);
XmlUtils.skipCurrentTag(parser);
}
}
} catch (NullPointerException e) {
- Slog.w(TAG, "failed parsing " + file + " " + e);
+ Slog.w(LOG_TAG, "failed parsing " + file + " " + e);
} catch (NumberFormatException e) {
- Slog.w(TAG, "failed parsing " + file + " " + e);
+ Slog.w(LOG_TAG, "failed parsing " + file + " " + e);
} catch (XmlPullParserException e) {
- Slog.w(TAG, "failed parsing " + file + " " + e);
+ Slog.w(LOG_TAG, "failed parsing " + file + " " + e);
} catch (FileNotFoundException e) {
// Don't be noisy, this is normal if we haven't defined any policies.
} catch (IOException e) {
- Slog.w(TAG, "failed parsing " + file + " " + e);
+ Slog.w(LOG_TAG, "failed parsing " + file + " " + e);
} catch (IndexOutOfBoundsException e) {
- Slog.w(TAG, "failed parsing " + file + " " + e);
+ Slog.w(LOG_TAG, "failed parsing " + file + " " + e);
}
try {
if (stream != null) {
@@ -993,7 +1038,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
// never normally happen.
LockPatternUtils utils = new LockPatternUtils(mContext);
if (utils.getActivePasswordQuality() < policy.mActivePasswordQuality) {
- Slog.w(TAG, "Active password quality 0x"
+ Slog.w(LOG_TAG, "Active password quality 0x"
+ Integer.toHexString(policy.mActivePasswordQuality)
+ " does not match actual quality 0x"
+ Integer.toHexString(utils.getActivePasswordQuality()));
@@ -1037,7 +1082,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
}
if (!haveOwner) {
- Slog.w(TAG, "Previous password owner " + policy.mPasswordOwner
+ Slog.w(LOG_TAG, "Previous password owner " + policy.mPasswordOwner
+ " no longer active; disabling");
policy.mPasswordOwner = -1;
}
@@ -1057,7 +1102,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
long token = Binder.clearCallingIdentity();
try {
String value = cameraDisabled ? "1" : "0";
- if (DBG) Slog.v(TAG, "Change in camera state ["
+ if (DBG) Slog.v(LOG_TAG, "Change in camera state ["
+ SYSTEM_PROP_DISABLE_CAMERA + "] = " + value);
SystemProperties.set(SYSTEM_PROP_DISABLE_CAMERA, value);
} finally {
@@ -1173,7 +1218,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
synchronized (this) {
long ident = Binder.clearCallingIdentity();
try {
- if (!refreshing && getActiveAdminUncheckedLocked(adminReceiver, userHandle) != null) {
+ if (!refreshing
+ && getActiveAdminUncheckedLocked(adminReceiver, userHandle) != null) {
throw new IllegalArgumentException("Admin is already added");
}
ActiveAdmin newAdmin = new ActiveAdmin(info);
@@ -1443,7 +1489,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
ap.passwordExpirationDate = expiration;
ap.passwordExpirationTimeout = timeout;
if (timeout > 0L) {
- Slog.w(TAG, "setPasswordExpiration(): password will expire on "
+ Slog.w(LOG_TAG, "setPasswordExpiration(): password will expire on "
+ DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT)
.format(new Date(expiration)));
}
@@ -1789,11 +1835,11 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
return true;
}
return policy.mActivePasswordUpperCase >= getPasswordMinimumUpperCase(null, userHandle)
- && policy.mActivePasswordLowerCase >= getPasswordMinimumLowerCase(null, userHandle)
- && policy.mActivePasswordLetters >= getPasswordMinimumLetters(null, userHandle)
- && policy.mActivePasswordNumeric >= getPasswordMinimumNumeric(null, userHandle)
- && policy.mActivePasswordSymbols >= getPasswordMinimumSymbols(null, userHandle)
- && policy.mActivePasswordNonLetter >= getPasswordMinimumNonLetter(null, userHandle);
+ && policy.mActivePasswordLowerCase >= getPasswordMinimumLowerCase(null, userHandle)
+ && policy.mActivePasswordLetters >= getPasswordMinimumLetters(null, userHandle)
+ && policy.mActivePasswordNumeric >= getPasswordMinimumNumeric(null, userHandle)
+ && policy.mActivePasswordSymbols >= getPasswordMinimumSymbols(null, userHandle)
+ && policy.mActivePasswordNonLetter >= getPasswordMinimumNonLetter(null, userHandle);
}
}
@@ -1871,7 +1917,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
int realQuality = LockPatternUtils.computePasswordQuality(password);
if (realQuality < quality
&& quality != DevicePolicyManager.PASSWORD_QUALITY_COMPLEX) {
- Slog.w(TAG, "resetPassword: password quality 0x"
+ Slog.w(LOG_TAG, "resetPassword: password quality 0x"
+ Integer.toHexString(realQuality)
+ " does not meet required quality 0x"
+ Integer.toHexString(quality));
@@ -1881,7 +1927,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
int length = getPasswordMinimumLength(null, userHandle);
if (password.length() < length) {
- Slog.w(TAG, "resetPassword: password length " + password.length()
+ Slog.w(LOG_TAG, "resetPassword: password length " + password.length()
+ " does not meet required length " + length);
return false;
}
@@ -1910,40 +1956,40 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
int neededLetters = getPasswordMinimumLetters(null, userHandle);
if(letters < neededLetters) {
- Slog.w(TAG, "resetPassword: number of letters " + letters
+ Slog.w(LOG_TAG, "resetPassword: number of letters " + letters
+ " does not meet required number of letters " + neededLetters);
return false;
}
int neededNumbers = getPasswordMinimumNumeric(null, userHandle);
if (numbers < neededNumbers) {
- Slog.w(TAG, "resetPassword: number of numerical digits " + numbers
+ Slog.w(LOG_TAG, "resetPassword: number of numerical digits " + numbers
+ " does not meet required number of numerical digits "
+ neededNumbers);
return false;
}
int neededLowerCase = getPasswordMinimumLowerCase(null, userHandle);
if (lowercase < neededLowerCase) {
- Slog.w(TAG, "resetPassword: number of lowercase letters " + lowercase
+ Slog.w(LOG_TAG, "resetPassword: number of lowercase letters " + lowercase
+ " does not meet required number of lowercase letters "
+ neededLowerCase);
return false;
}
int neededUpperCase = getPasswordMinimumUpperCase(null, userHandle);
if (uppercase < neededUpperCase) {
- Slog.w(TAG, "resetPassword: number of uppercase letters " + uppercase
+ Slog.w(LOG_TAG, "resetPassword: number of uppercase letters " + uppercase
+ " does not meet required number of uppercase letters "
+ neededUpperCase);
return false;
}
int neededSymbols = getPasswordMinimumSymbols(null, userHandle);
if (symbols < neededSymbols) {
- Slog.w(TAG, "resetPassword: number of special symbols " + symbols
+ Slog.w(LOG_TAG, "resetPassword: number of special symbols " + symbols
+ " does not meet required number of special symbols " + neededSymbols);
return false;
}
int neededNonLetter = getPasswordMinimumNonLetter(null, userHandle);
if (nonletter < neededNonLetter) {
- Slog.w(TAG, "resetPassword: number of non-letter characters " + nonletter
+ Slog.w(LOG_TAG, "resetPassword: number of non-letter characters " + nonletter
+ " does not meet required number of non-letter characters "
+ neededNonLetter);
return false;
@@ -1954,7 +2000,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
int callingUid = Binder.getCallingUid();
DevicePolicyData policy = getUserData(userHandle);
if (policy.mPasswordOwner >= 0 && policy.mPasswordOwner != callingUid) {
- Slog.w(TAG, "resetPassword: already set by another uid and not entered by user");
+ Slog.w(LOG_TAG, "resetPassword: already set by another uid and not entered by user");
return false;
}
@@ -2020,7 +2066,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
try {
getIPowerManager().setMaximumScreenOffTimeoutFromDeviceAdmin((int)timeMs);
} catch (RemoteException e) {
- Slog.w(TAG, "Failure talking with power manager", e);
+ Slog.w(LOG_TAG, "Failure talking with power manager", e);
}
} finally {
Binder.restoreCallingIdentity(ident);
@@ -2095,10 +2141,10 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
X509Certificate cert = parseCert(certBuffer);
pemCert = Credentials.convertToPem(cert);
} catch (CertificateException ce) {
- Log.e(TAG, "Problem converting cert", ce);
+ Log.e(LOG_TAG, "Problem converting cert", ce);
return false;
} catch (IOException ioe) {
- Log.e(TAG, "Problem reading cert", ioe);
+ Log.e(LOG_TAG, "Problem reading cert", ioe);
return false;
}
try {
@@ -2113,7 +2159,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
}
} catch (InterruptedException e1) {
- Log.w(TAG, "installCaCertsToKeyChain(): ", e1);
+ Log.w(LOG_TAG, "installCaCertsToKeyChain(): ", e1);
Thread.currentThread().interrupt();
}
return false;
@@ -2134,10 +2180,10 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
X509Certificate cert = parseCert(certBuffer);
alias = certStore.getCertificateAlias(cert);
} catch (CertificateException ce) {
- Log.e(TAG, "Problem creating X509Certificate", ce);
+ Log.e(LOG_TAG, "Problem creating X509Certificate", ce);
return;
} catch (IOException ioe) {
- Log.e(TAG, "Problem reading certificate", ioe);
+ Log.e(LOG_TAG, "Problem reading certificate", ioe);
return;
}
try {
@@ -2146,13 +2192,13 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
try {
service.deleteCaCertificate(alias);
} catch (RemoteException e) {
- Log.e(TAG, "from CaCertUninstaller: ", e);
+ Log.e(LOG_TAG, "from CaCertUninstaller: ", e);
} finally {
keyChainConnection.close();
keyChainConnection = null;
}
} catch (InterruptedException ie) {
- Log.w(TAG, "CaCertUninstaller: ", ie);
+ Log.w(LOG_TAG, "CaCertUninstaller: ", ie);
Thread.currentThread().interrupt();
}
}
@@ -2173,7 +2219,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
try {
RecoverySystem.rebootWipeUserData(mContext);
} catch (IOException e) {
- Slog.w(TAG, "Failed requesting data wipe", e);
+ Slog.w(LOG_TAG, "Failed requesting data wipe", e);
}
}
}
@@ -2264,8 +2310,10 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
if (p.mActivePasswordQuality != quality || p.mActivePasswordLength != length
|| p.mFailedPasswordAttempts != 0 || p.mActivePasswordLetters != letters
|| p.mActivePasswordUpperCase != uppercase
- || p.mActivePasswordLowerCase != lowercase || p.mActivePasswordNumeric != numbers
- || p.mActivePasswordSymbols != symbols || p.mActivePasswordNonLetter != nonletter) {
+ || p.mActivePasswordLowerCase != lowercase
+ || p.mActivePasswordNumeric != numbers
+ || p.mActivePasswordSymbols != symbols
+ || p.mActivePasswordNonLetter != nonletter) {
long ident = Binder.clearCallingIdentity();
try {
p.mActivePasswordQuality = quality;
@@ -2387,7 +2435,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
// If the user is not the owner, don't set the global proxy. Fail silently.
if (UserHandle.getCallingUserId() != UserHandle.USER_OWNER) {
- Slog.w(TAG, "Only the owner is allowed to set the global proxy. User "
+ Slog.w(LOG_TAG, "Only the owner is allowed to set the global proxy. User "
+ userHandle + " is not permitted.");
return null;
}
@@ -2468,7 +2516,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
ProxyProperties proxyProperties = new ProxyProperties(data[0], proxyPort, exclusionList);
if (!proxyProperties.isValid()) {
- Slog.e(TAG, "Invalid proxy properties, ignoring: " + proxyProperties.toString());
+ Slog.e(LOG_TAG, "Invalid proxy properties, ignoring: " + proxyProperties.toString());
return;
}
Settings.Global.putString(res, Settings.Global.GLOBAL_HTTP_PROXY_HOST, data[0]);
@@ -2494,7 +2542,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
// Only owner can set storage encryption
if (userHandle != UserHandle.USER_OWNER
|| UserHandle.getCallingUserId() != UserHandle.USER_OWNER) {
- Slog.w(TAG, "Only owner is allowed to set storage encryption. User "
+ Slog.w(LOG_TAG, "Only owner is allowed to set storage encryption. User "
+ UserHandle.getCallingUserId() + " is not permitted.");
return 0;
}
@@ -2880,7 +2928,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
}
} catch (NameNotFoundException nnfe) {
- Slog.w(TAG, "Device Owner package " + packageName + " not installed.");
+ Slog.w(LOG_TAG, "Device Owner package " + packageName + " not installed.");
}
return false;
}
@@ -2905,9 +2953,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
mOwnerName = parser.getAttributeValue(null, ATTR_NAME);
input.close();
} catch (XmlPullParserException xppe) {
- Slog.e(TAG, "Error parsing device-owner file\n" + xppe);
+ Slog.e(LOG_TAG, "Error parsing device-owner file\n" + xppe);
} catch (IOException ioe) {
- Slog.e(TAG, "IO Exception when reading device-owner file\n" + ioe);
+ Slog.e(LOG_TAG, "IO Exception when reading device-owner file\n" + ioe);
}
}
@@ -2935,7 +2983,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
out.flush();
file.finishWrite(output);
} catch (IOException ioe) {
- Slog.e(TAG, "IO Exception when writing device-owner file\n" + ioe);
+ Slog.e(LOG_TAG, "IO Exception when writing device-owner file\n" + ioe);
}
}
}
diff --git a/services/java/Android.mk b/services/java/Android.mk
deleted file mode 100644
index 8c3d0f09197c..000000000000
--- a/services/java/Android.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-# the library
-# ============================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
- $(call all-subdir-java-files) \
- com/android/server/EventLogTags.logtags \
- com/android/server/am/EventLogTags.logtags
-
-LOCAL_MODULE:= services
-
-LOCAL_JAVA_LIBRARIES := android.policy conscrypt telephony-common
-
-include $(BUILD_JAVA_LIBRARY)
-
-include $(BUILD_DROIDDOC)
diff --git a/services/java/com/android/server/AppWidgetService.java b/services/java/com/android/server/AppWidgetService.java
deleted file mode 100644
index 203cca692df0..000000000000
--- a/services/java/com/android/server/AppWidgetService.java
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.server;
-
-import android.app.ActivityManager;
-import android.appwidget.AppWidgetProviderInfo;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.PackageManager;
-import android.os.Binder;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.os.UserHandle;
-import android.util.Slog;
-import android.util.SparseArray;
-import android.widget.RemoteViews;
-
-import com.android.internal.appwidget.IAppWidgetHost;
-import com.android.internal.appwidget.IAppWidgetService;
-import com.android.internal.os.BackgroundThread;
-import com.android.internal.util.IndentingPrintWriter;
-
-import java.io.FileDescriptor;
-import java.io.PrintWriter;
-import java.util.List;
-import java.util.Locale;
-
-
-/**
- * Redirects calls to this service to the instance of the service for the appropriate user.
- */
-class AppWidgetService extends IAppWidgetService.Stub
-{
- private static final String TAG = "AppWidgetService";
-
- Context mContext;
- Locale mLocale;
- PackageManager mPackageManager;
- boolean mSafeMode;
- private final Handler mSaveStateHandler;
-
- private final SparseArray<AppWidgetServiceImpl> mAppWidgetServices;
-
- AppWidgetService(Context context) {
- mContext = context;
-
- mSaveStateHandler = BackgroundThread.getHandler();
-
- mAppWidgetServices = new SparseArray<AppWidgetServiceImpl>(5);
- AppWidgetServiceImpl primary = new AppWidgetServiceImpl(context, 0, mSaveStateHandler);
- mAppWidgetServices.append(0, primary);
- }
-
- public void systemRunning(boolean safeMode) {
- mSafeMode = safeMode;
-
- mAppWidgetServices.get(0).systemReady(safeMode);
-
- // Register for the boot completed broadcast, so we can send the
- // ENABLE broacasts. If we try to send them now, they time out,
- // because the system isn't ready to handle them yet.
- mContext.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL,
- new IntentFilter(Intent.ACTION_BOOT_COMPLETED), null, null);
-
- // Register for configuration changes so we can update the names
- // of the widgets when the locale changes.
- mContext.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL,
- new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED), null, null);
-
- // Register for broadcasts about package install, etc., so we can
- // update the provider list.
- IntentFilter filter = new IntentFilter();
- filter.addAction(Intent.ACTION_PACKAGE_ADDED);
- filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
- filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
- filter.addDataScheme("package");
- mContext.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL,
- filter, null, null);
- // Register for events related to sdcard installation.
- IntentFilter sdFilter = new IntentFilter();
- sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE);
- sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE);
- mContext.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL,
- sdFilter, null, null);
-
- IntentFilter userFilter = new IntentFilter();
- userFilter.addAction(Intent.ACTION_USER_REMOVED);
- userFilter.addAction(Intent.ACTION_USER_STOPPING);
- mContext.registerReceiver(new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- if (Intent.ACTION_USER_REMOVED.equals(intent.getAction())) {
- onUserRemoved(intent.getIntExtra(Intent.EXTRA_USER_HANDLE,
- UserHandle.USER_NULL));
- } else if (Intent.ACTION_USER_STOPPING.equals(intent.getAction())) {
- onUserStopping(intent.getIntExtra(Intent.EXTRA_USER_HANDLE,
- UserHandle.USER_NULL));
- }
- }
- }, userFilter);
- }
-
- @Override
- public int allocateAppWidgetId(String packageName, int hostId, int userId)
- throws RemoteException {
- return getImplForUser(userId).allocateAppWidgetId(packageName, hostId);
- }
-
- @Override
- public int[] getAppWidgetIdsForHost(int hostId, int userId) throws RemoteException {
- return getImplForUser(userId).getAppWidgetIdsForHost(hostId);
- }
-
- @Override
- public void deleteAppWidgetId(int appWidgetId, int userId) throws RemoteException {
- getImplForUser(userId).deleteAppWidgetId(appWidgetId);
- }
-
- @Override
- public void deleteHost(int hostId, int userId) throws RemoteException {
- getImplForUser(userId).deleteHost(hostId);
- }
-
- @Override
- public void deleteAllHosts(int userId) throws RemoteException {
- getImplForUser(userId).deleteAllHosts();
- }
-
- @Override
- public void bindAppWidgetId(int appWidgetId, ComponentName provider, Bundle options, int userId)
- throws RemoteException {
- getImplForUser(userId).bindAppWidgetId(appWidgetId, provider, options);
- }
-
- @Override
- public boolean bindAppWidgetIdIfAllowed(
- String packageName, int appWidgetId, ComponentName provider, Bundle options, int userId)
- throws RemoteException {
- return getImplForUser(userId).bindAppWidgetIdIfAllowed(
- packageName, appWidgetId, provider, options);
- }
-
- @Override
- public boolean hasBindAppWidgetPermission(String packageName, int userId)
- throws RemoteException {
- return getImplForUser(userId).hasBindAppWidgetPermission(packageName);
- }
-
- @Override
- public void setBindAppWidgetPermission(String packageName, boolean permission, int userId)
- throws RemoteException {
- getImplForUser(userId).setBindAppWidgetPermission(packageName, permission);
- }
-
- @Override
- public void bindRemoteViewsService(int appWidgetId, Intent intent, IBinder connection,
- int userId) throws RemoteException {
- getImplForUser(userId).bindRemoteViewsService(appWidgetId, intent, connection);
- }
-
- @Override
- public int[] startListening(IAppWidgetHost host, String packageName, int hostId,
- List<RemoteViews> updatedViews, int userId) throws RemoteException {
- return getImplForUser(userId).startListening(host, packageName, hostId, updatedViews);
- }
-
- public void onUserRemoved(int userId) {
- if (userId < 1) return;
- synchronized (mAppWidgetServices) {
- AppWidgetServiceImpl impl = mAppWidgetServices.get(userId);
- mAppWidgetServices.remove(userId);
-
- if (impl == null) {
- AppWidgetServiceImpl.getSettingsFile(userId).delete();
- } else {
- impl.onUserRemoved();
- }
- }
- }
-
- public void onUserStopping(int userId) {
- if (userId < 1) return;
- synchronized (mAppWidgetServices) {
- AppWidgetServiceImpl impl = mAppWidgetServices.get(userId);
- if (impl != null) {
- mAppWidgetServices.remove(userId);
- impl.onUserStopping();
- }
- }
- }
-
- private void checkPermission(int userId) {
- int realUserId = ActivityManager.handleIncomingUser(
- Binder.getCallingPid(),
- Binder.getCallingUid(),
- userId,
- false, /* allowAll */
- true, /* requireFull */
- this.getClass().getSimpleName(),
- this.getClass().getPackage().getName());
- }
-
- private AppWidgetServiceImpl getImplForUser(int userId) {
- checkPermission(userId);
- boolean sendInitial = false;
- AppWidgetServiceImpl service;
- synchronized (mAppWidgetServices) {
- service = mAppWidgetServices.get(userId);
- if (service == null) {
- Slog.i(TAG, "Unable to find AppWidgetServiceImpl for user " + userId + ", adding");
- // TODO: Verify that it's a valid user
- service = new AppWidgetServiceImpl(mContext, userId, mSaveStateHandler);
- service.systemReady(mSafeMode);
- // Assume that BOOT_COMPLETED was received, as this is a non-primary user.
- mAppWidgetServices.append(userId, service);
- sendInitial = true;
- }
- }
- if (sendInitial) {
- service.sendInitialBroadcasts();
- }
- return service;
- }
-
- @Override
- public int[] getAppWidgetIds(ComponentName provider, int userId) throws RemoteException {
- return getImplForUser(userId).getAppWidgetIds(provider);
- }
-
- @Override
- public AppWidgetProviderInfo getAppWidgetInfo(int appWidgetId, int userId)
- throws RemoteException {
- return getImplForUser(userId).getAppWidgetInfo(appWidgetId);
- }
-
- @Override
- public RemoteViews getAppWidgetViews(int appWidgetId, int userId) throws RemoteException {
- return getImplForUser(userId).getAppWidgetViews(appWidgetId);
- }
-
- @Override
- public void updateAppWidgetOptions(int appWidgetId, Bundle options, int userId) {
- getImplForUser(userId).updateAppWidgetOptions(appWidgetId, options);
- }
-
- @Override
- public Bundle getAppWidgetOptions(int appWidgetId, int userId) {
- return getImplForUser(userId).getAppWidgetOptions(appWidgetId);
- }
-
- @Override
- public List<AppWidgetProviderInfo> getInstalledProviders(int categoryFilter, int userId)
- throws RemoteException {
- return getImplForUser(userId).getInstalledProviders(categoryFilter);
- }
-
- @Override
- public void notifyAppWidgetViewDataChanged(int[] appWidgetIds, int viewId, int userId)
- throws RemoteException {
- getImplForUser(userId).notifyAppWidgetViewDataChanged(
- appWidgetIds, viewId);
- }
-
- @Override
- public void partiallyUpdateAppWidgetIds(int[] appWidgetIds, RemoteViews views, int userId)
- throws RemoteException {
- getImplForUser(userId).partiallyUpdateAppWidgetIds(
- appWidgetIds, views);
- }
-
- @Override
- public void stopListening(int hostId, int userId) throws RemoteException {
- getImplForUser(userId).stopListening(hostId);
- }
-
- @Override
- public void unbindRemoteViewsService(int appWidgetId, Intent intent, int userId)
- throws RemoteException {
- getImplForUser(userId).unbindRemoteViewsService(
- appWidgetId, intent);
- }
-
- @Override
- public void updateAppWidgetIds(int[] appWidgetIds, RemoteViews views, int userId)
- throws RemoteException {
- getImplForUser(userId).updateAppWidgetIds(appWidgetIds, views);
- }
-
- @Override
- public void updateAppWidgetProvider(ComponentName provider, RemoteViews views, int userId)
- throws RemoteException {
- getImplForUser(userId).updateAppWidgetProvider(provider, views);
- }
-
- @Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG);
-
- // Dump the state of all the app widget providers
- synchronized (mAppWidgetServices) {
- IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ");
- for (int i = 0; i < mAppWidgetServices.size(); i++) {
- pw.println("User: " + mAppWidgetServices.keyAt(i));
- ipw.increaseIndent();
- AppWidgetServiceImpl service = mAppWidgetServices.valueAt(i);
- service.dump(fd, ipw, args);
- ipw.decreaseIndent();
- }
- }
- }
-
- BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- // Slog.d(TAG, "received " + action);
- if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
- int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL);
- if (userId >= 0) {
- getImplForUser(userId).sendInitialBroadcasts();
- } else {
- Slog.w(TAG, "Incorrect user handle supplied in " + intent);
- }
- } else if (Intent.ACTION_CONFIGURATION_CHANGED.equals(action)) {
- for (int i = 0; i < mAppWidgetServices.size(); i++) {
- AppWidgetServiceImpl service = mAppWidgetServices.valueAt(i);
- service.onConfigurationChanged();
- }
- } else {
- int sendingUser = getSendingUserId();
- if (sendingUser == UserHandle.USER_ALL) {
- for (int i = 0; i < mAppWidgetServices.size(); i++) {
- AppWidgetServiceImpl service = mAppWidgetServices.valueAt(i);
- service.onBroadcastReceived(intent);
- }
- } else {
- AppWidgetServiceImpl service = mAppWidgetServices.get(sendingUser);
- if (service != null) {
- service.onBroadcastReceived(intent);
- }
- }
- }
- }
- };
-}
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index a42cbcfe0d64..0513f701c9c0 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -17,6 +17,9 @@
package com.android.server;
import android.app.ActivityManagerNative;
+import android.app.ActivityThread;
+import android.app.IAlarmManager;
+import android.app.INotificationManager;
import android.bluetooth.BluetoothAdapter;
import android.content.ComponentName;
import android.content.ContentResolver;
@@ -28,8 +31,10 @@ import android.content.res.Configuration;
import android.media.AudioService;
import android.net.wifi.p2p.WifiP2pService;
import android.os.Environment;
+import android.os.FactoryTest;
import android.os.Handler;
-import android.os.HandlerThread;
+import android.os.IBinder;
+import android.os.IPowerManager;
import android.os.Looper;
import android.os.RemoteException;
import android.os.ServiceManager;
@@ -51,22 +56,29 @@ import com.android.server.accessibility.AccessibilityManagerService;
import com.android.server.accounts.AccountManagerService;
import com.android.server.am.ActivityManagerService;
import com.android.server.am.BatteryStatsService;
+import com.android.server.clipboard.ClipboardService;
import com.android.server.content.ContentService;
import com.android.server.display.DisplayManagerService;
import com.android.server.dreams.DreamManagerService;
import com.android.server.input.InputManagerService;
+import com.android.server.lights.LightsManager;
+import com.android.server.lights.LightsService;
import com.android.server.media.MediaRouterService;
import com.android.server.net.NetworkPolicyManagerService;
import com.android.server.net.NetworkStatsService;
+import com.android.server.notification.NotificationManagerService;
import com.android.server.os.SchedulingPolicyService;
import com.android.server.pm.Installer;
import com.android.server.pm.PackageManagerService;
import com.android.server.pm.UserManagerService;
import com.android.server.power.PowerManagerService;
import com.android.server.power.ShutdownThread;
-import com.android.server.print.PrintManagerService;
import com.android.server.search.SearchManagerService;
+import com.android.server.statusbar.StatusBarManagerService;
+import com.android.server.storage.DeviceStorageMonitorService;
+import com.android.server.twilight.TwilightService;
import com.android.server.usb.UsbService;
+import com.android.server.wallpaper.WallpaperManagerService;
import com.android.server.wifi.WifiService;
import com.android.server.wm.WindowManagerService;
@@ -77,62 +89,212 @@ import java.io.File;
import java.util.Timer;
import java.util.TimerTask;
-class ServerThread {
+public final class SystemServer {
private static final String TAG = "SystemServer";
+
private static final String ENCRYPTING_STATE = "trigger_restart_min_framework";
private static final String ENCRYPTED_STATE = "1";
- ContentResolver mContentResolver;
+ private static final long SNAPSHOT_INTERVAL = 60 * 60 * 1000; // 1hr
- void reportWtf(String msg, Throwable e) {
- Slog.w(TAG, "***********************************************");
- Log.wtf(TAG, "BOOT FAILURE " + msg, e);
+ // The earliest supported time. We pick one day into 1970, to
+ // give any timezone code room without going into negative time.
+ private static final long EARLIEST_SUPPORTED_TIME = 86400 * 1000;
+
+ /*
+ * Implementation class names. TODO: Move them to a codegen class or load
+ * them from the build system somehow.
+ */
+ private static final String BACKUP_MANAGER_SERVICE_CLASS =
+ "com.android.server.backup.BackupManagerService$Lifecycle";
+ private static final String DEVICE_POLICY_MANAGER_SERVICE_CLASS =
+ "com.android.server.devicepolicy.DevicePolicyManagerService$Lifecycle";
+ private static final String APPWIDGET_SERVICE_CLASS =
+ "com.android.server.appwidget.AppWidgetService";
+ private static final String PRINT_MANAGER_SERVICE_CLASS =
+ "com.android.server.print.PrintManagerService";
+ private static final String USB_SERVICE_CLASS =
+ "com.android.server.usb.UsbService$Lifecycle";
+
+ private final int mFactoryTestMode;
+ private Timer mProfilerSnapshotTimer;
+
+ private Context mSystemContext;
+ private SystemServiceManager mSystemServiceManager;
+
+ // TODO: remove all of these references by improving dependency resolution and boot phases
+ private Installer mInstaller;
+ private PowerManagerService mPowerManagerService;
+ private ActivityManagerService mActivityManagerService;
+ private DisplayManagerService mDisplayManagerService;
+ private ContentResolver mContentResolver;
+
+ /**
+ * Called to initialize native system services.
+ */
+ private static native void nativeInit();
+
+ /**
+ * The main entry point from zygote.
+ */
+ public static void main(String[] args) {
+ new SystemServer().run();
}
- public void initAndLoop() {
- EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_SYSTEM_RUN,
- SystemClock.uptimeMillis());
+ public SystemServer() {
+ mFactoryTestMode = FactoryTest.getMode();
+ }
- Looper.prepareMainLooper();
+ private void run() {
+ // If a device's clock is before 1970 (before 0), a lot of
+ // APIs crash dealing with negative numbers, notably
+ // java.io.File#setLastModified, so instead we fake it and
+ // hope that time from cell towers or NTP fixes it shortly.
+ if (System.currentTimeMillis() < EARLIEST_SUPPORTED_TIME) {
+ Slog.w(TAG, "System clock is before 1970; setting to 1970.");
+ SystemClock.setCurrentTimeMillis(EARLIEST_SUPPORTED_TIME);
+ }
- android.os.Process.setThreadPriority(
- android.os.Process.THREAD_PRIORITY_FOREGROUND);
+ // Here we go!
+ Slog.i(TAG, "Entered the Android system server!");
+ EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_SYSTEM_RUN, SystemClock.uptimeMillis());
+
+ // In case the runtime switched since last boot (such as when
+ // the old runtime was removed in an OTA), set the system
+ // property so that it is in sync. We can't do this in
+ // libnativehelper's JniInvocation::Init code where we already
+ // had to fallback to a different runtime because it is
+ // running as root and we need to be the system user to set
+ // the property. http://b/11463182
+ SystemProperties.set("persist.sys.dalvik.vm.lib", VMRuntime.getRuntime().vmLibrary());
+
+ // Enable the sampling profiler.
+ if (SamplingProfilerIntegration.isEnabled()) {
+ SamplingProfilerIntegration.start();
+ mProfilerSnapshotTimer = new Timer();
+ mProfilerSnapshotTimer.schedule(new TimerTask() {
+ @Override
+ public void run() {
+ SamplingProfilerIntegration.writeSnapshot("system_server", null);
+ }
+ }, SNAPSHOT_INTERVAL, SNAPSHOT_INTERVAL);
+ }
+
+ // Mmmmmm... more memory!
+ VMRuntime.getRuntime().clearGrowthLimit();
+
+ // The system server has to run all of the time, so it needs to be
+ // as efficient as possible with its memory usage.
+ VMRuntime.getRuntime().setTargetHeapUtilization(0.8f);
+ // Within the system server, it is an error to access Environment paths without
+ // explicitly specifying a user.
+ Environment.setUserRequired(true);
+
+ // Ensure binder calls into the system always run at foreground priority.
BinderInternal.disableBackgroundScheduling(true);
+
+ // Prepare the main looper thread (this thread).
+ android.os.Process.setThreadPriority(
+ android.os.Process.THREAD_PRIORITY_FOREGROUND);
android.os.Process.setCanSelfBackground(false);
+ Looper.prepareMainLooper();
+
+ // Initialize native services.
+ System.loadLibrary("android_servers");
+ nativeInit();
// Check whether we failed to shut down last time we tried.
- {
- final String shutdownAction = SystemProperties.get(
- ShutdownThread.SHUTDOWN_ACTION_PROPERTY, "");
- if (shutdownAction != null && shutdownAction.length() > 0) {
- boolean reboot = (shutdownAction.charAt(0) == '1');
-
- final String reason;
- if (shutdownAction.length() > 1) {
- reason = shutdownAction.substring(1, shutdownAction.length());
- } else {
- reason = null;
- }
+ // This call may not return.
+ performPendingShutdown();
+
+ // Initialize the system context.
+ createSystemContext();
+
+ // Create the system service manager.
+ mSystemServiceManager = new SystemServiceManager(mSystemContext);
+ LocalServices.addService(SystemServiceManager.class, mSystemServiceManager);
- ShutdownThread.rebootOrShutdown(reboot, reason);
+ // Start services.
+ try {
+ startBootstrapServices();
+ startCoreServices();
+ startOtherServices();
+ } catch (RuntimeException ex) {
+ Slog.e("System", "******************************************");
+ Slog.e("System", "************ Failure starting system services", ex);
+ throw ex;
+ }
+
+ // For debug builds, log event loop stalls to dropbox for analysis.
+ if (StrictMode.conditionallyEnableDebugLogging()) {
+ Slog.i(TAG, "Enabled StrictMode for system server main thread.");
+ }
+
+ // Loop forever.
+ Looper.loop();
+ throw new RuntimeException("Main thread loop unexpectedly exited");
+ }
+
+ private void reportWtf(String msg, Throwable e) {
+ Slog.w(TAG, "***********************************************");
+ Log.wtf(TAG, "BOOT FAILURE " + msg, e);
+ }
+
+ private void performPendingShutdown() {
+ final String shutdownAction = SystemProperties.get(
+ ShutdownThread.SHUTDOWN_ACTION_PROPERTY, "");
+ if (shutdownAction != null && shutdownAction.length() > 0) {
+ boolean reboot = (shutdownAction.charAt(0) == '1');
+
+ final String reason;
+ if (shutdownAction.length() > 1) {
+ reason = shutdownAction.substring(1, shutdownAction.length());
+ } else {
+ reason = null;
}
+
+ ShutdownThread.rebootOrShutdown(reboot, reason);
}
+ }
- String factoryTestStr = SystemProperties.get("ro.factorytest");
- int factoryTest = "".equals(factoryTestStr) ? SystemServer.FACTORY_TEST_OFF
- : Integer.parseInt(factoryTestStr);
- final boolean headless = "1".equals(SystemProperties.get("ro.config.headless", "0"));
+ private void createSystemContext() {
+ ActivityThread activityThread = ActivityThread.systemMain();
+ mSystemContext = activityThread.getSystemContext();
+ mSystemContext.setTheme(android.R.style.Theme_Holo);
+ }
+
+ private void startBootstrapServices() {
+ // Wait for installd to finish starting up so that it has a chance to
+ // create critical directories such as /data/user with the appropriate
+ // permissions. We need this to complete before we initialize other services.
+ mInstaller = mSystemServiceManager.startService(Installer.class);
+
+ // Power manager needs to be started early because other services need it.
+ // TODO: The conversion to the new pattern is incomplete. We need to switch
+ // the power manager's dependencies over then we can use boot phases to arrange
+ // initialization order and remove the mPowerManagerService field.
+ mPowerManagerService = mSystemServiceManager.startService(PowerManagerService.class);
+
+ // Activity manager runs the show.
+ mActivityManagerService = mSystemServiceManager.startService(
+ ActivityManagerService.Lifecycle.class).getService();
+ }
- Installer installer = null;
+ private void startCoreServices() {
+ // Display manager is needed to provide display metrics before package manager
+ // starts up.
+ mDisplayManagerService = mSystemServiceManager.startService(DisplayManagerService.class);
+ }
+
+ private void startOtherServices() {
+ final Context context = mSystemContext;
AccountManagerService accountManager = null;
ContentService contentService = null;
- LightsService lights = null;
- PowerManagerService power = null;
- DisplayManagerService display = null;
+ LightsManager lights = null;
BatteryService battery = null;
VibratorService vibrator = null;
- AlarmManagerService alarm = null;
+ IAlarmManager alarm = null;
MountService mountService = null;
NetworkManagementService networkManagement = null;
NetworkStatsService networkStats = null;
@@ -142,14 +304,11 @@ class ServerThread {
WifiService wifi = null;
NsdService serviceDiscovery= null;
IPackageManager pm = null;
- Context context = null;
WindowManagerService wm = null;
BluetoothManagerService bluetooth = null;
DockObserver dock = null;
UsbService usb = null;
SerialService serial = null;
- TwilightService twilight = null;
- UiModeManagerService uiMode = null;
RecognitionManagerService recognition = null;
NetworkTimeUpdateService networkTimeUpdater = null;
CommonTimeManagementService commonTimeMgmtService = null;
@@ -157,48 +316,8 @@ class ServerThread {
TelephonyRegistry telephonyRegistry = null;
ConsumerIrService consumerIr = null;
- // Create a handler thread just for the window manager to enjoy.
- HandlerThread wmHandlerThread = new HandlerThread("WindowManager");
- wmHandlerThread.start();
- Handler wmHandler = new Handler(wmHandlerThread.getLooper());
- wmHandler.post(new Runnable() {
- @Override
- public void run() {
- //Looper.myLooper().setMessageLogging(new LogPrinter(
- // android.util.Log.DEBUG, TAG, android.util.Log.LOG_ID_SYSTEM));
- android.os.Process.setThreadPriority(
- android.os.Process.THREAD_PRIORITY_DISPLAY);
- android.os.Process.setCanSelfBackground(false);
-
- // For debug builds, log event loop stalls to dropbox for analysis.
- if (StrictMode.conditionallyEnableDebugLogging()) {
- Slog.i(TAG, "Enabled StrictMode logging for WM Looper");
- }
- }
- });
-
- // bootstrap services
boolean onlyCore = false;
boolean firstBoot = false;
- try {
- // Wait for installd to finished starting up so that it has a chance to
- // create critical directories such as /data/user with the appropriate
- // permissions. We need this to complete before we initialize other services.
- Slog.i(TAG, "Waiting for installd to be ready.");
- installer = new Installer();
- installer.ping();
-
- Slog.i(TAG, "Power Manager");
- power = new PowerManagerService();
- ServiceManager.addService(Context.POWER_SERVICE, power);
-
- Slog.i(TAG, "Activity Manager");
- context = ActivityManagerService.main(factoryTest);
- } catch (RuntimeException e) {
- Slog.e("System", "******************************************");
- Slog.e("System", "************ Failure starting bootstrap service", e);
- }
-
boolean disableStorage = SystemProperties.getBoolean("config.disable_storage", false);
boolean disableMedia = SystemProperties.getBoolean("config.disable_media", false);
boolean disableBluetooth = SystemProperties.getBoolean("config.disable_bluetooth", false);
@@ -209,10 +328,6 @@ class ServerThread {
boolean disableNetwork = SystemProperties.getBoolean("config.disable_network", false);
try {
- Slog.i(TAG, "Display Manager");
- display = new DisplayManagerService(context, wmHandler);
- ServiceManager.addService(Context.DISPLAY_SERVICE, display, true);
-
Slog.i(TAG, "Telephony Registry");
telephonyRegistry = new TelephonyRegistry(context);
ServiceManager.addService("telephony.registry", telephonyRegistry);
@@ -222,10 +337,8 @@ class ServerThread {
AttributeCache.init(context);
- if (!display.waitForDefaultDisplay()) {
- reportWtf("Timeout waiting for default display to be initialized.",
- new Throwable());
- }
+ // We need the default display before we can initialize the package manager.
+ mSystemServiceManager.startBootPhase(SystemService.PHASE_WAIT_FOR_DEFAULT_DISPLAY);
Slog.i(TAG, "Package Manager");
// Only run "core" apps if we're encrypting the device.
@@ -238,15 +351,15 @@ class ServerThread {
onlyCore = true;
}
- pm = PackageManagerService.main(context, installer,
- factoryTest != SystemServer.FACTORY_TEST_OFF,
+ pm = PackageManagerService.main(context, mInstaller,
+ mFactoryTestMode != FactoryTest.FACTORY_TEST_OFF,
onlyCore);
try {
firstBoot = pm.isFirstBoot();
} catch (RemoteException e) {
}
- ActivityManagerService.setSystemProcess();
+ mActivityManagerService.setSystemProcess();
Slog.i(TAG, "Entropy Mixer");
ServiceManager.addService("entropy", new EntropyMixer(context));
@@ -269,13 +382,13 @@ class ServerThread {
Slog.i(TAG, "Content Manager");
contentService = ContentService.main(context,
- factoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL);
+ mFactoryTestMode == FactoryTest.FACTORY_TEST_LOW_LEVEL);
Slog.i(TAG, "System Content Providers");
- ActivityManagerService.installSystemProviders();
+ mActivityManagerService.installSystemProviders();
- Slog.i(TAG, "Lights Service");
- lights = new LightsService(context);
+ mSystemServiceManager.startService(LightsService.class);
+ lights = LocalServices.getService(LightsManager.class);
Slog.i(TAG, "Battery Service");
battery = new BatteryService(context, lights);
@@ -285,49 +398,49 @@ class ServerThread {
vibrator = new VibratorService(context);
ServiceManager.addService("vibrator", vibrator);
- Slog.i(TAG, "Consumer IR Service");
- consumerIr = new ConsumerIrService(context);
- ServiceManager.addService(Context.CONSUMER_IR_SERVICE, consumerIr);
-
+ // TODO: use boot phase
// only initialize the power service after we have started the
// lights service, content providers and the battery service.
- power.init(context, lights, ActivityManagerService.self(), battery,
+ mPowerManagerService.init(lights, battery,
BatteryStatsService.getService(),
- ActivityManagerService.self().getAppOpsService(), display);
+ mActivityManagerService.getAppOpsService());
+
+ Slog.i(TAG, "Consumer IR Service");
+ consumerIr = new ConsumerIrService(context);
+ ServiceManager.addService(Context.CONSUMER_IR_SERVICE, consumerIr);
- Slog.i(TAG, "Alarm Manager");
- alarm = new AlarmManagerService(context);
- ServiceManager.addService(Context.ALARM_SERVICE, alarm);
+ mSystemServiceManager.startService(AlarmManagerService.class);
+ alarm = IAlarmManager.Stub.asInterface(
+ ServiceManager.getService(Context.ALARM_SERVICE));
Slog.i(TAG, "Init Watchdog");
- Watchdog.getInstance().init(context, battery, power, alarm,
- ActivityManagerService.self());
- Watchdog.getInstance().addThread(wmHandler, "WindowManager thread");
+ final Watchdog watchdog = Watchdog.getInstance();
+ watchdog.init(context, mActivityManagerService);
Slog.i(TAG, "Input Manager");
- inputManager = new InputManagerService(context, wmHandler);
+ inputManager = new InputManagerService(context);
Slog.i(TAG, "Window Manager");
- wm = WindowManagerService.main(context, power, display, inputManager,
- wmHandler, factoryTest != SystemServer.FACTORY_TEST_LOW_LEVEL,
+ wm = WindowManagerService.main(context, inputManager,
+ mFactoryTestMode != FactoryTest.FACTORY_TEST_LOW_LEVEL,
!firstBoot, onlyCore);
ServiceManager.addService(Context.WINDOW_SERVICE, wm);
ServiceManager.addService(Context.INPUT_SERVICE, inputManager);
- ActivityManagerService.self().setWindowManager(wm);
+ mActivityManagerService.setWindowManager(wm);
inputManager.setWindowManagerCallbacks(wm.getInputMonitor());
inputManager.start();
- display.setWindowManager(wm);
- display.setInputManager(inputManager);
+ // TODO: Use service dependencies instead.
+ mDisplayManagerService.windowManagerAndInputReady();
// Skip Bluetooth if we have an emulator kernel
// TODO: Use a more reliable check to see if this product should
// support Bluetooth - see bug 988521
if (SystemProperties.get("ro.kernel.qemu").equals("1")) {
Slog.i(TAG, "No Bluetooh Service (emulator)");
- } else if (factoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL) {
+ } else if (mFactoryTestMode == FactoryTest.FACTORY_TEST_LOW_LEVEL) {
Slog.i(TAG, "No Bluetooth Service (factory test)");
} else if (!context.getPackageManager().hasSystemFeature
(PackageManager.FEATURE_BLUETOOTH)) {
@@ -344,23 +457,19 @@ class ServerThread {
Slog.e("System", "************ Failure starting core service", e);
}
- DevicePolicyManagerService devicePolicy = null;
StatusBarManagerService statusBar = null;
+ INotificationManager notification = null;
InputMethodManagerService imm = null;
- AppWidgetService appWidget = null;
- NotificationManagerService notification = null;
WallpaperManagerService wallpaper = null;
LocationManagerService location = null;
CountryDetectorService countryDetector = null;
TextServicesManagerService tsms = null;
LockSettingsService lockSettings = null;
- DreamManagerService dreamy = null;
AssetAtlasService atlas = null;
- PrintManagerService printManager = null;
MediaRouterService mediaRouter = null;
// Bring up services needed for UI.
- if (factoryTest != SystemServer.FACTORY_TEST_LOW_LEVEL) {
+ if (mFactoryTestMode != FactoryTest.FACTORY_TEST_LOW_LEVEL) {
//if (!disableNonCoreServices) { // TODO: View depends on these; mock them?
if (true) {
try {
@@ -397,11 +506,11 @@ class ServerThread {
ActivityManagerNative.getDefault().showBootMessage(
context.getResources().getText(
com.android.internal.R.string.android_upgrading_starting_apps),
- false);
+ false);
} catch (RemoteException e) {
}
- if (factoryTest != SystemServer.FACTORY_TEST_LOW_LEVEL) {
+ if (mFactoryTestMode != FactoryTest.FACTORY_TEST_LOW_LEVEL) {
if (!disableStorage &&
!"0".equals(SystemProperties.get("system_init.startmountservice"))) {
try {
@@ -427,9 +536,9 @@ class ServerThread {
}
try {
- Slog.i(TAG, "Device Policy");
- devicePolicy = new DevicePolicyManagerService(context);
- ServiceManager.addService(Context.DEVICE_POLICY_SERVICE, devicePolicy);
+ if (pm.hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN)) {
+ mSystemServiceManager.startService(DEVICE_POLICY_MANAGER_SERVICE_CLASS);
+ }
} catch (Throwable e) {
reportWtf("starting DevicePolicyService", e);
}
@@ -487,7 +596,8 @@ class ServerThread {
try {
Slog.i(TAG, "NetworkPolicy Service");
networkPolicy = new NetworkPolicyManagerService(
- context, ActivityManagerService.self(), power,
+ context, mActivityManagerService,
+ (IPowerManager)ServiceManager.getService(Context.POWER_SERVICE),
networkStats, networkManagement);
ServiceManager.addService(Context.NETWORK_POLICY_SERVICE, networkPolicy);
} catch (Throwable e) {
@@ -567,22 +677,12 @@ class ServerThread {
reportWtf("making Content Service ready", e);
}
- try {
- Slog.i(TAG, "Notification Manager");
- notification = new NotificationManagerService(context, statusBar, lights);
- ServiceManager.addService(Context.NOTIFICATION_SERVICE, notification);
- networkPolicy.bindNotificationManager(notification);
- } catch (Throwable e) {
- reportWtf("starting Notification Manager", e);
- }
+ mSystemServiceManager.startService(NotificationManagerService.class);
+ notification = INotificationManager.Stub.asInterface(
+ ServiceManager.getService(Context.NOTIFICATION_SERVICE));
+ networkPolicy.bindNotificationManager(notification);
- try {
- Slog.i(TAG, "Device Storage Monitor");
- ServiceManager.addService(DeviceStorageMonitorService.SERVICE,
- new DeviceStorageMonitorService(context));
- } catch (Throwable e) {
- reportWtf("starting DeviceStorageMonitor service", e);
- }
+ mSystemServiceManager.startService(DeviceStorageMonitorService.class);
if (!disableLocation) {
try {
@@ -624,10 +724,8 @@ class ServerThread {
R.bool.config_enableWallpaperService)) {
try {
Slog.i(TAG, "Wallpaper Service");
- if (!headless) {
- wallpaper = new WallpaperManagerService(context);
- ServiceManager.addService(Context.WALLPAPER_SERVICE, wallpaper);
- }
+ wallpaper = new WallpaperManagerService(context);
+ ServiceManager.addService(Context.WALLPAPER_SERVICE, wallpaper);
} catch (Throwable e) {
reportWtf("starting Wallpaper Service", e);
}
@@ -665,10 +763,11 @@ class ServerThread {
if (!disableNonCoreServices) {
try {
- Slog.i(TAG, "USB Service");
- // Manage USB host and device support
- usb = new UsbService(context);
- ServiceManager.addService(Context.USB_SERVICE, usb);
+ if (pm.hasSystemFeature(PackageManager.FEATURE_USB_HOST) ||
+ pm.hasSystemFeature(PackageManager.FEATURE_USB_ACCESSORY)) {
+ // Manage USB host and device support
+ mSystemServiceManager.startService(USB_SERVICE_CLASS);
+ }
} catch (Throwable e) {
reportWtf("starting UsbService", e);
}
@@ -683,34 +782,23 @@ class ServerThread {
}
}
- try {
- Slog.i(TAG, "Twilight Service");
- twilight = new TwilightService(context);
- } catch (Throwable e) {
- reportWtf("starting TwilightService", e);
- }
+ mSystemServiceManager.startService(TwilightService.class);
- try {
- Slog.i(TAG, "UI Mode Manager Service");
- // Listen for UI mode changes
- uiMode = new UiModeManagerService(context, twilight);
- } catch (Throwable e) {
- reportWtf("starting UiModeManagerService", e);
- }
+ mSystemServiceManager.startService(UiModeManagerService.class);
if (!disableNonCoreServices) {
try {
- Slog.i(TAG, "Backup Service");
- ServiceManager.addService(Context.BACKUP_SERVICE,
- new BackupManagerService(context));
+ if (pm.hasSystemFeature(PackageManager.FEATURE_BACKUP)) {
+ mSystemServiceManager.startService(BACKUP_MANAGER_SERVICE_CLASS);
+ }
} catch (Throwable e) {
Slog.e(TAG, "Failure starting Backup Service", e);
}
try {
- Slog.i(TAG, "AppWidget Service");
- appWidget = new AppWidgetService(context);
- ServiceManager.addService(Context.APPWIDGET_SERVICE, appWidget);
+ if (pm.hasSystemFeature(PackageManager.FEATURE_APP_WIDGETS)) {
+ mSystemServiceManager.startService(APPWIDGET_SERVICE_CLASS);
+ }
} catch (Throwable e) {
reportWtf("starting AppWidget Service", e);
}
@@ -770,16 +858,9 @@ class ServerThread {
}
}
- if (!disableNonCoreServices &&
- context.getResources().getBoolean(R.bool.config_dreamsSupported)) {
- try {
- Slog.i(TAG, "Dreams Service");
- // Dreams (interactive idle-time views, a/k/a screen savers)
- dreamy = new DreamManagerService(context, wmHandler);
- ServiceManager.addService(DreamService.DREAM_SERVICE, dreamy);
- } catch (Throwable e) {
- reportWtf("starting DreamManagerService", e);
- }
+ if (!disableNonCoreServices) {
+ // Dreams (interactive idle-time views, a/k/a screen savers, and doze mode)
+ mSystemServiceManager.startService(DreamManagerService.class);
}
if (!disableNonCoreServices) {
@@ -800,9 +881,9 @@ class ServerThread {
}
try {
- Slog.i(TAG, "Print Service");
- printManager = new PrintManagerService(context);
- ServiceManager.addService(Context.PRINT_SERVICE, printManager);
+ if (pm.hasSystemFeature(PackageManager.FEATURE_PRINTING)) {
+ mSystemServiceManager.startService(PRINT_MANAGER_SERVICE_CLASS);
+ }
} catch (Throwable e) {
reportWtf("starting Print Service", e);
}
@@ -822,7 +903,7 @@ class ServerThread {
// we are in safe mode.
final boolean safeMode = wm.detectSafeMode();
if (safeMode) {
- ActivityManagerService.self().enterSafeMode();
+ mActivityManagerService.enterSafeMode();
// Post the safe mode state in the Zygote class
Zygote.systemInSafeMode = true;
// Disable the JIT for the system_server process
@@ -848,21 +929,10 @@ class ServerThread {
}
}
- if (devicePolicy != null) {
- try {
- devicePolicy.systemReady();
- } catch (Throwable e) {
- reportWtf("making Device Policy Service ready", e);
- }
- }
+ // Needed by DevicePolicyManager for initialization
+ mSystemServiceManager.startBootPhase(SystemService.PHASE_LOCK_SETTINGS_READY);
- if (notification != null) {
- try {
- notification.systemReady();
- } catch (Throwable e) {
- reportWtf("making Notification Service ready", e);
- }
- }
+ mSystemServiceManager.startBootPhase(SystemService.PHASE_SYSTEM_SERVICES_READY);
try {
wm.systemReady();
@@ -871,7 +941,7 @@ class ServerThread {
}
if (safeMode) {
- ActivityManagerService.self().showSafeModeOverlay();
+ mActivityManagerService.showSafeModeOverlay();
}
// Update the configuration for this context by hand, because we're going
@@ -884,7 +954,8 @@ class ServerThread {
context.getResources().updateConfiguration(config, metrics);
try {
- power.systemReady(twilight, dreamy);
+ // TODO: use boot phase
+ mPowerManagerService.systemReady();
} catch (Throwable e) {
reportWtf("making Power Manager Service ready", e);
}
@@ -896,13 +967,13 @@ class ServerThread {
}
try {
- display.systemReady(safeMode, onlyCore);
+ // TODO: use boot phase and communicate these flags some other way
+ mDisplayManagerService.systemReady(safeMode, onlyCore);
} catch (Throwable e) {
reportWtf("making Display Manager Service ready", e);
}
// These are needed to propagate to the runnable below.
- final Context contextF = context;
final MountService mountServiceF = mountService;
final BatteryService batteryF = battery;
final NetworkManagementService networkManagementF = networkManagement;
@@ -910,10 +981,6 @@ class ServerThread {
final NetworkPolicyManagerService networkPolicyF = networkPolicy;
final ConnectivityService connectivityF = connectivity;
final DockObserver dockF = dock;
- final UsbService usbF = usb;
- final TwilightService twilightF = twilight;
- final UiModeManagerService uiModeF = uiMode;
- final AppWidgetService appWidgetF = appWidget;
final WallpaperManagerService wallpaperF = wallpaper;
final InputMethodManagerService immF = imm;
final RecognitionManagerService recognitionF = recognition;
@@ -923,11 +990,9 @@ class ServerThread {
final CommonTimeManagementService commonTimeMgmtServiceF = commonTimeMgmtService;
final TextServicesManagerService textServiceManagerServiceF = tsms;
final StatusBarManagerService statusBarF = statusBar;
- final DreamManagerService dreamyF = dreamy;
final AssetAtlasService atlasF = atlas;
final InputManagerService inputManagerF = inputManager;
final TelephonyRegistry telephonyRegistryF = telephonyRegistry;
- final PrintManagerService printManagerF = printManager;
final MediaRouterService mediaRouterF = mediaRouter;
// We now tell the activity manager it is okay to run third party
@@ -935,17 +1000,22 @@ class ServerThread {
// where third party code can really run (but before it has actually
// started launching the initial applications), for us to complete our
// initialization.
- ActivityManagerService.self().systemReady(new Runnable() {
+ mActivityManagerService.systemReady(new Runnable() {
+ @Override
public void run() {
Slog.i(TAG, "Making services ready");
+ mSystemServiceManager.startBootPhase(
+ SystemService.PHASE_ACTIVITY_MANAGER_READY);
try {
- ActivityManagerService.self().startObservingNativeCrashes();
+ mActivityManagerService.startObservingNativeCrashes();
} catch (Throwable e) {
reportWtf("observing native crashes", e);
}
- if (!headless) {
- startSystemUi(contextF);
+ try {
+ startSystemUi(context);
+ } catch (Throwable e) {
+ reportWtf("starting System UI", e);
}
try {
if (mountServiceF != null) mountServiceF.systemReady();
@@ -983,21 +1053,6 @@ class ServerThread {
reportWtf("making Dock Service ready", e);
}
try {
- if (usbF != null) usbF.systemReady();
- } catch (Throwable e) {
- reportWtf("making USB Service ready", e);
- }
- try {
- if (twilightF != null) twilightF.systemReady();
- } catch (Throwable e) {
- reportWtf("makin Twilight Service ready", e);
- }
- try {
- if (uiModeF != null) uiModeF.systemReady();
- } catch (Throwable e) {
- reportWtf("making UI Mode Service ready", e);
- }
- try {
if (recognitionF != null) recognitionF.systemReady();
} catch (Throwable e) {
reportWtf("making Recognition Service ready", e);
@@ -1006,13 +1061,10 @@ class ServerThread {
// It is now okay to let the various system services start their
// third party code...
+ mSystemServiceManager.startBootPhase(
+ SystemService.PHASE_THIRD_PARTY_APPS_CAN_START);
try {
- if (appWidgetF != null) appWidgetF.systemRunning(safeMode);
- } catch (Throwable e) {
- reportWtf("Notifying AppWidgetService running", e);
- }
- try {
if (wallpaperF != null) wallpaperF.systemRunning();
} catch (Throwable e) {
reportWtf("Notifying WallpaperService running", e);
@@ -1038,7 +1090,9 @@ class ServerThread {
reportWtf("Notifying NetworkTimeService running", e);
}
try {
- if (commonTimeMgmtServiceF != null) commonTimeMgmtServiceF.systemRunning();
+ if (commonTimeMgmtServiceF != null) {
+ commonTimeMgmtServiceF.systemRunning();
+ }
} catch (Throwable e) {
reportWtf("Notifying CommonTimeManagementService running", e);
}
@@ -1049,11 +1103,6 @@ class ServerThread {
reportWtf("Notifying TextServicesManagerService running", e);
}
try {
- if (dreamyF != null) dreamyF.systemRunning();
- } catch (Throwable e) {
- reportWtf("Notifying DreamManagerService running", e);
- }
- try {
if (atlasF != null) atlasF.systemRunning();
} catch (Throwable e) {
reportWtf("Notifying AssetAtlasService running", e);
@@ -1064,34 +1113,20 @@ class ServerThread {
} catch (Throwable e) {
reportWtf("Notifying InputManagerService running", e);
}
-
try {
if (telephonyRegistryF != null) telephonyRegistryF.systemRunning();
} catch (Throwable e) {
reportWtf("Notifying TelephonyRegistry running", e);
}
-
- try {
- if (printManagerF != null) printManagerF.systemRuning();
- } catch (Throwable e) {
- reportWtf("Notifying PrintManagerService running", e);
- }
-
try {
if (mediaRouterF != null) mediaRouterF.systemRunning();
} catch (Throwable e) {
reportWtf("Notifying MediaRouterService running", e);
}
+
+ mSystemServiceManager.startBootPhase(SystemService.PHASE_BOOT_COMPLETE);
}
});
-
- // For debug builds, log event loop stalls to dropbox for analysis.
- if (StrictMode.conditionallyEnableDebugLogging()) {
- Slog.i(TAG, "Enabled StrictMode for system server main thread.");
- }
-
- Looper.loop();
- Slog.d(TAG, "System ServerThread is exiting!");
}
static final void startSystemUi(Context context) {
@@ -1102,80 +1137,3 @@ class ServerThread {
context.startServiceAsUser(intent, UserHandle.OWNER);
}
}
-
-public class SystemServer {
- private static final String TAG = "SystemServer";
-
- public static final int FACTORY_TEST_OFF = 0;
- public static final int FACTORY_TEST_LOW_LEVEL = 1;
- public static final int FACTORY_TEST_HIGH_LEVEL = 2;
-
- static Timer timer;
- static final long SNAPSHOT_INTERVAL = 60 * 60 * 1000; // 1hr
-
- // The earliest supported time. We pick one day into 1970, to
- // give any timezone code room without going into negative time.
- private static final long EARLIEST_SUPPORTED_TIME = 86400 * 1000;
-
- /**
- * Called to initialize native system services.
- */
- private static native void nativeInit();
-
- public static void main(String[] args) {
-
- /*
- * In case the runtime switched since last boot (such as when
- * the old runtime was removed in an OTA), set the system
- * property so that it is in sync. We can't do this in
- * libnativehelper's JniInvocation::Init code where we already
- * had to fallback to a different runtime because it is
- * running as root and we need to be the system user to set
- * the property. http://b/11463182
- */
- SystemProperties.set("persist.sys.dalvik.vm.lib",
- VMRuntime.getRuntime().vmLibrary());
-
- if (System.currentTimeMillis() < EARLIEST_SUPPORTED_TIME) {
- // If a device's clock is before 1970 (before 0), a lot of
- // APIs crash dealing with negative numbers, notably
- // java.io.File#setLastModified, so instead we fake it and
- // hope that time from cell towers or NTP fixes it
- // shortly.
- Slog.w(TAG, "System clock is before 1970; setting to 1970.");
- SystemClock.setCurrentTimeMillis(EARLIEST_SUPPORTED_TIME);
- }
-
- if (SamplingProfilerIntegration.isEnabled()) {
- SamplingProfilerIntegration.start();
- timer = new Timer();
- timer.schedule(new TimerTask() {
- @Override
- public void run() {
- SamplingProfilerIntegration.writeSnapshot("system_server", null);
- }
- }, SNAPSHOT_INTERVAL, SNAPSHOT_INTERVAL);
- }
-
- // Mmmmmm... more memory!
- dalvik.system.VMRuntime.getRuntime().clearGrowthLimit();
-
- // The system server has to run all of the time, so it needs to be
- // as efficient as possible with its memory usage.
- VMRuntime.getRuntime().setTargetHeapUtilization(0.8f);
-
- Environment.setUserRequired(true);
-
- System.loadLibrary("android_servers");
-
- Slog.i(TAG, "Entered the Android system server!");
-
- // Initialize native services.
- nativeInit();
-
- // This used to be its own separate thread, but now it is
- // just the loop we run on the main thread.
- ServerThread thr = new ServerThread();
- thr.initAndLoop();
- }
-}
diff --git a/services/java/com/android/server/display/HeadlessDisplayAdapter.java b/services/java/com/android/server/display/HeadlessDisplayAdapter.java
deleted file mode 100644
index 7a104d7e5a8a..000000000000
--- a/services/java/com/android/server/display/HeadlessDisplayAdapter.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.display;
-
-import android.content.Context;
-import android.os.Handler;
-import android.util.DisplayMetrics;
-import android.view.Display;
-
-/**
- * Provides a fake default display for headless systems.
- * <p>
- * Display adapters are guarded by the {@link DisplayManagerService.SyncRoot} lock.
- * </p>
- */
-final class HeadlessDisplayAdapter extends DisplayAdapter {
- private static final String TAG = "HeadlessDisplayAdapter";
-
- // Called with SyncRoot lock held.
- public HeadlessDisplayAdapter(DisplayManagerService.SyncRoot syncRoot,
- Context context, Handler handler, Listener listener) {
- super(syncRoot, context, handler, listener, TAG);
- }
-
- @Override
- public void registerLocked() {
- super.registerLocked();
- sendDisplayDeviceEventLocked(new HeadlessDisplayDevice(), DISPLAY_DEVICE_EVENT_ADDED);
- }
-
- private final class HeadlessDisplayDevice extends DisplayDevice {
- private DisplayDeviceInfo mInfo;
-
- public HeadlessDisplayDevice() {
- super(HeadlessDisplayAdapter.this, null);
- }
-
- @Override
- public DisplayDeviceInfo getDisplayDeviceInfoLocked() {
- if (mInfo == null) {
- mInfo = new DisplayDeviceInfo();
- mInfo.name = getContext().getResources().getString(
- com.android.internal.R.string.display_manager_built_in_display_name);
- mInfo.width = 640;
- mInfo.height = 480;
- mInfo.refreshRate = 60;
- mInfo.densityDpi = DisplayMetrics.DENSITY_DEFAULT;
- mInfo.xDpi = 160;
- mInfo.yDpi = 160;
- mInfo.flags = DisplayDeviceInfo.FLAG_DEFAULT_DISPLAY
- | DisplayDeviceInfo.FLAG_SECURE
- | DisplayDeviceInfo.FLAG_SUPPORTS_PROTECTED_BUFFERS;
- mInfo.type = Display.TYPE_BUILT_IN;
- mInfo.touch = DisplayDeviceInfo.TOUCH_NONE;
- }
- return mInfo;
- }
- }
-}
diff --git a/services/java/com/android/server/dreams/DreamManagerService.java b/services/java/com/android/server/dreams/DreamManagerService.java
deleted file mode 100644
index b6e778170d17..000000000000
--- a/services/java/com/android/server/dreams/DreamManagerService.java
+++ /dev/null
@@ -1,425 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.dreams;
-
-import com.android.internal.util.DumpUtils;
-
-import android.app.ActivityManager;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.os.Binder;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.Looper;
-import android.os.PowerManager;
-import android.os.SystemClock;
-import android.os.UserHandle;
-import android.provider.Settings;
-import android.service.dreams.IDreamManager;
-import android.util.Slog;
-
-import java.io.FileDescriptor;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.List;
-
-import libcore.util.Objects;
-
-/**
- * Service api for managing dreams.
- *
- * @hide
- */
-public final class DreamManagerService extends IDreamManager.Stub {
- private static final boolean DEBUG = false;
- private static final String TAG = "DreamManagerService";
-
- private final Object mLock = new Object();
-
- private final Context mContext;
- private final DreamHandler mHandler;
- private final DreamController mController;
- private final PowerManager mPowerManager;
-
- private Binder mCurrentDreamToken;
- private ComponentName mCurrentDreamName;
- private int mCurrentDreamUserId;
- private boolean mCurrentDreamIsTest;
-
- public DreamManagerService(Context context, Handler mainHandler) {
- mContext = context;
- mHandler = new DreamHandler(mainHandler.getLooper());
- mController = new DreamController(context, mHandler, mControllerListener);
-
- mPowerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
- }
-
- public void systemRunning() {
- mContext.registerReceiver(new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- synchronized (mLock) {
- stopDreamLocked();
- }
- }
- }, new IntentFilter(Intent.ACTION_USER_SWITCHED), null, mHandler);
- }
-
- @Override
- protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- if (mContext.checkCallingOrSelfPermission("android.permission.DUMP")
- != PackageManager.PERMISSION_GRANTED) {
- pw.println("Permission Denial: can't dump DreamManager from pid="
- + Binder.getCallingPid()
- + ", uid=" + Binder.getCallingUid());
- return;
- }
-
- pw.println("DREAM MANAGER (dumpsys dreams)");
- pw.println();
-
- pw.println("mCurrentDreamToken=" + mCurrentDreamToken);
- pw.println("mCurrentDreamName=" + mCurrentDreamName);
- pw.println("mCurrentDreamUserId=" + mCurrentDreamUserId);
- pw.println("mCurrentDreamIsTest=" + mCurrentDreamIsTest);
- pw.println();
-
- DumpUtils.dumpAsync(mHandler, new DumpUtils.Dump() {
- @Override
- public void dump(PrintWriter pw) {
- mController.dump(pw);
- }
- }, pw, 200);
- }
-
- @Override // Binder call
- public ComponentName[] getDreamComponents() {
- checkPermission(android.Manifest.permission.READ_DREAM_STATE);
-
- final int userId = UserHandle.getCallingUserId();
- final long ident = Binder.clearCallingIdentity();
- try {
- return getDreamComponentsForUser(userId);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
- @Override // Binder call
- public void setDreamComponents(ComponentName[] componentNames) {
- checkPermission(android.Manifest.permission.WRITE_DREAM_STATE);
-
- final int userId = UserHandle.getCallingUserId();
- final long ident = Binder.clearCallingIdentity();
- try {
- Settings.Secure.putStringForUser(mContext.getContentResolver(),
- Settings.Secure.SCREENSAVER_COMPONENTS,
- componentsToString(componentNames),
- userId);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
- @Override // Binder call
- public ComponentName getDefaultDreamComponent() {
- checkPermission(android.Manifest.permission.READ_DREAM_STATE);
-
- final int userId = UserHandle.getCallingUserId();
- final long ident = Binder.clearCallingIdentity();
- try {
- String name = Settings.Secure.getStringForUser(mContext.getContentResolver(),
- Settings.Secure.SCREENSAVER_DEFAULT_COMPONENT,
- userId);
- return name == null ? null : ComponentName.unflattenFromString(name);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
- @Override // Binder call
- public boolean isDreaming() {
- checkPermission(android.Manifest.permission.READ_DREAM_STATE);
-
- synchronized (mLock) {
- return mCurrentDreamToken != null && !mCurrentDreamIsTest;
- }
- }
-
- @Override // Binder call
- public void dream() {
- checkPermission(android.Manifest.permission.WRITE_DREAM_STATE);
-
- final long ident = Binder.clearCallingIdentity();
- try {
- // Ask the power manager to nap. It will eventually call back into
- // startDream() if/when it is appropriate to start dreaming.
- // Because napping could cause the screen to turn off immediately if the dream
- // cannot be started, we keep one eye open and gently poke user activity.
- long time = SystemClock.uptimeMillis();
- mPowerManager.userActivity(time, true /*noChangeLights*/);
- mPowerManager.nap(time);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
- @Override // Binder call
- public void testDream(ComponentName dream) {
- checkPermission(android.Manifest.permission.WRITE_DREAM_STATE);
-
- if (dream == null) {
- throw new IllegalArgumentException("dream must not be null");
- }
-
- final int callingUserId = UserHandle.getCallingUserId();
- final int currentUserId = ActivityManager.getCurrentUser();
- if (callingUserId != currentUserId) {
- // This check is inherently prone to races but at least it's something.
- Slog.w(TAG, "Aborted attempt to start a test dream while a different "
- + " user is active: callingUserId=" + callingUserId
- + ", currentUserId=" + currentUserId);
- return;
- }
- final long ident = Binder.clearCallingIdentity();
- try {
- synchronized (mLock) {
- startDreamLocked(dream, true /*isTest*/, callingUserId);
- }
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
- @Override // Binder call
- public void awaken() {
- checkPermission(android.Manifest.permission.WRITE_DREAM_STATE);
-
- final long ident = Binder.clearCallingIdentity();
- try {
- // Treat an explicit request to awaken as user activity so that the
- // device doesn't immediately go to sleep if the timeout expired,
- // for example when being undocked.
- long time = SystemClock.uptimeMillis();
- mPowerManager.userActivity(time, false /*noChangeLights*/);
- stopDream();
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
- @Override // Binder call
- public void finishSelf(IBinder token) {
- // Requires no permission, called by Dream from an arbitrary process.
- if (token == null) {
- throw new IllegalArgumentException("token must not be null");
- }
-
- final long ident = Binder.clearCallingIdentity();
- try {
- if (DEBUG) {
- Slog.d(TAG, "Dream finished: " + token);
- }
-
- // Note that a dream finishing and self-terminating is not
- // itself considered user activity. If the dream is ending because
- // the user interacted with the device then user activity will already
- // have been poked so the device will stay awake a bit longer.
- // If the dream is ending on its own for other reasons and no wake
- // locks are held and the user activity timeout has expired then the
- // device may simply go to sleep.
- synchronized (mLock) {
- if (mCurrentDreamToken == token) {
- stopDreamLocked();
- }
- }
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
-
- /**
- * Called by the power manager to start a dream.
- */
- public void startDream() {
- int userId = ActivityManager.getCurrentUser();
- ComponentName dream = chooseDreamForUser(userId);
- if (dream != null) {
- synchronized (mLock) {
- startDreamLocked(dream, false /*isTest*/, userId);
- }
- }
- }
-
- /**
- * Called by the power manager to stop a dream.
- */
- public void stopDream() {
- synchronized (mLock) {
- stopDreamLocked();
- }
- }
-
- private ComponentName chooseDreamForUser(int userId) {
- ComponentName[] dreams = getDreamComponentsForUser(userId);
- return dreams != null && dreams.length != 0 ? dreams[0] : null;
- }
-
- private ComponentName[] getDreamComponentsForUser(int userId) {
- String names = Settings.Secure.getStringForUser(mContext.getContentResolver(),
- Settings.Secure.SCREENSAVER_COMPONENTS,
- userId);
- ComponentName[] components = componentsFromString(names);
-
- // first, ensure components point to valid services
- List<ComponentName> validComponents = new ArrayList<ComponentName>();
- if (components != null) {
- for (ComponentName component : components) {
- if (serviceExists(component)) {
- validComponents.add(component);
- } else {
- Slog.w(TAG, "Dream " + component + " does not exist");
- }
- }
- }
-
- // fallback to the default dream component if necessary
- if (validComponents.isEmpty()) {
- ComponentName defaultDream = getDefaultDreamComponent();
- if (defaultDream != null) {
- Slog.w(TAG, "Falling back to default dream " + defaultDream);
- validComponents.add(defaultDream);
- }
- }
- return validComponents.toArray(new ComponentName[validComponents.size()]);
- }
-
- private boolean serviceExists(ComponentName name) {
- try {
- return name != null && mContext.getPackageManager().getServiceInfo(name, 0) != null;
- } catch (NameNotFoundException e) {
- return false;
- }
- }
-
- private void startDreamLocked(final ComponentName name,
- final boolean isTest, final int userId) {
- if (Objects.equal(mCurrentDreamName, name)
- && mCurrentDreamIsTest == isTest
- && mCurrentDreamUserId == userId) {
- return;
- }
-
- stopDreamLocked();
-
- if (DEBUG) Slog.i(TAG, "Entering dreamland.");
-
- final Binder newToken = new Binder();
- mCurrentDreamToken = newToken;
- mCurrentDreamName = name;
- mCurrentDreamIsTest = isTest;
- mCurrentDreamUserId = userId;
-
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- mController.startDream(newToken, name, isTest, userId);
- }
- });
- }
-
- private void stopDreamLocked() {
- if (mCurrentDreamToken != null) {
- if (DEBUG) Slog.i(TAG, "Leaving dreamland.");
-
- cleanupDreamLocked();
-
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- mController.stopDream();
- }
- });
- }
- }
-
- private void cleanupDreamLocked() {
- mCurrentDreamToken = null;
- mCurrentDreamName = null;
- mCurrentDreamIsTest = false;
- mCurrentDreamUserId = 0;
- }
-
- private void checkPermission(String permission) {
- if (mContext.checkCallingOrSelfPermission(permission)
- != PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException("Access denied to process: " + Binder.getCallingPid()
- + ", must have permission " + permission);
- }
- }
-
- private static String componentsToString(ComponentName[] componentNames) {
- StringBuilder names = new StringBuilder();
- if (componentNames != null) {
- for (ComponentName componentName : componentNames) {
- if (names.length() > 0) {
- names.append(',');
- }
- names.append(componentName.flattenToString());
- }
- }
- return names.toString();
- }
-
- private static ComponentName[] componentsFromString(String names) {
- if (names == null) {
- return null;
- }
- String[] namesArray = names.split(",");
- ComponentName[] componentNames = new ComponentName[namesArray.length];
- for (int i = 0; i < namesArray.length; i++) {
- componentNames[i] = ComponentName.unflattenFromString(namesArray[i]);
- }
- return componentNames;
- }
-
- private final DreamController.Listener mControllerListener = new DreamController.Listener() {
- @Override
- public void onDreamStopped(Binder token) {
- synchronized (mLock) {
- if (mCurrentDreamToken == token) {
- cleanupDreamLocked();
- }
- }
- }
- };
-
- /**
- * Handler for asynchronous operations performed by the dream manager.
- * Ensures operations to {@link DreamController} are single-threaded.
- */
- private final class DreamHandler extends Handler {
- public DreamHandler(Looper looper) {
- super(looper, null, true /*async*/);
- }
- }
-}
diff --git a/services/java/com/android/server/print/PrintManagerService.java b/services/java/com/android/server/print/PrintManagerService.java
deleted file mode 100644
index 98acc27741fa..000000000000
--- a/services/java/com/android/server/print/PrintManagerService.java
+++ /dev/null
@@ -1,656 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.print;
-
-import android.Manifest;
-import android.app.Notification;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.content.pm.ServiceInfo;
-import android.database.ContentObserver;
-import android.net.Uri;
-import android.os.Binder;
-import android.os.Bundle;
-import android.os.Process;
-import android.os.RemoteException;
-import android.os.UserHandle;
-import android.print.IPrintDocumentAdapter;
-import android.print.IPrintJobStateChangeListener;
-import android.print.IPrintManager;
-import android.print.IPrinterDiscoveryObserver;
-import android.print.PrintAttributes;
-import android.print.PrintJobId;
-import android.print.PrintJobInfo;
-import android.print.PrinterId;
-import android.printservice.PrintServiceInfo;
-import android.provider.Settings;
-import android.text.TextUtils;
-import android.util.SparseArray;
-
-import com.android.internal.R;
-import com.android.internal.content.PackageMonitor;
-import com.android.internal.os.BackgroundThread;
-
-import java.io.FileDescriptor;
-import java.io.PrintWriter;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-public final class PrintManagerService extends IPrintManager.Stub {
-
- private static final char COMPONENT_NAME_SEPARATOR = ':';
-
- private static final String EXTRA_PRINT_SERVICE_COMPONENT_NAME =
- "EXTRA_PRINT_SERVICE_COMPONENT_NAME";
-
- private final Object mLock = new Object();
-
- private final Context mContext;
-
- private final SparseArray<UserState> mUserStates = new SparseArray<UserState>();
-
- private int mCurrentUserId = UserHandle.USER_OWNER;
-
- public PrintManagerService(Context context) {
- mContext = context;
- registerContentObservers();
- registerBoradcastReceivers();
- }
-
- public void systemRuning() {
- BackgroundThread.getHandler().post(new Runnable() {
- @Override
- public void run() {
- final UserState userState;
- synchronized (mLock) {
- userState = getCurrentUserStateLocked();
- userState.updateIfNeededLocked();
- }
- // This is the first time we switch to this user after boot, so
- // now is the time to remove obsolete print jobs since they
- // are from the last boot and no application would query them.
- userState.removeObsoletePrintJobs();
- }
- });
- }
-
- @Override
- public Bundle print(String printJobName, IPrintDocumentAdapter adapter,
- PrintAttributes attributes, String packageName, int appId, int userId) {
- final int resolvedAppId = resolveCallingAppEnforcingPermissions(appId);
- final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
- String resolvedPackageName = resolveCallingPackageNameEnforcingSecurity(packageName);
- final UserState userState;
- synchronized (mLock) {
- userState = getOrCreateUserStateLocked(resolvedUserId);
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- return userState.print(printJobName, adapter, attributes,
- resolvedPackageName, resolvedAppId);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public List<PrintJobInfo> getPrintJobInfos(int appId, int userId) {
- final int resolvedAppId = resolveCallingAppEnforcingPermissions(appId);
- final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
- final UserState userState;
- synchronized (mLock) {
- userState = getOrCreateUserStateLocked(resolvedUserId);
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- return userState.getPrintJobInfos(resolvedAppId);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public PrintJobInfo getPrintJobInfo(PrintJobId printJobId, int appId, int userId) {
- final int resolvedAppId = resolveCallingAppEnforcingPermissions(appId);
- final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
- final UserState userState;
- synchronized (mLock) {
- userState = getOrCreateUserStateLocked(resolvedUserId);
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- return userState.getPrintJobInfo(printJobId, resolvedAppId);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public void cancelPrintJob(PrintJobId printJobId, int appId, int userId) {
- final int resolvedAppId = resolveCallingAppEnforcingPermissions(appId);
- final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
- final UserState userState;
- synchronized (mLock) {
- userState = getOrCreateUserStateLocked(resolvedUserId);
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- userState.cancelPrintJob(printJobId, resolvedAppId);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public void restartPrintJob(PrintJobId printJobId, int appId, int userId) {
- final int resolvedAppId = resolveCallingAppEnforcingPermissions(appId);
- final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
- final UserState userState;
- synchronized (mLock) {
- userState = getOrCreateUserStateLocked(resolvedUserId);
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- userState.restartPrintJob(printJobId, resolvedAppId);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public List<PrintServiceInfo> getEnabledPrintServices(int userId) {
- final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
- final UserState userState;
- synchronized (mLock) {
- userState = getOrCreateUserStateLocked(resolvedUserId);
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- return userState.getEnabledPrintServices();
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public List<PrintServiceInfo> getInstalledPrintServices(int userId) {
- final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
- final UserState userState;
- synchronized (mLock) {
- userState = getOrCreateUserStateLocked(resolvedUserId);
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- return userState.getInstalledPrintServices();
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public void createPrinterDiscoverySession(IPrinterDiscoveryObserver observer,
- int userId) {
- final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
- final UserState userState;
- synchronized (mLock) {
- userState = getOrCreateUserStateLocked(resolvedUserId);
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- userState.createPrinterDiscoverySession(observer);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public void destroyPrinterDiscoverySession(IPrinterDiscoveryObserver observer,
- int userId) {
- final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
- final UserState userState;
- synchronized (mLock) {
- userState = getOrCreateUserStateLocked(resolvedUserId);
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- userState.destroyPrinterDiscoverySession(observer);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public void startPrinterDiscovery(IPrinterDiscoveryObserver observer,
- List<PrinterId> priorityList, int userId) {
- final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
- final UserState userState;
- synchronized (mLock) {
- userState = getOrCreateUserStateLocked(resolvedUserId);
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- userState.startPrinterDiscovery(observer, priorityList);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public void stopPrinterDiscovery(IPrinterDiscoveryObserver observer, int userId) {
- final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
- final UserState userState;
- synchronized (mLock) {
- userState = getOrCreateUserStateLocked(resolvedUserId);
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- userState.stopPrinterDiscovery(observer);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public void validatePrinters(List<PrinterId> printerIds, int userId) {
- final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
- final UserState userState;
- synchronized (mLock) {
- userState = getOrCreateUserStateLocked(resolvedUserId);
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- userState.validatePrinters(printerIds);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public void startPrinterStateTracking(PrinterId printerId, int userId) {
- final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
- final UserState userState;
- synchronized (mLock) {
- userState = getOrCreateUserStateLocked(resolvedUserId);
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- userState.startPrinterStateTracking(printerId);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public void stopPrinterStateTracking(PrinterId printerId, int userId) {
- final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
- final UserState userState;
- synchronized (mLock) {
- userState = getOrCreateUserStateLocked(resolvedUserId);
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- userState.stopPrinterStateTracking(printerId);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public void addPrintJobStateChangeListener(IPrintJobStateChangeListener listener,
- int appId, int userId) throws RemoteException {
- final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
- final int resolvedAppId = resolveCallingAppEnforcingPermissions(appId);
- final UserState userState;
- synchronized (mLock) {
- userState = getOrCreateUserStateLocked(resolvedUserId);
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- userState.addPrintJobStateChangeListener(listener, resolvedAppId);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public void removePrintJobStateChangeListener(IPrintJobStateChangeListener listener,
- int userId) {
- final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
- final UserState userState;
- synchronized (mLock) {
- userState = getOrCreateUserStateLocked(resolvedUserId);
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- userState.removePrintJobStateChangeListener(listener);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- if (mContext.checkCallingOrSelfPermission(Manifest.permission.DUMP)
- != PackageManager.PERMISSION_GRANTED) {
- pw.println("Permission Denial: can't dump PrintManager from from pid="
- + Binder.getCallingPid()
- + ", uid=" + Binder.getCallingUid());
- return;
- }
-
- synchronized (mLock) {
- final long identity = Binder.clearCallingIdentity();
- try {
- pw.println("PRINT MANAGER STATE (dumpsys print)");
- final int userStateCount = mUserStates.size();
- for (int i = 0; i < userStateCount; i++) {
- UserState userState = mUserStates.valueAt(i);
- userState.dump(fd, pw, "");
- pw.println();
- }
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
- }
-
- private void registerContentObservers() {
- final Uri enabledPrintServicesUri = Settings.Secure.getUriFor(
- Settings.Secure.ENABLED_PRINT_SERVICES);
-
- ContentObserver observer = new ContentObserver(BackgroundThread.getHandler()) {
- @Override
- public void onChange(boolean selfChange, Uri uri) {
- if (enabledPrintServicesUri.equals(uri)) {
- synchronized (mLock) {
- UserState userState = getCurrentUserStateLocked();
- userState.updateIfNeededLocked();
- }
- }
- }
- };
-
- mContext.getContentResolver().registerContentObserver(enabledPrintServicesUri,
- false, observer, UserHandle.USER_ALL);
- }
-
- private void registerBoradcastReceivers() {
- PackageMonitor monitor = new PackageMonitor() {
- @Override
- public boolean onPackageChanged(String packageName, int uid, String[] components) {
- synchronized (mLock) {
- UserState userState = getOrCreateUserStateLocked(getChangingUserId());
- Iterator<ComponentName> iterator = userState.getEnabledServices().iterator();
- while (iterator.hasNext()) {
- ComponentName componentName = iterator.next();
- if (packageName.equals(componentName.getPackageName())) {
- userState.updateIfNeededLocked();
- return true;
- }
- }
- }
- return false;
- }
-
- @Override
- public void onPackageRemoved(String packageName, int uid) {
- synchronized (mLock) {
- UserState userState = getOrCreateUserStateLocked(getChangingUserId());
- Iterator<ComponentName> iterator = userState.getEnabledServices().iterator();
- while (iterator.hasNext()) {
- ComponentName componentName = iterator.next();
- if (packageName.equals(componentName.getPackageName())) {
- iterator.remove();
- persistComponentNamesToSettingLocked(
- Settings.Secure.ENABLED_PRINT_SERVICES,
- userState.getEnabledServices(), getChangingUserId());
- userState.updateIfNeededLocked();
- return;
- }
- }
- }
- }
-
- @Override
- public boolean onHandleForceStop(Intent intent, String[] stoppedPackages,
- int uid, boolean doit) {
- synchronized (mLock) {
- UserState userState = getOrCreateUserStateLocked(getChangingUserId());
- boolean stoppedSomePackages = false;
- Iterator<ComponentName> iterator = userState.getEnabledServices().iterator();
- while (iterator.hasNext()) {
- ComponentName componentName = iterator.next();
- String componentPackage = componentName.getPackageName();
- for (String stoppedPackage : stoppedPackages) {
- if (componentPackage.equals(stoppedPackage)) {
- if (!doit) {
- return true;
- }
- stoppedSomePackages = true;
- break;
- }
- }
- }
- if (stoppedSomePackages) {
- userState.updateIfNeededLocked();
- }
- return false;
- }
- }
-
- @Override
- public void onPackageAdded(String packageName, int uid) {
- Intent intent = new Intent(android.printservice.PrintService.SERVICE_INTERFACE);
- intent.setPackage(packageName);
-
- List<ResolveInfo> installedServices = mContext.getPackageManager()
- .queryIntentServicesAsUser(intent, PackageManager.GET_SERVICES,
- getChangingUserId());
-
- if (installedServices == null) {
- return;
- }
-
- final int installedServiceCount = installedServices.size();
- for (int i = 0; i < installedServiceCount; i++) {
- ServiceInfo serviceInfo = installedServices.get(i).serviceInfo;
- ComponentName component = new ComponentName(serviceInfo.packageName,
- serviceInfo.name);
- String label = serviceInfo.loadLabel(mContext.getPackageManager()).toString();
- showEnableInstalledPrintServiceNotification(component, label,
- getChangingUserId());
- }
- }
-
- private void persistComponentNamesToSettingLocked(String settingName,
- Set<ComponentName> componentNames, int userId) {
- StringBuilder builder = new StringBuilder();
- for (ComponentName componentName : componentNames) {
- if (builder.length() > 0) {
- builder.append(COMPONENT_NAME_SEPARATOR);
- }
- builder.append(componentName.flattenToShortString());
- }
- Settings.Secure.putStringForUser(mContext.getContentResolver(),
- settingName, builder.toString(), userId);
- }
- };
-
- // package changes
- monitor.register(mContext, BackgroundThread.getHandler().getLooper(),
- UserHandle.ALL, true);
-
- // user changes
- IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction(Intent.ACTION_USER_SWITCHED);
- intentFilter.addAction(Intent.ACTION_USER_REMOVED);
-
- mContext.registerReceiverAsUser(new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (Intent.ACTION_USER_SWITCHED.equals(action)) {
- switchUser(intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0));
- } else if (Intent.ACTION_USER_REMOVED.equals(action)) {
- removeUser(intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0));
- }
- }
- }, UserHandle.ALL, intentFilter, null, BackgroundThread.getHandler());
- }
-
- private UserState getCurrentUserStateLocked() {
- return getOrCreateUserStateLocked(mCurrentUserId);
- }
-
- private UserState getOrCreateUserStateLocked(int userId) {
- UserState userState = mUserStates.get(userId);
- if (userState == null) {
- userState = new UserState(mContext, userId, mLock);
- mUserStates.put(userId, userState);
- }
- return userState;
- }
-
- private void switchUser(int newUserId) {
- UserState userState;
- synchronized (mLock) {
- if (newUserId == mCurrentUserId) {
- return;
- }
- mCurrentUserId = newUserId;
- userState = mUserStates.get(mCurrentUserId);
- if (userState == null) {
- userState = getCurrentUserStateLocked();
- userState.updateIfNeededLocked();
- } else {
- userState.updateIfNeededLocked();
- }
- }
- // This is the first time we switch to this user after boot, so
- // now is the time to remove obsolete print jobs since they
- // are from the last boot and no application would query them.
- userState.removeObsoletePrintJobs();
- }
-
- private void removeUser(int removedUserId) {
- synchronized (mLock) {
- UserState userState = mUserStates.get(removedUserId);
- if (userState != null) {
- userState.destroyLocked();
- mUserStates.remove(removedUserId);
- }
- }
- }
-
- private int resolveCallingAppEnforcingPermissions(int appId) {
- final int callingUid = Binder.getCallingUid();
- if (callingUid == 0 || callingUid == Process.SYSTEM_UID
- || callingUid == Process.SHELL_UID) {
- return appId;
- }
- final int callingAppId = UserHandle.getAppId(callingUid);
- if (appId == callingAppId) {
- return appId;
- }
- if (mContext.checkCallingPermission(
- "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS")
- != PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException("Call from app " + callingAppId + " as app "
- + appId + " without com.android.printspooler.permission"
- + ".ACCESS_ALL_PRINT_JOBS");
- }
- return appId;
- }
-
- private int resolveCallingUserEnforcingPermissions(int userId) {
- final int callingUid = Binder.getCallingUid();
- if (callingUid == 0 || callingUid == Process.SYSTEM_UID
- || callingUid == Process.SHELL_UID) {
- return userId;
- }
- final int callingUserId = UserHandle.getUserId(callingUid);
- if (callingUserId == userId) {
- return userId;
- }
- if (mContext.checkCallingPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL)
- != PackageManager.PERMISSION_GRANTED
- || mContext.checkCallingPermission(Manifest.permission.INTERACT_ACROSS_USERS)
- != PackageManager.PERMISSION_GRANTED) {
- if (userId == UserHandle.USER_CURRENT_OR_SELF) {
- return callingUserId;
- }
- throw new SecurityException("Call from user " + callingUserId + " as user "
- + userId + " without permission INTERACT_ACROSS_USERS or "
- + "INTERACT_ACROSS_USERS_FULL not allowed.");
- }
- if (userId == UserHandle.USER_CURRENT || userId == UserHandle.USER_CURRENT_OR_SELF) {
- return mCurrentUserId;
- }
- throw new IllegalArgumentException("Calling user can be changed to only "
- + "UserHandle.USER_CURRENT or UserHandle.USER_CURRENT_OR_SELF.");
- }
-
- private String resolveCallingPackageNameEnforcingSecurity(String packageName) {
- if (TextUtils.isEmpty(packageName)) {
- return null;
- }
- String[] packages = mContext.getPackageManager().getPackagesForUid(
- Binder.getCallingUid());
- final int packageCount = packages.length;
- for (int i = 0; i < packageCount; i++) {
- if (packageName.equals(packages[i])) {
- return packageName;
- }
- }
- return null;
- }
-
- private void showEnableInstalledPrintServiceNotification(ComponentName component,
- String label, int userId) {
- UserHandle userHandle = new UserHandle(userId);
-
- Intent intent = new Intent(Settings.ACTION_PRINT_SETTINGS);
- intent.putExtra(EXTRA_PRINT_SERVICE_COMPONENT_NAME, component.flattenToString());
-
- PendingIntent pendingIntent = PendingIntent.getActivityAsUser(mContext, 0, intent,
- PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_CANCEL_CURRENT, null, userHandle);
-
- Notification.Builder builder = new Notification.Builder(mContext)
- .setSmallIcon(R.drawable.ic_print)
- .setContentTitle(mContext.getString(R.string.print_service_installed_title, label))
- .setContentText(mContext.getString(R.string.print_service_installed_message))
- .setContentIntent(pendingIntent)
- .setWhen(System.currentTimeMillis())
- .setAutoCancel(true)
- .setShowWhen(true);
-
- NotificationManager notificationManager = (NotificationManager) mContext
- .getSystemService(Context.NOTIFICATION_SERVICE);
-
- String notificationTag = getClass().getName() + ":" + component.flattenToString();
- notificationManager.notifyAsUser(notificationTag, 0, builder.build(),
- userHandle);
- }
-}
diff --git a/services/java/com/android/server/wm/DisplayContent.java b/services/java/com/android/server/wm/DisplayContent.java
deleted file mode 100644
index d358b4c6ed67..000000000000
--- a/services/java/com/android/server/wm/DisplayContent.java
+++ /dev/null
@@ -1,523 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.wm;
-
-import static com.android.server.am.ActivityStackSupervisor.HOME_STACK_ID;
-import static com.android.server.wm.WindowManagerService.DEBUG_STACK;
-import static com.android.server.wm.WindowManagerService.DEBUG_VISIBILITY;
-import static com.android.server.wm.WindowManagerService.TAG;
-
-import android.app.ActivityManager.StackBoxInfo;
-import android.graphics.Rect;
-import android.graphics.Region;
-import android.os.Debug;
-import android.util.EventLog;
-import android.util.Slog;
-import android.view.Display;
-import android.view.DisplayInfo;
-import com.android.server.EventLogTags;
-
-import java.io.PrintWriter;
-import java.util.ArrayList;
-
-class DisplayContentList extends ArrayList<DisplayContent> {
-}
-
-/**
- * Utility class for keeping track of the WindowStates and other pertinent contents of a
- * particular Display.
- *
- * IMPORTANT: No method from this class should ever be used without holding
- * WindowManagerService.mWindowMap.
- */
-class DisplayContent {
-
- /** Unique identifier of this stack. */
- private final int mDisplayId;
-
- /** Z-ordered (bottom-most first) list of all Window objects. Assigned to an element
- * from mDisplayWindows; */
- private WindowList mWindows = new WindowList();
-
- // This protects the following display size properties, so that
- // getDisplaySize() doesn't need to acquire the global lock. This is
- // needed because the window manager sometimes needs to use ActivityThread
- // while it has its global state locked (for example to load animation
- // resources), but the ActivityThread also needs get the current display
- // size sometimes when it has its package lock held.
- //
- // These will only be modified with both mWindowMap and mDisplaySizeLock
- // held (in that order) so the window manager doesn't need to acquire this
- // lock when needing these values in its normal operation.
- final Object mDisplaySizeLock = new Object();
- int mInitialDisplayWidth = 0;
- int mInitialDisplayHeight = 0;
- int mInitialDisplayDensity = 0;
- int mBaseDisplayWidth = 0;
- int mBaseDisplayHeight = 0;
- int mBaseDisplayDensity = 0;
- private final DisplayInfo mDisplayInfo = new DisplayInfo();
- private final Display mDisplay;
-
- Rect mBaseDisplayRect = new Rect();
-
- // Accessed directly by all users.
- boolean layoutNeeded;
- int pendingLayoutChanges;
- final boolean isDefaultDisplay;
-
- /**
- * Window tokens that are in the process of exiting, but still
- * on screen for animations.
- */
- final ArrayList<WindowToken> mExitingTokens = new ArrayList<WindowToken>();
-
- /**
- * Application tokens that are in the process of exiting, but still
- * on screen for animations.
- */
- final AppTokenList mExitingAppTokens = new AppTokenList();
-
- /** Array containing the home StackBox and possibly one more which would contain apps. Array
- * is stored in display order with the current bottom stack at 0. */
- private ArrayList<StackBox> mStackBoxes = new ArrayList<StackBox>();
-
- /** True when the home StackBox is at the top of mStackBoxes, false otherwise. */
- private TaskStack mHomeStack = null;
-
- /** Detect user tapping outside of current focused stack bounds .*/
- StackTapPointerEventListener mTapDetector;
-
- /** Detect user tapping outside of current focused stack bounds .*/
- Region mTouchExcludeRegion = new Region();
-
- /** Save allocating when retrieving tasks */
- private ArrayList<Task> mTaskHistory = new ArrayList<Task>();
-
- /** Save allocating when calculating rects */
- Rect mTmpRect = new Rect();
-
- final WindowManagerService mService;
-
- /**
- * @param display May not be null.
- * @param service TODO(cmautner):
- */
- DisplayContent(Display display, WindowManagerService service) {
- mDisplay = display;
- mDisplayId = display.getDisplayId();
- display.getDisplayInfo(mDisplayInfo);
- isDefaultDisplay = mDisplayId == Display.DEFAULT_DISPLAY;
- mService = service;
-
- StackBox newBox = new StackBox(service, this, null);
- mStackBoxes.add(newBox);
- TaskStack newStack = new TaskStack(service, HOME_STACK_ID, this);
- newStack.mStackBox = newBox;
- newBox.mStack = newStack;
- mHomeStack = newStack;
- }
-
- int getDisplayId() {
- return mDisplayId;
- }
-
- WindowList getWindowList() {
- return mWindows;
- }
-
- Display getDisplay() {
- return mDisplay;
- }
-
- DisplayInfo getDisplayInfo() {
- return mDisplayInfo;
- }
-
- /**
- * Returns true if the specified UID has access to this display.
- */
- public boolean hasAccess(int uid) {
- return mDisplay.hasAccess(uid);
- }
-
- boolean homeOnTop() {
- return mStackBoxes.get(0).mStack != mHomeStack;
- }
-
- public boolean isPrivate() {
- return (mDisplay.getFlags() & Display.FLAG_PRIVATE) != 0;
- }
-
- /**
- * Retrieve the tasks on this display in stack order from the bottommost TaskStack up.
- * @return All the Tasks, in order, on this display.
- */
- ArrayList<Task> getTasks() {
- return mTaskHistory;
- }
-
- void addTask(Task task, boolean toTop) {
- mTaskHistory.remove(task);
-
- final int userId = task.mUserId;
- int taskNdx;
- final int numTasks = mTaskHistory.size();
- if (toTop) {
- for (taskNdx = numTasks - 1; taskNdx >= 0; --taskNdx) {
- if (mTaskHistory.get(taskNdx).mUserId == userId) {
- break;
- }
- }
- ++taskNdx;
- } else {
- for (taskNdx = 0; taskNdx < numTasks; ++taskNdx) {
- if (mTaskHistory.get(taskNdx).mUserId == userId) {
- break;
- }
- }
- }
-
- mTaskHistory.add(taskNdx, task);
- EventLog.writeEvent(EventLogTags.WM_TASK_MOVED, task.taskId, toTop ? 1 : 0, taskNdx);
- }
-
- void removeTask(Task task) {
- mTaskHistory.remove(task);
- }
-
- TaskStack getHomeStack() {
- return mHomeStack;
- }
-
- void updateDisplayInfo() {
- mDisplay.getDisplayInfo(mDisplayInfo);
- }
-
- void getLogicalDisplayRect(Rect out) {
- updateDisplayInfo();
- // Uses same calculation as in LogicalDisplay#configureDisplayInTransactionLocked.
- int width = mDisplayInfo.logicalWidth;
- int left = (mBaseDisplayWidth - width) / 2;
- int height = mDisplayInfo.logicalHeight;
- int top = (mBaseDisplayHeight - height) / 2;
- out.set(left, top, left + width, top + height);
- }
-
- /** @return The number of tokens in all of the Tasks on this display. */
- int numTokens() {
- int count = 0;
- for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) {
- count += mTaskHistory.get(taskNdx).mAppTokens.size();
- }
- return count;
- }
-
- /** Refer to {@link WindowManagerService#createStack(int, int, int, float)} */
- TaskStack createStack(int stackId, int relativeStackBoxId, int position, float weight) {
- TaskStack newStack = null;
- if (DEBUG_STACK) Slog.d(TAG, "createStack: stackId=" + stackId + " relativeStackBoxId="
- + relativeStackBoxId + " position=" + position + " weight=" + weight);
- if (stackId == HOME_STACK_ID) {
- if (mStackBoxes.size() != 1) {
- throw new IllegalArgumentException("createStack: HOME_STACK_ID (0) not first.");
- }
- newStack = mHomeStack;
- } else {
- int stackBoxNdx;
- for (stackBoxNdx = mStackBoxes.size() - 1; stackBoxNdx >= 0; --stackBoxNdx) {
- final StackBox box = mStackBoxes.get(stackBoxNdx);
- if (position == StackBox.TASK_STACK_GOES_OVER
- || position == StackBox.TASK_STACK_GOES_UNDER) {
- // Position indicates a new box is added at top level only.
- if (box.contains(relativeStackBoxId)) {
- StackBox newBox = new StackBox(mService, this, null);
- newStack = new TaskStack(mService, stackId, this);
- newStack.mStackBox = newBox;
- newBox.mStack = newStack;
- final int offset = position == StackBox.TASK_STACK_GOES_OVER ? 1 : 0;
- if (DEBUG_STACK) Slog.d(TAG, "createStack: inserting stack at " +
- (stackBoxNdx + offset));
- mStackBoxes.add(stackBoxNdx + offset, newBox);
- break;
- }
- } else {
- // Remaining position values indicate a box must be split.
- newStack = box.split(stackId, relativeStackBoxId, position, weight);
- if (newStack != null) {
- break;
- }
- }
- }
- if (stackBoxNdx < 0) {
- throw new IllegalArgumentException("createStack: stackBoxId " + relativeStackBoxId
- + " not found.");
- }
- }
- if (newStack != null) {
- layoutNeeded = true;
- }
- EventLog.writeEvent(EventLogTags.WM_STACK_CREATED, stackId, relativeStackBoxId, position,
- (int)(weight * 100 + 0.5));
- return newStack;
- }
-
- /** Refer to {@link WindowManagerService#resizeStackBox(int, float)} */
- boolean resizeStack(int stackBoxId, float weight) {
- for (int stackBoxNdx = mStackBoxes.size() - 1; stackBoxNdx >= 0; --stackBoxNdx) {
- final StackBox box = mStackBoxes.get(stackBoxNdx);
- if (box.resize(stackBoxId, weight)) {
- layoutNeeded = true;
- return true;
- }
- }
- return false;
- }
-
- void addStackBox(StackBox box, boolean toTop) {
- if (mStackBoxes.size() >= 2) {
- throw new RuntimeException("addStackBox: Too many toplevel StackBoxes!");
- }
- mStackBoxes.add(toTop ? mStackBoxes.size() : 0, box);
- }
-
- void removeStackBox(StackBox box) {
- if (DEBUG_STACK) Slog.d(TAG, "removeStackBox: box=" + box);
- final TaskStack stack = box.mStack;
- if (stack != null && stack.mStackId == HOME_STACK_ID) {
- // Never delete the home stack, even if it is empty.
- if (DEBUG_STACK) Slog.d(TAG, "removeStackBox: Not deleting home stack.");
- return;
- }
- mStackBoxes.remove(box);
- }
-
- StackBoxInfo getStackBoxInfo(StackBox box) {
- StackBoxInfo info = new StackBoxInfo();
- info.stackBoxId = box.mStackBoxId;
- info.weight = box.mWeight;
- info.vertical = box.mVertical;
- info.bounds = new Rect(box.mBounds);
- if (box.mStack != null) {
- info.stackId = box.mStack.mStackId;
- // ActivityManagerService will fill in the StackInfo.
- } else {
- info.stackId = -1;
- info.children = new StackBoxInfo[2];
- info.children[0] = getStackBoxInfo(box.mFirst);
- info.children[1] = getStackBoxInfo(box.mSecond);
- }
- return info;
- }
-
- ArrayList<StackBoxInfo> getStackBoxInfos() {
- ArrayList<StackBoxInfo> list = new ArrayList<StackBoxInfo>();
- for (int stackBoxNdx = mStackBoxes.size() - 1; stackBoxNdx >= 0; --stackBoxNdx) {
- list.add(getStackBoxInfo(mStackBoxes.get(stackBoxNdx)));
- }
- return list;
- }
-
- /**
- * Move the home StackBox to the top or bottom of mStackBoxes. That is the only place
- * it is allowed to be. This is a nop if the home StackBox is already in the correct position.
- * @param toTop Move home to the top of mStackBoxes if true, to the bottom if false.
- * @return true if a change was made, false otherwise.
- */
- boolean moveHomeStackBox(boolean toTop) {
- if (DEBUG_STACK) Slog.d(TAG, "moveHomeStackBox: toTop=" + toTop + " Callers=" +
- Debug.getCallers(4));
- EventLog.writeEvent(EventLogTags.WM_HOME_STACK_MOVED, toTop ? 1 : 0);
- switch (mStackBoxes.size()) {
- case 0: throw new RuntimeException("moveHomeStackBox: No home StackBox!");
- case 1: return false; // Only the home StackBox exists.
- case 2:
- if (homeOnTop() ^ toTop) {
- mStackBoxes.add(mStackBoxes.remove(0));
- return true;
- }
- return false;
- default: throw new RuntimeException("moveHomeStackBox: Too many toplevel StackBoxes!");
- }
- }
-
- /**
- * Propagate the new bounds to all child stack boxes, applying weights as we move down.
- * @param contentRect The bounds to apply at the top level.
- */
- boolean setStackBoxSize(Rect contentRect) {
- boolean change = false;
- for (int stackBoxNdx = mStackBoxes.size() - 1; stackBoxNdx >= 0; --stackBoxNdx) {
- change |= mStackBoxes.get(stackBoxNdx).setStackBoxSizes(contentRect, true);
- }
- return change;
- }
-
- Rect getStackBounds(int stackId) {
- for (int stackBoxNdx = mStackBoxes.size() - 1; stackBoxNdx >= 0; --stackBoxNdx) {
- Rect bounds = mStackBoxes.get(stackBoxNdx).getStackBounds(stackId);
- if (bounds != null) {
- return bounds;
- }
- }
- return null;
- }
-
- int stackIdFromPoint(int x, int y) {
- StackBox topBox = mStackBoxes.get(mStackBoxes.size() - 1);
- return topBox.stackIdFromPoint(x, y);
- }
-
- void setTouchExcludeRegion(TaskStack focusedStack) {
- mTouchExcludeRegion.set(mBaseDisplayRect);
- WindowList windows = getWindowList();
- for (int i = windows.size() - 1; i >= 0; --i) {
- final WindowState win = windows.get(i);
- final TaskStack stack = win.getStack();
- if (win.isVisibleLw() && stack != null && stack != focusedStack) {
- mTmpRect.set(win.mVisibleFrame);
- mTmpRect.intersect(win.mVisibleInsets);
- mTouchExcludeRegion.op(mTmpRect, Region.Op.DIFFERENCE);
- }
- }
- }
-
- void switchUserStacks(int oldUserId, int newUserId) {
- final WindowList windows = getWindowList();
- for (int i = 0; i < windows.size(); i++) {
- final WindowState win = windows.get(i);
- if (win.isHiddenFromUserLocked()) {
- if (DEBUG_VISIBILITY) Slog.w(TAG, "user changing " + newUserId + " hiding "
- + win + ", attrs=" + win.mAttrs.type + ", belonging to "
- + win.mOwnerUid);
- win.hideLw(false);
- }
- }
-
- for (int stackBoxNdx = mStackBoxes.size() - 1; stackBoxNdx >= 0; --stackBoxNdx) {
- mStackBoxes.get(stackBoxNdx).switchUserStacks(newUserId);
- }
- }
-
- void resetAnimationBackgroundAnimator() {
- for (int stackBoxNdx = mStackBoxes.size() - 1; stackBoxNdx >= 0; --stackBoxNdx) {
- mStackBoxes.get(stackBoxNdx).resetAnimationBackgroundAnimator();
- }
- }
-
- boolean animateDimLayers() {
- boolean result = false;
- for (int stackBoxNdx = mStackBoxes.size() - 1; stackBoxNdx >= 0; --stackBoxNdx) {
- result |= mStackBoxes.get(stackBoxNdx).animateDimLayers();
- }
- return result;
- }
-
- void resetDimming() {
- for (int stackBoxNdx = mStackBoxes.size() - 1; stackBoxNdx >= 0; --stackBoxNdx) {
- mStackBoxes.get(stackBoxNdx).resetDimming();
- }
- }
-
- boolean isDimming() {
- boolean result = false;
- for (int stackBoxNdx = mStackBoxes.size() - 1; stackBoxNdx >= 0; --stackBoxNdx) {
- result |= mStackBoxes.get(stackBoxNdx).isDimming();
- }
- return result;
- }
-
- void stopDimmingIfNeeded() {
- for (int stackBoxNdx = mStackBoxes.size() - 1; stackBoxNdx >= 0; --stackBoxNdx) {
- mStackBoxes.get(stackBoxNdx).stopDimmingIfNeeded();
- }
- }
-
- void close() {
- for (int stackBoxNdx = mStackBoxes.size() - 1; stackBoxNdx >= 0; --stackBoxNdx) {
- mStackBoxes.get(stackBoxNdx).close();
- }
- }
-
- public void dump(String prefix, PrintWriter pw) {
- pw.print(prefix); pw.print("Display: mDisplayId="); pw.println(mDisplayId);
- final String subPrefix = " " + prefix;
- pw.print(subPrefix); pw.print("init="); pw.print(mInitialDisplayWidth); pw.print("x");
- pw.print(mInitialDisplayHeight); pw.print(" "); pw.print(mInitialDisplayDensity);
- pw.print("dpi");
- if (mInitialDisplayWidth != mBaseDisplayWidth
- || mInitialDisplayHeight != mBaseDisplayHeight
- || mInitialDisplayDensity != mBaseDisplayDensity) {
- pw.print(" base=");
- pw.print(mBaseDisplayWidth); pw.print("x"); pw.print(mBaseDisplayHeight);
- pw.print(" "); pw.print(mBaseDisplayDensity); pw.print("dpi");
- }
- pw.print(" cur=");
- pw.print(mDisplayInfo.logicalWidth);
- pw.print("x"); pw.print(mDisplayInfo.logicalHeight);
- pw.print(" app=");
- pw.print(mDisplayInfo.appWidth);
- pw.print("x"); pw.print(mDisplayInfo.appHeight);
- pw.print(" rng="); pw.print(mDisplayInfo.smallestNominalAppWidth);
- pw.print("x"); pw.print(mDisplayInfo.smallestNominalAppHeight);
- pw.print("-"); pw.print(mDisplayInfo.largestNominalAppWidth);
- pw.print("x"); pw.println(mDisplayInfo.largestNominalAppHeight);
- pw.print(subPrefix); pw.print("layoutNeeded="); pw.println(layoutNeeded);
- for (int boxNdx = 0; boxNdx < mStackBoxes.size(); ++boxNdx) {
- pw.print(prefix); pw.print("StackBox #"); pw.println(boxNdx);
- mStackBoxes.get(boxNdx).dump(prefix + " ", pw);
- }
- int ndx = numTokens();
- if (ndx > 0) {
- pw.println();
- pw.println(" Application tokens in Z order:");
- getTasks();
- for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) {
- AppTokenList tokens = mTaskHistory.get(taskNdx).mAppTokens;
- for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) {
- final AppWindowToken wtoken = tokens.get(tokenNdx);
- pw.print(" App #"); pw.print(ndx--);
- pw.print(' '); pw.print(wtoken); pw.println(":");
- wtoken.dump(pw, " ");
- }
- }
- }
- if (mExitingTokens.size() > 0) {
- pw.println();
- pw.println(" Exiting tokens:");
- for (int i=mExitingTokens.size()-1; i>=0; i--) {
- WindowToken token = mExitingTokens.get(i);
- pw.print(" Exiting #"); pw.print(i);
- pw.print(' '); pw.print(token);
- pw.println(':');
- token.dump(pw, " ");
- }
- }
- if (mExitingAppTokens.size() > 0) {
- pw.println();
- pw.println(" Exiting application tokens:");
- for (int i=mExitingAppTokens.size()-1; i>=0; i--) {
- WindowToken token = mExitingAppTokens.get(i);
- pw.print(" Exiting App #"); pw.print(i);
- pw.print(' '); pw.print(token);
- pw.println(':');
- token.dump(pw, " ");
- }
- }
- pw.println();
- }
-}
diff --git a/services/java/com/android/server/wm/StackBox.java b/services/java/com/android/server/wm/StackBox.java
deleted file mode 100644
index d351925015ee..000000000000
--- a/services/java/com/android/server/wm/StackBox.java
+++ /dev/null
@@ -1,414 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.wm;
-
-import android.graphics.Rect;
-import android.util.Slog;
-
-import static com.android.server.am.ActivityStackSupervisor.HOME_STACK_ID;
-import static com.android.server.wm.WindowManagerService.DEBUG_STACK;
-import static com.android.server.wm.WindowManagerService.TAG;
-
-import java.io.PrintWriter;
-
-public class StackBox {
- /** Used with {@link WindowManagerService#createStack}. Dependent on Configuration LTR/RTL. */
- public static final int TASK_STACK_GOES_BEFORE = 0;
- /** Used with {@link WindowManagerService#createStack}. Dependent on Configuration LTR/RTL. */
- public static final int TASK_STACK_GOES_AFTER = 1;
- /** Used with {@link WindowManagerService#createStack}. Horizontal to left of. */
- public static final int TASK_STACK_TO_LEFT_OF = 2;
- /** Used with {@link WindowManagerService#createStack}. Horizontal to right of. */
- public static final int TASK_STACK_TO_RIGHT_OF = 3;
- /** Used with {@link WindowManagerService#createStack}. Vertical: lower t/b Rect values. */
- public static final int TASK_STACK_GOES_ABOVE = 4;
- /** Used with {@link WindowManagerService#createStack}. Vertical: higher t/b Rect values. */
- public static final int TASK_STACK_GOES_BELOW = 5;
- /** Used with {@link WindowManagerService#createStack}. Put on a higher layer on display. */
- public static final int TASK_STACK_GOES_OVER = 6;
- /** Used with {@link WindowManagerService#createStack}. Put on a lower layer on display. */
- public static final int TASK_STACK_GOES_UNDER = 7;
-
- static int sCurrentBoxId = 0;
-
- /** Unique id for this box */
- final int mStackBoxId;
-
- /** The service */
- final WindowManagerService mService;
-
- /** The display this box sits in. */
- final DisplayContent mDisplayContent;
-
- /** Non-null indicates this is mFirst or mSecond of a parent StackBox. Null indicates this
- * is this entire size of mDisplayContent. */
- StackBox mParent;
-
- /** First child, this is null exactly when mStack is non-null. */
- StackBox mFirst;
-
- /** Second child, this is null exactly when mStack is non-null. */
- StackBox mSecond;
-
- /** Stack of Tasks, this is null exactly when mFirst and mSecond are non-null. */
- TaskStack mStack;
-
- /** Content limits relative to the DisplayContent this sits in. */
- Rect mBounds = new Rect();
-
- /** Relative orientation of mFirst and mSecond. */
- boolean mVertical;
-
- /** Fraction of mBounds to devote to mFirst, remainder goes to mSecond */
- float mWeight;
-
- /** Dirty flag. Something inside this or some descendant of this has changed. */
- boolean layoutNeeded;
-
- /** True if this StackBox sits below the Status Bar. */
- boolean mUnderStatusBar;
-
- /** Used to keep from reallocating a temporary Rect for propagating bounds to child boxes */
- Rect mTmpRect = new Rect();
-
- StackBox(WindowManagerService service, DisplayContent displayContent, StackBox parent) {
- synchronized (StackBox.class) {
- mStackBoxId = sCurrentBoxId++;
- }
-
- mService = service;
- mDisplayContent = displayContent;
- mParent = parent;
- }
-
- /** Propagate #layoutNeeded bottom up. */
- void makeDirty() {
- layoutNeeded = true;
- if (mParent != null) {
- mParent.makeDirty();
- }
- }
-
- /**
- * Determine if a particular StackBox is this one or a descendant of this one.
- * @param stackBoxId The StackBox being searched for.
- * @return true if the specified StackBox matches this or one of its descendants.
- */
- boolean contains(int stackBoxId) {
- return mStackBoxId == stackBoxId ||
- (mStack == null && (mFirst.contains(stackBoxId) || mSecond.contains(stackBoxId)));
- }
-
- /**
- * Return the stackId of the stack that intersects the passed point.
- * @param x coordinate of point.
- * @param y coordinate of point.
- * @return -1 if point is outside of mBounds, otherwise the stackId of the containing stack.
- */
- int stackIdFromPoint(int x, int y) {
- if (!mBounds.contains(x, y)) {
- return -1;
- }
- if (mStack != null) {
- return mStack.mStackId;
- }
- int stackId = mFirst.stackIdFromPoint(x, y);
- if (stackId >= 0) {
- return stackId;
- }
- return mSecond.stackIdFromPoint(x, y);
- }
-
- /** Determine if this StackBox is the first child or second child.
- * @return true if this is the first child.
- */
- boolean isFirstChild() {
- return mParent != null && mParent.mFirst == this;
- }
-
- /** Returns the bounds of the specified TaskStack if it is contained in this StackBox.
- * @param stackId the TaskStack to find the bounds of.
- * @return a new Rect with the bounds of stackId if it is within this StackBox, null otherwise.
- */
- Rect getStackBounds(int stackId) {
- if (mStack != null) {
- return mStack.mStackId == stackId ? new Rect(mBounds) : null;
- }
- Rect bounds = mFirst.getStackBounds(stackId);
- if (bounds != null) {
- return bounds;
- }
- return mSecond.getStackBounds(stackId);
- }
-
- /**
- * Create a new TaskStack relative to a specified one by splitting the StackBox containing
- * the specified TaskStack into two children. The size and position each of the new StackBoxes
- * is determined by the passed parameters.
- * @param stackId The id of the new TaskStack to create.
- * @param relativeStackBoxId The id of the StackBox to place the new TaskStack next to.
- * @param position One of the static TASK_STACK_GOES_xxx positions defined in this class.
- * @param weight The percentage size of the parent StackBox to devote to the new TaskStack.
- * @return The new TaskStack.
- */
- TaskStack split(int stackId, int relativeStackBoxId, int position, float weight) {
- if (mStackBoxId != relativeStackBoxId) {
- // This is not the targeted StackBox.
- if (mStack != null) {
- return null;
- }
- // Propagate the split to see if the targeted StackBox is in either sub box.
- TaskStack stack = mFirst.split(stackId, relativeStackBoxId, position, weight);
- if (stack != null) {
- return stack;
- }
- return mSecond.split(stackId, relativeStackBoxId, position, weight);
- }
-
- // Found it!
- TaskStack stack = new TaskStack(mService, stackId, mDisplayContent);
- TaskStack firstStack;
- TaskStack secondStack;
- if (position == TASK_STACK_GOES_BEFORE) {
- // TODO: Test Configuration here for LTR/RTL.
- position = TASK_STACK_TO_LEFT_OF;
- } else if (position == TASK_STACK_GOES_AFTER) {
- // TODO: Test Configuration here for LTR/RTL.
- position = TASK_STACK_TO_RIGHT_OF;
- }
- switch (position) {
- default:
- case TASK_STACK_TO_LEFT_OF:
- case TASK_STACK_TO_RIGHT_OF:
- mVertical = false;
- if (position == TASK_STACK_TO_LEFT_OF) {
- mWeight = weight;
- firstStack = stack;
- secondStack = mStack;
- } else {
- mWeight = 1.0f - weight;
- firstStack = mStack;
- secondStack = stack;
- }
- break;
- case TASK_STACK_GOES_ABOVE:
- case TASK_STACK_GOES_BELOW:
- mVertical = true;
- if (position == TASK_STACK_GOES_ABOVE) {
- mWeight = weight;
- firstStack = stack;
- secondStack = mStack;
- } else {
- mWeight = 1.0f - weight;
- firstStack = mStack;
- secondStack = stack;
- }
- break;
- }
-
- mFirst = new StackBox(mService, mDisplayContent, this);
- firstStack.mStackBox = mFirst;
- mFirst.mStack = firstStack;
-
- mSecond = new StackBox(mService, mDisplayContent, this);
- secondStack.mStackBox = mSecond;
- mSecond.mStack = secondStack;
-
- mStack = null;
- return stack;
- }
-
- /** Return the stackId of the first mFirst StackBox with a non-null mStack */
- int getStackId() {
- if (mStack != null) {
- return mStack.mStackId;
- }
- return mFirst.getStackId();
- }
-
- /** Remove this box and propagate its sibling's content up to their parent.
- * @return The first stackId of the resulting StackBox. */
- int remove() {
- mDisplayContent.layoutNeeded = true;
-
- if (mParent == null) {
- // This is the top-plane stack.
- if (DEBUG_STACK) Slog.i(TAG, "StackBox.remove: removing top plane.");
- mDisplayContent.removeStackBox(this);
- return HOME_STACK_ID;
- }
-
- StackBox sibling = isFirstChild() ? mParent.mSecond : mParent.mFirst;
- StackBox grandparent = mParent.mParent;
- sibling.mParent = grandparent;
- if (grandparent == null) {
- // mParent is a top-plane stack. Now sibling will be.
- if (DEBUG_STACK) Slog.i(TAG, "StackBox.remove: grandparent null");
- mDisplayContent.removeStackBox(mParent);
- mDisplayContent.addStackBox(sibling, true);
- } else {
- if (DEBUG_STACK) Slog.i(TAG, "StackBox.remove: grandparent getting sibling");
- if (mParent.isFirstChild()) {
- grandparent.mFirst = sibling;
- } else {
- grandparent.mSecond = sibling;
- }
- }
- return sibling.getStackId();
- }
-
- boolean resize(int stackBoxId, float weight) {
- if (mStackBoxId != stackBoxId) {
- return mStack == null &&
- (mFirst.resize(stackBoxId, weight) || mSecond.resize(stackBoxId, weight));
- }
- // Don't change weight on topmost stack.
- if (mParent != null) {
- mParent.mWeight = isFirstChild() ? weight : 1.0f - weight;
- }
- return true;
- }
-
- /** If this is a terminal StackBox (contains a TaskStack) set the bounds.
- * @param bounds The rectangle to set the bounds to.
- * @param underStatusBar True if the StackBox is directly below the Status Bar.
- * @return True if the bounds changed, false otherwise. */
- boolean setStackBoxSizes(Rect bounds, boolean underStatusBar) {
- boolean change = false;
- if (mUnderStatusBar != underStatusBar) {
- change = true;
- mUnderStatusBar = underStatusBar;
- }
- if (mStack != null) {
- change |= !mBounds.equals(bounds);
- if (change) {
- mBounds.set(bounds);
- mStack.setBounds(bounds, underStatusBar);
- }
- } else {
- mTmpRect.set(bounds);
- if (mVertical) {
- final int height = bounds.height();
- int firstHeight = (int)(height * mWeight);
- mTmpRect.bottom = bounds.top + firstHeight;
- change |= mFirst.setStackBoxSizes(mTmpRect, underStatusBar);
- mTmpRect.top = mTmpRect.bottom;
- mTmpRect.bottom = bounds.top + height;
- change |= mSecond.setStackBoxSizes(mTmpRect, false);
- } else {
- final int width = bounds.width();
- int firstWidth = (int)(width * mWeight);
- mTmpRect.right = bounds.left + firstWidth;
- change |= mFirst.setStackBoxSizes(mTmpRect, underStatusBar);
- mTmpRect.left = mTmpRect.right;
- mTmpRect.right = bounds.left + width;
- change |= mSecond.setStackBoxSizes(mTmpRect, underStatusBar);
- }
- }
- return change;
- }
-
- void resetAnimationBackgroundAnimator() {
- if (mStack != null) {
- mStack.resetAnimationBackgroundAnimator();
- return;
- }
- mFirst.resetAnimationBackgroundAnimator();
- mSecond.resetAnimationBackgroundAnimator();
- }
-
- boolean animateDimLayers() {
- if (mStack != null) {
- return mStack.animateDimLayers();
- }
- boolean result = mFirst.animateDimLayers();
- result |= mSecond.animateDimLayers();
- return result;
- }
-
- void resetDimming() {
- if (mStack != null) {
- mStack.resetDimmingTag();
- return;
- }
- mFirst.resetDimming();
- mSecond.resetDimming();
- }
-
- boolean isDimming() {
- if (mStack != null) {
- return mStack.isDimming();
- }
- boolean result = mFirst.isDimming();
- result |= mSecond.isDimming();
- return result;
- }
-
- void stopDimmingIfNeeded() {
- if (mStack != null) {
- mStack.stopDimmingIfNeeded();
- return;
- }
- mFirst.stopDimmingIfNeeded();
- mSecond.stopDimmingIfNeeded();
- }
-
- void switchUserStacks(int userId) {
- if (mStack != null) {
- mStack.switchUser(userId);
- return;
- }
- mFirst.switchUserStacks(userId);
- mSecond.switchUserStacks(userId);
- }
-
- void close() {
- if (mStack != null) {
- mStack.mDimLayer.mDimSurface.destroy();
- mStack.mAnimationBackgroundSurface.mDimSurface.destroy();
- return;
- }
- mFirst.close();
- mSecond.close();
- }
-
- public void dump(String prefix, PrintWriter pw) {
- pw.print(prefix); pw.print("mParent="); pw.println(mParent);
- pw.print(prefix); pw.print("mBounds="); pw.print(mBounds.toShortString());
- pw.print(" mVertical="); pw.print(mVertical);
- pw.print(" layoutNeeded="); pw.println(layoutNeeded);
- if (mFirst != null) {
- pw.print(prefix); pw.print("mFirst="); pw.println(System.identityHashCode(mFirst));
- mFirst.dump(prefix + " ", pw);
- pw.print(prefix); pw.print("mSecond="); pw.println(System.identityHashCode(mSecond));
- mSecond.dump(prefix + " ", pw);
- } else {
- pw.print(prefix); pw.print("mStack="); pw.println(mStack);
- mStack.dump(prefix + " ", pw);
- }
- }
-
- @Override
- public String toString() {
- if (mStack != null) {
- return "Box{" + hashCode() + " stack=" + mStack.mStackId + "}";
- }
- return "Box{" + hashCode() + " parent=" + System.identityHashCode(mParent)
- + " first=" + System.identityHashCode(mFirst)
- + " second=" + System.identityHashCode(mSecond) + "}";
- }
-}
diff --git a/services/jni/Android.mk b/services/jni/Android.mk
deleted file mode 100644
index 98e9b3085736..000000000000
--- a/services/jni/Android.mk
+++ /dev/null
@@ -1,63 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES:= \
- com_android_server_AlarmManagerService.cpp \
- com_android_server_AssetAtlasService.cpp \
- com_android_server_ConsumerIrService.cpp \
- com_android_server_input_InputApplicationHandle.cpp \
- com_android_server_input_InputManagerService.cpp \
- com_android_server_input_InputWindowHandle.cpp \
- com_android_server_LightsService.cpp \
- com_android_server_power_PowerManagerService.cpp \
- com_android_server_SerialService.cpp \
- com_android_server_SystemServer.cpp \
- com_android_server_UsbDeviceManager.cpp \
- com_android_server_UsbHostManager.cpp \
- com_android_server_VibratorService.cpp \
- com_android_server_location_GpsLocationProvider.cpp \
- com_android_server_location_FlpHardwareProvider.cpp \
- com_android_server_connectivity_Vpn.cpp \
- onload.cpp
-
-LOCAL_C_INCLUDES += \
- $(JNI_H_INCLUDE) \
- frameworks/base/services \
- frameworks/base/core/jni \
- frameworks/native/services \
- external/skia/include/core \
- libcore/include \
- libcore/include/libsuspend \
- $(call include-path-for, libhardware)/hardware \
- $(call include-path-for, libhardware_legacy)/hardware_legacy \
-
-LOCAL_SHARED_LIBRARIES := \
- libandroid_runtime \
- libandroidfw \
- libbinder \
- libcutils \
- liblog \
- libhardware \
- libhardware_legacy \
- libnativehelper \
- libutils \
- libui \
- libinput \
- libinputservice \
- libsensorservice \
- libskia \
- libgui \
- libusbhost \
- libsuspend \
- libEGL \
- libGLESv2
-
-LOCAL_CFLAGS += -DEGL_EGLEXT_PROTOTYPES -DGL_GLEXT_PROTOTYPES
-
-ifeq ($(WITH_MALLOC_LEAK_CHECK),true)
- LOCAL_CFLAGS += -DMALLOC_LEAK_CHECK
-endif
-
-LOCAL_MODULE:= libandroid_servers
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/services/jni/com_android_server_AlarmManagerService.cpp b/services/jni/com_android_server_AlarmManagerService.cpp
deleted file mode 100644
index c2f6151884b3..000000000000
--- a/services/jni/com_android_server_AlarmManagerService.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-/* //device/libs/android_runtime/android_server_AlarmManagerService.cpp
-**
-** Copyright 2006, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
-
-#define LOG_TAG "AlarmManagerService"
-
-#include "JNIHelp.h"
-#include "jni.h"
-#include <utils/Log.h>
-#include <utils/misc.h>
-
-#include <fcntl.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <arpa/inet.h>
-#include <netinet/in.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <unistd.h>
-#include <linux/ioctl.h>
-#include <linux/android_alarm.h>
-
-namespace android {
-
-static jint android_server_AlarmManagerService_setKernelTimezone(JNIEnv* env, jobject obj, jint fd, jint minswest)
-{
- struct timezone tz;
-
- tz.tz_minuteswest = minswest;
- tz.tz_dsttime = 0;
-
- int result = settimeofday(NULL, &tz);
- if (result < 0) {
- ALOGE("Unable to set kernel timezone to %d: %s\n", minswest, strerror(errno));
- return -1;
- } else {
- ALOGD("Kernel timezone updated to %d minutes west of GMT\n", minswest);
- }
-
- return 0;
-}
-
-static jint android_server_AlarmManagerService_init(JNIEnv* env, jobject obj)
-{
- return open("/dev/alarm", O_RDWR);
-}
-
-static void android_server_AlarmManagerService_close(JNIEnv* env, jobject obj, jint fd)
-{
- close(fd);
-}
-
-static void android_server_AlarmManagerService_set(JNIEnv* env, jobject obj, jint fd, jint type, jlong seconds, jlong nanoseconds)
-{
- struct timespec ts;
- ts.tv_sec = seconds;
- ts.tv_nsec = nanoseconds;
-
- int result = ioctl(fd, ANDROID_ALARM_SET(type), &ts);
- if (result < 0)
- {
- ALOGE("Unable to set alarm to %lld.%09lld: %s\n", seconds, nanoseconds, strerror(errno));
- }
-}
-
-static jint android_server_AlarmManagerService_waitForAlarm(JNIEnv* env, jobject obj, jint fd)
-{
- int result = 0;
-
- do
- {
- result = ioctl(fd, ANDROID_ALARM_WAIT);
- } while (result < 0 && errno == EINTR);
-
- if (result < 0)
- {
- ALOGE("Unable to wait on alarm: %s\n", strerror(errno));
- return 0;
- }
-
- return result;
-}
-
-static JNINativeMethod sMethods[] = {
- /* name, signature, funcPtr */
- {"init", "()I", (void*)android_server_AlarmManagerService_init},
- {"close", "(I)V", (void*)android_server_AlarmManagerService_close},
- {"set", "(IIJJ)V", (void*)android_server_AlarmManagerService_set},
- {"waitForAlarm", "(I)I", (void*)android_server_AlarmManagerService_waitForAlarm},
- {"setKernelTimezone", "(II)I", (void*)android_server_AlarmManagerService_setKernelTimezone},
-};
-
-int register_android_server_AlarmManagerService(JNIEnv* env)
-{
- return jniRegisterNativeMethods(env, "com/android/server/AlarmManagerService",
- sMethods, NELEM(sMethods));
-}
-
-} /* namespace android */
diff --git a/services/print/Android.mk b/services/print/Android.mk
new file mode 100644
index 000000000000..33604b711159
--- /dev/null
+++ b/services/print/Android.mk
@@ -0,0 +1,10 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := services.print
+
+LOCAL_SRC_FILES += \
+ $(call all-java-files-under,java)
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/services/print/java/com/android/server/print/PrintManagerService.java b/services/print/java/com/android/server/print/PrintManagerService.java
new file mode 100644
index 000000000000..c6fdbe5c90c8
--- /dev/null
+++ b/services/print/java/com/android/server/print/PrintManagerService.java
@@ -0,0 +1,689 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.print;
+
+import android.Manifest;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Binder;
+import android.os.Bundle;
+import android.os.Process;
+import android.os.RemoteException;
+import android.os.UserHandle;
+import android.print.IPrintDocumentAdapter;
+import android.print.IPrintJobStateChangeListener;
+import android.print.IPrintManager;
+import android.print.IPrinterDiscoveryObserver;
+import android.print.PrintAttributes;
+import android.print.PrintJobId;
+import android.print.PrintJobInfo;
+import android.print.PrinterId;
+import android.printservice.PrintServiceInfo;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.util.SparseArray;
+
+import com.android.internal.R;
+import com.android.internal.content.PackageMonitor;
+import com.android.internal.os.BackgroundThread;
+import com.android.server.SystemService;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * SystemService wrapper for the PrintManager implementation. Publishes
+ * Context.PRINT_SERVICE.
+ * PrintManager implementation is contained within.
+ */
+
+public final class PrintManagerService extends SystemService {
+ private final PrintManagerImpl mPrintManagerImpl;
+
+ public PrintManagerService(Context context) {
+ super(context);
+ mPrintManagerImpl = new PrintManagerImpl(context);
+ }
+
+ @Override
+ public void onStart() {
+ publishBinderService(Context.PRINT_SERVICE, mPrintManagerImpl);
+ }
+
+ @Override
+ public void onBootPhase(int phase) {
+ if (phase == PHASE_THIRD_PARTY_APPS_CAN_START) {
+ mPrintManagerImpl.systemRunning();
+ }
+ }
+
+ class PrintManagerImpl extends IPrintManager.Stub {
+ private static final char COMPONENT_NAME_SEPARATOR = ':';
+
+ private static final String EXTRA_PRINT_SERVICE_COMPONENT_NAME =
+ "EXTRA_PRINT_SERVICE_COMPONENT_NAME";
+
+ private final Object mLock = new Object();
+
+ private final Context mContext;
+
+ private final SparseArray<UserState> mUserStates = new SparseArray<UserState>();
+
+ private int mCurrentUserId = UserHandle.USER_OWNER;
+
+ PrintManagerImpl(Context context) {
+ mContext = context;
+ registerContentObservers();
+ registerBoradcastReceivers();
+ }
+
+ public void systemRunning() {
+ BackgroundThread.getHandler().post(new Runnable() {
+ @Override
+ public void run() {
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getCurrentUserStateLocked();
+ userState.updateIfNeededLocked();
+ }
+ // This is the first time we switch to this user after boot, so
+ // now is the time to remove obsolete print jobs since they
+ // are from the last boot and no application would query them.
+ userState.removeObsoletePrintJobs();
+ }
+ });
+ }
+
+ @Override
+ public Bundle print(String printJobName, IPrintDocumentAdapter adapter,
+ PrintAttributes attributes, String packageName, int appId, int userId) {
+ final int resolvedAppId = resolveCallingAppEnforcingPermissions(appId);
+ final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
+ String resolvedPackageName = resolveCallingPackageNameEnforcingSecurity(packageName);
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getOrCreateUserStateLocked(resolvedUserId);
+ }
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ return userState.print(printJobName, adapter, attributes,
+ resolvedPackageName, resolvedAppId);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ @Override
+ public List<PrintJobInfo> getPrintJobInfos(int appId, int userId) {
+ final int resolvedAppId = resolveCallingAppEnforcingPermissions(appId);
+ final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getOrCreateUserStateLocked(resolvedUserId);
+ }
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ return userState.getPrintJobInfos(resolvedAppId);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ @Override
+ public PrintJobInfo getPrintJobInfo(PrintJobId printJobId, int appId, int userId) {
+ final int resolvedAppId = resolveCallingAppEnforcingPermissions(appId);
+ final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getOrCreateUserStateLocked(resolvedUserId);
+ }
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ return userState.getPrintJobInfo(printJobId, resolvedAppId);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ @Override
+ public void cancelPrintJob(PrintJobId printJobId, int appId, int userId) {
+ final int resolvedAppId = resolveCallingAppEnforcingPermissions(appId);
+ final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getOrCreateUserStateLocked(resolvedUserId);
+ }
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ userState.cancelPrintJob(printJobId, resolvedAppId);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ @Override
+ public void restartPrintJob(PrintJobId printJobId, int appId, int userId) {
+ final int resolvedAppId = resolveCallingAppEnforcingPermissions(appId);
+ final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getOrCreateUserStateLocked(resolvedUserId);
+ }
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ userState.restartPrintJob(printJobId, resolvedAppId);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ @Override
+ public List<PrintServiceInfo> getEnabledPrintServices(int userId) {
+ final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getOrCreateUserStateLocked(resolvedUserId);
+ }
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ return userState.getEnabledPrintServices();
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ @Override
+ public List<PrintServiceInfo> getInstalledPrintServices(int userId) {
+ final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getOrCreateUserStateLocked(resolvedUserId);
+ }
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ return userState.getInstalledPrintServices();
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ @Override
+ public void createPrinterDiscoverySession(IPrinterDiscoveryObserver observer,
+ int userId) {
+ final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getOrCreateUserStateLocked(resolvedUserId);
+ }
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ userState.createPrinterDiscoverySession(observer);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ @Override
+ public void destroyPrinterDiscoverySession(IPrinterDiscoveryObserver observer,
+ int userId) {
+ final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getOrCreateUserStateLocked(resolvedUserId);
+ }
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ userState.destroyPrinterDiscoverySession(observer);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ @Override
+ public void startPrinterDiscovery(IPrinterDiscoveryObserver observer,
+ List<PrinterId> priorityList, int userId) {
+ final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getOrCreateUserStateLocked(resolvedUserId);
+ }
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ userState.startPrinterDiscovery(observer, priorityList);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ @Override
+ public void stopPrinterDiscovery(IPrinterDiscoveryObserver observer, int userId) {
+ final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getOrCreateUserStateLocked(resolvedUserId);
+ }
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ userState.stopPrinterDiscovery(observer);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ @Override
+ public void validatePrinters(List<PrinterId> printerIds, int userId) {
+ final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getOrCreateUserStateLocked(resolvedUserId);
+ }
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ userState.validatePrinters(printerIds);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ @Override
+ public void startPrinterStateTracking(PrinterId printerId, int userId) {
+ final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getOrCreateUserStateLocked(resolvedUserId);
+ }
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ userState.startPrinterStateTracking(printerId);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ @Override
+ public void stopPrinterStateTracking(PrinterId printerId, int userId) {
+ final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getOrCreateUserStateLocked(resolvedUserId);
+ }
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ userState.stopPrinterStateTracking(printerId);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ @Override
+ public void addPrintJobStateChangeListener(IPrintJobStateChangeListener listener,
+ int appId, int userId) throws RemoteException {
+ final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
+ final int resolvedAppId = resolveCallingAppEnforcingPermissions(appId);
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getOrCreateUserStateLocked(resolvedUserId);
+ }
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ userState.addPrintJobStateChangeListener(listener, resolvedAppId);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ @Override
+ public void removePrintJobStateChangeListener(IPrintJobStateChangeListener listener,
+ int userId) {
+ final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId);
+ final UserState userState;
+ synchronized (mLock) {
+ userState = getOrCreateUserStateLocked(resolvedUserId);
+ }
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ userState.removePrintJobStateChangeListener(listener);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ @Override
+ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ if (mContext.checkCallingOrSelfPermission(Manifest.permission.DUMP)
+ != PackageManager.PERMISSION_GRANTED) {
+ pw.println("Permission Denial: can't dump PrintManager from from pid="
+ + Binder.getCallingPid()
+ + ", uid=" + Binder.getCallingUid());
+ return;
+ }
+
+ synchronized (mLock) {
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ pw.println("PRINT MANAGER STATE (dumpsys print)");
+ final int userStateCount = mUserStates.size();
+ for (int i = 0; i < userStateCount; i++) {
+ UserState userState = mUserStates.valueAt(i);
+ userState.dump(fd, pw, "");
+ pw.println();
+ }
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+ }
+
+ private void registerContentObservers() {
+ final Uri enabledPrintServicesUri = Settings.Secure.getUriFor(
+ Settings.Secure.ENABLED_PRINT_SERVICES);
+
+ ContentObserver observer = new ContentObserver(BackgroundThread.getHandler()) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ if (enabledPrintServicesUri.equals(uri)) {
+ synchronized (mLock) {
+ UserState userState = getCurrentUserStateLocked();
+ userState.updateIfNeededLocked();
+ }
+ }
+ }
+ };
+
+ mContext.getContentResolver().registerContentObserver(enabledPrintServicesUri,
+ false, observer, UserHandle.USER_ALL);
+ }
+
+ private void registerBoradcastReceivers() {
+ PackageMonitor monitor = new PackageMonitor() {
+ @Override
+ public boolean onPackageChanged(String packageName, int uid, String[] components) {
+ synchronized (mLock) {
+ UserState userState = getOrCreateUserStateLocked(getChangingUserId());
+ Iterator<ComponentName> iterator = userState.getEnabledServices()
+ .iterator();
+ while (iterator.hasNext()) {
+ ComponentName componentName = iterator.next();
+ if (packageName.equals(componentName.getPackageName())) {
+ userState.updateIfNeededLocked();
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public void onPackageRemoved(String packageName, int uid) {
+ synchronized (mLock) {
+ UserState userState = getOrCreateUserStateLocked(getChangingUserId());
+ Iterator<ComponentName> iterator = userState.getEnabledServices()
+ .iterator();
+ while (iterator.hasNext()) {
+ ComponentName componentName = iterator.next();
+ if (packageName.equals(componentName.getPackageName())) {
+ iterator.remove();
+ persistComponentNamesToSettingLocked(
+ Settings.Secure.ENABLED_PRINT_SERVICES,
+ userState.getEnabledServices(), getChangingUserId());
+ userState.updateIfNeededLocked();
+ return;
+ }
+ }
+ }
+ }
+
+ @Override
+ public boolean onHandleForceStop(Intent intent, String[] stoppedPackages,
+ int uid, boolean doit) {
+ synchronized (mLock) {
+ UserState userState = getOrCreateUserStateLocked(getChangingUserId());
+ boolean stoppedSomePackages = false;
+ Iterator<ComponentName> iterator = userState.getEnabledServices()
+ .iterator();
+ while (iterator.hasNext()) {
+ ComponentName componentName = iterator.next();
+ String componentPackage = componentName.getPackageName();
+ for (String stoppedPackage : stoppedPackages) {
+ if (componentPackage.equals(stoppedPackage)) {
+ if (!doit) {
+ return true;
+ }
+ stoppedSomePackages = true;
+ break;
+ }
+ }
+ }
+ if (stoppedSomePackages) {
+ userState.updateIfNeededLocked();
+ }
+ return false;
+ }
+ }
+
+ @Override
+ public void onPackageAdded(String packageName, int uid) {
+ Intent intent = new Intent(android.printservice.PrintService.SERVICE_INTERFACE);
+ intent.setPackage(packageName);
+
+ List<ResolveInfo> installedServices = mContext.getPackageManager()
+ .queryIntentServicesAsUser(intent, PackageManager.GET_SERVICES,
+ getChangingUserId());
+
+ if (installedServices == null) {
+ return;
+ }
+
+ final int installedServiceCount = installedServices.size();
+ for (int i = 0; i < installedServiceCount; i++) {
+ ServiceInfo serviceInfo = installedServices.get(i).serviceInfo;
+ ComponentName component = new ComponentName(serviceInfo.packageName,
+ serviceInfo.name);
+ String label = serviceInfo.loadLabel(mContext.getPackageManager())
+ .toString();
+ showEnableInstalledPrintServiceNotification(component, label,
+ getChangingUserId());
+ }
+ }
+
+ private void persistComponentNamesToSettingLocked(String settingName,
+ Set<ComponentName> componentNames, int userId) {
+ StringBuilder builder = new StringBuilder();
+ for (ComponentName componentName : componentNames) {
+ if (builder.length() > 0) {
+ builder.append(COMPONENT_NAME_SEPARATOR);
+ }
+ builder.append(componentName.flattenToShortString());
+ }
+ Settings.Secure.putStringForUser(mContext.getContentResolver(),
+ settingName, builder.toString(), userId);
+ }
+ };
+
+ // package changes
+ monitor.register(mContext, BackgroundThread.getHandler().getLooper(),
+ UserHandle.ALL, true);
+
+ // user changes
+ IntentFilter intentFilter = new IntentFilter();
+ intentFilter.addAction(Intent.ACTION_USER_SWITCHED);
+ intentFilter.addAction(Intent.ACTION_USER_REMOVED);
+
+ mContext.registerReceiverAsUser(new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if (Intent.ACTION_USER_SWITCHED.equals(action)) {
+ switchUser(intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0));
+ } else if (Intent.ACTION_USER_REMOVED.equals(action)) {
+ removeUser(intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0));
+ }
+ }
+ }, UserHandle.ALL, intentFilter, null, BackgroundThread.getHandler());
+ }
+
+ private UserState getCurrentUserStateLocked() {
+ return getOrCreateUserStateLocked(mCurrentUserId);
+ }
+
+ private UserState getOrCreateUserStateLocked(int userId) {
+ UserState userState = mUserStates.get(userId);
+ if (userState == null) {
+ userState = new UserState(mContext, userId, mLock);
+ mUserStates.put(userId, userState);
+ }
+ return userState;
+ }
+
+ private void switchUser(int newUserId) {
+ UserState userState;
+ synchronized (mLock) {
+ if (newUserId == mCurrentUserId) {
+ return;
+ }
+ mCurrentUserId = newUserId;
+ userState = mUserStates.get(mCurrentUserId);
+ if (userState == null) {
+ userState = getCurrentUserStateLocked();
+ userState.updateIfNeededLocked();
+ } else {
+ userState.updateIfNeededLocked();
+ }
+ }
+ // This is the first time we switch to this user after boot, so
+ // now is the time to remove obsolete print jobs since they
+ // are from the last boot and no application would query them.
+ userState.removeObsoletePrintJobs();
+ }
+
+ private void removeUser(int removedUserId) {
+ synchronized (mLock) {
+ UserState userState = mUserStates.get(removedUserId);
+ if (userState != null) {
+ userState.destroyLocked();
+ mUserStates.remove(removedUserId);
+ }
+ }
+ }
+
+ private int resolveCallingAppEnforcingPermissions(int appId) {
+ final int callingUid = Binder.getCallingUid();
+ if (callingUid == 0 || callingUid == Process.SYSTEM_UID
+ || callingUid == Process.SHELL_UID) {
+ return appId;
+ }
+ final int callingAppId = UserHandle.getAppId(callingUid);
+ if (appId == callingAppId) {
+ return appId;
+ }
+ if (mContext.checkCallingPermission(
+ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS")
+ != PackageManager.PERMISSION_GRANTED) {
+ throw new SecurityException("Call from app " + callingAppId + " as app "
+ + appId + " without com.android.printspooler.permission"
+ + ".ACCESS_ALL_PRINT_JOBS");
+ }
+ return appId;
+ }
+
+ private int resolveCallingUserEnforcingPermissions(int userId) {
+ final int callingUid = Binder.getCallingUid();
+ if (callingUid == 0 || callingUid == Process.SYSTEM_UID
+ || callingUid == Process.SHELL_UID) {
+ return userId;
+ }
+ final int callingUserId = UserHandle.getUserId(callingUid);
+ if (callingUserId == userId) {
+ return userId;
+ }
+ if (mContext.checkCallingPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL)
+ != PackageManager.PERMISSION_GRANTED
+ || mContext.checkCallingPermission(Manifest.permission.INTERACT_ACROSS_USERS)
+ != PackageManager.PERMISSION_GRANTED) {
+ if (userId == UserHandle.USER_CURRENT_OR_SELF) {
+ return callingUserId;
+ }
+ throw new SecurityException("Call from user " + callingUserId + " as user "
+ + userId + " without permission INTERACT_ACROSS_USERS or "
+ + "INTERACT_ACROSS_USERS_FULL not allowed.");
+ }
+ if (userId == UserHandle.USER_CURRENT || userId == UserHandle.USER_CURRENT_OR_SELF) {
+ return mCurrentUserId;
+ }
+ throw new IllegalArgumentException("Calling user can be changed to only "
+ + "UserHandle.USER_CURRENT or UserHandle.USER_CURRENT_OR_SELF.");
+ }
+
+ private String resolveCallingPackageNameEnforcingSecurity(String packageName) {
+ if (TextUtils.isEmpty(packageName)) {
+ return null;
+ }
+ String[] packages = mContext.getPackageManager().getPackagesForUid(
+ Binder.getCallingUid());
+ final int packageCount = packages.length;
+ for (int i = 0; i < packageCount; i++) {
+ if (packageName.equals(packages[i])) {
+ return packageName;
+ }
+ }
+ return null;
+ }
+
+ private void showEnableInstalledPrintServiceNotification(ComponentName component,
+ String label, int userId) {
+ UserHandle userHandle = new UserHandle(userId);
+
+ Intent intent = new Intent(Settings.ACTION_PRINT_SETTINGS);
+ intent.putExtra(EXTRA_PRINT_SERVICE_COMPONENT_NAME, component.flattenToString());
+
+ PendingIntent pendingIntent = PendingIntent.getActivityAsUser(mContext, 0, intent,
+ PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_CANCEL_CURRENT, null,
+ userHandle);
+
+ Notification.Builder builder = new Notification.Builder(mContext)
+ .setSmallIcon(R.drawable.ic_print)
+ .setContentTitle(mContext.getString(R.string.print_service_installed_title,
+ label))
+ .setContentText(mContext.getString(R.string.print_service_installed_message))
+ .setContentIntent(pendingIntent)
+ .setWhen(System.currentTimeMillis())
+ .setAutoCancel(true)
+ .setShowWhen(true);
+
+ NotificationManager notificationManager = (NotificationManager) mContext
+ .getSystemService(Context.NOTIFICATION_SERVICE);
+
+ String notificationTag = getClass().getName() + ":" + component.flattenToString();
+ notificationManager.notifyAsUser(notificationTag, 0, builder.build(),
+ userHandle);
+ }
+ }
+}
diff --git a/services/java/com/android/server/print/RemotePrintService.java b/services/print/java/com/android/server/print/RemotePrintService.java
index 1bb61d246eb8..1bb61d246eb8 100644
--- a/services/java/com/android/server/print/RemotePrintService.java
+++ b/services/print/java/com/android/server/print/RemotePrintService.java
diff --git a/services/java/com/android/server/print/RemotePrintSpooler.java b/services/print/java/com/android/server/print/RemotePrintSpooler.java
index ffe9806a2418..ffe9806a2418 100644
--- a/services/java/com/android/server/print/RemotePrintSpooler.java
+++ b/services/print/java/com/android/server/print/RemotePrintSpooler.java
diff --git a/services/java/com/android/server/print/UserState.java b/services/print/java/com/android/server/print/UserState.java
index f23a992cd58f..f23a992cd58f 100644
--- a/services/java/com/android/server/print/UserState.java
+++ b/services/print/java/com/android/server/print/UserState.java
diff --git a/services/tests/Android.mk b/services/tests/Android.mk
new file mode 100644
index 000000000000..40369ee2ec5c
--- /dev/null
+++ b/services/tests/Android.mk
@@ -0,0 +1,3 @@
+LOCAL_PATH:= $(call my-dir)
+
+include $(call all-makefiles-under, $(LOCAL_PATH))
diff --git a/services/tests/servicestests/src/com/android/server/EntropyMixerTest.java b/services/tests/servicestests/src/com/android/server/EntropyMixerTest.java
index 58d6dae1637a..50e7a0395a2a 100644
--- a/services/tests/servicestests/src/com/android/server/EntropyMixerTest.java
+++ b/services/tests/servicestests/src/com/android/server/EntropyMixerTest.java
@@ -34,7 +34,7 @@ public class EntropyMixerTest extends AndroidTestCase {
assertEquals(0, FileUtils.readTextFile(file, 0, null).length());
// The constructor has the side effect of writing to file
- new EntropyMixer(getContext(), "/dev/null", file.getCanonicalPath());
+ new EntropyMixer(getContext(), "/dev/null", file.getCanonicalPath(), "/dev/null");
assertTrue(FileUtils.readTextFile(file, 0, null).length() > 0);
}
diff --git a/services/tests/servicestests/src/com/android/server/NetworkManagementServiceTest.java b/services/tests/servicestests/src/com/android/server/NetworkManagementServiceTest.java
index 56dd7c40df78..7a30d31daab7 100644
--- a/services/tests/servicestests/src/com/android/server/NetworkManagementServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/NetworkManagementServiceTest.java
@@ -17,6 +17,7 @@
package com.android.server;
import android.content.Context;
+import android.net.LinkAddress;
import android.net.LocalSocket;
import android.net.LocalServerSocket;
import android.os.Binder;
@@ -157,18 +158,61 @@ public class NetworkManagementServiceTest extends AndroidTestCase {
* IP address changes.
*/
sendMessage("614 Address updated fe80::1/64 wlan0 128 253");
- expectSoon(observer).addressUpdated("fe80::1/64", "wlan0", 128, 253);
+ expectSoon(observer).addressUpdated("wlan0", new LinkAddress("fe80::1/64", 128, 253));
- // There is no "added".
+ // There is no "added", so we take this as "removed".
sendMessage("614 Address added fe80::1/64 wlan0 128 253");
- expectSoon(observer).addressRemoved("fe80::1/64", "wlan0", 128, 253);
+ expectSoon(observer).addressRemoved("wlan0", new LinkAddress("fe80::1/64", 128, 253));
sendMessage("614 Address removed 2001:db8::1/64 wlan0 1 0");
- expectSoon(observer).addressRemoved("2001:db8::1/64", "wlan0", 1, 0);
+ expectSoon(observer).addressRemoved("wlan0", new LinkAddress("2001:db8::1/64", 1, 0));
- sendMessage("666 Address added 2001:db8::1/64 wlan0 1 0");
+ sendMessage("614 Address removed 2001:db8::1/64 wlan0 1");
+ // Not enough arguments.
+
+ sendMessage("666 Address removed 2001:db8::1/64 wlan0 1 0");
// Invalid code.
+
+ /**
+ * DNS information broadcasts.
+ */
+ sendMessage("615 DnsInfo servers rmnet_usb0 3600 2001:db8::1");
+ expectSoon(observer).interfaceDnsServerInfo("rmnet_usb0", 3600,
+ new String[]{"2001:db8::1"});
+
+ sendMessage("615 DnsInfo servers wlan0 14400 2001:db8::1,2001:db8::2");
+ expectSoon(observer).interfaceDnsServerInfo("wlan0", 14400,
+ new String[]{"2001:db8::1", "2001:db8::2"});
+
+ // We don't check for negative lifetimes, only for parse errors.
+ sendMessage("615 DnsInfo servers wlan0 -3600 ::1");
+ expectSoon(observer).interfaceDnsServerInfo("wlan0", -3600,
+ new String[]{"::1"});
+
+ sendMessage("615 DnsInfo servers wlan0 SIXHUNDRED ::1");
+ // Non-numeric lifetime.
+
+ sendMessage("615 DnsInfo servers wlan0 2001:db8::1");
+ // Missing lifetime.
+
+ sendMessage("615 DnsInfo servers wlan0 3600");
+ // No servers.
+
+ sendMessage("615 DnsInfo servers 3600 wlan0 2001:db8::1,2001:db8::2");
+ // Non-numeric lifetime.
+
+ sendMessage("615 DnsInfo wlan0 7200 2001:db8::1,2001:db8::2");
+ // Invalid tokens.
+
+ sendMessage("666 DnsInfo servers wlan0 5400 2001:db8::1");
+ // Invalid code.
+
+ // No syntax checking on the addresses.
+ sendMessage("615 DnsInfo servers wlan0 600 ,::,,foo,::1,");
+ expectSoon(observer).interfaceDnsServerInfo("wlan0", 600,
+ new String[]{"", "::", "", "foo", "::1"});
+
// Make sure nothing else was called.
verifyNoMoreInteractions(observer);
}
diff --git a/services/usb/Android.mk b/services/usb/Android.mk
new file mode 100644
index 000000000000..feabf0a970c2
--- /dev/null
+++ b/services/usb/Android.mk
@@ -0,0 +1,12 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := services.usb
+
+LOCAL_SRC_FILES += \
+ $(call all-java-files-under,java)
+
+LOCAL_JAVA_LIBRARIES := services.core
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/services/java/com/android/server/usb/UsbDebuggingManager.java b/services/usb/java/com/android/server/usb/UsbDebuggingManager.java
index ce953a4b134e..ce953a4b134e 100644
--- a/services/java/com/android/server/usb/UsbDebuggingManager.java
+++ b/services/usb/java/com/android/server/usb/UsbDebuggingManager.java
diff --git a/services/java/com/android/server/usb/UsbDeviceManager.java b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
index 0f9c953de2f2..1c959709cc21 100644
--- a/services/java/com/android/server/usb/UsbDeviceManager.java
+++ b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
@@ -855,7 +855,7 @@ public class UsbDeviceManager {
if (mOemModeMap == null) {
mOemModeMap = new HashMap<String, List<Pair<String, String>>>();
}
- List overrideList = mOemModeMap.get(items[0]);
+ List<Pair<String, String>> overrideList = mOemModeMap.get(items[0]);
if (overrideList == null) {
overrideList = new LinkedList<Pair<String, String>>();
mOemModeMap.put(items[0], overrideList);
diff --git a/services/java/com/android/server/usb/UsbHostManager.java b/services/usb/java/com/android/server/usb/UsbHostManager.java
index 10272f270f2a..dfaad0bcece9 100644
--- a/services/java/com/android/server/usb/UsbHostManager.java
+++ b/services/usb/java/com/android/server/usb/UsbHostManager.java
@@ -96,6 +96,7 @@ public class UsbHostManager {
/* Called from JNI in monitorUsbHostBus() to report new USB devices */
private void usbDeviceAdded(String deviceName, int vendorID, int productID,
int deviceClass, int deviceSubclass, int deviceProtocol,
+ String manufacturerName, String productName, String serialNumber,
/* array of quintuples containing id, class, subclass, protocol
and number of endpoints for each interface */
int[] interfaceValues,
@@ -151,7 +152,8 @@ public class UsbHostManager {
}
UsbDevice device = new UsbDevice(deviceName, vendorID, productID,
- deviceClass, deviceSubclass, deviceProtocol, interfaces);
+ deviceClass, deviceSubclass, deviceProtocol,
+ manufacturerName, productName, serialNumber, interfaces);
mDevices.put(deviceName, device);
getCurrentSettings().deviceAttached(device);
}
diff --git a/services/java/com/android/server/usb/UsbService.java b/services/usb/java/com/android/server/usb/UsbService.java
index 36669b1a8178..b6ae192234fc 100644
--- a/services/java/com/android/server/usb/UsbService.java
+++ b/services/usb/java/com/android/server/usb/UsbService.java
@@ -32,6 +32,7 @@ import android.util.SparseArray;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.IndentingPrintWriter;
+import com.android.server.SystemService;
import java.io.File;
import java.io.FileDescriptor;
@@ -43,6 +44,28 @@ import java.io.PrintWriter;
* support is delegated to UsbDeviceManager.
*/
public class UsbService extends IUsbManager.Stub {
+
+ public static class Lifecycle extends SystemService {
+ private UsbService mUsbService;
+
+ public Lifecycle(Context context) {
+ super(context);
+ }
+
+ @Override
+ public void onStart() {
+ mUsbService = new UsbService(getContext());
+ publishBinderService(Context.USB_SERVICE, mUsbService);
+ }
+
+ @Override
+ public void onBootPhase(int phase) {
+ if (phase == SystemService.PHASE_ACTIVITY_MANAGER_READY) {
+ mUsbService.systemReady();
+ }
+ }
+ }
+
private static final String TAG = "UsbService";
private final Context mContext;
diff --git a/services/java/com/android/server/usb/UsbSettingsManager.java b/services/usb/java/com/android/server/usb/UsbSettingsManager.java
index 9b5b31279ee0..ff4857ba1be8 100644
--- a/services/java/com/android/server/usb/UsbSettingsManager.java
+++ b/services/usb/java/com/android/server/usb/UsbSettingsManager.java
@@ -108,13 +108,23 @@ class UsbSettingsManager {
public final int mSubclass;
// USB device protocol (or -1 for unspecified)
public final int mProtocol;
-
- public DeviceFilter(int vid, int pid, int clasz, int subclass, int protocol) {
+ // USB device manufacturer name string (or null for unspecified)
+ public final String mManufacturerName;
+ // USB device product name string (or null for unspecified)
+ public final String mProductName;
+ // USB device serial number string (or null for unspecified)
+ public final String mSerialNumber;
+
+ public DeviceFilter(int vid, int pid, int clasz, int subclass, int protocol,
+ String manufacturer, String product, String serialnum) {
mVendorId = vid;
mProductId = pid;
mClass = clasz;
mSubclass = subclass;
mProtocol = protocol;
+ mManufacturerName = manufacturer;
+ mProductName = product;
+ mSerialNumber = serialnum;
}
public DeviceFilter(UsbDevice device) {
@@ -123,6 +133,9 @@ class UsbSettingsManager {
mClass = device.getDeviceClass();
mSubclass = device.getDeviceSubclass();
mProtocol = device.getDeviceProtocol();
+ mManufacturerName = device.getManufacturerName();
+ mProductName = device.getProductName();
+ mSerialNumber = device.getSerialNumber();
}
public static DeviceFilter read(XmlPullParser parser)
@@ -132,27 +145,52 @@ class UsbSettingsManager {
int deviceClass = -1;
int deviceSubclass = -1;
int deviceProtocol = -1;
+ String manufacturerName = null;
+ String productName = null;
+ String serialNumber = null;
int count = parser.getAttributeCount();
for (int i = 0; i < count; i++) {
String name = parser.getAttributeName(i);
- // All attribute values are ints
- int value = Integer.parseInt(parser.getAttributeValue(i));
-
- if ("vendor-id".equals(name)) {
- vendorId = value;
- } else if ("product-id".equals(name)) {
- productId = value;
- } else if ("class".equals(name)) {
- deviceClass = value;
- } else if ("subclass".equals(name)) {
- deviceSubclass = value;
- } else if ("protocol".equals(name)) {
- deviceProtocol = value;
+ String value = parser.getAttributeValue(i);
+ // Attribute values are ints or strings
+ if ("manufacturer-name".equals(name)) {
+ manufacturerName = value;
+ } else if ("product-name".equals(name)) {
+ productName = value;
+ } else if ("serial-number".equals(name)) {
+ serialNumber = value;
+ } else {
+ int intValue = -1;
+ int radix = 10;
+ if (value != null && value.length() > 2 && value.charAt(0) == '0' &&
+ (value.charAt(1) == 'x' || value.charAt(1) == 'X')) {
+ // allow hex values starting with 0x or 0X
+ radix = 16;
+ value = value.substring(2);
+ }
+ try {
+ intValue = Integer.parseInt(value, radix);
+ } catch (NumberFormatException e) {
+ Slog.e(TAG, "invalid number for field " + name, e);
+ continue;
+ }
+ if ("vendor-id".equals(name)) {
+ vendorId = intValue;
+ } else if ("product-id".equals(name)) {
+ productId = intValue;
+ } else if ("class".equals(name)) {
+ deviceClass = intValue;
+ } else if ("subclass".equals(name)) {
+ deviceSubclass = intValue;
+ } else if ("protocol".equals(name)) {
+ deviceProtocol = intValue;
+ }
}
}
return new DeviceFilter(vendorId, productId,
- deviceClass, deviceSubclass, deviceProtocol);
+ deviceClass, deviceSubclass, deviceProtocol,
+ manufacturerName, productName, serialNumber);
}
public void write(XmlSerializer serializer) throws IOException {
@@ -172,6 +210,15 @@ class UsbSettingsManager {
if (mProtocol != -1) {
serializer.attribute(null, "protocol", Integer.toString(mProtocol));
}
+ if (mManufacturerName != null) {
+ serializer.attribute(null, "manufacturer-name", mManufacturerName);
+ }
+ if (mProductName != null) {
+ serializer.attribute(null, "product-name", mProductName);
+ }
+ if (mSerialNumber != null) {
+ serializer.attribute(null, "serial-number", mSerialNumber);
+ }
serializer.endTag(null, "usb-device");
}
@@ -184,6 +231,15 @@ class UsbSettingsManager {
public boolean matches(UsbDevice device) {
if (mVendorId != -1 && device.getVendorId() != mVendorId) return false;
if (mProductId != -1 && device.getProductId() != mProductId) return false;
+ if (mManufacturerName != null && device.getManufacturerName() == null) return false;
+ if (mProductName != null && device.getProductName() == null) return false;
+ if (mSerialNumber != null && device.getSerialNumber() == null) return false;
+ if (mManufacturerName != null && device.getManufacturerName() != null &&
+ !mManufacturerName.equals(device.getManufacturerName())) return false;
+ if (mProductName != null && device.getProductName() != null &&
+ !mProductName.equals(device.getProductName())) return false;
+ if (mSerialNumber != null && device.getSerialNumber() != null &&
+ !mSerialNumber.equals(device.getSerialNumber())) return false;
// check device class/subclass/protocol
if (matches(device.getDeviceClass(), device.getDeviceSubclass(),
@@ -203,6 +259,15 @@ class UsbSettingsManager {
public boolean matches(DeviceFilter f) {
if (mVendorId != -1 && f.mVendorId != mVendorId) return false;
if (mProductId != -1 && f.mProductId != mProductId) return false;
+ if (f.mManufacturerName != null && mManufacturerName == null) return false;
+ if (f.mProductName != null && mProductName == null) return false;
+ if (f.mSerialNumber != null && mSerialNumber == null) return false;
+ if (mManufacturerName != null && f.mManufacturerName != null &&
+ !mManufacturerName.equals(f.mManufacturerName)) return false;
+ if (mProductName != null && f.mProductName != null &&
+ !mProductName.equals(f.mProductName)) return false;
+ if (mSerialNumber != null && f.mSerialNumber != null &&
+ !mSerialNumber.equals(f.mSerialNumber)) return false;
// check device class/subclass/protocol
return matches(f.mClass, f.mSubclass, f.mProtocol);
@@ -217,19 +282,67 @@ class UsbSettingsManager {
}
if (obj instanceof DeviceFilter) {
DeviceFilter filter = (DeviceFilter)obj;
- return (filter.mVendorId == mVendorId &&
- filter.mProductId == mProductId &&
- filter.mClass == mClass &&
- filter.mSubclass == mSubclass &&
- filter.mProtocol == mProtocol);
+
+ if (filter.mVendorId != mVendorId ||
+ filter.mProductId != mProductId ||
+ filter.mClass != mClass ||
+ filter.mSubclass != mSubclass ||
+ filter.mProtocol != mProtocol) {
+ return(false);
+ }
+ if ((filter.mManufacturerName != null &&
+ mManufacturerName == null) ||
+ (filter.mManufacturerName == null &&
+ mManufacturerName != null) ||
+ (filter.mProductName != null &&
+ mProductName == null) ||
+ (filter.mProductName == null &&
+ mProductName != null) ||
+ (filter.mSerialNumber != null &&
+ mSerialNumber == null) ||
+ (filter.mSerialNumber == null &&
+ mSerialNumber != null)) {
+ return(false);
+ }
+ if ((filter.mManufacturerName != null &&
+ mManufacturerName != null &&
+ !mManufacturerName.equals(filter.mManufacturerName)) ||
+ (filter.mProductName != null &&
+ mProductName != null &&
+ !mProductName.equals(filter.mProductName)) ||
+ (filter.mSerialNumber != null &&
+ mSerialNumber != null &&
+ !mSerialNumber.equals(filter.mSerialNumber))) {
+ return(false);
+ }
+ return(true);
}
if (obj instanceof UsbDevice) {
UsbDevice device = (UsbDevice)obj;
- return (device.getVendorId() == mVendorId &&
- device.getProductId() == mProductId &&
- device.getDeviceClass() == mClass &&
- device.getDeviceSubclass() == mSubclass &&
- device.getDeviceProtocol() == mProtocol);
+ if (device.getVendorId() != mVendorId ||
+ device.getProductId() != mProductId ||
+ device.getDeviceClass() != mClass ||
+ device.getDeviceSubclass() != mSubclass ||
+ device.getDeviceProtocol() != mProtocol) {
+ return(false);
+ }
+ if ((mManufacturerName != null && device.getManufacturerName() == null) ||
+ (mManufacturerName == null && device.getManufacturerName() != null) ||
+ (mProductName != null && device.getProductName() == null) ||
+ (mProductName == null && device.getProductName() != null) ||
+ (mSerialNumber != null && device.getSerialNumber() == null) ||
+ (mSerialNumber == null && device.getSerialNumber() != null)) {
+ return(false);
+ }
+ if ((device.getManufacturerName() != null &&
+ !mManufacturerName.equals(device.getManufacturerName())) ||
+ (device.getProductName() != null &&
+ !mProductName.equals(device.getProductName())) ||
+ (device.getSerialNumber() != null &&
+ !mSerialNumber.equals(device.getSerialNumber()))) {
+ return(false);
+ }
+ return true;
}
return false;
}
@@ -244,7 +357,9 @@ class UsbSettingsManager {
public String toString() {
return "DeviceFilter[mVendorId=" + mVendorId + ",mProductId=" + mProductId +
",mClass=" + mClass + ",mSubclass=" + mSubclass +
- ",mProtocol=" + mProtocol + "]";
+ ",mProtocol=" + mProtocol + ",mManufacturerName=" + mManufacturerName +
+ ",mProductName=" + mProductName + ",mSerialNumber=" + mSerialNumber +
+ "]";
}
}
diff --git a/telephony/java/android/telephony/CellSignalStrengthCdma.java b/telephony/java/android/telephony/CellSignalStrengthCdma.java
index c94509459e34..46d09f6bfe93 100644
--- a/telephony/java/android/telephony/CellSignalStrengthCdma.java
+++ b/telephony/java/android/telephony/CellSignalStrengthCdma.java
@@ -21,7 +21,7 @@ import android.os.Parcelable;
import android.telephony.Rlog;
/**
- * LTE signal strength related information.
+ * Signal strength related information.
*/
public final class CellSignalStrengthCdma extends CellSignalStrength implements Parcelable {
@@ -136,7 +136,7 @@ public final class CellSignalStrengthCdma extends CellSignalStrength implements
}
/**
- * Get the LTE signal level as an asu value between 0..97, 99 is unknown
+ * Get the signal level as an asu value between 0..97, 99 is unknown
* Asu is calculated based on 3GPP RSRP. Refer to 3GPP 27.007 (Ver 10.3.0) Sec 8.69
*/
@Override
diff --git a/telephony/java/com/android/internal/telephony/RILConstants.java b/telephony/java/com/android/internal/telephony/RILConstants.java
index 821a11cb3b0b..8e445d9dbc72 100644
--- a/telephony/java/com/android/internal/telephony/RILConstants.java
+++ b/telephony/java/com/android/internal/telephony/RILConstants.java
@@ -55,6 +55,8 @@ public interface RILConstants {
int ILLEGAL_SIM_OR_ME = 15; /* network selection failure due
to wrong SIM/ME and no
retries needed */
+ int MISSING_RESOURCE = 16; /* no logical channel available */
+ int NO_SUCH_ELEMENT = 17; /* application not found on SIM */
/* NETWORK_MODE_* See ril.h RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE */
int NETWORK_MODE_WCDMA_PREF = 0; /* GSM/WCDMA (WCDMA preferred) */
@@ -265,6 +267,10 @@ cat include/telephony/ril.h | \
int RIL_REQUEST_SET_INITIAL_ATTACH_APN = 111;
int RIL_REQUEST_IMS_REGISTRATION_STATE = 112;
int RIL_REQUEST_IMS_SEND_SMS = 113;
+ int RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC = 114;
+ int RIL_REQUEST_SIM_OPEN_CHANNEL = 115;
+ int RIL_REQUEST_SIM_CLOSE_CHANNEL = 116;
+ int RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL = 117;
int RIL_UNSOL_RESPONSE_BASE = 1000;
int RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED = 1000;
int RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED = 1001;
diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java
index 661bd41632bc..c1305bc8446d 100644
--- a/test-runner/src/android/test/mock/MockPackageManager.java
+++ b/test-runner/src/android/test/mock/MockPackageManager.java
@@ -338,6 +338,27 @@ public class MockPackageManager extends PackageManager {
}
@Override
+ public Drawable getActivityBanner(ComponentName activityName)
+ throws NameNotFoundException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Drawable getActivityBanner(Intent intent) throws NameNotFoundException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Drawable getApplicationBanner(ApplicationInfo info) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Drawable getApplicationBanner(String packageName) throws NameNotFoundException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public Drawable getApplicationIcon(ApplicationInfo info) {
throw new UnsupportedOperationException();
}
diff --git a/tests/DozeTest/Android.mk b/tests/DozeTest/Android.mk
new file mode 100644
index 000000000000..01f10e5ac1de
--- /dev/null
+++ b/tests/DozeTest/Android.mk
@@ -0,0 +1,14 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+# Only compile source java files in this apk.
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := DozeTest
+
+include $(BUILD_PACKAGE)
+
+# Use the following include to make our test apk.
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/DozeTest/AndroidManifest.xml b/tests/DozeTest/AndroidManifest.xml
new file mode 100644
index 000000000000..c199f69aeb1e
--- /dev/null
+++ b/tests/DozeTest/AndroidManifest.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.dreams.dozetest">
+ <uses-permission android:name="android.permission.WAKE_LOCK" />
+
+ <application android:label="@string/app_name">
+ <service
+ android:name="DozeTestDream"
+ android:exported="true"
+ android:icon="@drawable/ic_app"
+ android:label="@string/doze_dream_name">
+ <!-- Commented out to prevent this dream from appearing in the list of
+ dreams that the user can select via the Settings application.
+ <intent-filter>
+ <action android:name="android.service.dreams.DreamService" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ -->
+ </service>
+ </application>
+</manifest>
diff --git a/tests/DozeTest/res/drawable-hdpi/ic_app.png b/tests/DozeTest/res/drawable-hdpi/ic_app.png
new file mode 100755
index 000000000000..66a198496cfb
--- /dev/null
+++ b/tests/DozeTest/res/drawable-hdpi/ic_app.png
Binary files differ
diff --git a/tests/DozeTest/res/drawable-mdpi/ic_app.png b/tests/DozeTest/res/drawable-mdpi/ic_app.png
new file mode 100644
index 000000000000..5ae7701a8a85
--- /dev/null
+++ b/tests/DozeTest/res/drawable-mdpi/ic_app.png
Binary files differ
diff --git a/tests/DozeTest/res/layout/dream.xml b/tests/DozeTest/res/layout/dream.xml
new file mode 100644
index 000000000000..1c8fd3fccbf4
--- /dev/null
+++ b/tests/DozeTest/res/layout/dream.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center_vertical"
+ android:orientation="vertical">
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/alarm_clock_label" />
+ <TextView android:id="@+id/alarm_clock"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="32dp" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/tick_clock_label" />
+ <TextClock android:id="@+id/tick_clock"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+</LinearLayout>
diff --git a/packages/ExternalStorageProvider/res/values-af/strings.xml b/tests/DozeTest/res/values/strings.xml
index 1de881d92627..f21911fdffe0 100644
--- a/packages/ExternalStorageProvider/res/values-af/strings.xml
+++ b/tests/DozeTest/res/values/strings.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,11 +12,14 @@
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>
+ <!-- Name of the package of basic screensavers, shown in Settings > Apps. [CHAR LIMIT=40] -->
+ <string name="app_name">Doze Test</string>
-<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="7123375275748530234">"Eksterne berging"</string>
- <string name="root_internal_storage" msgid="827844243068584127">"Interne berging"</string>
- <string name="root_documents" msgid="4051252304075469250">"Dokumente"</string>
+ <!-- Name of the screensaver. [CHAR LIMIT=40] -->
+ <string name="doze_dream_name">Doze Test</string>
+
+ <string name="alarm_clock_label">This clock is updated using the Alarm Manager</string>
+ <string name="tick_clock_label">This clock is updated using TIME_TICK Broadcasts</string>
</resources>
diff --git a/tests/DozeTest/src/com/android/dreams/dozetest/DozeTestDream.java b/tests/DozeTest/src/com/android/dreams/dozetest/DozeTestDream.java
new file mode 100644
index 000000000000..bf35db4ac118
--- /dev/null
+++ b/tests/DozeTest/src/com/android/dreams/dozetest/DozeTestDream.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dreams.dozetest;
+
+import android.app.AlarmManager;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.PowerManager;
+import android.service.dreams.DozeHardware;
+import android.service.dreams.DreamService;
+import android.text.format.DateFormat;
+import android.util.Log;
+import android.widget.TextView;
+
+import java.util.Date;
+
+/**
+ * Simple test for doze mode.
+ * <p>
+ * adb shell setprop debug.doze.component com.android.dreams.dozetest/.DozeTestDream
+ * </p>
+ */
+public class DozeTestDream extends DreamService {
+ private static final String TAG = DozeTestDream.class.getSimpleName();
+ private static final boolean DEBUG = false;
+
+ // Amount of time to allow to update the time shown on the screen before releasing
+ // the wakelock. This timeout is design to compensate for the fact that we don't
+ // currently have a way to know when time display contents have actually been
+ // refreshed once the dream has finished rendering a new frame.
+ private static final int UPDATE_TIME_TIMEOUT = 100;
+
+ // A doze hardware message string we use for end-to-end testing.
+ // Doesn't mean anything. Real hardware won't handle it.
+ private static final String TEST_PING_MESSAGE = "test.ping";
+
+ private PowerManager mPowerManager;
+ private PowerManager.WakeLock mWakeLock;
+ private AlarmManager mAlarmManager;
+ private PendingIntent mAlarmIntent;
+
+ private TextView mAlarmClock;
+
+ private final Date mTime = new Date();
+ private java.text.DateFormat mTimeFormat;
+
+ private boolean mDreaming;
+ private DozeHardware mDozeHardware;
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+
+ mPowerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);
+ mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
+
+ mAlarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
+
+ Intent intent = new Intent("com.android.dreams.dozetest.ACTION_ALARM");
+ intent.setPackage(getPackageName());
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(intent.getAction());
+ registerReceiver(mAlarmReceiver, filter);
+ mAlarmIntent = PendingIntent.getBroadcast(this, 0, intent,
+ PendingIntent.FLAG_CANCEL_CURRENT);
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+
+ unregisterReceiver(mAlarmReceiver);
+ mAlarmIntent.cancel();
+ }
+
+ @Override
+ public void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ setInteractive(false);
+ setLowProfile(true);
+ setFullscreen(true);
+ setContentView(R.layout.dream);
+
+ mAlarmClock = (TextView)findViewById(R.id.alarm_clock);
+
+ mTimeFormat = DateFormat.getTimeFormat(this);
+ }
+
+ @Override
+ public void onDreamingStarted() {
+ super.onDreamingStarted();
+
+ mDreaming = true;
+ mDozeHardware = getDozeHardware();
+
+ Log.d(TAG, "Dream started: canDoze=" + canDoze()
+ + ", dozeHardware=" + mDozeHardware);
+
+ performTimeUpdate();
+
+ if (mDozeHardware != null) {
+ mDozeHardware.sendMessage(TEST_PING_MESSAGE, null);
+ mDozeHardware.setEnableMcu(true);
+ }
+ startDozing();
+ }
+
+ @Override
+ public void onDreamingStopped() {
+ super.onDreamingStopped();
+
+ mDreaming = false;
+ if (mDozeHardware != null) {
+ mDozeHardware.setEnableMcu(false);
+ mDozeHardware = null;
+ }
+
+ Log.d(TAG, "Dream ended: isDozing=" + isDozing());
+
+ stopDozing();
+ cancelTimeUpdate();
+ }
+
+ private void performTimeUpdate() {
+ if (mDreaming) {
+ long now = System.currentTimeMillis();
+ now -= now % 60000; // back up to last minute boundary
+
+ mTime.setTime(now);
+ mAlarmClock.setText(mTimeFormat.format(mTime));
+
+ mAlarmManager.setExact(AlarmManager.RTC_WAKEUP, now + 60000, mAlarmIntent);
+
+ mWakeLock.acquire(UPDATE_TIME_TIMEOUT);
+ }
+ }
+
+ private void cancelTimeUpdate() {
+ mAlarmManager.cancel(mAlarmIntent);
+ }
+
+ private final BroadcastReceiver mAlarmReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ performTimeUpdate();
+ }
+ };
+}
diff --git a/tests/TileBenchmark/Android.mk b/tests/TileBenchmark/Android.mk
index 5851113cb24c..9a057af9c18b 100644
--- a/tests/TileBenchmark/Android.mk
+++ b/tests/TileBenchmark/Android.mk
@@ -17,7 +17,7 @@ include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
+LOCAL_SRC_FILES :=
LOCAL_PACKAGE_NAME := TileBenchmark
@@ -25,4 +25,4 @@ LOCAL_MODULE_TAGS := tests
LOCAL_JAVA_LIBRARIES := android.test.runner
-include $(BUILD_PACKAGE) \ No newline at end of file
+include $(BUILD_PACKAGE)
diff --git a/tools/aapt/AaptAssets.cpp b/tools/aapt/AaptAssets.cpp
index d8e113a2d140..62200d91996a 100644
--- a/tools/aapt/AaptAssets.cpp
+++ b/tools/aapt/AaptAssets.cpp
@@ -1631,9 +1631,18 @@ String8 AaptFile::getPrintableSource() const
// =========================================================================
// =========================================================================
-status_t AaptGroup::addFile(const sp<AaptFile>& file)
+status_t AaptGroup::addFile(const sp<AaptFile>& file, const bool overwriteDuplicate)
{
- if (mFiles.indexOfKey(file->getGroupEntry()) < 0) {
+ ssize_t index = mFiles.indexOfKey(file->getGroupEntry());
+ if (index >= 0 && overwriteDuplicate) {
+ fprintf(stderr, "warning: overwriting '%s' with '%s'\n",
+ mFiles[index]->getSourceFile().string(),
+ file->getSourceFile().string());
+ removeFile(index);
+ index = -1;
+ }
+
+ if (index < 0) {
file->mPath = mPath;
mFiles.add(file->getGroupEntry(), file);
return NO_ERROR;
@@ -1739,7 +1748,8 @@ void AaptDir::removeDir(const String8& name)
mDirs.removeItem(name);
}
-status_t AaptDir::addLeafFile(const String8& leafName, const sp<AaptFile>& file)
+status_t AaptDir::addLeafFile(const String8& leafName, const sp<AaptFile>& file,
+ const bool overwrite)
{
sp<AaptGroup> group;
if (mFiles.indexOfKey(leafName) >= 0) {
@@ -1749,12 +1759,12 @@ status_t AaptDir::addLeafFile(const String8& leafName, const sp<AaptFile>& file)
mFiles.add(leafName, group);
}
- return group->addFile(file);
+ return group->addFile(file, overwrite);
}
ssize_t AaptDir::slurpFullTree(Bundle* bundle, const String8& srcDir,
const AaptGroupEntry& kind, const String8& resType,
- sp<FilePathStore>& fullResPaths)
+ sp<FilePathStore>& fullResPaths, const bool overwrite)
{
Vector<String8> fileNames;
{
@@ -1813,7 +1823,7 @@ ssize_t AaptDir::slurpFullTree(Bundle* bundle, const String8& srcDir,
notAdded = true;
}
ssize_t res = subdir->slurpFullTree(bundle, pathName, kind,
- resType, fullResPaths);
+ resType, fullResPaths, overwrite);
if (res < NO_ERROR) {
return res;
}
@@ -1823,7 +1833,7 @@ ssize_t AaptDir::slurpFullTree(Bundle* bundle, const String8& srcDir,
count += res;
} else if (type == kFileTypeRegular) {
sp<AaptFile> file = new AaptFile(pathName, kind, resType);
- status_t err = addLeafFile(fileNames[i], file);
+ status_t err = addLeafFile(fileNames[i], file, overwrite);
if (err != NO_ERROR) {
return err;
}
@@ -2089,24 +2099,24 @@ ssize_t AaptAssets::slurpFromArgs(Bundle* bundle)
/*
* If a directory of custom assets was supplied, slurp 'em up.
*/
- if (bundle->getAssetSourceDir()) {
- const char* assetDir = bundle->getAssetSourceDir();
-
- FileType type = getFileType(assetDir);
+ const Vector<const char*>& assetDirs = bundle->getAssetSourceDirs();
+ const int AN = assetDirs.size();
+ for (int i = 0; i < AN; i++) {
+ FileType type = getFileType(assetDirs[i]);
if (type == kFileTypeNonexistent) {
- fprintf(stderr, "ERROR: asset directory '%s' does not exist\n", assetDir);
+ fprintf(stderr, "ERROR: asset directory '%s' does not exist\n", assetDirs[i]);
return UNKNOWN_ERROR;
}
if (type != kFileTypeDirectory) {
- fprintf(stderr, "ERROR: '%s' is not a directory\n", assetDir);
+ fprintf(stderr, "ERROR: '%s' is not a directory\n", assetDirs[i]);
return UNKNOWN_ERROR;
}
- String8 assetRoot(assetDir);
+ String8 assetRoot(assetDirs[i]);
sp<AaptDir> assetAaptDir = makeDir(String8(kAssetDir));
AaptGroupEntry group;
count = assetAaptDir->slurpFullTree(bundle, assetRoot, group,
- String8(), mFullAssetPaths);
+ String8(), mFullAssetPaths, true);
if (count < 0) {
totalCount = count;
goto bail;
@@ -2116,9 +2126,10 @@ ssize_t AaptAssets::slurpFromArgs(Bundle* bundle)
}
totalCount += count;
- if (bundle->getVerbose())
+ if (bundle->getVerbose()) {
printf("Found %d custom asset file%s in %s\n",
- count, (count==1) ? "" : "s", assetDir);
+ count, (count==1) ? "" : "s", assetDirs[i]);
+ }
}
/*
diff --git a/tools/aapt/AaptAssets.h b/tools/aapt/AaptAssets.h
index 5cfa91350063..9cc9007e4d48 100644
--- a/tools/aapt/AaptAssets.h
+++ b/tools/aapt/AaptAssets.h
@@ -235,7 +235,7 @@ public:
const DefaultKeyedVector<AaptGroupEntry, sp<AaptFile> >& getFiles() const
{ return mFiles; }
- status_t addFile(const sp<AaptFile>& file);
+ status_t addFile(const sp<AaptFile>& file, const bool overwriteDuplicate=false);
void removeFile(size_t index);
void print(const String8& prefix) const;
@@ -301,12 +301,14 @@ private:
status_t addDir(const String8& name, const sp<AaptDir>& dir);
sp<AaptDir> makeDir(const String8& name);
status_t addLeafFile(const String8& leafName,
- const sp<AaptFile>& file);
+ const sp<AaptFile>& file,
+ const bool overwrite=false);
virtual ssize_t slurpFullTree(Bundle* bundle,
const String8& srcDir,
const AaptGroupEntry& kind,
const String8& resType,
- sp<FilePathStore>& fullResPaths);
+ sp<FilePathStore>& fullResPaths,
+ const bool overwrite=false);
String8 mLeaf;
String8 mPath;
diff --git a/tools/aapt/Android.mk b/tools/aapt/Android.mk
index 452c60a6853e..806f8ff7a0d8 100644
--- a/tools/aapt/Android.mk
+++ b/tools/aapt/Android.mk
@@ -5,7 +5,7 @@
#
# This tool is prebuilt if we're doing an app-only build.
-ifeq ($(TARGET_BUILD_APPS),)
+ifeq ($(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK)),)
aapt_src_files := \
@@ -50,7 +50,8 @@ LOCAL_STATIC_LIBRARIES := \
libcutils \
libexpat \
libpng \
- liblog
+ liblog \
+ libziparchive-host
ifeq ($(HOST_OS),linux)
LOCAL_LDLIBS += -lrt -ldl -lpthread
@@ -100,4 +101,4 @@ LOCAL_STATIC_LIBRARIES := \
include $(BUILD_EXECUTABLE)
endif
-endif # TARGET_BUILD_APPS
+endif # No TARGET_BUILD_APPS or TARGET_BUILD_PDK
diff --git a/tools/aapt/Bundle.h b/tools/aapt/Bundle.h
index 5089b9de28a8..26b10a65f79d 100644
--- a/tools/aapt/Bundle.h
+++ b/tools/aapt/Bundle.h
@@ -55,7 +55,6 @@ public:
mCompressionMethod(0), mJunkPath(false), mOutputAPKFile(NULL),
mManifestPackageNameOverride(NULL), mInstrumentationPackageNameOverride(NULL),
mAutoAddOverlay(false), mGenDependencies(false),
- mAssetSourceDir(NULL),
mCrunchedOutputDir(NULL), mProguardFile(NULL),
mAndroidManifestFile(NULL), mPublicOutputFile(NULL),
mRClassDir(NULL), mResourceIntermediatesDir(NULL), mManifestMinSdkVersion(NULL),
@@ -123,8 +122,8 @@ public:
/*
* Input options.
*/
- const char* getAssetSourceDir() const { return mAssetSourceDir; }
- void setAssetSourceDir(const char* dir) { mAssetSourceDir = dir; }
+ const android::Vector<const char*>& getAssetSourceDirs() const { return mAssetSourceDirs; }
+ void addAssetSourceDir(const char* dir) { mAssetSourceDirs.insertAt(dir,0); }
const char* getCrunchedOutputDir() const { return mCrunchedOutputDir; }
void setCrunchedOutputDir(const char* dir) { mCrunchedOutputDir = dir; }
const char* getProguardFile() const { return mProguardFile; }
@@ -272,6 +271,7 @@ private:
android::Vector<const char*> mPackageIncludes;
android::Vector<const char*> mJarFiles;
android::Vector<const char*> mNoCompressExtensions;
+ android::Vector<const char*> mAssetSourceDirs;
android::Vector<const char*> mResourceSourceDirs;
const char* mManifestMinSdkVersion;
diff --git a/tools/aapt/Command.cpp b/tools/aapt/Command.cpp
index 632efe04f3c2..d9e2dc5d3903 100644
--- a/tools/aapt/Command.cpp
+++ b/tools/aapt/Command.cpp
@@ -375,6 +375,7 @@ enum {
LARGEST_WIDTH_LIMIT_DP_ATTR = 0x01010366,
PUBLIC_KEY_ATTR = 0x010103a6,
CATEGORY_ATTR = 0x010103e8,
+ BANNER_ATTR = 0x10103f2,
};
const char *getComponentName(String8 &pkgName, String8 &componentName) {
@@ -505,7 +506,7 @@ int doDump(Bundle* bundle)
const char* filename = bundle->getFileSpecEntry(1);
AssetManager assets;
- void* assetsCookie;
+ int32_t assetsCookie;
if (!assets.addAssetPath(String8(filename), &assetsCookie)) {
fprintf(stderr, "ERROR: dump failed because assets could not be loaded\n");
return 1;
@@ -677,6 +678,7 @@ int doDump(Bundle* bundle)
bool withinActivity = false;
bool isMainActivity = false;
bool isLauncherActivity = false;
+ bool isLeanbackLauncherActivity = false;
bool isSearchable = false;
bool withinApplication = false;
bool withinSupportsInput = false;
@@ -787,6 +789,7 @@ int doDump(Bundle* bundle)
String8 activityName;
String8 activityLabel;
String8 activityIcon;
+ String8 activityBanner;
String8 receiverName;
String8 serviceName;
Vector<String8> supportedInput;
@@ -810,15 +813,27 @@ int doDump(Bundle* bundle)
withinApplication = false;
withinSupportsInput = false;
} else if (depth < 3) {
- if (withinActivity && isMainActivity && isLauncherActivity) {
+ if (withinActivity && isMainActivity) {
const char *aName = getComponentName(pkg, activityName);
- printf("launchable-activity:");
- if (aName != NULL) {
- printf(" name='%s' ", aName);
+ if (isLauncherActivity) {
+ printf("launchable-activity:");
+ if (aName != NULL) {
+ printf(" name='%s' ", aName);
+ }
+ printf(" label='%s' icon='%s'\n",
+ activityLabel.string(),
+ activityIcon.string());
+ }
+ if (isLeanbackLauncherActivity) {
+ printf("leanback-launchable-activity:");
+ if (aName != NULL) {
+ printf(" name='%s' ", aName);
+ }
+ printf(" label='%s' icon='%s' banner='%s'\n",
+ activityLabel.string(),
+ activityIcon.string(),
+ activityBanner.string());
}
- printf(" label='%s' icon='%s'\n",
- activityLabel.string(),
- activityIcon.string());
}
if (!hasIntentFilter) {
hasOtherActivities |= withinActivity;
@@ -836,7 +851,7 @@ int doDump(Bundle* bundle)
withinService = false;
withinReceiver = false;
hasIntentFilter = false;
- isMainActivity = isLauncherActivity = false;
+ isMainActivity = isLauncherActivity = isLeanbackLauncherActivity = false;
} else if (depth < 4) {
if (withinIntentFilter) {
if (withinActivity) {
@@ -1231,6 +1246,13 @@ int doDump(Bundle* bundle)
goto bail;
}
+ activityBanner = getResolvedAttribute(&res, tree, BANNER_ATTR, &error);
+ if (error != "") {
+ fprintf(stderr, "ERROR getting 'android:banner' attribute: %s\n",
+ error.string());
+ goto bail;
+ }
+
int32_t orien = getResolvedIntegerAttribute(&res, tree,
SCREEN_ORIENTATION_ATTR, &error);
if (error == "") {
@@ -1412,6 +1434,8 @@ int doDump(Bundle* bundle)
if (withinActivity) {
if (category == "android.intent.category.LAUNCHER") {
isLauncherActivity = true;
+ } else if (category == "android.intent.category.LEANBACK_LAUNCHER") {
+ isLeanbackLauncherActivity = true;
}
}
}
@@ -1896,7 +1920,7 @@ int doPackage(Bundle* bundle)
N = bundle->getFileSpecCount();
if (N < 1 && bundle->getResourceSourceDirs().size() == 0 && bundle->getJarFiles().size() == 0
- && bundle->getAndroidManifestFile() == NULL && bundle->getAssetSourceDir() == NULL) {
+ && bundle->getAndroidManifestFile() == NULL && bundle->getAssetSourceDirs().size() == 0) {
fprintf(stderr, "ERROR: no input files\n");
goto bail;
}
diff --git a/tools/aapt/Images.cpp b/tools/aapt/Images.cpp
index 9de685ae763e..25a948d7e342 100644
--- a/tools/aapt/Images.cpp
+++ b/tools/aapt/Images.cpp
@@ -12,13 +12,15 @@
#include <utils/ByteOrder.h>
#include <png.h>
+#include <zlib.h>
#define NOISY(x) //x
static void
png_write_aapt_file(png_structp png_ptr, png_bytep data, png_size_t length)
{
- status_t err = ((AaptFile*)png_ptr->io_ptr)->writeData(data, length);
+ AaptFile* aaptfile = (AaptFile*) png_get_io_ptr(png_ptr);
+ status_t err = aaptfile->writeData(data, length);
if (err != NO_ERROR) {
png_error(png_ptr, "Write Error");
}
@@ -90,7 +92,7 @@ static void read_png(const char* imageName,
png_set_palette_to_rgb(read_ptr);
if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
- png_set_gray_1_2_4_to_8(read_ptr);
+ png_set_expand_gray_1_2_4_to_8(read_ptr);
if (png_get_valid(read_ptr, read_info, PNG_INFO_tRNS)) {
//printf("Has PNG_INFO_tRNS!\n");
@@ -109,7 +111,7 @@ static void read_png(const char* imageName,
png_read_update_info(read_ptr, read_info);
outImageInfo->rows = (png_bytepp)malloc(
- outImageInfo->height * png_sizeof(png_bytep));
+ outImageInfo->height * sizeof(png_bytep));
outImageInfo->allocHeight = outImageInfo->height;
outImageInfo->allocRows = outImageInfo->rows;
@@ -450,10 +452,11 @@ static status_t do_9patch(const char* imageName, image_info* image)
int maxSizeXDivs = W * sizeof(int32_t);
int maxSizeYDivs = H * sizeof(int32_t);
- int32_t* xDivs = (int32_t*) malloc(maxSizeXDivs);
- int32_t* yDivs = (int32_t*) malloc(maxSizeYDivs);
- uint8_t numXDivs = 0;
- uint8_t numYDivs = 0;
+ int32_t* xDivs = image->info9Patch.xDivs = (int32_t*) malloc(maxSizeXDivs);
+ int32_t* yDivs = image->info9Patch.yDivs = (int32_t*) malloc(maxSizeYDivs);
+ uint8_t numXDivs = 0;
+ uint8_t numYDivs = 0;
+
int8_t numColors;
int numRows;
int numCols;
@@ -508,6 +511,10 @@ static status_t do_9patch(const char* imageName, image_info* image)
goto getout;
}
+ // Copy patch size data into image...
+ image->info9Patch.numXDivs = numXDivs;
+ image->info9Patch.numYDivs = numYDivs;
+
// Find left and right of padding area...
if (get_horizontal_ticks(image->rows[H-1], W, transparent, false, &image->info9Patch.paddingLeft,
&image->info9Patch.paddingRight, &errorMsg, NULL, false) != NO_ERROR) {
@@ -543,12 +550,6 @@ static status_t do_9patch(const char* imageName, image_info* image)
image->layoutBoundsRight, image->layoutBoundsBottom));
}
- // Copy patch data into image
- image->info9Patch.numXDivs = numXDivs;
- image->info9Patch.numYDivs = numYDivs;
- image->info9Patch.xDivs = xDivs;
- image->info9Patch.yDivs = yDivs;
-
// If padding is not yet specified, take values from size.
if (image->info9Patch.paddingLeft < 0) {
image->info9Patch.paddingLeft = xDivs[0];
@@ -573,7 +574,7 @@ static status_t do_9patch(const char* imageName, image_info* image)
image->info9Patch.paddingTop, image->info9Patch.paddingBottom));
// Remove frame from image.
- image->rows = (png_bytepp)malloc((H-2) * png_sizeof(png_bytep));
+ image->rows = (png_bytepp)malloc((H-2) * sizeof(png_bytep));
for (i=0; i<(H-2); i++) {
image->rows[i] = image->allocRows[i+1];
memmove(image->rows[i], image->rows[i]+4, (W-2)*4);
@@ -955,7 +956,7 @@ static void analyze_image(const char *imageName, image_info &imageInfo, int gray
gg = *row++;
bb = *row++;
aa = *row++;
-
+
if (isGrayscale) {
*out++ = rr;
} else {
@@ -984,7 +985,7 @@ static void write_png(const char* imageName,
unknowns[0].data = NULL;
unknowns[1].data = NULL;
- png_bytepp outRows = (png_bytepp) malloc((int) imageInfo.height * png_sizeof(png_bytep));
+ png_bytepp outRows = (png_bytepp) malloc((int) imageInfo.height * sizeof(png_bytep));
if (outRows == (png_bytepp) 0) {
printf("Can't allocate output buffer!\n");
exit(1);
@@ -1073,18 +1074,19 @@ static void write_png(const char* imageName,
unknowns[b_index].size = chunk_size;
}
+ for (int i = 0; i < chunk_count; i++) {
+ unknowns[i].location = PNG_HAVE_PLTE;
+ }
png_set_keep_unknown_chunks(write_ptr, PNG_HANDLE_CHUNK_ALWAYS,
chunk_names, chunk_count);
png_set_unknown_chunks(write_ptr, write_info, unknowns, chunk_count);
- // XXX I can't get this to work without forcibly changing
- // the location to what I want... which apparently is supposed
- // to be a private API, but everything else I have tried results
- // in the location being set to what I -last- wrote so I never
- // get written. :p
+#if PNG_LIBPNG_VER < 10600
+ /* Deal with unknown chunk location bug in 1.5.x and earlier */
png_set_unknown_chunk_location(write_ptr, write_info, 0, PNG_HAVE_PLTE);
if (imageInfo.haveLayoutBounds) {
png_set_unknown_chunk_location(write_ptr, write_info, 1, PNG_HAVE_PLTE);
}
+#endif
}
@@ -1092,7 +1094,9 @@ static void write_png(const char* imageName,
png_bytepp rows;
if (color_type == PNG_COLOR_TYPE_RGB || color_type == PNG_COLOR_TYPE_RGB_ALPHA) {
- png_set_filler(write_ptr, 0, PNG_FILLER_AFTER);
+ if (color_type == PNG_COLOR_TYPE_RGB) {
+ png_set_filler(write_ptr, 0, PNG_FILLER_AFTER);
+ }
rows = imageInfo.rows;
} else {
rows = outRows;
diff --git a/tools/aapt/Main.cpp b/tools/aapt/Main.cpp
index 977226b61471..d1d3deb0106b 100644
--- a/tools/aapt/Main.cpp
+++ b/tools/aapt/Main.cpp
@@ -345,7 +345,7 @@ int main(int argc, char* const argv[])
goto bail;
}
convertPath(argv[0]);
- bundle.setAssetSourceDir(argv[0]);
+ bundle.addAssetSourceDir(argv[0]);
break;
case 'G':
argc--;
diff --git a/tools/aapt/Resource.cpp b/tools/aapt/Resource.cpp
index 08ad7a0335f0..386888bb14ed 100644
--- a/tools/aapt/Resource.cpp
+++ b/tools/aapt/Resource.cpp
@@ -469,7 +469,7 @@ static int validateAttr(const String8& path, const ResTable& table,
value.data);
return ATTR_NOT_FOUND;
}
-
+
pool = table.getTableStringBlock(strIdx);
#if 0
if (pool != NULL) {
@@ -705,7 +705,7 @@ bool addTagAttribute(const sp<XMLNode>& node, const char* ns8,
// don't stop the build.
return true;
}
-
+
node->addAttribute(ns, attr, String16(value));
return true;
}
@@ -756,7 +756,7 @@ status_t massageManifest(Bundle* bundle, sp<XMLNode> root)
bundle->getVersionName(), errorOnFailedInsert)) {
return UNKNOWN_ERROR;
}
-
+
if (bundle->getMinSdkVersion() != NULL
|| bundle->getTargetSdkVersion() != NULL
|| bundle->getMaxSdkVersion() != NULL) {
@@ -765,7 +765,7 @@ status_t massageManifest(Bundle* bundle, sp<XMLNode> root)
vers = XMLNode::newElement(root->getFilename(), String16(), String16("uses-sdk"));
root->insertChildAt(vers, 0);
}
-
+
if (!addTagAttribute(vers, RESOURCES_ANDROID_NAMESPACE, "minSdkVersion",
bundle->getMinSdkVersion(), errorOnFailedInsert)) {
return UNKNOWN_ERROR;
@@ -840,7 +840,7 @@ status_t massageManifest(Bundle* bundle, sp<XMLNode> root)
}
}
}
-
+
return NO_ERROR;
}
@@ -924,7 +924,7 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets)
// --------------------------------------------------------------
// resType -> leafName -> group
- KeyedVector<String8, sp<ResourceTypeSet> > *resources =
+ KeyedVector<String8, sp<ResourceTypeSet> > *resources =
new KeyedVector<String8, sp<ResourceTypeSet> >;
collect_files(assets, resources);
@@ -956,7 +956,7 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets)
// now go through any resource overlays and collect their files
sp<AaptAssets> current = assets->getOverlay();
while(current.get()) {
- KeyedVector<String8, sp<ResourceTypeSet> > *resources =
+ KeyedVector<String8, sp<ResourceTypeSet> > *resources =
new KeyedVector<String8, sp<ResourceTypeSet> >;
current->setResources(resources);
collect_files(current, resources);
@@ -1059,7 +1059,7 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets)
// compile resources
current = assets;
while(current.get()) {
- KeyedVector<String8, sp<ResourceTypeSet> > *resources =
+ KeyedVector<String8, sp<ResourceTypeSet> > *resources =
current->getResources();
ssize_t index = resources->indexOfKey(String8("values"));
@@ -1068,7 +1068,7 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets)
ssize_t res;
while ((res=it.next()) == NO_ERROR) {
sp<AaptFile> file = it.getFile();
- res = compileResourceFile(bundle, assets, file, it.getParams(),
+ res = compileResourceFile(bundle, assets, file, it.getParams(),
(current!=assets), &table);
if (res != NO_ERROR) {
hasErrors = true;
@@ -1253,7 +1253,7 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets)
if (table.validateLocalizations()) {
hasErrors = true;
}
-
+
if (hasErrors) {
return UNKNOWN_ERROR;
}
@@ -1286,7 +1286,7 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets)
ResTable finalResTable;
sp<AaptFile> resFile;
-
+
if (table.hasResources()) {
sp<AaptSymbols> symbols = assets->getSymbolsFor(String8("R"));
err = table.addSymbols(symbols);
@@ -1318,10 +1318,10 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets)
table.writePublicDefinitions(String16(assets->getPackage()), fp);
fclose(fp);
}
-
+
// Read resources back in,
finalResTable.add(resFile->getData(), resFile->getSize(), NULL);
-
+
#if 0
NOISY(
printf("Generated resources:\n");
@@ -1329,7 +1329,7 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets)
)
#endif
}
-
+
// Perform a basic validation of the manifest file. This time we
// parse it with the comments intact, so that we can use them to
// generate java docs... so we are not going to write this one
@@ -1424,7 +1424,7 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets)
ssize_t index = block.indexOfAttribute(RESOURCES_ANDROID_NAMESPACE, "name");
const uint16_t* id = block.getAttributeStringValue(index, &len);
if (id == NULL) {
- fprintf(stderr, "%s:%d: missing name attribute in element <%s>.\n",
+ fprintf(stderr, "%s:%d: missing name attribute in element <%s>.\n",
manifestPath.string(), block.getLineNumber(),
String8(block.getElementName(&len)).string());
hasErrors = true;
@@ -1582,7 +1582,7 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets)
return err;
}
}
-
+
return err;
}
@@ -1704,7 +1704,7 @@ static status_t writeLayoutClasses(
NA = idents.size();
bool deprecated = false;
-
+
String16 comment = symbols->getComment(realClassName);
fprintf(fp, "%s/** ", indentStr);
if (comment.size() > 0) {
@@ -1787,7 +1787,7 @@ static status_t writeLayoutClasses(
if (deprecated) {
fprintf(fp, "%s@Deprecated\n", indentStr);
}
-
+
fprintf(fp,
"%spublic static final int[] %s = {\n"
"%s",
@@ -1832,9 +1832,9 @@ static status_t writeLayoutClasses(
//printf("%s:%s/%s: 0x%08x\n", String8(package16).string(),
// String8(attr16).string(), String8(name16).string(), typeSpecFlags);
const bool pub = (typeSpecFlags&ResTable_typeSpec::SPEC_PUBLIC) != 0;
-
+
bool deprecated = false;
-
+
fprintf(fp, "%s/**\n", indentStr);
if (comment.size() > 0) {
String8 cmt(comment);
@@ -2219,10 +2219,10 @@ status_t writeResourceSymbols(Bundle* bundle, const sp<AaptAssets>& assets,
status_t err = writeSymbolClass(fp, assets, includePrivate, symbols,
className, 0, bundle->getNonConstantId());
+ fclose(fp);
if (err != NO_ERROR) {
return err;
}
- fclose(fp);
if (textSymbolsDest != NULL && R == className) {
String8 textDest(textSymbolsDest);
@@ -2241,10 +2241,10 @@ status_t writeResourceSymbols(Bundle* bundle, const sp<AaptAssets>& assets,
status_t err = writeTextSymbolClass(fp, assets, includePrivate, symbols,
className);
+ fclose(fp);
if (err != NO_ERROR) {
return err;
}
- fclose(fp);
}
// If we were asked to generate a dependency file, we'll go ahead and add this R.java
diff --git a/tools/aapt/ResourceTable.cpp b/tools/aapt/ResourceTable.cpp
index f2e525481399..6ced8b3f915a 100644
--- a/tools/aapt/ResourceTable.cpp
+++ b/tools/aapt/ResourceTable.cpp
@@ -1342,7 +1342,7 @@ status_t compileResourceFile(Bundle* bundle,
curType = string16;
curFormat = ResTable_map::TYPE_REFERENCE|ResTable_map::TYPE_STRING;
curIsStyled = true;
- curIsPseudolocalizable = true;
+ curIsPseudolocalizable = (translatable != false16);
} else if (strcmp16(block.getElementName(&len), drawable16.string()) == 0) {
curTag = &drawable16;
curType = drawable16;
@@ -1408,15 +1408,24 @@ status_t compileResourceFile(Bundle* bundle,
// Check whether these strings need valid formats.
// (simplified form of what string16 does above)
size_t n = block.getAttributeCount();
+
+ // Pseudolocalizable by default, unless this string array isn't
+ // translatable.
+ curIsPseudolocalizable = true;
for (size_t i = 0; i < n; i++) {
size_t length;
const uint16_t* attr = block.getAttributeName(i, &length);
- if (strcmp16(attr, translatable16.string()) == 0
- || strcmp16(attr, formatted16.string()) == 0) {
+ if (strcmp16(attr, translatable16.string()) == 0) {
+ const uint16_t* value = block.getAttributeStringValue(i, &length);
+ if (strcmp16(value, false16.string()) == 0) {
+ curIsPseudolocalizable = false;
+ }
+ }
+
+ if (strcmp16(attr, formatted16.string()) == 0) {
const uint16_t* value = block.getAttributeStringValue(i, &length);
if (strcmp16(value, false16.string()) == 0) {
curIsFormatted = false;
- break;
}
}
}
@@ -1426,7 +1435,6 @@ status_t compileResourceFile(Bundle* bundle,
curFormat = ResTable_map::TYPE_REFERENCE|ResTable_map::TYPE_STRING;
curIsBag = true;
curIsBagReplaceOnOverwrite = true;
- curIsPseudolocalizable = true;
} else if (strcmp16(block.getElementName(&len), integer_array16.string()) == 0) {
curTag = &integer_array16;
curType = array16;
diff --git a/tools/aidl/Android.mk b/tools/aidl/Android.mk
index 77d46abf4881..efd60a2cda99 100644
--- a/tools/aidl/Android.mk
+++ b/tools/aidl/Android.mk
@@ -3,7 +3,7 @@
# Copies files into the directory structure described by a manifest
# This tool is prebuilt if we're doing an app-only build.
-ifeq ($(TARGET_BUILD_APPS),)
+ifeq ($(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK)),)
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
@@ -26,4 +26,4 @@ LOCAL_MODULE := aidl
include $(BUILD_HOST_EXECUTABLE)
-endif # TARGET_BUILD_APPS
+endif # No TARGET_BUILD_APPS or TARGET_BUILD_PDK
diff --git a/tools/aidl/aidl.cpp b/tools/aidl/aidl.cpp
index b8a48033ede5..a84d743d0ebf 100644
--- a/tools/aidl/aidl.cpp
+++ b/tools/aidl/aidl.cpp
@@ -207,7 +207,7 @@ check_filename(const char* filename, const char* package, buffer_type* name)
p = strchr(name->data, '.');
len = p ? p-name->data : strlen(name->data);
expected.append(name->data, len);
-
+
expected += ".aidl";
len = fn.length();
@@ -473,7 +473,7 @@ check_method(const char* filename, int kind, method_type* m)
err = 1;
goto next;
}
-
+
if (!(kind == INTERFACE_TYPE_BINDER ? t->CanWriteToParcel() : t->CanWriteToRpcData())) {
fprintf(stderr, "%s:%d parameter %d: '%s %s' can't be marshalled.\n",
filename, m->type.type.lineno, index,
@@ -536,7 +536,7 @@ check_method(const char* filename, int kind, method_type* m)
filename, m->name.lineno, index, arg->name.data);
err = 1;
}
-
+
next:
index++;
arg = arg->next;
@@ -797,7 +797,7 @@ parse_preprocessed_file(const string& filename)
//printf("%s:%d:...%s...%s...%s...\n", filename.c_str(), lineno,
// type, packagename, classname);
document_item_type* doc;
-
+
if (0 == strcmp("parcelable", type)) {
user_data_type* parcl = (user_data_type*)malloc(
sizeof(user_data_type));
@@ -847,6 +847,7 @@ parse_preprocessed_file(const string& filename)
else {
fprintf(stderr, "%s:%d: bad type in line: %s\n",
filename.c_str(), lineno, line);
+ fclose(f);
return 1;
}
err = gather_types(filename.c_str(), doc);
@@ -1103,13 +1104,13 @@ preprocess_aidl(const Options& options)
}
// write preprocessed file
- int fd = open( options.outputFileName.c_str(),
+ int fd = open( options.outputFileName.c_str(),
O_RDWR|O_CREAT|O_TRUNC|O_BINARY,
#ifdef HAVE_MS_C_RUNTIME
_S_IREAD|_S_IWRITE);
-#else
+#else
S_IRUSR|S_IWUSR|S_IRGRP);
-#endif
+#endif
if (fd == -1) {
fprintf(stderr, "aidl: could not open file for write: %s\n",
options.outputFileName.c_str());
diff --git a/tools/layoutlib/bridge/src/android/graphics/AvoidXfermode_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/AvoidXfermode_Delegate.java
index a50a2bd039f5..34ae825baac8 100644
--- a/tools/layoutlib/bridge/src/android/graphics/AvoidXfermode_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/AvoidXfermode_Delegate.java
@@ -61,7 +61,7 @@ public class AvoidXfermode_Delegate extends Xfermode_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeCreate(int opColor, int tolerance, int nativeMode) {
+ /*package*/ static long nativeCreate(int opColor, int tolerance, int nativeMode) {
AvoidXfermode_Delegate newDelegate = new AvoidXfermode_Delegate();
return sManager.addNewDelegate(newDelegate);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/BitmapShader_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/BitmapShader_Delegate.java
index 65a75b0ab25d..cdbbe467ab67 100644
--- a/tools/layoutlib/bridge/src/android/graphics/BitmapShader_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/BitmapShader_Delegate.java
@@ -65,7 +65,7 @@ public class BitmapShader_Delegate extends Shader_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeCreate(int native_bitmap, int shaderTileModeX,
+ /*package*/ static long nativeCreate(long native_bitmap, int shaderTileModeX,
int shaderTileModeY) {
Bitmap_Delegate bitmap = Bitmap_Delegate.getDelegate(native_bitmap);
if (bitmap == null) {
@@ -80,7 +80,7 @@ public class BitmapShader_Delegate extends Shader_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int nativePostCreate(int native_shader, int native_bitmap,
+ /*package*/ static long nativePostCreate(long native_shader, long native_bitmap,
int shaderTileModeX, int shaderTileModeY) {
// pass, not needed.
return 0;
diff --git a/tools/layoutlib/bridge/src/android/graphics/Bitmap_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Bitmap_Delegate.java
index 13d2ba11388a..89d7e238593f 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Bitmap_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Bitmap_Delegate.java
@@ -83,7 +83,7 @@ public final class Bitmap_Delegate {
/**
* Returns the native delegate associated to a given an int referencing a {@link Bitmap} object.
*/
- public static Bitmap_Delegate getDelegate(int native_bitmap) {
+ public static Bitmap_Delegate getDelegate(long native_bitmap) {
return sManager.getDelegate(native_bitmap);
}
@@ -274,7 +274,7 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
- /*package*/ static Bitmap nativeCopy(int srcBitmap, int nativeConfig, boolean isMutable) {
+ /*package*/ static Bitmap nativeCopy(long srcBitmap, int nativeConfig, boolean isMutable) {
Bitmap_Delegate srcBmpDelegate = sManager.getDelegate(srcBitmap);
if (srcBmpDelegate == null) {
return null;
@@ -303,25 +303,25 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void nativeDestructor(int nativeBitmap) {
+ /*package*/ static void nativeDestructor(long nativeBitmap) {
sManager.removeJavaReferenceFor(nativeBitmap);
}
@LayoutlibDelegate
- /*package*/ static boolean nativeRecycle(int nativeBitmap) {
+ /*package*/ static boolean nativeRecycle(long nativeBitmap) {
sManager.removeJavaReferenceFor(nativeBitmap);
return true;
}
@LayoutlibDelegate
- /*package*/ static void nativeReconfigure(int nativeBitmap, int width, int height,
+ /*package*/ static void nativeReconfigure(long nativeBitmap, int width, int height,
int config, int allocSize) {
Bridge.getLog().error(LayoutLog.TAG_UNSUPPORTED,
"Bitmap.reconfigure() is not supported", null /*data*/);
}
@LayoutlibDelegate
- /*package*/ static boolean nativeCompress(int nativeBitmap, int format, int quality,
+ /*package*/ static boolean nativeCompress(long nativeBitmap, int format, int quality,
OutputStream stream, byte[] tempStorage) {
Bridge.getLog().error(LayoutLog.TAG_UNSUPPORTED,
"Bitmap.compress() is not supported", null /*data*/);
@@ -329,7 +329,7 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void nativeErase(int nativeBitmap, int color) {
+ /*package*/ static void nativeErase(long nativeBitmap, int color) {
// get the delegate from the native int.
Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap);
if (delegate == null) {
@@ -349,7 +349,7 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int nativeRowBytes(int nativeBitmap) {
+ /*package*/ static int nativeRowBytes(long nativeBitmap) {
// get the delegate from the native int.
Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap);
if (delegate == null) {
@@ -360,7 +360,7 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int nativeConfig(int nativeBitmap) {
+ /*package*/ static int nativeConfig(long nativeBitmap) {
// get the delegate from the native int.
Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap);
if (delegate == null) {
@@ -371,7 +371,7 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean nativeHasAlpha(int nativeBitmap) {
+ /*package*/ static boolean nativeHasAlpha(long nativeBitmap) {
// get the delegate from the native int.
Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap);
if (delegate == null) {
@@ -382,7 +382,7 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean nativeHasMipMap(int nativeBitmap) {
+ /*package*/ static boolean nativeHasMipMap(long nativeBitmap) {
// get the delegate from the native int.
Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap);
if (delegate == null) {
@@ -393,7 +393,7 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int nativeGetPixel(int nativeBitmap, int x, int y,
+ /*package*/ static int nativeGetPixel(long nativeBitmap, int x, int y,
boolean isPremultiplied) {
// get the delegate from the native int.
Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap);
@@ -406,7 +406,7 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void nativeGetPixels(int nativeBitmap, int[] pixels, int offset,
+ /*package*/ static void nativeGetPixels(long nativeBitmap, int[] pixels, int offset,
int stride, int x, int y, int width, int height, boolean isPremultiplied) {
Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap);
if (delegate == null) {
@@ -418,7 +418,7 @@ public final class Bitmap_Delegate {
@LayoutlibDelegate
- /*package*/ static void nativeSetPixel(int nativeBitmap, int x, int y, int color,
+ /*package*/ static void nativeSetPixel(long nativeBitmap, int x, int y, int color,
boolean isPremultiplied) {
Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap);
if (delegate == null) {
@@ -429,7 +429,7 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void nativeSetPixels(int nativeBitmap, int[] colors, int offset,
+ /*package*/ static void nativeSetPixels(long nativeBitmap, int[] colors, int offset,
int stride, int x, int y, int width, int height, boolean isPremultiplied) {
Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap);
if (delegate == null) {
@@ -440,21 +440,21 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void nativeCopyPixelsToBuffer(int nativeBitmap, Buffer dst) {
+ /*package*/ static void nativeCopyPixelsToBuffer(long nativeBitmap, Buffer dst) {
// FIXME implement native delegate
Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED,
"Bitmap.copyPixelsToBuffer is not supported.", null, null /*data*/);
}
@LayoutlibDelegate
- /*package*/ static void nativeCopyPixelsFromBuffer(int nb, Buffer src) {
+ /*package*/ static void nativeCopyPixelsFromBuffer(long nb, Buffer src) {
// FIXME implement native delegate
Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED,
"Bitmap.copyPixelsFromBuffer is not supported.", null, null /*data*/);
}
@LayoutlibDelegate
- /*package*/ static int nativeGenerationId(int nativeBitmap) {
+ /*package*/ static int nativeGenerationId(long nativeBitmap) {
Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap);
if (delegate == null) {
return 0;
@@ -474,7 +474,7 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean nativeWriteToParcel(int nativeBitmap, boolean isMutable,
+ /*package*/ static boolean nativeWriteToParcel(long nativeBitmap, boolean isMutable,
int density, Parcel p) {
// This is only called when sending a bitmap through aidl, so really this should not
// be called.
@@ -485,7 +485,7 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
- /*package*/ static Bitmap nativeExtractAlpha(int nativeBitmap, int nativePaint,
+ /*package*/ static Bitmap nativeExtractAlpha(long nativeBitmap, long nativePaint,
int[] offsetXY) {
Bitmap_Delegate bitmap = sManager.getDelegate(nativeBitmap);
if (bitmap == null) {
@@ -513,12 +513,12 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void nativePrepareToDraw(int nativeBitmap) {
+ /*package*/ static void nativePrepareToDraw(long nativeBitmap) {
// nothing to be done here.
}
@LayoutlibDelegate
- /*package*/ static void nativeSetHasAlpha(int nativeBitmap, boolean hasAlpha) {
+ /*package*/ static void nativeSetHasAlpha(long nativeBitmap, boolean hasAlpha) {
// get the delegate from the native int.
Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap);
if (delegate == null) {
@@ -529,7 +529,7 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void nativeSetHasMipMap(int nativeBitmap, boolean hasMipMap) {
+ /*package*/ static void nativeSetHasMipMap(long nativeBitmap, boolean hasMipMap) {
// get the delegate from the native int.
Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap);
if (delegate == null) {
@@ -540,7 +540,7 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean nativeSameAs(int nb0, int nb1) {
+ /*package*/ static boolean nativeSameAs(long nb0, long nb1) {
Bitmap_Delegate delegate1 = sManager.getDelegate(nb0);
if (delegate1 == null) {
return false;
@@ -593,7 +593,7 @@ public final class Bitmap_Delegate {
private static Bitmap createBitmap(Bitmap_Delegate delegate,
Set<BitmapCreateFlags> createFlags, int density) {
// get its native_int
- int nativeInt = sManager.addNewDelegate(delegate);
+ long nativeInt = sManager.addNewDelegate(delegate);
int width = delegate.mImage.getWidth();
int height = delegate.mImage.getHeight();
diff --git a/tools/layoutlib/bridge/src/android/graphics/BlurMaskFilter_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/BlurMaskFilter_Delegate.java
index 4becba130127..d2569c777527 100644
--- a/tools/layoutlib/bridge/src/android/graphics/BlurMaskFilter_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/BlurMaskFilter_Delegate.java
@@ -55,7 +55,7 @@ public class BlurMaskFilter_Delegate extends MaskFilter_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeConstructor(float radius, int style) {
+ /*package*/ static long nativeConstructor(float radius, int style) {
BlurMaskFilter_Delegate newDelegate = new BlurMaskFilter_Delegate();
return sManager.addNewDelegate(newDelegate);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
index 10ad0a3f5a1f..9d2186612df8 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
@@ -77,7 +77,7 @@ public final class Canvas_Delegate {
/**
* Returns the native delegate associated to a given an int referencing a {@link Canvas} object.
*/
- public static Canvas_Delegate getDelegate(int native_canvas) {
+ public static Canvas_Delegate getDelegate(long native_canvas) {
return sManager.getDelegate(native_canvas);
}
@@ -310,7 +310,7 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int initRaster(int nativeBitmapOrZero) {
+ /*package*/ static long initRaster(long nativeBitmapOrZero) {
if (nativeBitmapOrZero > 0) {
// get the Bitmap from the int
Bitmap_Delegate bitmapDelegate = Bitmap_Delegate.getDelegate(nativeBitmapOrZero);
@@ -328,7 +328,7 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void copyNativeCanvasState(int srcCanvas, int dstCanvas) {
+ /*package*/ static void copyNativeCanvasState(long srcCanvas, long dstCanvas) {
// get the delegate from the native int.
Canvas_Delegate srcCanvasDelegate = sManager.getDelegate(srcCanvas);
if (srcCanvasDelegate == null) {
@@ -344,8 +344,8 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_saveLayer(int nativeCanvas, RectF bounds,
- int paint, int layerFlags) {
+ /*package*/ static long native_saveLayer(long nativeCanvas, RectF bounds,
+ long paint, int layerFlags) {
// get the delegate from the native int.
Canvas_Delegate canvasDelegate = sManager.getDelegate(nativeCanvas);
if (canvasDelegate == null) {
@@ -361,9 +361,9 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_saveLayer(int nativeCanvas, float l,
+ /*package*/ static long native_saveLayer(long nativeCanvas, float l,
float t, float r, float b,
- int paint, int layerFlags) {
+ long paint, int layerFlags) {
// get the delegate from the native int.
Canvas_Delegate canvasDelegate = sManager.getDelegate(nativeCanvas);
if (canvasDelegate == null) {
@@ -380,7 +380,7 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_saveLayerAlpha(int nativeCanvas,
+ /*package*/ static long native_saveLayerAlpha(long nativeCanvas,
RectF bounds, int alpha,
int layerFlags) {
// get the delegate from the native int.
@@ -393,7 +393,7 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_saveLayerAlpha(int nativeCanvas, float l,
+ /*package*/ static long native_saveLayerAlpha(long nativeCanvas, float l,
float t, float r, float b,
int alpha, int layerFlags) {
// get the delegate from the native int.
@@ -407,7 +407,7 @@ public final class Canvas_Delegate {
@LayoutlibDelegate
- /*package*/ static void native_concat(int nCanvas, int nMatrix) {
+ /*package*/ static void native_concat(long nCanvas, long nMatrix) {
// get the delegate from the native int.
Canvas_Delegate canvasDelegate = sManager.getDelegate(nCanvas);
if (canvasDelegate == null) {
@@ -435,7 +435,7 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setMatrix(int nCanvas, int nMatrix) {
+ /*package*/ static void native_setMatrix(long nCanvas, long nMatrix) {
// get the delegate from the native int.
Canvas_Delegate canvasDelegate = sManager.getDelegate(nCanvas);
if (canvasDelegate == null) {
@@ -465,7 +465,7 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_clipRect(int nCanvas,
+ /*package*/ static boolean native_clipRect(long nCanvas,
float left, float top,
float right, float bottom,
int regionOp) {
@@ -480,8 +480,8 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_clipPath(int nativeCanvas,
- int nativePath,
+ /*package*/ static boolean native_clipPath(long nativeCanvas,
+ long nativePath,
int regionOp) {
Canvas_Delegate canvasDelegate = sManager.getDelegate(nativeCanvas);
if (canvasDelegate == null) {
@@ -497,8 +497,8 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_clipRegion(int nativeCanvas,
- int nativeRegion,
+ /*package*/ static boolean native_clipRegion(long nativeCanvas,
+ long nativeRegion,
int regionOp) {
Canvas_Delegate canvasDelegate = sManager.getDelegate(nativeCanvas);
if (canvasDelegate == null) {
@@ -514,7 +514,7 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void nativeSetDrawFilter(int nativeCanvas, int nativeFilter) {
+ /*package*/ static void nativeSetDrawFilter(long nativeCanvas, long nativeFilter) {
Canvas_Delegate canvasDelegate = sManager.getDelegate(nativeCanvas);
if (canvasDelegate == null) {
return;
@@ -530,7 +530,7 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_getClipBounds(int nativeCanvas,
+ /*package*/ static boolean native_getClipBounds(long nativeCanvas,
Rect bounds) {
// get the delegate from the native int.
Canvas_Delegate canvasDelegate = sManager.getDelegate(nativeCanvas);
@@ -551,7 +551,7 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_getCTM(int canvas, int matrix) {
+ /*package*/ static void native_getCTM(long canvas, long matrix) {
// get the delegate from the native int.
Canvas_Delegate canvasDelegate = sManager.getDelegate(canvas);
if (canvasDelegate == null) {
@@ -568,21 +568,21 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_quickReject(int nativeCanvas,
+ /*package*/ static boolean native_quickReject(long nativeCanvas,
RectF rect) {
// FIXME properly implement quickReject
return false;
}
@LayoutlibDelegate
- /*package*/ static boolean native_quickReject(int nativeCanvas,
- int path) {
+ /*package*/ static boolean native_quickReject(long nativeCanvas,
+ long path) {
// FIXME properly implement quickReject
return false;
}
@LayoutlibDelegate
- /*package*/ static boolean native_quickReject(int nativeCanvas,
+ /*package*/ static boolean native_quickReject(long nativeCanvas,
float left, float top,
float right, float bottom) {
// FIXME properly implement quickReject
@@ -590,25 +590,25 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_drawRGB(int nativeCanvas, int r, int g, int b) {
+ /*package*/ static void native_drawRGB(long nativeCanvas, int r, int g, int b) {
native_drawColor(nativeCanvas, 0xFF000000 | r << 16 | (g&0xFF) << 8 | (b&0xFF),
PorterDuff.Mode.SRC_OVER.nativeInt);
}
@LayoutlibDelegate
- /*package*/ static void native_drawARGB(int nativeCanvas, int a, int r, int g, int b) {
+ /*package*/ static void native_drawARGB(long nativeCanvas, int a, int r, int g, int b) {
native_drawColor(nativeCanvas, a << 24 | (r&0xFF) << 16 | (g&0xFF) << 8 | (b&0xFF),
PorterDuff.Mode.SRC_OVER.nativeInt);
}
@LayoutlibDelegate
- /*package*/ static void native_drawColor(int nativeCanvas, int color) {
+ /*package*/ static void native_drawColor(long nativeCanvas, int color) {
native_drawColor(nativeCanvas, color, PorterDuff.Mode.SRC_OVER.nativeInt);
}
@LayoutlibDelegate
- /*package*/ static void native_drawColor(int nativeCanvas, final int color, final int mode) {
+ /*package*/ static void native_drawColor(long nativeCanvas, final int color, final int mode) {
// get the delegate from the native int.
Canvas_Delegate canvasDelegate = sManager.getDelegate(nativeCanvas);
if (canvasDelegate == null) {
@@ -639,16 +639,16 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_drawPaint(int nativeCanvas, int paint) {
+ /*package*/ static void native_drawPaint(long nativeCanvas, long paint) {
// FIXME
Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED,
"Canvas.drawPaint is not supported.", null, null /*data*/);
}
@LayoutlibDelegate
- /*package*/ static void native_drawLine(int nativeCanvas,
+ /*package*/ static void native_drawLine(long nativeCanvas,
final float startX, final float startY, final float stopX, final float stopY,
- int paint) {
+ long paint) {
draw(nativeCanvas, paint, false /*compositeOnly*/, false /*forceSrcMode*/,
new GcSnapshot.Drawable() {
@@ -660,14 +660,13 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_drawRect(int nativeCanvas, RectF rect,
- int paint) {
+ /*package*/ static void native_drawRect(long nativeCanvas, RectF rect, long paint) {
native_drawRect(nativeCanvas, rect.left, rect.top, rect.right, rect.bottom, paint);
}
@LayoutlibDelegate
- /*package*/ static void native_drawRect(int nativeCanvas,
- final float left, final float top, final float right, final float bottom, int paint) {
+ /*package*/ static void native_drawRect(long nativeCanvas,
+ final float left, final float top, final float right, final float bottom, long paint) {
draw(nativeCanvas, paint, false /*compositeOnly*/, false /*forceSrcMode*/,
new GcSnapshot.Drawable() {
@@ -692,7 +691,7 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_drawOval(int nativeCanvas, final RectF oval, int paint) {
+ /*package*/ static void native_drawOval(long nativeCanvas, final RectF oval, long paint) {
if (oval.right > oval.left && oval.bottom > oval.top) {
draw(nativeCanvas, paint, false /*compositeOnly*/, false /*forceSrcMode*/,
new GcSnapshot.Drawable() {
@@ -718,17 +717,17 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_drawCircle(int nativeCanvas,
- float cx, float cy, float radius, int paint) {
+ /*package*/ static void native_drawCircle(long nativeCanvas,
+ float cx, float cy, float radius, long paint) {
native_drawOval(nativeCanvas,
new RectF(cx - radius, cy - radius, cx + radius, cy + radius),
paint);
}
@LayoutlibDelegate
- /*package*/ static void native_drawArc(int nativeCanvas,
+ /*package*/ static void native_drawArc(long nativeCanvas,
final RectF oval, final float startAngle, final float sweep,
- final boolean useCenter, int paint) {
+ final boolean useCenter, long paint) {
if (oval.right > oval.left && oval.bottom > oval.top) {
draw(nativeCanvas, paint, false /*compositeOnly*/, false /*forceSrcMode*/,
new GcSnapshot.Drawable() {
@@ -757,8 +756,8 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_drawRoundRect(int nativeCanvas,
- final RectF rect, final float rx, final float ry, int paint) {
+ /*package*/ static void native_drawRoundRect(long nativeCanvas,
+ final RectF rect, final float rx, final float ry, long paint) {
draw(nativeCanvas, paint, false /*compositeOnly*/, false /*forceSrcMode*/,
new GcSnapshot.Drawable() {
@@ -787,7 +786,7 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_drawPath(int nativeCanvas, int path, int paint) {
+ /*package*/ static void native_drawPath(long nativeCanvas, int path, long paint) {
final Path_Delegate pathDelegate = Path_Delegate.getDelegate(path);
if (pathDelegate == null) {
return;
@@ -814,9 +813,9 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_drawBitmap(Canvas thisCanvas, int nativeCanvas, int bitmap,
+ /*package*/ static void native_drawBitmap(Canvas thisCanvas, long nativeCanvas, long bitmap,
float left, float top,
- int nativePaintOrZero,
+ long nativePaintOrZero,
int canvasDensity,
int screenDensity,
int bitmapDensity) {
@@ -836,9 +835,9 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_drawBitmap(Canvas thisCanvas, int nativeCanvas, int bitmap,
+ /*package*/ static void native_drawBitmap(Canvas thisCanvas, long nativeCanvas, long bitmap,
Rect src, RectF dst,
- int nativePaintOrZero,
+ long nativePaintOrZero,
int screenDensity,
int bitmapDensity) {
// get the delegate from the native int.
@@ -861,9 +860,9 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_drawBitmap(int nativeCanvas, int bitmap,
+ /*package*/ static void native_drawBitmap(long nativeCanvas, long bitmap,
Rect src, Rect dst,
- int nativePaintOrZero,
+ long nativePaintOrZero,
int screenDensity,
int bitmapDensity) {
// get the delegate from the native int.
@@ -886,11 +885,11 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_drawBitmap(int nativeCanvas, int[] colors,
+ /*package*/ static void native_drawBitmap(long nativeCanvas, int[] colors,
int offset, int stride, final float x,
final float y, int width, int height,
boolean hasAlpha,
- int nativePaintOrZero) {
+ long nativePaintOrZero) {
// create a temp BufferedImage containing the content.
final BufferedImage image = new BufferedImage(width, height,
@@ -912,8 +911,8 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void nativeDrawBitmapMatrix(int nCanvas, int nBitmap,
- int nMatrix, int nPaint) {
+ /*package*/ static void nativeDrawBitmapMatrix(long nCanvas, long nBitmap,
+ long nMatrix, long nPaint) {
// get the delegate from the native int.
Canvas_Delegate canvasDelegate = sManager.getDelegate(nCanvas);
if (canvasDelegate == null) {
@@ -953,30 +952,30 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void nativeDrawBitmapMesh(int nCanvas, int nBitmap,
+ /*package*/ static void nativeDrawBitmapMesh(long nCanvas, long nBitmap,
int meshWidth, int meshHeight, float[] verts, int vertOffset, int[] colors,
- int colorOffset, int nPaint) {
+ int colorOffset, long nPaint) {
// FIXME
Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED,
"Canvas.drawBitmapMesh is not supported.", null, null /*data*/);
}
@LayoutlibDelegate
- /*package*/ static void nativeDrawVertices(int nCanvas, int mode, int n,
+ /*package*/ static void nativeDrawVertices(long nCanvas, int mode, int n,
float[] verts, int vertOffset,
float[] texs, int texOffset,
int[] colors, int colorOffset,
short[] indices, int indexOffset,
- int indexCount, int nPaint) {
+ int indexCount, long nPaint) {
// FIXME
Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED,
"Canvas.drawVertices is not supported.", null, null /*data*/);
}
@LayoutlibDelegate
- /*package*/ static void native_drawText(int nativeCanvas,
+ /*package*/ static void native_drawText(long nativeCanvas,
final char[] text, final int index, final int count,
- final float startX, final float startY, final int flags, int paint) {
+ final float startX, final float startY, final int flags, long paint) {
draw(nativeCanvas, paint, false /*compositeOnly*/, false /*forceSrcMode*/,
new GcSnapshot.Drawable() {
@@ -1006,8 +1005,8 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_drawText(int nativeCanvas, String text,
- int start, int end, float x, float y, final int flags, int paint) {
+ /*package*/ static void native_drawText(long nativeCanvas, String text,
+ int start, int end, float x, float y, final int flags, long paint) {
int count = end - start;
char[] buffer = TemporaryBuffer.obtain(count);
TextUtils.getChars(text, start, end, buffer, 0);
@@ -1016,9 +1015,9 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_drawTextRun(int nativeCanvas, String text,
+ /*package*/ static void native_drawTextRun(long nativeCanvas, String text,
int start, int end, int contextStart, int contextEnd,
- float x, float y, int flags, int paint) {
+ float x, float y, int flags, long paint) {
int count = end - start;
char[] buffer = TemporaryBuffer.obtain(count);
TextUtils.getChars(text, start, end, buffer, 0);
@@ -1027,56 +1026,56 @@ public final class Canvas_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_drawTextRun(int nativeCanvas, char[] text,
+ /*package*/ static void native_drawTextRun(long nativeCanvas, char[] text,
int start, int count, int contextStart, int contextCount,
- float x, float y, int flags, int paint) {
+ float x, float y, int flags, long paint) {
native_drawText(nativeCanvas, text, start, count, x, y, flags, paint);
}
@LayoutlibDelegate
- /*package*/ static void native_drawPosText(int nativeCanvas,
+ /*package*/ static void native_drawPosText(long nativeCanvas,
char[] text, int index,
int count, float[] pos,
- int paint) {
+ long paint) {
// FIXME
Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED,
"Canvas.drawPosText is not supported.", null, null /*data*/);
}
@LayoutlibDelegate
- /*package*/ static void native_drawPosText(int nativeCanvas,
+ /*package*/ static void native_drawPosText(long nativeCanvas,
String text, float[] pos,
- int paint) {
+ long paint) {
// FIXME
Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED,
"Canvas.drawPosText is not supported.", null, null /*data*/);
}
@LayoutlibDelegate
- /*package*/ static void native_drawTextOnPath(int nativeCanvas,
+ /*package*/ static void native_drawTextOnPath(long nativeCanvas,
char[] text, int index,
- int count, int path,
+ int count, long path,
float hOffset,
float vOffset, int bidiFlags,
- int paint) {
+ long paint) {
// FIXME
Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED,
"Canvas.drawTextOnPath is not supported.", null, null /*data*/);
}
@LayoutlibDelegate
- /*package*/ static void native_drawTextOnPath(int nativeCanvas,
- String text, int path,
+ /*package*/ static void native_drawTextOnPath(long nativeCanvas,
+ String text, long path,
float hOffset,
float vOffset,
- int flags, int paint) {
+ int flags, long paint) {
// FIXME
Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED,
"Canvas.drawTextOnPath is not supported.", null, null /*data*/);
}
@LayoutlibDelegate
- /*package*/ static void finalizer(int nativeCanvas) {
+ /*package*/ static void finalizer(long nativeCanvas) {
// get the delegate from the native int so that it can be disposed.
Canvas_Delegate canvasDelegate = sManager.getDelegate(nativeCanvas);
if (canvasDelegate == null) {
@@ -1096,7 +1095,7 @@ public final class Canvas_Delegate {
* <p>Note that the drawable may actually be executed several times if there are
* layers involved (see {@link #saveLayer(RectF, int, int)}.
*/
- private static void draw(int nCanvas, int nPaint, boolean compositeOnly, boolean forceSrcMode,
+ private static void draw(long nCanvas, long nPaint, boolean compositeOnly, boolean forceSrcMode,
GcSnapshot.Drawable drawable) {
// get the delegate from the native int.
Canvas_Delegate canvasDelegate = sManager.getDelegate(nCanvas);
@@ -1116,7 +1115,7 @@ public final class Canvas_Delegate {
* <p>Note that the drawable may actually be executed several times if there are
* layers involved (see {@link #saveLayer(RectF, int, int)}.
*/
- private static void draw(int nCanvas, GcSnapshot.Drawable drawable) {
+ private static void draw(long nCanvas, GcSnapshot.Drawable drawable) {
// get the delegate from the native int.
Canvas_Delegate canvasDelegate = sManager.getDelegate(nCanvas);
if (canvasDelegate == null) {
@@ -1194,9 +1193,9 @@ public final class Canvas_Delegate {
}
private static void drawBitmap(
- int nativeCanvas,
+ long nativeCanvas,
Bitmap_Delegate bitmap,
- int nativePaintOrZero,
+ long nativePaintOrZero,
final int sleft, final int stop, final int sright, final int sbottom,
final int dleft, final int dtop, final int dright, final int dbottom) {
// get the delegate from the native int.
diff --git a/tools/layoutlib/bridge/src/android/graphics/ColorFilter_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/ColorFilter_Delegate.java
index e5a7ab6d0d23..d6b3da19a6d8 100644
--- a/tools/layoutlib/bridge/src/android/graphics/ColorFilter_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/ColorFilter_Delegate.java
@@ -46,7 +46,7 @@ public abstract class ColorFilter_Delegate {
// ---- Public Helper methods ----
- public static ColorFilter_Delegate getDelegate(int nativeShader) {
+ public static ColorFilter_Delegate getDelegate(long nativeShader) {
return sManager.getDelegate(nativeShader);
}
@@ -56,7 +56,7 @@ public abstract class ColorFilter_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static void finalizer(int native_instance, int nativeColorFilter) {
+ /*package*/ static void finalizer(long native_instance, long nativeColorFilter) {
sManager.removeJavaReferenceFor(native_instance);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/ColorMatrixColorFilter_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/ColorMatrixColorFilter_Delegate.java
index 2de344b41f8a..ca8f45077523 100644
--- a/tools/layoutlib/bridge/src/android/graphics/ColorMatrixColorFilter_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/ColorMatrixColorFilter_Delegate.java
@@ -55,13 +55,13 @@ public class ColorMatrixColorFilter_Delegate extends ColorFilter_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeColorMatrixFilter(float[] array) {
+ /*package*/ static long nativeColorMatrixFilter(float[] array) {
ColorMatrixColorFilter_Delegate newDelegate = new ColorMatrixColorFilter_Delegate();
return sManager.addNewDelegate(newDelegate);
}
@LayoutlibDelegate
- /*package*/ static int nColorMatrixFilter(int nativeFilter, float[] array) {
+ /*package*/ static long nColorMatrixFilter(long nativeFilter, float[] array) {
// pass
return 0;
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/ComposePathEffect_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/ComposePathEffect_Delegate.java
index 7c04a8709db2..bc3df7d84894 100644
--- a/tools/layoutlib/bridge/src/android/graphics/ComposePathEffect_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/ComposePathEffect_Delegate.java
@@ -62,7 +62,7 @@ public class ComposePathEffect_Delegate extends PathEffect_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeCreate(int outerpe, int innerpe) {
+ /*package*/ static long nativeCreate(long outerpe, long innerpe) {
ComposePathEffect_Delegate newDelegate = new ComposePathEffect_Delegate();
return sManager.addNewDelegate(newDelegate);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/ComposeShader_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/ComposeShader_Delegate.java
index f6e1d0094925..fae8aefbba29 100644
--- a/tools/layoutlib/bridge/src/android/graphics/ComposeShader_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/ComposeShader_Delegate.java
@@ -63,15 +63,15 @@ public class ComposeShader_Delegate extends Shader_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeCreate1(int native_shaderA, int native_shaderB,
- int native_mode) {
+ /*package*/ static long nativeCreate1(long native_shaderA, long native_shaderB,
+ long native_mode) {
// FIXME not supported yet.
ComposeShader_Delegate newDelegate = new ComposeShader_Delegate();
return sManager.addNewDelegate(newDelegate);
}
@LayoutlibDelegate
- /*package*/ static int nativeCreate2(int native_shaderA, int native_shaderB,
+ /*package*/ static long nativeCreate2(long native_shaderA, long native_shaderB,
int porterDuffMode) {
// FIXME not supported yet.
ComposeShader_Delegate newDelegate = new ComposeShader_Delegate();
@@ -79,15 +79,15 @@ public class ComposeShader_Delegate extends Shader_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int nativePostCreate1(int native_shader, int native_skiaShaderA,
- int native_skiaShaderB, int native_mode) {
+ /*package*/ static long nativePostCreate1(long native_shader, long native_skiaShaderA,
+ long native_skiaShaderB, long native_mode) {
// pass, not needed.
return 0;
}
@LayoutlibDelegate
- /*package*/ static int nativePostCreate2(int native_shader, int native_skiaShaderA,
- int native_skiaShaderB, int porterDuffMode) {
+ /*package*/ static long nativePostCreate2(long native_shader, long native_skiaShaderA,
+ long native_skiaShaderB, int porterDuffMode) {
// pass, not needed.
return 0;
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/CornerPathEffect_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/CornerPathEffect_Delegate.java
index b0f8168aa3a0..73745c3b0c00 100644
--- a/tools/layoutlib/bridge/src/android/graphics/CornerPathEffect_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/CornerPathEffect_Delegate.java
@@ -62,7 +62,7 @@ public class CornerPathEffect_Delegate extends PathEffect_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeCreate(float radius) {
+ /*package*/ static long nativeCreate(float radius) {
CornerPathEffect_Delegate newDelegate = new CornerPathEffect_Delegate();
return sManager.addNewDelegate(newDelegate);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/DashPathEffect_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/DashPathEffect_Delegate.java
index d97c2eccd508..881afded1158 100644
--- a/tools/layoutlib/bridge/src/android/graphics/DashPathEffect_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/DashPathEffect_Delegate.java
@@ -73,7 +73,7 @@ public final class DashPathEffect_Delegate extends PathEffect_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeCreate(float intervals[], float phase) {
+ /*package*/ static long nativeCreate(float intervals[], float phase) {
DashPathEffect_Delegate newDelegate = new DashPathEffect_Delegate(intervals, phase);
return sManager.addNewDelegate(newDelegate);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/DiscretePathEffect_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/DiscretePathEffect_Delegate.java
index ec4a810fbda5..46109f3018e1 100644
--- a/tools/layoutlib/bridge/src/android/graphics/DiscretePathEffect_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/DiscretePathEffect_Delegate.java
@@ -62,7 +62,7 @@ public class DiscretePathEffect_Delegate extends PathEffect_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeCreate(float length, float deviation) {
+ /*package*/ static long nativeCreate(float length, float deviation) {
DiscretePathEffect_Delegate newDelegate = new DiscretePathEffect_Delegate();
return sManager.addNewDelegate(newDelegate);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/DrawFilter_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/DrawFilter_Delegate.java
index 870c46b8f5dd..2e1074080bde 100644
--- a/tools/layoutlib/bridge/src/android/graphics/DrawFilter_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/DrawFilter_Delegate.java
@@ -46,7 +46,7 @@ public abstract class DrawFilter_Delegate {
// ---- Public Helper methods ----
- public static DrawFilter_Delegate getDelegate(int nativeDrawFilter) {
+ public static DrawFilter_Delegate getDelegate(long nativeDrawFilter) {
return sManager.getDelegate(nativeDrawFilter);
}
@@ -56,7 +56,7 @@ public abstract class DrawFilter_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static void nativeDestructor(int nativeDrawFilter) {
+ /*package*/ static void nativeDestructor(long nativeDrawFilter) {
sManager.removeJavaReferenceFor(nativeDrawFilter);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/EmbossMaskFilter_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/EmbossMaskFilter_Delegate.java
index ebc1c1d2eca4..e5040ccc4b1e 100644
--- a/tools/layoutlib/bridge/src/android/graphics/EmbossMaskFilter_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/EmbossMaskFilter_Delegate.java
@@ -55,7 +55,7 @@ public class EmbossMaskFilter_Delegate extends MaskFilter_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeConstructor(float[] direction, float ambient,
+ /*package*/ static long nativeConstructor(float[] direction, float ambient,
float specular, float blurRadius) {
EmbossMaskFilter_Delegate newDelegate = new EmbossMaskFilter_Delegate();
return sManager.addNewDelegate(newDelegate);
diff --git a/tools/layoutlib/bridge/src/android/graphics/LayerRasterizer_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/LayerRasterizer_Delegate.java
index 51e0576169c4..10cc57294644 100644
--- a/tools/layoutlib/bridge/src/android/graphics/LayerRasterizer_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/LayerRasterizer_Delegate.java
@@ -55,13 +55,13 @@ public class LayerRasterizer_Delegate extends Rasterizer_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeConstructor() {
+ /*package*/ static long nativeConstructor() {
LayerRasterizer_Delegate newDelegate = new LayerRasterizer_Delegate();
return sManager.addNewDelegate(newDelegate);
}
@LayoutlibDelegate
- /*package*/ static void nativeAddLayer(int native_layer, int native_paint, float dx, float dy) {
+ /*package*/ static void nativeAddLayer(long native_layer, long native_paint, float dx, float dy) {
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/LightingColorFilter_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/LightingColorFilter_Delegate.java
index 0ee883dcd68c..defaac34d237 100644
--- a/tools/layoutlib/bridge/src/android/graphics/LightingColorFilter_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/LightingColorFilter_Delegate.java
@@ -55,13 +55,13 @@ public class LightingColorFilter_Delegate extends ColorFilter_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int native_CreateLightingFilter(int mul, int add) {
+ /*package*/ static long native_CreateLightingFilter(int mul, int add) {
LightingColorFilter_Delegate newDelegate = new LightingColorFilter_Delegate();
return sManager.addNewDelegate(newDelegate);
}
@LayoutlibDelegate
- /*package*/ static int nCreateLightingFilter(int nativeFilter, int mul, int add) {
+ /*package*/ static int nCreateLightingFilter(long nativeFilter, int mul, int add) {
// pass
return 0;
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/LinearGradient_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/LinearGradient_Delegate.java
index f117fca52cc1..ac77377d315b 100644
--- a/tools/layoutlib/bridge/src/android/graphics/LinearGradient_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/LinearGradient_Delegate.java
@@ -54,7 +54,7 @@ public final class LinearGradient_Delegate extends Gradient_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeCreate1(LinearGradient thisGradient,
+ /*package*/ static long nativeCreate1(LinearGradient thisGradient,
float x0, float y0, float x1, float y1,
int colors[], float positions[], int tileMode) {
LinearGradient_Delegate newDelegate = new LinearGradient_Delegate(x0, y0, x1, y1,
@@ -63,7 +63,7 @@ public final class LinearGradient_Delegate extends Gradient_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int nativeCreate2(LinearGradient thisGradient,
+ /*package*/ static long nativeCreate2(LinearGradient thisGradient,
float x0, float y0, float x1, float y1,
int color0, int color1, int tileMode) {
return nativeCreate1(thisGradient,
@@ -72,16 +72,16 @@ public final class LinearGradient_Delegate extends Gradient_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int nativePostCreate1(LinearGradient thisGradient,
- int native_shader, float x0, float y0, float x1, float y1,
+ /*package*/ static long nativePostCreate1(LinearGradient thisGradient,
+ long native_shader, float x0, float y0, float x1, float y1,
int colors[], float positions[], int tileMode) {
// nothing to be done here.
return 0;
}
@LayoutlibDelegate
- /*package*/ static int nativePostCreate2(LinearGradient thisGradient,
- int native_shader, float x0, float y0, float x1, float y1,
+ /*package*/ static long nativePostCreate2(LinearGradient thisGradient,
+ long native_shader, float x0, float y0, float x1, float y1,
int color0, int color1, int tileMode) {
// nothing to be done here.
return 0;
diff --git a/tools/layoutlib/bridge/src/android/graphics/MaskFilter_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/MaskFilter_Delegate.java
index c2f27e43c7bf..e726c5982be2 100644
--- a/tools/layoutlib/bridge/src/android/graphics/MaskFilter_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/MaskFilter_Delegate.java
@@ -46,7 +46,7 @@ public abstract class MaskFilter_Delegate {
// ---- Public Helper methods ----
- public static MaskFilter_Delegate getDelegate(int nativeShader) {
+ public static MaskFilter_Delegate getDelegate(long nativeShader) {
return sManager.getDelegate(nativeShader);
}
@@ -56,7 +56,7 @@ public abstract class MaskFilter_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static void nativeDestructor(int native_filter) {
+ /*package*/ static void nativeDestructor(long native_filter) {
sManager.removeJavaReferenceFor(native_filter);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/Matrix_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Matrix_Delegate.java
index 5df2a21567cf..1d66586cc7cf 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Matrix_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Matrix_Delegate.java
@@ -53,7 +53,7 @@ public final class Matrix_Delegate {
// ---- Public Helper methods ----
- public static Matrix_Delegate getDelegate(int native_instance) {
+ public static Matrix_Delegate getDelegate(long native_instance) {
return sManager.getDelegate(native_instance);
}
@@ -174,7 +174,7 @@ public final class Matrix_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int native_create(int native_src_or_zero) {
+ /*package*/ static long native_create(long native_src_or_zero) {
// create the delegate
Matrix_Delegate newDelegate = new Matrix_Delegate();
@@ -193,7 +193,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_isIdentity(int native_object) {
+ /*package*/ static boolean native_isIdentity(long native_object) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return false;
@@ -203,7 +203,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_rectStaysRect(int native_object) {
+ /*package*/ static boolean native_rectStaysRect(long native_object) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return true;
@@ -213,7 +213,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_reset(int native_object) {
+ /*package*/ static void native_reset(long native_object) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return;
@@ -223,7 +223,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_set(int native_object, int other) {
+ /*package*/ static void native_set(long native_object, long other) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return;
@@ -238,7 +238,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setTranslate(int native_object, float dx, float dy) {
+ /*package*/ static void native_setTranslate(long native_object, float dx, float dy) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return;
@@ -248,7 +248,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setScale(int native_object, float sx, float sy,
+ /*package*/ static void native_setScale(long native_object, float sx, float sy,
float px, float py) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
@@ -259,7 +259,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setScale(int native_object, float sx, float sy) {
+ /*package*/ static void native_setScale(long native_object, float sx, float sy) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return;
@@ -277,7 +277,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setRotate(int native_object, float degrees, float px, float py) {
+ /*package*/ static void native_setRotate(long native_object, float degrees, float px, float py) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return;
@@ -287,7 +287,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setRotate(int native_object, float degrees) {
+ /*package*/ static void native_setRotate(long native_object, float degrees) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return;
@@ -297,7 +297,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setSinCos(int native_object, float sinValue, float cosValue,
+ /*package*/ static void native_setSinCos(long native_object, float sinValue, float cosValue,
float px, float py) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
@@ -316,7 +316,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setSinCos(int native_object, float sinValue, float cosValue) {
+ /*package*/ static void native_setSinCos(long native_object, float sinValue, float cosValue) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return;
@@ -326,7 +326,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setSkew(int native_object, float kx, float ky,
+ /*package*/ static void native_setSkew(long native_object, float kx, float ky,
float px, float py) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
@@ -337,7 +337,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setSkew(int native_object, float kx, float ky) {
+ /*package*/ static void native_setSkew(long native_object, float kx, float ky) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return;
@@ -355,7 +355,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_setConcat(int native_object, int a, int b) {
+ /*package*/ static boolean native_setConcat(long native_object, long a, long b) {
if (a == native_object) {
return native_preConcat(native_object, b);
} else if (b == native_object) {
@@ -383,7 +383,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_preTranslate(int native_object, float dx, float dy) {
+ /*package*/ static boolean native_preTranslate(long native_object, float dx, float dy) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return false;
@@ -394,7 +394,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_preScale(int native_object, float sx, float sy,
+ /*package*/ static boolean native_preScale(long native_object, float sx, float sy,
float px, float py) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
@@ -406,7 +406,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_preScale(int native_object, float sx, float sy) {
+ /*package*/ static boolean native_preScale(long native_object, float sx, float sy) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return false;
@@ -417,7 +417,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_preRotate(int native_object, float degrees,
+ /*package*/ static boolean native_preRotate(long native_object, float degrees,
float px, float py) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
@@ -429,7 +429,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_preRotate(int native_object, float degrees) {
+ /*package*/ static boolean native_preRotate(long native_object, float degrees) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return false;
@@ -444,7 +444,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_preSkew(int native_object, float kx, float ky,
+ /*package*/ static boolean native_preSkew(long native_object, float kx, float ky,
float px, float py) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
@@ -456,7 +456,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_preSkew(int native_object, float kx, float ky) {
+ /*package*/ static boolean native_preSkew(long native_object, float kx, float ky) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return false;
@@ -467,7 +467,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_preConcat(int native_object, int other_matrix) {
+ /*package*/ static boolean native_preConcat(long native_object, long other_matrix) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return false;
@@ -483,7 +483,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_postTranslate(int native_object, float dx, float dy) {
+ /*package*/ static boolean native_postTranslate(long native_object, float dx, float dy) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return false;
@@ -494,7 +494,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_postScale(int native_object, float sx, float sy,
+ /*package*/ static boolean native_postScale(long native_object, float sx, float sy,
float px, float py) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
@@ -506,7 +506,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_postScale(int native_object, float sx, float sy) {
+ /*package*/ static boolean native_postScale(long native_object, float sx, float sy) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return false;
@@ -517,7 +517,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_postRotate(int native_object, float degrees,
+ /*package*/ static boolean native_postRotate(long native_object, float degrees,
float px, float py) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
@@ -529,7 +529,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_postRotate(int native_object, float degrees) {
+ /*package*/ static boolean native_postRotate(long native_object, float degrees) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return false;
@@ -540,7 +540,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_postSkew(int native_object, float kx, float ky,
+ /*package*/ static boolean native_postSkew(long native_object, float kx, float ky,
float px, float py) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
@@ -552,7 +552,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_postSkew(int native_object, float kx, float ky) {
+ /*package*/ static boolean native_postSkew(long native_object, float kx, float ky) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return false;
@@ -563,7 +563,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_postConcat(int native_object, int other_matrix) {
+ /*package*/ static boolean native_postConcat(long native_object, long other_matrix) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return false;
@@ -579,7 +579,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_setRectToRect(int native_object, RectF src,
+ /*package*/ static boolean native_setRectToRect(long native_object, RectF src,
RectF dst, int stf) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
@@ -644,7 +644,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_setPolyToPoly(int native_object, float[] src, int srcIndex,
+ /*package*/ static boolean native_setPolyToPoly(long native_object, float[] src, int srcIndex,
float[] dst, int dstIndex, int pointCount) {
// FIXME
Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED,
@@ -654,7 +654,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_invert(int native_object, int inverse) {
+ /*package*/ static boolean native_invert(long native_object, int inverse) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return false;
@@ -682,7 +682,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_mapPoints(int native_object, float[] dst, int dstIndex,
+ /*package*/ static void native_mapPoints(long native_object, float[] dst, int dstIndex,
float[] src, int srcIndex, int ptCount, boolean isPts) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
@@ -697,7 +697,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_mapRect(int native_object, RectF dst, RectF src) {
+ /*package*/ static boolean native_mapRect(long native_object, RectF dst, RectF src) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return false;
@@ -707,7 +707,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static float native_mapRadius(int native_object, float radius) {
+ /*package*/ static float native_mapRadius(long native_object, float radius) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return 0.f;
@@ -723,7 +723,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_getValues(int native_object, float[] values) {
+ /*package*/ static void native_getValues(long native_object, float[] values) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return;
@@ -733,7 +733,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setValues(int native_object, float[] values) {
+ /*package*/ static void native_setValues(long native_object, float[] values) {
Matrix_Delegate d = sManager.getDelegate(native_object);
if (d == null) {
return;
@@ -743,7 +743,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_equals(int native_a, int native_b) {
+ /*package*/ static boolean native_equals(long native_a, long native_b) {
Matrix_Delegate a = sManager.getDelegate(native_a);
if (a == null) {
return false;
@@ -764,7 +764,7 @@ public final class Matrix_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void finalizer(int native_instance) {
+ /*package*/ static void finalizer(long native_instance) {
sManager.removeJavaReferenceFor(native_instance);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/NinePatch_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/NinePatch_Delegate.java
index a79ec8fde741..74b2893ae495 100644
--- a/tools/layoutlib/bridge/src/android/graphics/NinePatch_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/NinePatch_Delegate.java
@@ -158,7 +158,7 @@ public final class NinePatch_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int validateNinePatchChunk(int bitmap, byte[] chunk) {
+ /*package*/ static long validateNinePatchChunk(long bitmap, byte[] chunk) {
// the default JNI implementation only checks that the byte[] has the same
// size as the C struct it represent. Since we cannot do the same check (serialization
// will return different size depending on content), we do nothing.
@@ -168,13 +168,13 @@ public final class NinePatch_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void nativeFinalize(int chunk) {
+ /*package*/ static void nativeFinalize(long chunk) {
sManager.removeJavaReferenceFor(chunk);
}
@LayoutlibDelegate
- /*package*/ static void nativeDraw(int canvas_instance, RectF loc, int bitmap_instance,
- int chunk, int paint_instance_or_null, int destDensity, int srcDensity) {
+ /*package*/ static void nativeDraw(long canvas_instance, RectF loc, long bitmap_instance,
+ long chunk, long paint_instance_or_null, int destDensity, int srcDensity) {
draw(canvas_instance,
(int) loc.left, (int) loc.top, (int) loc.right, (int) loc.bottom,
bitmap_instance, chunk, paint_instance_or_null,
@@ -182,8 +182,8 @@ public final class NinePatch_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void nativeDraw(int canvas_instance, Rect loc, int bitmap_instance,
- int chunk, int paint_instance_or_null, int destDensity, int srcDensity) {
+ /*package*/ static void nativeDraw(long canvas_instance, Rect loc, long bitmap_instance,
+ long chunk, long paint_instance_or_null, int destDensity, int srcDensity) {
draw(canvas_instance,
loc.left, loc.top, loc.right, loc.bottom,
bitmap_instance, chunk, paint_instance_or_null,
@@ -191,15 +191,15 @@ public final class NinePatch_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int nativeGetTransparentRegion(int bitmap, int chunk, Rect location) {
+ /*package*/ static long nativeGetTransparentRegion(long bitmap, long chunk, Rect location) {
return 0;
}
// ---- Private Helper methods ----
- private static void draw(int canvas_instance,
+ private static void draw(long canvas_instance,
final int left, final int top, final int right, final int bottom,
- int bitmap_instance, int chunk, int paint_instance_or_null,
+ long bitmap_instance, long chunk, long paint_instance_or_null,
final int destDensity, final int srcDensity) {
// get the delegate from the native int.
final Bitmap_Delegate bitmap_delegate = Bitmap_Delegate.getDelegate(bitmap_instance);
diff --git a/tools/layoutlib/bridge/src/android/graphics/PaintFlagsDrawFilter_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/PaintFlagsDrawFilter_Delegate.java
index 71d346a93553..fa20746e4495 100644
--- a/tools/layoutlib/bridge/src/android/graphics/PaintFlagsDrawFilter_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/PaintFlagsDrawFilter_Delegate.java
@@ -55,7 +55,7 @@ public class PaintFlagsDrawFilter_Delegate extends DrawFilter_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeConstructor(int clearBits, int setBits) {
+ /*package*/ static long nativeConstructor(int clearBits, int setBits) {
PaintFlagsDrawFilter_Delegate newDelegate = new PaintFlagsDrawFilter_Delegate();
return sManager.addNewDelegate(newDelegate);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/Paint_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Paint_Delegate.java
index 4ad1a175853b..7007b7187407 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Paint_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Paint_Delegate.java
@@ -96,7 +96,7 @@ public class Paint_Delegate {
// ---- Public Helper methods ----
- public static Paint_Delegate getDelegate(int native_paint) {
+ public static Paint_Delegate getDelegate(long native_paint) {
return sManager.getDelegate(native_paint);
}
@@ -642,13 +642,13 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_init() {
+ /*package*/ static long native_init() {
Paint_Delegate newDelegate = new Paint_Delegate();
return sManager.addNewDelegate(newDelegate);
}
@LayoutlibDelegate
- /*package*/ static int native_initWithPaint(int paint) {
+ /*package*/ static long native_initWithPaint(long paint) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(paint);
if (delegate == null) {
@@ -660,7 +660,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_reset(int native_object) {
+ /*package*/ static void native_reset(long native_object) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -671,7 +671,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_set(int native_dst, int native_src) {
+ /*package*/ static void native_set(long native_dst, long native_src) {
// get the delegate from the native int.
Paint_Delegate delegate_dst = sManager.getDelegate(native_dst);
if (delegate_dst == null) {
@@ -688,7 +688,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_getStyle(int native_object) {
+ /*package*/ static long native_getStyle(long native_object) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -699,7 +699,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setStyle(int native_object, int style) {
+ /*package*/ static void native_setStyle(long native_object, int style) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -710,7 +710,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_getStrokeCap(int native_object) {
+ /*package*/ static long native_getStrokeCap(long native_object) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -721,7 +721,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setStrokeCap(int native_object, int cap) {
+ /*package*/ static void native_setStrokeCap(long native_object, int cap) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -732,7 +732,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_getStrokeJoin(int native_object) {
+ /*package*/ static long native_getStrokeJoin(long native_object) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -743,7 +743,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setStrokeJoin(int native_object, int join) {
+ /*package*/ static void native_setStrokeJoin(long native_object, int join) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -754,7 +754,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_getFillPath(int native_object, int src, int dst) {
+ /*package*/ static boolean native_getFillPath(long native_object, long src, long dst) {
Paint_Delegate paint = sManager.getDelegate(native_object);
if (paint == null) {
return false;
@@ -780,7 +780,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_setShader(int native_object, int shader) {
+ /*package*/ static long native_setShader(long native_object, long shader) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -793,7 +793,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_setColorFilter(int native_object, int filter) {
+ /*package*/ static long native_setColorFilter(long native_object, long filter) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -812,7 +812,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_setXfermode(int native_object, int xfermode) {
+ /*package*/ static long native_setXfermode(long native_object, long xfermode) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -825,7 +825,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_setPathEffect(int native_object, int effect) {
+ /*package*/ static long native_setPathEffect(long native_object, long effect) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -838,7 +838,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_setMaskFilter(int native_object, int maskfilter) {
+ /*package*/ static long native_setMaskFilter(long native_object, long maskfilter) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -857,7 +857,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_setTypeface(int native_object, int typeface) {
+ /*package*/ static long native_setTypeface(long native_object, long typeface) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -870,7 +870,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_setRasterizer(int native_object, int rasterizer) {
+ /*package*/ static long native_setRasterizer(long native_object, long rasterizer) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -889,7 +889,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_getTextAlign(int native_object) {
+ /*package*/ static long native_getTextAlign(long native_object) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -900,7 +900,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setTextAlign(int native_object, int align) {
+ /*package*/ static void native_setTextAlign(long native_object, int align) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -911,7 +911,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setTextLocale(int native_object, String locale) {
+ /*package*/ static void native_setTextLocale(long native_object, String locale) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
if (delegate == null) {
@@ -922,7 +922,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_getTextWidths(int native_object, char[] text, int index,
+ /*package*/ static long native_getTextWidths(long native_object, char[] text, int index,
int count, int bidiFlags, float[] widths) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
@@ -964,21 +964,21 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_getTextWidths(int native_object, String text, int start,
+ /*package*/ static long native_getTextWidths(long native_object, String text, int start,
int end, int bidiFlags, float[] widths) {
return native_getTextWidths(native_object, text.toCharArray(), start, end - start,
bidiFlags, widths);
}
@LayoutlibDelegate
- /* package */static int native_getTextGlyphs(int native_object, String text, int start,
+ /* package */static long native_getTextGlyphs(long native_object, String text, int start,
int end, int contextStart, int contextEnd, int flags, char[] glyphs) {
// FIXME
return 0;
}
@LayoutlibDelegate
- /*package*/ static float native_getTextRunAdvances(int native_object,
+ /*package*/ static float native_getTextRunAdvances(long native_object,
char[] text, int index, int count, int contextIndex, int contextCount,
int flags, float[] advances, int advancesIndex) {
@@ -999,7 +999,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static float native_getTextRunAdvances(int native_object,
+ /*package*/ static float native_getTextRunAdvances(long native_object,
String text, int start, int end, int contextStart, int contextEnd,
int flags, float[] advances, int advancesIndex) {
// FIXME: support contextStart and contextEnd
@@ -1012,7 +1012,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_getTextRunCursor(Paint thisPaint, int native_object, char[] text,
+ /*package*/ static long native_getTextRunCursor(Paint thisPaint, long native_object, char[] text,
int contextStart, int contextLength, int flags, int offset, int cursorOpt) {
// FIXME
Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED,
@@ -1021,7 +1021,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_getTextRunCursor(Paint thisPaint, int native_object, String text,
+ /*package*/ static long native_getTextRunCursor(Paint thisPaint, long native_object, String text,
int contextStart, int contextEnd, int flags, int offset, int cursorOpt) {
// FIXME
Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED,
@@ -1030,30 +1030,30 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_getTextPath(int native_object, int bidiFlags,
- char[] text, int index, int count, float x, float y, int path) {
+ /*package*/ static void native_getTextPath(long native_object, int bidiFlags,
+ char[] text, int index, int count, float x, float y, long path) {
// FIXME
Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED,
"Paint.getTextPath is not supported.", null, null /*data*/);
}
@LayoutlibDelegate
- /*package*/ static void native_getTextPath(int native_object, int bidiFlags,
- String text, int start, int end, float x, float y, int path) {
+ /*package*/ static void native_getTextPath(long native_object, int bidiFlags,
+ String text, int start, int end, float x, float y, long path) {
// FIXME
Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED,
"Paint.getTextPath is not supported.", null, null /*data*/);
}
@LayoutlibDelegate
- /*package*/ static void nativeGetStringBounds(int nativePaint, String text, int start,
+ /*package*/ static void nativeGetStringBounds(long nativePaint, String text, int start,
int end, int bidiFlags, Rect bounds) {
nativeGetCharArrayBounds(nativePaint, text.toCharArray(), start, end - start, bidiFlags,
bounds);
}
@LayoutlibDelegate
- /*package*/ static void nativeGetCharArrayBounds(int nativePaint, char[] text, int index,
+ /*package*/ static void nativeGetCharArrayBounds(long nativePaint, char[] text, int index,
int count, int bidiFlags, Rect bounds) {
// get the delegate from the native int.
@@ -1065,7 +1065,7 @@ public class Paint_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void finalizer(int nativePaint) {
+ /*package*/ static void finalizer(long nativePaint) {
sManager.removeJavaReferenceFor(nativePaint);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/PathDashPathEffect_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/PathDashPathEffect_Delegate.java
index c448f0ec0f20..fd9ba62e2695 100644
--- a/tools/layoutlib/bridge/src/android/graphics/PathDashPathEffect_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/PathDashPathEffect_Delegate.java
@@ -62,7 +62,7 @@ public class PathDashPathEffect_Delegate extends PathEffect_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeCreate(int native_path, float advance, float phase,
+ /*package*/ static long nativeCreate(long native_path, float advance, float phase,
int native_style) {
PathDashPathEffect_Delegate newDelegate = new PathDashPathEffect_Delegate();
return sManager.addNewDelegate(newDelegate);
diff --git a/tools/layoutlib/bridge/src/android/graphics/PathEffect_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/PathEffect_Delegate.java
index bd2b6de480da..000481ec7cc9 100644
--- a/tools/layoutlib/bridge/src/android/graphics/PathEffect_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/PathEffect_Delegate.java
@@ -48,7 +48,7 @@ public abstract class PathEffect_Delegate {
// ---- Public Helper methods ----
- public static PathEffect_Delegate getDelegate(int nativeShader) {
+ public static PathEffect_Delegate getDelegate(long nativeShader) {
return sManager.getDelegate(nativeShader);
}
@@ -60,7 +60,7 @@ public abstract class PathEffect_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static void nativeDestructor(int native_patheffect) {
+ /*package*/ static void nativeDestructor(long native_patheffect) {
sManager.removeJavaReferenceFor(native_patheffect);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/Path_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Path_Delegate.java
index 9d80be922195..4e9c1290f851 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Path_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Path_Delegate.java
@@ -63,7 +63,7 @@ public final class Path_Delegate {
// ---- Public Helper methods ----
- public static Path_Delegate getDelegate(int nPath) {
+ public static Path_Delegate getDelegate(long nPath) {
return sManager.getDelegate(nPath);
}
@@ -88,7 +88,7 @@ public final class Path_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int init1() {
+ /*package*/ static long init1() {
// create the delegate
Path_Delegate newDelegate = new Path_Delegate();
@@ -96,7 +96,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int init2(int nPath) {
+ /*package*/ static long init2(long nPath) {
// create the delegate
Path_Delegate newDelegate = new Path_Delegate();
@@ -110,7 +110,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_reset(int nPath) {
+ /*package*/ static void native_reset(long nPath) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -120,14 +120,14 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_rewind(int nPath) {
+ /*package*/ static void native_rewind(long nPath) {
// call out to reset since there's nothing to optimize in
// terms of data structs.
native_reset(nPath);
}
@LayoutlibDelegate
- /*package*/ static void native_set(int native_dst, int native_src) {
+ /*package*/ static void native_set(long native_dst, long native_src) {
Path_Delegate pathDstDelegate = sManager.getDelegate(native_dst);
if (pathDstDelegate == null) {
return;
@@ -142,7 +142,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int native_getFillType(int nPath) {
+ /*package*/ static long native_getFillType(long nPath) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return 0;
@@ -152,7 +152,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_setFillType(int nPath, int ft) {
+ /*package*/ static void native_setFillType(long nPath, int ft) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -162,7 +162,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_isEmpty(int nPath) {
+ /*package*/ static boolean native_isEmpty(long nPath) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return true;
@@ -172,7 +172,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean native_isRect(int nPath, RectF rect) {
+ /*package*/ static boolean native_isRect(long nPath, RectF rect) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return false;
@@ -192,7 +192,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_computeBounds(int nPath, RectF bounds) {
+ /*package*/ static void native_computeBounds(long nPath, RectF bounds) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -202,13 +202,13 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_incReserve(int nPath, int extraPtCount) {
+ /*package*/ static void native_incReserve(long nPath, int extraPtCount) {
// since we use a java2D path, there's no way to pre-allocate new points,
// so we do nothing.
}
@LayoutlibDelegate
- /*package*/ static void native_moveTo(int nPath, float x, float y) {
+ /*package*/ static void native_moveTo(long nPath, float x, float y) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -218,7 +218,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_rMoveTo(int nPath, float dx, float dy) {
+ /*package*/ static void native_rMoveTo(long nPath, float dx, float dy) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -228,7 +228,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_lineTo(int nPath, float x, float y) {
+ /*package*/ static void native_lineTo(long nPath, float x, float y) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -238,7 +238,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_rLineTo(int nPath, float dx, float dy) {
+ /*package*/ static void native_rLineTo(long nPath, float dx, float dy) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -248,7 +248,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_quadTo(int nPath, float x1, float y1, float x2, float y2) {
+ /*package*/ static void native_quadTo(long nPath, float x1, float y1, float x2, float y2) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -258,7 +258,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_rQuadTo(int nPath, float dx1, float dy1, float dx2, float dy2) {
+ /*package*/ static void native_rQuadTo(long nPath, float dx1, float dy1, float dx2, float dy2) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -268,7 +268,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_cubicTo(int nPath, float x1, float y1,
+ /*package*/ static void native_cubicTo(long nPath, float x1, float y1,
float x2, float y2, float x3, float y3) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
@@ -279,7 +279,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_rCubicTo(int nPath, float x1, float y1,
+ /*package*/ static void native_rCubicTo(long nPath, float x1, float y1,
float x2, float y2, float x3, float y3) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
@@ -290,7 +290,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_arcTo(int nPath, RectF oval,
+ /*package*/ static void native_arcTo(long nPath, RectF oval,
float startAngle, float sweepAngle, boolean forceMoveTo) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
@@ -301,7 +301,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_close(int nPath) {
+ /*package*/ static void native_close(long nPath) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -311,7 +311,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_addRect(int nPath, RectF rect, int dir) {
+ /*package*/ static void native_addRect(long nPath, RectF rect, int dir) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -321,7 +321,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_addRect(int nPath,
+ /*package*/ static void native_addRect(long nPath,
float left, float top, float right, float bottom, int dir) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
@@ -332,7 +332,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_addOval(int nPath, RectF oval, int dir) {
+ /*package*/ static void native_addOval(long nPath, RectF oval, int dir) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -343,7 +343,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_addCircle(int nPath, float x, float y, float radius, int dir) {
+ /*package*/ static void native_addCircle(long nPath, float x, float y, float radius, int dir) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -355,7 +355,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_addArc(int nPath, RectF oval,
+ /*package*/ static void native_addArc(long nPath, RectF oval,
float startAngle, float sweepAngle) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
@@ -370,7 +370,7 @@ public final class Path_Delegate {
@LayoutlibDelegate
/*package*/ static void native_addRoundRect(
- int nPath, RectF rect, float rx, float ry, int dir) {
+ long nPath, RectF rect, float rx, float ry, int dir) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
@@ -382,7 +382,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_addRoundRect(int nPath, RectF rect, float[] radii, int dir) {
+ /*package*/ static void native_addRoundRect(long nPath, RectF rect, float[] radii, int dir) {
// Java2D doesn't support different rounded corners in each corner, so just use the
// first value.
native_addRoundRect(nPath, rect, radii[0], radii[1], dir);
@@ -401,17 +401,17 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_addPath(int nPath, int src, float dx, float dy) {
+ /*package*/ static void native_addPath(long nPath, int src, float dx, float dy) {
addPath(nPath, src, AffineTransform.getTranslateInstance(dx, dy));
}
@LayoutlibDelegate
- /*package*/ static void native_addPath(int nPath, int src) {
+ /*package*/ static void native_addPath(long nPath, int src) {
addPath(nPath, src, null /*transform*/);
}
@LayoutlibDelegate
- /*package*/ static void native_addPath(int nPath, int src, int matrix) {
+ /*package*/ static void native_addPath(long nPath, int src, long matrix) {
Matrix_Delegate matrixDelegate = Matrix_Delegate.getDelegate(matrix);
if (matrixDelegate == null) {
return;
@@ -421,7 +421,7 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_offset(int nPath, float dx, float dy, int dst_path) {
+ /*package*/ static void native_offset(long nPath, float dx, float dy, long dst_path) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -434,12 +434,12 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_offset(int nPath, float dx, float dy) {
+ /*package*/ static void native_offset(long nPath, float dx, float dy) {
native_offset(nPath, dx, dy, 0);
}
@LayoutlibDelegate
- /*package*/ static void native_setLastPoint(int nPath, float dx, float dy) {
+ /*package*/ static void native_setLastPoint(long nPath, float dx, float dy) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -450,8 +450,8 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_transform(int nPath, int matrix,
- int dst_path) {
+ /*package*/ static void native_transform(long nPath, long matrix,
+ long dst_path) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -469,18 +469,18 @@ public final class Path_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void native_transform(int nPath, int matrix) {
+ /*package*/ static void native_transform(long nPath, long matrix) {
native_transform(nPath, matrix, 0);
}
@LayoutlibDelegate
- /*package*/ static boolean native_op(int nPath1, int nPath2, int op, int result) {
+ /*package*/ static boolean native_op(long nPath1, long nPath2, int op, int result) {
Bridge.getLog().error(LayoutLog.TAG_UNSUPPORTED, "Path.op() not supported", null);
return false;
}
@LayoutlibDelegate
- /*package*/ static void finalizer(int nPath) {
+ /*package*/ static void finalizer(long nPath) {
sManager.removeJavaReferenceFor(nPath);
}
@@ -528,7 +528,7 @@ public final class Path_Delegate {
return null;
}
- private static void addPath(int destPath, int srcPath, AffineTransform transform) {
+ private static void addPath(long destPath, long srcPath, AffineTransform transform) {
Path_Delegate destPathDelegate = sManager.getDelegate(destPath);
if (destPathDelegate == null) {
return;
diff --git a/tools/layoutlib/bridge/src/android/graphics/PixelXorXfermode_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/PixelXorXfermode_Delegate.java
index 4ab044bd107a..f27144f45448 100644
--- a/tools/layoutlib/bridge/src/android/graphics/PixelXorXfermode_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/PixelXorXfermode_Delegate.java
@@ -61,7 +61,7 @@ public class PixelXorXfermode_Delegate extends Xfermode_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeCreate(int opColor) {
+ /*package*/ static long nativeCreate(int opColor) {
PixelXorXfermode_Delegate newDelegate = new PixelXorXfermode_Delegate();
return sManager.addNewDelegate(newDelegate);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/PorterDuffColorFilter_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/PorterDuffColorFilter_Delegate.java
index c45dbaad344d..6049919d6cb5 100644
--- a/tools/layoutlib/bridge/src/android/graphics/PorterDuffColorFilter_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/PorterDuffColorFilter_Delegate.java
@@ -55,13 +55,13 @@ public class PorterDuffColorFilter_Delegate extends ColorFilter_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int native_CreatePorterDuffFilter(int srcColor, int porterDuffMode) {
+ /*package*/ static long native_CreatePorterDuffFilter(int srcColor, int porterDuffMode) {
PorterDuffColorFilter_Delegate newDelegate = new PorterDuffColorFilter_Delegate();
return sManager.addNewDelegate(newDelegate);
}
@LayoutlibDelegate
- /*package*/ static int nCreatePorterDuffFilter(int nativeFilter, int srcColor,
+ /*package*/ static long nCreatePorterDuffFilter(long nativeFilter, int srcColor,
int porterDuffMode) {
// pass
return 0;
diff --git a/tools/layoutlib/bridge/src/android/graphics/PorterDuffXfermode_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/PorterDuffXfermode_Delegate.java
index 4301c1a2c5d7..a89fd5782b38 100644
--- a/tools/layoutlib/bridge/src/android/graphics/PorterDuffXfermode_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/PorterDuffXfermode_Delegate.java
@@ -127,7 +127,7 @@ public class PorterDuffXfermode_Delegate extends Xfermode_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeCreateXfermode(int mode) {
+ /*package*/ static long nativeCreateXfermode(int mode) {
PorterDuffXfermode_Delegate newDelegate = new PorterDuffXfermode_Delegate(mode);
return sManager.addNewDelegate(newDelegate);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/RadialGradient_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/RadialGradient_Delegate.java
index 3fe45fae2a3d..4f16dcf081fd 100644
--- a/tools/layoutlib/bridge/src/android/graphics/RadialGradient_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/RadialGradient_Delegate.java
@@ -54,7 +54,7 @@ public class RadialGradient_Delegate extends Gradient_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeCreate1(float x, float y, float radius,
+ /*package*/ static long nativeCreate1(float x, float y, float radius,
int colors[], float positions[], int tileMode) {
RadialGradient_Delegate newDelegate = new RadialGradient_Delegate(x, y, radius,
colors, positions, Shader_Delegate.getTileMode(tileMode));
@@ -62,21 +62,21 @@ public class RadialGradient_Delegate extends Gradient_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int nativeCreate2(float x, float y, float radius,
+ /*package*/ static long nativeCreate2(float x, float y, float radius,
int color0, int color1, int tileMode) {
return nativeCreate1(x, y, radius, new int[] { color0, color1 }, null /*positions*/,
tileMode);
}
@LayoutlibDelegate
- /*package*/ static int nativePostCreate1(int native_shader, float x, float y, float radius,
+ /*package*/ static long nativePostCreate1(long native_shader, float x, float y, float radius,
int colors[], float positions[], int tileMode) {
// nothing to be done here.
return 0;
}
@LayoutlibDelegate
- /*package*/ static int nativePostCreate2(int native_shader, float x, float y, float radius,
+ /*package*/ static long nativePostCreate2(long native_shader, float x, float y, float radius,
int color0, int color1, int tileMode) {
// nothing to be done here.
return 0;
diff --git a/tools/layoutlib/bridge/src/android/graphics/Rasterizer_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Rasterizer_Delegate.java
index 2812b6b2539b..a742840c9183 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Rasterizer_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Rasterizer_Delegate.java
@@ -46,7 +46,7 @@ public abstract class Rasterizer_Delegate {
// ---- Public Helper methods ----
- public static Rasterizer_Delegate getDelegate(int nativeShader) {
+ public static Rasterizer_Delegate getDelegate(long nativeShader) {
return sManager.getDelegate(nativeShader);
}
@@ -56,7 +56,7 @@ public abstract class Rasterizer_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static void finalizer(int native_instance) {
+ /*package*/ static void finalizer(long native_instance) {
sManager.removeJavaReferenceFor(native_instance);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/Region_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Region_Delegate.java
index cb31b8fdb711..ea23649a0d23 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Region_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Region_Delegate.java
@@ -57,7 +57,7 @@ public class Region_Delegate {
// ---- Public Helper methods ----
- public static Region_Delegate getDelegate(int nativeShader) {
+ public static Region_Delegate getDelegate(long nativeShader) {
return sManager.getDelegate(nativeShader);
}
@@ -264,18 +264,18 @@ public class Region_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int nativeConstructor() {
+ /*package*/ static long nativeConstructor() {
Region_Delegate newDelegate = new Region_Delegate();
return sManager.addNewDelegate(newDelegate);
}
@LayoutlibDelegate
- /*package*/ static void nativeDestructor(int native_region) {
+ /*package*/ static void nativeDestructor(long native_region) {
sManager.removeJavaReferenceFor(native_region);
}
@LayoutlibDelegate
- /*package*/ static boolean nativeSetRegion(int native_dst, int native_src) {
+ /*package*/ static boolean nativeSetRegion(long native_dst, long native_src) {
Region_Delegate dstRegion = sManager.getDelegate(native_dst);
if (dstRegion == null) {
return true;
@@ -293,7 +293,7 @@ public class Region_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean nativeSetRect(int native_dst,
+ /*package*/ static boolean nativeSetRect(long native_dst,
int left, int top, int right, int bottom) {
Region_Delegate dstRegion = sManager.getDelegate(native_dst);
if (dstRegion == null) {
@@ -305,7 +305,7 @@ public class Region_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean nativeSetPath(int native_dst, int native_path, int native_clip) {
+ /*package*/ static boolean nativeSetPath(long native_dst, long native_path, long native_clip) {
Region_Delegate dstRegion = sManager.getDelegate(native_dst);
if (dstRegion == null) {
return true;
@@ -327,7 +327,7 @@ public class Region_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean nativeGetBounds(int native_region, Rect rect) {
+ /*package*/ static boolean nativeGetBounds(long native_region, Rect rect) {
Region_Delegate region = sManager.getDelegate(native_region);
if (region == null) {
return true;
@@ -347,7 +347,7 @@ public class Region_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean nativeGetBoundaryPath(int native_region, int native_path) {
+ /*package*/ static boolean nativeGetBoundaryPath(long native_region, long native_path) {
Region_Delegate region = sManager.getDelegate(native_region);
if (region == null) {
return false;
@@ -368,7 +368,7 @@ public class Region_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean nativeOp(int native_dst,
+ /*package*/ static boolean nativeOp(long native_dst,
int left, int top, int right, int bottom, int op) {
Region_Delegate region = sManager.getDelegate(native_dst);
if (region == null) {
@@ -387,7 +387,7 @@ public class Region_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean nativeOp(int native_dst, Rect rect, int native_region, int op) {
+ /*package*/ static boolean nativeOp(long native_dst, Rect rect, long native_region, int op) {
Region_Delegate region = sManager.getDelegate(native_dst);
if (region == null) {
return false;
@@ -405,8 +405,8 @@ public class Region_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean nativeOp(int native_dst,
- int native_region1, int native_region2, int op) {
+ /*package*/ static boolean nativeOp(long native_dst,
+ long native_region1, long native_region2, int op) {
Region_Delegate dstRegion = sManager.getDelegate(native_dst);
if (dstRegion == null) {
return true;
@@ -434,7 +434,7 @@ public class Region_Delegate {
}
@LayoutlibDelegate
- /*package*/ static int nativeCreateFromParcel(Parcel p) {
+ /*package*/ static long nativeCreateFromParcel(Parcel p) {
// This is only called by Region.CREATOR (Parcelable.Creator<Region>), which is only
// used during aidl call so really this should not be called.
Bridge.getLog().error(LayoutLog.TAG_UNSUPPORTED,
@@ -444,7 +444,7 @@ public class Region_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean nativeWriteToParcel(int native_region,
+ /*package*/ static boolean nativeWriteToParcel(long native_region,
Parcel p) {
// This is only called when sending a region through aidl, so really this should not
// be called.
@@ -455,7 +455,7 @@ public class Region_Delegate {
}
@LayoutlibDelegate
- /*package*/ static boolean nativeEquals(int native_r1, int native_r2) {
+ /*package*/ static boolean nativeEquals(long native_r1, long native_r2) {
Region_Delegate region1 = sManager.getDelegate(native_r1);
if (region1 == null) {
return false;
@@ -470,7 +470,7 @@ public class Region_Delegate {
}
@LayoutlibDelegate
- /*package*/ static String nativeToString(int native_region) {
+ /*package*/ static String nativeToString(long native_region) {
Region_Delegate region = sManager.getDelegate(native_region);
if (region == null) {
return "not found";
diff --git a/tools/layoutlib/bridge/src/android/graphics/Shader_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Shader_Delegate.java
index 368c0384ded5..70a0a432ddb1 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Shader_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Shader_Delegate.java
@@ -49,7 +49,7 @@ public abstract class Shader_Delegate {
// ---- Public Helper methods ----
- public static Shader_Delegate getDelegate(int nativeShader) {
+ public static Shader_Delegate getDelegate(long nativeShader) {
return sManager.getDelegate(nativeShader);
}
@@ -76,13 +76,13 @@ public abstract class Shader_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static void nativeDestructor(int native_shader, int native_skiaShader) {
+ /*package*/ static void nativeDestructor(long native_shader, long native_skiaShader) {
sManager.removeJavaReferenceFor(native_shader);
}
@LayoutlibDelegate
- /*package*/ static void nativeSetLocalMatrix(int native_shader, int native_skiaShader,
- int matrix_instance) {
+ /*package*/ static void nativeSetLocalMatrix(long native_shader, long native_skiaShader,
+ long matrix_instance) {
// get the delegate from the native int.
Shader_Delegate shaderDelegate = sManager.getDelegate(native_shader);
if (shaderDelegate == null) {
diff --git a/tools/layoutlib/bridge/src/android/graphics/SumPathEffect_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/SumPathEffect_Delegate.java
index 410df0cf72f5..6d2e9b41cc19 100644
--- a/tools/layoutlib/bridge/src/android/graphics/SumPathEffect_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/SumPathEffect_Delegate.java
@@ -62,7 +62,7 @@ public class SumPathEffect_Delegate extends PathEffect_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeCreate(int first, int second) {
+ /*package*/ static long nativeCreate(long first, long second) {
SumPathEffect_Delegate newDelegate = new SumPathEffect_Delegate();
return sManager.addNewDelegate(newDelegate);
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/SweepGradient_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/SweepGradient_Delegate.java
index 13ae12e5a9fa..f2b3e8d0fd07 100644
--- a/tools/layoutlib/bridge/src/android/graphics/SweepGradient_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/SweepGradient_Delegate.java
@@ -52,25 +52,25 @@ public class SweepGradient_Delegate extends Gradient_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static int nativeCreate1(float x, float y, int colors[], float positions[]) {
+ /*package*/ static long nativeCreate1(float x, float y, int colors[], float positions[]) {
SweepGradient_Delegate newDelegate = new SweepGradient_Delegate(x, y, colors, positions);
return sManager.addNewDelegate(newDelegate);
}
@LayoutlibDelegate
- /*package*/ static int nativeCreate2(float x, float y, int color0, int color1) {
+ /*package*/ static long nativeCreate2(float x, float y, int color0, int color1) {
return nativeCreate1(x, y, new int[] { color0, color1 }, null /*positions*/);
}
@LayoutlibDelegate
- /*package*/ static int nativePostCreate1(int native_shader, float cx, float cy,
+ /*package*/ static long nativePostCreate1(long native_shader, float cx, float cy,
int[] colors, float[] positions) {
// nothing to be done here.
return 0;
}
@LayoutlibDelegate
- /*package*/ static int nativePostCreate2(int native_shader, float cx, float cy,
+ /*package*/ static long nativePostCreate2(long native_shader, float cx, float cy,
int color0, int color1) {
// nothing to be done here.
return 0;
diff --git a/tools/layoutlib/bridge/src/android/graphics/Typeface_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Typeface_Delegate.java
index b50e98b8746a..60cd157e3379 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Typeface_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Typeface_Delegate.java
@@ -75,7 +75,7 @@ public final class Typeface_Delegate {
sPostInitDelegate.clear();
}
- public static Typeface_Delegate getDelegate(int nativeTypeface) {
+ public static Typeface_Delegate getDelegate(long nativeTypeface) {
return sManager.getDelegate(nativeTypeface);
}
@@ -83,7 +83,7 @@ public final class Typeface_Delegate {
return getFonts(typeface.native_instance);
}
- public static List<Font> getFonts(int native_int) {
+ public static List<Font> getFonts(long native_int) {
Typeface_Delegate delegate = sManager.getDelegate(native_int);
if (delegate == null) {
return null;
@@ -99,7 +99,7 @@ public final class Typeface_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static synchronized int nativeCreate(String familyName, int style) {
+ /*package*/ static synchronized long nativeCreate(String familyName, int style) {
if (familyName == null) {
familyName = DEFAULT_FAMILY;
}
@@ -121,7 +121,7 @@ public final class Typeface_Delegate {
}
@LayoutlibDelegate
- /*package*/ static synchronized int nativeCreateFromTypeface(int native_instance, int style) {
+ /*package*/ static synchronized long nativeCreateFromTypeface(long native_instance, int style) {
Typeface_Delegate delegate = sManager.getDelegate(native_instance);
if (delegate == null) {
return 0;
@@ -141,14 +141,14 @@ public final class Typeface_Delegate {
}
@LayoutlibDelegate
- /*package*/ static synchronized int nativeCreateFromAsset(AssetManager mgr, String path) {
+ /*package*/ static synchronized long nativeCreateFromAsset(AssetManager mgr, String path) {
Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED,
"Typeface.createFromAsset() is not supported.", null /*throwable*/, null /*data*/);
return 0;
}
@LayoutlibDelegate
- /*package*/ static synchronized int nativeCreateFromFile(String path) {
+ /*package*/ static synchronized long nativeCreateFromFile(String path) {
if (path.startsWith(SYSTEM_FONTS) ) {
String relativePath = path.substring(SYSTEM_FONTS.length());
File f = new File(sFontLoader.getOsFontsLocation(), relativePath);
@@ -177,12 +177,12 @@ public final class Typeface_Delegate {
}
@LayoutlibDelegate
- /*package*/ static void nativeUnref(int native_instance) {
+ /*package*/ static void nativeUnref(long native_instance) {
sManager.removeJavaReferenceFor(native_instance);
}
@LayoutlibDelegate
- /*package*/ static int nativeGetStyle(int native_instance) {
+ /*package*/ static int nativeGetStyle(long native_instance) {
Typeface_Delegate delegate = sManager.getDelegate(native_instance);
if (delegate == null) {
return 0;
diff --git a/tools/layoutlib/bridge/src/android/graphics/Xfermode_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Xfermode_Delegate.java
index 962d69cb6e8d..94a6d76fe8dc 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Xfermode_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Xfermode_Delegate.java
@@ -48,7 +48,7 @@ public abstract class Xfermode_Delegate {
// ---- Public Helper methods ----
- public static Xfermode_Delegate getDelegate(int native_instance) {
+ public static Xfermode_Delegate getDelegate(long native_instance) {
return sManager.getDelegate(native_instance);
}
@@ -60,7 +60,7 @@ public abstract class Xfermode_Delegate {
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static void finalizer(int native_instance) {
+ /*package*/ static void finalizer(long native_instance) {
sManager.removeJavaReferenceFor(native_instance);
}
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/DelegateManager.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/DelegateManager.java
index ae1217d5c5d8..261cc98030ec 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/DelegateManager.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/DelegateManager.java
@@ -94,7 +94,7 @@ public final class DelegateManager<T> {
* @param native_object the native int.
* @return the delegate or null if not found.
*/
- public T getDelegate(int native_object) {
+ public T getDelegate(long native_object) {
if (native_object > 0) {
T delegate = mDelegates.get(native_object);
@@ -116,8 +116,8 @@ public final class DelegateManager<T> {
* @param newDelegate the delegate to add
* @return a unique native int to identify the delegate
*/
- public int addNewDelegate(T newDelegate) {
- int native_object = ++mDelegateCounter;
+ public long addNewDelegate(T newDelegate) {
+ long native_object = ++mDelegateCounter;
mDelegates.put(native_object, newDelegate);
assert !mJavaReferences.contains(newDelegate);
mJavaReferences.add(newDelegate);
@@ -133,7 +133,7 @@ public final class DelegateManager<T> {
* Removes the main reference on the given delegate.
* @param native_object the native integer representing the delegate.
*/
- public void removeJavaReferenceFor(int native_object) {
+ public void removeJavaReferenceFor(long native_object) {
T delegate = getDelegate(native_object);
if (Debug.DEBUG) {
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/SparseWeakArray.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/SparseWeakArray.java
index 4d0c9ce3c71e..53e1640c9ae7 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/SparseWeakArray.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/SparseWeakArray.java
@@ -30,13 +30,14 @@ import java.lang.ref.WeakReference;
*
* The code is taken from {@link SparseArray} directly and adapted to use weak references.
*
- * Because our usage means that we never actually call {@link #remove(int)} or {@link #delete(int)},
- * we must manually check if there are reclaimed references to trigger an internal compact step
- * (which is normally only triggered when an item is manually removed).
+ * Because our usage means that we never actually call {@link #remove(long)} or
+ * {@link #delete(long)}, we must manually check if there are reclaimed references to
+ * trigger an internal compact step (which is normally only triggered when an item is manually
+ * removed).
*
- * SparseArrays map integers to Objects. Unlike a normal array of Objects,
+ * SparseArrays map integral values to Objects. Unlike a normal array of Objects,
* there can be gaps in the indices. It is intended to be more efficient
- * than using a HashMap to map Integers to Objects.
+ * than using a HashMap to map Integers (or Longs) to Objects.
*/
@SuppressWarnings("unchecked")
public class SparseWeakArray<E> {
@@ -58,9 +59,9 @@ public class SparseWeakArray<E> {
* number of mappings.
*/
public SparseWeakArray(int initialCapacity) {
- initialCapacity = ArrayUtils.idealIntArraySize(initialCapacity);
+ initialCapacity = ArrayUtils.idealLongArraySize(initialCapacity);
- mKeys = new int[initialCapacity];
+ mKeys = new long[initialCapacity];
mValues = new WeakReference[initialCapacity];
mSize = 0;
}
@@ -69,7 +70,7 @@ public class SparseWeakArray<E> {
* Gets the Object mapped from the specified key, or <code>null</code>
* if no such mapping has been made.
*/
- public E get(int key) {
+ public E get(long key) {
return get(key, null);
}
@@ -77,7 +78,7 @@ public class SparseWeakArray<E> {
* Gets the Object mapped from the specified key, or the specified Object
* if no such mapping has been made.
*/
- public E get(int key, E valueIfKeyNotFound) {
+ public E get(long key, E valueIfKeyNotFound) {
int i = binarySearch(mKeys, 0, mSize, key);
if (i < 0 || mValues[i] == DELETED || mValues[i].get() == null) {
@@ -90,7 +91,7 @@ public class SparseWeakArray<E> {
/**
* Removes the mapping from the specified key, if there was any.
*/
- public void delete(int key) {
+ public void delete(long key) {
int i = binarySearch(mKeys, 0, mSize, key);
if (i >= 0) {
@@ -102,9 +103,9 @@ public class SparseWeakArray<E> {
}
/**
- * Alias for {@link #delete(int)}.
+ * Alias for {@link #delete(long)}.
*/
- public void remove(int key) {
+ public void remove(long key) {
delete(key);
}
@@ -121,7 +122,7 @@ public class SparseWeakArray<E> {
private void gc() {
int n = mSize;
int o = 0;
- int[] keys = mKeys;
+ long[] keys = mKeys;
WeakReference<?>[] values = mValues;
for (int i = 0; i < n; i++) {
@@ -142,9 +143,9 @@ public class SparseWeakArray<E> {
mGarbage = false;
mSize = o;
- int newSize = ArrayUtils.idealIntArraySize(mSize);
+ int newSize = ArrayUtils.idealLongArraySize(mSize);
if (newSize < mKeys.length) {
- int[] nkeys = new int[newSize];
+ long[] nkeys = new long[newSize];
WeakReference<?>[] nvalues = new WeakReference[newSize];
System.arraycopy(mKeys, 0, nkeys, 0, newSize);
@@ -160,7 +161,7 @@ public class SparseWeakArray<E> {
* replacing the previous mapping from the specified key if there
* was one.
*/
- public void put(int key, E value) {
+ public void put(long key, E value) {
int i = binarySearch(mKeys, 0, mSize, key);
if (i >= 0) {
@@ -182,9 +183,9 @@ public class SparseWeakArray<E> {
}
if (mSize >= mKeys.length) {
- int n = ArrayUtils.idealIntArraySize(mSize + 1);
+ int n = ArrayUtils.idealLongArraySize(mSize + 1);
- int[] nkeys = new int[n];
+ long[] nkeys = new long[n];
WeakReference<?>[] nvalues = new WeakReference[n];
// Log.e("SparseArray", "grow " + mKeys.length + " to " + n);
@@ -224,7 +225,7 @@ public class SparseWeakArray<E> {
* the key from the <code>index</code>th key-value mapping that this
* SparseArray stores.
*/
- public int keyAt(int index) {
+ public long keyAt(int index) {
if (mGarbage) {
gc();
}
@@ -263,7 +264,7 @@ public class SparseWeakArray<E> {
* specified key, or a negative number if the specified
* key is not mapped.
*/
- public int indexOfKey(int key) {
+ public int indexOfKey(long key) {
if (mGarbage) {
gc();
}
@@ -310,7 +311,7 @@ public class SparseWeakArray<E> {
* Puts a key/value pair into the array, optimizing for the case where
* the key is greater than all existing keys in the array.
*/
- public void append(int key, E value) {
+ public void append(long key, E value) {
if (mSize != 0 && key <= mKeys[mSize - 1]) {
put(key, value);
return;
@@ -322,9 +323,9 @@ public class SparseWeakArray<E> {
int pos = mSize;
if (pos >= mKeys.length) {
- int n = ArrayUtils.idealIntArraySize(pos + 1);
+ int n = ArrayUtils.idealLongArraySize(pos + 1);
- int[] nkeys = new int[n];
+ long[] nkeys = new long[n];
WeakReference<?>[] nvalues = new WeakReference[n];
// Log.e("SparseArray", "grow " + mKeys.length + " to " + n);
@@ -350,7 +351,7 @@ public class SparseWeakArray<E> {
return false;
}
- private static int binarySearch(int[] a, int start, int len, int key) {
+ private static int binarySearch(long[] a, int start, int len, long key) {
int high = start + len, low = start - 1, guess;
while (high - low > 1) {
@@ -370,7 +371,7 @@ public class SparseWeakArray<E> {
return ~high;
}
- private int[] mKeys;
+ private long[] mKeys;
private WeakReference<?>[] mValues;
private int mSize;
}
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index 3dda56a434de..cf1669cc5928 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -245,25 +245,26 @@ public class WifiStateMachine extends StateMachine {
mWifiStateMachine = wifiStateMachine;
}
+ private void maybeLog(String operation, String iface, LinkAddress address) {
+ if (DBG) {
+ log(operation + ": " + address + " on " + iface +
+ " flags " + address.getFlags() + " scope " + address.getScope());
+ }
+ }
+
@Override
- public void addressUpdated(String address, String iface, int flags, int scope) {
+ public void addressUpdated(String iface, LinkAddress address) {
if (mWifiStateMachine.mInterfaceName.equals(iface)) {
- if (DBG) {
- log("addressUpdated: " + address + " on " + iface +
- " flags " + flags + " scope " + scope);
- }
- mWifiStateMachine.sendMessage(CMD_IP_ADDRESS_UPDATED, new LinkAddress(address));
+ maybeLog("addressUpdated", iface, address);
+ mWifiStateMachine.sendMessage(CMD_IP_ADDRESS_UPDATED, address);
}
}
@Override
- public void addressRemoved(String address, String iface, int flags, int scope) {
+ public void addressRemoved(String iface, LinkAddress address) {
if (mWifiStateMachine.mInterfaceName.equals(iface)) {
- if (DBG) {
- log("addressRemoved: " + address + " on " + iface +
- " flags " + flags + " scope " + scope);
- }
- mWifiStateMachine.sendMessage(CMD_IP_ADDRESS_REMOVED, new LinkAddress(address));
+ maybeLog("addressRemoved", iface, address);
+ mWifiStateMachine.sendMessage(CMD_IP_ADDRESS_REMOVED, address);
}
}
}