summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/java/android/accessibilityservice/AccessibilityService.java15
-rw-r--r--core/java/android/app/ActionBar.java27
-rw-r--r--core/java/android/app/Activity.java46
-rw-r--r--core/java/android/app/ActivityThread.java148
-rw-r--r--core/java/android/app/Application.java160
-rw-r--r--core/java/android/app/ContextImpl.java6
-rw-r--r--core/java/android/app/Fragment.java13
-rw-r--r--core/java/android/app/FragmentManager.java13
-rw-r--r--core/java/android/app/SearchDialog.java1
-rw-r--r--core/java/android/app/Service.java9
-rw-r--r--core/java/android/app/backup/BackupAgent.java69
-rw-r--r--core/java/android/app/backup/IBackupManager.aidl23
-rw-r--r--core/java/android/appwidget/AppWidgetHostView.java6
-rw-r--r--core/java/android/bluetooth/BluetoothAdapter.java63
-rw-r--r--core/java/android/bluetooth/IBluetooth.aidl4
-rw-r--r--core/java/android/bluetooth/IBluetoothStateChangeCallback.aidl27
-rw-r--r--core/java/android/content/ComponentCallbacks.java9
-rw-r--r--core/java/android/content/ComponentCallbacks2.java66
-rw-r--r--core/java/android/content/ContentProvider.java5
-rw-r--r--core/java/android/content/ContentResolver.java4
-rw-r--r--core/java/android/content/Context.java88
-rw-r--r--core/java/android/content/Loader.java2
-rw-r--r--core/java/android/content/SyncManager.java20
-rw-r--r--core/java/android/hardware/Camera.java199
-rw-r--r--core/java/android/net/INetworkPolicyManager.aidl6
-rw-r--r--core/java/android/net/LinkProperties.java6
-rw-r--r--core/java/android/net/NetworkPolicy.java31
-rw-r--r--core/java/android/net/NetworkPolicyManager.java22
-rw-r--r--core/java/android/net/VpnBuilder.java1
-rw-r--r--core/java/android/net/http/SslError.java39
-rw-r--r--core/java/android/os/INetworkManagementService.aidl21
-rw-r--r--core/java/android/os/IPowerManager.aidl3
-rw-r--r--core/java/android/preference/CheckBoxPreference.java3
-rw-r--r--core/java/android/preference/SwitchPreference.java4
-rw-r--r--core/java/android/preference/TwoStatePreference.java46
-rw-r--r--core/java/android/provider/CallLog.java1
-rw-r--r--core/java/android/provider/ContactsContract.java33
-rw-r--r--core/java/android/provider/MediaStore.java8
-rw-r--r--core/java/android/provider/Settings.java22
-rw-r--r--core/java/android/provider/VoicemailContract.java6
-rw-r--r--core/java/android/server/BluetoothAdapterStateMachine.java234
-rw-r--r--core/java/android/server/BluetoothEventLoop.java4
-rwxr-xr-xcore/java/android/server/BluetoothService.java91
-rw-r--r--core/java/android/service/textservice/SpellCheckerService.java5
-rw-r--r--core/java/android/service/textservice/SpellCheckerSession.java19
-rw-r--r--core/java/android/speech/tts/TextToSpeechService.java2
-rw-r--r--core/java/android/view/Display.java163
-rw-r--r--core/java/android/view/DisplayList.java7
-rw-r--r--core/java/android/view/GLES20Canvas.java23
-rw-r--r--core/java/android/view/GLES20DisplayList.java6
-rw-r--r--core/java/android/view/GLES20Layer.java5
-rw-r--r--core/java/android/view/GLES20RecordingCanvas.java2
-rw-r--r--core/java/android/view/GLES20RenderLayer.java1
-rw-r--r--core/java/android/view/HardwareRenderer.java108
-rw-r--r--core/java/android/view/IWindowManager.aidl1
-rw-r--r--core/java/android/view/MotionEvent.java41
-rw-r--r--core/java/android/view/View.java108
-rw-r--r--core/java/android/view/ViewDebug.java2
-rw-r--r--core/java/android/view/ViewGroup.java8
-rw-r--r--core/java/android/view/ViewRootImpl.java76
-rw-r--r--core/java/android/view/WindowManagerImpl.java58
-rw-r--r--core/java/android/webkit/BrowserFrame.java7
-rw-r--r--core/java/android/webkit/DebugFlags.java2
-rw-r--r--core/java/android/webkit/WebSettings.java21
-rw-r--r--core/java/android/webkit/WebTextView.java172
-rw-r--r--core/java/android/webkit/WebView.java114
-rw-r--r--core/java/android/widget/AbsListView.java113
-rw-r--r--core/java/android/widget/ActivityChooserView.java48
-rw-r--r--core/java/android/widget/AdapterViewAnimator.java27
-rw-r--r--core/java/android/widget/CheckBox.java13
-rw-r--r--core/java/android/widget/CheckedTextView.java10
-rw-r--r--core/java/android/widget/FrameLayout.java17
-rw-r--r--core/java/android/widget/RadioButton.java13
-rw-r--r--core/java/android/widget/RemoteViewsAdapter.java6
-rw-r--r--core/java/android/widget/SearchView.java54
-rw-r--r--core/java/android/widget/Switch.java15
-rw-r--r--core/java/android/widget/TextView.java440
-rw-r--r--core/java/android/widget/ToggleButton.java14
-rw-r--r--core/java/com/android/internal/app/ActionBarImpl.java24
-rw-r--r--core/java/com/android/internal/content/NativeLibraryHelper.java285
-rw-r--r--core/java/com/android/internal/os/ZygoteInit.java2
-rw-r--r--core/java/com/android/internal/statusbar/IStatusBar.aidl2
-rw-r--r--core/java/com/android/internal/textservice/ITextServicesManager.aidl1
-rw-r--r--core/java/com/android/internal/view/menu/ActionMenuView.java22
-rw-r--r--core/java/com/android/internal/view/menu/MenuBuilder.java2
-rw-r--r--core/java/com/android/internal/view/menu/MenuItemImpl.java2
-rw-r--r--core/java/com/android/internal/widget/ActionBarContainer.java1
-rw-r--r--core/java/com/android/internal/widget/ActionBarView.java28
-rw-r--r--core/java/com/android/internal/widget/DialogTitle.java22
-rw-r--r--core/java/com/android/internal/widget/LockPatternUtils.java30
-rw-r--r--core/java/com/android/internal/widget/LockScreenWidgetCallback.java36
-rw-r--r--core/java/com/android/internal/widget/LockScreenWidgetInterface.java23
-rw-r--r--core/java/com/android/internal/widget/ScrollingTabContainerView.java5
-rw-r--r--core/java/com/android/internal/widget/TransportControlView.java103
-rw-r--r--core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java34
-rw-r--r--core/jni/Android.mk3
-rw-r--r--core/jni/AndroidRuntime.cpp2
-rw-r--r--core/jni/android/graphics/NinePatchImpl.cpp8
-rw-r--r--core/jni/android_bluetooth_BluetoothSocket.cpp24
-rw-r--r--core/jni/android_hardware_Camera.cpp49
-rw-r--r--core/jni/android_view_Display.cpp51
-rw-r--r--core/jni/android_view_GLES20Canvas.cpp9
-rw-r--r--core/jni/com_android_internal_content_NativeLibraryHelper.cpp375
-rw-r--r--core/res/AndroidManifest.xml3
-rw-r--r--core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_dark.pngbin469 -> 474 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_light.pngbin463 -> 467 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_check_off_focused_holo_dark.pngbin467 -> 476 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_check_off_focused_holo_light.pngbin461 -> 465 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_check_off_pressed_holo_dark.pngbin1493 -> 1411 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_check_off_pressed_holo_light.pngbin1439 -> 1358 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_dark.pngbin1276 -> 1374 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_light.pngbin1253 -> 1380 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_check_on_disabled_holo_dark.pngbin959 -> 1027 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_check_on_disabled_holo_light.pngbin943 -> 1028 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_check_on_focused_holo_dark.pngbin1324 -> 1984 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_check_on_focused_holo_light.pngbin1352 -> 1984 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_check_on_holo_dark.pngbin1243 -> 1816 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_check_on_holo_light.pngbin1247 -> 1831 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_check_on_pressed_holo_dark.pngbin2581 -> 2815 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_check_on_pressed_holo_light.pngbin2692 -> 2701 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_default_disabled_focused_holo_dark.9.pngbin525 -> 425 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_default_disabled_focused_holo_light.9.pngbin525 -> 425 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_default_disabled_holo.9.pngbin446 -> 372 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_default_disabled_holo_dark.9.pngbin356 -> 363 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_default_disabled_holo_light.9.pngbin356 -> 361 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_default_focused_holo.9.pngbin645 -> 420 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_default_focused_holo_dark.9.pngbin504 -> 419 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_default_focused_holo_light.9.pngbin504 -> 419 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_default_normal_holo.9.pngbin454 -> 402 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_default_normal_holo_dark.9.pngbin345 -> 374 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_default_normal_holo_light.9.pngbin345 -> 375 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_default_pressed_holo.9.pngbin635 -> 650 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_default_pressed_holo_dark.9.pngbin494 -> 513 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_default_pressed_holo_light.9.pngbin494 -> 513 bytes
-rw-r--r--core/res/res/drawable-hdpi/expander_close_holo_dark.9.pngbin1110 -> 406 bytes
-rw-r--r--core/res/res/drawable-hdpi/expander_close_holo_light.9.pngbin1057 -> 425 bytes
-rw-r--r--core/res/res/drawable-hdpi/expander_open_holo_dark.9.pngbin1123 -> 465 bytes
-rw-r--r--core/res/res/drawable-hdpi/expander_open_holo_light.9.pngbin1068 -> 428 bytes
-rw-r--r--core/res/res/drawable-hdpi/ic_paste_bubble_disabled_holo.pngbin932 -> 0 bytes
-rw-r--r--core/res/res/drawable-hdpi/ic_paste_bubble_holo.pngbin1051 -> 0 bytes
-rw-r--r--core/res/res/drawable-hdpi/list_activated_holo.9.pngbin1058 -> 154 bytes
-rw-r--r--core/res/res/drawable-hdpi/list_focused_holo.9.pngbin1098 -> 159 bytes
-rw-r--r--core/res/res/drawable-hdpi/list_longpressed_holo.9.pngbin1060 -> 154 bytes
-rw-r--r--core/res/res/drawable-hdpi/list_pressed_holo_dark.9.pngbin1061 -> 159 bytes
-rw-r--r--core/res/res/drawable-hdpi/list_pressed_holo_light.9.pngbin1060 -> 159 bytes
-rw-r--r--core/res/res/drawable-hdpi/list_section_divider_holo_dark.9.pngbin186 -> 179 bytes
-rw-r--r--core/res/res/drawable-hdpi/list_section_divider_holo_light.9.pngbin190 -> 165 bytes
-rw-r--r--core/res/res/drawable-hdpi/list_selected_holo_dark.9.pngbin1084 -> 157 bytes
-rw-r--r--core/res/res/drawable-hdpi/list_selected_holo_light.9.pngbin1075 -> 157 bytes
-rw-r--r--core/res/res/drawable-hdpi/popup_inline_error_holo_dark.9.pngbin979 -> 936 bytes
-rw-r--r--core/res/res/drawable-hdpi/popup_inline_error_holo_light.9.pngbin968 -> 901 bytes
-rw-r--r--core/res/res/drawable-hdpi/presence_audio_away.pngbin1155 -> 1148 bytes
-rw-r--r--core/res/res/drawable-hdpi/presence_audio_busy.pngbin1057 -> 1228 bytes
-rw-r--r--core/res/res/drawable-hdpi/presence_audio_online.pngbin1229 -> 1241 bytes
-rw-r--r--core/res/res/drawable-hdpi/presence_away.pngbin1124 -> 1278 bytes
-rw-r--r--core/res/res/drawable-hdpi/presence_busy.pngbin991 -> 1268 bytes
-rw-r--r--core/res/res/drawable-hdpi/presence_invisible.pngbin775 -> 898 bytes
-rw-r--r--core/res/res/drawable-hdpi/presence_offline.pngbin898 -> 942 bytes
-rw-r--r--core/res/res/drawable-hdpi/presence_online.pngbin1147 -> 1252 bytes
-rw-r--r--core/res/res/drawable-hdpi/presence_video_away.pngbin698 -> 826 bytes
-rw-r--r--core/res/res/drawable-hdpi/presence_video_busy.pngbin636 -> 890 bytes
-rw-r--r--core/res/res/drawable-hdpi/presence_video_online.pngbin701 -> 863 bytes
-rw-r--r--core/res/res/drawable-hdpi/spinner_16_inner_holo.pngbin789 -> 595 bytes
-rw-r--r--core/res/res/drawable-hdpi/spinner_16_outer_holo.pngbin881 -> 742 bytes
-rw-r--r--core/res/res/drawable-hdpi/spinner_20_inner_holo.pngbin1098 -> 742 bytes
-rw-r--r--core/res/res/drawable-hdpi/spinner_20_outer_holo.pngbin1158 -> 933 bytes
-rw-r--r--core/res/res/drawable-hdpi/spinner_48_inner_holo.pngbin2816 -> 1614 bytes
-rw-r--r--core/res/res/drawable-hdpi/spinner_48_outer_holo.pngbin3439 -> 2092 bytes
-rw-r--r--core/res/res/drawable-hdpi/spinner_76_inner_holo.pngbin4870 -> 2635 bytes
-rw-r--r--core/res/res/drawable-hdpi/spinner_76_outer_holo.pngbin6489 -> 3382 bytes
-rw-r--r--core/res/res/drawable-hdpi/textfield_active_holo_dark.9.pngbin1095 -> 0 bytes
-rw-r--r--core/res/res/drawable-hdpi/textfield_active_holo_light.9.pngbin1095 -> 0 bytes
-rw-r--r--core/res/res/drawable-hdpi/textfield_multiline_active_holo_dark.9.pngbin1124 -> 0 bytes
-rw-r--r--core/res/res/drawable-hdpi/textfield_multiline_active_holo_light.9.pngbin1122 -> 0 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_dark.pngbin441 -> 450 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_light.pngbin447 -> 448 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_off_focused_holo_dark.pngbin442 -> 448 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_off_focused_holo_light.pngbin451 -> 452 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_off_normal_holo_dark.pngbin405 -> 443 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_off_normal_holo_light.pngbin380 -> 415 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_off_pressed_holo_dark.pngbin977 -> 940 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_off_pressed_holo_light.pngbin1023 -> 938 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_dark.pngbin966 -> 1033 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_light.pngbin960 -> 1033 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_on_disabled_holo_dark.pngbin722 -> 742 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_on_disabled_holo_light.pngbin708 -> 752 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_on_focused_holo_dark.pngbin963 -> 1347 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_on_focused_holo_light.pngbin988 -> 1358 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_on_holo_dark.pngbin925 -> 1238 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_on_holo_light.pngbin927 -> 1250 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_on_pressed_holo_dark.pngbin1591 -> 1709 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_on_pressed_holo_light.pngbin1720 -> 1678 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_disabled_focused_holo_dark.9.pngbin375 -> 298 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_disabled_focused_holo_light.9.pngbin375 -> 298 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_disabled_holo.9.pngbin325 -> 275 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_disabled_holo_dark.9.pngbin265 -> 256 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_disabled_holo_light.9.pngbin265 -> 245 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_focused_holo.9.pngbin420 -> 329 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_focused_holo_dark.9.pngbin376 -> 330 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_focused_holo_light.9.pngbin376 -> 330 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_normal_holo.9.pngbin325 -> 289 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_normal_holo_dark.9.pngbin274 -> 283 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_normal_holo_light.9.pngbin274 -> 278 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_pressed_holo.9.pngbin454 -> 439 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_pressed_holo_dark.9.pngbin388 -> 362 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_pressed_holo_light.9.pngbin388 -> 362 bytes
-rw-r--r--core/res/res/drawable-mdpi/expander_close_holo_dark.9.pngbin713 -> 297 bytes
-rw-r--r--core/res/res/drawable-mdpi/expander_close_holo_light.9.pngbin697 -> 304 bytes
-rw-r--r--core/res/res/drawable-mdpi/expander_open_holo_dark.9.pngbin681 -> 311 bytes
-rw-r--r--core/res/res/drawable-mdpi/expander_open_holo_light.9.pngbin701 -> 304 bytes
-rw-r--r--core/res/res/drawable-mdpi/ic_paste_bubble_disabled_holo.pngbin661 -> 0 bytes
-rw-r--r--core/res/res/drawable-mdpi/ic_paste_bubble_holo.pngbin692 -> 0 bytes
-rw-r--r--core/res/res/drawable-mdpi/list_activated_holo.9.pngbin1049 -> 151 bytes
-rw-r--r--core/res/res/drawable-mdpi/list_focused_holo.9.pngbin1092 -> 158 bytes
-rw-r--r--core/res/res/drawable-mdpi/list_longpressed_holo.9.pngbin1049 -> 151 bytes
-rw-r--r--core/res/res/drawable-mdpi/list_pressed_holo_dark.9.pngbin1057 -> 158 bytes
-rw-r--r--core/res/res/drawable-mdpi/list_pressed_holo_light.9.pngbin1053 -> 158 bytes
-rw-r--r--core/res/res/drawable-mdpi/list_section_divider_holo_dark.9.pngbin193 -> 166 bytes
-rw-r--r--core/res/res/drawable-mdpi/list_section_divider_holo_light.9.pngbin193 -> 152 bytes
-rw-r--r--core/res/res/drawable-mdpi/list_selected_holo_dark.9.pngbin1077 -> 156 bytes
-rw-r--r--core/res/res/drawable-mdpi/list_selected_holo_light.9.pngbin1070 -> 156 bytes
-rw-r--r--[-rwxr-xr-x]core/res/res/drawable-mdpi/popup_inline_error_holo_dark.9.pngbin680 -> 672 bytes
-rw-r--r--[-rwxr-xr-x]core/res/res/drawable-mdpi/popup_inline_error_holo_light.9.pngbin668 -> 661 bytes
-rw-r--r--core/res/res/drawable-mdpi/presence_audio_away.pngbin827 -> 819 bytes
-rw-r--r--core/res/res/drawable-mdpi/presence_audio_busy.pngbin777 -> 858 bytes
-rw-r--r--core/res/res/drawable-mdpi/presence_audio_online.pngbin869 -> 878 bytes
-rw-r--r--core/res/res/drawable-mdpi/presence_away.pngbin818 -> 853 bytes
-rw-r--r--core/res/res/drawable-mdpi/presence_busy.pngbin721 -> 884 bytes
-rw-r--r--core/res/res/drawable-mdpi/presence_invisible.pngbin568 -> 627 bytes
-rw-r--r--core/res/res/drawable-mdpi/presence_offline.pngbin651 -> 647 bytes
-rw-r--r--core/res/res/drawable-mdpi/presence_online.pngbin806 -> 862 bytes
-rw-r--r--core/res/res/drawable-mdpi/presence_video_away.pngbin541 -> 651 bytes
-rw-r--r--core/res/res/drawable-mdpi/presence_video_busy.pngbin524 -> 673 bytes
-rw-r--r--core/res/res/drawable-mdpi/presence_video_online.pngbin567 -> 695 bytes
-rw-r--r--core/res/res/drawable-mdpi/spinner_16_inner_holo.pngbin1349 -> 465 bytes
-rw-r--r--core/res/res/drawable-mdpi/spinner_16_outer_holo.pngbin1531 -> 564 bytes
-rw-r--r--core/res/res/drawable-mdpi/spinner_20_inner_holo.pngbin1613 -> 555 bytes
-rw-r--r--core/res/res/drawable-mdpi/spinner_20_outer_holo.pngbin1767 -> 678 bytes
-rw-r--r--core/res/res/drawable-mdpi/spinner_48_inner_holo.pngbin3457 -> 1103 bytes
-rw-r--r--core/res/res/drawable-mdpi/spinner_48_outer_holo.pngbin3715 -> 1390 bytes
-rw-r--r--core/res/res/drawable-mdpi/spinner_76_inner_holo.pngbin5844 -> 1745 bytes
-rw-r--r--core/res/res/drawable-mdpi/spinner_76_outer_holo.pngbin6201 -> 2143 bytes
-rw-r--r--core/res/res/drawable-mdpi/textfield_active_holo_dark.9.pngbin1070 -> 0 bytes
-rw-r--r--core/res/res/drawable-mdpi/textfield_active_holo_light.9.pngbin1073 -> 0 bytes
-rw-r--r--core/res/res/drawable-mdpi/textfield_multiline_active_holo_dark.9.pngbin232 -> 0 bytes
-rw-r--r--core/res/res/drawable-mdpi/textfield_multiline_active_holo_light.9.pngbin223 -> 0 bytes
-rw-r--r--core/res/res/drawable-nodpi/background_holo_dark.pngbin160758 -> 2118 bytes
-rw-r--r--core/res/res/drawable-nodpi/background_holo_light.pngbin5637 -> 14295 bytes
-rw-r--r--core/res/res/drawable-nodpi/list_divider_holo_dark.9.pngbin0 -> 1001 bytes
-rw-r--r--core/res/res/drawable-nodpi/list_divider_holo_light.9.pngbin0 -> 1001 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off.pngbin0 -> 861 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_disable.pngbin0 -> 788 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_disable_focused.pngbin0 -> 1383 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_disable_focused_holo_dark.pngbin0 -> 465 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_disable_focused_holo_light.pngbin0 -> 461 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_disable_holo_dark.pngbin0 -> 465 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_disable_holo_light.pngbin0 -> 461 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_disabled_focused_holo_dark.pngbin0 -> 585 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_disabled_focused_holo_light.pngbin0 -> 581 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_disabled_holo_dark.pngbin0 -> 391 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_disabled_holo_light.pngbin0 -> 388 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_focused_holo_dark.pngbin0 -> 588 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_focused_holo_light.pngbin0 -> 583 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_holo.pngbin0 -> 475 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_holo_dark.pngbin0 -> 392 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_holo_light.pngbin0 -> 388 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_normal_holo_dark.pngbin0 -> 805 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_normal_holo_light.pngbin0 -> 772 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_pressed.pngbin0 -> 4509 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_pressed_holo_dark.pngbin0 -> 2047 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_pressed_holo_light.pngbin0 -> 1979 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_off_selected.pngbin0 -> 4777 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_on.pngbin0 -> 3428 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_on_disable.pngbin0 -> 1959 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_on_disabled_focused_holo_dark.pngbin0 -> 2145 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_on_disabled_focused_holo_light.pngbin0 -> 2123 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_on_disabled_holo_dark.pngbin0 -> 1499 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_on_disabled_holo_light.pngbin0 -> 1491 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_on_focused_holo_dark.pngbin0 -> 3066 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_on_focused_holo_light.pngbin0 -> 3073 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_on_holo.pngbin0 -> 3188 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_on_holo_dark.pngbin0 -> 2810 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_on_holo_light.pngbin0 -> 2845 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_on_pressed.pngbin0 -> 4595 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_on_pressed_holo_dark.pngbin0 -> 4268 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_on_pressed_holo_light.pngbin0 -> 4091 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_check_on_selected.pngbin0 -> 4882 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_disabled_focused_holo_dark.9.pngbin0 -> 501 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_disabled_focused_holo_light.9.pngbin0 -> 501 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_disabled_holo.9.pngbin0 -> 460 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_disabled_holo_dark.9.pngbin0 -> 440 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_disabled_holo_light.9.pngbin0 -> 428 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_focused_holo.9.pngbin0 -> 544 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_focused_holo_dark.9.pngbin0 -> 548 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_focused_holo_light.9.pngbin0 -> 548 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_normal.9.pngbin0 -> 1639 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_normal_disable.9.pngbin0 -> 1534 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_normal_disable_focused.9.pngbin0 -> 1807 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_normal_holo.9.pngbin0 -> 495 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_normal_holo_dark.9.pngbin0 -> 490 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_normal_holo_light.9.pngbin0 -> 475 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_pressed.9.pngbin0 -> 1905 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_pressed_holo.9.pngbin0 -> 897 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_pressed_holo_dark.9.pngbin0 -> 673 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_pressed_holo_light.9.pngbin0 -> 673 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_selected.9.pngbin0 -> 1201 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_small_normal.9.pngbin0 -> 1380 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_small_normal_disable.9.pngbin0 -> 1285 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_small_normal_disable_focused.9.pngbin0 -> 1718 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_small_pressed.9.pngbin0 -> 1185 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_small_selected.9.pngbin0 -> 1077 bytes
-rw-r--r--core/res/res/drawable-xhdpi/btn_default_transparent_normal.9.pngbin0 -> 2810 bytes
-rw-r--r--core/res/res/drawable-xhdpi/expander_close_holo_dark.9.pngbin0 -> 542 bytes
-rw-r--r--core/res/res/drawable-xhdpi/expander_close_holo_light.9.pngbin0 -> 545 bytes
-rw-r--r--core/res/res/drawable-xhdpi/expander_open_holo_dark.9.pngbin0 -> 623 bytes
-rw-r--r--core/res/res/drawable-xhdpi/expander_open_holo_light.9.pngbin0 -> 558 bytes
-rw-r--r--core/res/res/drawable-xhdpi/indicator_input_error.pngbin0 -> 1697 bytes
-rw-r--r--core/res/res/drawable-xhdpi/list_activated_holo.9.pngbin0 -> 158 bytes
-rw-r--r--core/res/res/drawable-xhdpi/list_focused_holo.9.pngbin0 -> 163 bytes
-rw-r--r--core/res/res/drawable-xhdpi/list_longpressed_holo.9.pngbin0 -> 159 bytes
-rw-r--r--core/res/res/drawable-xhdpi/list_pressed_holo_dark.9.pngbin0 -> 163 bytes
-rw-r--r--core/res/res/drawable-xhdpi/list_pressed_holo_light.9.pngbin0 -> 163 bytes
-rw-r--r--core/res/res/drawable-xhdpi/list_section_divider_holo_dark.9.pngbin0 -> 180 bytes
-rw-r--r--core/res/res/drawable-xhdpi/list_section_divider_holo_light.9.pngbin0 -> 173 bytes
-rw-r--r--core/res/res/drawable-xhdpi/list_selected_holo_dark.9.pngbin0 -> 160 bytes
-rw-r--r--core/res/res/drawable-xhdpi/list_selected_holo_light.9.pngbin0 -> 160 bytes
-rw-r--r--core/res/res/drawable-xhdpi/popup_inline_error_above_holo_dark.9.pngbin0 -> 1337 bytes
-rw-r--r--core/res/res/drawable-xhdpi/popup_inline_error_above_holo_light.9.pngbin0 -> 1341 bytes
-rw-r--r--core/res/res/drawable-xhdpi/popup_inline_error_holo_dark.9.pngbin0 -> 1360 bytes
-rw-r--r--core/res/res/drawable-xhdpi/popup_inline_error_holo_light.9.pngbin0 -> 1347 bytes
-rw-r--r--core/res/res/drawable-xhdpi/presence_audio_away.pngbin0 -> 1553 bytes
-rw-r--r--core/res/res/drawable-xhdpi/presence_audio_busy.pngbin0 -> 1631 bytes
-rw-r--r--core/res/res/drawable-xhdpi/presence_audio_online.pngbin0 -> 1681 bytes
-rw-r--r--core/res/res/drawable-xhdpi/presence_away.pngbin0 -> 1646 bytes
-rw-r--r--core/res/res/drawable-xhdpi/presence_busy.pngbin0 -> 1676 bytes
-rw-r--r--core/res/res/drawable-xhdpi/presence_invisible.pngbin0 -> 1203 bytes
-rw-r--r--core/res/res/drawable-xhdpi/presence_offline.pngbin0 -> 1299 bytes
-rw-r--r--core/res/res/drawable-xhdpi/presence_online.pngbin0 -> 1606 bytes
-rw-r--r--core/res/res/drawable-xhdpi/presence_video_away.pngbin0 -> 1085 bytes
-rw-r--r--core/res/res/drawable-xhdpi/presence_video_busy.pngbin0 -> 1189 bytes
-rw-r--r--core/res/res/drawable-xhdpi/presence_video_online.pngbin0 -> 1159 bytes
-rw-r--r--core/res/res/drawable-xhdpi/spinner_16_inner_holo.pngbin0 -> 799 bytes
-rw-r--r--core/res/res/drawable-xhdpi/spinner_16_outer_holo.pngbin0 -> 1017 bytes
-rw-r--r--core/res/res/drawable-xhdpi/spinner_20_inner_holo.pngbin0 -> 1037 bytes
-rw-r--r--core/res/res/drawable-xhdpi/spinner_20_outer_holo.pngbin0 -> 1247 bytes
-rw-r--r--core/res/res/drawable-xhdpi/spinner_48_inner_holo.pngbin0 -> 2389 bytes
-rw-r--r--core/res/res/drawable-xhdpi/spinner_48_outer_holo.pngbin0 -> 3087 bytes
-rw-r--r--core/res/res/drawable-xhdpi/spinner_76_inner_holo.pngbin0 -> 3939 bytes
-rw-r--r--core/res/res/drawable-xhdpi/spinner_76_outer_holo.pngbin0 -> 5069 bytes
-rw-r--r--core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml10
-rw-r--r--core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml10
-rw-r--r--core/res/res/layout-sw600dp/keyguard_screen_status_land.xml13
-rw-r--r--core/res/res/layout-sw600dp/keyguard_screen_status_port.xml13
-rw-r--r--core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml23
-rw-r--r--core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml14
-rw-r--r--core/res/res/layout/activity_chooser_view.xml48
-rw-r--r--core/res/res/layout/keyguard_screen_password_landscape.xml60
-rw-r--r--core/res/res/layout/keyguard_screen_password_portrait.xml137
-rw-r--r--core/res/res/layout/keyguard_screen_status_land.xml120
-rw-r--r--core/res/res/layout/keyguard_screen_status_port.xml120
-rw-r--r--core/res/res/layout/keyguard_screen_tab_unlock.xml139
-rw-r--r--core/res/res/layout/keyguard_screen_tab_unlock_land.xml96
-rw-r--r--core/res/res/layout/keyguard_screen_unlock_landscape.xml18
-rw-r--r--core/res/res/layout/keyguard_screen_unlock_portrait.xml24
-rw-r--r--core/res/res/layout/keyguard_transport_control.xml53
-rw-r--r--core/res/res/layout/text_edit_action_popup_text.xml28
-rw-r--r--core/res/res/layout/text_edit_no_paste_window.xml1
-rw-r--r--core/res/res/layout/text_edit_paste_window.xml1
-rw-r--r--core/res/res/layout/text_edit_side_no_paste_window.xml1
-rw-r--r--core/res/res/layout/text_edit_side_paste_window.xml1
-rw-r--r--core/res/res/values-af/strings.xml28
-rw-r--r--core/res/res/values-am/strings.xml28
-rw-r--r--core/res/res/values-ar/strings.xml68
-rw-r--r--core/res/res/values-bg/strings.xml64
-rw-r--r--core/res/res/values-ca/strings.xml68
-rw-r--r--core/res/res/values-cs/strings.xml68
-rw-r--r--core/res/res/values-da/strings.xml68
-rw-r--r--core/res/res/values-de/strings.xml64
-rw-r--r--core/res/res/values-el/strings.xml64
-rw-r--r--core/res/res/values-en-rGB/strings.xml59
-rw-r--r--core/res/res/values-es-rUS/strings.xml68
-rw-r--r--core/res/res/values-es/strings.xml38
-rw-r--r--core/res/res/values-fa/strings.xml70
-rw-r--r--core/res/res/values-fi/strings.xml64
-rw-r--r--core/res/res/values-fr/strings.xml64
-rw-r--r--core/res/res/values-hr/strings.xml64
-rw-r--r--core/res/res/values-hu/strings.xml32
-rw-r--r--core/res/res/values-in/strings.xml64
-rw-r--r--core/res/res/values-it/strings.xml32
-rw-r--r--core/res/res/values-iw/strings.xml64
-rw-r--r--core/res/res/values-ja/strings.xml64
-rw-r--r--core/res/res/values-ko/strings.xml68
-rw-r--r--core/res/res/values-land/arrays.xml4
-rw-r--r--core/res/res/values-lt/strings.xml68
-rw-r--r--core/res/res/values-lv/strings.xml32
-rw-r--r--core/res/res/values-ms/strings.xml201
-rw-r--r--core/res/res/values-nb/strings.xml64
-rw-r--r--core/res/res/values-nl/strings.xml68
-rw-r--r--core/res/res/values-pl/strings.xml72
-rw-r--r--core/res/res/values-pt-rPT/strings.xml68
-rw-r--r--core/res/res/values-pt/strings.xml64
-rw-r--r--core/res/res/values-rm/strings.xml28
-rw-r--r--core/res/res/values-ro/strings.xml64
-rw-r--r--core/res/res/values-ru/strings.xml64
-rw-r--r--core/res/res/values-sk/strings.xml64
-rw-r--r--core/res/res/values-sl/strings.xml68
-rw-r--r--core/res/res/values-sr/strings.xml64
-rw-r--r--core/res/res/values-sv/strings.xml68
-rw-r--r--core/res/res/values-sw/strings.xml28
-rw-r--r--core/res/res/values-sw600dp/colors.xml28
-rw-r--r--core/res/res/values-sw600dp/dimens.xml2
-rw-r--r--core/res/res/values-th/strings.xml68
-rw-r--r--core/res/res/values-tl/strings.xml68
-rw-r--r--core/res/res/values-tr/strings.xml64
-rw-r--r--core/res/res/values-uk/strings.xml32
-rw-r--r--core/res/res/values-vi/strings.xml68
-rw-r--r--core/res/res/values-zh-rCN/strings.xml64
-rw-r--r--core/res/res/values-zh-rTW/strings.xml64
-rw-r--r--core/res/res/values-zu/strings.xml156
-rwxr-xr-xcore/res/res/values/attrs.xml14
-rw-r--r--core/res/res/values/colors.xml14
-rw-r--r--core/res/res/values/dimens.xml2
-rw-r--r--core/res/res/values/public.xml9
-rwxr-xr-xcore/res/res/values/strings.xml37
-rw-r--r--core/res/res/values/styles.xml29
-rw-r--r--core/res/res/values/themes.xml11
426 files changed, 5397 insertions, 3094 deletions
diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java
index 68c9926..1e238f0 100644
--- a/core/java/android/accessibilityservice/AccessibilityService.java
+++ b/core/java/android/accessibilityservice/AccessibilityService.java
@@ -130,20 +130,11 @@ import android.view.accessibility.AccessibilityNodeInfo;
* For security purposes an accessibility service can retrieve only the content of the
* currently active window. The currently active window is defined as the window from
* which was fired the last event of the following types:
- * {@link AccessibilityEvent#TYPE_TOUCH_EXPLORATION_GESTURE_START},
- * {@link AccessibilityEvent#TYPE_TOUCH_EXPLORATION_GESTURE_END},
- * {@link AccessibilityEvent#TYPE_VIEW_CLICKED},
- * {@link AccessibilityEvent#TYPE_VIEW_FOCUSED},
+ * {@link AccessibilityEvent#TYPE_WINDOW_STATE_CHANGED},
* {@link AccessibilityEvent#TYPE_VIEW_HOVER_ENTER},
* {@link AccessibilityEvent#TYPE_VIEW_HOVER_EXIT},
- * {@link AccessibilityEvent#TYPE_VIEW_LONG_CLICKED},
- * {@link AccessibilityEvent#TYPE_VIEW_SELECTED},
- * {@link AccessibilityEvent#TYPE_VIEW_TEXT_CHANGED},
- * {@link AccessibilityEvent#TYPE_WINDOW_STATE_CHANGED},
- * {@link AccessibilityEvent#TYPE_VIEW_SCROLLED},
- * {@link AccessibilityEvent#TYPE_VIEW_TEXT_SELECTION_CHANGED},
- * {@link AccessibilityEvent#TYPE_WINDOW_CONTENT_CHANGED}.
- * In other words, the active window is the one where the user interaction is taking place.
+ * In other words, the last window that was shown or the last window that the user has touched
+ * during touch exploration.
* </p>
* <p>
* The entry point for retrieving window content is through calling
diff --git a/core/java/android/app/ActionBar.java b/core/java/android/app/ActionBar.java
index 36940c2..7acaec8 100644
--- a/core/java/android/app/ActionBar.java
+++ b/core/java/android/app/ActionBar.java
@@ -29,10 +29,16 @@ import android.view.Window;
import android.widget.SpinnerAdapter;
/**
- * This is the public interface to the contextual ActionBar.
- * The ActionBar acts as a replacement for the title bar in Activities.
- * It provides facilities for creating toolbar actions as well as
- * methods of navigating around an application.
+ * Acts as a replacement for the title bar in Activities.
+ * The action bar provides facilities for creating toolbar actions as well as
+ * methods of navigating the application.
+ * <p>By default, the action bar appears at the top of every activity, with the application icon on
+ * the left, followed by the activity title. Items from the activity's options menu are also
+ * accessible from the action bar.</p>
+ * <p>From your activity, you can retrieve an instance of {@link ActionBar} by calling {@link
+ * android.app.Activity#getActionBar getActionBar()}.</p>
+ * <p>For more information, read the <a href="{@docRoot}guide/topics/ui/actionbar.html">Action
+ * Bar</a> developer guide.</p>
*/
public abstract class ActionBar {
/**
@@ -621,7 +627,18 @@ public abstract class ActionBar {
*
* @param enabled true to enable the home button, false to disable the home button.
*/
- public abstract void setHomeButtonEnabled(boolean enabled);
+ public void setHomeButtonEnabled(boolean enabled) { }
+
+ /**
+ * Returns a {@link Context} with an appropriate theme for creating views that
+ * will appear in the action bar. If you are inflating or instantiating custom views
+ * that will appear in an action bar, you should use the Context returned by this method.
+ * (This includes adapters used for list navigation mode.)
+ * This will ensure that views contrast properly against the action bar.
+ *
+ * @return A themed Context for creating views
+ */
+ public Context getThemedContext() { return null; }
/**
* Listener interface for ActionBar navigation events.
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 8d03ac7..d5b669e 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -19,7 +19,7 @@ package android.app;
import com.android.internal.app.ActionBarImpl;
import com.android.internal.policy.PolicyManager;
-import android.content.ComponentCallbacks;
+import android.content.ComponentCallbacks2;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
@@ -32,6 +32,7 @@ import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
+import android.content.res.Resources.Theme;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Canvas;
@@ -54,6 +55,7 @@ import android.util.AttributeSet;
import android.util.EventLog;
import android.util.Log;
import android.util.SparseArray;
+import android.util.TypedValue;
import android.view.ActionMode;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
@@ -624,7 +626,7 @@ import java.util.HashMap;
public class Activity extends ContextThemeWrapper
implements LayoutInflater.Factory2,
Window.Callback, KeyEvent.Callback,
- OnCreateContextMenuListener, ComponentCallbacks {
+ OnCreateContextMenuListener, ComponentCallbacks2 {
private static final String TAG = "Activity";
/** Standard activity result: operation canceled. */
@@ -672,6 +674,7 @@ public class Activity extends ContextThemeWrapper
/*package*/ int mConfigChangeFlags;
/*package*/ Configuration mCurrentConfig;
private SearchManager mSearchManager;
+ private MenuInflater mMenuInflater;
static final class NonConfigurationInstances {
Object activity;
@@ -856,6 +859,7 @@ public class Activity extends ContextThemeWrapper
? mLastNonConfigurationInstances.fragments : null);
}
mFragments.dispatchCreate();
+ getApplication().dispatchActivityCreated(this, savedInstanceState);
mCalled = true;
}
@@ -998,6 +1002,8 @@ public class Activity extends ContextThemeWrapper
}
mCheckedForLoaderManager = true;
}
+
+ getApplication().dispatchActivityStarted(this);
}
/**
@@ -1045,6 +1051,7 @@ public class Activity extends ContextThemeWrapper
* @see #onPause
*/
protected void onResume() {
+ getApplication().dispatchActivityResumed(this);
mCalled = true;
}
@@ -1155,6 +1162,7 @@ public class Activity extends ContextThemeWrapper
if (p != null) {
outState.putParcelable(FRAGMENTS_TAG, p);
}
+ getApplication().dispatchActivitySaveInstanceState(this, outState);
}
/**
@@ -1231,6 +1239,7 @@ public class Activity extends ContextThemeWrapper
* @see #onStop
*/
protected void onPause() {
+ getApplication().dispatchActivityPaused(this);
mCalled = true;
}
@@ -1317,6 +1326,7 @@ public class Activity extends ContextThemeWrapper
*/
protected void onStop() {
if (mActionBar != null) mActionBar.setShowHideAnimationEnabled(false);
+ getApplication().dispatchActivityStopped(this);
mCalled = true;
}
@@ -1379,6 +1389,8 @@ public class Activity extends ContextThemeWrapper
if (mSearchManager != null) {
mSearchManager.stopSearch();
}
+
+ getApplication().dispatchActivityDestroyed(this);
}
/**
@@ -1400,16 +1412,18 @@ public class Activity extends ContextThemeWrapper
public void onConfigurationChanged(Configuration newConfig) {
mCalled = true;
- if (mActionBar != null) {
- mActionBar.onConfigurationChanged(newConfig);
- }
-
mFragments.dispatchConfigurationChanged(newConfig);
if (mWindow != null) {
// Pass the configuration changed event to the window
mWindow.onConfigurationChanged(newConfig);
}
+
+ if (mActionBar != null) {
+ // Do this last; the action bar will need to access
+ // view changes from above.
+ mActionBar.onConfigurationChanged(newConfig);
+ }
}
/**
@@ -1575,12 +1589,17 @@ public class Activity extends ContextThemeWrapper
nci.loaders = mAllLoaderManagers;
return nci;
}
-
+
public void onLowMemory() {
mCalled = true;
mFragments.dispatchLowMemory();
}
-
+
+ public void onTrimMemory(int level) {
+ mCalled = true;
+ mFragments.dispatchTrimMemory(level);
+ }
+
/**
* Return the FragmentManager for interacting with fragments associated
* with this activity.
@@ -3083,7 +3102,16 @@ public class Activity extends ContextThemeWrapper
* Returns a {@link MenuInflater} with this context.
*/
public MenuInflater getMenuInflater() {
- return new MenuInflater(this);
+ // Make sure that action views can get an appropriate theme.
+ if (mMenuInflater == null) {
+ initActionBar();
+ if (mActionBar != null) {
+ mMenuInflater = new MenuInflater(mActionBar.getThemedContext());
+ } else {
+ mMenuInflater = new MenuInflater(this);
+ }
+ }
+ return mMenuInflater;
}
@Override
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 9bbbd6c..8931675 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -18,7 +18,7 @@ package android.app;
import android.app.backup.BackupAgent;
import android.content.BroadcastReceiver;
-import android.content.ComponentCallbacks;
+import android.content.ComponentCallbacks2;
import android.content.ComponentName;
import android.content.ContentProvider;
import android.content.Context;
@@ -123,7 +123,6 @@ public final class ActivityThread {
/** @hide */
public static final String TAG = "ActivityThread";
private static final android.graphics.Bitmap.Config THUMBNAIL_FORMAT = Bitmap.Config.RGB_565;
- private static final boolean DEBUG = false;
static final boolean localLOGV = false;
static final boolean DEBUG_MESSAGES = false;
/** @hide */
@@ -163,7 +162,7 @@ public final class ActivityThread {
= new ArrayList<Application>();
// set of instantiated backup agents, keyed by package name
final HashMap<String, BackupAgent> mBackupAgents = new HashMap<String, BackupAgent>();
- static final ThreadLocal<ActivityThread> sThreadLocal = new ThreadLocal();
+ static final ThreadLocal<ActivityThread> sThreadLocal = new ThreadLocal<ActivityThread>();
Instrumentation mInstrumentation;
String mInstrumentationAppDir = null;
String mInstrumentationAppPackage = null;
@@ -410,9 +409,9 @@ public final class ActivityThread {
CompatibilityInfo info;
}
- native private void dumpGraphicsInfo(FileDescriptor fd);
+ private native void dumpGraphicsInfo(FileDescriptor fd);
- private final class ApplicationThread extends ApplicationThreadNative {
+ private class ApplicationThread extends ApplicationThreadNative {
private static final String HEAP_COLUMN = "%13s %8s %8s %8s %8s %8s %8s";
private static final String ONE_COUNT_COLUMN = "%21s %8d";
private static final String TWO_COUNT_COLUMNS = "%21s %8d %21s %8d";
@@ -734,13 +733,13 @@ public final class ActivityThread {
FileOutputStream fout = new FileOutputStream(fd);
PrintWriter pw = new PrintWriter(fout);
try {
- return dumpMemInfo(fd, pw, args);
+ return dumpMemInfo(pw, args);
} finally {
pw.flush();
}
}
- private Debug.MemoryInfo dumpMemInfo(FileDescriptor fd, PrintWriter pw, String[] args) {
+ private Debug.MemoryInfo dumpMemInfo(PrintWriter pw, String[] args) {
long nativeMax = Debug.getNativeHeapSize() / 1024;
long nativeAllocated = Debug.getNativeHeapAllocatedSize() / 1024;
long nativeFree = Debug.getNativeHeapFreeSize() / 1024;
@@ -754,7 +753,7 @@ public final class ActivityThread {
long dalvikFree = runtime.freeMemory() / 1024;
long dalvikAllocated = dalvikMax - dalvikFree;
long viewInstanceCount = ViewDebug.getViewInstanceCount();
- long viewRootInstanceCount = ViewDebug.getViewAncestorInstanceCount();
+ long viewRootInstanceCount = ViewDebug.getViewRootImplCount();
long appContextInstanceCount = Debug.countInstancesOfClass(ContextImpl.class);
long activityInstanceCount = Debug.countInstancesOfClass(Activity.class);
int globalAssetCount = AssetManager.getGlobalAssetCount();
@@ -868,7 +867,7 @@ public final class ActivityThread {
int otherPrivateDirty = memInfo.otherPrivateDirty;
for (int i=0; i<Debug.MemoryInfo.NUM_OTHER_STATS; i++) {
- printRow(pw, HEAP_COLUMN, memInfo.getOtherLabel(i),
+ printRow(pw, HEAP_COLUMN, Debug.MemoryInfo.getOtherLabel(i),
memInfo.getOtherPss(i), memInfo.getOtherSharedDirty(i),
memInfo.getOtherPrivateDirty(i), "", "", "");
otherPss -= memInfo.getOtherPss(i);
@@ -885,7 +884,7 @@ public final class ActivityThread {
pw.println(" ");
pw.println(" Objects");
- printRow(pw, TWO_COUNT_COLUMNS, "Views:", viewInstanceCount, "ViewAncestors:",
+ printRow(pw, TWO_COUNT_COLUMNS, "Views:", viewInstanceCount, "ViewRootImpl:",
viewRootInstanceCount);
printRow(pw, TWO_COUNT_COLUMNS, "AppContexts:", appContextInstanceCount,
@@ -937,6 +936,7 @@ public final class ActivityThread {
@Override
public void dumpGfxInfo(FileDescriptor fd, String[] args) {
dumpGraphicsInfo(fd);
+ WindowManagerImpl.getDefault().dumpGfxInfo(fd);
}
private void printRow(PrintWriter pw, String format, Object...objs) {
@@ -959,7 +959,7 @@ public final class ActivityThread {
}
}
- private final class H extends Handler {
+ private class H extends Handler {
public static final int LAUNCH_ACTIVITY = 100;
public static final int PAUSE_ACTIVITY = 101;
public static final int PAUSE_ACTIVITY_FINISHING= 102;
@@ -1220,7 +1220,7 @@ public final class ActivityThread {
}
}
- private final class Idler implements MessageQueue.IdleHandler {
+ private class Idler implements MessageQueue.IdleHandler {
public final boolean queueIdle() {
ActivityClientRecord a = mNewActivities;
if (a != null) {
@@ -1231,12 +1231,13 @@ public final class ActivityThread {
if (localLOGV) Slog.v(
TAG, "Reporting idle of " + a +
" finished=" +
- (a.activity != null ? a.activity.mFinished : false));
+ (a.activity != null && a.activity.mFinished));
if (a.activity != null && !a.activity.mFinished) {
try {
am.activityIdle(a.token, a.createdConfig);
a.createdConfig = null;
} catch (RemoteException ex) {
+ // Ignore
}
}
prev = a;
@@ -1256,7 +1257,7 @@ public final class ActivityThread {
}
}
- private final static class ResourcesKey {
+ private static class ResourcesKey {
final private String mResDir;
final private float mScale;
final private int mHash;
@@ -1282,17 +1283,17 @@ public final class ActivityThread {
}
}
- public static final ActivityThread currentActivityThread() {
+ public static ActivityThread currentActivityThread() {
return sThreadLocal.get();
}
- public static final String currentPackageName() {
+ public static String currentPackageName() {
ActivityThread am = currentActivityThread();
return (am != null && am.mBoundApplication != null)
? am.mBoundApplication.processName : null;
}
- public static final Application currentApplication() {
+ public static Application currentApplication() {
ActivityThread am = currentActivityThread();
return am != null ? am.mInitialApplication : null;
}
@@ -1337,7 +1338,7 @@ public final class ActivityThread {
return config;
}
- private final Configuration mMainThreadConfig = new Configuration();
+ private Configuration mMainThreadConfig = new Configuration();
Configuration applyConfigCompatMainThread(Configuration config, CompatibilityInfo compat) {
if (config == null) {
return null;
@@ -1456,6 +1457,7 @@ public final class ActivityThread {
ai = getPackageManager().getApplicationInfo(packageName,
PackageManager.GET_SHARED_LIBRARY_FILES);
} catch (RemoteException e) {
+ // Ignore
}
if (ai != null) {
@@ -1505,7 +1507,7 @@ public final class ActivityThread {
}
}
- private final LoadedApk getPackageInfo(ApplicationInfo aInfo, CompatibilityInfo compatInfo,
+ private LoadedApk getPackageInfo(ApplicationInfo aInfo, CompatibilityInfo compatInfo,
ClassLoader baseLoader, boolean securityViolation, boolean includeCode) {
synchronized (mPackages) {
WeakReference<LoadedApk> ref;
@@ -1712,15 +1714,15 @@ public final class ActivityThread {
// if the thread hasn't started yet, we don't have the handler, so just
// save the messages until we're ready.
- private final void queueOrSendMessage(int what, Object obj) {
+ private void queueOrSendMessage(int what, Object obj) {
queueOrSendMessage(what, obj, 0, 0);
}
- private final void queueOrSendMessage(int what, Object obj, int arg1) {
+ private void queueOrSendMessage(int what, Object obj, int arg1) {
queueOrSendMessage(what, obj, arg1, 0);
}
- private final void queueOrSendMessage(int what, Object obj, int arg1, int arg2) {
+ private void queueOrSendMessage(int what, Object obj, int arg1, int arg2) {
synchronized (this) {
if (DEBUG_MESSAGES) Slog.v(
TAG, "SCHEDULE " + what + " " + mH.codeToString(what)
@@ -1743,7 +1745,7 @@ public final class ActivityThread {
queueOrSendMessage(H.CLEAN_UP_CONTEXT, cci);
}
- private final Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) {
+ private Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) {
// System.out.println("##### [" + System.currentTimeMillis() + "] ActivityThread.performLaunchActivity(" + r + ")");
ActivityInfo aInfo = r.activityInfo;
@@ -1861,7 +1863,7 @@ public final class ActivityThread {
return activity;
}
- private final void handleLaunchActivity(ActivityClientRecord r, Intent customIntent) {
+ private void handleLaunchActivity(ActivityClientRecord r, Intent customIntent) {
// If we are getting ready to gc after going to the background, well
// we are back active so skip it.
unscheduleGcIdler();
@@ -1917,11 +1919,12 @@ public final class ActivityThread {
ActivityManagerNative.getDefault()
.finishActivity(r.token, Activity.RESULT_CANCELED, null);
} catch (RemoteException ex) {
+ // Ignore
}
}
}
- private final void deliverNewIntents(ActivityClientRecord r,
+ private void deliverNewIntents(ActivityClientRecord r,
List<Intent> intents) {
final int N = intents.size();
for (int i=0; i<N; i++) {
@@ -1949,7 +1952,7 @@ public final class ActivityThread {
}
}
- private final void handleNewIntent(NewIntentData data) {
+ private void handleNewIntent(NewIntentData data) {
performNewIntents(data.token, data.intents);
}
@@ -1964,7 +1967,7 @@ public final class ActivityThread {
return sCurrentBroadcastIntent.get();
}
- private final void handleReceiver(ReceiverData data) {
+ private void handleReceiver(ReceiverData data) {
// If we are getting ready to gc after going to the background, well
// we are back active so skip it.
unscheduleGcIdler();
@@ -1976,7 +1979,7 @@ public final class ActivityThread {
IActivityManager mgr = ActivityManagerNative.getDefault();
- BroadcastReceiver receiver = null;
+ BroadcastReceiver receiver;
try {
java.lang.ClassLoader cl = packageInfo.getClassLoader();
data.intent.setExtrasClassLoader(cl);
@@ -2026,7 +2029,7 @@ public final class ActivityThread {
}
// Instantiate a BackupAgent and tell it that it's alive
- private final void handleCreateBackupAgent(CreateBackupAgentData data) {
+ private void handleCreateBackupAgent(CreateBackupAgentData data) {
if (DEBUG_BACKUP) Slog.v(TAG, "handleCreateBackupAgent: " + data);
// no longer idle; we have backup work to do
@@ -2091,7 +2094,7 @@ public final class ActivityThread {
}
// Tear down a BackupAgent
- private final void handleDestroyBackupAgent(CreateBackupAgentData data) {
+ private void handleDestroyBackupAgent(CreateBackupAgentData data) {
if (DEBUG_BACKUP) Slog.v(TAG, "handleDestroyBackupAgent: " + data);
LoadedApk packageInfo = getPackageInfoNoCheck(data.appInfo, data.compatInfo);
@@ -2110,7 +2113,7 @@ public final class ActivityThread {
}
}
- private final void handleCreateService(CreateServiceData data) {
+ private void handleCreateService(CreateServiceData data) {
// If we are getting ready to gc after going to the background, well
// we are back active so skip it.
unscheduleGcIdler();
@@ -2156,7 +2159,7 @@ public final class ActivityThread {
}
}
- private final void handleBindService(BindServiceData data) {
+ private void handleBindService(BindServiceData data) {
Service s = mServices.get(data.token);
if (s != null) {
try {
@@ -2184,7 +2187,7 @@ public final class ActivityThread {
}
}
- private final void handleUnbindService(BindServiceData data) {
+ private void handleUnbindService(BindServiceData data) {
Service s = mServices.get(data.token);
if (s != null) {
try {
@@ -2236,7 +2239,7 @@ public final class ActivityThread {
}
}
- private final void handleServiceArgs(ServiceArgsData data) {
+ private void handleServiceArgs(ServiceArgsData data) {
Service s = mServices.get(data.token);
if (s != null) {
try {
@@ -2270,7 +2273,7 @@ public final class ActivityThread {
}
}
- private final void handleStopService(IBinder token) {
+ private void handleStopService(IBinder token) {
Service s = mServices.remove(token);
if (s != null) {
try {
@@ -2465,7 +2468,7 @@ public final class ActivityThread {
private Bitmap mAvailThumbnailBitmap = null;
private Canvas mThumbnailCanvas = null;
- private final Bitmap createThumbnailBitmap(ActivityClientRecord r) {
+ private Bitmap createThumbnailBitmap(ActivityClientRecord r) {
Bitmap thumbnail = mAvailThumbnailBitmap;
try {
if (thumbnail == null) {
@@ -2515,7 +2518,7 @@ public final class ActivityThread {
return thumbnail;
}
- private final void handlePauseActivity(IBinder token, boolean finished,
+ private void handlePauseActivity(IBinder token, boolean finished,
boolean userLeaving, int configChanges) {
ActivityClientRecord r = mActivities.get(token);
if (r != null) {
@@ -2621,7 +2624,7 @@ public final class ActivityThread {
CharSequence description;
}
- private final class ProviderRefCount {
+ private class ProviderRefCount {
public int count;
ProviderRefCount(int pCount) {
count = pCount;
@@ -2636,7 +2639,7 @@ public final class ActivityThread {
* For the client, we want to call onStop()/onStart() to indicate when
* the activity's UI visibillity changes.
*/
- private final void performStopActivityInner(ActivityClientRecord r,
+ private void performStopActivityInner(ActivityClientRecord r,
StopInfo info, boolean keepShown, boolean saveState) {
if (localLOGV) Slog.v(TAG, "Performing stop of " + r);
Bundle state = null;
@@ -2699,7 +2702,7 @@ public final class ActivityThread {
}
}
- private final void updateVisibility(ActivityClientRecord r, boolean show) {
+ private void updateVisibility(ActivityClientRecord r, boolean show) {
View v = r.activity.mDecor;
if (v != null) {
if (show) {
@@ -2726,7 +2729,7 @@ public final class ActivityThread {
}
}
- private final void handleStopActivity(IBinder token, boolean show, int configChanges) {
+ private void handleStopActivity(IBinder token, boolean show, int configChanges) {
ActivityClientRecord r = mActivities.get(token);
r.activity.mConfigChangeFlags |= configChanges;
@@ -2760,7 +2763,7 @@ public final class ActivityThread {
}
}
- private final void handleWindowVisibility(IBinder token, boolean show) {
+ private void handleWindowVisibility(IBinder token, boolean show) {
ActivityClientRecord r = mActivities.get(token);
if (r == null) {
@@ -2785,7 +2788,7 @@ public final class ActivityThread {
}
}
- private final void handleSleeping(IBinder token, boolean sleeping) {
+ private void handleSleeping(IBinder token, boolean sleeping) {
ActivityClientRecord r = mActivities.get(token);
if (r == null) {
@@ -2846,7 +2849,7 @@ public final class ActivityThread {
WindowManagerImpl.getDefault().reportNewConfiguration(mConfiguration);
}
- private final void deliverResults(ActivityClientRecord r, List<ResultInfo> results) {
+ private void deliverResults(ActivityClientRecord r, List<ResultInfo> results) {
final int N = results.size();
for (int i=0; i<N; i++) {
ResultInfo ri = results.get(i);
@@ -2869,7 +2872,7 @@ public final class ActivityThread {
}
}
- private final void handleSendResult(ResultData res) {
+ private void handleSendResult(ResultData res) {
ActivityClientRecord r = mActivities.get(res.token);
if (DEBUG_RESULTS) Slog.v(TAG, "Handling send result to " + r);
if (r != null) {
@@ -2915,7 +2918,7 @@ public final class ActivityThread {
return performDestroyActivity(token, finishing, 0, false);
}
- private final ActivityClientRecord performDestroyActivity(IBinder token, boolean finishing,
+ private ActivityClientRecord performDestroyActivity(IBinder token, boolean finishing,
int configChanges, boolean getNonConfigInstance) {
ActivityClientRecord r = mActivities.get(token);
Class activityClass = null;
@@ -3008,7 +3011,7 @@ public final class ActivityThread {
return component == null ? "[Unknown]" : component.toShortString();
}
- private final void handleDestroyActivity(IBinder token, boolean finishing,
+ private void handleDestroyActivity(IBinder token, boolean finishing,
int configChanges, boolean getNonConfigInstance) {
ActivityClientRecord r = performDestroyActivity(token, finishing,
configChanges, getNonConfigInstance);
@@ -3123,7 +3126,7 @@ public final class ActivityThread {
}
}
- private final void handleRelaunchActivity(ActivityClientRecord tmp) {
+ private void handleRelaunchActivity(ActivityClientRecord tmp) {
// If we are getting ready to gc after going to the background, well
// we are back active so skip it.
unscheduleGcIdler();
@@ -3233,7 +3236,7 @@ public final class ActivityThread {
handleLaunchActivity(r, currentIntent);
}
- private final void handleRequestThumbnail(IBinder token) {
+ private void handleRequestThumbnail(IBinder token) {
ActivityClientRecord r = mActivities.get(token);
Bitmap thumbnail = createThumbnailBitmap(r);
CharSequence description = null;
@@ -3255,10 +3258,10 @@ public final class ActivityThread {
}
}
- ArrayList<ComponentCallbacks> collectComponentCallbacksLocked(
+ ArrayList<ComponentCallbacks2> collectComponentCallbacksLocked(
boolean allActivities, Configuration newConfig) {
- ArrayList<ComponentCallbacks> callbacks
- = new ArrayList<ComponentCallbacks>();
+ ArrayList<ComponentCallbacks2> callbacks
+ = new ArrayList<ComponentCallbacks2>();
if (mActivities.size() > 0) {
Iterator<ActivityClientRecord> it = mActivities.values().iterator();
@@ -3309,9 +3312,9 @@ public final class ActivityThread {
}
private final void performConfigurationChanged(
- ComponentCallbacks cb, Configuration config) {
+ ComponentCallbacks2 cb, Configuration config) {
// Only for Activity objects, check that they actually call up to their
- // superclass implementation. ComponentCallbacks is an interface, so
+ // superclass implementation. ComponentCallbacks2 is an interface, so
// we check the runtime type and act accordingly.
Activity activity = (cb instanceof Activity) ? (Activity) cb : null;
if (activity != null) {
@@ -3415,7 +3418,7 @@ public final class ActivityThread {
final void handleConfigurationChanged(Configuration config, CompatibilityInfo compat) {
- ArrayList<ComponentCallbacks> callbacks = null;
+ ArrayList<ComponentCallbacks2> callbacks = null;
synchronized (mPackages) {
if (mPendingConfiguration != null) {
@@ -3451,6 +3454,9 @@ public final class ActivityThread {
}
callbacks = collectComponentCallbacksLocked(false, config);
}
+
+ // Cleanup hardware accelerated stuff
+ WindowManagerImpl.getDefault().trimLocalMemory();
if (callbacks != null) {
final int N = callbacks.size();
@@ -3552,7 +3558,7 @@ public final class ActivityThread {
}
final void handleLowMemory() {
- ArrayList<ComponentCallbacks> callbacks;
+ ArrayList<ComponentCallbacks2> callbacks;
synchronized (mPackages) {
callbacks = collectComponentCallbacksLocked(true, null);
@@ -3577,9 +3583,19 @@ public final class ActivityThread {
final void handleTrimMemory(int level) {
WindowManagerImpl.getDefault().trimMemory(level);
+ ArrayList<ComponentCallbacks2> callbacks;
+
+ synchronized (mPackages) {
+ callbacks = collectComponentCallbacksLocked(true, null);
+ }
+
+ final int N = callbacks.size();
+ for (int i=0; i<N; i++) {
+ callbacks.get(i).onTrimMemory(level);
+ }
}
- private final void handleBindApplication(AppBindData data) {
+ private void handleBindApplication(AppBindData data) {
mBoundApplication = data;
mConfiguration = new Configuration(data.config);
mCompatConfiguration = new Configuration(data.config);
@@ -3791,7 +3807,7 @@ public final class ActivityThread {
}
}
- private final void installContentProviders(
+ private void installContentProviders(
Context context, List<ProviderInfo> providers) {
final ArrayList<IActivityManager.ContentProviderHolder> results =
new ArrayList<IActivityManager.ContentProviderHolder>();
@@ -3825,7 +3841,7 @@ public final class ActivityThread {
}
}
- private final IContentProvider getExistingProvider(Context context, String name) {
+ private IContentProvider getExistingProvider(Context context, String name) {
synchronized(mProviderMap) {
final ProviderClientRecord pr = mProviderMap.get(name);
if (pr != null) {
@@ -3835,7 +3851,7 @@ public final class ActivityThread {
}
}
- private final IContentProvider getProvider(Context context, String name) {
+ private IContentProvider getProvider(Context context, String name) {
IContentProvider existing = getExistingProvider(context, name);
if (existing != null) {
return existing;
@@ -4007,7 +4023,7 @@ public final class ActivityThread {
}
}
- private final IContentProvider installProvider(Context context,
+ private IContentProvider installProvider(Context context,
IContentProvider provider, ProviderInfo info, boolean noisy) {
ContentProvider localProvider = null;
if (provider == null) {
@@ -4027,6 +4043,7 @@ public final class ActivityThread {
c = context.createPackageContext(ai.packageName,
Context.CONTEXT_INCLUDE_CODE);
} catch (PackageManager.NameNotFoundException e) {
+ // Ignore
}
}
if (c == null) {
@@ -4086,7 +4103,7 @@ public final class ActivityThread {
return provider;
}
- private final void attach(boolean system) {
+ private void attach(boolean system) {
sThreadLocal.set(this);
mSystemThread = system;
if (!system) {
@@ -4101,6 +4118,7 @@ public final class ActivityThread {
try {
mgr.attachApplication(mAppThread);
} catch (RemoteException ex) {
+ // Ignore
}
} else {
// Don't set application object here -- if the system crashes,
@@ -4120,7 +4138,7 @@ public final class ActivityThread {
}
}
- ViewRootImpl.addConfigCallback(new ComponentCallbacks() {
+ ViewRootImpl.addConfigCallback(new ComponentCallbacks2() {
public void onConfigurationChanged(Configuration newConfig) {
synchronized (mPackages) {
// We need to apply this change to the resources
@@ -4140,6 +4158,8 @@ public final class ActivityThread {
}
public void onLowMemory() {
}
+ public void onTrimMemory(int level) {
+ }
});
}
@@ -4166,7 +4186,7 @@ public final class ActivityThread {
}
}
- public static final void main(String[] args) {
+ public static void main(String[] args) {
SamplingProfilerIntegration.start();
// CloseGuard defaults to true and can be quite spammy. We
diff --git a/core/java/android/app/Application.java b/core/java/android/app/Application.java
index 10cc9f8..dd9ea26 100644
--- a/core/java/android/app/Application.java
+++ b/core/java/android/app/Application.java
@@ -16,10 +16,14 @@
package android.app;
+import java.util.ArrayList;
+
import android.content.ComponentCallbacks;
+import android.content.ComponentCallbacks2;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.res.Configuration;
+import android.os.Bundle;
/**
* Base class for those who need to maintain global application state. You can
@@ -36,10 +40,25 @@ import android.content.res.Configuration;
* {@link android.content.Context#getApplicationContext() Context.getApplicationContext()}
* when first constructing the singleton.</p>
*/
-public class Application extends ContextWrapper implements ComponentCallbacks {
+public class Application extends ContextWrapper implements ComponentCallbacks2 {
+ private ArrayList<ComponentCallbacks> mComponentCallbacks =
+ new ArrayList<ComponentCallbacks>();
+ private ArrayList<ActivityLifecycleCallbacks> mActivityLifecycleCallbacks =
+ new ArrayList<ActivityLifecycleCallbacks>();
+
/** @hide */
public LoadedApk mLoadedApk;
-
+
+ public interface ActivityLifecycleCallbacks {
+ void onActivityCreated(Activity activity, Bundle savedInstanceState);
+ void onActivityStarted(Activity activity);
+ void onActivityResumed(Activity activity);
+ void onActivityPaused(Activity activity);
+ void onActivityStopped(Activity activity);
+ void onActivitySaveInstanceState(Activity activity, Bundle outState);
+ void onActivityDestroyed(Activity activity);
+ }
+
public Application() {
super(null);
}
@@ -63,11 +82,59 @@ public class Application extends ContextWrapper implements ComponentCallbacks {
*/
public void onTerminate() {
}
-
+
public void onConfigurationChanged(Configuration newConfig) {
+ Object[] callbacks = collectComponentCallbacks();
+ if (callbacks != null) {
+ for (int i=0; i<callbacks.length; i++) {
+ ((ComponentCallbacks)callbacks[i]).onConfigurationChanged(newConfig);
+ }
+ }
}
-
+
public void onLowMemory() {
+ Object[] callbacks = collectComponentCallbacks();
+ if (callbacks != null) {
+ for (int i=0; i<callbacks.length; i++) {
+ ((ComponentCallbacks)callbacks[i]).onLowMemory();
+ }
+ }
+ }
+
+ public void onTrimMemory(int level) {
+ Object[] callbacks = collectComponentCallbacks();
+ if (callbacks != null) {
+ for (int i=0; i<callbacks.length; i++) {
+ Object c = callbacks[i];
+ if (c instanceof ComponentCallbacks2) {
+ ((ComponentCallbacks2)c).onTrimMemory(level);
+ }
+ }
+ }
+ }
+
+ public void registerComponentCallbacks(ComponentCallbacks callback) {
+ synchronized (mComponentCallbacks) {
+ mComponentCallbacks.add(callback);
+ }
+ }
+
+ public void unregisterComponentCallbacks(ComponentCallbacks callback) {
+ synchronized (mComponentCallbacks) {
+ mComponentCallbacks.remove(callback);
+ }
+ }
+
+ public void registerActivityLifecycleCallbacks(ActivityLifecycleCallbacks callback) {
+ synchronized (mActivityLifecycleCallbacks) {
+ mActivityLifecycleCallbacks.add(callback);
+ }
+ }
+
+ public void unregisterActivityLifecycleCallbacks(ActivityLifecycleCallbacks callback) {
+ synchronized (mActivityLifecycleCallbacks) {
+ mActivityLifecycleCallbacks.remove(callback);
+ }
}
// ------------------ Internal API ------------------
@@ -79,4 +146,89 @@ public class Application extends ContextWrapper implements ComponentCallbacks {
attachBaseContext(context);
mLoadedApk = ContextImpl.getImpl(context).mPackageInfo;
}
+
+ /* package */ void dispatchActivityCreated(Activity activity, Bundle savedInstanceState) {
+ Object[] callbacks = collectActivityLifecycleCallbacks();
+ if (callbacks != null) {
+ for (int i=0; i<callbacks.length; i++) {
+ ((ActivityLifecycleCallbacks)callbacks[i]).onActivityCreated(activity,
+ savedInstanceState);
+ }
+ }
+ }
+
+ /* package */ void dispatchActivityStarted(Activity activity) {
+ Object[] callbacks = collectActivityLifecycleCallbacks();
+ if (callbacks != null) {
+ for (int i=0; i<callbacks.length; i++) {
+ ((ActivityLifecycleCallbacks)callbacks[i]).onActivityStarted(activity);
+ }
+ }
+ }
+
+ /* package */ void dispatchActivityResumed(Activity activity) {
+ Object[] callbacks = collectActivityLifecycleCallbacks();
+ if (callbacks != null) {
+ for (int i=0; i<callbacks.length; i++) {
+ ((ActivityLifecycleCallbacks)callbacks[i]).onActivityResumed(activity);
+ }
+ }
+ }
+
+ /* package */ void dispatchActivityPaused(Activity activity) {
+ Object[] callbacks = collectActivityLifecycleCallbacks();
+ if (callbacks != null) {
+ for (int i=0; i<callbacks.length; i++) {
+ ((ActivityLifecycleCallbacks)callbacks[i]).onActivityPaused(activity);
+ }
+ }
+ }
+
+ /* package */ void dispatchActivityStopped(Activity activity) {
+ Object[] callbacks = collectActivityLifecycleCallbacks();
+ if (callbacks != null) {
+ for (int i=0; i<callbacks.length; i++) {
+ ((ActivityLifecycleCallbacks)callbacks[i]).onActivityStopped(activity);
+ }
+ }
+ }
+
+ /* package */ void dispatchActivitySaveInstanceState(Activity activity, Bundle outState) {
+ Object[] callbacks = collectActivityLifecycleCallbacks();
+ if (callbacks != null) {
+ for (int i=0; i<callbacks.length; i++) {
+ ((ActivityLifecycleCallbacks)callbacks[i]).onActivitySaveInstanceState(activity,
+ outState);
+ }
+ }
+ }
+
+ /* package */ void dispatchActivityDestroyed(Activity activity) {
+ Object[] callbacks = collectActivityLifecycleCallbacks();
+ if (callbacks != null) {
+ for (int i=0; i<callbacks.length; i++) {
+ ((ActivityLifecycleCallbacks)callbacks[i]).onActivityDestroyed(activity);
+ }
+ }
+ }
+
+ private Object[] collectComponentCallbacks() {
+ Object[] callbacks = null;
+ synchronized (mComponentCallbacks) {
+ if (mComponentCallbacks.size() > 0) {
+ callbacks = mComponentCallbacks.toArray();
+ }
+ }
+ return callbacks;
+ }
+
+ private Object[] collectActivityLifecycleCallbacks() {
+ Object[] callbacks = null;
+ synchronized (mActivityLifecycleCallbacks) {
+ if (mActivityLifecycleCallbacks.size() > 0) {
+ callbacks = mActivityLifecycleCallbacks.toArray();
+ }
+ }
+ return callbacks;
+ }
}
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index a99cec2..b4bdb2f 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -1109,6 +1109,12 @@ class ContextImpl extends Context {
throw new RuntimeException("Not supported in system context");
}
try {
+ IBinder token = getActivityToken();
+ if (token == null && (flags&BIND_AUTO_CREATE) == 0 && mPackageInfo != null
+ && mPackageInfo.getApplicationInfo().targetSdkVersion
+ < android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
+ flags |= BIND_WAIVE_PRIORITY;
+ }
int res = ActivityManagerNative.getDefault().bindService(
mMainThread.getApplicationThread(), getActivityToken(),
service, service.resolveTypeIfNeeded(getContentResolver()),
diff --git a/core/java/android/app/Fragment.java b/core/java/android/app/Fragment.java
index cb97c46..371e7ad 100644
--- a/core/java/android/app/Fragment.java
+++ b/core/java/android/app/Fragment.java
@@ -17,7 +17,7 @@
package android.app;
import android.animation.Animator;
-import android.content.ComponentCallbacks;
+import android.content.ComponentCallbacks2;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
@@ -162,6 +162,9 @@ final class FragmentState implements Parcelable {
* constructor to instantiate it. If the empty constructor is not available,
* a runtime exception will occur in some cases during state restore.
*
+ * <p>For more documentation, also see the <a
+ * href="{@docRoot}guide/topics/fundamentals/fragments.html">Fragments</a> developer guide.</p>
+ *
* <p>Topics covered here:
* <ol>
* <li><a href="#OlderPlatforms">Older Platforms</a>
@@ -329,7 +332,7 @@ final class FragmentState implements Parcelable {
* pressing back will pop it to return the user to whatever previous state
* the activity UI was in.
*/
-public class Fragment implements ComponentCallbacks, OnCreateContextMenuListener {
+public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListener {
private static final HashMap<String, Class<?>> sClassMap =
new HashMap<String, Class<?>>();
@@ -880,7 +883,7 @@ public class Fragment implements ComponentCallbacks, OnCreateContextMenuListener
public void setHasOptionsMenu(boolean hasMenu) {
if (mHasMenu != hasMenu) {
mHasMenu = hasMenu;
- if (isAdded() && !isHidden()) {
+ if (isAdded() && !isHidden() && isResumed()) {
mActivity.invalidateOptionsMenu();
}
}
@@ -1179,6 +1182,10 @@ public class Fragment implements ComponentCallbacks, OnCreateContextMenuListener
mCalled = true;
}
+ public void onTrimMemory(int level) {
+ mCalled = true;
+ }
+
/**
* Called when the view previously created by {@link #onCreateView} has
* been detached from the fragment. The next time the fragment needs
diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java
index 789d3a6..c33ab2c 100644
--- a/core/java/android/app/FragmentManager.java
+++ b/core/java/android/app/FragmentManager.java
@@ -978,7 +978,7 @@ final class FragmentManagerImpl extends FragmentManager {
}
}
- if (mNeedMenuInvalidate && mActivity != null) {
+ if (mNeedMenuInvalidate && mActivity != null && mCurState == Fragment.RESUMED) {
mActivity.invalidateOptionsMenu();
mNeedMenuInvalidate = false;
}
@@ -1722,6 +1722,17 @@ final class FragmentManagerImpl extends FragmentManager {
}
}
+ public void dispatchTrimMemory(int level) {
+ if (mActive != null) {
+ for (int i=0; i<mAdded.size(); i++) {
+ Fragment f = mAdded.get(i);
+ if (f != null) {
+ f.onTrimMemory(level);
+ }
+ }
+ }
+ }
+
public boolean dispatchCreateOptionsMenu(Menu menu, MenuInflater inflater) {
boolean show = false;
ArrayList<Fragment> newMenus = null;
diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java
index 8e2d360..8fa95b4 100644
--- a/core/java/android/app/SearchDialog.java
+++ b/core/java/android/app/SearchDialog.java
@@ -172,6 +172,7 @@ public class SearchDialog extends Dialog {
mSearchView.setOnCloseListener(mOnCloseListener);
mSearchView.setOnQueryTextListener(mOnQueryChangeListener);
mSearchView.setOnSuggestionListener(mOnSuggestionSelectionListener);
+ mSearchView.onActionViewExpanded();
mCloseSearch = findViewById(com.android.internal.R.id.closeButton);
mCloseSearch.setOnClickListener(new View.OnClickListener() {
diff --git a/core/java/android/app/Service.java b/core/java/android/app/Service.java
index 4c21d04..ebde6e0 100644
--- a/core/java/android/app/Service.java
+++ b/core/java/android/app/Service.java
@@ -16,7 +16,7 @@
package android.app;
-import android.content.ComponentCallbacks;
+import android.content.ComponentCallbacks2;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ContextWrapper;
@@ -274,7 +274,7 @@ import java.io.PrintWriter;
* {@sample development/samples/ApiDemos/src/com/example/android/apis/app/MessengerServiceActivities.java
* bind}
*/
-public abstract class Service extends ContextWrapper implements ComponentCallbacks {
+public abstract class Service extends ContextWrapper implements ComponentCallbacks2 {
private static final String TAG = "Service";
public Service() {
@@ -451,7 +451,10 @@ public abstract class Service extends ContextWrapper implements ComponentCallbac
public void onLowMemory() {
}
-
+
+ public void onTrimMemory(int level) {
+ }
+
/**
* Return the communication channel to the service. May return null if
* clients can not bind to the service. The returned
diff --git a/core/java/android/app/backup/BackupAgent.java b/core/java/android/app/backup/BackupAgent.java
index 436fdf8..58ea0c3 100644
--- a/core/java/android/app/backup/BackupAgent.java
+++ b/core/java/android/app/backup/BackupAgent.java
@@ -213,13 +213,13 @@ public abstract class BackupAgent extends ContextWrapper {
public void onFullBackup(FullBackupDataOutput data) throws IOException {
ApplicationInfo appInfo = getApplicationInfo();
- String rootDir = new File(appInfo.dataDir).getAbsolutePath();
- String filesDir = getFilesDir().getAbsolutePath();
- String databaseDir = getDatabasePath("foo").getParentFile().getAbsolutePath();
- String sharedPrefsDir = getSharedPrefsFile("foo").getParentFile().getAbsolutePath();
- String cacheDir = getCacheDir().getAbsolutePath();
+ String rootDir = new File(appInfo.dataDir).getCanonicalPath();
+ String filesDir = getFilesDir().getCanonicalPath();
+ String databaseDir = getDatabasePath("foo").getParentFile().getCanonicalPath();
+ String sharedPrefsDir = getSharedPrefsFile("foo").getParentFile().getCanonicalPath();
+ String cacheDir = getCacheDir().getCanonicalPath();
String libDir = (appInfo.nativeLibraryDir != null)
- ? new File(appInfo.nativeLibraryDir).getAbsolutePath()
+ ? new File(appInfo.nativeLibraryDir).getCanonicalPath()
: null;
// Filters, the scan queue, and the set of resulting entities
@@ -271,20 +271,27 @@ public abstract class BackupAgent extends ContextWrapper {
String spDir;
String cacheDir;
String libDir;
+ String filePath;
ApplicationInfo appInfo = getApplicationInfo();
- mainDir = new File(appInfo.dataDir).getAbsolutePath();
- filesDir = getFilesDir().getAbsolutePath();
- dbDir = getDatabasePath("foo").getParentFile().getAbsolutePath();
- spDir = getSharedPrefsFile("foo").getParentFile().getAbsolutePath();
- cacheDir = getCacheDir().getAbsolutePath();
- libDir = (appInfo.nativeLibraryDir == null) ? null
- : new File(appInfo.nativeLibraryDir).getAbsolutePath();
-
- // Now figure out which well-defined tree the file is placed in, working from
- // most to least specific. We also specifically exclude the lib and cache dirs.
- String filePath = file.getAbsolutePath();
+ try {
+ mainDir = new File(appInfo.dataDir).getCanonicalPath();
+ filesDir = getFilesDir().getCanonicalPath();
+ dbDir = getDatabasePath("foo").getParentFile().getCanonicalPath();
+ spDir = getSharedPrefsFile("foo").getParentFile().getCanonicalPath();
+ cacheDir = getCacheDir().getCanonicalPath();
+ libDir = (appInfo.nativeLibraryDir == null)
+ ? null
+ : new File(appInfo.nativeLibraryDir).getCanonicalPath();
+
+ // Now figure out which well-defined tree the file is placed in, working from
+ // most to least specific. We also specifically exclude the lib and cache dirs.
+ filePath = file.getCanonicalPath();
+ } catch (IOException e) {
+ Log.w(TAG, "Unable to obtain canonical paths");
+ return;
+ }
if (filePath.startsWith(cacheDir) || filePath.startsWith(libDir)) {
Log.w(TAG, "lib and cache files are not backed up");
@@ -334,15 +341,16 @@ public abstract class BackupAgent extends ContextWrapper {
while (scanQueue.size() > 0) {
File file = scanQueue.remove(0);
- String filePath = file.getAbsolutePath();
+ String filePath;
+ try {
+ filePath = file.getCanonicalPath();
- // prune this subtree?
- if (excludes != null && excludes.contains(filePath)) {
- continue;
- }
+ // prune this subtree?
+ if (excludes != null && excludes.contains(filePath)) {
+ continue;
+ }
- // If it's a directory, enqueue its contents for scanning.
- try {
+ // If it's a directory, enqueue its contents for scanning.
StructStat stat = Libcore.os.lstat(filePath);
if (OsConstants.S_ISLNK(stat.st_mode)) {
if (DEBUG) Log.i(TAG, "Symlink (skipping)!: " + file);
@@ -355,6 +363,9 @@ public abstract class BackupAgent extends ContextWrapper {
}
}
}
+ } catch (IOException e) {
+ if (DEBUG) Log.w(TAG, "Error canonicalizing path of " + file);
+ continue;
} catch (ErrnoException e) {
if (DEBUG) Log.w(TAG, "Error scanning file " + file + " : " + e);
continue;
@@ -415,15 +426,15 @@ public abstract class BackupAgent extends ContextWrapper {
// Parse out the semantic domains into the correct physical location
if (domain.equals(FullBackup.DATA_TREE_TOKEN)) {
- basePath = getFilesDir().getAbsolutePath();
+ basePath = getFilesDir().getCanonicalPath();
} else if (domain.equals(FullBackup.DATABASE_TREE_TOKEN)) {
- basePath = getDatabasePath("foo").getParentFile().getAbsolutePath();
+ basePath = getDatabasePath("foo").getParentFile().getCanonicalPath();
} else if (domain.equals(FullBackup.ROOT_TREE_TOKEN)) {
- basePath = new File(getApplicationInfo().dataDir).getAbsolutePath();
+ basePath = new File(getApplicationInfo().dataDir).getCanonicalPath();
} else if (domain.equals(FullBackup.SHAREDPREFS_TREE_TOKEN)) {
- basePath = getSharedPrefsFile("foo").getParentFile().getAbsolutePath();
+ basePath = getSharedPrefsFile("foo").getParentFile().getCanonicalPath();
} else if (domain.equals(FullBackup.CACHE_TREE_TOKEN)) {
- basePath = getCacheDir().getAbsolutePath();
+ basePath = getCacheDir().getCanonicalPath();
} else {
// Not a supported location
Log.i(TAG, "Data restored from non-app domain " + domain + ", ignoring");
diff --git a/core/java/android/app/backup/IBackupManager.aidl b/core/java/android/app/backup/IBackupManager.aidl
index bac874e..c154296 100644
--- a/core/java/android/app/backup/IBackupManager.aidl
+++ b/core/java/android/app/backup/IBackupManager.aidl
@@ -111,6 +111,23 @@ interface IBackupManager {
boolean isBackupEnabled();
/**
+ * Set the device's backup password. Returns {@code true} if the password was set
+ * successfully, {@code false} otherwise. Typically a failure means that an incorrect
+ * current password was supplied.
+ *
+ * <p>Callers must hold the android.permission.BACKUP permission to use this method.
+ */
+ boolean setBackupPassword(in String currentPw, in String newPw);
+
+ /**
+ * Reports whether a backup password is currently set. If not, then a null or empty
+ * "current password" argument should be passed to setBackupPassword().
+ *
+ * <p>Callers must hold the android.permission.BACKUP permission to use this method.
+ */
+ boolean hasBackupPassword();
+
+ /**
* Schedule an immediate backup attempt for all pending updates. This is
* primarily intended for transports to use when they detect a suitable
* opportunity for doing a backup pass. If there are no pending updates to
@@ -161,9 +178,15 @@ interface IBackupManager {
* the same time, the UI supplies a callback Binder for progress notifications during
* the operation.
*
+ * <p>The password passed by the confirming entity must match the saved backup or
+ * full-device encryption password in order to perform a backup. If a password is
+ * supplied for restore, it must match the password used when creating the full
+ * backup dataset being used for restore.
+ *
* <p>Callers must hold the android.permission.BACKUP permission to use this method.
*/
void acknowledgeFullBackupOrRestore(int token, boolean allow,
+ in String curPassword, in String encryptionPassword,
IFullBackupRestoreObserver observer);
/**
diff --git a/core/java/android/appwidget/AppWidgetHostView.java b/core/java/android/appwidget/AppWidgetHostView.java
index d8adc6c..960d7fb 100644
--- a/core/java/android/appwidget/AppWidgetHostView.java
+++ b/core/java/android/appwidget/AppWidgetHostView.java
@@ -38,6 +38,7 @@ import android.widget.BaseAdapter;
import android.widget.FrameLayout;
import android.widget.RemoteViews;
import android.widget.TextView;
+import android.widget.RemoteViewsAdapter.RemoteAdapterConnectionCallback;
/**
* Provides the glue to show AppWidget views. This class offers automatic animation
@@ -276,6 +277,11 @@ public class AppWidgetHostView extends FrameLayout {
if (adapter instanceof BaseAdapter) {
BaseAdapter baseAdapter = (BaseAdapter) adapter;
baseAdapter.notifyDataSetChanged();
+ } else if (adapter == null && adapterView instanceof RemoteAdapterConnectionCallback) {
+ // If the adapter is null, it may mean that the RemoteViewsAapter has not yet
+ // connected to its associated service, and hence the adapter hasn't been set.
+ // In this case, we need to defer the notify call until it has been set.
+ ((RemoteAdapterConnectionCallback) adapterView).deferNotifyDataSetChanged();
}
}
}
diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java
index b993bd8..ca6f085 100644
--- a/core/java/android/bluetooth/BluetoothAdapter.java
+++ b/core/java/android/bluetooth/BluetoothAdapter.java
@@ -1143,6 +1143,69 @@ public final class BluetoothAdapter {
}
}
+ /**
+ * Enable control of the Bluetooth Adapter for a single application.
+ *
+ * <p>Some applications need to use Bluetooth for short periods of time to
+ * transfer data but don't want all the associated implications like
+ * automatic connection to headsets etc.
+ *
+ * <p> Multiple applications can call this. This is reference counted and
+ * Bluetooth disabled only when no one else is using it. There will be no UI
+ * shown to the user while bluetooth is being enabled. Any user action will
+ * override this call. For example, if user wants Bluetooth on and the last
+ * user of this API wanted to disable Bluetooth, Bluetooth will not be
+ * turned off.
+ *
+ * <p> This API is only meant to be used by internal applications. Third
+ * party applications but use {@link #enable} and {@link #disable} APIs.
+ *
+ * <p> If this API returns true, it means the callback will be called.
+ * The callback will be called with the current state of Bluetooth.
+ * If the state is not what was requested, an internal error would be the
+ * reason.
+ *
+ * @param on True for on, false for off.
+ * @param callback The callback to notify changes to the state.
+ * @hide
+ */
+ public boolean changeApplicationBluetoothState(boolean on,
+ BluetoothStateChangeCallback callback) {
+ if (callback == null) return false;
+
+ try {
+ return mService.changeApplicationBluetoothState(on, new
+ StateChangeCallbackWrapper(callback), new Binder());
+ } catch (RemoteException e) {
+ Log.e(TAG, "changeBluetoothState", e);
+ }
+ return false;
+ }
+
+ /**
+ * @hide
+ */
+ public interface BluetoothStateChangeCallback {
+ public void onBluetoothStateChange(boolean on);
+ }
+
+ /**
+ * @hide
+ */
+ public class StateChangeCallbackWrapper extends IBluetoothStateChangeCallback.Stub {
+ private BluetoothStateChangeCallback mCallback;
+
+ StateChangeCallbackWrapper(BluetoothStateChangeCallback
+ callback) {
+ mCallback = callback;
+ }
+
+ @Override
+ public void onBluetoothStateChange(boolean on) {
+ mCallback.onBluetoothStateChange(on);
+ }
+ }
+
private Set<BluetoothDevice> toDeviceSet(String[] addresses) {
Set<BluetoothDevice> devices = new HashSet<BluetoothDevice>(addresses.length);
for (int i = 0; i < addresses.length; i++) {
diff --git a/core/java/android/bluetooth/IBluetooth.aidl b/core/java/android/bluetooth/IBluetooth.aidl
index da66b1a..ddede9c 100644
--- a/core/java/android/bluetooth/IBluetooth.aidl
+++ b/core/java/android/bluetooth/IBluetooth.aidl
@@ -17,6 +17,7 @@
package android.bluetooth;
import android.bluetooth.IBluetoothCallback;
+import android.bluetooth.IBluetoothStateChangeCallback;
import android.bluetooth.IBluetoothHealthCallback;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHealthAppConfiguration;
@@ -52,6 +53,9 @@ interface IBluetooth
byte[] readOutOfBandData();
int getAdapterConnectionState();
+ boolean changeApplicationBluetoothState(boolean on,
+ in IBluetoothStateChangeCallback callback, in
+ IBinder b);
boolean createBond(in String address);
boolean createBondOutOfBand(in String address, in byte[] hash, in byte[] randomizer);
diff --git a/core/java/android/bluetooth/IBluetoothStateChangeCallback.aidl b/core/java/android/bluetooth/IBluetoothStateChangeCallback.aidl
new file mode 100644
index 0000000..feccdce
--- /dev/null
+++ b/core/java/android/bluetooth/IBluetoothStateChangeCallback.aidl
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+
+package android.bluetooth;
+
+/**
+ * System private API for Bluetooth state change callback.
+ *
+ * {@hide}
+ */
+interface IBluetoothStateChangeCallback
+{
+ void onBluetoothStateChange(boolean on);
+}
diff --git a/core/java/android/content/ComponentCallbacks.java b/core/java/android/content/ComponentCallbacks.java
index 37cc141..dad60b0 100644
--- a/core/java/android/content/ComponentCallbacks.java
+++ b/core/java/android/content/ComponentCallbacks.java
@@ -51,13 +51,4 @@ public interface ComponentCallbacks {
* The system will perform a gc for you after returning from this method.
*/
void onLowMemory();
-
- /** @hide */
- static final int TRIM_MEMORY_COMPLETE = 80;
-
- /** @hide */
- static final int TRIM_MEMORY_MODERATE = 50;
-
- /** @hide */
- static final int TRIM_MEMORY_BACKGROUND = 20;
}
diff --git a/core/java/android/content/ComponentCallbacks2.java b/core/java/android/content/ComponentCallbacks2.java
new file mode 100644
index 0000000..8b9f97c
--- /dev/null
+++ b/core/java/android/content/ComponentCallbacks2.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.content;
+
+/**
+ * Extended {@link ComponentCallbacks} interface with a new callback for
+ * finer-grained memory management.
+ */
+public interface ComponentCallbacks2 extends ComponentCallbacks {
+
+ /**
+ * Level for {@link #onTrimMemory(int)}: the process is nearing the end
+ * of the background LRU list, and if more memory isn't found soon it will
+ * be killed.
+ */
+ static final int TRIM_MEMORY_COMPLETE = 80;
+
+ /**
+ * Level for {@link #onTrimMemory(int)}: the process is around the middle
+ * of the background LRU list; freeing memory can help the system keep
+ * other processes running later in the list for better overall performance.
+ */
+ static final int TRIM_MEMORY_MODERATE = 60;
+
+ /**
+ * Level for {@link #onTrimMemory(int)}: the process has gone on to the
+ * LRU list. This is a good opportunity to clean up resources that can
+ * efficiently and quickly be re-built if the user returns to the app.
+ */
+ static final int TRIM_MEMORY_BACKGROUND = 40;
+
+ /**
+ * Level for {@link #onTrimMemory(int)}: the process had been showing
+ * a user interface, and is no longer doing so. Large allocations with
+ * the UI should be released at this point to allow memory to be better
+ * managed.
+ */
+ static final int TRIM_MEMORY_UI_HIDDEN = 20;
+
+ /**
+ * Called when the operating system has determined that it is a good
+ * time for a process to trim unneeded memory from its process. This will
+ * happen for example when it goes in the background and there is not enough
+ * memory to keep as many background processes running as desired.
+ *
+ * @param level The context of the trim, giving a hint of the amount of
+ * trimming the application may like to perform. May be
+ * {@link #TRIM_MEMORY_COMPLETE}, {@link #TRIM_MEMORY_MODERATE},
+ * {@link #TRIM_MEMORY_BACKGROUND}, or {@link #TRIM_MEMORY_UI_HIDDEN}.
+ */
+ void onTrimMemory(int level);
+}
diff --git a/core/java/android/content/ContentProvider.java b/core/java/android/content/ContentProvider.java
index 1a5c675..8057d4b 100644
--- a/core/java/android/content/ContentProvider.java
+++ b/core/java/android/content/ContentProvider.java
@@ -78,7 +78,7 @@ import java.util.ArrayList;
* ContentProvider instance, so subclasses don't have to worry about the details of
* cross-process calls.</p>
*/
-public abstract class ContentProvider implements ComponentCallbacks {
+public abstract class ContentProvider implements ComponentCallbacks2 {
private static final String TAG = "ContentProvider";
/*
@@ -491,6 +491,9 @@ public abstract class ContentProvider implements ComponentCallbacks {
public void onLowMemory() {
}
+ public void onTrimMemory(int level) {
+ }
+
/**
* Implement this to handle query requests from clients.
* This method can be called from multiple threads, as described in
diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java
index 364821e..1e72092 100644
--- a/core/java/android/content/ContentResolver.java
+++ b/core/java/android/content/ContentResolver.java
@@ -532,7 +532,7 @@ public abstract class ContentResolver {
try {
AssetFileDescriptor fd = provider.openAssetFile(uri, mode);
if(fd == null) {
- releaseProvider(provider);
+ // The provider will be released by the finally{} clause
return null;
}
ParcelFileDescriptor pfd = new ParcelFileDescriptorInner(
@@ -596,7 +596,7 @@ public abstract class ContentResolver {
try {
AssetFileDescriptor fd = provider.openTypedAssetFile(uri, mimeType, opts);
if (fd == null) {
- releaseProvider(provider);
+ // The provider will be released by the finally{} clause
return null;
}
ParcelFileDescriptor pfd = new ParcelFileDescriptorInner(
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index cdda910..46712a9 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -107,12 +107,17 @@ public abstract class Context {
* this still provides you with access to the service object while the
* service is created.
*
- * <p>Specifying this flag also tells the system to treat the service
- * as being as important as your own process -- that is, when deciding
- * which process should be killed to free memory, the service will only
- * be considered a candidate as long as the processes of any such bindings
- * is also a candidate to be killed. This is to avoid situations where
- * the service is being continually created and killed due to low memory.
+ * <p>Note that prior to {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH},
+ * not supplying this flag would also impact how important the system
+ * consider's the target service's process to be. When set, the only way
+ * for it to be raised was by binding from a service in which case it will
+ * only be important when that activity is in the foreground. Now to
+ * achieve this behavior you must explicitly supply the new flag
+ * {@link #BIND_ADJUST_WITH_ACTIVITY}. For compatibility, old applications
+ * that don't specify {@link #BIND_AUTO_CREATE} will automatically have
+ * the flags {@link #BIND_WAIVE_PRIORITY} and
+ * {@link #BIND_ADJUST_WITH_ACTIVITY} set for them in order to achieve
+ * the same result.
*/
public static final int BIND_AUTO_CREATE = 0x0001;
@@ -129,7 +134,7 @@ public abstract class Context {
/**
* Flag for {@link #bindService}: don't allow this binding to raise
* the target service's process to the foreground scheduling priority.
- * It will still be raised to the at least the same memory priority
+ * It will still be raised to at least the same memory priority
* as the client (so that its process will not be killable in any
* situation where the client is not killable), but for CPU scheduling
* purposes it may be left in the background. This only has an impact
@@ -138,6 +143,50 @@ public abstract class Context {
*/
public static final int BIND_NOT_FOREGROUND = 0x0004;
+ /**
+ * Flag for {@link #bindService}: indicates that the client application
+ * binding to this service considers the service to be more important than
+ * the app itself. When set, the platform will try to have the out of
+ * memory kill the app before it kills the service it is bound to, though
+ * this is not guaranteed to be the case.
+ */
+ public static final int BIND_ABOVE_CLIENT = 0x0008;
+
+ /**
+ * Flag for {@link #bindService}: allow the process hosting the bound
+ * service to go through its normal memory management. It will be
+ * treated more like a running service, allowing the system to
+ * (temporarily) expunge the process if low on memory or for some other
+ * whim it may have, and being more aggressive about making it a candidate
+ * to be killed (and restarted) if running for a long time.
+ */
+ public static final int BIND_ALLOW_OOM_MANAGEMENT = 0x0010;
+
+ /**
+ * Flag for {@link #bindService}: don't impact the scheduling or
+ * memory management priority of the target service's hosting process.
+ * Allows the service's process to be managed on the background LRU list
+ * just like a regular application process in the background.
+ */
+ public static final int BIND_WAIVE_PRIORITY = 0x0020;
+
+ /**
+ * Flag for {@link #bindService}: this service is very important to
+ * the client, so should be brought to the foreground process level
+ * when the client is. Normally a process can only be raised to the
+ * visibility level by a client, even if that client is in the foreground.
+ */
+ public static final int BIND_IMPORTANT = 0x0040;
+
+ /**
+ * Flag for {@link #bindService}: If binding from an activity, allow the
+ * target service's process importance to be raised based on whether the
+ * activity is visible to the user, regardless whether another flag is
+ * used to reduce the amount that the client process's overall importance
+ * is used to impact it.
+ */
+ public static final int BIND_ADJUST_WITH_ACTIVITY = 0x0040;
+
/** Return an AssetManager instance for your application's package. */
public abstract AssetManager getAssets();
@@ -185,6 +234,25 @@ public abstract class Context {
public abstract Context getApplicationContext();
/**
+ * Add a new {@link ComponentCallbacks} to the base application of the
+ * Context, which will be called at the same times as the ComponentCallbacks
+ * methods of activities and other components are called. Note that you
+ * <em>must</em> be sure to use {@link #unregisterComponentCallbacks} when
+ * appropriate in the future; this will not be removed for you.
+ */
+ public void registerComponentCallbacks(ComponentCallbacks callback) {
+ getApplicationContext().registerComponentCallbacks(callback);
+ }
+
+ /**
+ * Remove a {@link ComponentCallbacks} objec that was previously registered
+ * with {@link #registerComponentCallbacks(ComponentCallbacks)}.
+ */
+ public void unregisterComponentCallbacks(ComponentCallbacks callback) {
+ getApplicationContext().unregisterComponentCallbacks(callback);
+ }
+
+ /**
* Return a localized, styled CharSequence from the application's package's
* default string table.
*
@@ -1209,8 +1277,10 @@ public abstract class Context {
* {@link IntentFilter} published by a service.
* @param conn Receives information as the service is started and stopped.
* @param flags Operation options for the binding. May be 0,
- * {@link #BIND_AUTO_CREATE}, {@link #BIND_DEBUG_UNBIND}, or
- * {@link #BIND_NOT_FOREGROUND}.
+ * {@link #BIND_AUTO_CREATE}, {@link #BIND_DEBUG_UNBIND},
+ * {@link #BIND_NOT_FOREGROUND}, {@link #BIND_ABOVE_CLIENT},
+ * {@link #BIND_ALLOW_OOM_MANAGEMENT}, or
+ * {@link #BIND_WAIVE_PRIORITY}.
* @return If you have successfully bound to the service, true is returned;
* false is returned if the connection is not made so you will not
* receive the service object.
diff --git a/core/java/android/content/Loader.java b/core/java/android/content/Loader.java
index 4e70b74..368c33e 100644
--- a/core/java/android/content/Loader.java
+++ b/core/java/android/content/Loader.java
@@ -40,6 +40,8 @@ import java.io.PrintWriter;
*
* <p>Most implementations should not derive directly from this class, but
* instead inherit from {@link AsyncTaskLoader}.</p>
+ * <p>For more information, see the <a
+ * href="{@docRoot}guide/topics/fundamentals/loaders.html">Loaders</a> developer guide.</p>
*
* @param <D> The result returned when the load is complete
*/
diff --git a/core/java/android/content/SyncManager.java b/core/java/android/content/SyncManager.java
index 2cb8a86..5be6ec1 100644
--- a/core/java/android/content/SyncManager.java
+++ b/core/java/android/content/SyncManager.java
@@ -1691,12 +1691,28 @@ public class SyncManager implements OnAccountsUpdateListener {
continue;
}
- // skip the sync if it isn't manual and auto sync or
- // background data usage is disabled
+ final RegisteredServicesCache.ServiceInfo<SyncAdapterType> syncAdapterInfo;
+ syncAdapterInfo = mSyncAdapters.getServiceInfo(
+ SyncAdapterType.newKey(op.authority, op.account.type));
+
+ // only proceed if network is connected for requesting UID
+ final boolean uidNetworkConnected;
+ if (syncAdapterInfo != null) {
+ final NetworkInfo networkInfo = getConnectivityManager()
+ .getActiveNetworkInfoForUid(syncAdapterInfo.uid);
+ uidNetworkConnected = networkInfo != null && networkInfo.isConnected();
+ } else {
+ uidNetworkConnected = false;
+ }
+
+ // skip the sync if it isn't manual, and auto sync or
+ // background data usage is disabled or network is
+ // disconnected for the target UID.
if (!op.extras.getBoolean(ContentResolver.SYNC_EXTRAS_IGNORE_SETTINGS, false)
&& (syncableState > 0)
&& (!masterSyncAutomatically
|| !backgroundDataUsageAllowed
+ || !uidNetworkConnected
|| !mSyncStorageEngine.getSyncAutomatically(
op.account, op.authority))) {
operationIterator.remove();
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java
index a168260..b487764 100644
--- a/core/java/android/hardware/Camera.java
+++ b/core/java/android/hardware/Camera.java
@@ -19,6 +19,7 @@ package android.hardware;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
import android.graphics.ImageFormat;
+import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.SurfaceTexture;
import android.os.Handler;
@@ -35,6 +36,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.StringTokenizer;
+
/**
* The Camera class is used to set image capture settings, start/stop preview,
* snap pictures, and retrieve frames for encoding for video. This class is a
@@ -128,7 +130,9 @@ public class Camera {
private static final int CAMERA_MSG_POSTVIEW_FRAME = 0x040;
private static final int CAMERA_MSG_RAW_IMAGE = 0x080;
private static final int CAMERA_MSG_COMPRESSED_IMAGE = 0x100;
- private static final int CAMERA_MSG_ALL_MSGS = 0x1FF;
+ private static final int CAMERA_MSG_RAW_IMAGE_NOTIFY = 0x200;
+ private static final int CAMERA_MSG_METADATA_FACE = 0x400;
+ private static final int CAMERA_MSG_ALL_MSGS = 0x4FF;
private int mNativeContext; // accessed by native methods
private EventHandler mEventHandler;
@@ -139,9 +143,11 @@ public class Camera {
private PictureCallback mPostviewCallback;
private AutoFocusCallback mAutoFocusCallback;
private OnZoomChangeListener mZoomListener;
+ private FaceDetectionListener mFaceListener;
private ErrorCallback mErrorCallback;
private boolean mOneShot;
private boolean mWithBuffer;
+ private boolean mFaceDetectionRunning = false;
/**
* Broadcast Action: A new picture is taken by the camera, and the entry of
@@ -160,6 +166,25 @@ public class Camera {
public static final String ACTION_NEW_VIDEO = "android.hardware.action.NEW_VIDEO";
/**
+ * Hardware face detection. It does not use much CPU.
+ *
+ * @see #startFaceDetection(int)
+ * @see Parameters#getMaxNumDetectedFaces(int)
+ * @see #CAMERA_FACE_DETECTION_SW
+ * @hide
+ */
+ public static final int CAMERA_FACE_DETECTION_HW = 0;
+
+ /**
+ * Software face detection. It uses some CPU. Applications must use
+ * {@link #setPreviewTexture(SurfaceTexture)} for preview in this mode.
+ *
+ * @see #CAMERA_FACE_DETECTION_HW
+ * @hide
+ */
+ public static final int CAMERA_FACE_DETECTION_SW = 1;
+
+ /**
* Returns the number of physical cameras available on this device.
*/
public native static int getNumberOfCameras();
@@ -295,6 +320,7 @@ public class Camera {
*/
public final void release() {
native_release();
+ mFaceDetectionRunning = false;
}
/**
@@ -460,7 +486,12 @@ public class Camera {
* Stops capturing and drawing preview frames to the surface, and
* resets the camera for a future call to {@link #startPreview()}.
*/
- public native final void stopPreview();
+ public final void stopPreview() {
+ _stopPreview();
+ mFaceDetectionRunning = false;
+ }
+
+ private native final void _stopPreview();
/**
* Return current preview state.
@@ -690,6 +721,12 @@ public class Camera {
}
return;
+ case CAMERA_MSG_METADATA_FACE:
+ if (mFaceListener != null) {
+ mFaceListener.onFaceDetection((Face[])msg.obj, mCamera);
+ }
+ return;
+
case CAMERA_MSG_ERROR :
Log.e(TAG, "Error " + msg.arg1);
if (mErrorCallback != null) {
@@ -1031,6 +1068,143 @@ public class Camera {
mZoomListener = listener;
}
+ /**
+ * Callback interface for face detected in the preview frame.
+ *
+ * @hide
+ */
+ public interface FaceDetectionListener
+ {
+ /**
+ * Notify the listener of the detected faces in the preview frame.
+ *
+ * @param faces the detected faces. The list is sorted by the score.
+ * The highest score is the first element.
+ * @param camera the Camera service object
+ */
+ void onFaceDetection(Face[] faces, Camera camera);
+ }
+
+ /**
+ * Registers a listener to be notified about the face detected of the
+ * preview frame.
+ *
+ * @param listener the listener to notify
+ * @see #startFaceDetection(int)
+ * @hide
+ */
+ public final void setFaceDetectionListener(FaceDetectionListener listener)
+ {
+ mFaceListener = listener;
+ }
+
+ /**
+ * Start the face detection. This should be called after preview is started.
+ * The camera will notify {@link FaceDetectionListener} of the detected
+ * faces in the preview frame. The detected faces may be the same as the
+ * previous ones. Applications should call {@link #stopFaceDetection} to
+ * stop the face detection. This method is supported if {@link
+ * Parameters#getMaxNumDetectedFaces(int)} returns a number larger than 0.
+ * Hardware and software face detection cannot be used at the same time.
+ * If the face detection has started, apps should not call this again.
+ *
+ * In hardware face detection mode, {@link Parameters#setWhiteBalance(String)},
+ * {@link Parameters#setFocusAreas(List)}, and {@link Parameters#setMeteringAreas(List)}
+ * have no effect.
+ *
+ * @param type face detection type. This can be either {@link
+ * #CAMERA_FACE_DETECTION_HW} or {@link #CAMERA_FACE_DETECTION_SW}
+ * @throws IllegalArgumentException if the face detection type is
+ * unsupported or invalid.
+ * @throws RuntimeException if the method fails or the face detection is
+ * already running.
+ * @see #CAMERA_FACE_DETECTION_HW
+ * @see #CAMERA_FACE_DETECTION_SW
+ * @see FaceDetectionListener
+ * @see #stopFaceDetection()
+ * @see Parameters#getMaxNumDetectedFaces(int)
+ * @hide
+ */
+ public final void startFaceDetection(int type) {
+ if (type != CAMERA_FACE_DETECTION_HW && type != CAMERA_FACE_DETECTION_SW) {
+ throw new IllegalArgumentException("Invalid face detection type " + type);
+ }
+ if (mFaceDetectionRunning) {
+ throw new RuntimeException("Face detection is already running");
+ }
+ _startFaceDetection(type);
+ mFaceDetectionRunning = true;
+ }
+
+ /**
+ * Stop the face detection.
+ *
+ * @see #startFaceDetection(int)
+ * @hide
+ */
+ public final void stopFaceDetection() {
+ _stopFaceDetection();
+ mFaceDetectionRunning = false;
+ }
+
+ private native final void _startFaceDetection(int type);
+ private native final void _stopFaceDetection();
+
+ /**
+ * The information of a face from camera face detection.
+ *
+ * @hide
+ */
+ public static class Face {
+ /**
+ * Bounds of the face. (-1000, -1000) represents the top-left of the
+ * camera field of view, and (1000, 1000) represents the bottom-right of
+ * the field of view. The width and height cannot be 0 or negative. This
+ * is supported by both hardware and software face detection.
+ *
+ * <p>The direction is relative to the sensor orientation, that is, what
+ * the sensor sees. The direction is not affected by the rotation or
+ * mirroring of {@link #setDisplayOrientation(int)}.</p>
+ *
+ * @see #startFaceDetection(int)
+ */
+ Rect rect;
+
+ /**
+ * The confidence level of the face. The range is 1 to 100. 100 is the
+ * highest confidence. This is supported by both hardware and software
+ * face detction.
+ *
+ * @see #startFaceDetection(int)
+ */
+ int score;
+
+ /**
+ * An unique id per face while the face is visible to the tracker. If
+ * the face leaves the field-of-view and comes back, it will get a new
+ * id. If the value is 0, id is not supported.
+ */
+ int id;
+
+ /**
+ * The coordinates of the center of the left eye. The range is -1000 to
+ * 1000. null if this is not supported.
+ */
+ Point leftEye;
+
+ /**
+ * The coordinates of the center of the right eye. The range is -1000 to
+ * 1000. null if this is not supported.
+ */
+ Point rightEye;
+
+ /**
+ * The coordinates of the center of the mouth. The range is -1000 to
+ * 1000. null if this is not supported.
+ */
+ Point mouth;
+ }
+
// Error codes match the enum in include/ui/Camera.h
/**
@@ -1295,6 +1469,8 @@ public class Camera {
private static final String KEY_VIDEO_SIZE = "video-size";
private static final String KEY_PREFERRED_PREVIEW_SIZE_FOR_VIDEO =
"preferred-preview-size-for-video";
+ private static final String KEY_MAX_NUM_DETECTED_FACES_HW = "max-num-detected-faces-hw";
+ private static final String KEY_MAX_NUM_DETECTED_FACES_SW = "max-num-detected-faces-sw";
// Parameter key suffix for supported values.
private static final String SUPPORTED_VALUES_SUFFIX = "-values";
@@ -2977,6 +3153,25 @@ public class Camera {
set(KEY_METERING_AREAS, meteringAreas);
}
+ /**
+ * Gets the maximum number of detected faces supported. This is the
+ * maximum length of the list returned from {@link FaceDetectionListener}.
+ * If the return value is 0, face detection of the specified type is not
+ * supported.
+ *
+ * @return the maximum number of detected face supported by the camera.
+ * @see #startFaceDetection(int)
+ * @hide
+ */
+ public int getMaxNumDetectedFaces(int type) {
+ if (type == CAMERA_FACE_DETECTION_HW) {
+ return getInt(KEY_MAX_NUM_DETECTED_FACES_HW, 0);
+ } else if (type == CAMERA_FACE_DETECTION_SW){
+ return getInt(KEY_MAX_NUM_DETECTED_FACES_SW, 0);
+ }
+ throw new IllegalArgumentException("Invalid face detection type " + type);
+ }
+
// Splits a comma delimited string to an ArrayList of String.
// Return null if the passing string is null or the size is 0.
private ArrayList<String> split(String str) {
diff --git a/core/java/android/net/INetworkPolicyManager.aidl b/core/java/android/net/INetworkPolicyManager.aidl
index 82495e3..3e07b0a 100644
--- a/core/java/android/net/INetworkPolicyManager.aidl
+++ b/core/java/android/net/INetworkPolicyManager.aidl
@@ -18,6 +18,7 @@ package android.net;
import android.net.INetworkPolicyListener;
import android.net.NetworkPolicy;
+import android.net.NetworkTemplate;
/**
* Interface that creates and modifies network policy rules.
@@ -37,4 +38,9 @@ interface INetworkPolicyManager {
void setNetworkPolicies(in NetworkPolicy[] policies);
NetworkPolicy[] getNetworkPolicies();
+ void snoozePolicy(in NetworkTemplate template);
+
+ void setRestrictBackground(boolean restrictBackground);
+ boolean getRestrictBackground();
+
}
diff --git a/core/java/android/net/LinkProperties.java b/core/java/android/net/LinkProperties.java
index 132f3ba..75646fd 100644
--- a/core/java/android/net/LinkProperties.java
+++ b/core/java/android/net/LinkProperties.java
@@ -80,9 +80,9 @@ public class LinkProperties implements Parcelable {
public LinkProperties(LinkProperties source) {
if (source != null) {
mIfaceName = source.getInterfaceName();
- mLinkAddresses = source.getLinkAddresses();
- mDnses = source.getDnses();
- mRoutes = source.getRoutes();
+ for (LinkAddress l : source.getLinkAddresses()) mLinkAddresses.add(l);
+ for (InetAddress i : source.getDnses()) mDnses.add(i);
+ for (RouteInfo r : source.getRoutes()) mRoutes.add(r);
mHttpProxy = (source.getHttpProxy() == null) ?
null : new ProxyProperties(source.getHttpProxy());
}
diff --git a/core/java/android/net/NetworkPolicy.java b/core/java/android/net/NetworkPolicy.java
index 52cab30..aaad8a1 100644
--- a/core/java/android/net/NetworkPolicy.java
+++ b/core/java/android/net/NetworkPolicy.java
@@ -21,6 +21,8 @@ import static com.android.internal.util.Preconditions.checkNotNull;
import android.os.Parcel;
import android.os.Parcelable;
+import com.android.internal.util.Objects;
+
/**
* Policy for networks matching a {@link NetworkTemplate}, including usage cycle
* and limits to be enforced.
@@ -30,20 +32,21 @@ import android.os.Parcelable;
public class NetworkPolicy implements Parcelable, Comparable<NetworkPolicy> {
public static final long WARNING_DISABLED = -1;
public static final long LIMIT_DISABLED = -1;
+ public static final long SNOOZE_NEVER = -1;
public final NetworkTemplate template;
public int cycleDay;
public long warningBytes;
public long limitBytes;
+ public long lastSnooze;
- // TODO: teach how to snooze limit for current cycle
-
- public NetworkPolicy(
- NetworkTemplate template, int cycleDay, long warningBytes, long limitBytes) {
+ public NetworkPolicy(NetworkTemplate template, int cycleDay, long warningBytes, long limitBytes,
+ long lastSnooze) {
this.template = checkNotNull(template, "missing NetworkTemplate");
this.cycleDay = cycleDay;
this.warningBytes = warningBytes;
this.limitBytes = limitBytes;
+ this.lastSnooze = lastSnooze;
}
public NetworkPolicy(Parcel in) {
@@ -51,6 +54,7 @@ public class NetworkPolicy implements Parcelable, Comparable<NetworkPolicy> {
cycleDay = in.readInt();
warningBytes = in.readLong();
limitBytes = in.readLong();
+ lastSnooze = in.readLong();
}
/** {@inheritDoc} */
@@ -59,6 +63,7 @@ public class NetworkPolicy implements Parcelable, Comparable<NetworkPolicy> {
dest.writeInt(cycleDay);
dest.writeLong(warningBytes);
dest.writeLong(limitBytes);
+ dest.writeLong(lastSnooze);
}
/** {@inheritDoc} */
@@ -80,9 +85,25 @@ public class NetworkPolicy implements Parcelable, Comparable<NetworkPolicy> {
}
@Override
+ public int hashCode() {
+ return Objects.hashCode(template, cycleDay, warningBytes, limitBytes, lastSnooze);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof NetworkPolicy) {
+ final NetworkPolicy other = (NetworkPolicy) obj;
+ return Objects.equal(template, other.template) && cycleDay == other.cycleDay
+ && warningBytes == other.warningBytes && limitBytes == other.limitBytes
+ && lastSnooze == other.lastSnooze;
+ }
+ return false;
+ }
+
+ @Override
public String toString() {
return "NetworkPolicy[" + template + "]: cycleDay=" + cycleDay + ", warningBytes="
- + warningBytes + ", limitBytes=" + limitBytes;
+ + warningBytes + ", limitBytes=" + limitBytes + ", lastSnooze=" + lastSnooze;
}
public static final Creator<NetworkPolicy> CREATOR = new Creator<NetworkPolicy>() {
diff --git a/core/java/android/net/NetworkPolicyManager.java b/core/java/android/net/NetworkPolicyManager.java
index 593b2b7..1e9d813 100644
--- a/core/java/android/net/NetworkPolicyManager.java
+++ b/core/java/android/net/NetworkPolicyManager.java
@@ -52,26 +52,10 @@ public class NetworkPolicyManager {
private static final boolean ALLOW_PLATFORM_APP_POLICY = true;
/**
- * {@link Intent} action launched when user selects {@link NetworkPolicy}
- * warning notification.
+ * {@link Intent} extra that indicates which {@link NetworkTemplate} rule it
+ * applies to.
*/
- public static final String ACTION_DATA_USAGE_WARNING =
- "android.intent.action.DATA_USAGE_WARNING";
-
- /**
- * {@link Intent} action launched when user selects {@link NetworkPolicy}
- * limit notification.
- */
- public static final String ACTION_DATA_USAGE_LIMIT =
- "android.intent.action.DATA_USAGE_LIMIT";
-
- /**
- * {@link Intent} extra included in {@link #ACTION_DATA_USAGE_WARNING} and
- * {@link #ACTION_DATA_USAGE_LIMIT} to indicate which
- * {@link NetworkTemplate} rule it applies to.
- */
- public static final String EXTRA_NETWORK_TEMPLATE =
- "android.intent.extra.NETWORK_TEMPLATE";
+ public static final String EXTRA_NETWORK_TEMPLATE = "android.net.NETWORK_TEMPLATE";
private INetworkPolicyManager mService;
diff --git a/core/java/android/net/VpnBuilder.java b/core/java/android/net/VpnBuilder.java
index 4582523..25cedb6 100644
--- a/core/java/android/net/VpnBuilder.java
+++ b/core/java/android/net/VpnBuilder.java
@@ -91,7 +91,6 @@ import java.util.ArrayList;
*
* <p class="note">Using this class requires
* {@link android.Manifest.permission#VPN} permission.
- * @hide
*/
public class VpnBuilder {
diff --git a/core/java/android/net/http/SslError.java b/core/java/android/net/http/SslError.java
index 1e1cb49..08c6692 100644
--- a/core/java/android/net/http/SslError.java
+++ b/core/java/android/net/http/SslError.java
@@ -30,7 +30,7 @@ public class SslError {
/**
* The certificate is not yet valid
*/
- public static final int SSL_NOTYETVALID = 0;
+ public static final int SSL_NOTYETVALID = 0;
/**
* The certificate has expired
*/
@@ -43,12 +43,23 @@ public class SslError {
* The certificate authority is not trusted
*/
public static final int SSL_UNTRUSTED = 3;
+ /**
+ * The date of the certificate is invalid
+ */
+ public static final int SSL_DATE_INVALID = 4;
+ /**
+ * The certificate is invalid
+ */
+ public static final int SSL_INVALID = 5;
/**
* The number of different SSL errors (update if you add a new SSL error!!!)
+ * @deprecated This constant is not necessary for using the SslError API and
+ * can change from release to release.
*/
- public static final int SSL_MAX_ERROR = 4;
+ @Deprecated
+ public static final int SSL_MAX_ERROR = 6;
/**
* The SSL error set bitfield (each individual error is an bit index;
@@ -117,6 +128,30 @@ public class SslError {
}
/**
+ * Creates an SslError object from a chromium error code.
+ * @param error The chromium error code
+ * @param certificate The associated SSL certificate
+ * @param url The associated URL.
+ * @hide chromium error codes only available inside the framework
+ */
+ public static SslError SslErrorFromChromiumErrorCode(
+ int error, SslCertificate cert, String url) {
+ // The chromium error codes are in:
+ // external/chromium/net/base/net_error_list.h
+ if (error > -200 || error < -299) {
+ throw new NullPointerException("Not a valid chromium SSL error code.");
+ }
+ if (error == -200)
+ return new SslError(SSL_IDMISMATCH, cert, url);
+ if (error == -201)
+ return new SslError(SSL_DATE_INVALID, cert, url);
+ if (error == -202)
+ return new SslError(SSL_UNTRUSTED, cert, url);
+ // Map all other errors to SSL_INVALID
+ return new SslError(SSL_INVALID, cert, url);
+ }
+
+ /**
* Creates a new SSL error set object
* @param error The SSL error
* @param certificate The associated SSL certificate
diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl
index 1174e3b..3704248 100644
--- a/core/java/android/os/INetworkManagementService.aidl
+++ b/core/java/android/os/INetworkManagementService.aidl
@@ -212,7 +212,7 @@ interface INetworkManagementService
/**
* Set quota for an interface.
*/
- void setInterfaceQuota(String iface, long quota);
+ void setInterfaceQuota(String iface, long quotaBytes);
/**
* Remove quota for an interface.
@@ -220,6 +220,21 @@ interface INetworkManagementService
void removeInterfaceQuota(String iface);
/**
+ * Set alert for an interface; requires that iface already has quota.
+ */
+ void setInterfaceAlert(String iface, long alertBytes);
+
+ /**
+ * Remove alert for an interface.
+ */
+ void removeInterfaceAlert(String iface);
+
+ /**
+ * Set alert across all interfaces.
+ */
+ void setGlobalAlert(long alertBytes);
+
+ /**
* Control network activity of a UID over interfaces with a quota limit.
*/
void setUidNetworkRules(int uid, boolean rejectOnQuotaInterfaces);
@@ -252,12 +267,12 @@ interface INetworkManagementService
void setDnsServersForInterface(String iface, in String[] servers);
/**
- * Flush the DNS cache associated with the default interface
+ * Flush the DNS cache associated with the default interface.
*/
void flushDefaultDnsCache();
/**
- * Flush the DNS cache associated with the specified interface
+ * Flush the DNS cache associated with the specified interface.
*/
void flushInterfaceDnsCache(String iface);
}
diff --git a/core/java/android/os/IPowerManager.aidl b/core/java/android/os/IPowerManager.aidl
index 0067e94..9a53d76 100644
--- a/core/java/android/os/IPowerManager.aidl
+++ b/core/java/android/os/IPowerManager.aidl
@@ -20,12 +20,15 @@ package android.os;
import android.os.WorkSource;
/** @hide */
+
interface IPowerManager
{
+ // WARNING: changes in acquireWakeLock() signature must be reflected in IPowerManager.cpp/h
void acquireWakeLock(int flags, IBinder lock, String tag, in WorkSource ws);
void updateWakeLockWorkSource(IBinder lock, in WorkSource ws);
void goToSleep(long time);
void goToSleepWithReason(long time, int reason);
+ // WARNING: changes in releaseWakeLock() signature must be reflected in IPowerManager.cpp/h
void releaseWakeLock(IBinder lock, int flags);
void userActivity(long when, boolean noChangeLights);
void userActivityWithForce(long when, boolean noChangeLights, boolean force);
diff --git a/core/java/android/preference/CheckBoxPreference.java b/core/java/android/preference/CheckBoxPreference.java
index 166b21b..1536760 100644
--- a/core/java/android/preference/CheckBoxPreference.java
+++ b/core/java/android/preference/CheckBoxPreference.java
@@ -61,8 +61,7 @@ public class CheckBoxPreference extends TwoStatePreference {
View checkboxView = view.findViewById(com.android.internal.R.id.checkbox);
if (checkboxView != null && checkboxView instanceof Checkable) {
((Checkable) checkboxView).setChecked(mChecked);
- // Post this so this view is bound and attached when firing the event.
- postSendAccessibilityEventForView(checkboxView);
+ sendAccessibilityEvent(checkboxView);
}
syncSummaryView(view);
diff --git a/core/java/android/preference/SwitchPreference.java b/core/java/android/preference/SwitchPreference.java
index 3dbd522..17f0c1b 100644
--- a/core/java/android/preference/SwitchPreference.java
+++ b/core/java/android/preference/SwitchPreference.java
@@ -102,8 +102,8 @@ public class SwitchPreference extends TwoStatePreference {
View checkableView = view.findViewById(com.android.internal.R.id.switchWidget);
if (checkableView != null && checkableView instanceof Checkable) {
((Checkable) checkableView).setChecked(mChecked);
- // Post this so this view is bound and attached when firing the event.
- postSendAccessibilityEventForView(checkableView);
+
+ sendAccessibilityEvent(checkableView);
if (checkableView instanceof Switch) {
final Switch switchView = (Switch) checkableView;
diff --git a/core/java/android/preference/TwoStatePreference.java b/core/java/android/preference/TwoStatePreference.java
index 55ef108..d186b20 100644
--- a/core/java/android/preference/TwoStatePreference.java
+++ b/core/java/android/preference/TwoStatePreference.java
@@ -37,10 +37,9 @@ public abstract class TwoStatePreference extends Preference {
private CharSequence mSummaryOn;
private CharSequence mSummaryOff;
boolean mChecked;
- private boolean mSendAccessibilityEventViewClickedType;
+ private boolean mSendClickAccessibilityEvent;
private boolean mDisableDependentsState;
- private SendAccessibilityEventTypeViewClicked mSendAccessibilityEventTypeViewClicked;
public TwoStatePreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
@@ -60,9 +59,7 @@ public abstract class TwoStatePreference extends Preference {
boolean newValue = !isChecked();
- // in onBindView() an AccessibilityEventViewClickedType is sent to announce the change
- // not sending
- mSendAccessibilityEventViewClickedType = true;
+ mSendClickAccessibilityEvent = true;
if (!callChangeListener(newValue)) {
return;
@@ -188,25 +185,19 @@ public abstract class TwoStatePreference extends Preference {
: (Boolean) defaultValue);
}
- /**
- * Post send an accessibility event for the given view if appropriate.
- *
- * @param view View that should send the event
- */
- void postSendAccessibilityEventForView(View view) {
- // send an event to announce the value change of the state. It is done here
- // because clicking a preference does not immediately change the checked state
- // for example when enabling the WiFi
- if (mSendAccessibilityEventViewClickedType
- && AccessibilityManager.getInstance(getContext()).isEnabled()
- && view.isEnabled()) {
- mSendAccessibilityEventViewClickedType = false;
- if (mSendAccessibilityEventTypeViewClicked == null) {
- mSendAccessibilityEventTypeViewClicked = new SendAccessibilityEventTypeViewClicked();
- }
- mSendAccessibilityEventTypeViewClicked.mView = view;
- view.post(mSendAccessibilityEventTypeViewClicked);
+ void sendAccessibilityEvent(View view) {
+ // Since the view is still not attached we create, populate,
+ // and send the event directly since we do not know when it
+ // will be attached and posting commands is not as clean.
+ AccessibilityManager accessibilityManager = AccessibilityManager.getInstance(getContext());
+ if (mSendClickAccessibilityEvent && accessibilityManager.isEnabled()) {
+ AccessibilityEvent event = AccessibilityEvent.obtain();
+ event.setEventType(AccessibilityEvent.TYPE_VIEW_CLICKED);
+ view.onInitializeAccessibilityEvent(event);
+ view.dispatchPopulateAccessibilityEvent(event);
+ accessibilityManager.sendAccessibilityEvent(event);
}
+ mSendClickAccessibilityEvent = false;
}
/**
@@ -300,13 +291,4 @@ public abstract class TwoStatePreference extends Preference {
}
};
}
-
- private final class SendAccessibilityEventTypeViewClicked implements Runnable {
- private View mView;
-
- @Override
- public void run() {
- mView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
- }
- }
}
diff --git a/core/java/android/provider/CallLog.java b/core/java/android/provider/CallLog.java
index e23d6f3..b8ef7be 100644
--- a/core/java/android/provider/CallLog.java
+++ b/core/java/android/provider/CallLog.java
@@ -189,7 +189,6 @@ public class CallLog {
* Unlike the {@link #NEW} field, which requires the user to have acknowledged the
* existence of the entry, this implies the user has interacted with the entry.
* <P>Type: INTEGER (boolean)</P>
- * @hide
*/
public static final String IS_READ = "is_read";
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index b2c1386..5765dde 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -1973,6 +1973,16 @@ public final class ContactsContract {
public static final String DATA_SET = "data_set";
/**
+ * A concatenation of the account type and data set (delimited by a forward
+ * slash) - if the data set is empty, this will be the same as the account
+ * type. For applications that need to be aware of the data set, this can
+ * be used instead of account type to distinguish sets of data. This is
+ * never intended to be used for specifying accounts.
+ * @hide
+ */
+ public static final String ACCOUNT_TYPE_AND_DATA_SET = "account_type_and_data_set";
+
+ /**
* The aggregation mode for this contact.
* <P>Type: INTEGER</P>
*/
@@ -6444,6 +6454,16 @@ public final class ContactsContract {
public static final String DATA_SET = "data_set";
/**
+ * A concatenation of the account type and data set (delimited by a forward
+ * slash) - if the data set is empty, this will be the same as the account
+ * type. For applications that need to be aware of the data set, this can
+ * be used instead of account type to distinguish sets of data. This is
+ * never intended to be used for specifying accounts.
+ * @hide
+ */
+ public static final String ACCOUNT_TYPE_AND_DATA_SET = "account_type_and_data_set";
+
+ /**
* The display title of this group.
* <p>
* Type: TEXT
@@ -7871,6 +7891,19 @@ public final class ContactsContract {
* @hide
*/
public static final String ACCOUNT = "com.android.contacts.extra.ACCOUNT";
+
+ /**
+ * Used to specify the data set within the account in which to create the
+ * new contact.
+ * <p>
+ * This value is optional - if it is not specified, the contact will be
+ * created in the base account, with no data set.
+ * <p>
+ * Type: String
+ *
+ * @hide
+ */
+ public static final String DATA_SET = "com.android.contacts.extra.DATA_SET";
}
}
}
diff --git a/core/java/android/provider/MediaStore.java b/core/java/android/provider/MediaStore.java
index f799af3..5da3114 100644
--- a/core/java/android/provider/MediaStore.java
+++ b/core/java/android/provider/MediaStore.java
@@ -1148,6 +1148,14 @@ public final class MediaStore {
* <P>Type: INTEGER (boolean)</P>
*/
public static final String IS_NOTIFICATION = "is_notification";
+
+ /**
+ * The genre of the audio file, if any
+ * <P>Type: TEXT</P>
+ * Does not exist in the database - only used by the media scanner for inserts.
+ * @hide
+ */
+ public static final String GENRE = "genre";
}
/**
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index cd4e32e..d3ff8f8 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -549,6 +549,20 @@ public final class Settings {
public static final String ACTION_DEVICE_INFO_SETTINGS =
"android.settings.DEVICE_INFO_SETTINGS";
+ /**
+ * Activity Action: Show NFC sharing settings.
+ * <p>
+ * In some cases, a matching Activity may not exist, so ensure you
+ * safeguard against this.
+ * <p>
+ * Input: Nothing.
+ * <p>
+ * Output: Nothing
+ */
+ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+ public static final String ACTION_NFCSHARING_SETTINGS =
+ "android.settings.NFCSHARING_SETTINGS";
+
// End of Intent actions for Settings
/**
@@ -3028,13 +3042,6 @@ public final class Settings {
"wifi_watchdog_walled_garden_url";
/**
- * The pattern string in the fetched URL used to detect a walled garden
- * @hide
- */
- public static final String WIFI_WATCHDOG_WALLED_GARDEN_PATTERN =
- "wifi_watchdog_walled_garden_pattern";
-
- /**
* Boolean to determine whether to notify on disabling a network. Secure setting used
* to notify user only once. This setting is not monitored continuously.
* @hide
@@ -3950,6 +3957,7 @@ public final class Settings {
ACCESSIBILITY_SCRIPT_INJECTION,
BACKUP_AUTO_RESTORE,
ENABLED_ACCESSIBILITY_SERVICES,
+ TOUCH_EXPLORATION_ENABLED,
TTS_USE_DEFAULTS,
TTS_DEFAULT_RATE,
TTS_DEFAULT_PITCH,
diff --git a/core/java/android/provider/VoicemailContract.java b/core/java/android/provider/VoicemailContract.java
index 2e5a495..a31374f 100644
--- a/core/java/android/provider/VoicemailContract.java
+++ b/core/java/android/provider/VoicemailContract.java
@@ -123,14 +123,8 @@ public class VoicemailContract {
*/
public static final String DURATION = Calls.DURATION;
/**
- * Whether this is a new voicemail (i.e. has not been heard).
- * <P>Type: INTEGER (boolean)</P>
- */
- public static final String NEW = Calls.NEW;
- /**
* Whether this item has been read or otherwise consumed by the user.
* <P>Type: INTEGER (boolean)</P>
- * @hide
*/
public static final String IS_READ = Calls.IS_READ;
/**
diff --git a/core/java/android/server/BluetoothAdapterStateMachine.java b/core/java/android/server/BluetoothAdapterStateMachine.java
index ae91465..83f5a9f 100644
--- a/core/java/android/server/BluetoothAdapterStateMachine.java
+++ b/core/java/android/server/BluetoothAdapterStateMachine.java
@@ -17,11 +17,13 @@
package android.server;
import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.IBluetoothStateChangeCallback;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.os.Binder;
import android.os.Message;
+import android.os.RemoteException;
import android.provider.Settings;
import android.util.Log;
@@ -34,17 +36,18 @@ import java.io.PrintWriter;
/**
* Bluetooth Adapter StateMachine
* All the states are at the same level, ie, no hierarchy.
- * (BluetootOn)
- * | ^
- * TURN_OFF | | BECOME_PAIRABLE
- * AIRPLANE_MODE_ON | |
- * V |
- * (Switching)
- * | ^
- * BECOME_NON_PAIRABLE& | | TURN_ON(_CONTINUE)/TURN_ON_FOR_PRIVILEGED
- * ALL_DEVICES_DISCONNECTED | |
- * V |
- * (HotOff)
+ * (BluetootOn)<----------------------<-
+ * | ^ -------------------->- |
+ * | | | |
+ * TURN_OFF | | BECAME_PAIRABLE m1 | | USER_TURN_ON
+ * AIRPLANE_MODE_ON | | | |
+ * V | | |
+ * (Switching) (PerProcessState)
+ * | ^ | |
+ * BECAME_NON_PAIRABLE& | | TURN_ON(_CONTINUE) | |
+ * ALL_DEVICES_DISCONNECTED | | m2 | |
+ * V |------------------------< | BECAME_PAIRABLE
+ * (HotOff)---------------------------- PER_PROCESS_TURN_ON
* / ^
* / | SERVICE_RECORD_LOADED
* | |
@@ -55,6 +58,10 @@ import java.io.PrintWriter;
* V |
* (PowerOff) <----- initial state
*
+ * Legend:
+ * m1 = USER_TURN_OFF
+ * m2 = Transition to HotOff when number of process wanting BT on is 0.
+ * BECAME_NON_PAIRABLE will make the transition.
*/
final class BluetoothAdapterStateMachine extends StateMachine {
private static final String TAG = "BluetoothAdapterStateMachine";
@@ -63,24 +70,24 @@ final class BluetoothAdapterStateMachine extends StateMachine {
// Message(what) to take an action
//
// We get this message when user tries to turn on BT
- public static final int USER_TURN_ON = 1;
+ static final int USER_TURN_ON = 1;
// We get this message when user tries to turn off BT
- public static final int USER_TURN_OFF = 2;
+ static final int USER_TURN_OFF = 2;
// Message(what) to report a event that the state machine need to respond to
//
// Event indicates sevice records have been loaded
- public static final int SERVICE_RECORD_LOADED = 51;
+ static final int SERVICE_RECORD_LOADED = 51;
// Event indicates all the remote Bluetooth devices has been disconnected
- public static final int ALL_DEVICES_DISCONNECTED = 52;
+ static final int ALL_DEVICES_DISCONNECTED = 52;
// Event indicates the Bluetooth is connectable
- public static final int BECOME_PAIRABLE = 53;
+ static final int BECAME_PAIRABLE = 53;
// Event indicates the Bluetooth is non-connectable.
- public static final int BECOME_NON_PAIRABLE = 54;
+ static final int BECAME_NON_PAIRABLE = 54;
// Event indicates airplane mode is turned on
- public static final int AIRPLANE_MODE_ON = 55;
+ static final int AIRPLANE_MODE_ON = 55;
// Event indicates airplane mode is turned off
- public static final int AIRPLANE_MODE_OFF = 56;
+ static final int AIRPLANE_MODE_OFF = 56;
// private internal messages
//
@@ -95,8 +102,9 @@ final class BluetoothAdapterStateMachine extends StateMachine {
private static final int TURN_ON_CONTINUE = 102;
// Unload firmware, turning off Bluetooth module power
private static final int TURN_COLD = 103;
- // For NFC, turn on bluetooth for certain process
- private static final int TURN_ON_FOR_PRIVILEGED = 104;
+ // Per process enable / disable messages
+ static final int PER_PROCESS_TURN_ON = 104;
+ static final int PER_PROCESS_TURN_OFF = 105;
private Context mContext;
private BluetoothService mBluetoothService;
@@ -107,6 +115,7 @@ final class BluetoothAdapterStateMachine extends StateMachine {
private HotOff mHotOff;
private WarmUp mWarmUp;
private PowerOff mPowerOff;
+ private PerProcessState mPerProcessState;
// this is the BluetoothAdapter state that reported externally
private int mPublicState;
@@ -123,12 +132,15 @@ final class BluetoothAdapterStateMachine extends StateMachine {
mHotOff = new HotOff();
mWarmUp = new WarmUp();
mPowerOff = new PowerOff();
+ mPerProcessState = new PerProcessState();
addState(mBluetoothOn);
addState(mSwitching);
addState(mHotOff);
addState(mWarmUp);
addState(mPowerOff);
+ addState(mPerProcessState);
+
setInitialState(mPowerOff);
mPublicState = BluetoothAdapter.STATE_OFF;
@@ -142,12 +154,9 @@ final class BluetoothAdapterStateMachine extends StateMachine {
* Bluetooth module's power is off, firmware is not loaded.
*/
private class PowerOff extends State {
- private boolean mPersistSwitchOn = false;
-
@Override
public void enter() {
- if (DBG) log("Enter PowerOff: " + mPersistSwitchOn);
- mPersistSwitchOn = false;
+ if (DBG) log("Enter PowerOff: ");
}
@Override
public boolean processMessage(Message message) {
@@ -162,7 +171,7 @@ final class BluetoothAdapterStateMachine extends StateMachine {
if (prepareBluetooth()) {
// this is user request, save the setting
if ((Boolean) message.obj) {
- mPersistSwitchOn = true;
+ persistSwitchSetting(true);
}
// We will continue turn the BT on all the way to the BluetoothOn state
deferMessage(obtainMessage(TURN_ON_CONTINUE));
@@ -191,9 +200,21 @@ final class BluetoothAdapterStateMachine extends StateMachine {
transitionTo(mPowerOff);
broadcastState(BluetoothAdapter.STATE_OFF);
}
+ } else if (mContext.getResources().getBoolean
+ (com.android.internal.R.bool.config_bluetooth_adapter_quick_switch)) {
+ sendMessage(TURN_HOT);
}
break;
- case AIRPLANE_MODE_ON: // ignore
+ case PER_PROCESS_TURN_ON:
+ if (prepareBluetooth()) {
+ transitionTo(mWarmUp);
+ }
+ deferMessage(obtainMessage(PER_PROCESS_TURN_ON));
+ break;
+ case PER_PROCESS_TURN_OFF:
+ perProcessCallback(false, (IBluetoothStateChangeCallback) message.obj);
+ break;
+ case AIRPLANE_MODE_ON:
case USER_TURN_OFF: // ignore
break;
default:
@@ -276,6 +297,8 @@ final class BluetoothAdapterStateMachine extends StateMachine {
// on to the BluetoothOn state
case AIRPLANE_MODE_ON:
case AIRPLANE_MODE_OFF:
+ case PER_PROCESS_TURN_ON:
+ case PER_PROCESS_TURN_OFF:
deferMessage(message);
break;
case USER_TURN_OFF: // ignore
@@ -294,12 +317,9 @@ final class BluetoothAdapterStateMachine extends StateMachine {
* non-connectable.
*/
private class HotOff extends State {
- private boolean mPersistSwitchOn = false;
-
@Override
public void enter() {
- if (DBG) log("Enter HotOff: " + mPersistSwitchOn);
- mPersistSwitchOn = false;
+ if (DBG) log("Enter HotOff:");
}
@Override
@@ -310,9 +330,10 @@ final class BluetoothAdapterStateMachine extends StateMachine {
switch(message.what) {
case USER_TURN_ON:
if ((Boolean) message.obj) {
- mPersistSwitchOn = true;
+ persistSwitchSetting(true);
}
// let it fall to TURN_ON_CONTINUE:
+ //$FALL-THROUGH$
case TURN_ON_CONTINUE:
mBluetoothService.switchConnectable(true);
transitionTo(mSwitching);
@@ -328,13 +349,25 @@ final class BluetoothAdapterStateMachine extends StateMachine {
break;
case AIRPLANE_MODE_OFF:
if (getBluetoothPersistedSetting()) {
- mBluetoothService.switchConnectable(true);
transitionTo(mSwitching);
+ mBluetoothService.switchConnectable(true);
broadcastState(BluetoothAdapter.STATE_TURNING_ON);
}
break;
case USER_TURN_OFF: // ignore
break;
+ case PER_PROCESS_TURN_ON:
+ transitionTo(mPerProcessState);
+
+ // Resend the PER_PROCESS_TURN_ON message so that the callback
+ // can be sent through.
+ deferMessage(message);
+
+ mBluetoothService.switchConnectable(true);
+ break;
+ case PER_PROCESS_TURN_OFF:
+ perProcessCallback(false, (IBluetoothStateChangeCallback)message.obj);
+ break;
default:
return NOT_HANDLED;
}
@@ -356,11 +389,7 @@ final class BluetoothAdapterStateMachine extends StateMachine {
boolean retValue = HANDLED;
switch(message.what) {
- case BECOME_PAIRABLE:
- if (mPowerOff.mPersistSwitchOn || mHotOff.mPersistSwitchOn) {
- persistSwitchSetting(true);
- mPowerOff.mPersistSwitchOn = mHotOff.mPersistSwitchOn = false;
- }
+ case BECAME_PAIRABLE:
String[] propVal = {"Pairable", mBluetoothService.getProperty("Pairable")};
mEventLoop.onPropertyChanged(propVal);
@@ -369,7 +398,7 @@ final class BluetoothAdapterStateMachine extends StateMachine {
transitionTo(mBluetoothOn);
broadcastState(BluetoothAdapter.STATE_ON);
break;
- case BECOME_NON_PAIRABLE:
+ case BECAME_NON_PAIRABLE:
if (mBluetoothService.getAdapterConnectionState() ==
BluetoothAdapter.STATE_DISCONNECTED) {
transitionTo(mHotOff);
@@ -385,9 +414,12 @@ final class BluetoothAdapterStateMachine extends StateMachine {
case USER_TURN_ON:
case AIRPLANE_MODE_OFF:
case AIRPLANE_MODE_ON:
+ case PER_PROCESS_TURN_ON:
+ case PER_PROCESS_TURN_OFF:
case USER_TURN_OFF:
deferMessage(message);
break;
+
default:
return NOT_HANDLED;
}
@@ -395,10 +427,6 @@ final class BluetoothAdapterStateMachine extends StateMachine {
}
private void finishSwitchingOff() {
- if (mBluetoothOn.mPersistBluetoothOff) {
- persistSwitchSetting(false);
- mBluetoothOn.mPersistBluetoothOff = false;
- }
mBluetoothService.finishDisable();
if (mContext.getResources().getBoolean
(com.android.internal.R.bool.config_bluetooth_adapter_quick_switch)) {
@@ -415,7 +443,6 @@ final class BluetoothAdapterStateMachine extends StateMachine {
@Override
public void enter() {
if (DBG) log("Enter BluetoothOn: " + mPersistBluetoothOff);
- mPersistBluetoothOff = false;
}
@Override
public boolean processMessage(Message message) {
@@ -425,22 +452,40 @@ final class BluetoothAdapterStateMachine extends StateMachine {
switch(message.what) {
case USER_TURN_OFF:
if ((Boolean) message.obj) {
- mPersistBluetoothOff = true;
+ persistSwitchSetting(false);
+ }
+
+ if (mBluetoothService.isDiscovering()) {
+ mBluetoothService.cancelDiscovery();
+ }
+ if (!mBluetoothService.isApplicationStateChangeTrackerEmpty()) {
+ transitionTo(mPerProcessState);
+ deferMessage(obtainMessage(USER_TURN_OFF));
+ break;
}
- // let it fall through to AIRPLANE_MODE_ON
+ //$FALL-THROUGH$ to AIRPLANE_MODE_ON
case AIRPLANE_MODE_ON:
transitionTo(mSwitching);
broadcastState(BluetoothAdapter.STATE_TURNING_OFF);
mBluetoothService.switchConnectable(false);
mBluetoothService.disconnectDevices();
+
// we turn all the way to PowerOff with AIRPLANE_MODE_ON
if (message.what == AIRPLANE_MODE_ON) {
+ // We inform all the per process callbacks
+ allProcessesCallback(false);
deferMessage(obtainMessage(AIRPLANE_MODE_ON));
}
break;
case AIRPLANE_MODE_OFF: // ignore
case USER_TURN_ON: // ignore
break;
+ case PER_PROCESS_TURN_ON:
+ perProcessCallback(true, (IBluetoothStateChangeCallback)message.obj);
+ break;
+ case PER_PROCESS_TURN_OFF:
+ perProcessCallback(false, (IBluetoothStateChangeCallback)message.obj);
+ break;
default:
return NOT_HANDLED;
}
@@ -449,6 +494,101 @@ final class BluetoothAdapterStateMachine extends StateMachine {
}
+
+ private class PerProcessState extends State {
+ IBluetoothStateChangeCallback mCallback = null;
+
+ @Override
+ public void enter() {
+ if (DBG) log("Enter PerProcessState");
+ }
+
+ @Override
+ public boolean processMessage(Message message) {
+ if (DBG) log("PerProcessState process message: " + message.what);
+
+ boolean retValue = HANDLED;
+ switch (message.what) {
+ case PER_PROCESS_TURN_ON:
+ mCallback = (IBluetoothStateChangeCallback)getCurrentMessage().obj;
+
+ // If this is not the first application call the callback.
+ if (mBluetoothService.getNumberOfApplicationStateChangeTrackers() > 1) {
+ perProcessCallback(true, mCallback);
+ }
+ break;
+ case BECAME_PAIRABLE:
+ perProcessCallback(true, mCallback);
+ break;
+ case USER_TURN_ON:
+ broadcastState(BluetoothAdapter.STATE_TURNING_ON);
+ persistSwitchSetting(true);
+
+ String[] propVal = {"Pairable", mBluetoothService.getProperty("Pairable")};
+ mEventLoop.onPropertyChanged(propVal);
+
+ // run bluetooth now that it's turned on
+ mBluetoothService.runBluetooth();
+ transitionTo(mBluetoothOn);
+ broadcastState(BluetoothAdapter.STATE_ON);
+ break;
+ case USER_TURN_OFF:
+ broadcastState(BluetoothAdapter.STATE_TURNING_OFF);
+ if (mBluetoothService.getAdapterConnectionState() !=
+ BluetoothAdapter.STATE_DISCONNECTED) {
+ mBluetoothService.disconnectDevices();
+ break;
+ }
+ //$FALL-THROUGH$ all devices are already disconnected
+ case ALL_DEVICES_DISCONNECTED:
+ mBluetoothService.finishDisable();
+ broadcastState(BluetoothAdapter.STATE_OFF);
+ break;
+ case PER_PROCESS_TURN_OFF:
+ perProcessCallback(false, (IBluetoothStateChangeCallback)message.obj);
+ if (mBluetoothService.isApplicationStateChangeTrackerEmpty()) {
+ mBluetoothService.switchConnectable(false);
+ }
+ break;
+ case BECAME_NON_PAIRABLE:
+ transitionTo(mHotOff);
+ if (!mContext.getResources().getBoolean
+ (com.android.internal.R.bool.config_bluetooth_adapter_quick_switch)) {
+ deferMessage(obtainMessage(TURN_COLD));
+ }
+ break;
+ case AIRPLANE_MODE_ON:
+ mBluetoothService.switchConnectable(false);
+ allProcessesCallback(false);
+ // we turn all the way to PowerOff with AIRPLANE_MODE_ON
+ deferMessage(obtainMessage(AIRPLANE_MODE_ON));
+ break;
+ default:
+ return NOT_HANDLED;
+ }
+ return retValue;
+ }
+ }
+
+
+ private void perProcessCallback(boolean on, IBluetoothStateChangeCallback c) {
+ if (c == null) return;
+
+ try {
+ c.onBluetoothStateChange(on);
+ } catch (RemoteException e) {}
+ }
+
+ private void allProcessesCallback(boolean on) {
+ for (IBluetoothStateChangeCallback c:
+ mBluetoothService.getApplicationStateChangeCallbacks()) {
+ perProcessCallback(on, c);
+ }
+ if (!on) {
+ mBluetoothService.clearApplicationStateChangeTracker();
+ }
+ }
+
/**
* Return the public BluetoothAdapter state
*/
@@ -476,7 +616,7 @@ final class BluetoothAdapterStateMachine extends StateMachine {
private void broadcastState(int newState) {
- if (DBG) log("Bluetooth state " + mPublicState + " -> " + newState);
+ log("Bluetooth state " + mPublicState + " -> " + newState);
if (mPublicState == newState) {
return;
}
diff --git a/core/java/android/server/BluetoothEventLoop.java b/core/java/android/server/BluetoothEventLoop.java
index 5273910..9b9196a 100644
--- a/core/java/android/server/BluetoothEventLoop.java
+++ b/core/java/android/server/BluetoothEventLoop.java
@@ -340,9 +340,9 @@ class BluetoothEventLoop {
if (name.equals("Pairable")) {
if (pairable.equals("true")) {
- mBluetoothState.sendMessage(BluetoothAdapterStateMachine.BECOME_PAIRABLE);
+ mBluetoothState.sendMessage(BluetoothAdapterStateMachine.BECAME_PAIRABLE);
} else {
- mBluetoothState.sendMessage(BluetoothAdapterStateMachine.BECOME_NON_PAIRABLE);
+ mBluetoothState.sendMessage(BluetoothAdapterStateMachine.BECAME_NON_PAIRABLE);
}
}
diff --git a/core/java/android/server/BluetoothService.java b/core/java/android/server/BluetoothService.java
index 3a563e6..0d95a58 100755
--- a/core/java/android/server/BluetoothService.java
+++ b/core/java/android/server/BluetoothService.java
@@ -39,6 +39,7 @@ import android.bluetooth.BluetoothUuid;
import android.bluetooth.IBluetooth;
import android.bluetooth.IBluetoothCallback;
import android.bluetooth.IBluetoothHealthCallback;
+import android.bluetooth.IBluetoothStateChangeCallback;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
@@ -68,13 +69,15 @@ import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
-import java.io.InputStreamReader;
import java.io.IOException;
+import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.RandomAccessFile;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -101,6 +104,8 @@ public class BluetoothService extends IBluetooth.Stub {
private final BluetoothBondState mBondState; // local cache of bondings
private final IBatteryStats mBatteryStats;
private final Context mContext;
+ private Map<Integer, IBluetoothStateChangeCallback> mStateChangeTracker =
+ Collections.synchronizedMap(new HashMap<Integer, IBluetoothStateChangeCallback>());
private static final String BLUETOOTH_ADMIN_PERM = android.Manifest.permission.BLUETOOTH_ADMIN;
static final String BLUETOOTH_PERM = android.Manifest.permission.BLUETOOTH;
@@ -114,6 +119,9 @@ public class BluetoothService extends IBluetooth.Stub {
private static final int MESSAGE_UUID_INTENT = 1;
private static final int MESSAGE_AUTO_PAIRING_FAILURE_ATTEMPT_DELAY = 2;
+ private static final int RFCOMM_RECORD_REAPER = 10;
+ private static final int STATE_CHANGE_REAPER = 11;
+
// The time (in millisecs) to delay the pairing attempt after the first
// auto pairing attempt fails. We use an exponential delay with
// INIT_AUTO_PAIRING_FAILURE_ATTEMPT_DELAY as the initial value and
@@ -1499,7 +1507,7 @@ public class BluetoothService extends IBluetooth.Stub {
int pid = Binder.getCallingPid();
mServiceRecordToPid.put(new Integer(handle), new Integer(pid));
try {
- b.linkToDeath(new Reaper(handle, pid), 0);
+ b.linkToDeath(new Reaper(handle, pid, RFCOMM_RECORD_REAPER), 0);
} catch (RemoteException e) {}
return handle;
}
@@ -1522,20 +1530,85 @@ public class BluetoothService extends IBluetooth.Stub {
}
private class Reaper implements IBinder.DeathRecipient {
- int pid;
- int handle;
- Reaper(int handle, int pid) {
- this.pid = pid;
- this.handle = handle;
+ int mPid;
+ int mHandle;
+ int mType;
+
+ Reaper(int handle, int pid, int type) {
+ mPid = pid;
+ mHandle = handle;
+ mType = type;
+ }
+
+ Reaper(int pid, int type) {
+ mPid = pid;
+ mType = type;
}
+
+ @Override
public void binderDied() {
synchronized (BluetoothService.this) {
- if (DBG) Log.d(TAG, "Tracked app " + pid + " died");
- checkAndRemoveRecord(handle, pid);
+ if (DBG) Log.d(TAG, "Tracked app " + mPid + " died" + "Type:" + mType);
+ if (mType == RFCOMM_RECORD_REAPER) {
+ checkAndRemoveRecord(mHandle, mPid);
+ } else if (mType == STATE_CHANGE_REAPER) {
+ mStateChangeTracker.remove(mPid);
+ }
}
}
}
+
+ @Override
+ public boolean changeApplicationBluetoothState(boolean on,
+ IBluetoothStateChangeCallback callback, IBinder binder) {
+ int pid = Binder.getCallingPid();
+ //mStateChangeTracker is a synchronized map
+ if (!mStateChangeTracker.containsKey(pid)) {
+ if (on) {
+ mStateChangeTracker.put(pid, callback);
+ } else {
+ return false;
+ }
+ } else if (!on) {
+ mStateChangeTracker.remove(pid);
+ }
+
+ if (binder != null) {
+ try {
+ binder.linkToDeath(new Reaper(pid, STATE_CHANGE_REAPER), 0);
+ } catch (RemoteException e) {
+ return false;
+ }
+ }
+
+ int type;
+ if (on) {
+ type = BluetoothAdapterStateMachine.PER_PROCESS_TURN_ON;
+ } else {
+ type = BluetoothAdapterStateMachine.PER_PROCESS_TURN_OFF;
+ }
+
+ mBluetoothState.sendMessage(type, callback);
+ return true;
+ }
+
+ boolean isApplicationStateChangeTrackerEmpty() {
+ return mStateChangeTracker.isEmpty();
+ }
+
+ void clearApplicationStateChangeTracker() {
+ mStateChangeTracker.clear();
+ }
+
+ Collection<IBluetoothStateChangeCallback> getApplicationStateChangeCallbacks() {
+ return mStateChangeTracker.values();
+ }
+
+ int getNumberOfApplicationStateChangeTrackers() {
+ return mStateChangeTracker.size();
+ }
+
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
diff --git a/core/java/android/service/textservice/SpellCheckerService.java b/core/java/android/service/textservice/SpellCheckerService.java
index 270f512..6f70ab8 100644
--- a/core/java/android/service/textservice/SpellCheckerService.java
+++ b/core/java/android/service/textservice/SpellCheckerService.java
@@ -24,6 +24,7 @@ import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;
+import android.util.Log;
import android.view.textservice.SuggestionsInfo;
import android.view.textservice.TextInfo;
@@ -36,6 +37,7 @@ import java.lang.ref.WeakReference;
*/
public abstract class SpellCheckerService extends Service {
private static final String TAG = SpellCheckerService.class.getSimpleName();
+ private static final boolean DBG = false;
public static final String SERVICE_INTERFACE =
"android.service.textservice.SpellCheckerService";
@@ -87,6 +89,9 @@ public abstract class SpellCheckerService extends Service {
*/
@Override
public final IBinder onBind(final Intent intent) {
+ if (DBG) {
+ Log.w(TAG, "onBind");
+ }
return mBinder;
}
diff --git a/core/java/android/service/textservice/SpellCheckerSession.java b/core/java/android/service/textservice/SpellCheckerSession.java
index 400454d..0dff3a6 100644
--- a/core/java/android/service/textservice/SpellCheckerSession.java
+++ b/core/java/android/service/textservice/SpellCheckerSession.java
@@ -30,7 +30,6 @@ import android.view.textservice.SuggestionsInfo;
import android.view.textservice.TextInfo;
import java.util.LinkedList;
-import java.util.Locale;
import java.util.Queue;
/**
@@ -125,6 +124,9 @@ public class SpellCheckerSession {
*/
public void getSuggestions(
TextInfo[] textInfos, int suggestionsLimit, boolean sequentialWords) {
+ if (DBG) {
+ Log.w(TAG, "getSuggestions from " + mSpellCheckerInfo.getId());
+ }
// TODO: Handle multiple words suggestions by using WordBreakIterator
mSpellCheckerSessionListenerImpl.getSuggestionsMultiple(
textInfos, suggestionsLimit, sequentialWords);
@@ -186,6 +188,9 @@ public class SpellCheckerSession {
public void getSuggestionsMultiple(
TextInfo[] textInfos, int suggestionsLimit, boolean sequentialWords) {
+ if (DBG) {
+ Log.w(TAG, "getSuggestionsMultiple");
+ }
processOrEnqueueTask(
new SpellCheckerParams(TASK_GET_SUGGESTIONS_MULTIPLE, textInfos,
suggestionsLimit, sequentialWords));
@@ -204,6 +209,9 @@ public class SpellCheckerSession {
}
private void processOrEnqueueTask(SpellCheckerParams scp) {
+ if (DBG) {
+ Log.d(TAG, "process or enqueue task: " + mISpellCheckerSession);
+ }
if (mISpellCheckerSession == null) {
mPendingTasks.offer(scp);
} else {
@@ -215,6 +223,9 @@ public class SpellCheckerSession {
if (!checkOpenConnection()) {
return;
}
+ if (DBG) {
+ Log.w(TAG, "Cancel spell checker tasks.");
+ }
try {
mISpellCheckerSession.cancel();
} catch (RemoteException e) {
@@ -226,6 +237,9 @@ public class SpellCheckerSession {
if (!checkOpenConnection()) {
return;
}
+ if (DBG) {
+ Log.w(TAG, "Get suggestions from the spell checker.");
+ }
try {
mISpellCheckerSession.getSuggestionsMultiple(
scp.mTextInfos, scp.mSuggestionsLimit, scp.mSequentialWords);
@@ -254,6 +268,9 @@ public class SpellCheckerSession {
private class InternalListener extends ITextServicesSessionListener.Stub {
@Override
public void onServiceConnected(ISpellCheckerSession session) {
+ if (DBG) {
+ Log.w(TAG, "SpellCheckerSession connected.");
+ }
mSpellCheckerSessionListenerImpl.onServiceConnected(session);
}
}
diff --git a/core/java/android/speech/tts/TextToSpeechService.java b/core/java/android/speech/tts/TextToSpeechService.java
index 1926c92..b4e8ab4 100644
--- a/core/java/android/speech/tts/TextToSpeechService.java
+++ b/core/java/android/speech/tts/TextToSpeechService.java
@@ -227,7 +227,7 @@ public abstract class TextToSpeechService extends Service {
private boolean mFirstIdle = true;
public SynthThread() {
- super(SYNTH_THREAD_NAME, android.os.Process.THREAD_PRIORITY_AUDIO);
+ super(SYNTH_THREAD_NAME, android.os.Process.THREAD_PRIORITY_DEFAULT);
}
@Override
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index 5ab2024..d9efe0c 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -25,16 +25,18 @@ import android.os.SystemClock;
import android.util.DisplayMetrics;
import android.util.Slog;
+/**
+ * Provides information about the display size and density.
+ */
public class Display {
static final String TAG = "Display";
static final boolean DEBUG_COMPAT = false;
/**
- * Specify the default Display
+ * The default Display id.
*/
public static final int DEFAULT_DISPLAY = 0;
-
/**
* Use {@link android.view.WindowManager#getDefaultDisplay()
* WindowManager.getDefaultDisplay()} to create a Display object.
@@ -55,16 +57,6 @@ public class Display {
init(display);
}
- /** @hide */
- public static void setCompatibilityInfo(CompatibilityInfo compatInfo) {
- if (compatInfo != null && (compatInfo.isScalingRequired()
- || !compatInfo.supportsScreen())) {
- sCompatibilityInfo = compatInfo;
- } else {
- sCompatibilityInfo = null;
- }
- }
-
/**
* Returns the index of this display. This is currently undefined; do
* not use.
@@ -80,25 +72,29 @@ public class Display {
native static int getDisplayCount();
/**
- * Returns the raw size of the display, in pixels. Note that this
- * should <em>not</em> generally be used for computing layouts, since
- * a device will typically have screen decoration (such as a status bar)
+ * Gets the size of the display, in pixels.
+ * <p>
+ * Note that this value should <em>not</em> be used for computing layouts,
+ * since a device will typically have screen decoration (such as a status bar)
* along the edges of the display that reduce the amount of application
- * space available from the raw size returned here. This value is
- * adjusted for you based on the current rotation of the display.
+ * space available from the size returned here. Layouts should instead use
+ * the window size.
+ * </p><p>
+ * The size is adjusted based on the current rotation of the display.
+ * </p><p>
+ * The size returned by this method does not necessarily represent the
+ * actual raw size (native resolution) of the display. The returned size may
+ * be adjusted to exclude certain system decor elements that are always visible.
+ * It may also be scaled to provide compatibility with older applications that
+ * were originally designed for smaller displays.
+ * </p>
+ *
+ * @param outSize A {@link Point} object to receive the size information.
*/
public void getSize(Point outSize) {
getSizeInternal(outSize, true);
}
- /**
- * Returns the raw size of the display, in pixels. Note that this
- * should <em>not</em> generally be used for computing layouts, since
- * a device will typically have screen decoration (such as a status bar)
- * along the edges of the display that reduce the amount of application
- * space available from the raw size returned here. This value is
- * adjusted for you based on the current rotation of the display.
- */
private void getSizeInternal(Point outSize, boolean doCompat) {
try {
IWindowManager wm = getWindowManager();
@@ -118,8 +114,8 @@ public class Display {
} else {
// This is just for boot-strapping, initializing the
// system process before the window manager is up.
- outSize.x = getRealWidth();
- outSize.y = getRealHeight();
+ outSize.x = getRawWidth();
+ outSize.y = getRawHeight();
}
if (DEBUG_COMPAT && doCompat) Slog.v(TAG, "Returning display size: " + outSize);
} catch (RemoteException e) {
@@ -128,7 +124,10 @@ public class Display {
}
/**
- * This is just easier for some parts of the framework.
+ * Gets the size of the display as a rectangle, in pixels.
+ *
+ * @param outSize A {@link Rect} object to receive the size information.
+ * @see #getSize(Point)
*/
public void getRectSize(Rect outSize) {
synchronized (mTmpPoint) {
@@ -182,14 +181,49 @@ public class Display {
}
}
- /** @hide Returns the actual screen size, not including any decor. */
- native public int getRealWidth();
- /** @hide Returns the actual screen size, not including any decor. */
- native public int getRealHeight();
+ /**
+ * Gets the real size of the display without subtracting any window decor or
+ * applying any compatibility scale factors.
+ * <p>
+ * The real size may be smaller than the raw size when the window manager
+ * is emulating a smaller display (using adb shell am display-size).
+ * </p><p>
+ * The size is adjusted based on the current rotation of the display.
+ * </p>
+ * @hide
+ */
+ public void getRealSize(Point outSize) {
+ try {
+ IWindowManager wm = getWindowManager();
+ if (wm != null) {
+ wm.getRealDisplaySize(outSize);
+ } else {
+ // This is just for boot-strapping, initializing the
+ // system process before the window manager is up.
+ outSize.x = getRawWidth();
+ outSize.y = getRawHeight();
+ }
+ } catch (RemoteException e) {
+ Slog.w("Display", "Unable to get real display size", e);
+ }
+ }
- /** @hide special for when we are faking the screen size. */
+ /**
+ * Gets the raw width of the display, in pixels.
+ * <p>
+ * The size is adjusted based on the current rotation of the display.
+ * </p>
+ * @hide
+ */
native public int getRawWidth();
- /** @hide special for when we are faking the screen size. */
+
+ /**
+ * Gets the raw height of the display, in pixels.
+ * <p>
+ * The size is adjusted based on the current rotation of the display.
+ * </p>
+ * @hide
+ */
native public int getRawHeight();
/**
@@ -235,17 +269,24 @@ public class Display {
}
/**
- * Initialize a DisplayMetrics object from this display's data.
- *
- * @param outMetrics
+ * Gets display metrics that describe the size and density of this display.
+ * <p>
+ * The size is adjusted based on the current rotation of the display.
+ * </p><p>
+ * The size returned by this method does not necessarily represent the
+ * actual raw size (native resolution) of the display. The returned size may
+ * be adjusted to exclude certain system decor elements that are always visible.
+ * It may also be scaled to provide compatibility with older applications that
+ * were originally designed for smaller displays.
+ * </p>
+ *
+ * @param outMetrics A {@link DisplayMetrics} object to receive the metrics.
*/
public void getMetrics(DisplayMetrics outMetrics) {
synchronized (mTmpPoint) {
getSizeInternal(mTmpPoint, false);
- outMetrics.widthPixels = mTmpPoint.x;
- outMetrics.heightPixels = mTmpPoint.y;
+ getMetricsWithSize(outMetrics, mTmpPoint.x, mTmpPoint.y);
}
- getNonSizeMetrics(outMetrics);
CompatibilityInfo ci = mCompatibilityInfo.getIfNeeded();
if (ci != null) {
@@ -257,22 +298,44 @@ public class Display {
}
/**
- * Initialize a DisplayMetrics object from this display's data.
- *
- * @param outMetrics
+ * Gets display metrics based on the real size of this display.
* @hide
*/
public void getRealMetrics(DisplayMetrics outMetrics) {
- outMetrics.widthPixels = getRealWidth();
- outMetrics.heightPixels = getRealHeight();
- getNonSizeMetrics(outMetrics);
+ synchronized (mTmpPoint) {
+ getRealSize(mTmpPoint);
+ getMetricsWithSize(outMetrics, mTmpPoint.x, mTmpPoint.y);
+ }
+ }
+
+ /**
+ * If the display is mirrored to an external HDMI display, returns the
+ * width of that display.
+ * @hide
+ */
+ public int getRawExternalWidth() {
+ return 1280;
+ }
+
+ /**
+ * If the display is mirrored to an external HDMI display, returns the
+ * height of that display.
+ * @hide
+ */
+ public int getRawExternalHeight() {
+ return 720;
}
- private void getNonSizeMetrics(DisplayMetrics outMetrics) {
+ /**
+ * Gets display metrics based on an explicit assumed display size.
+ * @hide
+ */
+ public void getMetricsWithSize(DisplayMetrics outMetrics,
+ int width, int height) {
outMetrics.densityDpi = (int)((mDensity*DisplayMetrics.DENSITY_DEFAULT)+.5f);
- outMetrics.noncompatWidthPixels = outMetrics.widthPixels;
- outMetrics.noncompatHeightPixels = outMetrics.heightPixels;
+ outMetrics.noncompatWidthPixels = outMetrics.widthPixels = width;
+ outMetrics.noncompatHeightPixels = outMetrics.heightPixels = height;
outMetrics.density = outMetrics.noncompatDensity = mDensity;
outMetrics.scaledDensity = outMetrics.noncompatScaledDensity = outMetrics.density;
@@ -315,8 +378,6 @@ public class Display {
private static boolean sInitialized = false;
private static IWindowManager sWindowManager;
- private static volatile CompatibilityInfo sCompatibilityInfo;
-
/**
* Returns a display object which uses the metric's width/height instead.
* @hide
diff --git a/core/java/android/view/DisplayList.java b/core/java/android/view/DisplayList.java
index f4c0249..8f4ece0 100644
--- a/core/java/android/view/DisplayList.java
+++ b/core/java/android/view/DisplayList.java
@@ -54,4 +54,11 @@ public abstract class DisplayList {
* @return boolean true if the display list is able to be replayed, false otherwise.
*/
abstract boolean isValid();
+
+ /**
+ * Return the amount of memory used by this display list.
+ *
+ * @return The size of this display list in bytes
+ */
+ abstract int getSize();
}
diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java
index d22fa6e..a7fe95d 100644
--- a/core/java/android/view/GLES20Canvas.java
+++ b/core/java/android/view/GLES20Canvas.java
@@ -51,7 +51,7 @@ class GLES20Canvas extends HardwareCanvas {
// The native renderer will be destroyed when this object dies.
// DO NOT overwrite this reference once it is set.
- @SuppressWarnings("unused")
+ @SuppressWarnings({"unused", "FieldCanBeLocal"})
private CanvasFinalizer mFinalizer;
private int mWidth;
@@ -277,14 +277,25 @@ class GLES20Canvas extends HardwareCanvas {
///////////////////////////////////////////////////////////////////////////
/**
+ * Must match Caches::FlushMode values
+ *
+ * @see #flushCaches(int)
+ */
+ public static final int FLUSH_CACHES_LAYERS = 0;
+
+ /**
+ * Must match Caches::FlushMode values
+ *
* @see #flushCaches(int)
*/
- public static final int FLUSH_CACHES_MODERATE = 0;
+ public static final int FLUSH_CACHES_MODERATE = 1;
/**
+ * Must match Caches::FlushMode values
+ *
* @see #flushCaches(int)
*/
- public static final int FLUSH_CACHES_FULL = 1;
+ public static final int FLUSH_CACHES_FULL = 2;
/**
* Flush caches to reclaim as much memory as possible. The amount of memory
@@ -319,6 +330,12 @@ class GLES20Canvas extends HardwareCanvas {
private static native void nDestroyDisplayList(int displayList);
+ static int getDisplayListSize(int displayList) {
+ return nGetDisplayListSize(displayList);
+ }
+
+ private static native int nGetDisplayListSize(int displayList);
+
@Override
public boolean drawDisplayList(DisplayList displayList, int width, int height, Rect dirty) {
return nDrawDisplayList(mRenderer,
diff --git a/core/java/android/view/GLES20DisplayList.java b/core/java/android/view/GLES20DisplayList.java
index 9e649ce..4ca5e98 100644
--- a/core/java/android/view/GLES20DisplayList.java
+++ b/core/java/android/view/GLES20DisplayList.java
@@ -82,6 +82,12 @@ class GLES20DisplayList extends DisplayList {
}
}
+ @Override
+ int getSize() {
+ if (mFinalizer == null) return 0;
+ return GLES20Canvas.getDisplayListSize(mFinalizer.mNativeDisplayList);
+ }
+
private static class DisplayListFinalizer {
final int mNativeDisplayList;
diff --git a/core/java/android/view/GLES20Layer.java b/core/java/android/view/GLES20Layer.java
index a491a0b..fd3b9e5 100644
--- a/core/java/android/view/GLES20Layer.java
+++ b/core/java/android/view/GLES20Layer.java
@@ -54,7 +54,10 @@ abstract class GLES20Layer extends HardwareLayer {
@Override
void destroy() {
- if (mFinalizer != null) mFinalizer.destroy();
+ if (mFinalizer != null) {
+ mFinalizer.destroy();
+ mFinalizer = null;
+ }
mLayer = 0;
}
diff --git a/core/java/android/view/GLES20RecordingCanvas.java b/core/java/android/view/GLES20RecordingCanvas.java
index 078222b..c987f48 100644
--- a/core/java/android/view/GLES20RecordingCanvas.java
+++ b/core/java/android/view/GLES20RecordingCanvas.java
@@ -38,7 +38,7 @@ import android.util.Pools;
class GLES20RecordingCanvas extends GLES20Canvas implements Poolable<GLES20RecordingCanvas> {
// The recording canvas pool should be large enough to handle a deeply nested
// view hierarchy because display lists are generated recursively.
- private static final int POOL_LIMIT = 50;
+ private static final int POOL_LIMIT = 25;
private static final Pool<GLES20RecordingCanvas> sPool = Pools.synchronizedPool(
Pools.finitePool(new PoolableManager<GLES20RecordingCanvas>() {
diff --git a/core/java/android/view/GLES20RenderLayer.java b/core/java/android/view/GLES20RenderLayer.java
index 7adac1c..41f16e2 100644
--- a/core/java/android/view/GLES20RenderLayer.java
+++ b/core/java/android/view/GLES20RenderLayer.java
@@ -24,7 +24,6 @@ import android.graphics.Canvas;
* {@link Canvas} that can be used to render into an FBO using OpenGL.
*/
class GLES20RenderLayer extends GLES20Layer {
-
private int mLayerWidth;
private int mLayerHeight;
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java
index 14a77b4..346adc8 100644
--- a/core/java/android/view/HardwareRenderer.java
+++ b/core/java/android/view/HardwareRenderer.java
@@ -17,7 +17,7 @@
package android.view;
-import android.content.ComponentCallbacks;
+import android.content.ComponentCallbacks2;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.SurfaceTexture;
@@ -140,6 +140,13 @@ public abstract class HardwareRenderer {
abstract void updateSurface(SurfaceHolder holder) throws Surface.OutOfResourcesException;
/**
+ * Destoys the layers used by the specified view hierarchy.
+ *
+ * @param view The root of the view hierarchy
+ */
+ abstract void destroyLayers(View view);
+
+ /**
* This method should be invoked whenever the current hardware renderer
* context should be reset.
*/
@@ -283,7 +290,7 @@ public abstract class HardwareRenderer {
* see {@link android.content.ComponentCallbacks}
*/
static void trimMemory(int level) {
- Gl20Renderer.flushCaches(level);
+ Gl20Renderer.trimMemory(level);
}
/**
@@ -622,18 +629,8 @@ public abstract class HardwareRenderer {
+ "from multiple threads");
}
- /*
- * The window size has changed, so we need to create a new
- * surface.
- */
- if (mEglSurface != null && mEglSurface != EGL_NO_SURFACE) {
- /*
- * Unbind and destroy the old EGL surface, if
- * there is one.
- */
- sEgl.eglMakeCurrent(sEglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
- sEgl.eglDestroySurface(sEglDisplay, mEglSurface);
- }
+ // In case we need to destroy an existing surface
+ destroySurface();
// Create an EGL surface we can render into.
mEglSurface = sEgl.eglCreateWindowSurface(sEglDisplay, sEglConfig, holder, null);
@@ -677,22 +674,13 @@ public abstract class HardwareRenderer {
}
EGLContext createContext(EGL10 egl, EGLDisplay eglDisplay, EGLConfig eglConfig) {
- int[] attrib_list = { EGL_CONTEXT_CLIENT_VERSION, mGlVersion, EGL_NONE };
+ int[] attribs = { EGL_CONTEXT_CLIENT_VERSION, mGlVersion, EGL_NONE };
return egl.eglCreateContext(eglDisplay, eglConfig, EGL_NO_CONTEXT,
- mGlVersion != 0 ? attrib_list : null);
+ mGlVersion != 0 ? attribs : null);
}
@Override
- void initializeIfNeeded(int width, int height, View.AttachInfo attachInfo,
- SurfaceHolder holder) throws Surface.OutOfResourcesException {
- if (isRequested()) {
- checkEglErrors();
- super.initializeIfNeeded(width, height, attachInfo, holder);
- }
- }
-
- @Override
void destroy(boolean full) {
if (full && mCanvas != null) {
mCanvas = null;
@@ -702,15 +690,21 @@ public abstract class HardwareRenderer {
mDestroyed = true;
- sEgl.eglMakeCurrent(sEglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
- sEgl.eglDestroySurface(sEglDisplay, mEglSurface);
+ destroySurface();
- mEglSurface = null;
mGl = null;
setEnabled(false);
}
+ void destroySurface() {
+ if (mEglSurface != null && mEglSurface != EGL_NO_SURFACE) {
+ sEgl.eglMakeCurrent(sEglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
+ sEgl.eglDestroySurface(sEglDisplay, mEglSurface);
+ mEglSurface = null;
+ }
+ }
+
@Override
void invalidate() {
// Cancels any existing buffer to ensure we'll get a buffer
@@ -726,6 +720,7 @@ public abstract class HardwareRenderer {
@Override
void setup(int width, int height) {
+ checkCurrent();
mCanvas.setViewport(width, height);
}
@@ -819,7 +814,7 @@ public abstract class HardwareRenderer {
* {@link #SURFACE_STATE_UPDATED} if the EGL context was changed or
* {@link #SURFACE_STATE_SUCCESS} if the EGL context was the correct one
*/
- private int checkCurrent() {
+ int checkCurrent() {
if (mEglThread != Thread.currentThread()) {
throw new IllegalStateException("Hardware acceleration can only be used with a " +
"single UI thread.\nOriginal thread: " + mEglThread + "\n" +
@@ -847,6 +842,9 @@ public abstract class HardwareRenderer {
static class Gl20Renderer extends GlRenderer {
private GLES20Canvas mGlCanvas;
+ private static EGLSurface sPbuffer;
+ private static final Object[] sPbufferLock = new Object[0];
+
Gl20Renderer(boolean translucent) {
super(2, translucent);
}
@@ -926,19 +924,63 @@ public abstract class HardwareRenderer {
return ((GLES20TextureLayer) layer).getSurfaceTexture();
}
+ @Override
+ void destroyLayers(View view) {
+ if (view != null && isEnabled()) {
+ checkCurrent();
+ destroyHardwareLayer(view);
+ GLES20Canvas.flushCaches(GLES20Canvas.FLUSH_CACHES_LAYERS);
+ }
+ }
+
+ private void destroyHardwareLayer(View view) {
+ if (view.destroyLayer()) {
+ view.invalidate(true);
+ }
+ if (view instanceof ViewGroup) {
+ ViewGroup group = (ViewGroup) view;
+
+ int count = group.getChildCount();
+ for (int i = 0; i < count; i++) {
+ destroyHardwareLayer(group.getChildAt(i));
+ }
+ }
+ }
+
static HardwareRenderer create(boolean translucent) {
if (GLES20Canvas.isAvailable()) {
return new Gl20Renderer(translucent);
}
return null;
}
-
- static void flushCaches(int level) {
+
+ static void trimMemory(int level) {
+ if (sEgl == null || sEglConfig == null) return;
+
+ EGLContext eglContext = sEglContextStorage.get();
+ // We do not have OpenGL objects
+ if (eglContext == null) {
+ return;
+ } else {
+ synchronized (sPbufferLock) {
+ // Create a temporary 1x1 pbuffer so we have a context
+ // to clear our OpenGL objects
+ if (sPbuffer == null) {
+ sPbuffer = sEgl.eglCreatePbufferSurface(sEglDisplay, sEglConfig, new int[] {
+ EGL_WIDTH, 1, EGL_HEIGHT, 1, EGL_NONE
+ });
+ }
+ }
+ sEgl.eglMakeCurrent(sEglDisplay, sPbuffer, sPbuffer, eglContext);
+ }
+
switch (level) {
- case ComponentCallbacks.TRIM_MEMORY_MODERATE:
+ case ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN:
+ case ComponentCallbacks2.TRIM_MEMORY_BACKGROUND:
+ case ComponentCallbacks2.TRIM_MEMORY_MODERATE:
GLES20Canvas.flushCaches(GLES20Canvas.FLUSH_CACHES_MODERATE);
break;
- case ComponentCallbacks.TRIM_MEMORY_COMPLETE:
+ case ComponentCallbacks2.TRIM_MEMORY_COMPLETE:
GLES20Canvas.flushCaches(GLES20Canvas.FLUSH_CACHES_FULL);
break;
}
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index ad17edf..81cd798 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -55,6 +55,7 @@ interface IWindowManager
boolean inputMethodClientHasFocus(IInputMethodClient client);
void getDisplaySize(out Point size);
+ void getRealDisplaySize(out Point size);
int getMaximumSizeDimension();
void setForcedDisplaySize(int longDimen, int shortDimen);
diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java
index 88f59d4..da5c7b2 100644
--- a/core/java/android/view/MotionEvent.java
+++ b/core/java/android/view/MotionEvent.java
@@ -1123,7 +1123,10 @@ public final class MotionEvent extends InputEvent implements Parcelable {
}
/**
- * Button constant: Primary button (left mouse button, stylus tip).
+ * Button constant: Primary button (left mouse button).
+ *
+ * This button constant is not set in response to simple touches with a finger
+ * or stylus tip. The user must actually push a button.
*
* @see #getButtonState
*/
@@ -1215,55 +1218,32 @@ public final class MotionEvent extends InputEvent implements Parcelable {
public static final int TOOL_TYPE_UNKNOWN = 0;
/**
- * Tool type constant: The tool is a finger directly touching the display.
- *
- * This is a <em>direct</em> positioning tool.
+ * Tool type constant: The tool is a finger.
*
* @see #getToolType
*/
public static final int TOOL_TYPE_FINGER = 1;
/**
- * Tool type constant: The tool is a stylus directly touching the display
- * or hovering slightly above it.
- *
- * This is a <em>direct</em> positioning tool.
+ * Tool type constant: The tool is a stylus.
*
* @see #getToolType
*/
public static final int TOOL_TYPE_STYLUS = 2;
/**
- * Tool type constant: The tool is a mouse or trackpad that translates
- * relative motions into cursor movements on the display.
- *
- * This is an <em>indirect</em> positioning tool.
+ * Tool type constant: The tool is a mouse or trackpad.
*
* @see #getToolType
*/
public static final int TOOL_TYPE_MOUSE = 3;
/**
- * Tool type constant: The tool is a finger on a touch pad that is not
- * directly attached to the display. Finger movements on the touch pad
- * may be translated into touches on the display, possibly with visual feedback.
- *
- * This is an <em>indirect</em> positioning tool.
- *
- * @see #getToolType
- */
- public static final int TOOL_TYPE_INDIRECT_FINGER = 4;
-
- /**
- * Tool type constant: The tool is a stylus on a digitizer tablet that is not
- * attached to the display. Stylus movements on the digitizer may be translated
- * into touches on the display, possibly with visual feedback.
- *
- * This is an <em>indirect</em> positioning tool.
+ * Tool type constant: The tool is an eraser or a stylus being used in an inverted posture.
*
* @see #getToolType
*/
- public static final int TOOL_TYPE_INDIRECT_STYLUS = 5;
+ public static final int TOOL_TYPE_ERASER = 4;
// NOTE: If you add a new tool type here you must also add it to:
// native/include/android/input.h
@@ -1276,8 +1256,7 @@ public final class MotionEvent extends InputEvent implements Parcelable {
names.append(TOOL_TYPE_FINGER, "TOOL_TYPE_FINGER");
names.append(TOOL_TYPE_STYLUS, "TOOL_TYPE_STYLUS");
names.append(TOOL_TYPE_MOUSE, "TOOL_TYPE_MOUSE");
- names.append(TOOL_TYPE_INDIRECT_FINGER, "TOOL_TYPE_INDIRECT_FINGER");
- names.append(TOOL_TYPE_INDIRECT_STYLUS, "TOOL_TYPE_INDIRECT_STYLUS");
+ names.append(TOOL_TYPE_ERASER, "TOOL_TYPE_ERASER");
}
// Private value for history pos that obtains the current sample.
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 2213188..dd7eaa9 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -672,19 +672,23 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit
private static final int FITS_SYSTEM_WINDOWS = 0x00000002;
/**
- * This view is visible. Use with {@link #setVisibility(int)}.
+ * This view is visible.
+ * Use with {@link #setVisibility} and <a href="#attr_android:visibility">{@code
+ * android:visibility}.
*/
public static final int VISIBLE = 0x00000000;
/**
* This view is invisible, but it still takes up space for layout purposes.
- * Use with {@link #setVisibility(int)}.
+ * Use with {@link #setVisibility} and <a href="#attr_android:visibility">{@code
+ * android:visibility}.
*/
public static final int INVISIBLE = 0x00000004;
/**
* This view is invisible, and it doesn't take any space for layout
- * purposes. Use with {@link #setVisibility(int)}.
+ * purposes. Use with {@link #setVisibility} and <a href="#attr_android:visibility">{@code
+ * android:visibility}.
*/
public static final int GONE = 0x00000008;
@@ -1780,18 +1784,51 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit
public static final int OVER_SCROLL_NEVER = 2;
/**
- * View has requested the status bar to be visible (the default).
+ * View has requested the system UI (status bar) to be visible (the default).
*
* @see #setSystemUiVisibility(int)
*/
- public static final int STATUS_BAR_VISIBLE = 0;
+ public static final int SYSTEM_UI_FLAG_VISIBLE = 0;
/**
- * View has requested the status bar to be hidden.
+ * View has requested the system UI to enter an unobtrusive "low profile" mode.
+ *
+ * This is for use in games, book readers, video players, or any other "immersive" application
+ * where the usual system chrome is deemed too distracting.
+ *
+ * In low profile mode, the status bar and/or navigation icons may dim.
+ *
+ * @see #setSystemUiVisibility(int)
+ */
+ public static final int SYSTEM_UI_FLAG_LOW_PROFILE = 0x00000001;
+
+ /**
+ * View has requested that the system navigation be temporarily hidden.
+ *
+ * This is an even less obtrusive state than that called for by
+ * {@link #SYSTEM_UI_FLAG_LOW_PROFILE}; on devices that draw essential navigation controls
+ * (Home, Back, and the like) on screen, <code>SYSTEM_UI_FLAG_HIDE_NAVIGATION</code> will cause
+ * those to disappear. This is useful (in conjunction with the
+ * {@link android.view.WindowManager.LayoutParams#FLAG_FULLSCREEN FLAG_FULLSCREEN} and
+ * {@link android.view.WindowManager.LayoutParams#FLAG_LAYOUT_IN_SCREEN FLAG_LAYOUT_IN_SCREEN}
+ * window flags) for displaying content using every last pixel on the display.
+ *
+ * There is a limitation: because navigation controls are so important, the least user
+ * interaction will cause them to reappear immediately.
*
* @see #setSystemUiVisibility(int)
*/
- public static final int STATUS_BAR_HIDDEN = 0x00000001;
+ public static final int SYSTEM_UI_FLAG_HIDE_NAVIGATION = 0x00000002;
+
+ /**
+ * @deprecated Use {@link #SYSTEM_UI_FLAG_LOW_PROFILE} instead.
+ */
+ public static final int STATUS_BAR_HIDDEN = SYSTEM_UI_FLAG_LOW_PROFILE;
+
+ /**
+ * @deprecated Use {@link #SYSTEM_UI_FLAG_VISIBLE} instead.
+ */
+ public static final int STATUS_BAR_VISIBLE = SYSTEM_UI_FLAG_VISIBLE;
/**
* @hide
@@ -1885,7 +1922,7 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit
/**
* @hide
*/
- public static final int PUBLIC_STATUS_BAR_VISIBILITY_MASK = STATUS_BAR_HIDDEN;
+ public static final int PUBLIC_STATUS_BAR_VISIBILITY_MASK = 0x0000FFFF;
/**
* Controls the over-scroll mode for this view.
@@ -1930,7 +1967,17 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit
* This view's request for the visibility of the status bar.
* @hide
*/
- @ViewDebug.ExportedProperty()
+ @ViewDebug.ExportedProperty(flagMapping = {
+ @ViewDebug.FlagToString(mask = SYSTEM_UI_FLAG_LOW_PROFILE,
+ equals = SYSTEM_UI_FLAG_LOW_PROFILE,
+ name = "SYSTEM_UI_FLAG_LOW_PROFILE", outputIf = true),
+ @ViewDebug.FlagToString(mask = SYSTEM_UI_FLAG_HIDE_NAVIGATION,
+ equals = SYSTEM_UI_FLAG_HIDE_NAVIGATION,
+ name = "SYSTEM_UI_FLAG_HIDE_NAVIGATION", outputIf = true),
+ @ViewDebug.FlagToString(mask = PUBLIC_STATUS_BAR_VISIBILITY_MASK,
+ equals = SYSTEM_UI_FLAG_VISIBLE,
+ name = "SYSTEM_UI_FLAG_VISIBLE", outputIf = true)
+ })
int mSystemUiVisibility;
/**
@@ -2294,8 +2341,8 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit
private Bitmap mDrawingCache;
private Bitmap mUnscaledDrawingCache;
- private DisplayList mDisplayList;
private HardwareLayer mHardwareLayer;
+ DisplayList mDisplayList;
/**
* When this view has focus and the next focus is {@link #FOCUS_LEFT},
@@ -9226,10 +9273,7 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit
destroyDrawingCache();
- if (mHardwareLayer != null) {
- mHardwareLayer.destroy();
- mHardwareLayer = null;
- }
+ destroyLayer();
if (mDisplayList != null) {
mDisplayList.invalidate();
@@ -9601,21 +9645,10 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit
// Destroy any previous software drawing cache if needed
switch (mLayerType) {
case LAYER_TYPE_HARDWARE:
- if (mHardwareLayer != null) {
- mHardwareLayer.destroy();
- mHardwareLayer = null;
- }
+ destroyLayer();
// fall through - unaccelerated views may use software layer mechanism instead
case LAYER_TYPE_SOFTWARE:
- if (mDrawingCache != null) {
- mDrawingCache.recycle();
- mDrawingCache = null;
- }
-
- if (mUnscaledDrawingCache != null) {
- mUnscaledDrawingCache.recycle();
- mUnscaledDrawingCache = null;
- }
+ destroyDrawingCache();
break;
default:
break;
@@ -9686,7 +9719,8 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit
* @return A HardwareLayer ready to render, or null if an error occurred.
*/
HardwareLayer getHardwareLayer() {
- if (mAttachInfo == null || mAttachInfo.mHardwareRenderer == null) {
+ if (mAttachInfo == null || mAttachInfo.mHardwareRenderer == null ||
+ !mAttachInfo.mHardwareRenderer.isEnabled()) {
return null;
}
@@ -9741,6 +9775,15 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit
return mHardwareLayer;
}
+ boolean destroyLayer() {
+ if (mHardwareLayer != null) {
+ mHardwareLayer.destroy();
+ mHardwareLayer = null;
+ return true;
+ }
+ return false;
+ }
+
/**
* <p>Enables or disables the drawing cache. When the drawing cache is enabled, the next call
* to {@link #getDrawingCache()} or {@link #buildDrawingCache()} will draw the view in a
@@ -12538,7 +12581,8 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit
/**
* Request that the visibility of the status bar be changed.
- * @param visibility Either {@link #STATUS_BAR_VISIBLE} or {@link #STATUS_BAR_HIDDEN}.
+ * @param visibility Bitwise-or of flags {@link #SYSTEM_UI_FLAG_LOW_PROFILE} or
+ * {@link #SYSTEM_UI_FLAG_HIDE_NAVIGATION}.
*/
public void setSystemUiVisibility(int visibility) {
if (visibility != mSystemUiVisibility) {
@@ -12551,7 +12595,8 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit
/**
* Returns the status bar visibility that this view has requested.
- * @return Either {@link #STATUS_BAR_VISIBLE} or {@link #STATUS_BAR_HIDDEN}.
+ * @return Bitwise-or of flags {@link #SYSTEM_UI_FLAG_LOW_PROFILE} or
+ * {@link #SYSTEM_UI_FLAG_HIDE_NAVIGATION}.
*/
public int getSystemUiVisibility() {
return mSystemUiVisibility;
@@ -13654,7 +13699,8 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit
* Called when the status bar changes visibility because of a call to
* {@link View#setSystemUiVisibility(int)}.
*
- * @param visibility {@link #STATUS_BAR_VISIBLE} or {@link #STATUS_BAR_HIDDEN}.
+ * @param visibility Bitwise-or of flags {@link #SYSTEM_UI_FLAG_LOW_PROFILE} or
+ * {@link #SYSTEM_UI_FLAG_HIDE_NAVIGATION}.
*/
public void onSystemUiVisibilityChange(int visibility);
}
diff --git a/core/java/android/view/ViewDebug.java b/core/java/android/view/ViewDebug.java
index 4acf48c..96e550e 100644
--- a/core/java/android/view/ViewDebug.java
+++ b/core/java/android/view/ViewDebug.java
@@ -420,7 +420,7 @@ public class ViewDebug {
*
* @hide
*/
- public static long getViewAncestorInstanceCount() {
+ public static long getViewRootImplCount() {
return Debug.countInstancesOfClass(ViewRootImpl.class);
}
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 8cf03a6..7a1acfd 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -36,7 +36,6 @@ import android.util.Log;
import android.util.SparseArray;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
-import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.LayoutAnimationController;
@@ -788,7 +787,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
final View[] children = mChildren;
for (int i = 0; i < childrenCount; i++) {
View child = children[i];
- if ((child.mViewFlags & VISIBILITY_MASK) == VISIBLE) {
+ if ((child.mPrivateFlags & IS_ROOT_NAMESPACE) == 0) {
child.findViewsWithText(outViews, text);
}
}
@@ -2162,6 +2161,11 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
@Override
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info);
+ // If the view is not the topmost one in the view hierarchy and it is
+ // marked as the logical root of a view hierarchy, do not go any deeper.
+ if ((!(getParent() instanceof ViewRootImpl)) && (mPrivateFlags & IS_ROOT_NAMESPACE) != 0) {
+ return;
+ }
for (int i = 0, count = mChildrenCount; i < count; i++) {
View child = mChildren[i];
if ((child.mViewFlags & VISIBILITY_MASK) == VISIBLE) {
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 470493d..b22ab7e 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -21,6 +21,7 @@ import android.animation.LayoutTransition;
import android.app.ActivityManagerNative;
import android.content.ClipDescription;
import android.content.ComponentCallbacks;
+import android.content.ComponentCallbacks2;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.CompatibilityInfo;
@@ -80,6 +81,7 @@ import com.android.internal.view.RootViewSurfaceTaker;
import java.io.IOException;
import java.io.OutputStream;
+import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
@@ -540,6 +542,29 @@ public final class ViewRootImpl extends Handler implements ViewParent,
}
}
+ private void destroyHardwareResources() {
+ if (mAttachInfo.mHardwareRenderer != null) {
+ if (mAttachInfo.mHardwareRenderer.isEnabled()) {
+ mAttachInfo.mHardwareRenderer.destroyLayers(mView);
+ }
+ mAttachInfo.mHardwareRenderer.destroy(false);
+ }
+ }
+
+ void destroyHardwareLayers() {
+ if (mThread != Thread.currentThread()) {
+ if (mAttachInfo.mHardwareRenderer != null &&
+ mAttachInfo.mHardwareRenderer.isEnabled()) {
+ HardwareRenderer.trimMemory(ComponentCallbacks2.TRIM_MEMORY_MODERATE);
+ }
+ } else {
+ if (mAttachInfo.mHardwareRenderer != null &&
+ mAttachInfo.mHardwareRenderer.isEnabled()) {
+ mAttachInfo.mHardwareRenderer.destroyLayers(mView);
+ }
+ }
+ }
+
private void enableHardwareAcceleration(WindowManager.LayoutParams attrs) {
mAttachInfo.mHardwareAccelerated = false;
mAttachInfo.mHardwareAccelerationRequested = false;
@@ -824,8 +849,10 @@ public final class ViewRootImpl extends Handler implements ViewParent,
if (lp.type == WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL) {
// NOTE -- system code, won't try to do compat mode.
Display disp = WindowManagerImpl.getDefault().getDefaultDisplay();
- desiredWindowWidth = disp.getRealWidth();
- desiredWindowHeight = disp.getRealHeight();
+ Point size = new Point();
+ disp.getRealSize(size);
+ desiredWindowWidth = size.x;
+ desiredWindowHeight = size.y;
} else {
DisplayMetrics packageMetrics =
mView.getContext().getResources().getDisplayMetrics();
@@ -868,9 +895,7 @@ public final class ViewRootImpl extends Handler implements ViewParent,
attachInfo.mWindowVisibility = viewVisibility;
host.dispatchWindowVisibilityChanged(viewVisibility);
if (viewVisibility != View.VISIBLE || mNewSurfaceNeeded) {
- if (mAttachInfo.mHardwareRenderer != null) {
- mAttachInfo.mHardwareRenderer.destroy(false);
- }
+ destroyHardwareResources();
}
if (viewVisibility == View.GONE) {
// After making a window gone, we will count it as being
@@ -979,8 +1004,10 @@ public final class ViewRootImpl extends Handler implements ViewParent,
if (lp.type == WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL) {
// NOTE -- system code, won't try to do compat mode.
Display disp = WindowManagerImpl.getDefault().getDefaultDisplay();
- desiredWindowWidth = disp.getRealWidth();
- desiredWindowHeight = disp.getRealHeight();
+ Point size = new Point();
+ disp.getRealSize(size);
+ desiredWindowWidth = size.x;
+ desiredWindowHeight = size.y;
} else {
DisplayMetrics packageMetrics = res.getDisplayMetrics();
desiredWindowWidth = packageMetrics.widthPixels;
@@ -1511,7 +1538,8 @@ public final class ViewRootImpl extends Handler implements ViewParent,
}
}
- boolean cancelDraw = attachInfo.mTreeObserver.dispatchOnPreDraw();
+ boolean cancelDraw = attachInfo.mTreeObserver.dispatchOnPreDraw() ||
+ viewVisibility != View.VISIBLE;
if (!cancelDraw && !newSurface) {
if (mPendingTransitions != null && mPendingTransitions.size() > 0) {
@@ -1565,8 +1593,11 @@ public final class ViewRootImpl extends Handler implements ViewParent,
if (fullRedrawNeeded) {
mFullRedrawNeeded = true;
}
- // Try again
- scheduleTraversals();
+
+ if (viewVisibility == View.VISIBLE) {
+ // Try again
+ scheduleTraversals();
+ }
}
}
@@ -3484,6 +3515,31 @@ public final class ViewRootImpl extends Handler implements ViewParent,
public void debug() {
mView.debug();
}
+
+ public void dumpGfxInfo(PrintWriter pw, int[] info) {
+ if (mView != null) {
+ getGfxInfo(mView, info);
+ } else {
+ info[0] = info[1] = 0;
+ }
+ }
+
+ private void getGfxInfo(View view, int[] info) {
+ DisplayList displayList = view.mDisplayList;
+ info[0]++;
+ if (displayList != null) {
+ info[1] += displayList.getSize();
+ }
+
+ if (view instanceof ViewGroup) {
+ ViewGroup group = (ViewGroup) view;
+
+ int count = group.getChildCount();
+ for (int i = 0; i < count; i++) {
+ getGfxInfo(group.getChildAt(i), info);
+ }
+ }
+ }
public void die(boolean immediate) {
if (immediate) {
diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java
index a451bb5..5ef4f3e 100644
--- a/core/java/android/view/WindowManagerImpl.java
+++ b/core/java/android/view/WindowManagerImpl.java
@@ -24,6 +24,9 @@ import android.util.AndroidRuntimeException;
import android.util.Log;
import android.view.inputmethod.InputMethodManager;
+import java.io.FileDescriptor;
+import java.io.FileOutputStream;
+import java.io.PrintWriter;
import java.util.HashMap;
final class WindowLeaked extends AndroidRuntimeException {
@@ -392,7 +395,7 @@ public class WindowManagerImpl implements WindowManager {
leak.setStackTrace(root.getLocation().getStackTrace());
Log.e("WindowManager", leak.getMessage(), leak);
}
-
+
removeViewLocked(i);
i--;
count--;
@@ -410,6 +413,59 @@ public class WindowManagerImpl implements WindowManager {
}
}
+ /**
+ * @hide
+ */
+ public void trimLocalMemory() {
+ synchronized (this) {
+ if (mViews == null) return;
+ int count = mViews.length;
+ for (int i = 0; i < count; i++) {
+ mRoots[i].destroyHardwareLayers();
+ }
+ }
+ }
+
+ /**
+ * @hide
+ */
+ public void dumpGfxInfo(FileDescriptor fd) {
+ FileOutputStream fout = new FileOutputStream(fd);
+ PrintWriter pw = new PrintWriter(fout);
+ try {
+ synchronized (this) {
+ if (mViews != null) {
+ pw.println("View hierarchy:");
+
+ final int count = mViews.length;
+
+ int viewsCount = 0;
+ int displayListsSize = 0;
+ int[] info = new int[2];
+
+ for (int i = 0; i < count; i++) {
+ ViewRootImpl root = mRoots[i];
+ root.dumpGfxInfo(pw, info);
+
+ String name = root.getClass().getName() + '@' +
+ Integer.toHexString(hashCode());
+ pw.printf(" %s: %d views, %.2f kB (display lists)\n",
+ name, info[0], info[1] / 1024.0f);
+
+ viewsCount += info[0];
+ displayListsSize += info[1];
+ }
+
+ pw.printf("\nTotal ViewRootImpl: %d\n", count);
+ pw.printf("Total Views: %d\n", viewsCount);
+ pw.printf("Total DisplayList: %.2f kB\n\n", displayListsSize / 1024.0f);
+ }
+ }
+ } finally {
+ pw.flush();
+ }
+ }
+
public void setStoppedState(IBinder token, boolean stopped) {
synchronized (this) {
if (mViews == null)
diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java
index 738bcb9..9fbc4a7 100644
--- a/core/java/android/webkit/BrowserFrame.java
+++ b/core/java/android/webkit/BrowserFrame.java
@@ -1163,7 +1163,12 @@ class BrowserFrame extends Handler {
final SslError ssl_error;
try {
X509Certificate cert = new X509CertImpl(cert_der);
- ssl_error = new SslError(cert_error, cert, url);
+ SslCertificate sslCert = new SslCertificate(cert);
+ if (JniUtil.useChromiumHttpStack()) {
+ ssl_error = SslError.SslErrorFromChromiumErrorCode(cert_error, sslCert, url);
+ } else {
+ ssl_error = new SslError(cert_error, cert, url);
+ }
} catch (IOException e) {
// Can't get the certificate, not much to do.
Log.e(LOGTAG, "Can't get the certificate from WebKit, canceling");
diff --git a/core/java/android/webkit/DebugFlags.java b/core/java/android/webkit/DebugFlags.java
index 3cb5e24..a21d3ee 100644
--- a/core/java/android/webkit/DebugFlags.java
+++ b/core/java/android/webkit/DebugFlags.java
@@ -47,7 +47,7 @@ class DebugFlags {
public static final boolean WEB_VIEW_CORE = false;
/*
* Set to true to allow the WebTextView to draw on top of the web page in a
- * different color so that you can see how the two line up.
+ * different color with no background so you can see how the two line up.
*/
public static final boolean DRAW_WEBTEXTVIEW = false;
}
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java
index d584acd..642aa22 100644
--- a/core/java/android/webkit/WebSettings.java
+++ b/core/java/android/webkit/WebSettings.java
@@ -179,6 +179,7 @@ public class WebSettings {
private boolean mBlockNetworkImage = false;
private boolean mBlockNetworkLoads;
private boolean mJavaScriptEnabled = false;
+ private boolean mHardwareAccelSkia = false;
private boolean mShowVisualIndicator = false;
private PluginState mPluginState = PluginState.OFF;
private boolean mJavaScriptCanOpenWindowsAutomatically = false;
@@ -1243,6 +1244,26 @@ public class WebSettings {
}
/**
+ * Tell the WebView to use Skia's hardware accelerated rendering path
+ * @param flag True if the WebView should use Skia's hw-accel path
+ * @hide
+ */
+ public synchronized void setHardwareAccelSkiaEnabled(boolean flag) {
+ if (mHardwareAccelSkia != flag) {
+ mHardwareAccelSkia = flag;
+ postSync();
+ }
+ }
+
+ /**
+ * @return True if the WebView is using hardware accelerated skia
+ * @hide
+ */
+ public synchronized boolean getHardwareAccelSkiaEnabled() {
+ return mHardwareAccelSkia;
+ }
+
+ /**
* Tell the WebView to show the visual indicator
* @param flag True if the WebView should show the visual indicator
* @hide
diff --git a/core/java/android/webkit/WebTextView.java b/core/java/android/webkit/WebTextView.java
index d54230c..b8c4e22 100644
--- a/core/java/android/webkit/WebTextView.java
+++ b/core/java/android/webkit/WebTextView.java
@@ -25,7 +25,7 @@ import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
+import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
@@ -87,7 +87,6 @@ import junit.framework.Assert;
// Keep track of the text before the change so we know whether we actually
// need to send down the DOM events.
private String mPreChange;
- private Drawable mBackground;
// Variables for keeping track of the touch down, to send to the WebView
// when a drag starts
private float mDragStartX;
@@ -190,6 +189,8 @@ import junit.framework.Assert;
// that other applications that use embedded WebViews will properly
// display the text in password textfields.
setTextColor(DebugFlags.DRAW_WEBTEXTVIEW ? Color.RED : Color.BLACK);
+ setBackgroundDrawable(DebugFlags.DRAW_WEBTEXTVIEW ? null : new ColorDrawable(Color.WHITE));
+
// This helps to align the text better with the text in the web page.
setIncludeFontPadding(false);
@@ -423,24 +424,6 @@ import junit.framework.Assert;
// makeNewLayout does.
super.makeNewLayout(w, hintWidth, boring, hintBoring, ellipsisWidth,
bringIntoView);
-
- // For fields that do not draw, create a layout which is altered so that
- // the text lines up.
- if (DebugFlags.DRAW_WEBTEXTVIEW || willNotDraw()) {
- float lineHeight = -1;
- if (mWebView != null) {
- float height = mWebView.nativeFocusCandidateLineHeight();
- if (height != -1) {
- lineHeight = height * mWebView.getScale();
- }
- }
- CharSequence text = getText();
- // Copy from the existing Layout.
- mLayout = new WebTextViewLayout(text, text, getPaint(), mLayout.getWidth(),
- mLayout.getAlignment(), mLayout.getSpacingMultiplier(),
- mLayout.getSpacingAdd(), false, null, ellipsisWidth,
- lineHeight);
- }
lineUpScroll();
}
@@ -491,51 +474,6 @@ import junit.framework.Assert;
return connection;
}
- /**
- * In general, TextView makes a call to InputMethodManager.updateSelection
- * in onDraw. However, in the general case of WebTextView, we do not draw.
- * This method is called by WebView.onDraw to take care of the part that
- * needs to be called.
- */
- /* package */ void onDrawSubstitute() {
- if (!willNotDraw()) {
- // If the WebTextView is set to draw, such as in the case of a
- // password, onDraw calls updateSelection(), so this code path is
- // unnecessary.
- return;
- }
- // This code is copied from TextView.onDraw(). That code does not get
- // executed, however, because the WebTextView does not draw, allowing
- // webkit's drawing to show through.
- InputMethodManager imm = InputMethodManager.peekInstance();
- if (imm != null && imm.isActive(this)) {
- Spannable sp = (Spannable) getText();
- int selStart = Selection.getSelectionStart(sp);
- int selEnd = Selection.getSelectionEnd(sp);
- int candStart = EditableInputConnection.getComposingSpanStart(sp);
- int candEnd = EditableInputConnection.getComposingSpanEnd(sp);
- imm.updateSelection(this, selStart, selEnd, candStart, candEnd);
- }
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- // onDraw should only be called for password fields. If WebTextView is
- // still drawing, but is no longer corresponding to a password field,
- // remove it.
- if (!DebugFlags.DRAW_WEBTEXTVIEW && (mWebView == null
- || !mWebView.nativeFocusCandidateIsPassword()
- || !isSameTextField(mWebView.nativeFocusCandidatePointer()))) {
- // Although calling remove() would seem to make more sense here,
- // changing it to not be a password field will make it not draw.
- // Other code will make sure that it is removed completely, but this
- // way the user will not see it.
- setInPassword(false);
- } else {
- super.onDraw(canvas);
- }
- }
-
@Override
public void onEditorAction(int actionCode) {
switch (actionCode) {
@@ -928,102 +866,6 @@ import junit.framework.Assert;
if (mWebView != null) mWebView.incrementTextGeneration();
}
- /**
- * Determine whether to use the system-wide password disguising method,
- * or to use none.
- * @param inPassword True if the textfield is a password field.
- */
- /* package */ void setInPassword(boolean inPassword) {
- if (inPassword) {
- setInputType(InputType.TYPE_CLASS_TEXT | EditorInfo.
- TYPE_TEXT_VARIATION_WEB_PASSWORD);
- createBackground();
- }
- // For password fields, draw the WebTextView. For others, just show
- // webkit's drawing.
- if (!DebugFlags.DRAW_WEBTEXTVIEW) {
- setWillNotDraw(!inPassword);
- }
- setBackgroundDrawable(inPassword ? mBackground : null);
- }
-
- /**
- * Private class used for the background of a password textfield.
- */
- private static class OutlineDrawable extends Drawable {
- private Paint mBackgroundPaint;
- private Paint mOutlinePaint;
- private float[] mLines;
- public OutlineDrawable() {
- mBackgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mBackgroundPaint.setColor(Color.WHITE);
-
- mOutlinePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mOutlinePaint.setColor(Color.BLACK);
- mOutlinePaint.setStyle(Paint.Style.STROKE);
-
- mLines = new float[16];
- }
- @Override
- public void setBounds(int left, int top, int right, int bottom) {
- super.setBounds(left, top, right, bottom);
- bottom--;
- right -= 2;
- // Top line
- mLines[0] = left;
- mLines[1] = top + 1;
- mLines[2] = right;
- mLines[3] = top + 1;
- // Right line
- mLines[4] = right;
- mLines[5] = top;
- mLines[6] = right;
- mLines[7] = bottom;
- // Bottom line
- mLines[8] = left;
- mLines[9] = bottom;
- mLines[10] = right;
- mLines[11] = bottom;
- // Left line
- mLines[12] = left + 1;
- mLines[13] = top;
- mLines[14] = left + 1;
- mLines[15] = bottom;
- }
- @Override
- public void draw(Canvas canvas) {
- // Draw the background.
- canvas.drawRect(getBounds(), mBackgroundPaint);
- // Draw the outline.
- canvas.drawLines(mLines, mOutlinePaint);
- }
- // Always want it to be opaque.
- @Override
- public int getOpacity() {
- return PixelFormat.OPAQUE;
- }
- // These are needed because they are abstract in Drawable.
- @Override
- public void setAlpha(int alpha) { }
- @Override
- public void setColorFilter(ColorFilter cf) { }
- }
-
- /**
- * Create a background for the WebTextView and set up the paint for drawing
- * the text. This way, we can see the password transformation of the
- * system, which (optionally) shows the actual text before changing to dots.
- * The background is necessary to hide the webkit-drawn text beneath.
- */
- private void createBackground() {
- if (mBackground != null) {
- return;
- }
- mBackground = new OutlineDrawable();
-
- setGravity(Gravity.CENTER_VERTICAL);
- }
-
@Override
public void setInputType(int type) {
mFromSetInputType = true;
@@ -1072,7 +914,8 @@ import junit.framework.Assert;
lp.height = height;
}
if (getParent() == null) {
- mWebView.addView(this, lp);
+ // Insert the view so that it's drawn first (at index 0)
+ mWebView.addView(this, 0, lp);
} else {
setLayoutParams(lp);
}
@@ -1145,7 +988,6 @@ import junit.framework.Assert;
/* package */ void setType(int type) {
if (mWebView == null) return;
boolean single = true;
- boolean inPassword = false;
int maxLength = -1;
int inputType = InputType.TYPE_CLASS_TEXT
| InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT;
@@ -1167,7 +1009,7 @@ import junit.framework.Assert;
imeOptions |= EditorInfo.IME_ACTION_NONE;
break;
case PASSWORD:
- inPassword = true;
+ inputType |= EditorInfo.TYPE_TEXT_VARIATION_WEB_PASSWORD;
imeOptions |= EditorInfo.IME_ACTION_GO;
break;
case SEARCH:
@@ -1219,7 +1061,7 @@ import junit.framework.Assert;
setHorizontallyScrolling(single);
setInputType(inputType);
setImeOptions(imeOptions);
- setInPassword(inPassword);
+ setVisibility(VISIBLE);
AutoCompleteAdapter adapter = null;
setAdapterCustom(adapter);
}
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index e24ab58..f4fd551 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -625,6 +625,9 @@ public class WebView extends AbsoluteLayout
// If we are using a set picture, don't send view updates to webkit
private boolean mBlockWebkitViewMessages = false;
+ // cached value used to determine if we need to switch drawing models
+ private boolean mHardwareAccelSkia = false;
+
/*
* Private message ids
*/
@@ -2285,7 +2288,7 @@ public class WebView extends AbsoluteLayout
checkThread();
mContentWidth = 0;
mContentHeight = 0;
- setBaseLayer(0, null, false, false);
+ setBaseLayer(0, null, false, false, false);
mWebViewCore.sendMessage(EventHub.CLEAR_CONTENT);
}
@@ -4068,9 +4071,6 @@ public class WebView extends AbsoluteLayout
if (AUTO_REDRAW_HACK && mAutoRedraw) {
invalidate();
}
- if (inEditingMode()) {
- mWebTextView.onDrawSubstitute();
- }
mWebViewCore.signalRepaintDone();
if (mOverScrollGlow != null && mOverScrollGlow.drawEdgeGlows(canvas)) {
@@ -4271,11 +4271,11 @@ public class WebView extends AbsoluteLayout
}
void setBaseLayer(int layer, Region invalRegion, boolean showVisualIndicator,
- boolean isPictureAfterFirstLayout) {
+ boolean isPictureAfterFirstLayout, boolean registerPageSwapCallback) {
if (mNativeClass == 0)
return;
nativeSetBaseLayer(layer, invalRegion, showVisualIndicator,
- isPictureAfterFirstLayout);
+ isPictureAfterFirstLayout, registerPageSwapCallback);
if (mHTML5VideoViewProxy != null) {
mHTML5VideoViewProxy.setBaseLayer(layer);
}
@@ -4287,18 +4287,18 @@ public class WebView extends AbsoluteLayout
private void onZoomAnimationStart() {
// If it is in password mode, turn it off so it does not draw misplaced.
- if (inEditingMode() && nativeFocusCandidateIsPassword()) {
- mWebTextView.setInPassword(false);
+ if (inEditingMode()) {
+ mWebTextView.setVisibility(INVISIBLE);
}
}
private void onZoomAnimationEnd() {
// adjust the edit text view if needed
- if (inEditingMode() && didUpdateWebTextViewDimensions(FULLY_ON_SCREEN)
- && nativeFocusCandidateIsPassword()) {
+ if (inEditingMode()
+ && didUpdateWebTextViewDimensions(FULLY_ON_SCREEN)) {
// If it is a password field, start drawing the WebTextView once
// again.
- mWebTextView.setInPassword(true);
+ mWebTextView.setVisibility(VISIBLE);
}
}
@@ -4397,6 +4397,12 @@ public class WebView extends AbsoluteLayout
int functor = nativeGetDrawGLFunction(mGLViewportEmpty ? null : mGLRectViewport,
mGLViewportEmpty ? null : mViewRectViewport, getScale(), extras);
((HardwareCanvas) canvas).callDrawGLFunction(functor);
+
+ if (mHardwareAccelSkia != getSettings().getHardwareAccelSkiaEnabled()) {
+ mHardwareAccelSkia = getSettings().getHardwareAccelSkiaEnabled();
+ nativeUseHardwareAccelSkia(mHardwareAccelSkia);
+ }
+
} else {
DrawFilter df = null;
if (mZoomManager.isZoomAnimating() || UIAnimationsRunning) {
@@ -4423,8 +4429,9 @@ public class WebView extends AbsoluteLayout
mFocusSizeChanged = false;
// If we are zooming, this will get handled above, when the zoom
// finishes. We also do not need to do this unless the WebTextView
- // is showing.
- if (!animateZoom && inEditingMode()) {
+ // is showing. With hardware acceleration, the pageSwapCallback()
+ // updates the WebTextView position in sync with page swapping
+ if (!canvas.isHardwareAccelerated() && !animateZoom && inEditingMode()) {
didUpdateWebTextViewDimensions(ANYWHERE);
}
}
@@ -4593,37 +4600,23 @@ public class WebView extends AbsoluteLayout
}
String text = nativeFocusCandidateText();
int nodePointer = nativeFocusCandidatePointer();
- if (alreadyThere && mWebTextView.isSameTextField(nodePointer)) {
- // It is possible that we have the same textfield, but it has moved,
- // i.e. In the case of opening/closing the screen.
- // In that case, we need to set the dimensions, but not the other
- // aspects.
- // If the text has been changed by webkit, update it. However, if
- // there has been more UI text input, ignore it. We will receive
- // another update when that text is recognized.
- if (text != null && !text.equals(mWebTextView.getText().toString())
- && nativeTextGeneration() == mTextGeneration) {
- mWebTextView.setTextAndKeepSelection(text);
- }
- } else {
- mWebTextView.setGravity(nativeFocusCandidateIsRtlText() ?
- Gravity.RIGHT : Gravity.NO_GRAVITY);
- // This needs to be called before setType, which may call
- // requestFormData, and it needs to have the correct nodePointer.
- mWebTextView.setNodePointer(nodePointer);
- mWebTextView.setType(nativeFocusCandidateType());
- updateWebTextViewPadding();
- if (null == text) {
- if (DebugFlags.WEB_VIEW) {
- Log.v(LOGTAG, "rebuildWebTextView null == text");
- }
- text = "";
- }
- mWebTextView.setTextAndKeepSelection(text);
- InputMethodManager imm = InputMethodManager.peekInstance();
- if (imm != null && imm.isActive(mWebTextView)) {
- imm.restartInput(mWebTextView);
+ mWebTextView.setGravity(nativeFocusCandidateIsRtlText() ?
+ Gravity.RIGHT : Gravity.NO_GRAVITY);
+ // This needs to be called before setType, which may call
+ // requestFormData, and it needs to have the correct nodePointer.
+ mWebTextView.setNodePointer(nodePointer);
+ mWebTextView.setType(nativeFocusCandidateType());
+ updateWebTextViewPadding();
+ if (null == text) {
+ if (DebugFlags.WEB_VIEW) {
+ Log.v(LOGTAG, "rebuildWebTextView null == text");
}
+ text = "";
+ }
+ mWebTextView.setTextAndKeepSelection(text);
+ InputMethodManager imm = InputMethodManager.peekInstance();
+ if (imm != null && imm.isActive(mWebTextView)) {
+ imm.restartInput(mWebTextView);
}
if (isFocused()) {
mWebTextView.requestFocus();
@@ -8120,19 +8113,7 @@ public class WebView extends AbsoluteLayout
// and representing the same node as the pointer.
if (inEditingMode() &&
mWebTextView.isSameTextField(msg.arg1)) {
- if (msg.getData().getBoolean("password")) {
- Spannable text = (Spannable) mWebTextView.getText();
- int start = Selection.getSelectionStart(text);
- int end = Selection.getSelectionEnd(text);
- mWebTextView.setInPassword(true);
- // Restore the selection, which may have been
- // ruined by setInPassword.
- Spannable pword =
- (Spannable) mWebTextView.getText();
- Selection.setSelection(pword, start, end);
- // If the text entry has created more events, ignore
- // this one.
- } else if (msg.arg2 == mTextGeneration) {
+ if (msg.arg2 == mTextGeneration) {
String text = (String) msg.obj;
if (null == text) {
text = "";
@@ -8424,6 +8405,14 @@ public class WebView extends AbsoluteLayout
}
}
+ // Called by JNI to invalidate the View, given rectangle coordinates in
+ // content space
+ private void pageSwapCallback() {
+ if (inEditingMode()) {
+ didUpdateWebTextViewDimensions(ANYWHERE);
+ }
+ }
+
void setNewPicture(final WebViewCore.DrawData draw, boolean updateBaseLayer) {
if (mNativeClass == 0) {
if (mDelaySetPicture != null) {
@@ -8436,10 +8425,15 @@ public class WebView extends AbsoluteLayout
}
WebViewCore.ViewState viewState = draw.mViewState;
boolean isPictureAfterFirstLayout = viewState != null;
+
+ // Request a callback on pageSwap (to reposition the webtextview)
+ boolean registerPageSwapCallback =
+ !mZoomManager.isFixedLengthAnimationInProgress() && inEditingMode();
+
if (updateBaseLayer) {
setBaseLayer(draw.mBaseLayer, draw.mInvalRegion,
getSettings().getShowVisualIndicator(),
- isPictureAfterFirstLayout);
+ isPictureAfterFirstLayout, registerPageSwapCallback);
}
final Point viewSize = draw.mViewSize;
if (isPictureAfterFirstLayout) {
@@ -9238,7 +9232,8 @@ public class WebView extends AbsoluteLayout
private native void nativeSetFindIsUp(boolean isUp);
private native void nativeSetHeightCanMeasure(boolean measure);
private native void nativeSetBaseLayer(int layer, Region invalRegion,
- boolean showVisualIndicator, boolean isPictureAfterFirstLayout);
+ boolean showVisualIndicator, boolean isPictureAfterFirstLayout,
+ boolean registerPageSwapCallback);
private native int nativeGetBaseLayer();
private native void nativeShowCursorTimed();
private native void nativeReplaceBaseContent(int content);
@@ -9266,7 +9261,8 @@ public class WebView extends AbsoluteLayout
static final int NO_LEFTEDGE = -1;
native int nativeGetBlockLeftEdge(int x, int y, float scale);
- private native void nativeSetExpandedTileBounds(boolean enabled);
+ private native void nativeSetExpandedTileBounds(boolean enabled);
+ private native void nativeUseHardwareAccelSkia(boolean enabled);
// Returns a pointer to the scrollable LayerAndroid at the given point.
private native int nativeScrollableLayer(int x, int y, Rect scrollRect,
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index b7c1687..cadf2ab 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -261,6 +261,11 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
private RemoteViewsAdapter mRemoteAdapter;
/**
+ * This flag indicates the a full notify is required when the RemoteViewsAdapter connects
+ */
+ private boolean mDeferNotifyDataSetChanged = false;
+
+ /**
* Indicates whether the list selector should be drawn on top of the children or behind
*/
boolean mDrawSelectorOnTop = false;
@@ -2817,9 +2822,11 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
mPositionScroller.stop();
}
mTouchMode = TOUCH_MODE_OVERSCROLL;
+ mMotionX = (int) ev.getX();
mMotionY = mLastY = (int) ev.getY();
mMotionCorrection = 0;
mActivePointerId = ev.getPointerId(0);
+ mDirection = 0;
break;
}
@@ -2994,56 +3001,57 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
mDirection = newDirection;
}
- if (mDirection != newDirection) {
- // Coming back to 'real' list scrolling
- incrementalDeltaY = -newScroll;
- mScrollY = 0;
- invalidateParentIfNeeded();
-
- // No need to do all this work if we're not going to move anyway
- if (incrementalDeltaY != 0) {
- trackMotionScroll(incrementalDeltaY, incrementalDeltaY);
- }
-
- // Check to see if we are back in
- View motionView = this.getChildAt(mMotionPosition - mFirstPosition);
- if (motionView != null) {
- mTouchMode = TOUCH_MODE_SCROLL;
-
- // We did not scroll the full amount. Treat this essentially like the
- // start of a new touch scroll
- final int motionPosition = findClosestMotionRow(y);
-
- mMotionCorrection = 0;
- motionView = getChildAt(motionPosition - mFirstPosition);
- mMotionViewOriginalTop = motionView.getTop();
- mMotionY = y;
- mMotionPosition = motionPosition;
- }
+ int overScrollDistance = -incrementalDeltaY;
+ if ((newScroll < 0 && oldScroll >= 0) || (newScroll > 0 && oldScroll <= 0)) {
+ overScrollDistance = -oldScroll;
+ incrementalDeltaY += overScrollDistance;
} else {
- overScrollBy(0, -incrementalDeltaY, 0, mScrollY, 0, 0,
+ incrementalDeltaY = 0;
+ }
+
+ if (overScrollDistance != 0) {
+ overScrollBy(0, overScrollDistance, 0, mScrollY, 0, 0,
0, mOverscrollDistance, true);
final int overscrollMode = getOverScrollMode();
if (overscrollMode == OVER_SCROLL_ALWAYS ||
(overscrollMode == OVER_SCROLL_IF_CONTENT_SCROLLS &&
!contentFits())) {
if (rawDeltaY > 0) {
- mEdgeGlowTop.onPull((float) -incrementalDeltaY / getHeight());
+ mEdgeGlowTop.onPull((float) overScrollDistance / getHeight());
if (!mEdgeGlowBottom.isFinished()) {
mEdgeGlowBottom.onRelease();
}
} else if (rawDeltaY < 0) {
- mEdgeGlowBottom.onPull((float) -incrementalDeltaY / getHeight());
+ mEdgeGlowBottom.onPull((float) overScrollDistance / getHeight());
if (!mEdgeGlowTop.isFinished()) {
mEdgeGlowTop.onRelease();
}
}
invalidate();
}
- if (Math.abs(mOverscrollDistance) == Math.abs(mScrollY)) {
- // Don't allow overfling if we're at the edge.
- mVelocityTracker.clear();
+ }
+
+ if (incrementalDeltaY != 0) {
+ // Coming back to 'real' list scrolling
+ mScrollY = 0;
+ invalidateParentIfNeeded();
+
+ // No need to do all this work if we're not going to move anyway
+ if (incrementalDeltaY != 0) {
+ trackMotionScroll(incrementalDeltaY, incrementalDeltaY);
}
+
+ mTouchMode = TOUCH_MODE_SCROLL;
+
+ // We did not scroll the full amount. Treat this essentially like the
+ // start of a new touch scroll
+ final int motionPosition = findClosestMotionRow(y);
+
+ mMotionCorrection = 0;
+ View motionView = getChildAt(motionPosition - mFirstPosition);
+ mMotionViewOriginalTop = motionView != null ? motionView.getTop() : 0;
+ mMotionY = y;
+ mMotionPosition = motionPosition;
}
mLastY = y;
mDirection = newDirection;
@@ -3320,12 +3328,6 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
mScrollY = scrollY;
invalidateParentIfNeeded();
- if (clampedY) {
- // Velocity is broken by hitting the limit; don't start a fling off of this.
- if (mVelocityTracker != null) {
- mVelocityTracker.clear();
- }
- }
awakenScrollBars();
}
}
@@ -3616,9 +3618,8 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
}
void startOverfling(int initialVelocity) {
- final int min = mScrollY > 0 ? Integer.MIN_VALUE : 0;
- final int max = mScrollY > 0 ? 0 : Integer.MAX_VALUE;
- mScroller.fling(0, mScrollY, 0, initialVelocity, 0, 0, min, max, 0, getHeight());
+ mScroller.fling(0, mScrollY, 0, initialVelocity, 0, 0,
+ Integer.MIN_VALUE, Integer.MAX_VALUE, 0, getHeight());
mTouchMode = TOUCH_MODE_OVERFLING;
invalidate();
post(this);
@@ -3768,10 +3769,22 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
final OverScroller scroller = mScroller;
if (scroller.computeScrollOffset()) {
final int scrollY = mScrollY;
- final int deltaY = scroller.getCurrY() - scrollY;
+ final int currY = scroller.getCurrY();
+ final int deltaY = currY - scrollY;
if (overScrollBy(0, deltaY, 0, scrollY, 0, 0,
0, mOverflingDistance, false)) {
- startSpringback();
+ final boolean crossDown = scrollY <= 0 && currY > 0;
+ final boolean crossUp = scrollY >= 0 && currY < 0;
+ if (crossDown || crossUp) {
+ int velocity = (int) scroller.getCurrVelocity();
+ if (crossUp) velocity = -velocity;
+
+ // Don't flywheel from this; we're just continuing things.
+ scroller.abortAnimation();
+ start(velocity);
+ } else {
+ startSpringback();
+ }
} else {
invalidate();
post(this);
@@ -5384,17 +5397,29 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
return;
}
}
-
+ mDeferNotifyDataSetChanged = false;
// Otherwise, create a new RemoteViewsAdapter for binding
mRemoteAdapter = new RemoteViewsAdapter(getContext(), intent, this);
}
/**
+ * This defers a notifyDataSetChanged on the pending RemoteViewsAdapter if it has not
+ * connected yet.
+ */
+ public void deferNotifyDataSetChanged() {
+ mDeferNotifyDataSetChanged = true;
+ }
+
+ /**
* Called back when the adapter connects to the RemoteViewsService.
*/
public boolean onRemoteAdapterConnected() {
if (mRemoteAdapter != mAdapter) {
setAdapter(mRemoteAdapter);
+ if (mDeferNotifyDataSetChanged) {
+ mRemoteAdapter.notifyDataSetChanged();
+ mDeferNotifyDataSetChanged = false;
+ }
return false;
} else if (mRemoteAdapter != null) {
mRemoteAdapter.superNotifyDataSetChanged();
diff --git a/core/java/android/widget/ActivityChooserView.java b/core/java/android/widget/ActivityChooserView.java
index d85f8a4..45d73af 100644
--- a/core/java/android/widget/ActivityChooserView.java
+++ b/core/java/android/widget/ActivityChooserView.java
@@ -29,16 +29,7 @@ import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.ActivityChooserModel;
import android.widget.ActivityChooserModel.ActivityChooserModelClient;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.ListPopupWindow;
-import android.widget.PopupWindow;
-import android.widget.TextView;
import com.android.internal.R;
@@ -85,12 +76,22 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
/**
* The expand activities action button;
*/
- private final ImageButton mExpandActivityOverflowButton;
+ private final FrameLayout mExpandActivityOverflowButton;
+
+ /**
+ * The image for the expand activities action button;
+ */
+ private final ImageView mExpandActivityOverflowButtonImage;
/**
* The default activities action button;
*/
- private final ImageButton mDefaultActionButton;
+ private final FrameLayout mDefaultActivityButton;
+
+ /**
+ * The image for the default activities action button;
+ */
+ private final ImageView mDefaultActivityButtonImage;
/**
* The maximal width of the list popup.
@@ -185,13 +186,16 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
mActivityChooserContent = (LinearLayout) findViewById(R.id.activity_chooser_view_content);
- mDefaultActionButton = (ImageButton) findViewById(R.id.default_activity_button);
- mDefaultActionButton.setOnClickListener(mCallbacks);
- mDefaultActionButton.setOnLongClickListener(mCallbacks);
+ mDefaultActivityButton = (FrameLayout) findViewById(R.id.default_activity_button);
+ mDefaultActivityButton.setOnClickListener(mCallbacks);
+ mDefaultActivityButton.setOnLongClickListener(mCallbacks);
+ mDefaultActivityButtonImage = (ImageView) mDefaultActivityButton.findViewById(R.id.image);
- mExpandActivityOverflowButton = (ImageButton) findViewById(R.id.expand_activities_button);
+ mExpandActivityOverflowButton = (FrameLayout) findViewById(R.id.expand_activities_button);
mExpandActivityOverflowButton.setOnClickListener(mCallbacks);
- mExpandActivityOverflowButton.setImageDrawable(expandActivityOverflowButtonDrawable);
+ mExpandActivityOverflowButtonImage =
+ (ImageView) mExpandActivityOverflowButton.findViewById(R.id.image);
+ mExpandActivityOverflowButtonImage.setImageDrawable(expandActivityOverflowButtonDrawable);
mAdapter = new ActivityChooserViewAdapter();
mAdapter.registerDataSetObserver(new DataSetObserver() {
@@ -230,7 +234,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
* @param drawable The drawable.
*/
public void setExpandActivityOverflowButtonDrawable(Drawable drawable) {
- mExpandActivityOverflowButton.setImageDrawable(drawable);
+ mExpandActivityOverflowButtonImage.setImageDrawable(drawable);
}
/**
@@ -391,7 +395,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
private void updateButtons() {
final int activityCount = mAdapter.getActivityCount();
if (activityCount > 0) {
- mDefaultActionButton.setVisibility(VISIBLE);
+ mDefaultActivityButton.setVisibility(VISIBLE);
if (mAdapter.getCount() > 0) {
mExpandActivityOverflowButton.setEnabled(true);
} else {
@@ -399,9 +403,9 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
}
ResolveInfo activity = mAdapter.getDefaultActivity();
PackageManager packageManager = mContext.getPackageManager();
- mDefaultActionButton.setImageDrawable(activity.loadIcon(packageManager));
+ mDefaultActivityButtonImage.setImageDrawable(activity.loadIcon(packageManager));
} else {
- mDefaultActionButton.setVisibility(View.INVISIBLE);
+ mDefaultActivityButton.setVisibility(View.INVISIBLE);
mExpandActivityOverflowButton.setEnabled(false);
}
}
@@ -440,7 +444,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
// View.OnClickListener
public void onClick(View view) {
- if (view == mDefaultActionButton) {
+ if (view == mDefaultActivityButton) {
dismissPopup();
ResolveInfo defaultActivity = mAdapter.getDefaultActivity();
final int index = mAdapter.getDataModel().getActivityIndex(defaultActivity);
@@ -457,7 +461,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
// OnLongClickListener#onLongClick
@Override
public boolean onLongClick(View view) {
- if (view == mDefaultActionButton) {
+ if (view == mDefaultActivityButton) {
if (mAdapter.getCount() > 0) {
mIsSelectingDefaultActivity = true;
showPopupUnchecked(mInitialActivityCount);
diff --git a/core/java/android/widget/AdapterViewAnimator.java b/core/java/android/widget/AdapterViewAnimator.java
index c773527..c83c780 100644
--- a/core/java/android/widget/AdapterViewAnimator.java
+++ b/core/java/android/widget/AdapterViewAnimator.java
@@ -16,16 +16,12 @@
package android.widget;
-import java.util.ArrayList;
-import java.util.HashMap;
-
import android.animation.AnimatorInflater;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.content.Intent;
import android.content.res.TypedArray;
import android.os.Handler;
-import android.os.Looper;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.AttributeSet;
@@ -34,6 +30,9 @@ import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
+import java.util.ArrayList;
+import java.util.HashMap;
+
/**
* Base class for a {@link AdapterView} that will perform animations
* when switching between its views.
@@ -118,6 +117,11 @@ public abstract class AdapterViewAnimator extends AdapterView<Adapter>
RemoteViewsAdapter mRemoteViewsAdapter;
/**
+ * The remote adapter containing the data to be displayed by this view to be set
+ */
+ boolean mDeferNotifyDataSetChanged = false;
+
+ /**
* Specifies whether this is the first time the animator is showing views
*/
boolean mFirstTime = true;
@@ -966,7 +970,7 @@ public abstract class AdapterViewAnimator extends AdapterView<Adapter>
return;
}
}
-
+ mDeferNotifyDataSetChanged = false;
// Otherwise, create a new RemoteViewsAdapter for binding
mRemoteViewsAdapter = new RemoteViewsAdapter(getContext(), intent, this);
}
@@ -982,12 +986,25 @@ public abstract class AdapterViewAnimator extends AdapterView<Adapter>
}
/**
+ * This defers a notifyDataSetChanged on the pending RemoteViewsAdapter if it has not
+ * connected yet.
+ */
+ public void deferNotifyDataSetChanged() {
+ mDeferNotifyDataSetChanged = true;
+ }
+
+ /**
* Called back when the adapter connects to the RemoteViewsService.
*/
public boolean onRemoteAdapterConnected() {
if (mRemoteViewsAdapter != mAdapter) {
setAdapter(mRemoteViewsAdapter);
+ if (mDeferNotifyDataSetChanged) {
+ mRemoteViewsAdapter.notifyDataSetChanged();
+ mDeferNotifyDataSetChanged = false;
+ }
+
// Restore the previous position (see onRestoreInstanceState)
if (mRestoreWhichChild > -1) {
setDisplayedChild(mRestoreWhichChild, false);
diff --git a/core/java/android/widget/CheckBox.java b/core/java/android/widget/CheckBox.java
index b89c2a9..2788846 100644
--- a/core/java/android/widget/CheckBox.java
+++ b/core/java/android/widget/CheckBox.java
@@ -18,6 +18,9 @@ package android.widget;
import android.content.Context;
import android.util.AttributeSet;
+import android.view.accessibility.AccessibilityEvent;
+
+import com.android.internal.R;
/**
@@ -65,4 +68,14 @@ public class CheckBox extends CompoundButton {
public CheckBox(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
+
+ @Override
+ public void onPopulateAccessibilityEvent(AccessibilityEvent event) {
+ super.onPopulateAccessibilityEvent(event);
+ if (isChecked()) {
+ event.getText().add(mContext.getString(R.string.checkbox_checked));
+ } else {
+ event.getText().add(mContext.getString(R.string.checkbox_not_checked));
+ }
+ }
}
diff --git a/core/java/android/widget/CheckedTextView.java b/core/java/android/widget/CheckedTextView.java
index f3a6da7..7598e54 100644
--- a/core/java/android/widget/CheckedTextView.java
+++ b/core/java/android/widget/CheckedTextView.java
@@ -221,4 +221,14 @@ public class CheckedTextView extends TextView implements Checkable {
super.onInitializeAccessibilityEvent(event);
event.setChecked(mChecked);
}
+
+ @Override
+ public void onPopulateAccessibilityEvent(AccessibilityEvent event) {
+ super.onPopulateAccessibilityEvent(event);
+ if (isChecked()) {
+ event.getText().add(mContext.getString(R.string.radiobutton_selected));
+ } else {
+ event.getText().add(mContext.getString(R.string.radiobutton_not_selected));
+ }
+ }
}
diff --git a/core/java/android/widget/FrameLayout.java b/core/java/android/widget/FrameLayout.java
index 5eba1a0..0b0b812 100644
--- a/core/java/android/widget/FrameLayout.java
+++ b/core/java/android/widget/FrameLayout.java
@@ -34,12 +34,17 @@ import android.widget.RemoteViews.RemoteView;
/**
* FrameLayout is designed to block out an area on the screen to display
- * a single item. You can add multiple children to a FrameLayout and control their
- * position within the FrameLayout using {@link android.widget.FrameLayout.LayoutParams#gravity}.
- * Children are drawn in a stack, with the most recently added child on top.
- * The size of the frame layout is the size of its largest child (plus padding), visible
- * or not (if the FrameLayout's parent permits). Views that are GONE are used for sizing
- * only if {@link #setMeasureAllChildren(boolean) setMeasureAllChildren()}
+ * a single item. Generally, FrameLayout should be used to hold a single child view, because it can
+ * be difficult to organize child views in a way that's scalable to different screen sizes without
+ * the children overlapping each other. You can, however, add multiple children to a FrameLayout
+ * and control their position within the FrameLayout by assigning gravity to each child, using the
+ * <a href="FrameLayout.LayoutParams.html#attr_android:layout_gravity">{@code
+ * android:layout_gravity}</a> attribute.
+ * <p>Child views are drawn in a stack, with the most recently added child on top.
+ * The size of the FrameLayout is the size of its largest child (plus padding), visible
+ * or not (if the FrameLayout's parent permits). Views that are {@link android.view.View#GONE} are
+ * used for sizing
+ * only if {@link #setMeasureAllChildren(boolean) setConsiderGoneChildrenWhenMeasuring()}
* is set to true.
*
* @attr ref android.R.styleable#FrameLayout_foreground
diff --git a/core/java/android/widget/RadioButton.java b/core/java/android/widget/RadioButton.java
index ebbe1cd..9fa649f 100644
--- a/core/java/android/widget/RadioButton.java
+++ b/core/java/android/widget/RadioButton.java
@@ -18,6 +18,9 @@ package android.widget;
import android.content.Context;
import android.util.AttributeSet;
+import android.view.accessibility.AccessibilityEvent;
+
+import com.android.internal.R;
/**
@@ -72,4 +75,14 @@ public class RadioButton extends CompoundButton {
super.toggle();
}
}
+
+ @Override
+ public void onPopulateAccessibilityEvent(AccessibilityEvent event) {
+ super.onPopulateAccessibilityEvent(event);
+ if (isChecked()) {
+ event.getText().add(mContext.getString(R.string.radiobutton_selected));
+ } else {
+ event.getText().add(mContext.getString(R.string.radiobutton_not_selected));
+ }
+ }
}
diff --git a/core/java/android/widget/RemoteViewsAdapter.java b/core/java/android/widget/RemoteViewsAdapter.java
index 867ebb4..7b43032 100644
--- a/core/java/android/widget/RemoteViewsAdapter.java
+++ b/core/java/android/widget/RemoteViewsAdapter.java
@@ -92,6 +92,12 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback
public boolean onRemoteAdapterConnected();
public void onRemoteAdapterDisconnected();
+
+ /**
+ * This defers a notifyDataSetChanged on the pending RemoteViewsAdapter if it has not
+ * connected yet.
+ */
+ public void deferNotifyDataSetChanged();
}
/**
diff --git a/core/java/android/widget/SearchView.java b/core/java/android/widget/SearchView.java
index 55b73df..3a22bfb 100644
--- a/core/java/android/widget/SearchView.java
+++ b/core/java/android/widget/SearchView.java
@@ -118,6 +118,21 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
private SearchableInfo mSearchable;
private Bundle mAppSearchData;
+ /*
+ * SearchView can be set expanded before the IME is ready to be shown during
+ * initial UI setup. The show operation is asynchronous to account for this.
+ */
+ private Runnable mShowImeRunnable = new Runnable() {
+ public void run() {
+ InputMethodManager imm = (InputMethodManager)
+ getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
+
+ if (imm != null) {
+ imm.showSoftInputUnchecked(0, null);
+ }
+ }
+ };
+
// For voice searching
private final Intent mVoiceWebSearchIntent;
private final Intent mVoiceAppSearchIntent;
@@ -221,6 +236,7 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
mCloseButton.setOnClickListener(mOnClickListener);
mSubmitButton.setOnClickListener(mOnClickListener);
mVoiceButton.setOnClickListener(mOnClickListener);
+ mQueryTextView.setOnClickListener(mOnClickListener);
mQueryTextView.addTextChangedListener(mTextWatcher);
mQueryTextView.setOnEditorActionListener(mOnEditorActionListener);
@@ -319,7 +335,9 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
// If it is not iconified, then give the focus to the text field
if (!isIconified()) {
boolean result = mQueryTextView.requestFocus(direction, previouslyFocusedRect);
- if (result) updateViewsVisibility(false);
+ if (result) {
+ updateViewsVisibility(false);
+ }
return result;
} else {
return super.requestFocus(direction, previouslyFocusedRect);
@@ -330,9 +348,9 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
@Override
public void clearFocus() {
mClearingFocus = true;
+ setImeVisibility(false);
super.clearFocus();
mQueryTextView.clearFocus();
- setImeVisibility(false);
mClearingFocus = false;
}
@@ -647,16 +665,15 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
mSubmitArea.getBackground().setState(focused ? FOCUSED_STATE_SET : EMPTY_STATE_SET);
}
- private void setImeVisibility(boolean visible) {
- InputMethodManager imm = (InputMethodManager)
- getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
+ private void setImeVisibility(final boolean visible) {
+ if (visible) {
+ post(mShowImeRunnable);
+ } else {
+ removeCallbacks(mShowImeRunnable);
+ InputMethodManager imm = (InputMethodManager)
+ getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
- // We made sure the IME was displayed, so also make sure it is closed
- // when we go away.
- if (imm != null) {
- if (visible) {
- imm.showSoftInputUnchecked(0, null);
- } else {
+ if (imm != null) {
imm.hideSoftInputFromWindow(getWindowToken(), 0);
}
}
@@ -681,6 +698,8 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
onSubmitQuery();
} else if (v == mVoiceButton) {
onVoiceClicked();
+ } else if (v == mQueryTextView) {
+ forceSuggestionQuery();
}
}
};
@@ -958,7 +977,7 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
private void onSubmitQuery() {
CharSequence query = mQueryTextView.getText();
- if (!TextUtils.isEmpty(query)) {
+ if (query != null && TextUtils.getTrimmedLength(query) > 0) {
if (mOnQueryChangeListener == null
|| !mOnQueryChangeListener.onQueryTextSubmit(query.toString())) {
if (mSearchable != null) {
@@ -1029,6 +1048,9 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
void onTextFocusChanged() {
updateViewsVisibility(isIconified());
updateFocusedState(mQueryTextView.hasFocus());
+ if (mQueryTextView.hasFocus()) {
+ forceSuggestionQuery();
+ }
}
@Override
@@ -1041,8 +1063,9 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
*/
@Override
public void onActionViewCollapsed() {
+ clearFocus();
+ updateViewsVisibility(true);
mQueryTextView.setText("");
- setIconified(true);
mExpandedInActionView = false;
}
@@ -1376,6 +1399,11 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
}
}
+ private void forceSuggestionQuery() {
+ mQueryTextView.doBeforeTextChanged();
+ mQueryTextView.doAfterTextChanged();
+ }
+
static boolean isLandscapeMode(Context context) {
return context.getResources().getConfiguration().orientation
== Configuration.ORIENTATION_LANDSCAPE;
diff --git a/core/java/android/widget/Switch.java b/core/java/android/widget/Switch.java
index 0c80a11..57f73ac 100644
--- a/core/java/android/widget/Switch.java
+++ b/core/java/android/widget/Switch.java
@@ -364,8 +364,19 @@ public class Switch extends CompoundButton {
@Override
public void onPopulateAccessibilityEvent(AccessibilityEvent event) {
super.onPopulateAccessibilityEvent(event);
- Layout switchText = getTargetCheckedState() ? mOnLayout : mOffLayout;
- event.getText().add(switchText.getText());
+ if (isChecked()) {
+ CharSequence text = mOnLayout.getText();
+ if (TextUtils.isEmpty(text)) {
+ text = mContext.getString(R.string.switch_on);
+ }
+ event.getText().add(text);
+ } else {
+ CharSequence text = mOffLayout.getText();
+ if (TextUtils.isEmpty(text)) {
+ text = mContext.getString(R.string.switch_off);
+ }
+ event.getText().add(text);
+ }
}
private Layout makeLayout(CharSequence text) {
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index a7324b0..ab66676 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -143,6 +143,9 @@ import java.io.IOException;
import java.lang.ref.WeakReference;
import java.text.BreakIterator;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.HashMap;
/**
* Displays text to the user and optionally allows them to edit it. A TextView
@@ -326,10 +329,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
private int mTextSelectHandleLeftRes;
private int mTextSelectHandleRightRes;
private int mTextSelectHandleRes;
- private int mTextEditPasteWindowLayout, mTextEditSidePasteWindowLayout;
- private int mTextEditNoPasteWindowLayout, mTextEditSideNoPasteWindowLayout;
- private int mTextEditSuggestionsWindowLayout;
private int mTextEditSuggestionItemLayout;
private SuggestionsPopupWindow mSuggestionsPopupWindow;
private SuggestionRangeSpan mSuggestionRangeSpan;
@@ -814,26 +814,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
mTextSelectHandleRes = a.getResourceId(attr, 0);
break;
- case com.android.internal.R.styleable.TextView_textEditPasteWindowLayout:
- mTextEditPasteWindowLayout = a.getResourceId(attr, 0);
- break;
-
- case com.android.internal.R.styleable.TextView_textEditNoPasteWindowLayout:
- mTextEditNoPasteWindowLayout = a.getResourceId(attr, 0);
- break;
-
- case com.android.internal.R.styleable.TextView_textEditSidePasteWindowLayout:
- mTextEditSidePasteWindowLayout = a.getResourceId(attr, 0);
- break;
-
- case com.android.internal.R.styleable.TextView_textEditSideNoPasteWindowLayout:
- mTextEditSideNoPasteWindowLayout = a.getResourceId(attr, 0);
- break;
-
- case com.android.internal.R.styleable.TextView_textEditSuggestionsWindowLayout:
- mTextEditSuggestionsWindowLayout = a.getResourceId(attr, 0);
- break;
-
case com.android.internal.R.styleable.TextView_textEditSuggestionItemLayout:
mTextEditSuggestionItemLayout = a.getResourceId(attr, 0);
break;
@@ -8430,6 +8410,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
if (TextUtils.isEmpty(text)) {
text = getHint();
}
+ if (TextUtils.isEmpty(text)) {
+ text = getContentDescription();
+ }
if (!TextUtils.isEmpty(text)) {
event.getText().add(text);
}
@@ -8719,7 +8702,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
final int offset = getOffsetForPosition(mLastDownPositionX, mLastDownPositionY);
stopSelectionActionMode();
Selection.setSelection((Spannable) mText, offset);
- getInsertionController().showWithPaste();
+ getInsertionController().showImmediately();
handled = true;
}
@@ -8780,20 +8763,49 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
private class SuggestionsPopupWindow implements OnClickListener {
private static final int MAX_NUMBER_SUGGESTIONS = 5;
private static final int NO_SUGGESTIONS = -1;
- private final PopupWindow mContainer;
- private ViewGroup mSuggestionViewGroup;
+ private final PopupWindow mPopupWindow;
+ private LinearLayout mSuggestionsContainer;
private WordIterator mSuggestionWordIterator;
private TextAppearanceSpan[] mHighlightSpans = new TextAppearanceSpan[0];
public SuggestionsPopupWindow() {
- mContainer = new PopupWindow(TextView.this.mContext, null,
+ mPopupWindow = new PopupWindow(TextView.this.mContext, null,
com.android.internal.R.attr.textSuggestionsWindowStyle);
- mContainer.setSplitTouchEnabled(true);
- mContainer.setClippingEnabled(false);
- mContainer.setWindowLayoutType(WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL);
+ mPopupWindow.setWindowLayoutType(WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL);
+ mPopupWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED);
+ mPopupWindow.setOutsideTouchable(true);
+ mPopupWindow.setClippingEnabled(true);
+
+ mPopupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
+ mPopupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
+
+ mSuggestionsContainer = new LinearLayout(TextView.this.mContext);
+ mSuggestionsContainer.setOrientation(LinearLayout.VERTICAL);
+
+ LayoutInflater inflater = (LayoutInflater) TextView.this.mContext.
+ getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+
+ if (inflater == null) {
+ throw new IllegalArgumentException(
+ "Unable to create inflater for TextEdit suggestions");
+ }
+
+ // Inflate the suggestion items once and for all.
+ for (int i = 0; i < MAX_NUMBER_SUGGESTIONS; i++) {
+ View childView = inflater.inflate(mTextEditSuggestionItemLayout,
+ mSuggestionsContainer, false);
- mContainer.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
- mContainer.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
+ if (! (childView instanceof TextView)) {
+ throw new IllegalArgumentException(
+ "Inflated TextEdit suggestion item is not a TextView: " + childView);
+ }
+
+ childView.setTag(new SuggestionInfo());
+ mSuggestionsContainer.addView(childView);
+ childView.setOnClickListener(this);
+ }
+
+ mPopupWindow.setContentView(mSuggestionsContainer);
}
private class SuggestionInfo {
@@ -8803,53 +8815,43 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
int suggestionIndex; // the index of the suggestion inside suggestionSpan
}
- private void initSuggestionViewGroup() {
- if (mSuggestionViewGroup == null) {
- LayoutInflater inflater = (LayoutInflater) TextView.this.mContext.
- getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-
- if (inflater == null) {
- throw new IllegalArgumentException(
- "Unable to create TextEdit suggestion window inflater");
- }
-
- View view = inflater.inflate(mTextEditSuggestionsWindowLayout, null);
-
- if (! (view instanceof ViewGroup)) {
- throw new IllegalArgumentException(
- "Inflated TextEdit suggestion window is not a ViewGroup: " + view);
- }
-
- mSuggestionViewGroup = (ViewGroup) view;
+ /**
+ * Returns the suggestion spans that cover the current cursor position. The suggestion
+ * spans are sorted according to the length of text that they are attached to.
+ */
+ private SuggestionSpan[] getSuggestionSpans() {
+ int pos = TextView.this.getSelectionStart();
+ Spannable spannable = (Spannable) TextView.this.mText;
+ SuggestionSpan[] suggestionSpans = spannable.getSpans(pos, pos, SuggestionSpan.class);
- // Inflate the suggestion items once and for all.
- for (int i = 0; i < MAX_NUMBER_SUGGESTIONS; i++) {
- View childView = inflater.inflate(mTextEditSuggestionItemLayout,
- mSuggestionViewGroup, false);
+ // Cache the span length for performance reason.
+ final HashMap<SuggestionSpan, Integer> spanLengthMap =
+ new HashMap<SuggestionSpan, Integer>();
- if (! (childView instanceof TextView)) {
- throw new IllegalArgumentException(
- "Inflated TextEdit suggestion item is not a TextView: " + childView);
- }
+ for (SuggestionSpan suggestionSpan : suggestionSpans) {
+ int start = spannable.getSpanStart(suggestionSpan);
+ int end = spannable.getSpanEnd(suggestionSpan);
+ spanLengthMap.put(suggestionSpan, end - start);
+ }
- childView.setTag(new SuggestionInfo());
- mSuggestionViewGroup.addView(childView);
- childView.setOnClickListener(this);
+ // The suggestions are sorted according to the lenght of the text that they cover
+ // (shorter first)
+ Arrays.sort(suggestionSpans, new Comparator<SuggestionSpan>() {
+ public int compare(SuggestionSpan span1, SuggestionSpan span2) {
+ return spanLengthMap.get(span1) - spanLengthMap.get(span2);
}
+ });
- mContainer.setContentView(mSuggestionViewGroup);
- }
+ return suggestionSpans;
}
public void show() {
if (!(mText instanceof Editable)) return;
- final int pos = TextView.this.getSelectionStart();
- Spannable spannable = (Spannable)TextView.this.mText;
- SuggestionSpan[] suggestionSpans = spannable.getSpans(pos, pos, SuggestionSpan.class);
- final int nbSpans = suggestionSpans.length;
+ Spannable spannable = (Spannable) TextView.this.mText;
+ SuggestionSpan[] suggestionSpans = getSuggestionSpans();
- initSuggestionViewGroup();
+ final int nbSpans = suggestionSpans.length;
int totalNbSuggestions = 0;
int spanUnionStart = mText.length();
@@ -8865,7 +8867,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
String[] suggestions = suggestionSpan.getSuggestions();
int nbSuggestions = suggestions.length;
for (int suggestionIndex = 0; suggestionIndex < nbSuggestions; suggestionIndex++) {
- TextView textView = (TextView) mSuggestionViewGroup.getChildAt(
+ TextView textView = (TextView) mSuggestionsContainer.getChildAt(
totalNbSuggestions);
textView.setText(suggestions[suggestionIndex]);
SuggestionInfo suggestionInfo = (SuggestionInfo) textView.getTag();
@@ -8885,7 +8887,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
if (totalNbSuggestions == 0) {
// TODO Replace by final text, use a dedicated layout, add a fade out timer...
- TextView textView = (TextView) mSuggestionViewGroup.getChildAt(0);
+ TextView textView = (TextView) mSuggestionsContainer.getChildAt(0);
textView.setText("No suggestions available");
SuggestionInfo suggestionInfo = (SuggestionInfo) textView.getTag();
suggestionInfo.spanStart = NO_SUGGESTIONS;
@@ -8896,22 +8898,22 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
for (int i = 0; i < totalNbSuggestions; i++) {
- final TextView textView = (TextView) mSuggestionViewGroup.getChildAt(i);
+ final TextView textView = (TextView) mSuggestionsContainer.getChildAt(i);
highlightTextDifferences(textView, spanUnionStart, spanUnionEnd);
}
}
for (int i = 0; i < totalNbSuggestions; i++) {
- mSuggestionViewGroup.getChildAt(i).setVisibility(VISIBLE);
+ mSuggestionsContainer.getChildAt(i).setVisibility(VISIBLE);
}
for (int i = totalNbSuggestions; i < MAX_NUMBER_SUGGESTIONS; i++) {
- mSuggestionViewGroup.getChildAt(i).setVisibility(GONE);
+ mSuggestionsContainer.getChildAt(i).setVisibility(GONE);
}
final DisplayMetrics displayMetrics = mContext.getResources().getDisplayMetrics();
final int screenWidth = displayMetrics.widthPixels;
final int screenHeight = displayMetrics.heightPixels;
- mSuggestionViewGroup.measure(
+ mSuggestionsContainer.measure(
View.MeasureSpec.makeMeasureSpec(screenWidth, View.MeasureSpec.AT_MOST),
View.MeasureSpec.makeMeasureSpec(screenHeight, View.MeasureSpec.AT_MOST));
@@ -9071,11 +9073,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
if ((mText instanceof Editable) && mSuggestionRangeSpan != null) {
((Editable) mText).removeSpan(mSuggestionRangeSpan);
}
- mContainer.dismiss();
+ mPopupWindow.dismiss();
}
public boolean isShowing() {
- return mContainer.isShowing();
+ return mPopupWindow.isShowing();
}
@Override
@@ -9139,7 +9141,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
void positionAtCursor() {
- View contentView = mContainer.getContentView();
+ View contentView = mPopupWindow.getContentView();
int width = contentView.getMeasuredWidth();
int height = contentView.getMeasuredHeight();
final int offset = TextView.this.getSelectionStart();
@@ -9173,7 +9175,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
coords[0] = Math.min(displayMetrics.widthPixels - width, coords[0]);
coords[0] = Math.max(0, coords[0]);
- mContainer.showAtLocation(TextView.this, Gravity.NO_GRAVITY, coords[0], coords[1]);
+ mPopupWindow.showAtLocation(TextView.this, Gravity.NO_GRAVITY, coords[0], coords[1]);
}
}
@@ -9448,83 +9450,84 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
}
- private class PastePopupWindow implements OnClickListener {
- private final PopupWindow mContainer;
- private final View[] mPasteViews = new View[4];
- private final int[] mPasteViewLayouts = new int[] {
- mTextEditPasteWindowLayout, mTextEditNoPasteWindowLayout,
- mTextEditSidePasteWindowLayout, mTextEditSideNoPasteWindowLayout };
-
- public PastePopupWindow() {
- mContainer = new PopupWindow(TextView.this.mContext, null,
- com.android.internal.R.attr.textSelectHandleWindowStyle);
- mContainer.setSplitTouchEnabled(true);
- mContainer.setClippingEnabled(false);
- mContainer.setWindowLayoutType(WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL);
+ private class ActionPopupWindow implements OnClickListener {
+ private static final int TEXT_EDIT_ACTION_POPUP_TEXT =
+ com.android.internal.R.layout.text_edit_action_popup_text;
+ private final PopupWindow mPopupWindow;
+ private TextView mPasteTextView;
+ private TextView mReplaceTextView;
+ private LinearLayout mContentView;
+ // Whether or not the Paste action should be available when the action popup is displayed
+ private boolean mWithPaste;
- mContainer.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
- mContainer.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
- }
+ public ActionPopupWindow() {
+ mPopupWindow = new PopupWindow(TextView.this.mContext, null,
+ com.android.internal.R.attr.textSelectHandleWindowStyle);
+ mPopupWindow.setClippingEnabled(true);
+ mPopupWindow.setWindowLayoutType(WindowManager.LayoutParams.TYPE_APPLICATION_PANEL);
- private int viewIndex(boolean onTop) {
- return (onTop ? 0 : 1<<1) + (canPaste() ? 0 : 1<<0);
- }
+ mPopupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
+ mPopupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
- private void updateContent(boolean onTop) {
- final int viewIndex = viewIndex(onTop);
- View view = mPasteViews[viewIndex];
+ mContentView = new LinearLayout(TextView.this.getContext());
+ LayoutParams wrapContent = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT);
+ mContentView.setLayoutParams(wrapContent);
+ mContentView.setOrientation(LinearLayout.HORIZONTAL);
+ mContentView.setBackgroundResource(
+ com.android.internal.R.drawable.text_edit_side_paste_window);
- if (view == null) {
- final int layout = mPasteViewLayouts[viewIndex];
- LayoutInflater inflater = (LayoutInflater)TextView.this.mContext.
+ LayoutInflater inflater = (LayoutInflater)TextView.this.mContext.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- if (inflater != null) {
- view = inflater.inflate(layout, null);
- }
-
- if (view == null) {
- throw new IllegalArgumentException("Unable to inflate TextEdit paste window");
- }
- final int size = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
- view.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
- ViewGroup.LayoutParams.WRAP_CONTENT));
- view.measure(size, size);
+ mPasteTextView = (TextView) inflater.inflate(TEXT_EDIT_ACTION_POPUP_TEXT, null);
+ mPasteTextView.setLayoutParams(wrapContent);
+ mContentView.addView(mPasteTextView);
+ mPasteTextView.setText(com.android.internal.R.string.paste);
+ mPasteTextView.setOnClickListener(this);
- view.setOnClickListener(this);
-
- mPasteViews[viewIndex] = view;
- }
+ mReplaceTextView = (TextView) inflater.inflate(TEXT_EDIT_ACTION_POPUP_TEXT, null);
+ mReplaceTextView.setLayoutParams(wrapContent);
+ mContentView.addView(mReplaceTextView);
+ mReplaceTextView.setText(com.android.internal.R.string.replace);
+ mReplaceTextView.setOnClickListener(this);
- mContainer.setContentView(view);
+ mPopupWindow.setContentView(mContentView);
}
public void show() {
- updateContent(true);
+ mPasteTextView.setVisibility(mWithPaste && canPaste() ? View.VISIBLE : View.GONE);
+
+ final int size = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
+ mContentView.measure(size, size);
+
positionAtCursor();
}
public void hide() {
- mContainer.dismiss();
+ mPopupWindow.dismiss();
}
public boolean isShowing() {
- return mContainer.isShowing();
+ return mPopupWindow.isShowing();
}
@Override
- public void onClick(View v) {
- if (canPaste()) {
+ public void onClick(View view) {
+ if (view == mPasteTextView && canPaste()) {
onTextContextMenuItem(ID_PASTE);
+ hide();
+ } else if (view == mReplaceTextView) {
+ showSuggestions();
}
- hide();
}
void positionAtCursor() {
- View contentView = mContainer.getContentView();
- int width = contentView.getMeasuredWidth();
- int height = contentView.getMeasuredHeight();
- final int offset = TextView.this.getSelectionStart();
+ int width = mContentView.getMeasuredWidth();
+ int height = mContentView.getMeasuredHeight();
+ final int selectionStart = TextView.this.getSelectionStart();
+ final int selectionEnd = TextView.this.getSelectionEnd();
+ final int offset = (selectionStart + selectionEnd) / 2;
final int line = mLayout.getLineForOffset(offset);
final int lineTop = mLayout.getLineTop(line);
float primaryHorizontal = mLayout.getPrimaryHorizontal(offset);
@@ -9543,37 +9546,28 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
coords[0] += bounds.left;
coords[1] += bounds.top;
- final int screenWidth = mContext.getResources().getDisplayMetrics().widthPixels;
+ // Vertical clipping, move under edited line and to the side of insertion cursor
if (coords[1] < 0) {
- updateContent(false);
- // Update dimensions from new view
- contentView = mContainer.getContentView();
- width = contentView.getMeasuredWidth();
- height = contentView.getMeasuredHeight();
-
- // Vertical clipping, move under edited line and to the side of insertion cursor
- // TODO bottom clipping in case there is no system bar
coords[1] += height;
final int lineBottom = mLayout.getLineBottom(line);
final int lineHeight = lineBottom - lineTop;
coords[1] += lineHeight;
- // Move to right hand side of insertion cursor by default. TODO RTL text.
+ // Assumes insertion and selection handles share the same height
final Drawable handle = mContext.getResources().getDrawable(mTextSelectHandleRes);
- final int handleHalfWidth = handle.getIntrinsicWidth() / 2;
-
- if (primaryHorizontal + handleHalfWidth + width < screenWidth) {
- coords[0] += handleHalfWidth + width / 2;
- } else {
- coords[0] -= handleHalfWidth + width / 2;
- }
- } else {
- // Horizontal clipping
- coords[0] = Math.max(0, coords[0]);
- coords[0] = Math.min(screenWidth - width, coords[0]);
+ coords[1] += handle.getIntrinsicHeight();
}
- mContainer.showAtLocation(TextView.this, Gravity.NO_GRAVITY, coords[0], coords[1]);
+ // Horizontal clipping
+ coords[0] = Math.max(0, coords[0]);
+ final int screenWidth = mContext.getResources().getDisplayMetrics().widthPixels;
+ coords[0] = Math.min(screenWidth - width, coords[0]);
+
+ mPopupWindow.showAtLocation(TextView.this, Gravity.NO_GRAVITY, coords[0], coords[1]);
+ }
+
+ public void setShowWithPaste(boolean withPaste) {
+ mWithPaste = withPaste;
}
}
@@ -9598,6 +9592,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
private boolean mIsActive = false;
// Used to detect that setFrame was called
private boolean mNeedsUpdate = true;
+ // Transient action popup window for Paste and Replace actions
+ protected ActionPopupWindow mActionPopupWindow;
+ // Used to delay the appearance of the action popup window
+ private Runnable mActionPopupShower;
public HandleView() {
super(TextView.this.mContext);
@@ -9676,31 +9674,58 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
public void show() {
if (isShowing()) {
- mContainer.update(mContainerPositionX, mContainerPositionY,
- mRight - mLeft, mBottom - mTop);
+ mContainer.update(mContainerPositionX, mContainerPositionY, -1, -1);
} else {
mContainer.showAtLocation(TextView.this, 0,
mContainerPositionX, mContainerPositionY);
- mIsActive = true;
-
- ViewTreeObserver vto = TextView.this.getViewTreeObserver();
- vto.addOnPreDrawListener(this);
+ if (!mIsActive) {
+ ViewTreeObserver vto = TextView.this.getViewTreeObserver();
+ vto.addOnPreDrawListener(this);
+ mIsActive = true;
+ }
}
+ hideActionPopupWindow();
}
protected void dismiss() {
mIsDragging = false;
mContainer.dismiss();
+ onDetached();
}
public void hide() {
dismiss();
- mIsActive = false;
-
ViewTreeObserver vto = TextView.this.getViewTreeObserver();
vto.removeOnPreDrawListener(this);
+ mIsActive = false;
+ }
+
+ void showActionPopupWindow(int delay, boolean withPaste) {
+ if (mActionPopupWindow == null) {
+ mActionPopupWindow = new ActionPopupWindow();
+ }
+ if (mActionPopupShower == null) {
+ mActionPopupShower = new Runnable() {
+ public void run() {
+ mActionPopupWindow.show();
+ }
+ };
+ } else {
+ TextView.this.removeCallbacks(mActionPopupShower);
+ }
+ mActionPopupWindow.setShowWithPaste(withPaste);
+ TextView.this.postDelayed(mActionPopupShower, delay);
+ }
+
+ protected void hideActionPopupWindow() {
+ if (mActionPopupShower != null) {
+ TextView.this.removeCallbacks(mActionPopupShower);
+ }
+ if (mActionPopupWindow != null) {
+ mActionPopupWindow.hide();
+ }
}
public boolean isShowing() {
@@ -9801,8 +9826,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
if (isPositionVisible()) {
- mContainer.update(mContainerPositionX, mContainerPositionY,
- mRight - mLeft, mBottom - mTop);
+ mContainer.update(mContainerPositionX, mContainerPositionY, -1, -1);
if (mIsActive && !isShowing()) {
show();
@@ -9880,57 +9904,39 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
void onHandleMoved() {
- // Does nothing by default
+ hideActionPopupWindow();
}
public void onDetached() {
- // Should be overriden to clean possible Runnable
+ hideActionPopupWindow();
}
}
private class InsertionHandleView extends HandleView {
- private static final int DELAY_BEFORE_FADE_OUT = 4000;
+ private static final int DELAY_BEFORE_HANDLE_FADES_OUT = 4000;
private static final int RECENT_CUT_COPY_DURATION = 15 * 1000; // seconds
- // Used to detect taps on the insertion handle, which will affect the PastePopupWindow
+ // Used to detect taps on the insertion handle, which will affect the ActionPopupWindow
private float mDownPositionX, mDownPositionY;
- private PastePopupWindow mPastePopupWindow;
private Runnable mHider;
- private Runnable mPastePopupShower;
@Override
public void show() {
super.show();
- hideDelayed();
- hidePastePopupWindow();
+ hideAfterDelay();
}
- public void show(int delayBeforePaste) {
+ public void show(int delayBeforeShowActionPopup) {
show();
final long durationSinceCutOrCopy = SystemClock.uptimeMillis() - sLastCutOrCopyTime;
if (durationSinceCutOrCopy < RECENT_CUT_COPY_DURATION) {
- delayBeforePaste = 0;
- }
- if (delayBeforePaste == 0 || canPaste()) {
- if (mPastePopupShower == null) {
- mPastePopupShower = new Runnable() {
- public void run() {
- showPastePopupWindow();
- }
- };
- }
- TextView.this.postDelayed(mPastePopupShower, delayBeforePaste);
+ delayBeforeShowActionPopup = 0;
}
+ showActionPopupWindow(delayBeforeShowActionPopup, true);
}
- @Override
- protected void dismiss() {
- super.dismiss();
- onDetached();
- }
-
- private void hideDelayed() {
+ private void hideAfterDelay() {
removeHiderCallback();
if (mHider == null) {
mHider = new Runnable() {
@@ -9939,7 +9945,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
};
}
- TextView.this.postDelayed(mHider, DELAY_BEFORE_FADE_OUT);
+ TextView.this.postDelayed(mHider, DELAY_BEFORE_HANDLE_FADES_OUT);
}
private void removeHiderCallback() {
@@ -9973,18 +9979,18 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
final float deltaY = mDownPositionY - ev.getRawY();
final float distanceSquared = deltaX * deltaX + deltaY * deltaY;
if (distanceSquared < mSquaredTouchSlopDistance) {
- if (mPastePopupWindow != null && mPastePopupWindow.isShowing()) {
- // Tapping on the handle dismisses the displayed paste view,
- mPastePopupWindow.hide();
+ if (mActionPopupWindow != null && mActionPopupWindow.isShowing()) {
+ // Tapping on the handle dismisses the displayed action popup
+ mActionPopupWindow.hide();
} else {
show(0);
}
}
- hideDelayed();
+ hideAfterDelay();
break;
case MotionEvent.ACTION_CANCEL:
- hideDelayed();
+ hideAfterDelay();
break;
default:
@@ -10009,32 +10015,16 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
updateOffset(getOffsetForPosition(x, y));
}
- void showPastePopupWindow() {
- if (mPastePopupWindow == null) {
- mPastePopupWindow = new PastePopupWindow();
- }
- mPastePopupWindow.show();
- }
-
@Override
void onHandleMoved() {
+ super.onHandleMoved();
removeHiderCallback();
- hidePastePopupWindow();
- }
-
- void hidePastePopupWindow() {
- if (mPastePopupShower != null) {
- TextView.this.removeCallbacks(mPastePopupShower);
- }
- if (mPastePopupWindow != null) {
- mPastePopupWindow.hide();
- }
}
@Override
public void onDetached() {
+ super.onDetached();
removeHiderCallback();
- hidePastePopupWindow();
}
}
@@ -10073,6 +10063,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
Selection.setSelection((Spannable) mText, offset, selectionEnd);
}
+
+ public ActionPopupWindow getActionPopupWindow() {
+ return mActionPopupWindow;
+ }
}
private class SelectionEndHandleView extends HandleView {
@@ -10110,6 +10104,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
Selection.setSelection((Spannable) mText, selectionStart, offset);
}
+
+ public void setActionPopupWindow(ActionPopupWindow actionPopupWindow) {
+ mActionPopupWindow = actionPopupWindow;
+ }
}
/**
@@ -10139,16 +10137,16 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
private class InsertionPointCursorController implements CursorController {
- private static final int DELAY_BEFORE_PASTE = 2000;
+ private static final int DELAY_BEFORE_PASTE_ACTION = 1600;
private InsertionHandleView mHandle;
public void show() {
- ((InsertionHandleView) getHandle()).show(DELAY_BEFORE_PASTE);
+ getHandle().show(DELAY_BEFORE_PASTE_ACTION);
}
- public void showWithPaste() {
- ((InsertionHandleView) getHandle()).show(0);
+ public void showImmediately() {
+ getHandle().show(0);
}
public void hide() {
@@ -10163,7 +10161,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
}
- private HandleView getHandle() {
+ private InsertionHandleView getHandle() {
if (mHandle == null) {
mHandle = new InsertionHandleView();
}
@@ -10180,6 +10178,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
private class SelectionModifierCursorController implements CursorController {
+ private static final int DELAY_BEFORE_REPLACE_ACTION = 1200;
// The cursor controller handles, lazily created when shown.
private SelectionStartHandleView mStartHandle;
private SelectionEndHandleView mEndHandle;
@@ -10206,6 +10205,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
mStartHandle.show();
mEndHandle.show();
+ // Make sure both left and right handles share the same ActionPopupWindow (so that
+ // moving any of the handles hides the action popup).
+ mStartHandle.showActionPopupWindow(DELAY_BEFORE_REPLACE_ACTION, false);
+ mEndHandle.setActionPopupWindow(mStartHandle.getActionPopupWindow());
+
hideInsertionPointCursorController();
hideSuggestions();
}
@@ -10234,7 +10238,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
final float deltaY = y - mPreviousTapPositionY;
final float distanceSquared = deltaX * deltaX + deltaY * deltaY;
if (distanceSquared < mSquaredTouchSlopDistance) {
- showSuggestions();
+ startSelectionActionMode();
mDiscardNextActionUp = true;
}
}
diff --git a/core/java/android/widget/ToggleButton.java b/core/java/android/widget/ToggleButton.java
index 3b680e8..ba9de24 100644
--- a/core/java/android/widget/ToggleButton.java
+++ b/core/java/android/widget/ToggleButton.java
@@ -22,6 +22,9 @@ import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.util.AttributeSet;
+import android.view.accessibility.AccessibilityEvent;
+
+import com.android.internal.R;
/**
* Displays checked/unchecked states as a button
@@ -146,5 +149,14 @@ public class ToggleButton extends CompoundButton {
mIndicatorDrawable.setAlpha(isEnabled() ? NO_ALPHA : (int) (NO_ALPHA * mDisabledAlpha));
}
}
-
+
+ @Override
+ public void onPopulateAccessibilityEvent(AccessibilityEvent event) {
+ super.onPopulateAccessibilityEvent(event);
+ if (isChecked()) {
+ event.getText().add(mContext.getString(R.string.togglebutton_pressed));
+ } else {
+ event.getText().add(mContext.getString(R.string.togglebutton_not_pressed));
+ }
+ }
}
diff --git a/core/java/com/android/internal/app/ActionBarImpl.java b/core/java/com/android/internal/app/ActionBarImpl.java
index 95f1f98..bc87153 100644
--- a/core/java/com/android/internal/app/ActionBarImpl.java
+++ b/core/java/com/android/internal/app/ActionBarImpl.java
@@ -35,10 +35,13 @@ import android.app.Dialog;
import android.app.FragmentTransaction;
import android.content.Context;
import android.content.res.Configuration;
+import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Handler;
+import android.util.TypedValue;
import android.view.ActionMode;
+import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -61,6 +64,7 @@ public class ActionBarImpl extends ActionBar {
private static final String TAG = "ActionBarImpl";
private Context mContext;
+ private Context mThemedContext;
private Activity mActivity;
private Dialog mDialog;
@@ -188,8 +192,7 @@ public class ActionBarImpl extends ActionBar {
mContentHeight = mActionView.getContentHeight();
if (mTabScrollView != null) {
- mTabScrollView.getLayoutParams().height = mContentHeight;
- mTabScrollView.requestLayout();
+ mTabScrollView.setContentHeight(mContentHeight);
}
}
@@ -605,6 +608,23 @@ public class ActionBarImpl extends ActionBar {
}
}
+ public Context getThemedContext() {
+ if (mThemedContext == null) {
+ TypedValue outValue = new TypedValue();
+ Resources.Theme currentTheme = mContext.getTheme();
+ currentTheme.resolveAttribute(com.android.internal.R.attr.actionBarWidgetTheme,
+ outValue, true);
+ final int targetThemeRes = outValue.resourceId;
+
+ if (targetThemeRes != 0 && mContext.getThemeResId() != targetThemeRes) {
+ mThemedContext = new ContextThemeWrapper(mContext, targetThemeRes);
+ } else {
+ mThemedContext = mContext;
+ }
+ }
+ return mThemedContext;
+ }
+
/**
* @hide
*/
diff --git a/core/java/com/android/internal/content/NativeLibraryHelper.java b/core/java/com/android/internal/content/NativeLibraryHelper.java
index 9ae7def..1531946 100644
--- a/core/java/com/android/internal/content/NativeLibraryHelper.java
+++ b/core/java/com/android/internal/content/NativeLibraryHelper.java
@@ -1,22 +1,9 @@
package com.android.internal.content;
-import android.content.pm.PackageManager;
import android.os.Build;
-import android.os.FileUtils;
-import android.os.SystemProperties;
-import android.util.Log;
-import android.util.Pair;
import android.util.Slog;
import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Enumeration;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipException;
-import java.util.zip.ZipFile;
/**
* Native libraries helper.
@@ -28,270 +15,22 @@ public class NativeLibraryHelper {
private static final boolean DEBUG_NATIVE = false;
- /*
- * The following constants are returned by listPackageSharedLibsForAbiLI
- * to indicate if native shared libraries were found in the package.
- * Values are:
- * PACKAGE_INSTALL_NATIVE_FOUND_LIBRARIES => native libraries found and installed
- * PACKAGE_INSTALL_NATIVE_NO_LIBRARIES => no native libraries in package
- * PACKAGE_INSTALL_NATIVE_ABI_MISMATCH => native libraries for another ABI found
- * in package (and not installed)
- *
- */
- private static final int PACKAGE_INSTALL_NATIVE_FOUND_LIBRARIES = 0;
- private static final int PACKAGE_INSTALL_NATIVE_NO_LIBRARIES = 1;
- private static final int PACKAGE_INSTALL_NATIVE_ABI_MISMATCH = 2;
+ private static native long nativeSumNativeBinaries(String file, String cpuAbi, String cpuAbi2);
- // Directory in the APK that holds all the native shared libraries.
- private static final String APK_LIB = "lib/";
- private static final int APK_LIB_LENGTH = APK_LIB.length();
-
- // Prefix that native shared libraries must have.
- private static final String LIB_PREFIX = "lib";
- private static final int LIB_PREFIX_LENGTH = LIB_PREFIX.length();
-
- // Suffix that the native shared libraries must have.
- private static final String LIB_SUFFIX = ".so";
- private static final int LIB_SUFFIX_LENGTH = LIB_SUFFIX.length();
-
- // Name of the GDB binary.
- private static final String GDBSERVER = "gdbserver";
-
- // the minimum length of a valid native shared library of the form
- // lib/<something>/lib<name>.so.
- private static final int MIN_ENTRY_LENGTH = APK_LIB_LENGTH + 2 + LIB_PREFIX_LENGTH + 1
- + LIB_SUFFIX_LENGTH;
-
- /*
- * Find all files of the form lib/<cpuAbi>/lib<name>.so in the .apk
- * and add them to a list to be installed later.
- *
- * NOTE: this method may throw an IOException if the library cannot
- * be copied to its final destination, e.g. if there isn't enough
- * room left on the data partition, or a ZipException if the package
- * file is malformed.
- */
- private static int listPackageSharedLibsForAbiLI(ZipFile zipFile,
- String cpuAbi, List<Pair<ZipEntry, String>> libEntries) throws IOException,
- ZipException {
- final int cpuAbiLen = cpuAbi.length();
- boolean hasNativeLibraries = false;
- boolean installedNativeLibraries = false;
-
- if (DEBUG_NATIVE) {
- Slog.d(TAG, "Checking " + zipFile.getName() + " for shared libraries of CPU ABI type "
- + cpuAbi);
- }
-
- Enumeration<? extends ZipEntry> entries = zipFile.entries();
-
- while (entries.hasMoreElements()) {
- ZipEntry entry = entries.nextElement();
-
- // skip directories
- if (entry.isDirectory()) {
- continue;
- }
- String entryName = entry.getName();
-
- /*
- * Check that the entry looks like lib/<something>/lib<name>.so
- * here, but don't check the ABI just yet.
- *
- * - must be sufficiently long
- * - must end with LIB_SUFFIX, i.e. ".so"
- * - must start with APK_LIB, i.e. "lib/"
- */
- if (entryName.length() < MIN_ENTRY_LENGTH || !entryName.endsWith(LIB_SUFFIX)
- || !entryName.startsWith(APK_LIB)) {
- continue;
- }
-
- // file name must start with LIB_PREFIX, i.e. "lib"
- int lastSlash = entryName.lastIndexOf('/');
-
- if (lastSlash < 0
- || !entryName.regionMatches(lastSlash + 1, LIB_PREFIX, 0, LIB_PREFIX_LENGTH)) {
- continue;
- }
-
- hasNativeLibraries = true;
-
- // check the cpuAbi now, between lib/ and /lib<name>.so
- if (lastSlash != APK_LIB_LENGTH + cpuAbiLen
- || !entryName.regionMatches(APK_LIB_LENGTH, cpuAbi, 0, cpuAbiLen))
- continue;
-
- /*
- * Extract the library file name, ensure it doesn't contain
- * weird characters. we're guaranteed here that it doesn't contain
- * a directory separator though.
- */
- String libFileName = entryName.substring(lastSlash+1);
- if (!FileUtils.isFilenameSafe(new File(libFileName))) {
- continue;
- }
-
- installedNativeLibraries = true;
-
- if (DEBUG_NATIVE) {
- Log.d(TAG, "Caching shared lib " + entry.getName());
- }
-
- libEntries.add(Pair.create(entry, libFileName));
- }
- if (!hasNativeLibraries)
- return PACKAGE_INSTALL_NATIVE_NO_LIBRARIES;
-
- if (!installedNativeLibraries)
- return PACKAGE_INSTALL_NATIVE_ABI_MISMATCH;
-
- return PACKAGE_INSTALL_NATIVE_FOUND_LIBRARIES;
+ public static long sumNativeBinariesLI(File apkFile) {
+ final String cpuAbi = Build.CPU_ABI;
+ final String cpuAbi2 = Build.CPU_ABI2;
+ return nativeSumNativeBinaries(apkFile.getPath(), cpuAbi, cpuAbi2);
}
- /*
- * Find the gdbserver executable program in a package at
- * lib/<cpuAbi>/gdbserver and add it to the list of binaries
- * to be copied out later.
- *
- * Returns PACKAGE_INSTALL_NATIVE_FOUND_LIBRARIES on success,
- * or PACKAGE_INSTALL_NATIVE_NO_LIBRARIES otherwise.
- */
- private static int listPackageGdbServerLI(ZipFile zipFile, String cpuAbi,
- List<Pair<ZipEntry, String>> nativeFiles) throws IOException, ZipException {
- final String apkGdbServerPath = "lib/" + cpuAbi + "/" + GDBSERVER;
-
- Enumeration<? extends ZipEntry> entries = zipFile.entries();
-
- while (entries.hasMoreElements()) {
- ZipEntry entry = entries.nextElement();
- // skip directories
- if (entry.isDirectory()) {
- continue;
- }
- String entryName = entry.getName();
-
- if (!entryName.equals(apkGdbServerPath)) {
- continue;
- }
-
- if (false) {
- Log.d(TAG, "Found gdbserver: " + entry.getName());
- }
+ private native static int nativeCopyNativeBinaries(String filePath, String sharedLibraryPath,
+ String cpuAbi, String cpuAbi2);
- final String installGdbServerPath = GDBSERVER;
- nativeFiles.add(Pair.create(entry, installGdbServerPath));
-
- return PACKAGE_INSTALL_NATIVE_FOUND_LIBRARIES;
- }
- return PACKAGE_INSTALL_NATIVE_NO_LIBRARIES;
- }
-
- /*
- * Examine shared libraries stored in the APK as
- * lib/<cpuAbi>/lib<name>.so and add them to a list to be copied
- * later.
- *
- * This function will first try the main CPU ABI defined by Build.CPU_ABI
- * (which corresponds to ro.product.cpu.abi), and also try an alternate
- * one if ro.product.cpu.abi2 is defined.
- */
- public static int listPackageNativeBinariesLI(ZipFile zipFile,
- List<Pair<ZipEntry, String>> nativeFiles) throws ZipException, IOException {
- String cpuAbi = Build.CPU_ABI;
-
- int result = listPackageSharedLibsForAbiLI(zipFile, cpuAbi, nativeFiles);
-
- /*
- * Some architectures are capable of supporting several CPU ABIs
- * for example, 'armeabi-v7a' also supports 'armeabi' native code
- * this is indicated by the definition of the ro.product.cpu.abi2
- * system property.
- *
- * only scan the package twice in case of ABI mismatch
- */
- if (result == PACKAGE_INSTALL_NATIVE_ABI_MISMATCH) {
- final String cpuAbi2 = SystemProperties.get("ro.product.cpu.abi2", null);
- if (cpuAbi2 != null) {
- result = listPackageSharedLibsForAbiLI(zipFile, cpuAbi2, nativeFiles);
- }
-
- if (result == PACKAGE_INSTALL_NATIVE_ABI_MISMATCH) {
- Slog.w(TAG, "Native ABI mismatch from package file");
- return PackageManager.INSTALL_FAILED_INVALID_APK;
- }
-
- if (result == PACKAGE_INSTALL_NATIVE_FOUND_LIBRARIES) {
- cpuAbi = cpuAbi2;
- }
- }
-
- /*
- * Debuggable packages may have gdbserver embedded, so add it to
- * the list to the list of items to be extracted (as lib/gdbserver)
- * into the application's native library directory later.
- */
- if (result == PACKAGE_INSTALL_NATIVE_FOUND_LIBRARIES) {
- listPackageGdbServerLI(zipFile, cpuAbi, nativeFiles);
- }
- return PackageManager.INSTALL_SUCCEEDED;
- }
-
- public static int copyNativeBinariesLI(File scanFile, File sharedLibraryDir) {
- /*
- * Check all the native files that need to be copied and add
- * that to the container size.
- */
- ZipFile zipFile;
- try {
- zipFile = new ZipFile(scanFile);
-
- List<Pair<ZipEntry, String>> nativeFiles = new LinkedList<Pair<ZipEntry, String>>();
-
- NativeLibraryHelper.listPackageNativeBinariesLI(zipFile, nativeFiles);
-
- final int N = nativeFiles.size();
-
- for (int i = 0; i < N; i++) {
- final Pair<ZipEntry, String> entry = nativeFiles.get(i);
-
- File destFile = new File(sharedLibraryDir, entry.second);
- copyNativeBinaryLI(zipFile, entry.first, sharedLibraryDir, destFile);
- }
- zipFile.close();
- } catch (ZipException e) {
- Slog.w(TAG, "Failed to extract data from package file", e);
- return PackageManager.INSTALL_FAILED_INVALID_APK;
- } catch (IOException e) {
- Slog.w(TAG, "Failed to cache package shared libs", e);
- return PackageManager.INSTALL_FAILED_INSUFFICIENT_STORAGE;
- }
-
- return PackageManager.INSTALL_SUCCEEDED;
- }
-
- private static void copyNativeBinaryLI(ZipFile zipFile, ZipEntry entry,
- File binaryDir, File binaryFile) throws IOException {
- InputStream inputStream = zipFile.getInputStream(entry);
- try {
- File tempFile = File.createTempFile("tmp", "tmp", binaryDir);
- String tempFilePath = tempFile.getPath();
- // XXX package manager can't change owner, so the executable files for
- // now need to be left as world readable and owned by the system.
- if (!FileUtils.copyToFile(inputStream, tempFile)
- || !tempFile.setLastModified(entry.getTime())
- || FileUtils.setPermissions(tempFilePath, FileUtils.S_IRUSR | FileUtils.S_IWUSR
- | FileUtils.S_IRGRP | FileUtils.S_IXUSR | FileUtils.S_IXGRP
- | FileUtils.S_IXOTH | FileUtils.S_IROTH, -1, -1) != 0
- || !tempFile.renameTo(binaryFile)) {
- // Failed to properly write file.
- tempFile.delete();
- throw new IOException("Couldn't create cached binary " + binaryFile + " in "
- + binaryDir);
- }
- } finally {
- inputStream.close();
- }
+ public static int copyNativeBinariesIfNeededLI(File apkFile, File sharedLibraryDir) {
+ final String cpuAbi = Build.CPU_ABI;
+ final String cpuAbi2 = Build.CPU_ABI2;
+ return nativeCopyNativeBinaries(apkFile.getPath(), sharedLibraryDir.getPath(), cpuAbi,
+ cpuAbi2);
}
// Convenience method to call removeNativeBinariesFromDirLI(File)
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java
index 6ec186d..16336e0 100644
--- a/core/java/com/android/internal/os/ZygoteInit.java
+++ b/core/java/com/android/internal/os/ZygoteInit.java
@@ -474,7 +474,7 @@ public class ZygoteInit {
String args[] = {
"--setuid=1000",
"--setgid=1000",
- "--setgroups=1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1018,3001,3002,3003",
+ "--setgroups=1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1018,3001,3002,3003,3006",
"--capabilities=130104352,130104352",
"--runtime-init",
"--nice-name=system_server",
diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl
index c11fc10..3916e86 100644
--- a/core/java/com/android/internal/statusbar/IStatusBar.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl
@@ -30,7 +30,7 @@ oneway interface IStatusBar
void disable(int state);
void animateExpand();
void animateCollapse();
- void setLightsOn(boolean on);
+ void setSystemUiVisibility(int vis);
void topAppWindowChanged(boolean menuVisible);
void setImeWindowStatus(in IBinder token, int vis, int backDisposition);
void setHardKeyboardStatus(boolean available, boolean enabled);
diff --git a/core/java/com/android/internal/textservice/ITextServicesManager.aidl b/core/java/com/android/internal/textservice/ITextServicesManager.aidl
index 2a045e3..eae1ac8 100644
--- a/core/java/com/android/internal/textservice/ITextServicesManager.aidl
+++ b/core/java/com/android/internal/textservice/ITextServicesManager.aidl
@@ -32,5 +32,6 @@ interface ITextServicesManager {
in ITextServicesSessionListener tsListener,
in ISpellCheckerSessionListener scListener);
oneway void finishSpellCheckerService(in ISpellCheckerSessionListener listener);
+ oneway void setCurrentSpellChecker(in SpellCheckerInfo info);
SpellCheckerInfo[] getEnabledSpellCheckers();
}
diff --git a/core/java/com/android/internal/view/menu/ActionMenuView.java b/core/java/com/android/internal/view/menu/ActionMenuView.java
index bf2965b..bff621c 100644
--- a/core/java/com/android/internal/view/menu/ActionMenuView.java
+++ b/core/java/com/android/internal/view/menu/ActionMenuView.java
@@ -36,8 +36,8 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo
private boolean mReserveOverflow;
private ActionMenuPresenter mPresenter;
- private boolean mUpdateContentsBeforeMeasure;
private boolean mFormatItems;
+ private int mFormatItemsWidth;
private int mMinCellSize;
private int mMeasuredExtraWidth;
@@ -71,19 +71,21 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo
}
@Override
- public void requestLayout() {
- // Layout can influence how many action items fit.
- mUpdateContentsBeforeMeasure = true;
- super.requestLayout();
- }
-
- @Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// If we've been given an exact size to match, apply special formatting during layout.
+ final boolean wasFormatted = mFormatItems;
mFormatItems = MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.EXACTLY;
- if (mUpdateContentsBeforeMeasure && mMenu != null) {
+
+ if (wasFormatted != mFormatItems) {
+ mFormatItemsWidth = 0; // Reset this when switching modes
+ }
+
+ // Special formatting can change whether items can fit as action buttons.
+ // Kick the menu and update presenters when this changes.
+ final int widthSize = MeasureSpec.getMode(widthMeasureSpec);
+ if (mFormatItems && mMenu != null && widthSize != mFormatItemsWidth) {
+ mFormatItemsWidth = widthSize;
mMenu.onItemsChanged(true);
- mUpdateContentsBeforeMeasure = false;
}
if (mFormatItems) {
diff --git a/core/java/com/android/internal/view/menu/MenuBuilder.java b/core/java/com/android/internal/view/menu/MenuBuilder.java
index 159b3da..7839a08 100644
--- a/core/java/com/android/internal/view/menu/MenuBuilder.java
+++ b/core/java/com/android/internal/view/menu/MenuBuilder.java
@@ -47,7 +47,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
* standard menu UI.
*/
public class MenuBuilder implements Menu {
- private static final String LOGTAG = "MenuBuilder";
+ private static final String TAG = "MenuBuilder";
private static final String PRESENTER_KEY = "android:menu:presenters";
private static final String ACTION_VIEW_STATES_KEY = "android:menu:actionviewstates";
diff --git a/core/java/com/android/internal/view/menu/MenuItemImpl.java b/core/java/com/android/internal/view/menu/MenuItemImpl.java
index b0a002d..8b53bb8 100644
--- a/core/java/com/android/internal/view/menu/MenuItemImpl.java
+++ b/core/java/com/android/internal/view/menu/MenuItemImpl.java
@@ -563,7 +563,7 @@ public final class MenuItemImpl implements MenuItem {
public MenuItem setActionView(int resId) {
final Context context = mMenu.getContext();
final LayoutInflater inflater = LayoutInflater.from(context);
- setActionView(inflater.inflate(resId, new LinearLayout(context)));
+ setActionView(inflater.inflate(resId, new LinearLayout(context), false));
return this;
}
diff --git a/core/java/com/android/internal/widget/ActionBarContainer.java b/core/java/com/android/internal/widget/ActionBarContainer.java
index 9fef2a9..a2d492b 100644
--- a/core/java/com/android/internal/widget/ActionBarContainer.java
+++ b/core/java/com/android/internal/widget/ActionBarContainer.java
@@ -109,6 +109,7 @@ public class ActionBarContainer extends FrameLayout {
mTabContainer = tabView;
if (tabView != null) {
addView(tabView);
+ tabView.getLayoutParams().width = LayoutParams.MATCH_PARENT;
}
}
diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java
index 09262e0..446c842 100644
--- a/core/java/com/android/internal/widget/ActionBarView.java
+++ b/core/java/com/android/internal/widget/ActionBarView.java
@@ -33,6 +33,7 @@ import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
@@ -172,7 +173,8 @@ public class ActionBarView extends AbsActionBarView {
// Background is always provided by the container.
setBackgroundResource(0);
- TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ActionBar);
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ActionBar,
+ com.android.internal.R.attr.actionBarStyle, 0);
ApplicationInfo appInfo = context.getApplicationInfo();
PackageManager pm = context.getPackageManager();
@@ -250,6 +252,18 @@ public class ActionBarView extends AbsActionBarView {
}
@Override
+ protected void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+
+ // Action bar can change size on configuration changes.
+ // Reread the desired height from the theme-specified style.
+ TypedArray a = getContext().obtainStyledAttributes(null, R.styleable.ActionBar,
+ com.android.internal.R.attr.actionBarStyle, 0);
+ setContentHeight(a.getLayoutDimension(R.styleable.ActionBar_height, 0));
+ a.recycle();
+ }
+
+ @Override
public void onDetachedFromWindow() {
super.onDetachedFromWindow();
removeCallbacks(mTabSelector);
@@ -318,6 +332,7 @@ public class ActionBarView extends AbsActionBarView {
mIncludeTabs = tabs != null;
if (mIncludeTabs && mNavigationMode == ActionBar.NAVIGATION_MODE_TABS) {
addView(mTabScrollView);
+ mTabScrollView.getLayoutParams().width = LayoutParams.WRAP_CONTENT;
}
}
@@ -1323,11 +1338,18 @@ public class ActionBarView extends AbsActionBarView {
if (mExpandedActionView instanceof CollapsibleActionView) {
((CollapsibleActionView) mExpandedActionView).onActionViewExpanded();
}
+
return true;
}
@Override
public boolean collapseItemActionView(MenuBuilder menu, MenuItemImpl item) {
+ // Do this before detaching the actionview from the hierarchy, in case
+ // it needs to dismiss the soft keyboard, etc.
+ if (mExpandedActionView instanceof CollapsibleActionView) {
+ ((CollapsibleActionView) mExpandedActionView).onActionViewCollapsed();
+ }
+
removeView(mExpandedActionView);
removeView(mExpandedHomeLayout);
if ((mDisplayOptions & ActionBar.DISPLAY_SHOW_HOME) != 0) {
@@ -1349,16 +1371,12 @@ public class ActionBarView extends AbsActionBarView {
if (mCustomNavView != null && (mDisplayOptions & ActionBar.DISPLAY_SHOW_CUSTOM) != 0) {
mCustomNavView.setVisibility(VISIBLE);
}
- View collapsedView = mExpandedActionView;
mExpandedActionView = null;
mExpandedHomeLayout.setIcon(null);
mCurrentExpandedItem = null;
requestLayout();
item.setActionViewExpanded(false);
- if (collapsedView instanceof CollapsibleActionView) {
- ((CollapsibleActionView) collapsedView).onActionViewCollapsed();
- }
return true;
}
diff --git a/core/java/com/android/internal/widget/DialogTitle.java b/core/java/com/android/internal/widget/DialogTitle.java
index cd165dc..b86c438 100644
--- a/core/java/com/android/internal/widget/DialogTitle.java
+++ b/core/java/com/android/internal/widget/DialogTitle.java
@@ -53,21 +53,19 @@ public class DialogTitle extends TextView {
final int ellipsisCount = layout.getEllipsisCount(lineCount - 1);
if (ellipsisCount > 0) {
setSingleLine(false);
-
- TypedArray a = mContext.obtainStyledAttributes(null,
- android.R.styleable.TextAppearance,
- android.R.attr.textAppearanceMedium,
+ setMaxLines(2);
+
+ final TypedArray a = mContext.obtainStyledAttributes(null,
+ android.R.styleable.TextAppearance, android.R.attr.textAppearanceMedium,
android.R.style.TextAppearance_Medium);
final int textSize = a.getDimensionPixelSize(
- android.R.styleable.TextAppearance_textSize,
- (int) (20 * getResources().getDisplayMetrics().density));
- final int textColor = a.getColor(
- android.R.styleable.TextAppearance_textColor, 0xffffffff);
+ android.R.styleable.TextAppearance_textSize, 0);
+ if (textSize != 0) {
+ // textSize is already expressed in pixels
+ setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
+ }
+ a.recycle();
- // textSize is already expressed in pixels
- setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
- setTextColor(textColor);
- setMaxLines(2);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
index bbddf29..e4322c6 100644
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
@@ -892,18 +892,6 @@ public class LockPatternUtils {
}
/**
- * Sets the visibility of emergency call prompt based on emergency capable
- * @param emergencyText the emergency call text to be updated
- */
- public void updateEmergencyCallText(TextView emergencyText) {
- if (isEmergencyCallCapable()) {
- emergencyText.setVisibility(View.VISIBLE);
- } else {
- emergencyText.setVisibility(View.GONE);
- }
- }
-
- /**
* Resumes a call in progress. Typically launched from the EmergencyCall button
* on various lockscreens.
*
@@ -920,4 +908,22 @@ public class LockPatternUtils {
}
return false;
}
+
+ /**
+ * Performs concentenation of PLMN/SPN
+ * @param plmn
+ * @param spn
+ * @return
+ */
+ public static CharSequence getCarrierString(CharSequence plmn, CharSequence spn) {
+ if (plmn != null && spn == null) {
+ return plmn;
+ } else if (plmn != null && spn != null) {
+ return plmn + "|" + spn;
+ } else if (plmn == null && spn != null) {
+ return spn;
+ } else {
+ return "";
+ }
+ }
}
diff --git a/core/java/com/android/internal/widget/LockScreenWidgetCallback.java b/core/java/com/android/internal/widget/LockScreenWidgetCallback.java
new file mode 100644
index 0000000..d6403e9
--- /dev/null
+++ b/core/java/com/android/internal/widget/LockScreenWidgetCallback.java
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+
+package com.android.internal.widget;
+
+import android.view.View;
+
+/**
+ * An interface used by LockScreenWidgets to send messages to lock screen.
+ */
+public interface LockScreenWidgetCallback {
+ // Sends a message to lock screen requesting the given view be shown. May be ignored, depending
+ // on lock screen state. View must be the top-level lock screen widget or it will be ignored.
+ public void requestShow(View self);
+
+ // Sends a message to lock screen requesting the view to be hidden.
+ public void requestHide(View self);
+
+ // Sends a message to lock screen that user has interacted with widget. This should be used
+ // exclusively in response to user activity, i.e. user hits a button in the view.
+ public void userActivity(View self);
+
+}
diff --git a/core/java/com/android/internal/widget/LockScreenWidgetInterface.java b/core/java/com/android/internal/widget/LockScreenWidgetInterface.java
new file mode 100644
index 0000000..6dfcc75
--- /dev/null
+++ b/core/java/com/android/internal/widget/LockScreenWidgetInterface.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+package com.android.internal.widget;
+
+public interface LockScreenWidgetInterface {
+
+ public void setCallback(LockScreenWidgetCallback callback);
+
+}
diff --git a/core/java/com/android/internal/widget/ScrollingTabContainerView.java b/core/java/com/android/internal/widget/ScrollingTabContainerView.java
index 40e5e8a..fefa223 100644
--- a/core/java/com/android/internal/widget/ScrollingTabContainerView.java
+++ b/core/java/com/android/internal/widget/ScrollingTabContainerView.java
@@ -87,6 +87,11 @@ public class ScrollingTabContainerView extends HorizontalScrollView {
}
}
+ public void setContentHeight(int contentHeight) {
+ mTabLayout.getLayoutParams().height = contentHeight;
+ requestLayout();
+ }
+
public void animateToVisibility(int visibility) {
if (mVisibilityAnim != null) {
mVisibilityAnim.cancel();
diff --git a/core/java/com/android/internal/widget/TransportControlView.java b/core/java/com/android/internal/widget/TransportControlView.java
new file mode 100644
index 0000000..3961de3
--- /dev/null
+++ b/core/java/com/android/internal/widget/TransportControlView.java
@@ -0,0 +1,103 @@
+/*
+ * 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.
+ */
+
+package com.android.internal.widget;
+
+import com.android.internal.R;
+
+import android.content.Context;
+import android.media.AudioManager;
+import android.os.Handler;
+import android.os.Message;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.LinearLayout;
+
+/**
+ * A special widget for displaying audio playback ("transport controls") in LockScreen.
+ *
+ */
+public class TransportControlView extends LinearLayout implements LockScreenWidgetInterface,
+ OnClickListener {
+ private static final String TAG = "TransportControlView";
+ static final int sViewIds[] = { R.id.control_prev, R.id.control_pauseplay, R.id.control_next };
+ protected static final int AUDIO_FOCUS_CHANGED = 100;
+ private LockScreenWidgetCallback mCallback;
+
+ private Handler mHandler = new Handler() {
+ public void handleMessage(Message msg) {
+ switch (msg.what){
+ case AUDIO_FOCUS_CHANGED:
+ handleAudioFocusChange(msg.arg1);
+ }
+ }
+ };
+
+ AudioManager.OnAudioFocusChangeListener mAudioFocusChangeListener =
+ new AudioManager.OnAudioFocusChangeListener() {
+ public void onAudioFocusChange(final int focusChange) {
+ mHandler.obtainMessage(AUDIO_FOCUS_CHANGED, focusChange, 0).sendToTarget();
+ }
+ };
+
+ public TransportControlView(Context context) {
+ this(context, null);
+ }
+
+ public TransportControlView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ protected void handleAudioFocusChange(int focusChange) {
+ // TODO
+ }
+
+ public void setCallback(LockScreenWidgetCallback callback) {
+ mCallback = callback;
+ }
+
+ @Override
+ public void onFinishInflate() {
+ for (int i = 0; i < sViewIds.length; i++) {
+ View view = findViewById(sViewIds[i]);
+ if (view != null) {
+ view.setOnClickListener(this);
+ }
+ }
+ }
+
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.control_prev:
+ // TODO
+ break;
+
+ case R.id.control_pauseplay:
+ // TODO
+ break;
+
+ case R.id.control_next:
+ // TODO
+ break;
+ }
+ // Have any button click extend lockscreen's timeout.
+ if (mCallback != null) {
+ mCallback.userActivity(this);
+ }
+ }
+
+}
diff --git a/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java b/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java
index 04bb689..0510023 100644
--- a/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java
+++ b/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java
@@ -36,6 +36,7 @@ import android.util.Log;
import android.util.TypedValue;
import android.view.MotionEvent;
import android.view.View;
+import android.view.View.MeasureSpec;
import com.android.internal.R;
@@ -45,7 +46,7 @@ import com.android.internal.R;
*/
public class MultiWaveView extends View {
private static final String TAG = "MultiWaveView";
- private static final boolean DEBUG = true;
+ private static final boolean DEBUG = false;
// Wave state machine
private static final int STATE_IDLE = 0;
@@ -195,14 +196,41 @@ public class MultiWaveView extends View {
protected int getSuggestedMinimumWidth() {
// View should be large enough to contain the background + target drawable on either edge
return mOuterRing.getWidth()
- + (mTargetDrawables.size() > 0 ? (mTargetDrawables.get(0).getWidth()) : 0);
+ + (mTargetDrawables.size() > 0 ? (mTargetDrawables.get(0).getWidth()/2) : 0);
}
@Override
protected int getSuggestedMinimumHeight() {
// View should be large enough to contain the unlock ring + target drawable on either edge
return mOuterRing.getHeight()
- + (mTargetDrawables.size() > 0 ? (mTargetDrawables.get(0).getHeight()) : 0);
+ + (mTargetDrawables.size() > 0 ? (mTargetDrawables.get(0).getHeight()/2) : 0);
+ }
+
+ private int resolveMeasured(int measureSpec, int desired)
+ {
+ int result = 0;
+ int specSize = MeasureSpec.getSize(measureSpec);
+ switch (MeasureSpec.getMode(measureSpec)) {
+ case MeasureSpec.UNSPECIFIED:
+ result = desired;
+ break;
+ case MeasureSpec.AT_MOST:
+ result = Math.min(specSize, desired);
+ break;
+ case MeasureSpec.EXACTLY:
+ default:
+ result = specSize;
+ }
+ return result;
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ final int minimumWidth = getSuggestedMinimumWidth();
+ final int minimumHeight = getSuggestedMinimumHeight();
+ int viewWidth = resolveMeasured(widthMeasureSpec, minimumWidth);
+ int viewHeight = resolveMeasured(heightMeasureSpec, minimumHeight);
+ setMeasuredDimension(viewWidth, viewHeight);
}
private void switchToState(int state, float x, float y) {
diff --git a/core/jni/Android.mk b/core/jni/Android.mk
index 514e59d..6e73889 100644
--- a/core/jni/Android.mk
+++ b/core/jni/Android.mk
@@ -29,6 +29,7 @@ LOCAL_SRC_FILES:= \
ActivityManager.cpp \
AndroidRuntime.cpp \
Time.cpp \
+ com_android_internal_content_NativeLibraryHelper.cpp \
com_google_android_gles_jni_EGLImpl.cpp \
com_google_android_gles_jni_GLImpl.cpp.arm \
android_app_NativeActivity.cpp \
@@ -178,6 +179,7 @@ LOCAL_C_INCLUDES += \
external/icu4c/common \
external/jpeg \
external/harfbuzz/src \
+ external/zlib \
frameworks/opt/emoji \
libcore/include
@@ -211,6 +213,7 @@ LOCAL_SHARED_LIBRARIES := \
libnfc_ndef \
libusbhost \
libharfbuzz \
+ libz \
ifeq ($(USE_OPENGL_RENDERER),true)
LOCAL_SHARED_LIBRARIES += libhwui
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp
index 6ab8fe3..9e46d80 100644
--- a/core/jni/AndroidRuntime.cpp
+++ b/core/jni/AndroidRuntime.cpp
@@ -175,6 +175,7 @@ extern int register_android_view_VelocityTracker(JNIEnv* env);
extern int register_android_content_res_ObbScanner(JNIEnv* env);
extern int register_android_content_res_Configuration(JNIEnv* env);
extern int register_android_animation_PropertyValuesHolder(JNIEnv *env);
+extern int register_com_android_internal_content_NativeLibraryHelper(JNIEnv *env);
static AndroidRuntime* gCurRuntime = NULL;
@@ -1199,6 +1200,7 @@ static const RegJNIRec gRegJNI[] = {
REG_JNI(register_android_content_res_Configuration),
REG_JNI(register_android_animation_PropertyValuesHolder),
+ REG_JNI(register_com_android_internal_content_NativeLibraryHelper),
};
/*
diff --git a/core/jni/android/graphics/NinePatchImpl.cpp b/core/jni/android/graphics/NinePatchImpl.cpp
index a3e36ee..579749a 100644
--- a/core/jni/android/graphics/NinePatchImpl.cpp
+++ b/core/jni/android/graphics/NinePatchImpl.cpp
@@ -160,6 +160,14 @@ void NinePatch_Draw(SkCanvas* canvas, const SkRect& bounds,
return;
}
+ // if the nine patch is bigger than the dst on a given axis we cannot
+ // stretch properly so just draw the bitmap as best as possible and return
+ if (bitmap.width() >= bounds.width() || bitmap.height() >= bounds.height())
+ {
+ canvas->drawBitmapRect(bitmap, NULL, bounds, paint);
+ return;
+ }
+
// should try a quick-reject test before calling lockPixels
SkAutoLockPixels alp(bitmap);
diff --git a/core/jni/android_bluetooth_BluetoothSocket.cpp b/core/jni/android_bluetooth_BluetoothSocket.cpp
index 4c84324..488b5c2 100644
--- a/core/jni/android_bluetooth_BluetoothSocket.cpp
+++ b/core/jni/android_bluetooth_BluetoothSocket.cpp
@@ -57,6 +57,9 @@ static const int TYPE_L2CAP = 3; // TODO: Test l2cap code paths
static const int RFCOMM_SO_SNDBUF = 70 * 1024; // 70 KB send buffer
+static void abortNative(JNIEnv *env, jobject obj);
+static void destroyNative(JNIEnv *env, jobject obj);
+
static struct asocket *get_socketData(JNIEnv *env, jobject obj) {
struct asocket *s =
(struct asocket *) env->GetIntField(obj, field_mSocketData);
@@ -172,6 +175,7 @@ static void connectNative(JNIEnv *env, jobject obj) {
socklen_t addr_sz;
struct sockaddr *addr;
struct asocket *s = get_socketData(env, obj);
+ int retry = 0;
if (!s)
return;
@@ -226,10 +230,30 @@ static void connectNative(JNIEnv *env, jobject obj) {
return;
}
+connect:
ret = asocket_connect(s, addr, addr_sz, -1);
LOGV("...connect(%d, %s) = %d (errno %d)",
s->fd, TYPE_AS_STR(type), ret, errno);
+ if (ret && errno == EALREADY && retry < 2) {
+ /* workaround for bug 5082381 (EALREADY on ACL collision):
+ * retry the connect. Unfortunately we have to create a new fd.
+ * It's not ideal to switch the fd underneath the object, but
+ * is currently safe */
+ LOGD("Hit bug 5082381 (EALREADY on ACL collision), trying workaround");
+ usleep(100000);
+ retry++;
+ abortNative(env, obj);
+ destroyNative(env, obj);
+ initSocketNative(env, obj);
+ if (env->ExceptionOccurred()) {
+ return;
+ }
+ goto connect;
+ }
+ if (!ret && retry > 0)
+ LOGD("...workaround ok");
+
if (ret)
jniThrowIOException(env, errno);
diff --git a/core/jni/android_hardware_Camera.cpp b/core/jni/android_hardware_Camera.cpp
index 4687ee0..3dcaa37 100644
--- a/core/jni/android_hardware_Camera.cpp
+++ b/core/jni/android_hardware_Camera.cpp
@@ -38,6 +38,12 @@ struct fields_t {
jfieldID surfaceTexture;
jfieldID facing;
jfieldID orientation;
+ jfieldID face_rect;
+ jfieldID face_score;
+ jfieldID rect_left;
+ jfieldID rect_top;
+ jfieldID rect_right;
+ jfieldID rect_bottom;
jmethodID post_event;
};
@@ -708,6 +714,35 @@ static void android_hardware_Camera_setDisplayOrientation(JNIEnv *env, jobject t
}
}
+static void android_hardware_Camera_startFaceDetection(JNIEnv *env, jobject thiz,
+ jint type, jobjectArray face)
+{
+ LOGV("startFaceDetection");
+ JNICameraContext* context;
+ sp<Camera> camera = get_native_camera(env, thiz, &context);
+ if (camera == 0) return;
+
+ status_t rc = camera->sendCommand(CAMERA_CMD_START_FACE_DETECTION, type, 0);
+ if (rc == BAD_VALUE) {
+ char msg[64];
+ snprintf(msg, sizeof(msg), "invalid face detection type=%d", type);
+ jniThrowException(env, "java/lang/IllegalArgumentException", msg);
+ } else if (rc != NO_ERROR) {
+ jniThrowRuntimeException(env, "start face detection failed");
+ }
+}
+
+static void android_hardware_Camera_stopFaceDetection(JNIEnv *env, jobject thiz)
+{
+ LOGV("stopFaceDetection");
+ sp<Camera> camera = get_native_camera(env, thiz, NULL);
+ if (camera == 0) return;
+
+ if (camera->sendCommand(CAMERA_CMD_STOP_FACE_DETECTION, 0, 0) != NO_ERROR) {
+ jniThrowRuntimeException(env, "stop face detection failed");
+ }
+}
+
//-------------------------------------------------
static JNINativeMethod camMethods[] = {
@@ -732,7 +767,7 @@ static JNINativeMethod camMethods[] = {
{ "startPreview",
"()V",
(void *)android_hardware_Camera_startPreview },
- { "stopPreview",
+ { "_stopPreview",
"()V",
(void *)android_hardware_Camera_stopPreview },
{ "previewEnabled",
@@ -777,6 +812,12 @@ static JNINativeMethod camMethods[] = {
{ "setDisplayOrientation",
"(I)V",
(void *)android_hardware_Camera_setDisplayOrientation },
+ { "_startFaceDetection",
+ "(I)V",
+ (void *)android_hardware_Camera_startFaceDetection },
+ { "_stopFaceDetection",
+ "()V",
+ (void *)android_hardware_Camera_stopFaceDetection},
};
struct field {
@@ -818,6 +859,12 @@ int register_android_hardware_Camera(JNIEnv *env)
ANDROID_GRAPHICS_SURFACETEXTURE_JNI_ID, "I", &fields.surfaceTexture },
{ "android/hardware/Camera$CameraInfo", "facing", "I", &fields.facing },
{ "android/hardware/Camera$CameraInfo", "orientation", "I", &fields.orientation },
+ { "android/hardware/Camera$Face", "rect", "Landroid/graphics/Rect;", &fields.face_rect },
+ { "android/hardware/Camera$Face", "score", "I", &fields.face_score },
+ { "android/graphics/Rect", "left", "I", &fields.rect_left },
+ { "android/graphics/Rect", "top", "I", &fields.rect_top },
+ { "android/graphics/Rect", "right", "I", &fields.rect_right },
+ { "android/graphics/Rect", "bottom", "I", &fields.rect_bottom },
};
if (find_fields(env, fields_to_find, NELEM(fields_to_find)) < 0)
diff --git a/core/jni/android_view_Display.cpp b/core/jni/android_view_Display.cpp
index 97f9fc3..5e668b9 100644
--- a/core/jni/android_view_Display.cpp
+++ b/core/jni/android_view_Display.cpp
@@ -45,11 +45,6 @@ struct offsets_t {
};
static offsets_t offsets;
-static int gShortSize = -1;
-static int gLongSize = -1;
-static int gOldSize = -1;
-static int gNewSize = -1;
-
// ----------------------------------------------------------------------------
static void android_view_Display_init(
@@ -68,30 +63,6 @@ static void android_view_Display_init(
env->SetFloatField(clazz, offsets.ydpi, info.ydpi);
}
-static jint android_view_Display_getWidth(
- JNIEnv* env, jobject clazz)
-{
- DisplayID dpy = env->GetIntField(clazz, offsets.display);
- jint w = SurfaceComposerClient::getDisplayWidth(dpy);
- if (gShortSize > 0) {
- jint h = SurfaceComposerClient::getDisplayHeight(dpy);
- return w < h ? gShortSize : gLongSize;
- }
- return w == gOldSize ? gNewSize : w;
-}
-
-static jint android_view_Display_getHeight(
- JNIEnv* env, jobject clazz)
-{
- DisplayID dpy = env->GetIntField(clazz, offsets.display);
- int h = SurfaceComposerClient::getDisplayHeight(dpy);
- if (gShortSize > 0) {
- jint w = SurfaceComposerClient::getDisplayWidth(dpy);
- return h < w ? gShortSize : gLongSize;
- }
- return h == gOldSize ? gNewSize : h;
-}
-
static jint android_view_Display_getRawWidth(
JNIEnv* env, jobject clazz)
{
@@ -132,10 +103,6 @@ static JNINativeMethod gMethods[] = {
(void*)android_view_Display_getDisplayCount },
{ "init", "(I)V",
(void*)android_view_Display_init },
- { "getRealWidth", "()I",
- (void*)android_view_Display_getWidth },
- { "getRealHeight", "()I",
- (void*)android_view_Display_getHeight },
{ "getRawWidth", "()I",
(void*)android_view_Display_getRawWidth },
{ "getRawHeight", "()I",
@@ -156,24 +123,6 @@ void nativeClassInit(JNIEnv* env, jclass clazz)
int register_android_view_Display(JNIEnv* env)
{
- char buf[PROPERTY_VALUE_MAX];
- int len = property_get("persist.demo.screensizehack", buf, "");
- if (len > 0) {
- int temp1, temp2;
- if (sscanf(buf, "%dx%d", &temp1, &temp2) == 2) {
- if (temp1 < temp2) {
- gShortSize = temp1;
- gLongSize = temp2;
- } else {
- gShortSize = temp2;
- gLongSize = temp1;
- }
- } else if (sscanf(buf, "%d=%d", &temp1, &temp2) == 2) {
- gOldSize = temp1;
- gNewSize = temp2;
- }
- }
-
return AndroidRuntime::registerNativeMethods(env,
kClassPathName, gMethods, NELEM(gMethods));
}
diff --git a/core/jni/android_view_GLES20Canvas.cpp b/core/jni/android_view_GLES20Canvas.cpp
index b06de9d..b3f2d51 100644
--- a/core/jni/android_view_GLES20Canvas.cpp
+++ b/core/jni/android_view_GLES20Canvas.cpp
@@ -580,6 +580,11 @@ static DisplayList* android_view_GLES20Canvas_getDisplayList(JNIEnv* env,
return renderer->getDisplayList(displayList);
}
+static jint android_view_GLES20Canvas_getDisplayListSize(JNIEnv* env,
+ jobject clazz, DisplayList* displayList) {
+ return displayList->getSize();
+}
+
static OpenGLRenderer* android_view_GLES20Canvas_createDisplayListRenderer(JNIEnv* env,
jobject clazz) {
return new DisplayListRenderer;
@@ -721,8 +726,7 @@ static jboolean android_view_GLES20Canvas_isAvailable(JNIEnv* env, jobject clazz
// ----------------------------------------------------------------------------
static void
-android_app_ActivityThread_dumpGraphics(JNIEnv* env, jobject clazz, jobject javaFileDescriptor)
-{
+android_app_ActivityThread_dumpGraphics(JNIEnv* env, jobject clazz, jobject javaFileDescriptor) {
#ifdef USE_OPENGL_RENDERER
int fd = jniGetFDFromFileDescriptor(env, javaFileDescriptor);
android::uirenderer::DisplayList::outputLogBuffer(fd);
@@ -814,6 +818,7 @@ static JNINativeMethod gMethods[] = {
{ "nGetDisplayList", "(II)I", (void*) android_view_GLES20Canvas_getDisplayList },
{ "nDestroyDisplayList", "(I)V", (void*) android_view_GLES20Canvas_destroyDisplayList },
+ { "nGetDisplayListSize", "(I)I", (void*) android_view_GLES20Canvas_getDisplayListSize },
{ "nCreateDisplayListRenderer", "()I", (void*) android_view_GLES20Canvas_createDisplayListRenderer },
{ "nResetDisplayListRenderer", "(I)V", (void*) android_view_GLES20Canvas_resetDisplayListRenderer },
{ "nDrawDisplayList", "(IIIILandroid/graphics/Rect;)Z",
diff --git a/core/jni/com_android_internal_content_NativeLibraryHelper.cpp b/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
new file mode 100644
index 0000000..830f70e
--- /dev/null
+++ b/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
@@ -0,0 +1,375 @@
+/*
+ * 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.
+ */
+
+#define LOG_TAG "NativeLibraryHelper"
+//#define LOG_NDEBUG 0
+
+#include <android_runtime/AndroidRuntime.h>
+
+#include <utils/Log.h>
+#include <ScopedUtfChars.h>
+#include <utils/ZipFileRO.h>
+
+#include <zlib.h>
+
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+
+#define APK_LIB "lib/"
+#define APK_LIB_LEN (sizeof(APK_LIB) - 1)
+
+#define LIB_PREFIX "/lib"
+#define LIB_PREFIX_LEN (sizeof(LIB_PREFIX) - 1)
+
+#define LIB_SUFFIX ".so"
+#define LIB_SUFFIX_LEN (sizeof(LIB_SUFFIX) - 1)
+
+#define GDBSERVER "gdbserver"
+#define GDBSERVER_LEN (sizeof(GDBSERVER) - 1)
+
+#define TMP_FILE_PATTERN "/tmp.XXXXXX"
+#define TMP_FILE_PATTERN_LEN (sizeof(TMP_FILE_PATTERN) - 1)
+
+namespace android {
+
+typedef void (*iterFunc)(JNIEnv*, void*, ZipFileRO*, ZipEntryRO, const char*);
+
+// These match PackageManager.java install codes
+typedef enum {
+ INSTALL_SUCCEEDED = 0,
+ INSTALL_FAILED_INVALID_APK = -2,
+ INSTALL_FAILED_INSUFFICIENT_STORAGE = -4,
+} install_status_t;
+
+// Equivalent to isFilenameSafe
+static bool
+isFilenameSafe(const char* filename)
+{
+ off_t offset = 0;
+ for (;;) {
+ switch (*(filename + offset)) {
+ case 0:
+ // Null.
+ // If we've reached the end, all the other characters are good.
+ return true;
+
+ case 'A' ... 'Z':
+ case 'a' ... 'z':
+ case '0' ... '9':
+ case '+':
+ case ',':
+ case '-':
+ case '.':
+ case '/':
+ case '=':
+ case '_':
+ offset++;
+ break;
+
+ default:
+ // We found something that is not good.
+ return false;
+ }
+ }
+ // Should not reach here.
+}
+
+static bool
+isFileDifferent(const char* filePath, size_t fileSize, time_t modifiedTime,
+ long zipCrc, struct stat64* st)
+{
+ if (lstat64(filePath, st) < 0) {
+ // File is not found or cannot be read.
+ LOGV("Couldn't stat %s, copying: %s\n", filePath, strerror(errno));
+ return true;
+ }
+
+ if (!S_ISREG(st->st_mode)) {
+ return true;
+ }
+
+ if (st->st_size != fileSize) {
+ return true;
+ }
+
+ // For some reason, bionic doesn't define st_mtime as time_t
+ if (time_t(st->st_mtime) != modifiedTime) {
+ LOGV("mod time doesn't match: %ld vs. %ld\n", st->st_mtime, modifiedTime);
+ return true;
+ }
+
+ int fd = TEMP_FAILURE_RETRY(open(filePath, O_RDONLY));
+ if (fd < 0) {
+ LOGV("Couldn't open file %s: %s", filePath, strerror(errno));
+ return true;
+ }
+
+ long crc = crc32(0L, Z_NULL, 0);
+ unsigned char crcBuffer[16384];
+ ssize_t numBytes;
+ while ((numBytes = TEMP_FAILURE_RETRY(read(fd, crcBuffer, sizeof(crcBuffer)))) > 0) {
+ crc = crc32(crc, crcBuffer, numBytes);
+ }
+ close(fd);
+
+ LOGV("%s: crc = %lx, zipCrc = %lx\n", filePath, crc, zipCrc);
+
+ if (crc != zipCrc) {
+ return true;
+ }
+
+ return false;
+}
+
+static void
+sumFiles(JNIEnv* env, void* arg, ZipFileRO* zipFile, ZipEntryRO zipEntry, const char* fileName)
+{
+ size_t* total = (size_t*) arg;
+ size_t uncompLen;
+
+ if (!zipFile->getEntryInfo(zipEntry, NULL, &uncompLen, NULL, NULL, NULL, NULL)) {
+ return;
+ }
+
+ *total += uncompLen;
+}
+
+/*
+ * Copy the native library if needed.
+ *
+ * This function assumes the library and path names passed in are considered safe.
+ */
+static void
+copyFileIfChanged(JNIEnv *env, void* arg, ZipFileRO* zipFile, ZipEntryRO zipEntry, const char* fileName)
+{
+ jstring* javaNativeLibPath = (jstring*) arg;
+ ScopedUtfChars nativeLibPath(env, *javaNativeLibPath);
+
+ size_t uncompLen;
+ long when;
+ long crc;
+ time_t modTime;
+
+ if (!zipFile->getEntryInfo(zipEntry, NULL, &uncompLen, NULL, NULL, &when, &crc)) {
+ return;
+ } else {
+ struct tm t;
+ ZipFileRO::zipTimeToTimespec(when, &t);
+ modTime = mktime(&t);
+ }
+
+ // Build local file path
+ const size_t fileNameLen = strlen(fileName);
+ char localFileName[nativeLibPath.size() + fileNameLen + 2];
+
+ if (strlcpy(localFileName, nativeLibPath.c_str(), sizeof(localFileName)) != nativeLibPath.size()) {
+ LOGD("Couldn't allocate local file name for library: %s", strerror(errno));
+ return;
+ }
+
+ *(localFileName + nativeLibPath.size()) = '/';
+
+ if (strlcpy(localFileName + nativeLibPath.size() + 1, fileName, sizeof(localFileName)
+ - nativeLibPath.size() - 1) != fileNameLen) {
+ LOGD("Couldn't allocate local file name for library: %s", strerror(errno));
+ return;
+ }
+
+ // Only copy out the native file if it's different.
+ struct stat st;
+ if (!isFileDifferent(localFileName, uncompLen, modTime, crc, &st)) {
+ return;
+ }
+
+ char localTmpFileName[nativeLibPath.size() + TMP_FILE_PATTERN_LEN + 2];
+ if (strlcpy(localTmpFileName, nativeLibPath.c_str(), sizeof(localTmpFileName))
+ != nativeLibPath.size()) {
+ LOGD("Couldn't allocate local file name for library: %s", strerror(errno));
+ return;
+ }
+
+ *(localFileName + nativeLibPath.size()) = '/';
+
+ if (strlcpy(localTmpFileName + nativeLibPath.size(), TMP_FILE_PATTERN,
+ TMP_FILE_PATTERN_LEN - nativeLibPath.size()) != TMP_FILE_PATTERN_LEN) {
+ LOGI("Couldn't allocate temporary file name for library: %s", strerror(errno));
+ return;
+ }
+
+ int fd = mkstemp(localTmpFileName);
+ if (fd < 0) {
+ LOGI("Couldn't open temporary file name: %s: %s\n", localTmpFileName, strerror(errno));
+ return;
+ }
+
+ if (!zipFile->uncompressEntry(zipEntry, fd)) {
+ LOGI("Failed uncompressing %s to %s: %s", fileName, localTmpFileName, strerror(errno));
+ close(fd);
+ unlink(localTmpFileName);
+ return;
+ }
+
+ close(fd);
+
+ // Set the modification time for this file to the ZIP's mod time.
+ struct timeval times[2];
+ times[0].tv_sec = st.st_atime;
+ times[1].tv_sec = modTime;
+ times[0].tv_usec = times[1].tv_usec = 0;
+ if (utimes(localTmpFileName, times) < 0) {
+ LOGI("Couldn't change modification time on %s: %s\n", localTmpFileName, strerror(errno));
+ unlink(localTmpFileName);
+ return;
+ }
+
+ // Set the mode to 755
+ static const mode_t mode = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
+ if (chmod(localTmpFileName, mode) < 0) {
+ LOGI("Couldn't change permissions on %s: %s\n", localTmpFileName, strerror(errno));
+ unlink(localTmpFileName);
+ return;
+ }
+
+ // Finally, rename it to the final name.
+ if (rename(localTmpFileName, localFileName) < 0) {
+ LOGI("Couldn't rename %s to %s: %s\n", localTmpFileName, localFileName, strerror(errno));
+ unlink(localTmpFileName);
+ return;
+ }
+
+ LOGV("Successfully moved %s to %s\n", localTmpFileName, localFileName);
+}
+
+static install_status_t
+iterateOverNativeFiles(JNIEnv *env, jstring javaFilePath, jstring javaCpuAbi, jstring javaCpuAbi2,
+ iterFunc callFunc, void* callArg) {
+ ScopedUtfChars filePath(env, javaFilePath);
+ ScopedUtfChars cpuAbi(env, javaCpuAbi);
+ ScopedUtfChars cpuAbi2(env, javaCpuAbi2);
+
+ ZipFileRO zipFile;
+
+ if (zipFile.open(filePath.c_str()) != NO_ERROR) {
+ LOGI("Couldn't open APK %s\n", filePath.c_str());
+ return INSTALL_FAILED_INVALID_APK;
+ }
+
+ const int N = zipFile.getNumEntries();
+
+ char fileName[PATH_MAX];
+
+ for (int i = 0; i < N; i++) {
+ const ZipEntryRO entry = zipFile.findEntryByIndex(i);
+ if (entry == NULL) {
+ continue;
+ }
+
+ // Make sure this entry has a filename.
+ if (zipFile.getEntryFileName(entry, fileName, sizeof(fileName))) {
+ continue;
+ }
+
+ // Make sure we're in the lib directory of the ZIP.
+ if (strncmp(fileName, APK_LIB, APK_LIB_LEN)) {
+ continue;
+ }
+
+ // Make sure the filename is at least to the minimum library name size.
+ const size_t fileNameLen = strlen(fileName);
+ static const size_t minLength = APK_LIB_LEN + 2 + LIB_PREFIX_LEN + 1 + LIB_SUFFIX_LEN;
+ if (fileNameLen < minLength) {
+ continue;
+ }
+
+ const char* lastSlash = strrchr(fileName, '/');
+ if (lastSlash == NULL) {
+ LOG_ASSERT("last slash was null somehow for %s\n", fileName);
+ continue;
+ }
+
+ // Check to make sure the CPU ABI of this file is one we support.
+ const char* cpuAbiOffset = fileName + APK_LIB_LEN;
+ const size_t cpuAbiRegionSize = lastSlash - cpuAbiOffset;
+
+ LOGV("Comparing ABIs %s and %s versus %s\n", cpuAbi.c_str(), cpuAbi2.c_str(), cpuAbiOffset);
+ if (cpuAbi.size() == cpuAbiRegionSize
+ && *(cpuAbiOffset + cpuAbi.size()) == '/'
+ && !strncmp(cpuAbiOffset, cpuAbi.c_str(), cpuAbiRegionSize)) {
+ LOGV("Using ABI %s\n", cpuAbi.c_str());
+ } else if (cpuAbi2.size() == cpuAbiRegionSize
+ && *(cpuAbiOffset + cpuAbi2.size()) == '/'
+ && !strncmp(cpuAbiOffset, cpuAbi2.c_str(), cpuAbiRegionSize)) {
+ LOGV("Using ABI %s\n", cpuAbi2.c_str());
+ } else {
+ LOGV("abi didn't match anything: %s (end at %zd)\n", cpuAbiOffset, cpuAbiRegionSize);
+ continue;
+ }
+
+ // If this is a .so file, check to see if we need to copy it.
+ if (!strncmp(fileName + fileNameLen - LIB_SUFFIX_LEN, LIB_SUFFIX, LIB_SUFFIX_LEN)
+ && !strncmp(lastSlash, LIB_PREFIX, LIB_PREFIX_LEN)
+ && isFilenameSafe(lastSlash + 1)) {
+ callFunc(env, callArg, &zipFile, entry, lastSlash + 1);
+ } else if (!strncmp(lastSlash + 1, GDBSERVER, GDBSERVER_LEN)) {
+ callFunc(env, callArg, &zipFile, entry, lastSlash + 1);
+ }
+ }
+
+ return INSTALL_SUCCEEDED;
+}
+
+static jint
+com_android_internal_content_NativeLibraryHelper_copyNativeBinaries(JNIEnv *env, jclass clazz,
+ jstring javaFilePath, jstring javaNativeLibPath, jstring javaCpuAbi, jstring javaCpuAbi2)
+{
+ return iterateOverNativeFiles(env, javaFilePath, javaCpuAbi, javaCpuAbi2,
+ copyFileIfChanged, &javaNativeLibPath);
+}
+
+static jlong
+com_android_internal_content_NativeLibraryHelper_sumNativeBinaries(JNIEnv *env, jclass clazz,
+ jstring javaFilePath, jstring javaCpuAbi, jstring javaCpuAbi2)
+{
+ size_t totalSize = 0;
+
+ iterateOverNativeFiles(env, javaFilePath, javaCpuAbi, javaCpuAbi2, sumFiles, &totalSize);
+
+ return totalSize;
+}
+
+static JNINativeMethod gMethods[] = {
+ {"nativeCopyNativeBinaries",
+ "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I",
+ (void *)com_android_internal_content_NativeLibraryHelper_copyNativeBinaries},
+ {"nativeSumNativeBinaries",
+ "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)J",
+ (void *)com_android_internal_content_NativeLibraryHelper_sumNativeBinaries},
+};
+
+
+int register_com_android_internal_content_NativeLibraryHelper(JNIEnv *env)
+{
+ return AndroidRuntime::registerNativeMethods(env,
+ "com/android/internal/content/NativeLibraryHelper", gMethods, NELEM(gMethods));
+}
+
+};
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 91003d1..92ba1d0 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -393,8 +393,7 @@
android:description="@string/permdesc_nfc"
android:label="@string/permlab_nfc" />
- <!-- Allows applications to provide VPN functionality.
- @hide Pending API council approval -->
+ <!-- Allows applications to provide VPN functionality -->
<permission android:name="android.permission.VPN"
android:permissionGroup="android.permission-group.NETWORK"
android:protectionLevel="dangerous"
diff --git a/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_dark.png
index 46194d8..9b78ae7 100644
--- a/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_light.png
index fe11736..2860c68 100644
--- a/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_off_focused_holo_dark.png
index a11b128..7087cf7 100644
--- a/core/res/res/drawable-hdpi/btn_check_off_focused_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_check_off_focused_holo_light.png
index 40091d1..5d26dac 100644
--- a/core/res/res/drawable-hdpi/btn_check_off_focused_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_dark.png
index 5b9a889..9531624 100644
--- a/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_light.png b/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_light.png
index 7f3426f..6b1eadc 100644
--- a/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_dark.png
index 9f57be8..671ca31 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_light.png
index 1a26bf6..b024da4 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_dark.png
index 9e74f82..cba1ff5 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_light.png b/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_light.png
index 8143700..62537b0 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_on_focused_holo_dark.png
index c641801..5d559e1 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_focused_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_check_on_focused_holo_light.png
index 895b61d..5041ff9 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_focused_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_on_holo_dark.png
index c0ffb41..3492b8a 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_holo_light.png b/core/res/res/drawable-hdpi/btn_check_on_holo_light.png
index 466adf2..49e837c 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_dark.png
index fc542d9..0d4e8b3 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_light.png b/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_light.png
index a5f8f93..c4283b6 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_disabled_focused_holo_dark.9.png b/core/res/res/drawable-hdpi/btn_default_disabled_focused_holo_dark.9.png
index 8ea94e1..1b34672 100644
--- a/core/res/res/drawable-hdpi/btn_default_disabled_focused_holo_dark.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_disabled_focused_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_disabled_focused_holo_light.9.png b/core/res/res/drawable-hdpi/btn_default_disabled_focused_holo_light.9.png
index 8ea94e1..1b34672 100644
--- a/core/res/res/drawable-hdpi/btn_default_disabled_focused_holo_light.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_disabled_focused_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_disabled_holo.9.png b/core/res/res/drawable-hdpi/btn_default_disabled_holo.9.png
index 6840962..71ae113 100644
--- a/core/res/res/drawable-hdpi/btn_default_disabled_holo.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_disabled_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_disabled_holo_dark.9.png b/core/res/res/drawable-hdpi/btn_default_disabled_holo_dark.9.png
index bee345e..739dff3 100644
--- a/core/res/res/drawable-hdpi/btn_default_disabled_holo_dark.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_disabled_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_disabled_holo_light.9.png b/core/res/res/drawable-hdpi/btn_default_disabled_holo_light.9.png
index bee345e..26976c5 100644
--- a/core/res/res/drawable-hdpi/btn_default_disabled_holo_light.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_disabled_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_focused_holo.9.png b/core/res/res/drawable-hdpi/btn_default_focused_holo.9.png
index b3196c3..9d787f1 100644
--- a/core/res/res/drawable-hdpi/btn_default_focused_holo.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_focused_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_focused_holo_dark.9.png b/core/res/res/drawable-hdpi/btn_default_focused_holo_dark.9.png
index e83686a..7699c47 100644
--- a/core/res/res/drawable-hdpi/btn_default_focused_holo_dark.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_focused_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_focused_holo_light.9.png b/core/res/res/drawable-hdpi/btn_default_focused_holo_light.9.png
index e83686a..7699c47 100644
--- a/core/res/res/drawable-hdpi/btn_default_focused_holo_light.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_focused_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_normal_holo.9.png b/core/res/res/drawable-hdpi/btn_default_normal_holo.9.png
index c44ae7a..1e9c9d2 100644
--- a/core/res/res/drawable-hdpi/btn_default_normal_holo.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_normal_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_normal_holo_dark.9.png b/core/res/res/drawable-hdpi/btn_default_normal_holo_dark.9.png
index 42e8ba4..27e7965 100644
--- a/core/res/res/drawable-hdpi/btn_default_normal_holo_dark.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_normal_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_normal_holo_light.9.png b/core/res/res/drawable-hdpi/btn_default_normal_holo_light.9.png
index 42e8ba4..1dbabd3 100644
--- a/core/res/res/drawable-hdpi/btn_default_normal_holo_light.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_normal_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_pressed_holo.9.png b/core/res/res/drawable-hdpi/btn_default_pressed_holo.9.png
index e240a2d..12eec10 100644
--- a/core/res/res/drawable-hdpi/btn_default_pressed_holo.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_pressed_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_pressed_holo_dark.9.png b/core/res/res/drawable-hdpi/btn_default_pressed_holo_dark.9.png
index a24b13b..5a94b8d 100644
--- a/core/res/res/drawable-hdpi/btn_default_pressed_holo_dark.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_pressed_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_pressed_holo_light.9.png b/core/res/res/drawable-hdpi/btn_default_pressed_holo_light.9.png
index a24b13b..5a94b8d 100644
--- a/core/res/res/drawable-hdpi/btn_default_pressed_holo_light.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_pressed_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/expander_close_holo_dark.9.png b/core/res/res/drawable-hdpi/expander_close_holo_dark.9.png
index 6df00f2..dc0c534 100644
--- a/core/res/res/drawable-hdpi/expander_close_holo_dark.9.png
+++ b/core/res/res/drawable-hdpi/expander_close_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/expander_close_holo_light.9.png b/core/res/res/drawable-hdpi/expander_close_holo_light.9.png
index a63cdbb..2dd4548 100644
--- a/core/res/res/drawable-hdpi/expander_close_holo_light.9.png
+++ b/core/res/res/drawable-hdpi/expander_close_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/expander_open_holo_dark.9.png b/core/res/res/drawable-hdpi/expander_open_holo_dark.9.png
index 63015ec..d9fd48f 100644
--- a/core/res/res/drawable-hdpi/expander_open_holo_dark.9.png
+++ b/core/res/res/drawable-hdpi/expander_open_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/expander_open_holo_light.9.png b/core/res/res/drawable-hdpi/expander_open_holo_light.9.png
index ca4dd76..7cec83a 100644
--- a/core/res/res/drawable-hdpi/expander_open_holo_light.9.png
+++ b/core/res/res/drawable-hdpi/expander_open_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_paste_bubble_disabled_holo.png b/core/res/res/drawable-hdpi/ic_paste_bubble_disabled_holo.png
deleted file mode 100644
index 42ac16b..0000000
--- a/core/res/res/drawable-hdpi/ic_paste_bubble_disabled_holo.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_paste_bubble_holo.png b/core/res/res/drawable-hdpi/ic_paste_bubble_holo.png
deleted file mode 100644
index 15bd8b2..0000000
--- a/core/res/res/drawable-hdpi/ic_paste_bubble_holo.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_activated_holo.9.png b/core/res/res/drawable-hdpi/list_activated_holo.9.png
index 12a379b..4ea7afa 100644
--- a/core/res/res/drawable-hdpi/list_activated_holo.9.png
+++ b/core/res/res/drawable-hdpi/list_activated_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_focused_holo.9.png b/core/res/res/drawable-hdpi/list_focused_holo.9.png
index e354629..516f5c7 100644
--- a/core/res/res/drawable-hdpi/list_focused_holo.9.png
+++ b/core/res/res/drawable-hdpi/list_focused_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_longpressed_holo.9.png b/core/res/res/drawable-hdpi/list_longpressed_holo.9.png
index 367c7d9..d06549c 100644
--- a/core/res/res/drawable-hdpi/list_longpressed_holo.9.png
+++ b/core/res/res/drawable-hdpi/list_longpressed_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_pressed_holo_dark.9.png b/core/res/res/drawable-hdpi/list_pressed_holo_dark.9.png
index 9eae8f4..82f6734 100644
--- a/core/res/res/drawable-hdpi/list_pressed_holo_dark.9.png
+++ b/core/res/res/drawable-hdpi/list_pressed_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_pressed_holo_light.9.png b/core/res/res/drawable-hdpi/list_pressed_holo_light.9.png
index a9131fc..82f6734 100644
--- a/core/res/res/drawable-hdpi/list_pressed_holo_light.9.png
+++ b/core/res/res/drawable-hdpi/list_pressed_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_section_divider_holo_dark.9.png b/core/res/res/drawable-hdpi/list_section_divider_holo_dark.9.png
index 21e2fb9..5522f5c 100644
--- a/core/res/res/drawable-hdpi/list_section_divider_holo_dark.9.png
+++ b/core/res/res/drawable-hdpi/list_section_divider_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_section_divider_holo_light.9.png b/core/res/res/drawable-hdpi/list_section_divider_holo_light.9.png
index 8e9c02c..a9dbfb9 100644
--- a/core/res/res/drawable-hdpi/list_section_divider_holo_light.9.png
+++ b/core/res/res/drawable-hdpi/list_section_divider_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_selected_holo_dark.9.png b/core/res/res/drawable-hdpi/list_selected_holo_dark.9.png
index 780e86d..5f5b23f 100644
--- a/core/res/res/drawable-hdpi/list_selected_holo_dark.9.png
+++ b/core/res/res/drawable-hdpi/list_selected_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_selected_holo_light.9.png b/core/res/res/drawable-hdpi/list_selected_holo_light.9.png
index 999d05b..5f5b23f 100644
--- a/core/res/res/drawable-hdpi/list_selected_holo_light.9.png
+++ b/core/res/res/drawable-hdpi/list_selected_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_inline_error_holo_dark.9.png b/core/res/res/drawable-hdpi/popup_inline_error_holo_dark.9.png
index daa47b7..9f3060d 100644
--- a/core/res/res/drawable-hdpi/popup_inline_error_holo_dark.9.png
+++ b/core/res/res/drawable-hdpi/popup_inline_error_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_inline_error_holo_light.9.png b/core/res/res/drawable-hdpi/popup_inline_error_holo_light.9.png
index 6c45935..411f639 100644
--- a/core/res/res/drawable-hdpi/popup_inline_error_holo_light.9.png
+++ b/core/res/res/drawable-hdpi/popup_inline_error_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_audio_away.png b/core/res/res/drawable-hdpi/presence_audio_away.png
index b26c0e0..c6af4f7 100644
--- a/core/res/res/drawable-hdpi/presence_audio_away.png
+++ b/core/res/res/drawable-hdpi/presence_audio_away.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_audio_busy.png b/core/res/res/drawable-hdpi/presence_audio_busy.png
index 0124659..ddba88d 100644
--- a/core/res/res/drawable-hdpi/presence_audio_busy.png
+++ b/core/res/res/drawable-hdpi/presence_audio_busy.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_audio_online.png b/core/res/res/drawable-hdpi/presence_audio_online.png
index 520bcd8..058963c 100644
--- a/core/res/res/drawable-hdpi/presence_audio_online.png
+++ b/core/res/res/drawable-hdpi/presence_audio_online.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_away.png b/core/res/res/drawable-hdpi/presence_away.png
index 6a27382..4ef2821 100644
--- a/core/res/res/drawable-hdpi/presence_away.png
+++ b/core/res/res/drawable-hdpi/presence_away.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_busy.png b/core/res/res/drawable-hdpi/presence_busy.png
index 7278aec..391d1c9 100644
--- a/core/res/res/drawable-hdpi/presence_busy.png
+++ b/core/res/res/drawable-hdpi/presence_busy.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_invisible.png b/core/res/res/drawable-hdpi/presence_invisible.png
index cff85be..8157010 100644
--- a/core/res/res/drawable-hdpi/presence_invisible.png
+++ b/core/res/res/drawable-hdpi/presence_invisible.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_offline.png b/core/res/res/drawable-hdpi/presence_offline.png
index 6c3fbb6..dc20b0f 100644
--- a/core/res/res/drawable-hdpi/presence_offline.png
+++ b/core/res/res/drawable-hdpi/presence_offline.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_online.png b/core/res/res/drawable-hdpi/presence_online.png
index 77c368a..7694446 100644
--- a/core/res/res/drawable-hdpi/presence_online.png
+++ b/core/res/res/drawable-hdpi/presence_online.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_video_away.png b/core/res/res/drawable-hdpi/presence_video_away.png
index 302f538..0e9e384 100644
--- a/core/res/res/drawable-hdpi/presence_video_away.png
+++ b/core/res/res/drawable-hdpi/presence_video_away.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_video_busy.png b/core/res/res/drawable-hdpi/presence_video_busy.png
index 8fdea57..5b01840 100644
--- a/core/res/res/drawable-hdpi/presence_video_busy.png
+++ b/core/res/res/drawable-hdpi/presence_video_busy.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_video_online.png b/core/res/res/drawable-hdpi/presence_video_online.png
index 6c1fd6b..fe285f5 100644
--- a/core/res/res/drawable-hdpi/presence_video_online.png
+++ b/core/res/res/drawable-hdpi/presence_video_online.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_16_inner_holo.png b/core/res/res/drawable-hdpi/spinner_16_inner_holo.png
index ff363f0..a2a6678 100644
--- a/core/res/res/drawable-hdpi/spinner_16_inner_holo.png
+++ b/core/res/res/drawable-hdpi/spinner_16_inner_holo.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_16_outer_holo.png b/core/res/res/drawable-hdpi/spinner_16_outer_holo.png
index a5a0b98..733e852 100644
--- a/core/res/res/drawable-hdpi/spinner_16_outer_holo.png
+++ b/core/res/res/drawable-hdpi/spinner_16_outer_holo.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_20_inner_holo.png b/core/res/res/drawable-hdpi/spinner_20_inner_holo.png
index 16742e8..e81e002 100644
--- a/core/res/res/drawable-hdpi/spinner_20_inner_holo.png
+++ b/core/res/res/drawable-hdpi/spinner_20_inner_holo.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_20_outer_holo.png b/core/res/res/drawable-hdpi/spinner_20_outer_holo.png
index d6aa73b..1da2f90 100644
--- a/core/res/res/drawable-hdpi/spinner_20_outer_holo.png
+++ b/core/res/res/drawable-hdpi/spinner_20_outer_holo.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_48_inner_holo.png b/core/res/res/drawable-hdpi/spinner_48_inner_holo.png
index ee3f4c2..8bbe6a0 100644
--- a/core/res/res/drawable-hdpi/spinner_48_inner_holo.png
+++ b/core/res/res/drawable-hdpi/spinner_48_inner_holo.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_48_outer_holo.png b/core/res/res/drawable-hdpi/spinner_48_outer_holo.png
index 7c59e2f..d023d10 100644
--- a/core/res/res/drawable-hdpi/spinner_48_outer_holo.png
+++ b/core/res/res/drawable-hdpi/spinner_48_outer_holo.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_76_inner_holo.png b/core/res/res/drawable-hdpi/spinner_76_inner_holo.png
index a1ef44c..fa6cb6f 100644
--- a/core/res/res/drawable-hdpi/spinner_76_inner_holo.png
+++ b/core/res/res/drawable-hdpi/spinner_76_inner_holo.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_76_outer_holo.png b/core/res/res/drawable-hdpi/spinner_76_outer_holo.png
index 69e3ab7..00d577f 100644
--- a/core/res/res/drawable-hdpi/spinner_76_outer_holo.png
+++ b/core/res/res/drawable-hdpi/spinner_76_outer_holo.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_active_holo_dark.9.png b/core/res/res/drawable-hdpi/textfield_active_holo_dark.9.png
deleted file mode 100644
index a38c03a..0000000
--- a/core/res/res/drawable-hdpi/textfield_active_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_active_holo_light.9.png b/core/res/res/drawable-hdpi/textfield_active_holo_light.9.png
deleted file mode 100644
index 6a88a69..0000000
--- a/core/res/res/drawable-hdpi/textfield_active_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_multiline_active_holo_dark.9.png b/core/res/res/drawable-hdpi/textfield_multiline_active_holo_dark.9.png
deleted file mode 100644
index 7528479..0000000
--- a/core/res/res/drawable-hdpi/textfield_multiline_active_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_multiline_active_holo_light.9.png b/core/res/res/drawable-hdpi/textfield_multiline_active_holo_light.9.png
deleted file mode 100644
index 4c7d9e7..0000000
--- a/core/res/res/drawable-hdpi/textfield_multiline_active_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_dark.png
index 031a54b..3bf750f 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_light.png
index 538e43c..d2dc269 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_focused_holo_dark.png
index 3538aab..d38a140 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_focused_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_focused_holo_light.png
index edc3f64..114e6f8 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_focused_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_normal_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_normal_holo_dark.png
index 5434614..51512f5 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_normal_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_normal_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_normal_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_normal_holo_light.png
index 0d43dc4..aebfa3e 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_normal_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_normal_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_dark.png
index 64bda76..f653fae 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_light.png
index 39c9ea4..57192f2 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_dark.png
index 6db6c5d..5435438 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_light.png
index 595261f..b350144 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_dark.png
index f1129ef..5010bff 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_light.png b/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_light.png
index c49dcc9..20f8d3d 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_on_focused_holo_dark.png
index 423076c..96a9548 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_focused_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_check_on_focused_holo_light.png
index e8b9a3b..8871519 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_focused_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_on_holo_dark.png
index e33fbab..4738e5a 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_holo_light.png b/core/res/res/drawable-mdpi/btn_check_on_holo_light.png
index 8fdb342..db93b6d 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_dark.png
index 6690f64..b47b5dd 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_light.png b/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_light.png
index b7df43e..ad6947a 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_disabled_focused_holo_dark.9.png b/core/res/res/drawable-mdpi/btn_default_disabled_focused_holo_dark.9.png
index 5ce7321..918f972 100644
--- a/core/res/res/drawable-mdpi/btn_default_disabled_focused_holo_dark.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_disabled_focused_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_disabled_focused_holo_light.9.png b/core/res/res/drawable-mdpi/btn_default_disabled_focused_holo_light.9.png
index 5ce7321..918f972 100644
--- a/core/res/res/drawable-mdpi/btn_default_disabled_focused_holo_light.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_disabled_focused_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_disabled_holo.9.png b/core/res/res/drawable-mdpi/btn_default_disabled_holo.9.png
index 9a24b9c..1ae6cf2 100644
--- a/core/res/res/drawable-mdpi/btn_default_disabled_holo.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_disabled_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_disabled_holo_dark.9.png b/core/res/res/drawable-mdpi/btn_default_disabled_holo_dark.9.png
index 34f69d3..0514a7c 100644
--- a/core/res/res/drawable-mdpi/btn_default_disabled_holo_dark.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_disabled_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_disabled_holo_light.9.png b/core/res/res/drawable-mdpi/btn_default_disabled_holo_light.9.png
index 34f69d3..8cc4daf 100644
--- a/core/res/res/drawable-mdpi/btn_default_disabled_holo_light.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_disabled_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_focused_holo.9.png b/core/res/res/drawable-mdpi/btn_default_focused_holo.9.png
index 93d9741..6449650 100644
--- a/core/res/res/drawable-mdpi/btn_default_focused_holo.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_focused_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_focused_holo_dark.9.png b/core/res/res/drawable-mdpi/btn_default_focused_holo_dark.9.png
index 0629efe..7f44eae2 100644
--- a/core/res/res/drawable-mdpi/btn_default_focused_holo_dark.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_focused_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_focused_holo_light.9.png b/core/res/res/drawable-mdpi/btn_default_focused_holo_light.9.png
index 0629efe..7f44eae2 100644
--- a/core/res/res/drawable-mdpi/btn_default_focused_holo_light.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_focused_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_normal_holo.9.png b/core/res/res/drawable-mdpi/btn_default_normal_holo.9.png
index f462d98..3e9e6c3 100644
--- a/core/res/res/drawable-mdpi/btn_default_normal_holo.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_normal_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_normal_holo_dark.9.png b/core/res/res/drawable-mdpi/btn_default_normal_holo_dark.9.png
index a2f411e..9df36a2 100644
--- a/core/res/res/drawable-mdpi/btn_default_normal_holo_dark.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_normal_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_normal_holo_light.9.png b/core/res/res/drawable-mdpi/btn_default_normal_holo_light.9.png
index a2f411e..7abdfde 100644
--- a/core/res/res/drawable-mdpi/btn_default_normal_holo_light.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_normal_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_pressed_holo.9.png b/core/res/res/drawable-mdpi/btn_default_pressed_holo.9.png
index 30373a6..df4927f 100644
--- a/core/res/res/drawable-mdpi/btn_default_pressed_holo.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_pressed_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_pressed_holo_dark.9.png b/core/res/res/drawable-mdpi/btn_default_pressed_holo_dark.9.png
index 231997a..cb70e35 100644
--- a/core/res/res/drawable-mdpi/btn_default_pressed_holo_dark.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_pressed_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_pressed_holo_light.9.png b/core/res/res/drawable-mdpi/btn_default_pressed_holo_light.9.png
index 231997a..cb70e35 100644
--- a/core/res/res/drawable-mdpi/btn_default_pressed_holo_light.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_pressed_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/expander_close_holo_dark.9.png b/core/res/res/drawable-mdpi/expander_close_holo_dark.9.png
index 5ea5692..e37c559 100644
--- a/core/res/res/drawable-mdpi/expander_close_holo_dark.9.png
+++ b/core/res/res/drawable-mdpi/expander_close_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/expander_close_holo_light.9.png b/core/res/res/drawable-mdpi/expander_close_holo_light.9.png
index 7b9805b..2ea9668 100644
--- a/core/res/res/drawable-mdpi/expander_close_holo_light.9.png
+++ b/core/res/res/drawable-mdpi/expander_close_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/expander_open_holo_dark.9.png b/core/res/res/drawable-mdpi/expander_open_holo_dark.9.png
index 83cb653..18a991f 100644
--- a/core/res/res/drawable-mdpi/expander_open_holo_dark.9.png
+++ b/core/res/res/drawable-mdpi/expander_open_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/expander_open_holo_light.9.png b/core/res/res/drawable-mdpi/expander_open_holo_light.9.png
index bc7a117..28b9ec7 100644
--- a/core/res/res/drawable-mdpi/expander_open_holo_light.9.png
+++ b/core/res/res/drawable-mdpi/expander_open_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_paste_bubble_disabled_holo.png b/core/res/res/drawable-mdpi/ic_paste_bubble_disabled_holo.png
deleted file mode 100644
index ce6bd86..0000000
--- a/core/res/res/drawable-mdpi/ic_paste_bubble_disabled_holo.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_paste_bubble_holo.png b/core/res/res/drawable-mdpi/ic_paste_bubble_holo.png
deleted file mode 100644
index e483e84..0000000
--- a/core/res/res/drawable-mdpi/ic_paste_bubble_holo.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/list_activated_holo.9.png b/core/res/res/drawable-mdpi/list_activated_holo.9.png
index f162c9a..3bf8e03 100644
--- a/core/res/res/drawable-mdpi/list_activated_holo.9.png
+++ b/core/res/res/drawable-mdpi/list_activated_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/list_focused_holo.9.png b/core/res/res/drawable-mdpi/list_focused_holo.9.png
index e2449dd..7c0599e 100644
--- a/core/res/res/drawable-mdpi/list_focused_holo.9.png
+++ b/core/res/res/drawable-mdpi/list_focused_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/list_longpressed_holo.9.png b/core/res/res/drawable-mdpi/list_longpressed_holo.9.png
index 3483891..2b8a0b3 100644
--- a/core/res/res/drawable-mdpi/list_longpressed_holo.9.png
+++ b/core/res/res/drawable-mdpi/list_longpressed_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/list_pressed_holo_dark.9.png b/core/res/res/drawable-mdpi/list_pressed_holo_dark.9.png
index e3344b6..b60aaa5 100644
--- a/core/res/res/drawable-mdpi/list_pressed_holo_dark.9.png
+++ b/core/res/res/drawable-mdpi/list_pressed_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/list_pressed_holo_light.9.png b/core/res/res/drawable-mdpi/list_pressed_holo_light.9.png
index 2365978..b60aaa5 100644
--- a/core/res/res/drawable-mdpi/list_pressed_holo_light.9.png
+++ b/core/res/res/drawable-mdpi/list_pressed_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/list_section_divider_holo_dark.9.png b/core/res/res/drawable-mdpi/list_section_divider_holo_dark.9.png
index b888135..f707453 100644
--- a/core/res/res/drawable-mdpi/list_section_divider_holo_dark.9.png
+++ b/core/res/res/drawable-mdpi/list_section_divider_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/list_section_divider_holo_light.9.png b/core/res/res/drawable-mdpi/list_section_divider_holo_light.9.png
index 1cc1f7f..441ccc0 100644
--- a/core/res/res/drawable-mdpi/list_section_divider_holo_light.9.png
+++ b/core/res/res/drawable-mdpi/list_section_divider_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/list_selected_holo_dark.9.png b/core/res/res/drawable-mdpi/list_selected_holo_dark.9.png
index a7f6277..faa0672 100644
--- a/core/res/res/drawable-mdpi/list_selected_holo_dark.9.png
+++ b/core/res/res/drawable-mdpi/list_selected_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/list_selected_holo_light.9.png b/core/res/res/drawable-mdpi/list_selected_holo_light.9.png
index b6029ec..faa0672 100644
--- a/core/res/res/drawable-mdpi/list_selected_holo_light.9.png
+++ b/core/res/res/drawable-mdpi/list_selected_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/popup_inline_error_holo_dark.9.png b/core/res/res/drawable-mdpi/popup_inline_error_holo_dark.9.png
index 4092728..c3b8db9 100755..100644
--- a/core/res/res/drawable-mdpi/popup_inline_error_holo_dark.9.png
+++ b/core/res/res/drawable-mdpi/popup_inline_error_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/popup_inline_error_holo_light.9.png b/core/res/res/drawable-mdpi/popup_inline_error_holo_light.9.png
index 67a2cd4..c228a83 100755..100644
--- a/core/res/res/drawable-mdpi/popup_inline_error_holo_light.9.png
+++ b/core/res/res/drawable-mdpi/popup_inline_error_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/presence_audio_away.png b/core/res/res/drawable-mdpi/presence_audio_away.png
index cb30b32..e68bc11 100644
--- a/core/res/res/drawable-mdpi/presence_audio_away.png
+++ b/core/res/res/drawable-mdpi/presence_audio_away.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/presence_audio_busy.png b/core/res/res/drawable-mdpi/presence_audio_busy.png
index 40f168c..caa6d06 100644
--- a/core/res/res/drawable-mdpi/presence_audio_busy.png
+++ b/core/res/res/drawable-mdpi/presence_audio_busy.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/presence_audio_online.png b/core/res/res/drawable-mdpi/presence_audio_online.png
index 3faede8..a740598 100644
--- a/core/res/res/drawable-mdpi/presence_audio_online.png
+++ b/core/res/res/drawable-mdpi/presence_audio_online.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/presence_away.png b/core/res/res/drawable-mdpi/presence_away.png
index a777440..62ee0ca 100644
--- a/core/res/res/drawable-mdpi/presence_away.png
+++ b/core/res/res/drawable-mdpi/presence_away.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/presence_busy.png b/core/res/res/drawable-mdpi/presence_busy.png
index d33d0f0..6def876 100644
--- a/core/res/res/drawable-mdpi/presence_busy.png
+++ b/core/res/res/drawable-mdpi/presence_busy.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/presence_invisible.png b/core/res/res/drawable-mdpi/presence_invisible.png
index 527e97c..715a164 100644
--- a/core/res/res/drawable-mdpi/presence_invisible.png
+++ b/core/res/res/drawable-mdpi/presence_invisible.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/presence_offline.png b/core/res/res/drawable-mdpi/presence_offline.png
index 4320963..262d530 100644
--- a/core/res/res/drawable-mdpi/presence_offline.png
+++ b/core/res/res/drawable-mdpi/presence_offline.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/presence_online.png b/core/res/res/drawable-mdpi/presence_online.png
index b41e8d9..e16ec81 100644
--- a/core/res/res/drawable-mdpi/presence_online.png
+++ b/core/res/res/drawable-mdpi/presence_online.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/presence_video_away.png b/core/res/res/drawable-mdpi/presence_video_away.png
index b56275f..2d3508d 100644
--- a/core/res/res/drawable-mdpi/presence_video_away.png
+++ b/core/res/res/drawable-mdpi/presence_video_away.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/presence_video_busy.png b/core/res/res/drawable-mdpi/presence_video_busy.png
index f1cf238..f317efa 100644
--- a/core/res/res/drawable-mdpi/presence_video_busy.png
+++ b/core/res/res/drawable-mdpi/presence_video_busy.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/presence_video_online.png b/core/res/res/drawable-mdpi/presence_video_online.png
index 10bbd74..777b6ff 100644
--- a/core/res/res/drawable-mdpi/presence_video_online.png
+++ b/core/res/res/drawable-mdpi/presence_video_online.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/spinner_16_inner_holo.png b/core/res/res/drawable-mdpi/spinner_16_inner_holo.png
index 2703553..537ab8c 100644
--- a/core/res/res/drawable-mdpi/spinner_16_inner_holo.png
+++ b/core/res/res/drawable-mdpi/spinner_16_inner_holo.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/spinner_16_outer_holo.png b/core/res/res/drawable-mdpi/spinner_16_outer_holo.png
index 87d2c87..cee54b7 100644
--- a/core/res/res/drawable-mdpi/spinner_16_outer_holo.png
+++ b/core/res/res/drawable-mdpi/spinner_16_outer_holo.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/spinner_20_inner_holo.png b/core/res/res/drawable-mdpi/spinner_20_inner_holo.png
index 3c97355..67fb438 100644
--- a/core/res/res/drawable-mdpi/spinner_20_inner_holo.png
+++ b/core/res/res/drawable-mdpi/spinner_20_inner_holo.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/spinner_20_outer_holo.png b/core/res/res/drawable-mdpi/spinner_20_outer_holo.png
index 96155e3..25beedd 100644
--- a/core/res/res/drawable-mdpi/spinner_20_outer_holo.png
+++ b/core/res/res/drawable-mdpi/spinner_20_outer_holo.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/spinner_48_inner_holo.png b/core/res/res/drawable-mdpi/spinner_48_inner_holo.png
index 26dcfbf..ed446d6 100644
--- a/core/res/res/drawable-mdpi/spinner_48_inner_holo.png
+++ b/core/res/res/drawable-mdpi/spinner_48_inner_holo.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/spinner_48_outer_holo.png b/core/res/res/drawable-mdpi/spinner_48_outer_holo.png
index 49dad0c..08b2dcd 100644
--- a/core/res/res/drawable-mdpi/spinner_48_outer_holo.png
+++ b/core/res/res/drawable-mdpi/spinner_48_outer_holo.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/spinner_76_inner_holo.png b/core/res/res/drawable-mdpi/spinner_76_inner_holo.png
index ebccabd..2d5e5a1 100644
--- a/core/res/res/drawable-mdpi/spinner_76_inner_holo.png
+++ b/core/res/res/drawable-mdpi/spinner_76_inner_holo.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/spinner_76_outer_holo.png b/core/res/res/drawable-mdpi/spinner_76_outer_holo.png
index 37d3f58..2edad73 100644
--- a/core/res/res/drawable-mdpi/spinner_76_outer_holo.png
+++ b/core/res/res/drawable-mdpi/spinner_76_outer_holo.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/textfield_active_holo_dark.9.png b/core/res/res/drawable-mdpi/textfield_active_holo_dark.9.png
deleted file mode 100644
index d37c8b2..0000000
--- a/core/res/res/drawable-mdpi/textfield_active_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/textfield_active_holo_light.9.png b/core/res/res/drawable-mdpi/textfield_active_holo_light.9.png
deleted file mode 100644
index 16f2197..0000000
--- a/core/res/res/drawable-mdpi/textfield_active_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/textfield_multiline_active_holo_dark.9.png b/core/res/res/drawable-mdpi/textfield_multiline_active_holo_dark.9.png
deleted file mode 100644
index 44a5d82..0000000
--- a/core/res/res/drawable-mdpi/textfield_multiline_active_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/textfield_multiline_active_holo_light.9.png b/core/res/res/drawable-mdpi/textfield_multiline_active_holo_light.9.png
deleted file mode 100644
index 6613683..0000000
--- a/core/res/res/drawable-mdpi/textfield_multiline_active_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-nodpi/background_holo_dark.png b/core/res/res/drawable-nodpi/background_holo_dark.png
index ea85a3f..85bd6f7 100644
--- a/core/res/res/drawable-nodpi/background_holo_dark.png
+++ b/core/res/res/drawable-nodpi/background_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-nodpi/background_holo_light.png b/core/res/res/drawable-nodpi/background_holo_light.png
index 04f52ae..5fb4a9d 100644
--- a/core/res/res/drawable-nodpi/background_holo_light.png
+++ b/core/res/res/drawable-nodpi/background_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-nodpi/list_divider_holo_dark.9.png b/core/res/res/drawable-nodpi/list_divider_holo_dark.9.png
new file mode 100644
index 0000000..2e7951f
--- /dev/null
+++ b/core/res/res/drawable-nodpi/list_divider_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-nodpi/list_divider_holo_light.9.png b/core/res/res/drawable-nodpi/list_divider_holo_light.9.png
new file mode 100644
index 0000000..17d8a54
--- /dev/null
+++ b/core/res/res/drawable-nodpi/list_divider_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off.png b/core/res/res/drawable-xhdpi/btn_check_off.png
new file mode 100644
index 0000000..083e04a
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disable.png b/core/res/res/drawable-xhdpi/btn_check_off_disable.png
new file mode 100644
index 0000000..e746557
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_disable.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disable_focused.png b/core/res/res/drawable-xhdpi/btn_check_off_disable_focused.png
new file mode 100644
index 0000000..377b645
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disable_focused_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_off_disable_focused_holo_dark.png
new file mode 100644
index 0000000..df66e7e
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_disable_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disable_focused_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_off_disable_focused_holo_light.png
new file mode 100644
index 0000000..96b2a0f
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_disable_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disable_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_off_disable_holo_dark.png
new file mode 100644
index 0000000..df66e7e
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_disable_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disable_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_off_disable_holo_light.png
new file mode 100644
index 0000000..96b2a0f
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_disable_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disabled_focused_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_off_disabled_focused_holo_dark.png
new file mode 100644
index 0000000..0f34797
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_disabled_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disabled_focused_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_off_disabled_focused_holo_light.png
new file mode 100644
index 0000000..95f8a15
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_disabled_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disabled_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_off_disabled_holo_dark.png
new file mode 100644
index 0000000..26a4540
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_disabled_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disabled_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_off_disabled_holo_light.png
new file mode 100644
index 0000000..803f0af
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_disabled_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_focused_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_off_focused_holo_dark.png
new file mode 100644
index 0000000..9a3e472
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_focused_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_off_focused_holo_light.png
new file mode 100644
index 0000000..dce8e06
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_holo.png b/core/res/res/drawable-xhdpi/btn_check_off_holo.png
new file mode 100644
index 0000000..bdab4d0
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_holo.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_off_holo_dark.png
new file mode 100644
index 0000000..f8afd6a
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_off_holo_light.png
new file mode 100644
index 0000000..902b3a5
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_normal_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_off_normal_holo_dark.png
new file mode 100644
index 0000000..ee19faf
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_normal_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_normal_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_off_normal_holo_light.png
new file mode 100644
index 0000000..ea7dec8
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_normal_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_pressed.png b/core/res/res/drawable-xhdpi/btn_check_off_pressed.png
new file mode 100644
index 0000000..a3065f6
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_pressed_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_off_pressed_holo_dark.png
new file mode 100644
index 0000000..575f4e8
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_pressed_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_pressed_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_off_pressed_holo_light.png
new file mode 100644
index 0000000..8d5d780
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_pressed_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_off_selected.png b/core/res/res/drawable-xhdpi/btn_check_off_selected.png
new file mode 100644
index 0000000..edfb30a
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_on.png b/core/res/res/drawable-xhdpi/btn_check_on.png
new file mode 100644
index 0000000..c1dee18
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_on.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_on_disable.png b/core/res/res/drawable-xhdpi/btn_check_on_disable.png
new file mode 100644
index 0000000..179f191
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_on_disable.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_on_disabled_focused_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_on_disabled_focused_holo_dark.png
new file mode 100644
index 0000000..02e4254
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_on_disabled_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_on_disabled_focused_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_on_disabled_focused_holo_light.png
new file mode 100644
index 0000000..7e61802
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_on_disabled_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_on_disabled_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_on_disabled_holo_dark.png
new file mode 100644
index 0000000..cc6326e
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_on_disabled_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_on_disabled_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_on_disabled_holo_light.png
new file mode 100644
index 0000000..f468781
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_on_disabled_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_on_focused_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_on_focused_holo_dark.png
new file mode 100644
index 0000000..1e25364
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_on_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_on_focused_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_on_focused_holo_light.png
new file mode 100644
index 0000000..fc1af9f
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_on_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_on_holo.png b/core/res/res/drawable-xhdpi/btn_check_on_holo.png
new file mode 100644
index 0000000..75f6652
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_on_holo.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_on_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_on_holo_dark.png
new file mode 100644
index 0000000..c327f56
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_on_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_on_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_on_holo_light.png
new file mode 100644
index 0000000..74a2ea3
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_on_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_on_pressed.png b/core/res/res/drawable-xhdpi/btn_check_on_pressed.png
new file mode 100644
index 0000000..f84a5b0
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_on_pressed_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_on_pressed_holo_dark.png
new file mode 100644
index 0000000..48a6431
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_on_pressed_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_on_pressed_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_on_pressed_holo_light.png
new file mode 100644
index 0000000..5defddf
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_on_pressed_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_check_on_selected.png b/core/res/res/drawable-xhdpi/btn_check_on_selected.png
new file mode 100644
index 0000000..963c68e
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_check_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_disabled_focused_holo_dark.9.png b/core/res/res/drawable-xhdpi/btn_default_disabled_focused_holo_dark.9.png
new file mode 100644
index 0000000..eb7ce5e
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_disabled_focused_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_disabled_focused_holo_light.9.png b/core/res/res/drawable-xhdpi/btn_default_disabled_focused_holo_light.9.png
new file mode 100644
index 0000000..eb7ce5e
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_disabled_focused_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_disabled_holo.9.png b/core/res/res/drawable-xhdpi/btn_default_disabled_holo.9.png
new file mode 100644
index 0000000..4e4d3d4
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_disabled_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_disabled_holo_dark.9.png b/core/res/res/drawable-xhdpi/btn_default_disabled_holo_dark.9.png
new file mode 100644
index 0000000..ee291b6
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_disabled_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_disabled_holo_light.9.png b/core/res/res/drawable-xhdpi/btn_default_disabled_holo_light.9.png
new file mode 100644
index 0000000..83e5011
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_disabled_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_focused_holo.9.png b/core/res/res/drawable-xhdpi/btn_default_focused_holo.9.png
new file mode 100644
index 0000000..67f007a
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_focused_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_focused_holo_dark.9.png b/core/res/res/drawable-xhdpi/btn_default_focused_holo_dark.9.png
new file mode 100644
index 0000000..4764d1b
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_focused_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_focused_holo_light.9.png b/core/res/res/drawable-xhdpi/btn_default_focused_holo_light.9.png
new file mode 100644
index 0000000..4764d1b
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_focused_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_normal.9.png b/core/res/res/drawable-xhdpi/btn_default_normal.9.png
new file mode 100644
index 0000000..9f18a87
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_normal_disable.9.png b/core/res/res/drawable-xhdpi/btn_default_normal_disable.9.png
new file mode 100644
index 0000000..652aa3e
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_normal_disable.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_normal_disable_focused.9.png b/core/res/res/drawable-xhdpi/btn_default_normal_disable_focused.9.png
new file mode 100644
index 0000000..92a7664
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_normal_disable_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_normal_holo.9.png b/core/res/res/drawable-xhdpi/btn_default_normal_holo.9.png
new file mode 100644
index 0000000..b949121
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_normal_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_normal_holo_dark.9.png b/core/res/res/drawable-xhdpi/btn_default_normal_holo_dark.9.png
new file mode 100644
index 0000000..6a35514
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_normal_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_normal_holo_light.9.png b/core/res/res/drawable-xhdpi/btn_default_normal_holo_light.9.png
new file mode 100644
index 0000000..9068d75
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_normal_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_pressed.9.png b/core/res/res/drawable-xhdpi/btn_default_pressed.9.png
new file mode 100644
index 0000000..3f42693
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_pressed_holo.9.png b/core/res/res/drawable-xhdpi/btn_default_pressed_holo.9.png
new file mode 100644
index 0000000..daac2e1
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_pressed_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_pressed_holo_dark.9.png b/core/res/res/drawable-xhdpi/btn_default_pressed_holo_dark.9.png
new file mode 100644
index 0000000..94f1a5a
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_pressed_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_pressed_holo_light.9.png b/core/res/res/drawable-xhdpi/btn_default_pressed_holo_light.9.png
new file mode 100644
index 0000000..94f1a5a
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_pressed_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_selected.9.png b/core/res/res/drawable-xhdpi/btn_default_selected.9.png
new file mode 100644
index 0000000..ecdc72b
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_small_normal.9.png b/core/res/res/drawable-xhdpi/btn_default_small_normal.9.png
new file mode 100644
index 0000000..f823033
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_small_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_small_normal_disable.9.png b/core/res/res/drawable-xhdpi/btn_default_small_normal_disable.9.png
new file mode 100644
index 0000000..f537a6d
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_small_normal_disable.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_small_normal_disable_focused.9.png b/core/res/res/drawable-xhdpi/btn_default_small_normal_disable_focused.9.png
new file mode 100644
index 0000000..1b11689
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_small_normal_disable_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_small_pressed.9.png b/core/res/res/drawable-xhdpi/btn_default_small_pressed.9.png
new file mode 100644
index 0000000..787ba9e
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_small_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_small_selected.9.png b/core/res/res/drawable-xhdpi/btn_default_small_selected.9.png
new file mode 100644
index 0000000..74a156f
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_small_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/btn_default_transparent_normal.9.png b/core/res/res/drawable-xhdpi/btn_default_transparent_normal.9.png
new file mode 100644
index 0000000..44860dc
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/btn_default_transparent_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/expander_close_holo_dark.9.png b/core/res/res/drawable-xhdpi/expander_close_holo_dark.9.png
new file mode 100644
index 0000000..8005de7
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/expander_close_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/expander_close_holo_light.9.png b/core/res/res/drawable-xhdpi/expander_close_holo_light.9.png
new file mode 100644
index 0000000..333dd24
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/expander_close_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/expander_open_holo_dark.9.png b/core/res/res/drawable-xhdpi/expander_open_holo_dark.9.png
new file mode 100644
index 0000000..4a56a80
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/expander_open_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/expander_open_holo_light.9.png b/core/res/res/drawable-xhdpi/expander_open_holo_light.9.png
new file mode 100644
index 0000000..67ed4c0
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/expander_open_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/indicator_input_error.png b/core/res/res/drawable-xhdpi/indicator_input_error.png
new file mode 100644
index 0000000..5be92a0
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/indicator_input_error.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/list_activated_holo.9.png b/core/res/res/drawable-xhdpi/list_activated_holo.9.png
new file mode 100644
index 0000000..eda10e6
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/list_activated_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/list_focused_holo.9.png b/core/res/res/drawable-xhdpi/list_focused_holo.9.png
new file mode 100644
index 0000000..690cb1e
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/list_focused_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/list_longpressed_holo.9.png b/core/res/res/drawable-xhdpi/list_longpressed_holo.9.png
new file mode 100644
index 0000000..e303022
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/list_longpressed_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/list_pressed_holo_dark.9.png b/core/res/res/drawable-xhdpi/list_pressed_holo_dark.9.png
new file mode 100644
index 0000000..80c93da
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/list_pressed_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/list_pressed_holo_light.9.png b/core/res/res/drawable-xhdpi/list_pressed_holo_light.9.png
new file mode 100644
index 0000000..80c93da
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/list_pressed_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/list_section_divider_holo_dark.9.png b/core/res/res/drawable-xhdpi/list_section_divider_holo_dark.9.png
new file mode 100644
index 0000000..76fd13c
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/list_section_divider_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/list_section_divider_holo_light.9.png b/core/res/res/drawable-xhdpi/list_section_divider_holo_light.9.png
new file mode 100644
index 0000000..d8fd9e3
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/list_section_divider_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/list_selected_holo_dark.9.png b/core/res/res/drawable-xhdpi/list_selected_holo_dark.9.png
new file mode 100644
index 0000000..3e8dac8
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/list_selected_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/list_selected_holo_light.9.png b/core/res/res/drawable-xhdpi/list_selected_holo_light.9.png
new file mode 100644
index 0000000..3e8dac8
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/list_selected_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/popup_inline_error_above_holo_dark.9.png b/core/res/res/drawable-xhdpi/popup_inline_error_above_holo_dark.9.png
new file mode 100644
index 0000000..d69b772
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/popup_inline_error_above_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/popup_inline_error_above_holo_light.9.png b/core/res/res/drawable-xhdpi/popup_inline_error_above_holo_light.9.png
new file mode 100644
index 0000000..a210f3c
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/popup_inline_error_above_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/popup_inline_error_holo_dark.9.png b/core/res/res/drawable-xhdpi/popup_inline_error_holo_dark.9.png
new file mode 100644
index 0000000..f106329
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/popup_inline_error_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/popup_inline_error_holo_light.9.png b/core/res/res/drawable-xhdpi/popup_inline_error_holo_light.9.png
new file mode 100644
index 0000000..0c65386
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/popup_inline_error_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/presence_audio_away.png b/core/res/res/drawable-xhdpi/presence_audio_away.png
new file mode 100644
index 0000000..4fc6f6a
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/presence_audio_away.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/presence_audio_busy.png b/core/res/res/drawable-xhdpi/presence_audio_busy.png
new file mode 100644
index 0000000..ca45ac9
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/presence_audio_busy.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/presence_audio_online.png b/core/res/res/drawable-xhdpi/presence_audio_online.png
new file mode 100644
index 0000000..595c730
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/presence_audio_online.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/presence_away.png b/core/res/res/drawable-xhdpi/presence_away.png
new file mode 100644
index 0000000..1478e72
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/presence_away.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/presence_busy.png b/core/res/res/drawable-xhdpi/presence_busy.png
new file mode 100644
index 0000000..8278ce2
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/presence_busy.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/presence_invisible.png b/core/res/res/drawable-xhdpi/presence_invisible.png
new file mode 100644
index 0000000..9bb6cef
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/presence_invisible.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/presence_offline.png b/core/res/res/drawable-xhdpi/presence_offline.png
new file mode 100644
index 0000000..fc7ba24
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/presence_offline.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/presence_online.png b/core/res/res/drawable-xhdpi/presence_online.png
new file mode 100644
index 0000000..e2aef11
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/presence_online.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/presence_video_away.png b/core/res/res/drawable-xhdpi/presence_video_away.png
new file mode 100644
index 0000000..02f7d63
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/presence_video_away.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/presence_video_busy.png b/core/res/res/drawable-xhdpi/presence_video_busy.png
new file mode 100644
index 0000000..db0bec7
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/presence_video_busy.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/presence_video_online.png b/core/res/res/drawable-xhdpi/presence_video_online.png
new file mode 100644
index 0000000..e12be95
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/presence_video_online.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/spinner_16_inner_holo.png b/core/res/res/drawable-xhdpi/spinner_16_inner_holo.png
new file mode 100644
index 0000000..f868ff1
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/spinner_16_inner_holo.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/spinner_16_outer_holo.png b/core/res/res/drawable-xhdpi/spinner_16_outer_holo.png
new file mode 100644
index 0000000..abd2d57
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/spinner_16_outer_holo.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/spinner_20_inner_holo.png b/core/res/res/drawable-xhdpi/spinner_20_inner_holo.png
new file mode 100644
index 0000000..d2691d3
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/spinner_20_inner_holo.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/spinner_20_outer_holo.png b/core/res/res/drawable-xhdpi/spinner_20_outer_holo.png
new file mode 100644
index 0000000..a5c87d1
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/spinner_20_outer_holo.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/spinner_48_inner_holo.png b/core/res/res/drawable-xhdpi/spinner_48_inner_holo.png
new file mode 100644
index 0000000..24176bf
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/spinner_48_inner_holo.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/spinner_48_outer_holo.png b/core/res/res/drawable-xhdpi/spinner_48_outer_holo.png
new file mode 100644
index 0000000..53b34ef
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/spinner_48_outer_holo.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/spinner_76_inner_holo.png b/core/res/res/drawable-xhdpi/spinner_76_inner_holo.png
new file mode 100644
index 0000000..fa267b4
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/spinner_76_inner_holo.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/spinner_76_outer_holo.png b/core/res/res/drawable-xhdpi/spinner_76_outer_holo.png
new file mode 100644
index 0000000..2c1f879
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/spinner_76_outer_holo.png
Binary files differ
diff --git a/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml b/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml
index 6579e76..99ab8a3 100644
--- a/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml
+++ b/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml
@@ -83,16 +83,6 @@
android:layout_weight="1"
/>
- <!-- Alphanumeric keyboard -->
- <com.android.internal.widget.PasswordEntryKeyboardView android:id="@+id/keyboardAlpha"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="@drawable/password_keyboard_background_holo"
- android:keyBackground="@drawable/btn_keyboard_key_fulltrans"
- android:keyTextSize="28dip"
- android:visibility="gone"
- />
-
<!-- emergency call button NOT CURRENTLY USED -->
<Button
android:id="@+id/emergencyCallButton"
diff --git a/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml b/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml
index c63b0ff..64c002f 100644
--- a/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml
+++ b/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml
@@ -75,16 +75,6 @@
android:layout_marginBottom="80dip"
/>
- <!-- Alphanumeric keyboard -->
- <com.android.internal.widget.PasswordEntryKeyboardView android:id="@+id/keyboardAlpha"
- android:layout_width="match_parent"
- android:layout_height="230dip"
- android:background="@drawable/password_keyboard_background_holo"
- android:keyBackground="@drawable/btn_keyboard_key_fulltrans"
- android:keyTextSize="28dip"
- android:visibility="gone"
- />
-
<!-- emergency call button -->
<Button
android:id="@+id/emergencyCallButton"
diff --git a/core/res/res/layout-sw600dp/keyguard_screen_status_land.xml b/core/res/res/layout-sw600dp/keyguard_screen_status_land.xml
index 302ee01..f3850d5 100644
--- a/core/res/res/layout-sw600dp/keyguard_screen_status_land.xml
+++ b/core/res/res/layout-sw600dp/keyguard_screen_status_land.xml
@@ -114,19 +114,6 @@
</LinearLayout>
- <!-- Status2 is generally charge status -->
- <TextView
- android:id="@+id/status2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="17sp"
- android:layout_marginTop="10dip"
- android:drawablePadding="4dip"
- android:visibility="gone"
- />
-
<!-- Status1 is generally battery status and informational messages -->
<TextView
android:id="@+id/status1"
diff --git a/core/res/res/layout-sw600dp/keyguard_screen_status_port.xml b/core/res/res/layout-sw600dp/keyguard_screen_status_port.xml
index 53fe902..f4c99f1 100644
--- a/core/res/res/layout-sw600dp/keyguard_screen_status_port.xml
+++ b/core/res/res/layout-sw600dp/keyguard_screen_status_port.xml
@@ -113,19 +113,6 @@
</LinearLayout>
- <!-- used for status such as the next alarm, and charging status. -->
- <TextView
- android:id="@+id/status2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="17sp"
- android:layout_marginTop="10dip"
- android:drawablePadding="4dip"
- android:visibility="gone"
- />
-
<TextView
android:id="@+id/status1"
android:layout_width="wrap_content"
diff --git a/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml b/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml
index 543747f..d32cd0c 100644
--- a/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml
+++ b/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml
@@ -45,13 +45,12 @@
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
- android:orientation="vertical"
- >
+ android:orientation="vertical">
+
<TextView
android:id="@+id/screenLocked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_below="@id/status2"
android:layout_marginLeft="24dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_marginTop="12dip"
@@ -65,23 +64,7 @@
android:layout_gravity="center"
/>
- <!-- "emergency calls only" shown when sim is missing or PUKd -->
- <TextView
- android:id="@+id/emergencyCallText"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@id/carrier"
- android:layout_alignParentRight="true"
- android:layout_marginTop="0dip"
- android:layout_marginRight="8dip"
- android:text="@string/emergency_calls_only"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="@color/white"
- android:visibility="gone"
- />
-
- <!-- emergency call button shown when sim is PUKd and tab_selector is
- hidden -->
+ <!-- emergency call button shown when sim is PUKd and tab_selector is hidden -->
<Button
android:id="@+id/emergencyCallButton"
android:layout_width="wrap_content"
diff --git a/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml b/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml
index 37bb522..07b4837 100644
--- a/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml
+++ b/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml
@@ -61,19 +61,6 @@
android:layout_alignParentTop="true"
android:drawablePadding="4dip"/>
- <!-- "emergency calls only" shown when sim is missing or PUKd -->
- <TextView
- android:id="@+id/emergencyCallText"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_alignParentRight="true"
- android:layout_marginTop="12dip"
- android:text="@string/emergency_calls_only"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="@color/white"/>
-
-
<com.android.internal.widget.WaveView
android:id="@+id/unlock_widget"
android:layout_width="wrap_content"
@@ -82,7 +69,6 @@
android:layout_marginRight="0dip"
android:layout_weight="1.0"/>
-
<!-- emergency call button shown when sim is PUKd and tab_selector is hidden -->
<Button
android:id="@+id/emergencyCallButton"
diff --git a/core/res/res/layout/activity_chooser_view.xml b/core/res/res/layout/activity_chooser_view.xml
index 50b1878..5d82a97 100644
--- a/core/res/res/layout/activity_chooser_view.xml
+++ b/core/res/res/layout/activity_chooser_view.xml
@@ -20,12 +20,52 @@
android:id="@+id/activity_chooser_view_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:gravity="center"
style="?android:attr/actionButtonStyle">
- <ImageButton android:id="@+id/default_activity_button"
- style="@style/Widget.ActivityChooserViewButton" />
+ <FrameLayout
+ android:id="@+id/default_activity_button"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_gravity="center"
+ android:focusable="true"
+ android:addStatesFromChildren="true"
+ android:background="?android:attr/selectableItemBackground">
- <ImageButton android:id="@+id/expand_activities_button"
- style="@style/Widget.ActivityChooserViewButton" />
+ <ImageView android:id="@+id/image"
+ android:layout_width="32dip"
+ android:layout_height="32dip"
+ android:layout_gravity="center"
+ android:layout_marginTop="4dip"
+ android:layout_marginBottom="4dip"
+ android:layout_marginLeft="8dip"
+ android:layout_marginRight="8dip"
+ android:scaleType="fitCenter"
+ android:adjustViewBounds="true" />
+
+ </FrameLayout>
+
+ <FrameLayout
+ android:id="@+id/expand_activities_button"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_gravity="center"
+ android:focusable="true"
+ android:addStatesFromChildren="true"
+ android:background="?android:attr/selectableItemBackground">
+
+ <ImageView android:id="@+id/image"
+ android:layout_width="32dip"
+ android:layout_height="32dip"
+ android:layout_gravity="center"
+ android:layout_marginTop="4dip"
+ android:layout_marginBottom="4dip"
+ android:layout_marginLeft="8dip"
+ android:layout_marginRight="8dip"
+ android:scaleType="fitCenter"
+ android:adjustViewBounds="true" />
+
+ </FrameLayout>
</LinearLayout>
diff --git a/core/res/res/layout/keyguard_screen_password_landscape.xml b/core/res/res/layout/keyguard_screen_password_landscape.xml
index e867fe0..960907d 100644
--- a/core/res/res/layout/keyguard_screen_password_landscape.xml
+++ b/core/res/res/layout/keyguard_screen_password_landscape.xml
@@ -24,7 +24,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- android:rowCount="10"
+ android:rowCount="7"
android:id="@+id/root"
android:clipChildren="false">
@@ -95,33 +95,7 @@
android:layout_gravity="right"
/>
- <TextView
- android:id="@+id/status2"
- android:layout_marginTop="4dip"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
- android:drawablePadding="4dip"
- android:layout_gravity="right"
- />
-
- <TextView
- android:id="@+id/screenLocked"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
- android:gravity="center"
- android:layout_marginTop="4dip"
- android:drawablePadding="4dip"
- android:layout_gravity="right"
- />
-
- <Space
- android:layout_rowFlexibility="canStretch"
- android:layout_columnFlexibility="canStretch"
- />
+ <Space android:layout_gravity="fill" />
<TextView
android:id="@+id/carrier"
@@ -133,19 +107,6 @@
android:textColor="?android:attr/textColorSecondary"
/>
- <!-- "emergency calls only" shown when sim is missing or PUKd -->
- <TextView
- android:id="@+id/emergencyCallText"
- android:layout_marginTop="20dip"
- android:layout_gravity="right"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:text="@string/emergency_calls_only"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
- android:textColor="?android:attr/textColorSecondary"
- />
-
<Button
android:id="@+id/emergencyCallButton"
android:layout_gravity="right"
@@ -157,13 +118,13 @@
/>
<!-- Column 1 -->
- <Space android:layout_width="32dip" android:layout_rowSpan="10" />
+ <Space android:layout_width="32dip" android:layout_rowSpan="7" />
<!-- Column 2 - password entry field and PIN keyboard -->
<LinearLayout
android:orientation="vertical"
android:layout_gravity="center|fill"
- android:layout_rowSpan="10">
+ android:layout_rowSpan="7">
<EditText android:id="@+id/passwordEntry"
android:layout_height="wrap_content"
@@ -177,6 +138,7 @@
android:textAppearance="?android:attr/textAppearanceMedium"
android:background="@drawable/lockscreen_password_field_dark"
android:textColor="?android:attr/textColorPrimary"
+ android:imeOptions="flagNoFullscreen"
/>
<!-- Numeric keyboard -->
@@ -187,9 +149,19 @@
android:background="#40000000"
android:layout_marginTop="5dip"
android:keyBackground="@drawable/btn_keyboard_key_fulltrans"
- android:visibility="visible"
+ android:visibility="gone"
/>
</LinearLayout>
+ <!-- Music transport control -->
+ <include android:id="@+id/transport"
+ layout="@layout/keyguard_transport_control"
+ android:layout_row="0"
+ android:layout_column="0"
+ android:layout_rowSpan="5"
+ android:layout_columnSpan="1"
+ android:layout_gravity="fill"
+ />
+
</GridLayout>
diff --git a/core/res/res/layout/keyguard_screen_password_portrait.xml b/core/res/res/layout/keyguard_screen_password_portrait.xml
index 6953ac8..7a51035 100644
--- a/core/res/res/layout/keyguard_screen_password_portrait.xml
+++ b/core/res/res/layout/keyguard_screen_password_portrait.xml
@@ -16,38 +16,85 @@
** limitations under the License.
*/
-->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<GridLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:orientation="vertical">
+ android:gravity="center_horizontal">
- <!-- top: status -->
- <RelativeLayout
- android:layout_width="match_parent"
+ <com.android.internal.widget.DigitalClock android:id="@+id/time"
+ android:layout_marginBottom="18dip"
+ android:layout_marginRight="@dimen/keyguard_lockscreen_status_line_font_right_margin"
+ android:layout_gravity="right">
+
+ <!-- Because we can't have multi-tone fonts, we render two TextViews, one on
+ top of the other. Hence the redundant layout... -->
+ <TextView android:id="@+id/timeDisplayBackground"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginRight="16dip">
- <include layout="@layout/keyguard_screen_status_port"
+ android:singleLine="true"
+ android:ellipsize="none"
+ android:textSize="@dimen/keyguard_lockscreen_clock_font_size"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:layout_marginBottom="6dip"
+ android:textColor="@*android:color/lockscreen_clock_background"
+ />
+
+ <TextView android:id="@+id/timeDisplayForeground"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_alignParentRight="true"/>
- </RelativeLayout>
+ android:singleLine="true"
+ android:ellipsize="none"
+ android:textSize="@dimen/keyguard_lockscreen_clock_font_size"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:layout_marginBottom="6dip"
+ android:textColor="@color/lockscreen_clock_foreground"
+ />
- <!-- emergency call button -->
- <Button
- android:id="@+id/emergencyCallButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="4dip"
- android:layout_marginRight="16dip"
+ </com.android.internal.widget.DigitalClock>
+
+ <LinearLayout
+ android:orientation="horizontal"
android:layout_gravity="right"
- android:drawableLeft="@drawable/lockscreen_emergency_button"
- android:drawablePadding="8dip"
- android:text="@string/lockscreen_emergency_call"
- style="?android:attr/buttonBarButtonStyle"
- />
+ android:layout_marginRight="@dimen/keyguard_lockscreen_status_line_font_right_margin">
- <!-- bottom: password -->
+ <TextView
+ android:id="@+id/date"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:ellipsize="marquee"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
+ />
+
+ <TextView
+ android:id="@+id/alarm_status"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="16dip"
+ android:singleLine="true"
+ android:ellipsize="marquee"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
+ android:drawablePadding="4dip"
+ />
+
+ </LinearLayout>
+
+ <TextView
+ android:id="@+id/status1"
+ android:layout_gravity="right"
+ android:layout_marginRight="@dimen/keyguard_lockscreen_status_line_font_right_margin"
+ android:singleLine="true"
+ android:ellipsize="marquee"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
+ android:drawablePadding="4dip"
+ />
+
+ <Space android:layout_height="100dip"/>
<!-- Password entry field -->
<EditText android:id="@+id/passwordEntry"
@@ -64,27 +111,14 @@
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#ffffffff"/>
- <View
- android:layout_width="match_parent"
- android:layout_height="0dip"
- android:layout_weight="1"
- />
+ <Space android:layout_gravity="fill" />
<!-- Numeric keyboard -->
<com.android.internal.widget.PasswordEntryKeyboardView android:id="@+id/keyboard"
android:layout_width="match_parent"
android:layout_height="260dip"
android:background="#40000000"
- android:keyBackground="@drawable/btn_keyboard_key_fulltrans"
- />
-
- <!-- Alphanumeric keyboard -->
- <com.android.internal.widget.PasswordEntryKeyboardView android:id="@+id/keyboardAlpha"
- android:layout_width="match_parent"
- android:layout_height="400dip"
- android:background="@drawable/password_keyboard_background_holo"
- android:keyBackground="@drawable/btn_keyboard_key_fulltrans"
- android:keyTextSize="22dip"
+ android:keyBackground="@*android:drawable/btn_keyboard_key_fulltrans"
android:visibility="gone"
/>
@@ -93,7 +127,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
- android:layout_marginBottom="8dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
android:drawablePadding="4dip"
@@ -101,4 +134,28 @@
android:ellipsize="marquee"
/>
-</LinearLayout>
+ <Button
+ android:id="@+id/emergencyCallButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="4dip"
+ android:layout_marginRight="16dip"
+ android:layout_gravity="center_horizontal"
+ android:drawableLeft="@*android:drawable/lockscreen_emergency_button"
+ style="?android:attr/buttonBarButtonStyle"
+ android:drawablePadding="4dip"
+ android:text="@*android:string/lockscreen_emergency_call"
+ android:visibility="gone"
+ />
+
+ <!-- Music transport control -->
+ <include android:id="@+id/transport"
+ layout="@layout/keyguard_transport_control"
+ android:layout_row="0"
+ android:layout_column="0"
+ android:layout_rowSpan="4"
+ android:layout_columnSpan="1"
+ android:layout_gravity="fill"
+ />
+
+</GridLayout>
diff --git a/core/res/res/layout/keyguard_screen_status_land.xml b/core/res/res/layout/keyguard_screen_status_land.xml
deleted file mode 100644
index 021faa3..0000000
--- a/core/res/res/layout/keyguard_screen_status_land.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-**
-** Copyright 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.
-*/
--->
-
-<!-- Status to show on the left side of lock screen -->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="left"
- >
-
- <com.android.internal.widget.DigitalClock android:id="@+id/time"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_alignParentLeft="true"
- android:layout_marginTop="8dip"
- android:layout_marginBottom="8dip">
-
- <!-- Because we can't have multi-tone fonts, we render two TextViews, one on
- top of the other. Hence the redundant layout... -->
- <TextView android:id="@+id/timeDisplayBackground"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:ellipsize="none"
- android:textSize="@dimen/keyguard_lockscreen_clock_font_size"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="@color/lockscreen_clock_background"
- android:layout_marginBottom="6dip"
- />
-
- <TextView android:id="@+id/timeDisplayForeground"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:ellipsize="none"
- android:textSize="@dimen/keyguard_lockscreen_clock_font_size"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="@color/lockscreen_clock_foreground"
- android:layout_alignLeft="@id/timeDisplayBackground"
- android:layout_alignTop="@id/timeDisplayBackground"
- android:layout_marginBottom="6dip"
- />
-
- </com.android.internal.widget.DigitalClock>
-
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@id/time"
- android:layout_marginTop="10dip">
-
- <TextView
- android:id="@+id/date"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"/>
-
- <TextView
- android:id="@+id/alarm_status"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="30dip"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"/>
-
- </LinearLayout>
-
- <!-- Status2 is generally charge status -->
- <TextView
- android:id="@+id/status2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
- android:layout_marginTop="10dip"
- android:drawablePadding="4dip"
- android:visibility="gone"
- />
-
- <!-- Status1 is generally battery status and informational messages -->
- <TextView
- android:id="@+id/status1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="10dip"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
- />
-
-</LinearLayout>
diff --git a/core/res/res/layout/keyguard_screen_status_port.xml b/core/res/res/layout/keyguard_screen_status_port.xml
deleted file mode 100644
index f84e61c..0000000
--- a/core/res/res/layout/keyguard_screen_status_port.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-**
-** Copyright 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.
-*/
--->
-
-<!-- Status to show on the left side of lock screen -->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="left">
-
- <com.android.internal.widget.DigitalClock android:id="@+id/time"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="8dip">
-
- <!-- Because we can't have multi-tone fonts, we render two TextViews, one on
- top of the other. Hence the redundant layout... -->
- <TextView android:id="@+id/timeDisplayBackground"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:ellipsize="none"
- android:textSize="@dimen/keyguard_lockscreen_clock_font_size"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="@color/lockscreen_clock_background"
- android:layout_marginBottom="6dip"
- />
-
- <TextView android:id="@+id/timeDisplayForeground"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:ellipsize="none"
- android:textSize="@dimen/keyguard_lockscreen_clock_font_size"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="@color/lockscreen_clock_foreground"
- android:layout_marginBottom="6dip"
- android:layout_alignLeft="@id/timeDisplayBackground"
- android:layout_alignTop="@id/timeDisplayBackground"
- />
-
- </com.android.internal.widget.DigitalClock>
-
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@id/time"
- android:layout_marginTop="16dip"
- android:layout_gravity="right">
-
- <TextView
- android:id="@+id/date"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"/>
-
- <TextView
- android:id="@+id/alarm_status"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="16dip"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
- android:drawablePadding="4dip"/>
-
- </LinearLayout>
-
- <TextView
- android:id="@+id/status1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="right"
- android:layout_marginTop="4dip"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
- android:textAppearance="?android:attr/textAppearanceMedium"
- />
-
- <!-- used for status such as the next alarm, and charging status. -->
- <TextView
- android:id="@+id/status2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="right"
- android:layout_alignParentTop="true"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
- android:layout_marginTop="4dip"
- android:drawablePadding="4dip"
- android:visibility="gone"
- />
-
-
-</LinearLayout>
diff --git a/core/res/res/layout/keyguard_screen_tab_unlock.xml b/core/res/res/layout/keyguard_screen_tab_unlock.xml
index 1e2abf9..05c768d 100644
--- a/core/res/res/layout/keyguard_screen_tab_unlock.xml
+++ b/core/res/res/layout/keyguard_screen_tab_unlock.xml
@@ -21,21 +21,17 @@
state of the device, as well as instructions on how to get past it
depending on the state of the device. It is the same for landscape
and portrait.-->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<GridLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:gravity="center_horizontal"
- android:id="@+id/root"
- android:clipChildren="false">
+ android:gravity="center_horizontal">
- <!-- time and date -->
<com.android.internal.widget.DigitalClock android:id="@+id/time"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
- android:layout_marginRight="16dip"
- android:layout_marginTop="48dip"
- android:layout_marginLeft="20dip">
+ android:layout_marginBottom="18dip"
+ android:layout_marginRight="@dimen/keyguard_lockscreen_status_line_font_right_margin"
+ android:layout_gravity="right">
<!-- Because we can't have multi-tone fonts, we render two TextViews, one on
top of the other. Hence the redundant layout... -->
@@ -65,16 +61,10 @@
</com.android.internal.widget.DigitalClock>
- <LinearLayout android:id="@+id/date_alarm_status_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_below="@id/time"
- android:layout_marginLeft="16dip"
- android:layout_marginRight="16dip"
- android:layout_marginTop="16dip"
- android:layout_alignParentRight="true"
- android:gravity="right"
- android:orientation="horizontal">
+ <LinearLayout
+ android:orientation="horizontal"
+ android:layout_gravity="right"
+ android:layout_marginRight="@dimen/keyguard_lockscreen_status_line_font_right_margin">
<TextView
android:id="@+id/date"
@@ -90,25 +80,20 @@
android:id="@+id/alarm_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_marginLeft="16dip"
android:singleLine="true"
android:ellipsize="marquee"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
android:drawablePadding="4dip"
- android:layout_marginLeft="16dip"
/>
</LinearLayout>
<TextView
android:id="@+id/status1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@id/date_alarm_status_container"
- android:layout_marginTop="4dip"
- android:layout_marginLeft="16dip"
- android:layout_marginRight="16dip"
- android:layout_alignParentRight="true"
+ android:layout_gravity="right"
+ android:layout_marginRight="@dimen/keyguard_lockscreen_status_line_font_right_margin"
android:singleLine="true"
android:ellipsize="marquee"
android:textAppearance="?android:attr/textAppearanceMedium"
@@ -116,39 +101,7 @@
android:drawablePadding="4dip"
/>
- <TextView
- android:id="@+id/status2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@id/status1"
- android:layout_marginTop="4dip"
- android:layout_marginLeft="16dip"
- android:layout_marginRight="16dip"
- android:layout_alignParentRight="true"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
- android:drawablePadding="4dip"
- android:visibility="gone"
- />
-
- <TextView
- android:id="@+id/screenLocked"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@id/status2"
- android:layout_marginLeft="16dip"
- android:layout_marginRight="16dip"
- android:layout_alignParentRight="true"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
- android:layout_marginTop="12dip"
- android:drawablePadding="4dip"
- android:visibility="gone"
- />
+ <Space android:layout_gravity="fill" />
<!-- emergency call button shown when sim is PUKd and tab_selector is hidden -->
<Button
@@ -157,26 +110,23 @@
android:layout_height="wrap_content"
android:layout_marginTop="4dip"
android:layout_marginRight="16dip"
- android:drawableLeft="@drawable/lockscreen_emergency_button"
- android:layout_alignParentRight="true"
- android:layout_below="@id/screenLocked"
+ android:layout_gravity="right"
+ android:drawableLeft="@*android:drawable/lockscreen_emergency_button"
style="?android:attr/buttonBarButtonStyle"
android:drawablePadding="4dip"
- android:text="@string/lockscreen_emergency_call"
- android:visibility="visible"
+ android:text="@*android:string/lockscreen_emergency_call"
+ android:visibility="gone"
/>
<RelativeLayout
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:gravity="center_horizontal">
+ android:layout_height="292dip">
<com.android.internal.widget.multiwaveview.MultiWaveView
android:id="@+id/unlock_widget"
android:orientation="horizontal"
android:layout_width="match_parent"
- android:layout_height="300dip"
+ android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:targetDrawables="@array/lockscreen_targets_when_silent"
@@ -206,24 +156,39 @@
android:textColor="?android:attr/textColorSecondary"
/>
- <!-- "emergency calls only" shown when sim is missing or PUKd -->
- <TextView
- android:id="@+id/emergencyCallText"
- android:layout_width="fill_parent"
+ </RelativeLayout>
+
+ <LinearLayout
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ style="?android:attr/buttonBarStyle"
+ android:gravity="center"
+ android:weightSum="2">
+
+ <Button android:id="@+id/emergencyCallButton"
+ android:layout_gravity="center_horizontal"
+ android:layout_width="0dip"
android:layout_height="wrap_content"
- android:layout_above="@id/carrier"
- android:gravity="center_horizontal"
- android:layout_marginTop="0dip"
- android:layout_marginRight="8dip"
- android:text="@string/emergency_calls_only"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
+ android:layout_weight="1"
+ style="?android:attr/buttonBarButtonStyle"
android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
- android:textColor="?android:attr/textColorSecondary"
- />
+ android:text="@*android:string/lockscreen_emergency_call"
+ android:drawableLeft="@*android:drawable/lockscreen_emergency_button"
+ android:drawablePadding="0dip"
+ android:visibility="gone"
+ />
- </RelativeLayout>
+ </LinearLayout>
+
+ <!-- Music transport control -->
+ <include android:id="@+id/transport"
+ layout="@layout/keyguard_transport_control"
+ android:layout_row="0"
+ android:layout_column="0"
+ android:layout_rowSpan="4"
+ android:layout_columnSpan="1"
+ android:layout_gravity="fill"
+ />
-</RelativeLayout>
+</GridLayout>
diff --git a/core/res/res/layout/keyguard_screen_tab_unlock_land.xml b/core/res/res/layout/keyguard_screen_tab_unlock_land.xml
index 7aab04e..6440726 100644
--- a/core/res/res/layout/keyguard_screen_tab_unlock_land.xml
+++ b/core/res/res/layout/keyguard_screen_tab_unlock_land.xml
@@ -24,13 +24,13 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- android:rowCount="8"
+ android:rowCount="7"
android:id="@+id/root"
android:clipChildren="false">
<!-- Column 0 -->
<com.android.internal.widget.DigitalClock android:id="@+id/time"
- android:layout_marginTop="8dip"
+ android:layout_marginTop="80dip"
android:layout_marginBottom="8dip"
android:layout_gravity="right">
@@ -95,89 +95,41 @@
android:layout_gravity="right"
/>
- <TextView
- android:id="@+id/status2"
- android:layout_marginTop="4dip"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
- android:drawablePadding="4dip"
- android:layout_gravity="right"
- />
+ <Space android:layout_gravity="fill" />
<TextView
- android:id="@+id/screenLocked"
+ android:id="@+id/carrier"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="right"
android:singleLine="true"
android:ellipsize="marquee"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
- android:gravity="center"
- android:layout_marginTop="4dip"
- android:drawablePadding="4dip"
- android:layout_gravity="right"
- />
-
- <Space
- android:layout_rowFlexibility="canStretch"
- android:layout_columnFlexibility="canStretch"
+ android:textColor="?android:attr/textColorSecondary"
/>
- <LinearLayout android:orientation="vertical"
+ <Button
+ android:id="@+id/emergencyCallButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:layout_gravity="right"
- android:gravity="fill_horizontal">
-
- <TextView
- android:id="@+id/carrier"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:layout_gravity="right"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
- android:textColor="?android:attr/textColorSecondary"
- />
-
- <!-- "emergency calls only" shown when sim is missing or PUKd -->
- <TextView
- android:id="@+id/emergencyCallText"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_marginTop="20dip"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:text="@string/emergency_calls_only"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
- android:textColor="?android:attr/textColorSecondary"
- android:layout_gravity="right"
- />
-
- <Button
- android:id="@+id/emergencyCallButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:drawableLeft="@drawable/lockscreen_emergency_button"
- android:text="@string/lockscreen_emergency_call"
- style="?android:attr/buttonBarButtonStyle"
- android:drawablePadding="8dip"
- android:visibility="visible"
- android:layout_gravity="right"
+ android:drawableLeft="@*android:drawable/lockscreen_emergency_button"
+ android:text="@*android:string/lockscreen_emergency_call"
+ style="?android:attr/buttonBarButtonStyle"
+ android:drawablePadding="8dip"
+ android:visibility="gone"
/>
- </LinearLayout>
<!-- Column 1 -->
- <Space android:layout_width="32dip" android:layout_rowSpan="8" />
+ <Space android:layout_width="64dip" android:layout_rowSpan="7" />
<!-- Column 2 -->
<com.android.internal.widget.multiwaveview.MultiWaveView
android:id="@+id/unlock_widget"
android:layout_width="200dip"
android:layout_height="match_parent"
- android:layout_rowSpan="8"
+ android:layout_rowSpan="7"
android:targetDrawables="@array/lockscreen_targets_when_silent"
android:handleDrawable="@drawable/ic_lockscreen_handle"
@@ -192,4 +144,14 @@
android:verticalOffset="0dip"
/>
+ <!-- Music transport control -->
+ <include android:id="@+id/transport"
+ layout="@layout/keyguard_transport_control"
+ android:layout_row="0"
+ android:layout_column="0"
+ android:layout_rowSpan="5"
+ android:layout_columnSpan="1"
+ android:layout_gravity="fill"
+ />
+
</GridLayout>
diff --git a/core/res/res/layout/keyguard_screen_unlock_landscape.xml b/core/res/res/layout/keyguard_screen_unlock_landscape.xml
index 8f083a0..c425b73 100644
--- a/core/res/res/layout/keyguard_screen_unlock_landscape.xml
+++ b/core/res/res/layout/keyguard_screen_unlock_landscape.xml
@@ -90,11 +90,7 @@
android:layout_gravity="right"
/>
- <!-- TODO: remove hard coded height since layout_rowWeight doesn't seem to be working -->
- <Space
- android:layout_rowFlexibility="canStretch"
- android:layout_columnFlexibility="canStretch"
- />
+ <Space android:layout_gravity="fill" />
<TextView android:id="@+id/carrier"
android:layout_gravity="right"
@@ -135,6 +131,7 @@
</LinearLayout>
<!-- Column 1: lock pattern -->
+
<com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -144,4 +141,15 @@
android:layout_marginLeft="8dip"
android:layout_rowSpan="7"/>
+
+ <!-- Music transport control -->
+ <include android:id="@+id/transport"
+ layout="@layout/keyguard_transport_control"
+ android:layout_row="0"
+ android:layout_column="0"
+ android:layout_rowSpan="5"
+ android:layout_columnSpan="1"
+ android:layout_gravity="fill"
+ />
+
</GridLayout>
diff --git a/core/res/res/layout/keyguard_screen_unlock_portrait.xml b/core/res/res/layout/keyguard_screen_unlock_portrait.xml
index 35fd473..433dda7 100644
--- a/core/res/res/layout/keyguard_screen_unlock_portrait.xml
+++ b/core/res/res/layout/keyguard_screen_unlock_portrait.xml
@@ -27,7 +27,6 @@
android:layout_height="match_parent"
android:gravity="center_horizontal">
-
<com.android.internal.widget.DigitalClock android:id="@+id/time"
android:layout_marginBottom="18dip"
android:layout_marginRight="@dimen/keyguard_lockscreen_status_line_font_right_margin"
@@ -100,17 +99,7 @@
android:drawablePadding="4dip"
/>
- <TextView
- android:id="@+id/status2"
- android:layout_gravity="right"
- android:layout_marginRight="@dimen/keyguard_lockscreen_status_line_font_right_margin"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
- android:drawablePadding="4dip"
- android:visibility="gone"
- />
+ <Space android:layout_gravity="fill" />
<!-- We need MATCH_PARENT here only to force the size of the parent to be passed to
the pattern view for it to compute its size. This is an unusual case, caused by
@@ -125,7 +114,6 @@
android:layout_marginBottom="4dip"
android:layout_marginLeft="8dip"
android:layout_gravity="center|bottom"
- android:layout_rowFlexibility="canStretch"
/>
<TextView
@@ -171,4 +159,14 @@
</LinearLayout>
+ <!-- Music transport control -->
+ <include android:id="@+id/transport"
+ layout="@layout/keyguard_transport_control"
+ android:layout_row="0"
+ android:layout_column="0"
+ android:layout_rowSpan="4"
+ android:layout_columnSpan="1"
+ android:layout_gravity="fill"
+ />
+
</GridLayout>
diff --git a/core/res/res/layout/keyguard_transport_control.xml b/core/res/res/layout/keyguard_transport_control.xml
new file mode 100644
index 0000000..6308b02
--- /dev/null
+++ b/core/res/res/layout/keyguard_transport_control.xml
@@ -0,0 +1,53 @@
+<?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.
+*/
+-->
+
+<com.android.internal.widget.TransportControlView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:gravity="bottom"
+ android:orientation="horizontal"
+ android:background="#a0808080"
+ android:visibility="gone">
+
+ <Button android:id="@+id/control_prev"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="#80ff0000"
+ />
+
+ <Space android:layout_width="0dip"
+ android:layout_height="0dip"
+ android:layout_weight="1"/>
+
+ <Button android:id="@+id/control_pauseplay"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="#8000ff00"
+ />
+
+ <Space android:layout_width="0dip"
+ android:layout_height="0dip"
+ android:layout_weight="1"/>
+
+ <Button android:id="@+id/control_next"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="#800000ff"
+ />
+
+</com.android.internal.widget.TransportControlView>
diff --git a/core/res/res/layout/text_edit_action_popup_text.xml b/core/res/res/layout/text_edit_action_popup_text.xml
new file mode 100644
index 0000000..aa6a5e1
--- /dev/null
+++ b/core/res/res/layout/text_edit_action_popup_text.xml
@@ -0,0 +1,28 @@
+<?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.
+-->
+
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingLeft="16dip"
+ android:paddingRight="16dip"
+ android:paddingTop="8dip"
+ android:paddingBottom="8dip"
+ android:gravity="center"
+ android:textAppearance="?android:attr/textAppearanceSmallInverse"
+ android:textColor="@android:color/black"
+ android:textAllCaps="true"
+/>
diff --git a/core/res/res/layout/text_edit_no_paste_window.xml b/core/res/res/layout/text_edit_no_paste_window.xml
index 98b16e2..5e9acc2 100644
--- a/core/res/res/layout/text_edit_no_paste_window.xml
+++ b/core/res/res/layout/text_edit_no_paste_window.xml
@@ -25,7 +25,6 @@
android:paddingRight="16dip"
android:paddingTop="8dip"
android:paddingBottom="8dip"
- android:drawableLeft="@android:drawable/ic_paste_bubble_disabled_holo"
android:drawablePadding="8dip"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceMediumInverse"
diff --git a/core/res/res/layout/text_edit_paste_window.xml b/core/res/res/layout/text_edit_paste_window.xml
index 01e5530..adfe56b 100644
--- a/core/res/res/layout/text_edit_paste_window.xml
+++ b/core/res/res/layout/text_edit_paste_window.xml
@@ -25,7 +25,6 @@
android:paddingRight="16dip"
android:paddingTop="8dip"
android:paddingBottom="12dip"
- android:drawableLeft="@android:drawable/ic_paste_bubble_holo"
android:drawablePadding="8dip"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceMediumInverse"
diff --git a/core/res/res/layout/text_edit_side_no_paste_window.xml b/core/res/res/layout/text_edit_side_no_paste_window.xml
index 3eb41fb..dc411a1 100644
--- a/core/res/res/layout/text_edit_side_no_paste_window.xml
+++ b/core/res/res/layout/text_edit_side_no_paste_window.xml
@@ -25,7 +25,6 @@
android:paddingRight="16dip"
android:paddingTop="8dip"
android:paddingBottom="8dip"
- android:drawableLeft="@android:drawable/ic_paste_bubble_disabled_holo"
android:drawablePadding="8dip"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceMediumInverse"
diff --git a/core/res/res/layout/text_edit_side_paste_window.xml b/core/res/res/layout/text_edit_side_paste_window.xml
index 6651786..37b774d 100644
--- a/core/res/res/layout/text_edit_side_paste_window.xml
+++ b/core/res/res/layout/text_edit_side_paste_window.xml
@@ -25,7 +25,6 @@
android:paddingRight="16dip"
android:paddingTop="8dip"
android:paddingBottom="8dip"
- android:drawableLeft="@android:drawable/ic_paste_bubble_holo"
android:drawablePadding="8dip"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceMediumInverse"
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 6d9f2fe..e60af6d 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -385,6 +385,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Laat programme toe om te sien watter sleutels jy druk, selfs wanneer jy met \'n ander program werk (soos wanneer jy \'n wagwoord intik). Behoort vir gewone programme nooit nodig te wees nie."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"bind aan \'n invoermetode"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Laat die houer toe om aan die topvlak-koppelvlak van \'n invoermetode te bind. Behoort vir gewone programme nooit nodig te wees nie."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"bind aan \'n muurpapier"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Stel die houer toe om aan die topvlak-koppelvlak van \'n muurpapier te bind. Behoort vir gewone programme nooit nodig te wees nie."</string>
<!-- no translation found for permlab_bindRemoteViews (5697987759897367099) -->
@@ -962,6 +966,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Laat \'n program toe om die blaaier se geskiedenis of gestoorde boekmerke op die foon te wysig. Kwaadwillige programme kan dit gebruik om jou blaaier se data uit te vee of dit te wysig."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"stel alarm in wekker"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Laat die program toe om \'n alarm te stel in \'n geïnstalleerde wekkerprogram. Sommige wekkerprogramme sal dalk nie hierdie kenmerk implementeer nie."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Wysig blaaier se geoligging-toestemmings"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Laat \'n program toe om die blaaier se geoligging-toestemmings te wysig. Kwaadwillige programme kan dit gebruik om liggingsinligting na arbitrêre webwerwe te stuur."</string>
<!-- no translation found for save_password_message (767344687139195790) -->
@@ -1216,6 +1224,22 @@
<item quantity="one" msgid="1634101450343277345">"Oop Wi-Fi-netwerke beskikbaar"</item>
<item quantity="other" msgid="7915895323644292768">"Oop Wi-Fi-netwerke beskikbaar"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Voeg karakter in"</string>
<!-- no translation found for sms_control_default_app_name (7630529934366549163) -->
<skip />
@@ -1277,6 +1301,8 @@
<skip />
<!-- no translation found for usb_cd_installer_notification_title (6774712827892090754) -->
<skip />
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<!-- no translation found for usb_notification_message (4447869605109736382) -->
<skip />
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formateer USB-berging"</string>
@@ -1465,4 +1491,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 9fff387..716d19f 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -385,6 +385,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"ትግበራዎች ከሌላ ትግበራዎች ጋር እንኳ ሲገናኙ የሚጫኑትን ቁልፎች ለመመልከት ይፈቅዳሉ።ለመደበኛ ትግበራዎች በፍፁም አያስፈልግም።"</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"በግቤት ሜተድ ጠርዝ"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"ያዡ ግቤት ሜተዱን ወደ ከፍተኛ-ደረጃ በይነገጽ ለመጠረዝ ይፈቅዳል። ለመደበኛ ትግበራዎች በፍፁም አያስፈልግም።"</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"በልጣፍ ጠርዝ"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"ያዡ ግቤት ሜተዱን ወደ ከፍተኛ-ደረጃ ልጣፍ ለመጠረዝ ይፈቅዳል። ለመደበኛ ትግበራዎች በፍፁም አያስፈልግም።"</string>
<!-- no translation found for permlab_bindRemoteViews (5697987759897367099) -->
@@ -962,6 +966,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"ትግበራ በስልክዎ ላይ የተከማቹትንታሪኮች እና ዕልባቶች ለመቀየር ይፈቅዳል። ተንኮል አዘል ትግበራዎች የቀን መቁጠሪያዎን ለማጥፋት ወይም ለመቀየር ይህን መጠቀም ይችላሉ።"</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"በማንቂያ ሰዓት ውስጥ ማንቂያ አዘጋጅ"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"ትግበራ በተጫነ የማንቂያ ሰዓት ትግበራ ማንቂያ ለማዘጋጀትይፈቅዳል። አንዳንድ የማንቂያ ሰዓት ትግበራዎች ይህን ገፅታ ላይተገብሩ ይችላሉ።"</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"የአሳሽ ገፀ ሥፍራ ፍቃዶችን ቀይር"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"ትግበራ የአሳሹን ገፀ ሥፍራ ፈቃዶች ለመቀየር ይፈቅዳል። ተንኮል አዘል ትግበራዎች ይህን በመጠቀም የሥፍራ መረጃን ወደ ድረ ገፆች ለመላክ ይችላሉ።"</string>
<!-- no translation found for save_password_message (767344687139195790) -->
@@ -1216,6 +1224,22 @@
<item quantity="one" msgid="1634101450343277345">"አውታረ መረብ ሲኖር Wi-Fi ክፈት"</item>
<item quantity="other" msgid="7915895323644292768">"አውታረ መረቦች ሲኖሩ Wi-Fi ክፈት"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"ቁምፊ አስገባ"</string>
<!-- no translation found for sms_control_default_app_name (7630529934366549163) -->
<skip />
@@ -1277,6 +1301,8 @@
<skip />
<!-- no translation found for usb_cd_installer_notification_title (6774712827892090754) -->
<skip />
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<!-- no translation found for usb_notification_message (4447869605109736382) -->
<skip />
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"የUSB ማከማቻ ቅረፅ"</string>
@@ -1465,4 +1491,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 70fc500..12a240a 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"للسماح للتطبيقات بمراقبة الأحرف التي تضغط عليها حتى عند التفاعل مع تطبيق آخر (مثل إدخال كلمة مرور). لا يجب استخدامه على الإطلاق للتطبيقات العادية."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"الالتزام بطريقة إرسال ما"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"للسماح للمالك بالالتزام بواجهة المستوى العلوي لطريقة الإرسال. لا يجب استخدامه على الإطلاق للتطبيقات العادية."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"الالتزام بخلفية ما"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"للسماح للمالك بالالتزام بواجهة المستوى العلوي للخلفية. لا يجب استخدامه على الإطلاق للتطبيقات العادية."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"الالتزام بخدمة أداة"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <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="1284843728203412135">"قراءة سجل المتصفح والإشارات"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"للسماح للتطبيق بقراءة جميع عناوين URL التي انتقل إليها المتصفح. وجميع إشارات المتصفح."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"كتابة سجل المتصفح والإشارات"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"للسماح لتطبيق ما بتعديل سجل المتصفح أو الإشارات في هاتفك. يمكن أن تستخدم التطبيقات الضارة ذلك لمسح بيانات المتصفح أو تعديلها."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"تعيين المنبه في ساعة المنبه"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"للسماح للتطبيق بضبط المنبه في تطبيق ساعة منبه مثبّت. ربما لا تنفذ بعض تطبيقات المنبه هذه الميزة."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"تعديل أذونات الموقع الجغرافي للمتصفح"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"للسماح لتطبيق ما بتعديل أذونات الموقع الجغرافي للمتصفح. يمكن أن تستخدم التطبيقات الضارة هذا للسماح بإرسال معلومات الموقع إلى مواقع ويب عشوائية."</string>
<string name="save_password_message" msgid="767344687139195790">"هل تريد من المتصفح تذكر كلمة المرور هذه؟"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"هناك شبكة Wi-Fi مفتوحة متاحة"</item>
<item quantity="other" msgid="7915895323644292768">"هناك شبكات Wi-Fi مفتوحة متاحة"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"إدراج حرف"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"تطبيق غير معروف"</string>
<string name="sms_control_title" msgid="7296612781128917719">"إرسال رسائل قصيرة SMS"</string>
@@ -971,6 +983,8 @@
<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>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"المس للاطلاع على خيارات USB الأخرى"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"تهيئة وحدة تخزين USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"تنسيق بطاقة SD"</string>
@@ -1118,8 +1132,8 @@
<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="180268188117163072">"عرض الكل..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"تحديد نشاط"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"مشاركة مع..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index b67812a..f20ef1b 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Разрешава на приложенията да наблюдават кои клавиши натискате дори и когато взаимодействате с друго приложение (например когато въвеждате парола). Нормалните приложения би трябвало никога да не се нуждаят от това."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"обвързване с метод на въвеждане"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Разрешава на притежателя да се обвърже с интерфейса от най-високото ниво на метод на въвеждане. Нормалните приложения би трябвало никога да не се нуждаят от това."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"обвързване с тапет"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Разрешава на притежателя да се обвърже с интерфейса от най-високото ниво на тапет. Нормалните приложения би трябвало никога да не се нуждаят от това."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"обвързване с услуга за приспособления"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <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="1284843728203412135">"четене на историята и отметките на браузъра"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Разрешава на приложението да чете всички URL адреси, посетени от браузъра, и всички негови отметки."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"запис в историята и отметките на браузъра"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Разрешава на приложението да променя историята или отметките на браузъра, съхранени на телефона ви. Злонамерените приложения могат да използват това, за да изтрият или променят данните на браузъра ви."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"навиване на будилника"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Разрешава на приложението да навие инсталирано приложение будилник. Някои будилници може да не изпълнят тази функция."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Промяна на разрешенията за местоположение в браузъра"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Разрешава на приложението да променя разрешенията на браузъра за местоположение. Злонамерените приложения могат да използват това, за да изпращат информация за местоположението до произволни уебсайтове."</string>
<string name="save_password_message" msgid="767344687139195790">"Искате ли браузърът да запомни тази парола?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Има достъпна отворена Wi-Fi мрежа"</item>
<item quantity="other" msgid="7915895323644292768">"Има достъпни отворени Wi-Fi мрежи"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Вмъкване на знак"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Неизвестно приложение"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Изпращане на SMS съобщения"</string>
@@ -971,6 +983,8 @@
<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>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Докоснете за други опции за USB"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Форматиране на USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Форматиране на SD картата"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index c7b1735..cb57c33 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Permet a les aplicacions fer un seguiment de les tecles que premeu, fins i tot quan s\'interactua amb una altra aplicació (com ara introduir una contrasenya). No s\'hauria de necessitar mai per a les aplicacions normals."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"vincular a un mètode d\'entrada"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Permet al titular vincular amb la interfície de nivell superior d\'un mètode d\'entrada. No s\'hauria de necessitar mai per a les aplicacions normals."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"vincular a un empaperat"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Permet al titular vincular amb la interfície de nivell superior d\'un empaperat. No s\'hauria de necessitar mai per a les aplicacions normals."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"vincula a un servei de widget"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Província"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Codi postal"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Estat"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Codi postal"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Comtat"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Illa"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Districte"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Departament"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Prefectura"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Districte"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Àrea"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"llegir l\'historial i les adreces d\'interès del navegador"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Permet a l\'aplicació llegir tots els URL que ha visitat el navegador i totes les adreces d\'interès del navegador."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"escriure l\'historial i les adreces d\'interès del navegador"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Permet a una aplicació modificar l\'historial o les adreces d\'interès del navegador emmagatzemats al telèfon. Les aplicacions malicioses poden utilitzar-ho per esborrar o modificar les dades del navegador."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"defineix l\'alarma com a despertador"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Permet que l\'aplicació defineixi una alarma en una aplicació de despertador instal·lada. És possible que algunes aplicacions de despertador no incorporin aquesta funció."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Modifica els permisos d\'ubicació geogràfica del navegador"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Permet a una aplicació modificar els permisos d\'ubicació geogràfica del navegador. Les aplicacions malicioses poden utilitzar-ho per permetre l\'enviament d\'informació d\'ubicació a llocs web arbitraris."</string>
<string name="save_password_message" msgid="767344687139195790">"Voleu que el navegador recordi aquesta contrasenya?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Xarxa Wi-fi oberta disponible"</item>
<item quantity="other" msgid="7915895323644292768">"Xarxes Wi-fi obertes disponibles"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Insereix un caràcter"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Aplicació desconeguda"</string>
<string name="sms_control_title" msgid="7296612781128917719">"S\'estan enviant missatges SMS"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Connectat com a dispositiu multimèdia"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Connectat com a càmera"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Connectat com a instal·lador"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Toca per obtenir altres opcions d\'USB"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formata l\'emmag. USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formata la targeta SD"</string>
@@ -1118,8 +1132,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"Empremta SHA-256:"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"Empremta SHA-1:"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Mostra-ho tot"</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Selecció d\'activitat"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Ús compartit amb..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 944eb2f..c074e7b 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Umožňuje aplikacím sledovat, které klávesy používáte, a to i při práci s jinými aplikacemi (například při zadávání hesla). Běžné aplikace by toto nastavení nikdy neměly vyžadovat."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"vazba k metodě zadávání dat"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Umožňuje držiteli vázat se na nejvyšší úroveň rozhraní pro zadávání dat. Běžné aplikace by toto nastavení nikdy neměly využívat."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"vazba na tapetu"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Umožňuje držiteli navázat se na nejvyšší úroveň rozhraní tapety. Běžné aplikace by toto oprávnění nikdy neměly potřebovat."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"navázat se na službu widgetu"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Provincie"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"PSČ"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Stát"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"PSČ"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Okres"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Ostrov"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Okres"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Department"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Prefektura"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Farnost"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Oblast"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirát"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"čtení historie a záložek Prohlížeče"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Umožňuje aplikaci číst všechny navštívené adresy URL a záložky Prohlížeče."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"zápis do historie a záložek Prohlížeče"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Umožní aplikaci změnit historii či záložky prohlížeče uložené v telefonu. Škodlivé aplikace mohou pomocí tohoto nastavení vymazat či pozměnit data Prohlížeče."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"nastavit budík v budíku"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Dovoluje aplikaci nastavit budík v nainstalované aplikaci budíku. Některé budíkové aplikace nemusí tuto funkci implementovat."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Změnit oprávnění prohlížeče poskytovat informace o zeměpisné poloze"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Umožňuje aplikaci změnit oprávnění prohlížeče poskytovat informace o zeměpisné poloze. Škodlivé aplikace mohou toto nastavení použít k odesílání informací o umístění na libovolné webové stránky."</string>
<string name="save_password_message" msgid="767344687139195790">"Chcete, aby si prohlížeč zapamatoval toto heslo?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"K dispozici je veřejná síť WiFi"</item>
<item quantity="other" msgid="7915895323644292768">"Jsou k dispozici veřejné sítě WiFi"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Vkládání znaků"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Neznámá aplikace"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Odesílání zpráv SMS"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Připojeno jako mediální zařízení"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Připojeno jako fotoaparát"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Připojeno jako instalátor"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Dotykem zobrazíte další možnosti USB"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formátovat úložiště USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formátovat kartu SD"</string>
@@ -1118,8 +1132,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"Digitální otisk SHA-256"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"Digitální otisk SHA-1:"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Zobrazit vše..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Vybrat činnost"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Sdílet..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index c573322..0038b29 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Tillader, at en applikation registrerer taster, du trykker på, selv når du interagerer med andre applikationer (f.eks. ved indtastning af adgangskode). Bør aldrig være nødvendigt til normale applikationer."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"forpligt til en inputmetode"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Tillader, at brugeren forpligter sig til en inputmetodes grænseflade på øverste niveau. Bør aldrig være nødvendig til normale applikationer."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"forpligt til et tapet"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Tillader, at brugeren forpligter sig til et tapets grænseflade på øverste niveau. Bør aldrig være nødvendig til normale applikationer."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"forpligt til en widgettjeneste"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Provins"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Postnummer"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Stat"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Postnummer"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Amt"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Ø"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Distrikt"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Afdeling"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Præfektur"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Sogn"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Område"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"læs browserens oversigt og bogmærker"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Tillader, at applikationen læser alle de webadresser, browseren har besøgt, og alle browserens bogmærker."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"skriv browserens oversigt og bogmærker"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Tillader, at en applikation ændrer browseroversigten eller bogmærker, der er gemt på din telefon. Ondsindede applikationer kan bruge dette til at slette eller ændre din browsers data."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"angiv alarm i alarmprogram"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Tillader, at applikationen angiver en alarm i et installeret alarmprogram. Nogle alarmprogrammer kan ikke implementere denne funktion."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Skift browsertilladelser for geografisk placering"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Giver en applikation tilladelse til at ændre browserens tilladelser for geografisk placering. Skadelige applikationer kan bruge dette til at tillade, at placeringsoplysninger sendes til vilkårlige websteder."</string>
<string name="save_password_message" msgid="767344687139195790">"Ønsker du, at browseren skal huske denne adgangskode?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Åbent Wi-Fi-netværk tilgængeligt"</item>
<item quantity="other" msgid="7915895323644292768">"Der er åbne Wi-Fi-netværk tilgængelige"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Indsæt tegn"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Ukendt applikation"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Sender sms-beskeder"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Tilsluttet som en medieenhed"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Tilsluttet som et kamera"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Tilsluttet som et installationsprogram"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Tryk for at se andre valgmuligheder for USB-tilslutning"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formater USB-lager"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formater SD-kort"</string>
@@ -1118,8 +1132,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-256-fingeraftryk:"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1-fingeraftryk:"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Se alle..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Vælg aktivitet"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Del med..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 723d0a9..508b65d 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Ermöglicht Anwendungen, die von Ihnen gedrückten Tasten zu überwachen (etwa die Eingabe eines Passworts). Dies gilt auch für die Interaktion mit anderen Anwendungen. Sollte für normale Anwendungen nicht benötigt werden."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"An eine Eingabemethode binden"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Ermöglicht dem Halter, sich an die Oberfläche einer Eingabemethode auf oberster Ebene zu binden. Sollte nie für normale Anwendungen benötigt werden."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"An einen Hintergrund binden"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Ermöglicht dem Halter, sich an die Oberfläche einer Eingabemethode auf oberster Ebene zu binden. Sollte nie für normale Anwendungen benötigt werden."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"An einen Widget-Dienst binden"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Provinz"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Postleitzahl"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Bundesstaat/-land"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Postleitzahl"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Landkreis"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Insel"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Bezirk"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Distrikt"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Präfektur"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Gemeinde"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Gebiet"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"Browserverlauf und Lesezeichen lesen"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Ermöglicht der App, alle URLs, die mit dem Browser besucht wurden, sowie alle Lesezeichen des Browsers zu lesen"</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"Browserverlauf und Lesezeichen schreiben"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Ermöglicht einer App, den auf Ihrem Telefon gespeicherten Browserverlauf und die Lesezeichen zu ändern. Schädliche Anwendungen können so Ihre Browserdaten löschen oder ändern."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"Alarm im Wecker festlegen"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Ermöglicht dieser Anwendung, einen Alarm mithilfe eines installierten Weckers festzulegen. Einige Weckeranwendungen verfügen möglicherweise nicht über diese Funktion."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Geolokalisierungsberechtigungen des Browsers ändern"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Ermöglicht einer App, die Geolokalisierungsberechtigungen des Browsers zu ändern. Schädliche Anwendungen können dies nutzen, um das Senden von Standortinformationen an willkürliche Websites zuzulassen."</string>
<string name="save_password_message" msgid="767344687139195790">"Möchten Sie, dass der Browser dieses Passwort speichert?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Verfügbares WLAN-Netzwerk öffnen"</item>
<item quantity="other" msgid="7915895323644292768">"Verfügbare WLAN-Netzwerke öffnen"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Zeichen einfügen"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Unbekannte Anwendung"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Kurznachrichten werden gesendet"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Als Mediengerät angeschlossen"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Als Kamera angeschlossen"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Als Installationsprogramm angeschlossen"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Zum Anzeigen weiterer USB-Optionen tippen"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"USB-Sp. formatieren"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"SD-Karte formatieren"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 22a74b9..1bf806a 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Επιτρέπει σε εφαρμογές να παρακολουθούν τα πλήκτρα που πατάτε, ακόμη και σε μια άλλη εφαρμογή (όπως π.χ. η καταχώρηση ενός κωδικού πρόσβασης). Δεν είναι απαραίτητο για συνήθεις εφαρμογές."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"δέσμευση σε μέθοδο εισόδου"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Επιτρέπει στον κάτοχο τη δέσμευση στη διεπαφή ανωτάτου επιπέδου μιας μεθόδου εισόδου. Δεν είναι απαραίτητο για συνήθεις εφαρμογές."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"δέσμευση σε ταπετσαρία"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Επιτρέπει στον κάτοχο τη δέσμευση στη διεπαφή ανωτάτου επιπέδου μιας ταπετσαρίας. Δεν είναι απαραίτητο για συνήθεις εφαρμογές."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"δέσμευση σε υπηρεσία γραφικών στοιχείων"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <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="1284843728203412135">"ανάγνωση ιστορικού και σελιδοδεικτών προγράμματος περιήγησης"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Επιτρέπει στην εφαρμογή την ανάγνωση όλων των διευθύνσεων URL που το πρόγραμμα περιήγησης έχει επισκεφθεί και όλων των σελιδοδεικτών του προγράμματος περιήγησης."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"εγγραφή ιστορικού και σελιδοδεικτών προγράμματος περιήγησης"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Επιτρέπει σε μια εφαρμογή να τροποποιήσει το ιστορικό ή τους σελιδοδείκτες του προγράμματος περιήγησης που βρίσκονται αποθηκευμένα στο τηλέφωνό σας. Κακόβουλες εφαρμογές μπορούν να το χρησιμοποιήσουν για να διαγράψουν ή να τροποποιήσουν τα δεδομένα του προγράμματος περιήγησης."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"ρύθμιση ειδοποίησης σε ξυπνητήρι"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Επιτρέπει στην εφαρμογή να ρυθμίσει μια ειδοποίηση σε μια εγκατεστημένη εφαρμογή ξυπνητηριού. Κάποιες εφαρμογές ξυπνητηριού ενδέχεται να μην περιλαμβάνουν αυτή τη λειτουργία."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Τροποποίηση δικαιωμάτων γεωγραφικής θέσης προγράμματος περιήγησης"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Επιτρέπει σε μια εφαρμογή την τροποποίηση των δικαιωμάτων γεωγραφικής θέσης του προγράμματος περιήγησης. Οι κακόβουλες εφαρμογές μπορούν να το χρησιμοποιήσουν για να επιτρέψουν την αποστολή στοιχείων τοποθεσίας σε αυθαίρετους ιστότοπους."</string>
<string name="save_password_message" msgid="767344687139195790">"Θέλετε το πρόγραμμα περιήγησης να διατηρήσει αυτόν τον κωδικό πρόσβασης;"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Υπάρχει διαθέσιμο ανοικτό δίκτυο Wi-Fi"</item>
<item quantity="other" msgid="7915895323644292768">"Υπάρχουν διαθέσιμα ανοικτά δίκτυα Wi-Fi"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Εισαγωγή χαρακτήρα"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Άγνωστη εφαρμογή"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Αποστολή μηνυμάτων SMS"</string>
@@ -971,6 +983,8 @@
<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>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Αγγίξτε για άλλες επιλογές USB"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Διαγρ. απ. χώρου USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Διαμόρφωση κάρτας SD"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 2bf09f6..a22fafc 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Allows applications to watch the keys that you press even when interacting with another application (such as entering a password). Should never be needed for normal applications."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"bind to an input method"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Allows the holder to bind to the top-level interface of an input method. Should never be needed for normal applications."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"bind to wallpaper"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Allows the holder to bind to the top-level interface of wallpaper. Should never be needed for normal applications."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"bind to a widget service"</string>
@@ -720,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Allows an application to modify the browser\'s history or bookmarks stored on your phone. Malicious applications can use this to erase or modify your browser\'s data."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"set alarm in alarm clock"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Allows the application to set an alarm in an installed alarm clock application. Some alarm clock applications may not implement this feature."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Modify Browser geo-location permissions"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Allows an application to modify the browser\'s geo-location permissions. Malicious applications can use this to allow the sending of location information to arbitrary websites."</string>
<string name="save_password_message" msgid="767344687139195790">"Do you want the browser to remember this password?"</string>
@@ -872,12 +880,9 @@
<string name="launch_warning_title" msgid="8323761616052121936">"Application redirected"</string>
<string name="launch_warning_replace" msgid="6202498949970281412">"<xliff:g id="APP_NAME">%1$s</xliff:g> is now running."</string>
<string name="launch_warning_original" msgid="188102023021668683">"<xliff:g id="APP_NAME">%1$s</xliff:g> was originally launched."</string>
- <!-- no translation found for screen_compat_mode_scale (3202955667675944499) -->
- <skip />
- <!-- no translation found for screen_compat_mode_show (4013878876486655892) -->
- <skip />
- <!-- no translation found for screen_compat_mode_hint (2953716574198046484) -->
- <skip />
+ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Scale"</string>
+ <string name="screen_compat_mode_show" msgid="4013878876486655892">"Always show"</string>
+ <string name="screen_compat_mode_hint" msgid="2953716574198046484">"Reenable this with Settings &gt; Applications &gt; Manage applications."</string>
<string name="smv_application" msgid="295583804361236288">"The application <xliff:g id="APPLICATION">%1$s</xliff:g> (process <xliff:g id="PROCESS">%2$s</xliff:g>) has violated its self-enforced StrictMode policy."</string>
<string name="smv_process" msgid="5120397012047462446">"The process <xliff:g id="PROCESS">%1$s</xliff:g> has violated its self-enforced StrictMode policy."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> running"</string>
@@ -911,24 +916,34 @@
<item quantity="one" msgid="1634101450343277345">"Open available Wi-Fi network"</item>
<item quantity="other" msgid="7915895323644292768">"Open Wi-Fi networks available"</item>
</plurals>
- <string name="select_character" msgid="3365550120617701745">"Insert character"</string>
- <string name="sms_control_default_app_name" msgid="7630529934366549163">"Unknown application"</string>
- <string name="sms_control_title" msgid="7296612781128917719">"Sending SMS messages"</string>
- <string name="sms_control_message" msgid="1289331457999236205">"A large number of SMS messages are being sent. Select \"OK\" to continue or \"Cancel\" to stop sending."</string>
- <string name="sms_control_yes" msgid="2532062172402615953">"OK"</string>
- <string name="sms_control_no" msgid="1715320703137199869">"Cancel"</string>
- <!-- no translation found for sim_removed_title (6227712319223226185) -->
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
<skip />
- <!-- no translation found for sim_removed_message (2064255102770489459) -->
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
<skip />
- <!-- no translation found for sim_done_button (827949989369963775) -->
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
<skip />
- <!-- no translation found for sim_added_title (3719670512889674693) -->
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
<skip />
- <!-- no translation found for sim_added_message (1209265974048554242) -->
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
<skip />
- <!-- no translation found for sim_restart_button (4722407842815232347) -->
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
<skip />
+ <string name="select_character" msgid="3365550120617701745">"Insert character"</string>
+ <string name="sms_control_default_app_name" msgid="7630529934366549163">"Unknown application"</string>
+ <string name="sms_control_title" msgid="7296612781128917719">"Sending SMS messages"</string>
+ <string name="sms_control_message" msgid="1289331457999236205">"A large number of SMS messages are being sent. Select \"OK\" to continue or \"Cancel\" to stop sending."</string>
+ <string name="sms_control_yes" msgid="2532062172402615953">"OK"</string>
+ <string name="sms_control_no" msgid="1715320703137199869">"Cancel"</string>
+ <string name="sim_removed_title" msgid="6227712319223226185">"SIM card removed"</string>
+ <string name="sim_removed_message" msgid="2064255102770489459">"The mobile network will be unavailable until you replace the SIM card."</string>
+ <string name="sim_done_button" msgid="827949989369963775">"Done"</string>
+ <string name="sim_added_title" msgid="3719670512889674693">"SIM card added"</string>
+ <string name="sim_added_message" msgid="1209265974048554242">"You must restart your device to access the mobile network."</string>
+ <string name="sim_restart_button" msgid="4722407842815232347">"Restart"</string>
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Set time"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Set date"</string>
<string name="date_time_set" msgid="5777075614321087758">"Set"</string>
@@ -959,6 +974,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Connected as a media device"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Connected as a camera"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Connected as an installer"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Touch for other USB options"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Format USB storage"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Format SD card"</string>
@@ -1106,8 +1123,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-256 fingerprint"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1 fingerprint"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"See all..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Select activity"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Share with..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index ea642c9..7c61d39 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Admite que las aplicaciones observen las teclas que presionas, incluso al interactuar con otra aplicación (como el ingreso de una contraseña). Se debe evitar utilizarlo en aplicaciones normales."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"vincular a un método de entrada"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Permite al propietario vincularse a la interfaz de nivel superior de un método de entrada. Se debe evitar utilizarlo en aplicaciones normales."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"vincular a un fondo de pantalla"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Permite al propietario vincularse a la interfaz de nivel superior de un fondo de pantalla. Se debe evitar utilizarlo en aplicaciones normales."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"vincular a un servicio de widget"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Provincia"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Código postal"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Estado"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Código postal"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Condado"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Isla"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Distrito"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Departamento"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Prefectura"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Circunscripción"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Área"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirato"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"leer historial y marcadores del navegador"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Permite a la aplicación leer todas las URL que ha visitado el navegador y todos los marcadores del navegador."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"escribir historial y marcadores del navegador"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Permite a una aplicación modificar el historial y los marcadores del navegador almacenados en tu teléfono. Las aplicaciones maliciosas pueden utilizarlo para borrar o modificar tus datos."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"configurar alarma en reloj alarma"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Permite que la aplicación configure una alarma en una aplicación instalada de reloj alarma. Es posible que algunas aplicaciones de reloj alarma no implementen esta función."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Modificar los permisos de ubicación geográfica del navegador"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Permite que una aplicación modifique los permisos de ubicación geográfica del navegador. Las aplicaciones maliciosas pueden utilizarlos para permitir el envío de información sobre la ubicación a sitos web de forma arbitraria."</string>
<string name="save_password_message" msgid="767344687139195790">"¿Quieres recordar esta contraseña en el navegador?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Abrir red disponible de Wi-Fi"</item>
<item quantity="other" msgid="7915895323644292768">"Abrir redes disponibles de Wi-Fi"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Insertar caracteres"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Aplicación desconocida"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Enviando mensajes SMS"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Conectado como un dispositivo de medios"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Conectado como una cámara"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Conectado como un instalador"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Toca para otras opciones de USB"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formatear almacenamiento USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formatear tarjeta SD"</string>
@@ -1118,8 +1132,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"Huella digital SHA-256"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"Huella digital SHA-1:"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Ver todas..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Seleccionar actividad"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Compartir con..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 44e1c94..1179764 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Permite que las aplicaciones observen las teclas que pulsas incluso cuando interactúas con otra aplicación (como, por ejemplo, al introducir una contraseña). No debería ser necesario nunca para las aplicaciones normales."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"enlazar con un método de introducción de texto"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Permite enlazar con la interfaz de nivel superior de un método de introducción de texto. No debe ser necesario para las aplicaciones normales."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"enlazar con un fondo de pantalla"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Permite enlazar con la interfaz de nivel superior de un fondo de pantalla. No debe ser necesario para las aplicaciones normales."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"enlazar con un servicio de widget"</string>
@@ -519,7 +523,7 @@
<item msgid="7897544654242874543">"Trabajo"</item>
<item msgid="1103601433382158155">"Fax del trabajo"</item>
<item msgid="1735177144948329370">"Fax de casa"</item>
- <item msgid="603878674477207394">"Buscapersonas"</item>
+ <item msgid="603878674477207394">"Busca"</item>
<item msgid="1650824275177931637">"Otro"</item>
<item msgid="9192514806975898961">"Personalizar"</item>
</string-array>
@@ -562,7 +566,7 @@
<string name="phoneTypeWork" msgid="8863939667059911633">"Trabajo"</string>
<string name="phoneTypeFaxWork" msgid="3517792160008890912">"Fax del trabajo"</string>
<string name="phoneTypeFaxHome" msgid="2067265972322971467">"Fax de casa"</string>
- <string name="phoneTypePager" msgid="7582359955394921732">"Buscapersonas"</string>
+ <string name="phoneTypePager" msgid="7582359955394921732">"Busca"</string>
<string name="phoneTypeOther" msgid="1544425847868765990">"Otro"</string>
<string name="phoneTypeCallback" msgid="2712175203065678206">"Devolución de llamada"</string>
<string name="phoneTypeCar" msgid="8738360689616716982">"Coche"</string>
@@ -574,7 +578,7 @@
<string name="phoneTypeTelex" msgid="3367879952476250512">"Télex"</string>
<string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
<string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Móvil del trabajo"</string>
- <string name="phoneTypeWorkPager" msgid="649938731231157056">"Buscapersonas del trabajo"</string>
+ <string name="phoneTypeWorkPager" msgid="649938731231157056">"Busca del trabajo"</string>
<string name="phoneTypeAssistant" msgid="5596772636128562884">"Asistente"</string>
<string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
<string name="eventTypeCustom" msgid="7837586198458073404">"Personalizados"</string>
@@ -720,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Permite que una aplicación modifique la información de los marcadores o del historial del navegador almacenada en el teléfono. Las aplicaciones malintencionadas pueden utilizar este permiso para borrar o modificar los datos del navegador."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"establecer alarma en un reloj"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Permite a la aplicación establecer una alarma en una aplicación de reloj instalada. Es posible que algunas aplicaciones de reloj no incluyan esta función."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Modificar los permisos de ubicación geográfica del navegador"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Permite que una aplicación modifique los permisos de ubicación geográfica del navegador. Las aplicaciones malintencionadas pueden utilizar este permiso para permitir el envío de información sobre la ubicación a sitios web arbitrarios."</string>
<string name="save_password_message" msgid="767344687139195790">"¿Deseas que el navegador recuerde esta contraseña?"</string>
@@ -911,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Red Wi-Fi abierta disponible"</item>
<item quantity="other" msgid="7915895323644292768">"Redes Wi-Fi abiertas disponibles"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Insertar carácter"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Aplicación desconocida"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Enviando mensajes SMS..."</string>
@@ -959,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Conectado como un dispositivo de medios"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Conectado como una cámara"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Conectado como instalador"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Tocar para acceder a otras opciones de USB"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formatear USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formatear tarjeta SD"</string>
@@ -1106,8 +1132,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"Huella digital SHA-256:"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"Huella digital SHA-1:"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Ver todas..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Seleccionar actividad"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Compartir con..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 14943a1..35fc0b9 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"به برنامه های کاربردی اجازه می دهد حتی زمانی که با برنامه دیگری در حال ارتباط هستید (مانند وارد کردن یک رمز ورود)، بتوانند کلیدهایی را که فشار می دهید ببینند. هرگز برای برنامه های معمولی مورد نیاز نیست."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"پیوند شده به روش ورودی"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"به نگهدارنده اجازه می دهد به رابط سطح بالای یک روش ورودی متصل شود. هرگز برای برنامه های معمولی مورد نیاز نیست."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"پیوند شده به تصویر زمینه"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"به نگهدارنده اجازه می دهد که به رابط سطح بالای تصویر زمینه متصل شود. هرگز برای برنامه های معمولی مورد نیاز نیست."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"اتصال به یک سرویس ابزارک"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <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="1284843728203412135">"خواندن سابقه و نشانک های مرورگر"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"به برنامه کاربردی اجازه می دهد تا تمام URL های بازدید شده توسط مرورگر و تمام نشانک های آن را بخواند."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"نوشتن سابقه مرورگر و نشانک ها"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"به یک برنامه کاربردی اجازه می دهد سابقه مرورگر یا نشانک ذخیره شده در گوشی شما را تغییر دهد. برنامه های مضر می توانند از این امکان برای حذف یا تغییر داده های مرورگر شما استفاده کنند."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"تنظیم هشدار در ساعت زنگ دار"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"به برنامه کاربردی برای تنظیم یک هشدار در یک برنامه ساعت زنگ دار نصب شده اجازه می دهد. در برخی از برنامه های ساعت زنگ دار ممکن است این ویژگی اجرا نشود."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"اصلاح کردن مجوزهای مکان جغرافیایی مرورگر"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"به یک برنامه کاربردی اجازه می دهد مجوزهای مکان جغرافیایی مرورگر را تغییر دهد. برنامه های مضر می توانند از این گزینه استفاده کرده و اطلاعات مربوط به مکان را به وب سایت های غیر قانونی ارسال کنند."</string>
<string name="save_password_message" msgid="767344687139195790">"می خواهید مرورگر این رمز ورود را به خاطر داشته باشد؟"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"شبکه Wi-Fi موجود را باز کنید"</item>
<item quantity="other" msgid="7915895323644292768">"شبکه های Wi-Fi موجود را باز کنید"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"درج نویسه"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"برنامه ناشناس"</string>
<string name="sms_control_title" msgid="7296612781128917719">"ارسال پیامک ها"</string>
@@ -971,6 +983,8 @@
<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>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"برای سایر گزینه های USB لمس کنید"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"فرمت کردن حافظه USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"فرمت کردن کارت SD"</string>
@@ -1085,7 +1099,7 @@
<string name="sync_too_many_deletes" msgid="5296321850662746890">"از حد مجاز حذف فراتر رفت"</string>
<string name="sync_too_many_deletes_desc" msgid="7030265992955132593">"<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="8933566316059338692">"موارد را حذف کنید."</string>
- <string name="sync_undo_deletes" msgid="8610996708225006328">"واگرد موارد حذف شده."</string>
+ <string name="sync_undo_deletes" msgid="8610996708225006328">"لغو موارد حذف شده."</string>
<string name="sync_do_nothing" msgid="8717589462945226869">"اکنون هیچ کاری انجام نشود."</string>
<string name="choose_account_label" msgid="4191313562041125787">"انتخاب یک حساب"</string>
<string name="number_picker_increment_button" msgid="4830170763103463443">"افزایش"</string>
@@ -1118,8 +1132,8 @@
<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="180268188117163072">"مشاهده همه..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"انتخاب فعالیت"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"اشتراک گذاری با..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index fcae45c..2e3f921 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Antaa sovelluksien tarkkailla painamiasi näppäimiä jopa toisten sovellusten käytön yhteydessä (kuten salasanoja syötettäessä). Ei tavallisten sovelluksien käyttöön."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"sitoudu syöttötapaan"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Antaa sovelluksen sitoutua syöttötavan ylemmän tason käyttöliittymään. Ei tavallisten sovelluksien käyttöön."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"sido taustakuvaan"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Antaa sovelluksen sitoutua taustakuvan ylemmän tason käyttöliittymään. Ei tavallisten sovelluksien käyttöön."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"sitoudu widget-palveluun"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Provinssi"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Postinumero"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Osavaltio"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Postinumero"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Lääni"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Saari"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Piiri"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Osasto"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Prefektuuri"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Kunta"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Alue"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emiraatti"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"lue selaimen historiaa ja kirjanmerkkejä"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Antaa sovelluksen lukea kaikki selaimen käyttämät URL-osoitteet ja selaimen kirjanmerkit."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"kirjoita selaimen historiaa ja kirjanmerkkejä"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Antaa sovelluksen muokata puhelimeen tallennettuja selaimen historia- ja kirjanmerkkitietoja. Haitalliset sovellukset voivat käyttää tätä pyyhkiäkseen tai muokatakseen selaimen tietoja."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"aseta herätys herätyskelloon"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Antaa sovelluksen asettaa herätyksen asennettuun herätyskellosovellukseen. Kaikki herätyskellosovellukset eivät välttämättä käytä tätä ominaisuutta."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"muokkaa selaimen maantieteellisen sijainnin lupia"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Antaa sovelluksen muokata selaimen maantieteellisen sijainnin lupia. Haitalliset sovellukset saattavat käyttää tätä sijaintitietojen lähettämiseen satunnaisiin verkkosivustoihin."</string>
<string name="save_password_message" msgid="767344687139195790">"Haluatko selaimen muistavan tämän salasanan?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Avoin wifi-verkko käytettävissä"</item>
<item quantity="other" msgid="7915895323644292768">"Avoimia wifi-verkkoja käytettävissä"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Lisää merkki"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Tuntematon sovellus"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Tekstiviestien lähettäminen"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Kytketty medialaitteena"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Kytketty kamerana"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Kytketty asennusohjelmana"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Käytä muita USB-vaihtoehtoja koskettamalla"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Alusta USB-tila"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Alusta SD-kortti"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index be75a7e..a10b203 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Permet à des applications d\'identifier les touches sur lesquelles vous appuyez même lorsque vous utilisez une autre application (lors de la saisie d\'un mot de passe, par exemple). Les applications normales ne devraient jamais avoir recours à cette fonctionnalité."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"Association à un mode de saisie"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Permet au support de se connecter à l\'interface de plus haut niveau d\'un mode de saisie. Les applications normales ne devraient jamais avoir recours à cette fonctionnalité."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"Se fixer sur un fond d\'écran"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Permet au support de se fixer sur l\'interface de plus haut niveau d\'un fond d\'écran. Les applications normales ne devraient jamais avoir recours à cette fonctionnalité."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"associer à un service widget"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Province"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Code postal"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"État"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Code postal"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Comté"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Île"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"District"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Département"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Préfecture"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Commune"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Région"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Émirat"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"lire l\'historique et les favoris du navigateur"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Autorise l\'application à lire toutes les URL auxquelles le navigateur a accédé et tous ses favoris."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"écrire dans l\'historique et les favoris du navigateur"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Permet à une application de modifier l\'historique du navigateur ou les favoris enregistrés sur votre téléphone. Des applications malveillantes peuvent exploiter cette fonction pour effacer ou modifier les données de votre navigateur."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"régler le réveil"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Permet à l\'application de définir une alarme dans un utilitaire faisant office de réveil. Certains réveils risquent ne pas prendre en charge cette fonctionnalité."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Modifier les autorisations de géolocalisation du navigateur"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Permet à une application de modifier les autorisations de géolocalisation du navigateur. Les applications malveillantes peuvent se servir de cette fonctionnalité pour envoyer des informations de lieu à des sites Web arbitraires."</string>
<string name="save_password_message" msgid="767344687139195790">"Voulez-vous que le navigateur se souvienne de ce mot de passe ?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Réseau Wi-Fi ouvert disponible"</item>
<item quantity="other" msgid="7915895323644292768">"Réseaux Wi-Fi ouverts disponibles"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Insérer un caractère"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Application inconnue"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Envoi de messages SMS"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Connecté en tant qu\'appareil multimédia"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Connecté en tant qu\'appareil photo"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Connecté en tant que programme d\'installation"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Appuyez pour accéder aux autres options USB."</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formater la mémoire USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formater la carte SD"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index cf119d5..72ea506 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Aplikacijama omogućuje praćenje pritisnutih tipki kod interakcije s drugom aplikacijom (primjerice kod unosa zaporke). Nikad ne bi trebalo koristiti za uobičajene aplikacije."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"vezano uz način unosa"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Nositelju omogućuje da se veže uz sučelje najviše razine za metodu unosa. Nikad ne bi trebalo koristiti za uobičajene aplikacije."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"povezano s pozadinskom slikom"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Nositelju omogućuje da se veže uz sučelje najviše razine za pozadinsku sliku. Nikad ne bi trebalo koristiti za uobičajene aplikacije."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"vezanje na uslugu widgeta"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Pokrajina"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Poštanski broj"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Država"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Poštanski broj"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Županija"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Otok"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Okrug"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Odjel"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Prefektura"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Župa"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Područje"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"čitanje povijesti i oznaka preglednika"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Aplikaciji omogućuje čitanje svih URL-ova koje je preglednik posjetio i svih oznaka iz preglednika."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"pisanje povijesti i oznaka preglednika"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Aplikaciji omogućuje izmjenu povijesti ili oznaka preglednika koji su pohranjeni na vašem telefonu. Zlonamjerne aplikacije to mogu koristiti za brisanje ili izmjenu podataka o pregledniku."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"namjesti alarm na budilici"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Omogućuje aplikaciji da namjesti alarm u instaliranoj aplikaciji budilice. Neke aplikacije budilice možda neće primijeniti ovu značajku."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Izmijeni dopuštenja za geo-lociranje u pregledniku"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Aplikaciji omogućuje izmjenu dopuštenja za geolokaciju u pregledniku. Zlonamjerne aplikacije to mogu koristiti za omogućavanje slanja informacija o lokaciji na proizvoljne web-lokacije."</string>
<string name="save_password_message" msgid="767344687139195790">"Želite li da preglednik zapamti ovu zaporku?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Omogućavanje otvaranja Wi-Fi mreže"</item>
<item quantity="other" msgid="7915895323644292768">"Omogućavanje otvaranja Wi-Fi mreža"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Umetni znak"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Nepoznata aplikacija"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Slanje SMS poruka"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Spojen kao medijski uređaj"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Spojen kao fotoaparat"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Spojen kao instalacijski program"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Dodirnite za ostale opcije USB-a"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Format. USB memoriju"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formatiraj SD karticu"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 5fc1c31..3a5fd40 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Lehetővé teszi az alkalmazások számára, hogy figyeljék a lenyomott billentyűket még másik alkalmazás használata esetén is (például jelszó beírásakor). A normál alkalmazásoknak erre soha nincs szüksége."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"összekapcsolás egy beviteli módszerrel"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Lehetővé teszi a használó számára a beviteli módszer legfelső szintű kezelőfelületéhez való csatlakozást. A normál alkalmazások soha nem használják ezt."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"összekapcsolás háttérképpel"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Lehetővé teszi a használó számára, hogy csatlakozzon egy háttérkép legfelső szintű kezelőfelületéhez. A normál alkalmazásoknak erre soha nincs szüksége."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"csatlakozás modulszolgáltatáshoz"</string>
@@ -720,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Lehetővé teszi egy alkalmazás számára, hogy módosítsa a telefonon tárolt böngészési előzményeket és könyvjelzőket. A rosszindulatú alkalmazások felhasználhatják ezt a böngésző adatainak törlésére vagy módosítására."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"ébresztő beállítása az ébresztőórában"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Lehetővé teszi az alkalmazások számára, hogy beállítsanak egy ébresztőt egy telepített ébresztőóra alkalmazásban. Egyes ilyen alkalmazásokban lehet, hogy nem működik ez a funkció."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"A böngésző helymeghatározási engedélyeinek módosítása"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Lehetővé teszi egy alkalmazás számára, hogy módosítsa a böngésző helymeghatározási engedélyeit. A rosszindulatú alkalmazások kihasználhatják ezt arra, hogy helyadatokat küldjenek tetszőleges webhelyeknek."</string>
<string name="save_password_message" msgid="767344687139195790">"Szeretné, hogy a böngésző megjegyezze a jelszót?"</string>
@@ -911,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Nyílt Wi-Fi hálózat elérhető"</item>
<item quantity="other" msgid="7915895323644292768">"Nyílt Wi-Fi hálózatok elérhetők"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Karakter beszúrása"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Ismeretlen alkalmazás"</string>
<string name="sms_control_title" msgid="7296612781128917719">"SMS-ek küldése"</string>
@@ -959,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Csatlakoztatva médiaeszközként"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Csatlakoztatva kameraként"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Csatlakoztatva telepítőként"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Érintse meg a további USB-opciókért"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Az USB-tár formázása"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"SD-kártya formázása"</string>
@@ -1106,8 +1132,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-256 ujjlenyomat:"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1 ujjlenyomat:"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Összes megtekintése..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Tevékenység kiválasztása"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Megosztás..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index fa7fefb..85b8012 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Mengizinkan aplikasi melihat tombol yang Anda tekan bahkan ketika berinteraksi dengan aplikasi lain (seperti memasukkan sandi). Tidak pernah diperlukan untuk aplikasi normal."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"mengikat ke metode masukan"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Mengizinkan pemegang mengikat antarmuka tingkat tinggi pada suatu metode masukan. Tidak diperlukan untuk aplikasi normal."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"mengikat ke wallpaper"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Mengizinkan pemegang mengikat antarmuka tingkat tinggi dari suatu wallpaper. Tidak diperlukan untuk aplikasi normal."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"mengikat ke layanan widget"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Provinsi"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Kode pos"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Negara Bagian"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Kode pos"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Wilayah"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Pulau"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Distrik"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Departemen"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Prefektur"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Kampung"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Area"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"baca riwayat dan bookmark Peramban"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Izinkan aplikasi membaca semua URL yang telah dikunjungi Peramban, dam semua bookmark Peramban."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"tuliskan riwayat dan bookmark Peramban"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Mengizinkan aplikasi mengubah riwayat atau bookmark Peramban yang tersimpan pada ponsel. Aplikasi hasad dapat menggunakan ini untuk menghapus atau mengubah data Peramban."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"setel alarm di jam alarm"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Perbolehkan aplikasi untuk menyetel alarm di aplikasi jam alarm yang terpasang. Beberapa aplikasi jam alarm tidak dapat menerapkan fitur ini."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Ubah izin geolokasi Peramban"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Mengizinkan aplikasi mengubah izin geolokasi Peramban. Aplikasi hasad dapat menggunakan ini untuk mengizinkan pengiriman informasi lokasi ke situs web sembarangan."</string>
<string name="save_password_message" msgid="767344687139195790">"Apakah Anda ingin peramban menyimpan sandi ini?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Jaringan Wi-Fi terbuka tersedia"</item>
<item quantity="other" msgid="7915895323644292768">"Jaringan Wi-Fi terbuka tersedia"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Sisipkan huruf"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Aplikasi tidak dikenal"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Mengirim pesan SMS"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Terhubung sebagai perangkat media"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Terhubung sebagai kamera"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Terhubung sebagai pemasang"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Sentuh untuk opsi USB lainnya"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Format penyimpanan USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Format kartu SD"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 6e19cb5..147cb70 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Consente il rilevamento da parte delle applicazioni dei tasti premuti anche durante l\'interazione con un\'altra applicazione (come nel caso di inserimento di una password). Non dovrebbe essere mai necessario per le normali applicazioni."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"associaz. a un metodo di inserimento"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Consente l\'associazione all\'interfaccia principale di un metodo di inserimento. Non dovrebbe essere mai necessario per le normali applicazioni."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"associazione a sfondo"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Consente l\'associazione di uno sfondo all\'interfaccia principale. Non dovrebbe mai essere necessario per le normali applicazioni."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"associazione a un servizio widget"</string>
@@ -720,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Consente a un\'applicazione di modificare la cronologia o i segnalibri del browser memorizzati sul telefono. Le applicazioni dannose possono sfruttare questa possibilità per cancellare o modificare i dati del browser."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"impostazione allarmi nella sveglia"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Consente all\'applicazione di impostare un allarme in un\'applicazione sveglia installata. Alcune applicazioni sveglia potrebbero non supportare questa funzione."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Modifica le autorizzazioni di localizzazione geografica del browser"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Consente a un\'applicazione di modificare le autorizzazioni di localizzazione geografica del browser. Le applicazioni dannose possono utilizzare questa autorizzazione per consentire l\'invio di informazioni sulla posizione a siti web arbitrari."</string>
<string name="save_password_message" msgid="767344687139195790">"Memorizzare la password nel browser?"</string>
@@ -911,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Rete Wi-Fi aperta disponibile"</item>
<item quantity="other" msgid="7915895323644292768">"Reti Wi-Fi aperte disponibili"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Inserisci carattere"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Applicazione sconosciuta"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Invio SMS"</string>
@@ -959,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Collegato come dispositivo multimediale"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Collegato come fotocamera"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Collegato come installer"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Tocca per altre opzioni USB"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formatta archivio USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formatta scheda SD"</string>
@@ -1106,8 +1132,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"Fingerprint SHA-256:"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"Fingerprint SHA-1:"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Mostra tutto..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Seleziona attività"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Condividi con..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 9c8b81d..159af64 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"מאפשר ליישומים לצפות במקשים שעליהם אתה לוחץ בעת אינטראקציה עם יישום אחר (כגון הזנת סיסמה). לא אמור להיות דרוש לעולם ליישום רגילים."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"הכפפה לשיטת קלט"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"מאפשר למחזיק להכפיף לממשק ברמה עליונה של שיטת קלט. לא אמור להידרש לעולם ביישומים רגילים."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"קשור לטפט"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"מאפשר למחזיק לקשור לממשק ברמה עליונה של טפט. לא אמור להידרש לעולם ביישומים רגילים."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"הכפפה לשירות Widget"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <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="1284843728203412135">"קרא היסטוריה וסימניות של דפדפן"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"מאפשר ליישום לקרוא את כל כתובות האתרים שבהן ביקר הדפדפן, ואת כל הסימניות של הדפדפן."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"כתיבת היסטוריה וסימניות של דפדפן"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"מאפשר ליישום לשנות את ההיסטוריה או הסימניות של הדפדפן המאוחסנים בטלפון. יישומים זדוניים עלולים להשתמש ביכולת זו כדי למחוק או לשנות את נתוני הדפדפן."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"הגדר התראה בשעון המעורר"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"מאפשר ליישום להגדיר התראה ביישום מותקן של שעון מעורר. חלק מיישומי השעון המעורר עשויים שלא ליישם תכונה זו."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"שנה את ההרשאות של מיקום גיאוגרפי בדפדפן"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"מאפשר ליישום לשנות את הרשאות היעד הגיאוגרפי של הדפדפן. יישומים זדוניים יכולים להשתמש ביכולת זו כדי לאפשר שליחה של פרטי מיקום לאתרי אינטרנט אקראיים."</string>
<string name="save_password_message" msgid="767344687139195790">"האם ברצונך שהדפדפן יזכור סיסמה זו?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"רשת Wi-Fi פתוחה זמינה"</item>
<item quantity="other" msgid="7915895323644292768">"רשתות Wi-Fi פתוחות זמינות"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"הוסף תו"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"יישום לא ידוע"</string>
<string name="sms_control_title" msgid="7296612781128917719">"שולח הודעות SMS"</string>
@@ -971,6 +983,8 @@
<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>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"גע לקבלת אפשרויות USB נוספות"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"פרמט אמצעי אחסון מסוג USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"פרמוט כרטיס SD"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 7614dd1..c2b6dd2 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"別のアプリケーションへの入力(パスワードなど)でもキー入力を監視することをアプリケーションに許可します。通常のアプリケーションではまったく必要ありません。"</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"入力方法に関連付ける"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"入力方法のトップレベルインターフェースに関連付けることを所有者に許可します。通常のアプリケーションにはまったく必要ありません。"</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"壁紙にバインド"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"壁紙のトップレベルインターフェースへのバインドを所有者に許可します。通常のアプリケーションでは不要です。"</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"ウィジェットサービスにバインド"</string>
@@ -701,30 +705,18 @@
<string name="autofill_address_summary_name_format" msgid="3268041054899214945">"$3$2$1"</string>
<string name="autofill_address_summary_separator" msgid="7483307893170324129">"、 "</string>
<string name="autofill_address_summary_format" msgid="4874459455786827344">"$1$2$3"</string>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <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="1284843728203412135">"ブラウザの履歴とブックマークを読み取る"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"ブラウザでアクセスしたすべてのURLおよびブラウザのすべてのブックマークの読み取りをアプリケーションに許可します。"</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"ブラウザの履歴とブックマークを書き込む"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"携帯電話に保存されているブラウザの履歴やブックマークの修正をアプリケーショに許可します。これにより悪意のあるアプリケーションが、ブラウザのデータを消去または変更する恐れがあります。"</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"アラームの設定"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"インストール済みアラームアプリケーションのアラーム設定をアプリケーションに許可します。この機能が実装されていないアラームアプリケーションもあります。"</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"ブラウザの位置情報へのアクセス権を変更"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"ブラウザの位置情報に対するアクセス権の変更をアプリケーションに許可します。この設定では、悪意のあるアプリケーションが任意のウェブサイトに位置情報を送信する可能性があります。"</string>
<string name="save_password_message" msgid="767344687139195790">"このパスワードをブラウザで保存しますか?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Wi-Fiオープンネットワークが利用できます"</item>
<item quantity="other" msgid="7915895323644292768">"Wi-Fiオープンネットワークが利用できます"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"文字を挿入"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"不明なアプリケーション"</string>
<string name="sms_control_title" msgid="7296612781128917719">"SMSメッセージの送信中"</string>
@@ -971,6 +983,8 @@
<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>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"他のUSBオプションをタップしてください"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"USBストレージのフォーマット"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"SDカードをフォーマット"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index b47d090..0c4c4b8 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"애플리케이션이 다른 애플리케이션과 상호작용할 때에도 사용자가 누르는 키(예: 비밀번호 입력)를 볼 수 있도록 합니다. 일반 애플리케이션에는 절대로 필요하지 않습니다."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"입력 방법 연결"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"권한을 가진 프로그램이 입력 방법에 대한 최상위 인터페이스를 사용하도록 합니다. 일반 애플리케이션에는 절대로 필요하지 않습니다."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"배경화면 연결"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"권한을 가진 프로그램이 배경화면에 대한 최상위 인터페이스를 사용하도록 합니다. 일반 애플리케이션에는 절대로 필요하지 않습니다."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"위젯 서비스와 연결"</string>
@@ -701,30 +705,18 @@
<string name="autofill_address_summary_name_format" msgid="3268041054899214945">"$3$2$1"</string>
<string name="autofill_address_summary_separator" msgid="7483307893170324129">", "</string>
<string name="autofill_address_summary_format" msgid="4874459455786827344">"$1$2$3"</string>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <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="1284843728203412135">"브라우저의 기록 및 북마크 읽기"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"애플리케이션이 브라우저로 방문한 모든 URL과 브라우저의 모든 북마크를 읽도록 허용합니다."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"브라우저의 기록 및 북마크 쓰기"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"애플리케이션이 휴대전화에 저장된 브라우저 기록 또는 북마크를 수정할 수 있도록 허용합니다. 이 경우 악성 애플리케이션이 브라우저의 데이터를 지우거나 수정할 수 있습니다."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"알람 시계에 알람 설정"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"실치된 알람 시계 애플리케이션에 알람을 설정하도록 허용합니다. 일부 알람 시계 애플리케이션은 이 기능을 구현하지 않을 수 있습니다."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"브라우저 위치 정보 수정 권한"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"애플리케이션이 브라우저의 위치 정보 권한을 수정할 수 있도록 합니다. 악성 애플리케이션이 이를 사용하여 임의의 웹사이트에 위치 정보를 보낼 수도 있습니다."</string>
<string name="save_password_message" msgid="767344687139195790">"브라우저에 이 비밀번호를 저장하시겠습니까?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"개방형 Wi-Fi 네트워크 사용 가능"</item>
<item quantity="other" msgid="7915895323644292768">"개방형 Wi-Fi 네트워크 사용 가능"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"문자 삽입"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"알 수 없는 애플리케이션"</string>
<string name="sms_control_title" msgid="7296612781128917719">"SMS 메시지를 보내는 중"</string>
@@ -971,6 +983,8 @@
<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>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"다른 USB 옵션을 보려면 터치하세요."</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"USB 저장소 포맷"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"SD 카드 포맷"</string>
@@ -1118,8 +1132,8 @@
<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="180268188117163072">"전체 보기..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"활동 선택"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"공유 대상..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-land/arrays.xml b/core/res/res/values-land/arrays.xml
index 85130ba..92d5a87 100644
--- a/core/res/res/values-land/arrays.xml
+++ b/core/res/res/values-land/arrays.xml
@@ -20,14 +20,14 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Resources for MultiWaveView in LockScreen -->
- <array name="ic_lockscreen_targets_when_silent">
+ <array name="lockscreen_targets_when_silent">
<item>@null</item>"
<item>@drawable/ic_lockscreen_unlock</item>
<item>@null</item>
<item>@drawable/ic_lockscreen_soundon</item>
</array>
- <array name="ic_lockscreen_targets_when_soundon">
+ <array name="lockscreen_targets_when_soundon">
<item>@null</item>"
<item>@drawable/ic_lockscreen_unlock</item>
<item>@null</item>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 44d8dc6..1e18e3c 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Leidžia programoms žiūrėti jūsų paspaustus klavišus sąveikaujant su kita programa (pvz., įvedant slaptažodį). Neturėtų reikėti įprastoms programoms."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"susaistyti įvesties būdą"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Leidžia savininkui susisaistyti su įvesties būdo aukščiausio lygio sąsaja. Neturėtų reikėti įprastoms programoms."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"susaistyti su darbalaukio fonu"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Leidžia savininkui susisaistyti su aukščiausio lygio darbalaukio fono sąsaja. Neturėtų reikėti įprastose programose."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"susaistyti su valdiklio paslauga"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Provincija"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Pašto kodas"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Valstija"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Pašto kodas"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Apskritis"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Sala"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Rajonas"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Departamentas"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Prefektūra"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Parapija"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Sritis"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emyratas"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"skaityti naršyklės istoriją ir žymes"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Leidžia programai skaityti visus URL, kuriuose apsilankė naršyklė, ir visas naršyklės žymas."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"rašyti naršyklės istoriją ir žymes"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Leidžia programai keisti naršyklės istoriją ar žymes, išsaugotus jūsų telefone. Kenkėjiškos programos gali tai naudoti, kad ištrintų ar keistų naršyklės duomenis."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"nustatyti žadintuvo signalą"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Leidžiama programai nustatyti signalą įdiegtoje žadintuvo programoje. Kai kuriose žadintuvo programose šios funkcijos gali nebūti."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Keisti naršyklės geografinės vietovės leidimus"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Leidžia programai keisti geografinių naršyklės vietų leidimus. Kenkėjiškos programos tai gali naudoti siunčiant vietos informaciją atsitiktinėms svetainėms."</string>
<string name="save_password_message" msgid="767344687139195790">"Ar norite, kad naršyklė atsimintų šį slaptažodį?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Atidaryti galimą „Wi-Fi“ tinklą"</item>
<item quantity="other" msgid="7915895323644292768">"Atidaryti galimus „Wi-Fi“ tinklus"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Įterpti simbolį"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Nežinoma programa"</string>
<string name="sms_control_title" msgid="7296612781128917719">"SMS pranešimų siuntimas"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Prij. kaip medijos įrenginys"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Prij. kaip fotoap."</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Prij. kaip diegimo programa"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Jei norite matyti kitas USB parinktis, palieskite"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Format. USB atmint."</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formatuoti SD kortelę"</string>
@@ -1118,8 +1132,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-256 kontrolinis kodas"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1 kontrolinis kodas"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Žr. viską..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Pasirinkti veiklą"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Bendrinti su..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index bc8b64c..43d640b 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Ļauj lietojumprogrammām sekot līdzi nospiestajiem taustiņiem, mijiedarbojoties ar citu lietojumprogrammu (piemēram, ievadot paroli). Parastajām lietojumprogrammām nekad nav nepieciešama."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"saistīt ar ievades metodi"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Ļauj īpašniekam saistīt ar ievades metodes augšējā līmeņa saskarni. Parastajām lietojumprogrammām nekad nav nepieciešama."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"saistīt ar tapeti"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Ļauj īpašniekam saistīties ar tapetes augšējā līmeņa saskarni. Parastajās lietojumprogrammās nekad nav nepieciešama."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"saistīt ar logrīka pakalpojumu"</string>
@@ -720,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Ļauj lietojumprogrammai pārveidot tālrunī saglabāto pārlūkprogrammas vēsturi un grāmatzīmes. Ļaunprātīgas lietojumprogrammas var to izmantot, lai dzēstu vai pārveidotu pārlūkprogrammas datus."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"iestatīt trauksmi modinātājpulkstenī"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Ļauj lietojumprogrammai iestatīt trauksmi instalētajā modinātājpulksteņa lietojumprogrammā. Dažās modinātājpulksteņu lietojumprogrammās šī funkcija var nebūt īstenojama."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Pārveidot pārlūkprogrammas ģeogrāfiskās atrašanās vietas atļaujas"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Ļauj lietojumprogrammai pārveidot pārlūkprogrammas ģeogrāfiskās atrašanās vietas atļaujas. Ļaunprātīgas lietojumprogrammas var to izmantot, lai atļautu atrašanās vietas informācijas sūtīšanu uz citām vietnēm."</string>
<string name="save_password_message" msgid="767344687139195790">"Vai vēlaties, lai pārlūkprogrammā tiktu saglabāta šī parole?"</string>
@@ -911,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Ir pieejams atvērts Wi-Fi tīkls"</item>
<item quantity="other" msgid="7915895323644292768">"Ir pieejami atvērti Wi-Fi tīkli."</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Ievietojiet rakstzīmi"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Nezināma lietojumprogramma"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Īsziņu sūtīšana"</string>
@@ -959,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Pievienots kā multivides ierīce"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Pievienots kā kamera"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Pievienots kā instalēšanas programma"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Pieskarieties, lai skatītu citas USB opcijas."</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"USB kr. formatēšana"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"SD kartes formatēšana"</string>
@@ -1106,8 +1132,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-256 identifikators"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1 identifikators:"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Skatīt visas"</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Darbību atlasīšana"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Kopīgot ar..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 2cf00e0..3921be9 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -46,8 +46,7 @@
<string name="badPuk" msgid="5702522162746042460">"Kod PUK yang anda taipkan tidak betul."</string>
<string name="mismatchPin" msgid="3695902225843339274">"PIN yang anda masukkan tidak sepadan."</string>
<string name="invalidPin" msgid="3850018445187475377">"Taipkan PIN yang mengandungi 4 hingga 8 nombor."</string>
- <!-- no translation found for invalidPuk (8761456210898036513) -->
- <skip />
+ <string name="invalidPuk" msgid="8761456210898036513">"Taipkan PUK yang mempunyai 8 nombor atau lebih panjang."</string>
<string name="needPuk" msgid="919668385956251611">"Kad SIM anda dikunci PUK. Taipkan kod PUK untuk membuka kuncinya."</string>
<string name="needPuk2" msgid="4526033371987193070">"Taipkan PUK2 untuk menyahsekat kad SIM."</string>
<string name="ClipMmi" msgid="6952821216480289285">"ID Pemanggil Masuk"</string>
@@ -153,7 +152,7 @@
<string name="global_actions_toggle_airplane_mode" msgid="5884330306926307456">"Mod pesawat"</string>
<string name="global_actions_airplane_mode_on_status" msgid="2719557982608919750">"Mod Pesawat DIHIDUPKAN"</string>
<string name="global_actions_airplane_mode_off_status" msgid="5075070442854490296">"Mod Pesawat DIMATIKAN"</string>
- <!-- outdated translation 5833510281787786290 --> <string name="status_bar_notification_info_overflow" msgid="5301981741705354993">"100+"</string>
+ <string name="status_bar_notification_info_overflow" msgid="5301981741705354993">"999+"</string>
<string name="safeMode" msgid="2788228061547930246">"Mod selamat"</string>
<string name="android_system_label" msgid="6577375335728551336">"Sistem Android"</string>
<string name="permgrouplab_costMoney" msgid="5429808217861460401">"Perkhidmatan yang anda perlu bayar"</string>
@@ -192,10 +191,8 @@
<string name="permdesc_receiveSms" msgid="6298292335965966117">"Membolehkan aplikasi untuk menerima dan memproses mesej SMS. aplikasi berbahaya boleh memantau mesej atau memadamkannya tanpa menunjukkan kepada anda."</string>
<string name="permlab_receiveMms" msgid="8894700916188083287">"terima MMS"</string>
<string name="permdesc_receiveMms" msgid="4563346832000174373">"Membenarkan aplikasi menerima dan memproses mesej MMS. Aplikasi berniat jahat mungkin memantau mesej anda atau memadamkannya tanpa menunjukkan kepada anda."</string>
- <!-- no translation found for permlab_receiveEmergencyBroadcast (1803477660846288089) -->
- <skip />
- <!-- no translation found for permdesc_receiveEmergencyBroadcast (7118393393716546131) -->
- <skip />
+ <string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"terima siaran kecemasan"</string>
+ <string name="permdesc_receiveEmergencyBroadcast" msgid="7118393393716546131">"Membenarkan aplikasi menerima dan memproses mesej siaran kecemasan. Kebenaran ini hanya tersedia kepada aplikasi sistem."</string>
<string name="permlab_sendSms" msgid="5600830612147671529">"hantar mesej SMS"</string>
<string name="permdesc_sendSms" msgid="1946540351763502120">"Membolehkan aplikasi menghantar mesej SMS. Aplikasi berniat jahat boleh merugikan wang anda dengan menghantar mesej tanpa pengesahan anda."</string>
<string name="permlab_readSms" msgid="4085333708122372256">"baca SMS atau MMS"</string>
@@ -226,10 +223,8 @@
<string name="permdesc_forceBack" msgid="6534109744159919013">"Membenarkan aplikasi memaksa sebarang aktiviti dalam latar depan untuk ditutup dan pergi ke belakang. Seharusnya tidak diperlukan untuk aplikasi nomal."</string>
<string name="permlab_dump" msgid="1681799862438954752">"mendapatkan semula keadaan dalaman sistem"</string>
<string name="permdesc_dump" msgid="2198776174276275220">"Membenarkan aplikasi mendapatkan semula keadaan dalaman sistem. Aplikasi berniat jahat boleh mendapatkan semula pelbagai maklumat sulit dan dilindungi yang ia tidak seharusnya memerlukannya."</string>
- <!-- no translation found for permlab_retrieve_window_content (8022588608994589938) -->
- <skip />
- <!-- no translation found for permdesc_retrieve_window_content (3390962289797156152) -->
- <skip />
+ <string name="permlab_retrieve_window_content" msgid="8022588608994589938">"dapatkan semula kandungan skrin"</string>
+ <string name="permdesc_retrieve_window_content" msgid="3390962289797156152">"Membenarkan aplikasi untuk mendapatkan kembali kandungan tetingkap aktif. Aplikasi berniat jahat boleh mendapatkan kembali kandungan keseluruhan tetingkap dan memeriksa semua teksnya kecuali kata laluan."</string>
<string name="permlab_shutdown" msgid="7185747824038909016">"penutupan separa"</string>
<string name="permdesc_shutdown" msgid="7046500838746291775">"Meletakkan pengurus aktiviti dalam keadaan tutup. Tidak melaksanakan penutupan lengkap."</string>
<string name="permlab_stopAppSwitches" msgid="4138608610717425573">"halang pertukaran apl"</string>
@@ -250,10 +245,8 @@
<string name="permdesc_batteryStats" msgid="5847319823772230560">"Membenarkan pengubahsuaian statistik bateri yang dikumpulkan. Bukan untuk kegunaan biasa aplikasi."</string>
<string name="permlab_backup" msgid="470013022865453920">"sandaran dan pemulihan sistem kawalan"</string>
<string name="permdesc_backup" msgid="4837493065154256525">"Membenarkan aplikasi mengawal mekanisme sandaran dan pemulihan sistem. Bukan untuk kegunaan aplikasi biasa."</string>
- <!-- no translation found for permlab_confirm_full_backup (5557071325804469102) -->
- <skip />
- <!-- no translation found for permdesc_confirm_full_backup (9005017754175897954) -->
- <skip />
+ <string name="permlab_confirm_full_backup" msgid="5557071325804469102">"sahkan penyandaran penuh atau pemulihan operasi"</string>
+ <string name="permdesc_confirm_full_backup" msgid="9005017754175897954">"Membenarkan aplikasi melancarkan UI pengesahan sandaran penuh. Bukan untuk digunakan oleh mana-mana aplikasi."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"memapaparkan tetingkap yang tiada kebenaran"</string>
<string name="permdesc_internalSystemWindow" msgid="5895082268284998469">"Membenarkan pewujudan tetingkap yang dimaksudkan untuk digunakan oleh antara muka pengguna sistem dalaman. Bukan untuk kegunaan oleh aplikasi biasa."</string>
<string name="permlab_systemAlertWindow" msgid="3372321942941168324">"paparkan amaran peringkat sistem"</string>
@@ -269,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Membenarkan aplikasi melihat kekunci yang anda tekan walaupun semasa berinteraksi dengan aplikasi lain (seperti memasukkan kata laluan). Seharusnya tidak sekali-kali diperlukan untuk aplikasi biasa."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"terikat kepada kaedah input"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Membenarkan pemegang terikat dengan antara muka peringkat tertinggi bagi kaedah input itu. Tidak sekali-kali diperlukan untuk aplikasi biasa."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"terikat pada kertas dinding"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Membenarkan pemegang terikat dengan antara muka peringkat tertinggi bagi kertas dinding. Tidak sekali-kali diperlukan untuk aplikasi biasa."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"terikat kepada perkhidmatan widget"</string>
@@ -277,10 +274,8 @@
<string name="permdesc_bindDeviceAdmin" msgid="8714424333082216979">"Membenarkan pemegang menghantar tujuan kepada pentadbir peranti. Tidak sekali-kali diperlukan untuk aplikasi biasa."</string>
<string name="permlab_setOrientation" msgid="3365947717163866844">"tukar orientasi skrin"</string>
<string name="permdesc_setOrientation" msgid="6335814461615851863">"Membolehkan aplikasi untuk menukar putaran skrin pada bila-bila masa. Tidak seharusnya diperlukan untuk aplikasi biasa."</string>
- <!-- no translation found for permlab_setPointerSpeed (9175371613322562934) -->
- <skip />
- <!-- no translation found for permdesc_setPointerSpeed (137436038503379864) -->
- <skip />
+ <string name="permlab_setPointerSpeed" msgid="9175371613322562934">"tukar kelajuan penuding"</string>
+ <string name="permdesc_setPointerSpeed" msgid="137436038503379864">"Membenarkan aplikasi menukar kelajuan penuding tetikus atau pad jejak pada bila-bila masa sahaja. Seharusnya tidak diperlukan untuk aplikasi biasa."</string>
<string name="permlab_signalPersistentProcesses" msgid="4255467255488653854">"hantar isyarat Linux kepada aplikasi"</string>
<string name="permdesc_signalPersistentProcesses" msgid="3565530463215015289">"Membenarkan aplikasi meminta isyarat yang dibekalkan dihantar kepada semua proses gigih."</string>
<string name="permlab_persistentActivity" msgid="8659652042401085862">"buatkan aplikasi sentiasa berjalan"</string>
@@ -328,14 +323,10 @@
<string name="permlab_writeContacts" msgid="644616215860933284">"tulis data kenalan"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="7782689510038568495">"Membenarkan aplikasi mengubah suai data (alamat) kenalan yang disimpan pada tablet anda. Aplikasi yang berniat jahat boleh menggunakannya untuk memadamkan atau mengubah suai data kenalan anda."</string>
<string name="permdesc_writeContacts" product="default" msgid="3924383579108183601">"Membenarkan aplikasi mengubah suai data (alamat) kenalan yang disimpan pada telefon anda. Aplikasi yang berniat jahat boleh menggunakannya untuk memadamkan atau mengubah suai data kenalan anda."</string>
- <!-- no translation found for permlab_readProfile (2211941946684590103) -->
- <skip />
- <!-- no translation found for permdesc_readProfile (4732942280141331352) -->
- <skip />
- <!-- no translation found for permlab_writeProfile (6561668046361989220) -->
- <skip />
- <!-- no translation found for permdesc_writeProfile (8040643023682531996) -->
- <skip />
+ <string name="permlab_readProfile" msgid="2211941946684590103">"baca data profil"</string>
+ <string name="permdesc_readProfile" product="default" msgid="4732942280141331352">"Membenarkan aplikasi membaca semua maklumat profil peribadi anda. Aplikasi berniat jahat boleh menggunakannya untuk mengenal pasti anda dan menghantar maklumat peribadi anda kepada orang lain."</string>
+ <string name="permlab_writeProfile" msgid="6561668046361989220">"menulis data profil"</string>
+ <string name="permdesc_writeProfile" product="default" msgid="8040643023682531996">"Membenarkan aplikasi mengubah suai maklumat profil peribadi anda. Aplikasi berniat jahat boleh menggunakan ini untuk memadamkan atau mengubah suai data profil anda."</string>
<string name="permlab_readCalendar" msgid="6898987798303840534">"baca acara kalendar"</string>
<string name="permdesc_readCalendar" product="tablet" msgid="5905870265734599678">"Membenarkan aplikasi membaca semua acara kalendar yang disimpan pada tablet anda. Aplikasi berniat jahat boleh menggunakannya untuk menghantar acara kalendar anda kepada orang lain."</string>
<string name="permdesc_readCalendar" product="default" msgid="5533029139652095734">"Membenarkan aplikasi membaca semua acara kalendar yang disimpan pada telefon anda. Aplikasi berniat jahat boleh menggunakannya untuk menghantar acara kalendar anda kepada orang lain."</string>
@@ -472,10 +463,8 @@
<string name="permdesc_bluetooth" product="default" msgid="762515380679392945">"Membenarkan aplikasi melihat konfigurasi telefon Bluetooth setempat dan membuat dan menerima sambungan dengan peranti yang dipasangkan."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"mengawal Komunikasi Medan Dekat"</string>
<string name="permdesc_nfc" msgid="9171401851954407226">"Membenarkan aplikasi berkomunikasi dengan teg, kad dan pembaca Komunikasi Medan Dekat (NFC)."</string>
- <!-- no translation found for permlab_vpn (8345800584532175312) -->
- <skip />
- <!-- no translation found for permdesc_vpn (7093963230333602420) -->
- <skip />
+ <string name="permlab_vpn" msgid="8345800584532175312">"memintas dan mengubah suai semua trafik rangkaian"</string>
+ <string name="permdesc_vpn" msgid="7093963230333602420">"Membenarkan aplikasi memintas dan memeriksa semua trafik rangkaian untuk mewujudkan sambungan VPN. Aplikasi berniat jahat boleh memantau, menghalakan semula atau mengubah suai bingkisan rangkaian tanpa pengetahuan anda."</string>
<string name="permlab_disableKeyguard" msgid="4977406164311535092">"lumpuhkan kunci kekunci"</string>
<string name="permdesc_disableKeyguard" msgid="3189763479326302017">"Membenarkan aplikasi melumpuhkan kunci kekunci anda dan sebarang keselamatan kata laluan yang berkaitan. Contoh yang berkaitan adalah telefon melumpuhkan kunci kekunci apabila menerima panggilan telefon masuk kemudian mendayakan semula kunci kekunci apabila panggilan selesai."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"membaca tetapan penyegerakan"</string>
@@ -502,14 +491,10 @@
<string name="permdesc_cache_filesystem" msgid="1624734528435659906">"Membenarkan aplikasi membaca dan menulis cache sistem fail."</string>
<string name="permlab_use_sip" msgid="5986952362795870502">"membuat/menerima panggilan Internet"</string>
<string name="permdesc_use_sip" msgid="6320376185606661843">"Membenarkan aplikasi menggunakan perkhidmatan SIP untuk membuat/menerima panggilan Internet."</string>
- <!-- no translation found for permlab_readNetworkUsageHistory (7862593283611493232) -->
- <skip />
- <!-- no translation found for permdesc_readNetworkUsageHistory (6040738474779135653) -->
- <skip />
- <!-- no translation found for permlab_manageNetworkPolicy (2562053592339859990) -->
- <skip />
- <!-- no translation found for permdesc_manageNetworkPolicy (3723795285132803958) -->
- <skip />
+ <string name="permlab_readNetworkUsageHistory" msgid="7862593283611493232">"baca sejarah penggunaan rangkaian"</string>
+ <string name="permdesc_readNetworkUsageHistory" msgid="6040738474779135653">"Membenarkan aplikasi membaca sejarah penggunaan rangkaian untuk rangkaian dan aplikasi khusus."</string>
+ <string name="permlab_manageNetworkPolicy" msgid="2562053592339859990">"urus dasar rangkaian"</string>
+ <string name="permdesc_manageNetworkPolicy" msgid="3723795285132803958">"Membenarkan aplikasi mengurus dasar rangkaian dan menentukan peraturan khusus aplikasi."</string>
<!-- no translation found for permlab_modifyNetworkAccounting (5088217309088729650) -->
<skip />
<!-- no translation found for permdesc_modifyNetworkAccounting (8702285686629184404) -->
@@ -532,10 +517,8 @@
<string name="policydesc_expirePassword" msgid="4844430354224822074">"Mengawal kekerapan penukaran kata laluan kunci skrin"</string>
<string name="policylab_encryptedStorage" msgid="8901326199909132915">"Tetapkan penyulitan storan"</string>
<string name="policydesc_encryptedStorage" msgid="2504984732631479399">"Memerlukan data aplikasi yang disimpan itu disulitkan"</string>
- <!-- no translation found for policylab_disableCamera (6395301023152297826) -->
- <skip />
- <!-- no translation found for policydesc_disableCamera (5680054212889413366) -->
- <skip />
+ <string name="policylab_disableCamera" msgid="6395301023152297826">"Lumpuhkan kamera"</string>
+ <string name="policydesc_disableCamera" msgid="5680054212889413366">"Menghalang penggunaan semua kamera peranti"</string>
<string-array name="phoneTypes">
<item msgid="8901098336658710359">"Laman Utama"</item>
<item msgid="869923650527136615">"Mudah alih"</item>
@@ -650,12 +633,9 @@
<string name="sipAddressTypeWork" msgid="6920725730797099047">"Kerja"</string>
<string name="sipAddressTypeOther" msgid="4408436162950119849">"Lain-lain"</string>
<string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"Masukkan kod PIN"</string>
- <!-- no translation found for keyguard_password_enter_puk_code (5965173481572346878) -->
- <skip />
- <!-- no translation found for keyguard_password_enter_puk_prompt (1341112146710087048) -->
- <skip />
- <!-- no translation found for keyguard_password_enter_pin_prompt (2987350144349051286) -->
- <skip />
+ <string name="keyguard_password_enter_puk_code" msgid="5965173481572346878">"Masukkan PUK dan kod PIN baru"</string>
+ <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kod PUK"</string>
+ <string name="keyguard_password_enter_pin_prompt" msgid="2987350144349051286">"Kod PIN Baru"</string>
<string name="keyguard_password_entry_touch_hint" msgid="7906561917570259833"><font size="17">"Sentuh untuk memasukkan kata laluan"</font></string>
<string name="keyguard_password_enter_password_code" msgid="9138158344813213754">"Masukkan kata laluan untuk membuka kunci"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="638347075625491514">"Masukkan PIN untuk membuka kunci"</string>
@@ -680,10 +660,8 @@
<string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Tiada kad SIM dalam tablet."</string>
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Kad SIM tiada dalam telefon."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Sila masukkan kad SIM."</string>
- <!-- no translation found for lockscreen_missing_sim_instructions_long (7138450788301444298) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (1631853574702335453) -->
- <skip />
+ <string name="lockscreen_missing_sim_instructions_long" msgid="7138450788301444298">"Kad SIM tiada atau tidak boleh dibaca. Sila masukkan kad SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="1631853574702335453">"Kad SIM anda dilumpuhkan secara kekal."\n" Sila hubungi pembekal perkhidmatan wayarles anda untuk mendapatkan kad SIM lain."</string>
<string name="emergency_calls_only" msgid="6733978304386365407">"Panggilan kecemasan sahaja"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Rangkaian dikunci"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"Kad SIM dikunci dengan PUK."</string>
@@ -729,30 +707,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Wilayah"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Poskod"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Negeri"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Poskod"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Wilayah"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Pulau"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Daerah"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Jabatan"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Wilayah"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Kariah"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Kawasan"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emiriah"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"baca sejarah dan penanda halaman Penyemak imbas"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Membenarkan aplikasi membaca semua URL yang telah dilawati oleh Penyemak Imbas dan semua penanda halaman Penyemak Imbas."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"tulis sejarah dan penanda halaman Penyemak Imbas"</string>
@@ -760,6 +726,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Membenarkan aplikasi mengubah suai sejarah atau penanda halaman Penyemak Imbas yang disimpan pada telefon anda. Aplikasi berniat jahat boleh menggunakannya untuk memadamkan atau mengubah data Penyemak Imbas anda."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"menetapkan penggera pada jam penggera"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Membenarkan aplikasi menetapkan penggera dalam aplikasi jam penggera yang dipasang. Sesetengah aplikasi jam penggera mungkin tidak melaksanakan ciri ini."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Ubah suai kebenaran geolokasi Penyemak Imbas"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Membenarkan aplikasi mengubah suai kebenaran geolokasi Penyemak Imbas. Aplikasi berniat jahat boleh menggunakannya untuk membenarkan penghantaran maklumat lokasi ke sembarangan tapak web."</string>
<string name="save_password_message" msgid="767344687139195790">"Adakah anda mahu penyemak imbas mengingati kata laluan ini?"</string>
@@ -951,6 +921,22 @@
<item quantity="one" msgid="1634101450343277345">"Rangkaian Wi-Fi terbuka tersedia"</item>
<item quantity="other" msgid="7915895323644292768">"Rangkaian Wi-Fi terbuka tersedia"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Masukkan aksara"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Aplikasi tidak dikenali"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Menghantar mesej SMS"</string>
@@ -999,6 +985,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Disambungkan sebagai peranti media"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Disambungkan sebagai kamera"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Disambungkan sebagai pemasang"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Sentuh untuk mendapatkan pilihan USB yang lain"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Format storan USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Format kad SD"</string>
@@ -1065,10 +1053,8 @@
<string name="chooser_wallpaper" msgid="7873476199295190279">"Tukar kertas dinding"</string>
<string name="vpn_title" msgid="8219003246858087489">"VPN diaktifkan."</string>
<string name="vpn_title_long" msgid="6400714798049252294">"VPN diaktifkan oleh <xliff:g id="APP">%s</xliff:g>"</string>
- <!-- no translation found for vpn_text (1610714069627824309) -->
- <skip />
- <!-- no translation found for vpn_text_long (4907843483284977618) -->
- <skip />
+ <string name="vpn_text" msgid="1610714069627824309">"Ketik untuk mengurus rangkaian."</string>
+ <string name="vpn_text_long" msgid="4907843483284977618">"Bersambung kepada <xliff:g id="SESSION">%s</xliff:g>. Ketik untuk mengurus rangkaian."</string>
<string name="upload_file" msgid="2897957172366730416">"Pilih fail"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Tiada fail dipilih"</string>
<string name="reset" msgid="2448168080964209908">"Tetapkan semula"</string>
@@ -1120,32 +1106,19 @@
<string name="choose_account_label" msgid="4191313562041125787">"Pilih akaun"</string>
<string name="number_picker_increment_button" msgid="4830170763103463443">"Kenaikan"</string>
<string name="number_picker_decrement_button" msgid="2576606679160067262">"Penyusutan"</string>
- <!-- no translation found for action_bar_home_description (5293600496601490216) -->
- <skip />
- <!-- no translation found for action_bar_up_description (2237496562952152589) -->
- <skip />
- <!-- no translation found for action_menu_overflow_description (2295659037509008453) -->
- <skip />
- <!-- no translation found for storage_internal (7556050805474115618) -->
- <skip />
- <!-- no translation found for storage_sd_card (8921771478629812343) -->
- <skip />
- <!-- no translation found for storage_usb (3017954059538517278) -->
- <skip />
- <!-- no translation found for extract_edit_menu_button (302060189057163906) -->
- <skip />
- <!-- no translation found for data_usage_warning_title (1955638862122232342) -->
- <skip />
- <!-- no translation found for data_usage_warning_body (3354394590936526648) -->
- <skip />
- <!-- no translation found for data_usage_3g_limit_title (7093334419518706686) -->
- <skip />
- <!-- no translation found for data_usage_4g_limit_title (7636489436819470761) -->
- <skip />
- <!-- no translation found for data_usage_mobile_limit_title (7869402519391631884) -->
- <skip />
- <!-- no translation found for data_usage_limit_body (2182247539226163759) -->
- <skip />
+ <string name="action_bar_home_description" msgid="5293600496601490216">"Navigasi laman utama"</string>
+ <string name="action_bar_up_description" msgid="2237496562952152589">"Navigasi ke atas"</string>
+ <string name="action_menu_overflow_description" msgid="2295659037509008453">"Lagi pilihan"</string>
+ <string name="storage_internal" msgid="7556050805474115618">"Storan Dalaman"</string>
+ <string name="storage_sd_card" msgid="8921771478629812343">"Kad SD"</string>
+ <string name="storage_usb" msgid="3017954059538517278">"Storan USB"</string>
+ <string name="extract_edit_menu_button" msgid="302060189057163906">"Edit..."</string>
+ <string name="data_usage_warning_title" msgid="1955638862122232342">"Amaran penggunaan data"</string>
+ <string name="data_usage_warning_body" msgid="3354394590936526648">"penggunaan melebihi <xliff:g id="SIZE">%s</xliff:g>"</string>
+ <string name="data_usage_3g_limit_title" msgid="7093334419518706686">"Data 2G-3G dilumpuhkan"</string>
+ <string name="data_usage_4g_limit_title" msgid="7636489436819470761">"Data 4G dilumpuhkan"</string>
+ <string name="data_usage_mobile_limit_title" msgid="7869402519391631884">"Data mudah alih dilumpuhkan"</string>
+ <string name="data_usage_limit_body" msgid="2182247539226163759">"ketik untuk mendayakan"</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Sijil keselamatan"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Sijil ini sah."</string>
<string name="issued_to" msgid="454239480274921032">"Dikeluarkan kepada:"</string>
@@ -1156,17 +1129,15 @@
<string name="validity_period" msgid="8818886137545983110">"Kesahan:"</string>
<string name="issued_on" msgid="5895017404361397232">"Dikeluarkan pada:"</string>
<string name="expires_on" msgid="3676242949915959821">"Tamat tempoh pada:"</string>
- <!-- no translation found for serial_number (758814067660862493) -->
- <skip />
- <!-- no translation found for fingerprints (4516019619850763049) -->
- <skip />
- <!-- no translation found for sha256_fingerprint (4391271286477279263) -->
- <skip />
- <!-- no translation found for sha1_fingerprint (7930330235269404581) -->
- <skip />
+ <string name="serial_number" msgid="758814067660862493">"Nombor siri:"</string>
+ <string name="fingerprints" msgid="4516019619850763049">"Cap jari:"</string>
+ <string name="sha256_fingerprint" msgid="4391271286477279263">"Cap jari SHA-256:"</string>
+ <string name="sha1_fingerprint" msgid="7930330235269404581">"Cap jari SHA-1:"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Lihat semua..."</string>
<!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 67429b5..7db3f31 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Lar applikasjonen overvåke tastetrykk selv når interaksjonen er med et annet program (som å skrive inn et passord). Vanlige applikasjoner bør aldri trenge dette."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"binde til en inndatametode"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Lar applikasjonen binde til toppnivågrensesnittet for en inndatametode. Vanlige applikasjoner bør aldri trenge dette."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"bind til bakgrunnsbilde"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Lar innehaveren binde det øverste nivået av grensesnittet til en bakgrunnsbilder. Skal ikke være nødvendig for vanlige programmer."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"bind til modultjenste"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Provins"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Postnummer"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Delstat"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Postnummer"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Fylke"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Øy"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Distrikt"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Departement"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Prefektur"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Sogn"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Område"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"lese nettleserens logg og bokmerker"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Lar applikasjonen lese alle adresser nettleseren har besøkt, og alle nettleserens bokmerker."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"skrive til nettleserens logg og bokmerker"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Lar applikasjonen endre nettleserens logg og bokmerker lagret på telefonen. Ondsinnede applikasjoner kan bruke dette til å fjerne eller redigere nettleserens data."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"angi alarm i alarmklokke"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Lar programmet angi en alarm i et installert alarmklokkeprogram. Det kan hende at enkelte alarmklokkeprogrammer ikke implementerer denne funksjonen."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Endre nettleserens tillatelser for geografisk posisjonering"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Tillater programmet å endre nettleserens tillatelser for geografisk posisjonering. Skadelige programmer kan bruke denne funksjonen til å sende posisjonsopplysninger til vilkårlige nettsteder."</string>
<string name="save_password_message" msgid="767344687139195790">"Ønsker du at nettleseren skal huske dette passordet?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Åpent trådløsnett i nærheten"</item>
<item quantity="other" msgid="7915895323644292768">"Åpne trådløsnett i nærheten"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Sett inn tegn"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Ukjent applikasjon"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Sender SMS-meldinger"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Tilkoblet som medieenhet"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Tilkoblet som kamera"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Tilkoblet som installasjonsprogram"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Berør for andre USB-alternativer"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formaterer USB-lagring"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formatere minnekort"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index fe21bc8..52873e1 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Hiermee kan een app uw toetsaanslagen registreren, zelfs tijdens de interactie met een andere app (zoals de invoer van een wachtwoord). Nooit vereist voor normale apps."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"verbinden aan een invoermethode"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Hiermee staat u de houder toe zich te verbinden met de hoofdinterface van een invoermethode. Nooit vereist voor normale apps."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"verbinden met een achtergrond"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Hiermee staat u de houder toe zich te verbinden met de hoofdinterface van een achtergrond. Nooit vereist voor normale apps."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"verbinden met een widgetservice"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Provincie"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Postcode"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Staat"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Postcode"</string>
+ <string name="autofill_county" msgid="237073771020362891">"County"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Eiland"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"District"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Departement"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Prefectuur"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Gemeente"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Gebied"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emiraat"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"browsergeschiedenis en bladwijzers lezen"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Hiermee kan een app de URL\'s lezen die u via de browser heeft bezocht, evenals alle bladwijzers van de browser."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"browsergeschiedenis en bladwijzers schrijven"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Hiermee kan een app de op uw telefoon opgeslagen browsergeschiedenis of bladwijzers wijzigen. Schadelijke apps kunnen hiermee uw browsergegevens verwijderen of wijzigen."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"alarm instellen in wekker"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Hiermee kan de app een alarm instellen in een geïnstalleerde wekker-app. Deze functie wordt door sommige wekker-apps niet geïmplementeerd."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Geolocatierechten voor browser aanpassen"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Staat een app toe de geolocatierechten van de browser aan te passen. Schadelijke apps kunnen dit gebruiken om locatiegegevens te verzenden naar willekeurige websites."</string>
<string name="save_password_message" msgid="767344687139195790">"Wilt u dat de browser dit wachtwoord onthoudt?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Open Wi-Fi-netwerk beschikbaar"</item>
<item quantity="other" msgid="7915895323644292768">"Open Wi-Fi-netwerken beschikbaar"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Teken invoegen"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Onbekende app"</string>
<string name="sms_control_title" msgid="7296612781128917719">"SMS-berichten verzenden"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Gekoppeld als media-apparaat"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Gekoppeld als camera"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Gekoppeld als installatieprogramma"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Raak aan voor andere USB-opties"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"USB-opslag formatt."</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"SD-kaart formatteren"</string>
@@ -1118,8 +1132,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-256-vingerafdruk"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1-vingerafdruk:"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Alle bekijken..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Activiteit selecteren"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Delen met..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 60c9bdb..eedf51a 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Pozwala aplikacjom na śledzenie naciskanych klawiszy, nawet podczas pracy z innym programem (na przykład podczas wpisywania hasła). Nigdy nie powinno być potrzebne normalnym aplikacjom."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"powiązanie ze sposobem wprowadzania tekstu"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Pozwala na powiązanie wybranego sposobu wprowadzania tekstu z interfejsem najwyższego poziomu. To uprawnienie nie powinno być nigdy wymagane przez zwykłe aplikacje."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"powiązanie z tapetą"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Umożliwia posiadaczowi powiązać interfejs najwyższego poziomu dla tapety. Nie powinno być nigdy potrzebne w przypadku zwykłych aplikacji."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"powiązanie z usługą widżetów"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Województwo"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Kod pocztowy"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Stan"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Kod pocztowy"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Powiat"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Wyspa"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Dystrykt"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Departament"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Prefektura"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Gmina"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Obszar"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"odczyt historii i zakładek przeglądarki"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Umożliwia aplikacji odczyt wszystkich adresów URL odwiedzonych przez przeglądarkę, a także wszystkich zakładek przeglądarki."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"zapis historii i zakładek przeglądarki"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Umożliwia aplikacji modyfikowanie historii lub zakładek przeglądarki zapisanych w telefonie. Złośliwe aplikacje mogą używać tej opcji do usuwania lub modyfikowania danych przeglądarki."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"ustaw alarm w budziku"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Umożliwia aplikacji ustawienie alarmu w zainstalowanej aplikacji budzika. W niektórych aplikacjach budzika funkcja ta może nie być zaimplementowana."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Modyfikowanie uprawnień przeglądarki dotyczących lokalizacji geograficznej"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Zezwala aplikacji na modyfikowanie uprawnień przeglądarki dotyczących lokalizacji geograficznej. Złośliwe aplikacje mogą używać tej opcji do wysyłania informacji o lokalizacji do dowolnych witryn internetowych."</string>
<string name="save_password_message" msgid="767344687139195790">"Czy chcesz, aby zapamiętać to hasło w przeglądarce?"</string>
@@ -750,11 +746,11 @@
<string name="beforeOneMonthDurationPast" msgid="909134546836499826">"Ponad 1 miesiąc temu"</string>
<plurals name="num_seconds_ago">
<item quantity="one" msgid="4869870056547896011">"sekundę temu"</item>
- <item quantity="other" msgid="3903706804349556379">"<xliff:g id="COUNT">%d</xliff:g> sekund temu"</item>
+ <item quantity="other" msgid="3903706804349556379">"<xliff:g id="COUNT">%d</xliff:g> sek. temu"</item>
</plurals>
<plurals name="num_minutes_ago">
<item quantity="one" msgid="3306787433088810191">"1 minutę temu"</item>
- <item quantity="other" msgid="2176942008915455116">"<xliff:g id="COUNT">%d</xliff:g> minut temu"</item>
+ <item quantity="other" msgid="2176942008915455116">"<xliff:g id="COUNT">%d</xliff:g> min. temu"</item>
</plurals>
<plurals name="num_hours_ago">
<item quantity="one" msgid="9150797944610821849">"godzinę temu"</item>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Otwórz dostępne sieci Wi-Fi"</item>
<item quantity="other" msgid="7915895323644292768">"Otwórz dostępne sieci Wi-Fi"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Wstaw znak"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Nieznana aplikacja"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Wysyłanie wiadomości SMS"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Podłączono jako urządzenie multimedialne."</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Podłączono jako aparat."</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Podłączono jako nośnik instalacyjny."</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Dotknij, aby wyświetlić inne opcje USB."</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formatuj nośnik USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formatuj kartę SD"</string>
@@ -1118,8 +1132,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"Odcisk cyfrowy SHA-256:"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"Odcisk cyfrowy SHA-1:"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Pokaż wszystkie"</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Wybierz czynność"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Udostępnij..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 6af09f3..c89577d 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Permite às aplicações verificar as teclas que o utilizador prime, mesmo ao interagir com outras aplicações (como, por exemplo, ao introduzir uma palavra-passe). Nunca deve ser necessário para aplicações normais."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"vincular a um método de entrada"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Permite ao titular vincular a interface de nível superior a um método de entrada de som. Nunca deve ser necessário para aplicações normais."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"vincular a uma imagem de fundo"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Permite ao titular vincular a interface de nível superior de uma imagem de fundo. Nunca deverá ser necessário para aplicações normais."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"vincular a um serviço de widget"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Província"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Código postal"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Estado"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Código postal"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Concelho"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Ilha"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Distrito"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Departamento"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Município"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Freguesia"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Área"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirado"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"ler histórico e marcadores do browser"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Permite que a aplicação leia todos os URLs visitados pelo browser e todos os marcadores do browser."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"gravar histórico e marcadores do browser"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Permite que uma aplicação modifique o histórico e os marcadores do browser armazenados no telefone. As aplicações maliciosas podem utilizar esta permissão para apagar ou modificar os dados do browser."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"definir alarme no despertador"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Permite que a aplicação defina um alarme numa aplicação de despertador instalada. Algumas aplicações de despertador podem não integrar esta funcionalidade."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Modificar permissões de localização geográfica do Navegador"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Permite a uma aplicação modificar as permissões de localização geográfica do Navegador. As aplicações mal intencionadas podem utilizar isto para enviar informações de localização para Web sites arbitrários."</string>
<string name="save_password_message" msgid="767344687139195790">"Quer que o browser memorize esta palavra-passe?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Rede Wi-Fi aberta disponível"</item>
<item quantity="other" msgid="7915895323644292768">"Abrir redes Wi-Fi disponíveis"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Introduzir carácter"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Aplicação desconhecida"</string>
<string name="sms_control_title" msgid="7296612781128917719">"A enviar mensagens SMS"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Ligado como um aparelho multimédia"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Ligado como uma câmara"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Ligado como um instalador"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Toque para outras opções USB"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formatar armaz. USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formatar cartão SD"</string>
@@ -1118,8 +1132,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"Impressão digital SHA-256:"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"Impressão digital SHA-1:"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Ver tudo..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Selecionar atividade"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Partilhar com..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index d762274..1a7e0a8 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Permite que os aplicativos vejam as teclas que você pressiona, mesmo quando estiver interagindo com outro aplicativo (como ao digitar uma senha). Aplicativos normais não devem precisar disso em momento algum."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"vincular a um método de entrada"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Permite que o detentor se sujeite à interface de nível superior de um método de entrada. Aplicativos normais não devem precisar disso em momento algum."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"sujeitar-se a um plano de fundo"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Permite que o detentor se sujeite à interface de nível superior de um plano de fundo. Aplicativos normais não devem precisar disso em momento algum."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"sujeitar-se a um serviço de widget"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Distrito"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Código Postal"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Estado"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"CEP"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Condado"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Ilha"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Distrito"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Departamento"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Município"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Paróquia"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Área"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirado"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"ler histórico e favoritos do Navegador"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Permite que o aplicativo leia todos os URLs visitados pelo Navegador e todos os favoritos do Navegador."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"gravar histórico e favoritos do Navegador"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Permite que um aplicativo modifique o histórico ou os favoritos do Navegador armazenados no seu telefone. Aplicativos maliciosos podem usar isso para apagar ou modificar os dados do seu Navegador."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"definir alarme no despertador"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Permite que o aplicativo defina um alarme em um aplicativo de despertador instalado. Talvez alguns aplicativos de despertador não implementem esse recurso."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Modifique as permissões de geolocalização do seu navegador"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Permite que um aplicativo modifique as permissões de geolocalização do navegador. Aplicativos maliciosos podem usar isso para permitir o envio de informações de localização a sites arbitrários."</string>
<string name="save_password_message" msgid="767344687139195790">"Deseja que o navegador lembre desta senha?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Rede Wi-Fi aberta disponível"</item>
<item quantity="other" msgid="7915895323644292768">"Redes Wi-Fi abertas disponíveis"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Inserir caractere"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Aplicativo desconhecido"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Enviando mensagens SMS"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Conectado como um dispositivo de mídia"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Conectadas como uma câmera"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Conectados como um instalador"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Toque para obter outras opções USB"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formatar armaz. USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formatar cartão SD"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-rm/strings.xml b/core/res/res/values-rm/strings.xml
index 5fd5d45..4f0e385 100644
--- a/core/res/res/values-rm/strings.xml
+++ b/core/res/res/values-rm/strings.xml
@@ -275,6 +275,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"\"Permetta ad ina applicaziun dad identifitgar las tastas che Vus smatgais, era durant l\'utilisaziun dad in auter program (durant l\'endataziun dad in pled-clav, per exempel). Applicaziuns normalas na duessan betg avair access a questa funcziun.\""</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"associar cun ina metoda d\'endataziun"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Permetta da sa fixar al nivel d\'interfatscha pli aut dad ina metoda d\'endataziun. Betg previs per applicaziuns normalas."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"sa fixar vid in fund davos"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Permetta da sa fixar al nivel d\'interfatscha pli aut dad ina metoda d\'endataziun. Betg previs per applicaziuns normalas."</string>
<!-- no translation found for permlab_bindRemoteViews (5697987759897367099) -->
@@ -814,6 +818,10 @@
<skip />
<!-- no translation found for permdesc_setAlarm (5966966598149875082) -->
<skip />
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Modifitgar las autorisaziuns da geolocalisaziun dal navigatur"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Permetta ad ina applicaziun da modifitgar las permissiuns da geolocalisaziun dal navigatur. Applicaziuns donnegiusas pon utilisar questa funcziun per trametter datas da posiziun a websites arbitraras."</string>
<string name="save_password_message" msgid="767344687139195790">"Vulais Vus ch\'il navigatur memorisescha quest pled-clav?"</string>
@@ -1010,6 +1018,22 @@
<item quantity="one" msgid="1634101450343277345">"Rait WLAN averta disponibla"</item>
<item quantity="other" msgid="7915895323644292768">"Raits WLAN avertas disponiblas"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Inserir in caracter"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Applicaziun nunenconuschenta"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Trametter messadis SMS"</string>
@@ -1063,6 +1087,8 @@
<skip />
<!-- no translation found for usb_cd_installer_notification_title (6774712827892090754) -->
<skip />
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<!-- no translation found for usb_notification_message (4447869605109736382) -->
<skip />
<!-- outdated translation 8663247929551095854 --> <string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formatar la carta SD"</string>
@@ -1279,4 +1305,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index ad3d64d..61a0d7b 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Permite unei aplicaţii să monitorizeze tastele pe care le apăsaţi când interacţionaţi cu o altă aplicaţie (cum ar fi introducerea unei parole). Nu ar trebui să fie niciodată necesară pentru aplicaţiile obişnuite."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"conectare la o metodă de intrare"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Permite deţinătorului să se conecteze la interfaţa de nivel superior a unei metode de intrare. Nu ar trebui să fie niciodată necesară pentru aplicaţiile obişnuite."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"conectare la o imagine de fundal"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Permite proprietarului să se conecteze la interfaţa de nivel superior a unei imagini de fundal. Nu ar trebui să fie niciodată necesară pentru aplicaţiile obişnuite."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"conectare la un serviciu widget"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Provincie"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Cod poştal"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Stat"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Cod ZIP"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Judeţ"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Insulă"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"District"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Departament"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Prefectură"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Cartier"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Zonă"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"citire istoric şi marcaje în browser"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Permite aplicaţiei să citească toate adresele URL vizitate din browser şi toate marcajele din acesta."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"citire istoric şi marcaje în browser"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Permite unei aplicaţii să modifice istoricul şi marcajele din browser, stocate pe telefonul dvs. Aplicaţiile rău-intenţionate ar putea să utilizeze această permisiune pentru a şterge sau a modifica datele din browser."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"setare alarmă pentru ceasul cu alarmă"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Permite aplicaţiei să seteze o alarmă într-o aplicaţie de ceas de alarmă instalată. Este posibil ca unele aplicaţii de ceas de alarmă să nu implementeze această funcţie."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Modificare permisiuni pentru locaţia geografică a browserului"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Permite unei aplicaţii să modifice permisiunile privind locaţia geografică a browserului. Aplicaţiile rău-intenţionate ar putea să utilizeze această permisiune pentru a permite trimiterea informaţiilor privind locaţia către site-uri Web arbitrare."</string>
<string name="save_password_message" msgid="767344687139195790">"Doriţi ca browserul să reţină această parolă?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Reţea Wi-Fi deschisă disponibilă"</item>
<item quantity="other" msgid="7915895323644292768">"Reţele Wi-Fi deschise disponibile"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Introduceţi caracterul"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Aplicaţie necunoscută"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Se trimit mesaje SMS"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Conectat ca dispozitiv media"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Conectat ca aparat foto"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Conectat ca program de instalare"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Atingeţi pentru alte opţiuni USB"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formataţi stoc. USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formataţi cardul SD"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 0bc2f44..d2907ae 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Позволяет приложению распознавать нажатые пользователем клавиши даже при работе с другим приложением (например, при вводе пароля). Не требуется для обычных приложений."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"связывать с методом ввода"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Позволяет выполнять привязку к интерфейсу ввода верхнего уровня. Не требуется для обычных приложений."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"связать с фоновым рисунком"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Разрешает выполнять привязку к интерфейсу фонового рисунка верхнего уровня. Не требуется для обычных приложений."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"привязка к службе виджетов"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <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="1284843728203412135">"считывать историю и закладки браузера"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Разрешает приложению считывать все URL, посещенные браузером, и все его закладки."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"записывать историю и закладки браузера"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Разрешает приложению изменять историю и закладки браузера, сохраненные в вашем телефоне. Вредоносное ПО может пользоваться этим, чтобы стирать или изменять данные вашего браузера."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"настраивать сигнал будильника"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Позволяет настраивать сигнал установленного приложения будильника. Для некоторых приложений будильника эта функция может быть недоступна."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Изменить разрешения браузера для доступа к географическому местоположению"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Позволяет программе изменять разрешения браузера для доступа к географическому положению. Вредоносные программы могут пользоваться этим для отправки информации о местоположении на некоторые сайты."</string>
<string name="save_password_message" msgid="767344687139195790">"Вы хотите, чтобы браузер запомнил этот пароль?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Найдена доступная сеть Wi-Fi"</item>
<item quantity="other" msgid="7915895323644292768">"Найдены доступные сети Wi-Fi"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Введите символ"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Неизвестное приложение"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Отправка SMS-сообщений"</string>
@@ -971,6 +983,8 @@
<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>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Нажмите, чтобы увидеть другие параметры USB"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Форматирование"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Очистить SD-карту"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index d836312..4af1a79 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Umožňuje aplikáciám sledovať, ktoré klávesy používate, a to aj pri práci s inými aplikáciami (napríklad pri zadávaní hesla). Bežné aplikácie by toto nastavenie nemali vôbec využívať."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"väzba na metódu vstupu"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Umožňuje držiteľovi viazať sa na najvyššiu úroveň rozhrania metódy vstupu. Bežné aplikácie by toto nastavenie nemali vôbec využívať."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"väzba na tapetu"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Umožňuje držiteľovi viazať sa na najvyššiu úroveň rozhrania tapety. Bežné aplikácie by toto nastavenie vôbec nemali využívať."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"viazať sa k službe miniaplikácie"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Provincia"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"PSČ"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Štát"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"PSČ"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Kraj"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Ostrov"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Okres"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Oddelenie"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Prefektúra"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Farnosť"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Oblasť"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirát"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"Čítanie histórie a záložiek prehliadača"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Umožňuje aplikácii čítať všetky adresy URL navštívené prehliadačom a záložky prehliadača."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"Zapisovať históriu a záložky prehliadača"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Umožňuje aplikácii zmeniť históriu prehliadača alebo záložky uložené v telefóne. Škodlivé aplikácie môžu pomocou tohto nastavenia vymazať alebo pozmeniť údaje prehliadača."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"nastaviť budík"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Umožní aplikácii nastaviť budík v nainštalovanej aplikácii budíka. Niektoré aplikácie budíka nemusia túto funkciu obsahovať."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Zmeniť oprávnenia prehliadača poskytovať informácie o zemepisnej polohe"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Umožňuje aplikácii zmeniť oprávnenie prehliadača poskytovať informácie o zemepisnej polohe. Škodlivé aplikácie môžu toto nastavenie použiť na odosielanie informácií o umiestnení na ľubovoľné webové stránky."</string>
<string name="save_password_message" msgid="767344687139195790">"Chcete, aby si prehliadač zapamätal toto heslo?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"K dispozícii je verejná sieť Wi-Fi"</item>
<item quantity="other" msgid="7915895323644292768">"K dispozícii sú verejné siete Wi-Fi"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Vkladanie znakov"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Neznáma aplikácia"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Odosielanie správ SMS"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Pripojené ako mediálne zariadenie"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Pripojené ako fotoaparát"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Pripojené ako inštalátor"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Dotykom zobrazíte ďalšiu možnosť USB"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formát. ukl. priestor USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formátovať kartu SD"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 9c43047..9b45470 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Programu dovoljuje spremljanje tipk, ki jih pritisnete med interakcijo z drugim programom (na primer vnos gesla). Navadni programi tega nikoli ne potrebujejo."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"povezovanje z načinom vnosa"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Dovoljuje lastniku, da se poveže z vmesnikom načina vnosa najvišje ravni. Tega nikoli ni treba uporabiti za navadne programe."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"povezovanje z ozadjem"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Dovoljuje, da se lastnik poveže z vmesnikom ozadja najvišje ravni. Tega nikoli ni treba uporabiti za navadne programe."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"poveži s storitvijo pripomočka"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Provinca"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Poštna številka"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Zvezna država"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Poštna številka"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Okrožje"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Otok"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Okraj"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Departma"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Prefektura"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Župnija"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Območje"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"branje zgodovine in zaznamkov brskalnika"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Programu dovoljuje branje vseh URL-jev, ki jih je brskalnik obiskal, in vseh brskalnikovih zaznamkov."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"pisanje zgodovine in zaznamkov brskalnika"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Programu dovoljuje spreminjanje zgodovine brskalnika ali zaznamkov, shranjenih v telefonu. Zlonamerni programi lahko to uporabijo za brisanje ali spreminjanje podatkov brskalnika."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"nastavitev alarma budilke"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Programu omogoča nastavitev alarma v nameščeni budilki. Nekatere budilke morda ne bodo uporabile te funkcije."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Spreminjanje dovoljenj za geolokacijo brskalnika"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Programu dovoljuje spreminjanje dovoljenja brskalnika za geografske lokacije. Zlonamerni programi lahko s tem dovoljenjem dovolijo pošiljanje podatkov o lokaciji poljubnim spletnim mestom."</string>
<string name="save_password_message" msgid="767344687139195790">"Ali želite, da si brskalnik zapomni to geslo?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Odpiranje razpoložljivega brezžičnega omrežja"</item>
<item quantity="other" msgid="7915895323644292768">"Odpiranje razpoložljivih brezžičnih omrežij"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Vstavljanje znaka"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Neznan program"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Pošiljanje sporočil SMS"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Povezan kot predstavnostna naprava"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Povezan kot fotoaparat"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Povezan kot namestitveni program"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Dotaknite se, če želite izbrati druge možnosti za USB"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formatiranje pomnilnika USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formatiraj kartico SD"</string>
@@ -1118,8 +1132,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"Prstni odtis SHA-256:"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"Prstni odtis SHA-1:"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Prikaži vse ..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Izberite dejavnost"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Skupna raba z ..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index ec6470e..4d25343 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Омогућава да апликације виде које тастере притискате чак и док радите у некој другој апликацији (нпр. када уносите лозинку). Нормалне апликације никада не би требало да је користе."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"обавезивање на методу уноса"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Омогућава власнику да се обавеже на интерфејс методе уноса највишег нивоа. Обичне апликације никада не би требало да је користе."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"обавезивање на позадину"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Омогућава власнику да се обавеже на интерфејс позадине највишег нивоа. Обичне апликације никада не би требало да је користе."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"обавезивање на услугу виџета"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <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="1284843728203412135">"читање историје и обележивача у прегледачу"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Омогућава да апликација чита све URL адресе које су посећене у прегледачу, као и све обележиваче у њему."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"уписивање историје и обележивача из прегледача"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Омогућава да апликација измени историју и обележиваче у прегледачу сачуване на телефону. Злонамерне апликације могу то да злоупотребе и да избришу или измене податке у прегледачу."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"подешавање аларма у будилнику"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Дозвољава да апликација подеси аларм у инсталираној апликацији будилника. Неке апликације будилника можда не примењују ову функцију."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Измена дозвола за географске локације прегледача"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Омогућава да апликација измени дозволе за утврђивање географске локације у прегледачу. Злонамерне апликације то могу да злоупотребе и искористе за слање информација о локацији насумичним веб сајтовима."</string>
<string name="save_password_message" msgid="767344687139195790">"Желите ли да прегледач запамти ову лозинку?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Доступна је отворена Wi-Fi мрежа"</item>
<item quantity="other" msgid="7915895323644292768">"Доступне су отворене Wi-Fi мреже"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Уметање знака"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Непозната апликација"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Слање SMS порука"</string>
@@ -971,6 +983,8 @@
<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>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Додирните за друге USB опције"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Форматирање USB меморије"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Форматирање SD картице"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index d7bc859..3de0006 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Tillåter att program övervakar knapparna som du trycker på, till och med när du använder andra program (till exempel när du anger ett lösenord). Ska inte behövas för vanliga program."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"binda till en metod för indata"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Innehavaren tillåts att binda till den översta nivåns gränssnitt för en inmatningsmetod. Ska inte behövas för vanliga program."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"binda till en bakgrund"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Innehavaren tillåts att binda till den översta nivåns gränssnitt för en bakgrund. Ska inte behövas för vanliga appar."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"bind till en widget"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Provins"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Postnummer"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Delstat"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Postnummer"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Kommun"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Ö"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Distrikt"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Department"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Prefektur"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Församling"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Område"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"läsa webbläsarhistorik och bokmärken"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Tillåter att program läser alla webbadresser som webbläsaren har öppnat och alla webbläsarens bokmärken."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"skriva webbläsarhistorik och bokmärken"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Tillåter att ett program ändrar webbläsarhistoriken och bokmärkena i din telefon. Skadliga program kan använda detta för att ta bort eller ändra data i webbläsaren."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"ställa in alarm i alarmklocka"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Tillåter att programmet ställer in ett alarm i ett installerat alarmprogram. Vissa alarmprogram har inte den här funktionen."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Ändra geografisk plats för webbläsaren"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Tillåter att ett program ändrar webbläsarens behörigheter för geografisk plats. Skadliga program kan använda detta för att tillåta att platsinformation skickas till godtyckliga webbplatser."</string>
<string name="save_password_message" msgid="767344687139195790">"Vill du att webbläsaren ska komma ihåg lösenordet?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Öppna Wi-Fi-nätverk är tillgängliga"</item>
<item quantity="other" msgid="7915895323644292768">"Öppna Wi-Fi-nätverk är tillgängliga"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Infoga tecken"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Okänd app"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Skickar SMS"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Ansluten som en mediaenhet"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Ansluten som en kamera"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Ansluten som installationsprogram"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Tryck för andra USB-alternativ"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Formatera USB-enhet"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Formatera SD-kort"</string>
@@ -1118,8 +1132,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-256-fingeravtryck"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1-fingeravtryck:"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Visa alla..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Välj aktivitet"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Dela med..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 6d7de63..d2c62bf 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -385,6 +385,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Huruhusu programu kutazama vitufe unavyobofya hata wakati unaingiliana na programu nyingine ya kompyuta (kama vile kuingiza nenosiri). Haipaswi kuhitajika kwa programu za kawaida."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"funganisha kwa mbinu ya uingizaji"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Huruhusu kishikiliaji kufunga kiolesura cha kiwango cha juu cha mbinu ya uingizaji. Haipaswi kuhitajika kwa programu za kawaida za kompyuta."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"funga kwa pazia"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Huruhusu kishikiliaji kufunga kiolesura cha kiwango cha juu cha pazia. Haipaswi kuhitajika kwa programu za kawaida za kompyuta."</string>
<!-- no translation found for permlab_bindRemoteViews (5697987759897367099) -->
@@ -962,6 +966,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Huruhusu programu kurekebisha historia au alamisho za Kivinjari zilizohifadhiwa kwenye simu yako. Programu mbaya za kompyuta zinaweza kutumia hii ili kufuta au kurekebisha data ya Kivinjari chako."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"weka kengele kwenye saa ya kengele"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Huruhusu programu kuweka kengele kwenye programu iliyosakinishwa ya saa ya kengele. Baadhi ya programu zasaa ya kengele hazingeweza kurekebisha kipengele hiki."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Rekebisha vibali vya Kivinjari cha eneo la jiografia"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Huruhusu programu kwa kurekebisha vibali vya Kivinjari cha eneo la jeo. Programu hasidi zinaweza kutumia hii kwa kuruhusu utumaji wa habari ya eneo kwa tovuti mbadala."</string>
<!-- no translation found for save_password_message (767344687139195790) -->
@@ -1216,6 +1224,22 @@
<item quantity="one" msgid="1634101450343277345">"Fungua mtandao wa Wi-Fi unaopatikana"</item>
<item quantity="other" msgid="7915895323644292768">"Fungua mitandao ya Wi-Fi inayopatikana"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Ingiza kibambo"</string>
<!-- no translation found for sms_control_default_app_name (7630529934366549163) -->
<skip />
@@ -1277,6 +1301,8 @@
<skip />
<!-- no translation found for usb_cd_installer_notification_title (6774712827892090754) -->
<skip />
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<!-- no translation found for usb_notification_message (4447869605109736382) -->
<skip />
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Fomati hifadhi ya USB"</string>
@@ -1465,4 +1491,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sw600dp/colors.xml b/core/res/res/values-sw600dp/colors.xml
new file mode 100644
index 0000000..6b5a55a
--- /dev/null
+++ b/core/res/res/values-sw600dp/colors.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* //device/apps/common/assets/res/any/colors.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>
+ <!-- keyguard clock -->
+ <color name="lockscreen_clock_background">#b3ffffff</color>
+ <color name="lockscreen_clock_foreground">#7affffff</color>
+ <color name="lockscreen_clock_am_pm">#ff9a9a9a</color>
+ <color name="lockscreen_owner_info">#ff9a9a9a</color>
+
+</resources>
+
diff --git a/core/res/res/values-sw600dp/dimens.xml b/core/res/res/values-sw600dp/dimens.xml
index 553632b..24d5d8d 100644
--- a/core/res/res/values-sw600dp/dimens.xml
+++ b/core/res/res/values-sw600dp/dimens.xml
@@ -21,7 +21,7 @@
<!-- Height of the status bar -->
<dimen name="status_bar_height">48dip</dimen>
<!-- Width and height of a single notification icon in the status bar -->
- <dimen name="status_bar_icon_size">32dip</dimen>
+ <dimen name="status_bar_icon_size">24dip</dimen>
<!-- Size of the giant number (unread count) in the notifications -->
<dimen name="status_bar_content_number_size">48sp</dimen>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index a75929f..0e1e8c1 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"อนุญาตให้แอปพลิเคชันดูปุ่มที่คุณกดแม้ในระหว่างที่ทำงานร่วมกับแอปพลิเคชันอื่น (เช่น ป้อนรหัสผ่าน) ไม่ควรต้องใช้สำหรับแอปพลิเคชันทั่วไป"</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"เชื่อมโยงกับวิธีป้อนข้อมูล"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"อนุญาตให้ผู้ถือเชื่อมโยงกับอินเทอร์เฟซระดับสูงสุดของวิธีป้อนข้อมูล ไม่ควรต้องใช้สำหรับแอปพลิเคชันทั่วไป"</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"เชื่อมโยงกับวอลเปเปอร์"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"อนุญาตให้ผู้ถือเชื่อมโยงกับอินเทอร์เฟซระดับสูงสุดของวอลเปเปอร์ ไม่ควรต้องใช้สำหรับแอปพลิเคชันทั่วไป"</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"เชื่อมโยงกับบริการวิดเจ็ต"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <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="1284843728203412135">"อ่านประวัติและบุ๊กมาร์กของเบราว์เซอร์"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"อนุญาตให้แอปพลิเคชันอ่าน URL ทั้งหมดที่เบราว์เซอร์เคยเข้าชมและบุ๊กมาร์กของเบราว์เซอร์ทั้งหมด"</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"เขียนประวัติและบุ๊กมาร์กของเบราว์เซอร์"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"อนุญาตให้แอปพลิเคชันแก้ไขประวัติหรือบุ๊กมาร์กของเบราว์เซอร์ที่จัดเก็บบนโทรศัพท์ของคุณ แอปพลิเคชันที่เป็นอันตรายอาจใช้วิธีนี้ลบหรือแก้ไขข้อมูลเบราว์เซอร์ของคุณได้"</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"ตั้งเวลาปลุกในนาฬิกาปลุก"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"อนุญาตให้แอปพลิเคชันนี้ตั้งเวลาปลุกในแอปพลิเคชันนาฬิกาปลุกที่ติดตั้งไว้ แอปพลิเคชันนาฬิกาปลุกบางประเภทอาจไม่ใช้คุณลักษณะนี้"</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"แก้ไขการอนุญาตเกี่ยวกับการระบุตำแหน่งทางภูมิศาสตร์ของเบราว์เซอร์"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"อนุญาตให้แอปพลิเคชันแก้ไขการอนุญาตเกี่ยวกับการระบุตำแหน่งทางภูมิศาสตร์ของเบราว์เซอร์ แอปพลิเคชันที่เป็นอันตรายอาจใช้วิธีนี้อนุญาตให้ส่งข้อมูลตำแหน่งไปที่เว็บไซต์อื่นได้โดยพลการ"</string>
<string name="save_password_message" msgid="767344687139195790">"คุณต้องการให้เบราว์เซอร์จำรหัสผ่านนี้หรือไม่"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"เปิดเครือข่าย Wi-Fi ที่ใช้งานได้"</item>
<item quantity="other" msgid="7915895323644292768">"เปิดเครือข่าย Wi-Fi ที่ใช้งานได้"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"ใส่อักขระ"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"ไม่ทราบแอปพลิเคชัน"</string>
<string name="sms_control_title" msgid="7296612781128917719">"กำลังส่งข้อความ SMS"</string>
@@ -971,6 +983,8 @@
<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>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"แตะสำหรับตัวเลือก USB อื่นๆ"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"ฟอร์แมตที่เก็บข้อมูล USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"ฟอร์แมตการ์ด SD"</string>
@@ -1118,8 +1132,8 @@
<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="180268188117163072">"ดูทั้งหมด..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"เลือกกิจกรรม"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"แบ่งปันกับ..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 55209f4..12c14c3 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Pinapayagan ang mga application na panoorin ang mga pinipindot mong key maging kapag nakikipag-ugnay sa isa pang application (gaya ng pagpasok ng password). Hindi dapat na kailanganin kailanman para sa mga normal na application."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"sumailalim sa isang pamamaraan ng pag-input"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Pinapayagan ang holder na sumailalim sa nangungunang antas na interface ng pamamaraan ng pag-input. Hindi dapat kailanmang kailanganin para sa mga normal na application."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"sumailalim sa wallpaper"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Pinapayagan ang holder na sumailalim sa interface na nasa nangungunang antas ng wallpaper. Hindi kailanman dapat na kailanganin para sa mga normal na application."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"itali sa serbisyo ng widget"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Lalawigan"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Postal code"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Estado"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"ZIP code"</string>
+ <string name="autofill_county" msgid="237073771020362891">"County"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Pulo"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Distrito"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Kagawaran"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Prefecture"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Parokya"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Lugar"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirate"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"basahin ang kasaysayan at mga bookmark ng Browser"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Pinapayagan ang application na basahin ang lahat ng URL na binisita ng Browser, at lahat ng bookmark ng Browser."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"isulat ang kasaysayan ng Browser at mga bookmark"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Pinapayagan ang isang application na baguhin ang kasaysayan o mga bookmark ng Browser na nakaimbak sa iyong telepono. Magagamit ito ng mga nakakahamak na application upang burahin o baguhin ang iyong data ng Browser."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"itakda ang alarm sa alarm clock"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Pinapayagan ang application na magtakda ng alarm sa isang naka-install na application ng alarm clock. Maaaring hindi ipatupad ng ilang application ng alarm clock ang tampok na ito."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Baguhin ang mga pahintulot ng Browser geolocation"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Pinapayagan ang isang application na baguhin ang mga pahintulot sa geolocation ng Browser. Magagamit ito ng mga nakakahamak na application upang payagan ang pagpapadala ng impormasyon ng lokasyon sa mga hindi saklaw na web site."</string>
<string name="save_password_message" msgid="767344687139195790">"Gusto mo bang tandaan ng browser ang password na ito?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Available ang bukas na Wi-Fi network"</item>
<item quantity="other" msgid="7915895323644292768">"Buksan ang mga available na Wi-Fi network"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Magpasok ng character"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Hindi kilalang application"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Nagpapadala ng mga SMS na mensahe"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Nakakonekta bilang isang media device"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Nakakonekta bilang isang camera"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Nakakonekta bilang isang installer"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"I-touch para sa mga ibang pagpipilian sa USB"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"I-format USB storage"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"I-format ang SD card"</string>
@@ -1118,8 +1132,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"SHA-256 na fingerprint:"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1 na fingerprint:"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Tingnan lahat..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Pumili ng aktibidad"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Ibahagi sa..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index b4a6922..ca29d65 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Uygulamaların, başka bir uygulama ile etkileşim halindeyken (örneğin bir şifre girerken) bile bastığınız tuşları izlemesine izin verir. Normal uygulamalarda hiçbir zaman gerek duyulmamalıdır."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"bir giriş yöntemine bağla"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Tutucunun bir giriş yönteminin en üst düzey arayüzüne bağlanmasına izin verir. Normal uygulamalarda hiçbir zaman gerek duyulmamalıdır."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"bir duvar kağıdına tabi kıl"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Hesap sahibine bir duvar kağıdının en üst düzey arayüzüne bağlanma izni verir. Normal uygulamalarda hiçbir zaman gerek duyulmamalıdır."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"bir widget hizmetine bağla"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Vilayet"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Posta kodu"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Eyalet"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Posta kodu"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Belde"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Ada"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"İlçe"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Bölüm"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"İdari Bölge"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Mahalle"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Alan"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Emirlik"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"Tarayıcı geçmişini ve favorileri oku"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Uygulamaya Tarayıcının ziyaret etmiş olduğu tüm URL\'leri ve Tarayıcının tüm favorilerini okuma izni verir."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"Tarayıcı geçmişini ve favorileri yaz"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Uygulamaya telefonunuzda depolanan Tarayıcı geçmişini veya favorileri değiştirme izni verir. Kötü amaçlı uygulamalar bunu Tarayıcı verilerinizi silmek veya değiştirmek için kullanabilir."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"çalar saatte alarm ayarla"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Uygulamanın yüklü bir çalar saat uygulamasında bir alarm ayarlamasına izin verir. Bazı çalar saat uygulamaları bu özelliği kullanmayabilir."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Tarayıcı\'nın coğrafi konum izinlerini değiştir"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Bir uygulamanın, Tarayıcı\'nın coğrafi konum izinlerini değiştirmesine izin verir. Kötü amaçlı uygulamalar, bu özelliği konum bilgilerini rastgele web sitelerine göndermek için kullanabilir."</string>
<string name="save_password_message" msgid="767344687139195790">"Tarayıcının bu şifreyi anımsamasını istiyor musunuz?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Kullanılabilir kablosuz ağı aç"</item>
<item quantity="other" msgid="7915895323644292768">"Kullanılabilir kablosuz ağları aç"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Karakter ekle"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Bilinmeyen uygulama"</string>
<string name="sms_control_title" msgid="7296612781128917719">"SMS mesajları gönderiliyor"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Medya cihazı olarak bağlandı"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Kamera olarak bağlandı"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Yükleyici olarak bağlandı"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Diğer USB seçenekleri için dokunun"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"USB\'yi biçimlendir"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"SD kartı biçimlendir"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index e813b92..5a4a34c 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Дозволяє програмі переглядати клавіші, які ви натискаєте, навіть під час роботи з іншою програмою (наприклад, під час вводу пароля). Ніколи не потрібний для звичайних програм."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"прив\'яз. до методу введ."</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Дозволяє власнику прив\'язувати до інтерфейсу верхнього рівня методу введення. Ніколи не потрібний для звичайних програм."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"прив\'зати до фон. мал."</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Дозволяє власнику прив\'язувати до інтерфейсу верхнього рівня фон. малюнка. Ніколи не потрібний для звичайних програм."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"прив\'язувати до служби віджетів"</string>
@@ -720,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Дозволяє програмі змінювати історію чи закладки переглядача, збережені у вашому тел. Шкідливі програми можуть викор. це, щоб видаляти чи змінювати дані переглядача."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"налашт. сигнал у будильн."</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Дозволяє програмі налаштовувати сигнал у встановленій програмі будильника. У деяких програмах будильника ця функція може не застосовуватися."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Змін. дозволи геогр. місцезн. перегладача"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Дозволяє програмі змін. дозволи географ. місцезн. переглядача. Шкідливі програми можуть використ. це, щоб дозволяти надсилати інф-ю про місцезн. випадковим веб-сайтам."</string>
<string name="save_password_message" msgid="767344687139195790">"Хочете, щоб переглядач запам\'ятав цей пароль?"</string>
@@ -911,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Відкрита Wi-Fi мережа доступна"</item>
<item quantity="other" msgid="7915895323644292768">"Відкриті Wi-Fi мережі доступні"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Вставл-ня символу"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Невідома програма"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Надсил. SMS повідомлень"</string>
@@ -959,6 +983,8 @@
<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>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Торкніться, щоб побачити інші параметри USB"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Форматув. носій USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Формат. карти SD"</string>
@@ -1106,8 +1132,8 @@
<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="180268188117163072">"Показати всі..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Вибрати дію"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Надіслати..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index dd2c19d..a754a5c 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Cho phép ứng dụng xem các phím bạn nhấn ngay cả khi tương tác với ứng dụng khác (chẳng hạn như nhập mật khẩu). Không cần thiết cho các ứng dụng thông thường."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"liên kết với phương thức nhập"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Cho phép chủ nhân ràng buộc với giao diện cấp cao nhất của phương thức nhập. Không cần thiết cho các ứng dụng thông thường."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"liên kết với hình nền"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Cho phép chủ nhân ràng buộc với giao diện cấp cao nhất của hình nền. Không cần thiết cho các ứng dụng thông thường."</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"liên kết với dịch vụ tiện ích con"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <string name="autofill_province" msgid="2231806553863422300">"Tỉnh"</string>
+ <string name="autofill_postal_code" msgid="4696430407689377108">"Mã bưu chính"</string>
+ <string name="autofill_state" msgid="6988894195520044613">"Tiểu bang"</string>
+ <string name="autofill_zip_code" msgid="8697544592627322946">"Mã ZIP"</string>
+ <string name="autofill_county" msgid="237073771020362891">"Hạt"</string>
+ <string name="autofill_island" msgid="4020100875984667025">"Đảo"</string>
+ <string name="autofill_district" msgid="8400735073392267672">"Quận"</string>
+ <string name="autofill_department" msgid="5343279462564453309">"Khu hành chính"</string>
+ <string name="autofill_prefecture" msgid="2028499485065800419">"Quận"</string>
+ <string name="autofill_parish" msgid="8202206105468820057">"Giáo xứ"</string>
+ <string name="autofill_area" msgid="3547409050889952423">"Khu vực"</string>
+ <string name="autofill_emirate" msgid="2893880978835698818">"Tiểu vương quốc Ả rập"</string>
<string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"đọc lịch sử và dấu trang của Trình duyệt"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Cho phép ứng dụng đọc tất cả các URL mà Trình duyệt đã truy cập và tất cả các dấu trang của Trình duyệt."</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"xem lịch sử và dấu trang của Trình duyệt"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Cho phép ứng dụng sửa đổi lịch sử hoặc dấu trang của Trình duyệt được lưu trữ trên điện thoại của bạn. Các ứng dụng độc hại có thể sử dụng quyền này để xoá hoặc sửa đổi dữ liệu Trình duyệt của bạn."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"đặt báo thức trong đồng hồ báo thức"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Cho phép ứng dụng đặt báo thức trong ứng dụng đồng hồ báo thức được cài đặt. Một số ứng dụng đồng hồ báo thức có thể không sử dụng tính năng này."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Sửa đổi quyền về vị trí địa lý của Trình duyệt"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Cho phép ứng dụng sửa đổi các quyền về vị trí địa lý của Trình duyệt. Các ứng dụng độc hại có thể sử dụng quyền này để cho phép gửi thông tin vị trí đến trang web bất kỳ."</string>
<string name="save_password_message" msgid="767344687139195790">"Bạn có muốn trình duyệt nhớ mật khẩu này không?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"Mở mạng Wi-Fi khả dụng"</item>
<item quantity="other" msgid="7915895323644292768">"Mở mạng Wi-Fi khả dụng"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Chèn ký tự"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"Ứng dụng không xác định"</string>
<string name="sms_control_title" msgid="7296612781128917719">"Đang gửi tin nhắn SMS"</string>
@@ -971,6 +983,8 @@
<string name="usb_mtp_notification_title" msgid="3699913097391550394">"Đã kết nối là thiết bị truyền thông"</string>
<string name="usb_ptp_notification_title" msgid="1960817192216064833">"Đã kết nối như máy ảnh"</string>
<string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Được kết nối như trình cài đặt"</string>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"Chạm để có các tùy chọn USB khác"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Định dạng b.nhớ USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Định dạng thẻ SD"</string>
@@ -1118,8 +1132,8 @@
<string name="sha256_fingerprint" msgid="4391271286477279263">"Tệp tham chiếu SHA-256:"</string>
<string name="sha1_fingerprint" msgid="7930330235269404581">"Tệp tham chiếu SHA-1:"</string>
<string name="activity_chooser_view_see_all" msgid="180268188117163072">"Xem tất cả..."</string>
- <!-- no translation found for activity_chooser_view_dialog_title_default (3325054276356556835) -->
- <skip />
- <!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
+ <string name="activity_chooser_view_dialog_title_default" msgid="3325054276356556835">"Chọn hoạt động"</string>
+ <string name="share_action_provider_share_with" msgid="1791316789651185229">"Chia sẻ với..."</string>
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
<skip />
</resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 0fb0106..6daa793 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"允许应用程序查看您按的键,即使在与其他应用程序交互(例如输入密码)时也不例外。普通应用程序从不需要使用此权限。"</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"绑定至输入法"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"允许手机用户绑定至输入法的顶级界面。普通应用程序从不需要使用此权限。"</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"绑定到壁纸"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"允许手机用户绑定到壁纸的顶级界面。应该从不需要将此权限授予普通应用程序。"</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"绑定到窗口小部件服务"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <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="1284843728203412135">"读取浏览器的历史记录和书签"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"允许应用程序读取用浏览器访问过的所有网址,以及浏览器的所有书签。"</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"写入浏览器的历史记录和书签"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"允许应用程序修改存储在手机中的浏览器历史记录或书签。恶意应用程序可借此清除或修改浏览器数据。"</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"在闹钟中设置警报"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"允许应用程序在安装的闹钟应用程序中设置警报。某些闹钟应用程序没有实现此功能。"</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"修改浏览器的地理位置权限"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"允许应用程序修改浏览器的地理位置权限。恶意应用程序会利用这一点将位置信息发送到任意网站。"</string>
<string name="save_password_message" msgid="767344687139195790">"是否希望浏览器记住此密码?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"打开可用的 Wi-Fi 网络"</item>
<item quantity="other" msgid="7915895323644292768">"打开可用的 Wi-Fi 网络"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"插入字符"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"未知的应用程序"</string>
<string name="sms_control_title" msgid="7296612781128917719">"正在发送短信"</string>
@@ -971,6 +983,8 @@
<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>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"触摸可显示其他 USB 选项"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"格式化 USB 存储设备"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"格式化 SD 卡"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index bf33dbf..411b24f 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -262,6 +262,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"允許應用程式在使用者操作其他程式時 (例如:輸入密碼),仍可監看輸入的按鍵。一般應用程式應不需要此功能。"</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"連結至輸入法"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"允許擁有人連結至輸入法的最頂層介面。一般應用程式不需使用此選項。"</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"連結至桌布"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"允許擁有人連結至桌布的最頂層介面,一般應用程式不需使用此選項。"</string>
<string name="permlab_bindRemoteViews" msgid="5697987759897367099">"繫結至小工具服務"</string>
@@ -701,30 +705,18 @@
<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>
- <!-- no translation found for autofill_province (2231806553863422300) -->
- <skip />
- <!-- no translation found for autofill_postal_code (4696430407689377108) -->
- <skip />
- <!-- no translation found for autofill_state (6988894195520044613) -->
- <skip />
- <!-- no translation found for autofill_zip_code (8697544592627322946) -->
- <skip />
- <!-- no translation found for autofill_county (237073771020362891) -->
- <skip />
- <!-- no translation found for autofill_island (4020100875984667025) -->
- <skip />
- <!-- no translation found for autofill_district (8400735073392267672) -->
- <skip />
- <!-- no translation found for autofill_department (5343279462564453309) -->
- <skip />
- <!-- no translation found for autofill_prefecture (2028499485065800419) -->
- <skip />
- <!-- no translation found for autofill_parish (8202206105468820057) -->
- <skip />
- <!-- no translation found for autofill_area (3547409050889952423) -->
- <skip />
- <!-- no translation found for autofill_emirate (2893880978835698818) -->
- <skip />
+ <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="1284843728203412135">"讀取瀏覽器的記錄與書籤"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"允許應用程式讀取瀏覽器曾經造訪過的所有網址,以及瀏覽器的所有書籤。"</string>
<string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"寫入瀏覽器的記錄與書籤"</string>
@@ -732,6 +724,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"允許應用程式修改儲存在電話上的瀏覽記錄或書籤。請注意:惡意應用程式可能會使用此選項來清除或修改您瀏覽器的資料。"</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"在鬧鐘應用程式中設定鬧鈴"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"允許應用程式在安裝的鬧鐘應用程式中設定鬧鐘,某些鬧鐘應用程式可能無法執行這項功能。"</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"修改瀏覽器地理資訊的權限"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"允許應用程式修改瀏覽器的地理位置權限,惡意應用程式可能會透過此方式允許將您的位置資訊任意傳送給某些網站。"</string>
<string name="save_password_message" msgid="767344687139195790">"是否記住此密碼?"</string>
@@ -923,6 +919,22 @@
<item quantity="one" msgid="1634101450343277345">"開啟可用 Wi-Fi 網路"</item>
<item quantity="other" msgid="7915895323644292768">"開啟可用 Wi-Fi 網路"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"插入字元"</string>
<string name="sms_control_default_app_name" msgid="7630529934366549163">"未知的應用程式"</string>
<string name="sms_control_title" msgid="7296612781128917719">"傳送 SMS 簡訊"</string>
@@ -971,6 +983,8 @@
<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>
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<string name="usb_notification_message" msgid="4447869605109736382">"輕觸即可顯示其他 USB 選項"</string>
<string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"格式化 USB 儲存空間"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"將 SD 卡格式化"</string>
@@ -1122,4 +1136,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 0e05ad5..f224e63 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -191,8 +191,8 @@
<!-- no translation found for contentServiceSyncNotificationTitle (397743349191901458) -->
<skip />
<string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Kunokususa <xliff:g id="CONTENT_TYPE">%s</xliff:g> okuningi kakhulu."</string>
- <string name="low_memory" product="tablet" msgid="2292820184396262278">"Isilondolozi sethebhulethi sigcwele! Susa amanye amafayela ukukhulula isikhala."</string>
- <!-- outdated translation 2292820184396262278 --> <string name="low_memory" product="default" msgid="6632412458436461203">"Isilondolozi sethebhulethi sigcwele! Susa amanye amafayela ukukhulula isikhala."</string>
+ <string name="low_memory" product="tablet" msgid="2292820184396262278">"Isitoreji sethebhulethi sigcwele! Susa amanye amafayela ukukhulula isikhala."</string>
+ <!-- outdated translation 2292820184396262278 --> <string name="low_memory" product="default" msgid="6632412458436461203">"Isitoreji sethebhulethi sigcwele! Susa amanye amafayela ukukhulula isikhala."</string>
<!-- no translation found for me (6545696007631404292) -->
<skip />
<string name="power_dialog" product="tablet" msgid="8545351420865202853">"Okukhethwa kukho kwethebhulethi"</string>
@@ -265,8 +265,8 @@
<!-- no translation found for permgrouplab_developmentTools (3446164584710596513) -->
<skip />
<string name="permgroupdesc_developmentTools" msgid="9056431193893809814">"Izici zidingeka kuphela konjiniyela bohlelo lokusebenza."</string>
- <string name="permgrouplab_storage" msgid="1971118770546336966">"Ukugcina"</string>
- <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Finyelela kukugcina nge-USB."</string>
+ <string name="permgrouplab_storage" msgid="1971118770546336966">"Isitoreji"</string>
+ <string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Finyelela kwisitoreji se-USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Finyelela ikhadi le-SD."</string>
<!-- no translation found for permlab_statusBar (7417192629601890791) -->
<skip />
@@ -322,7 +322,7 @@
<string name="permlab_enableCarMode" msgid="5684504058192921098">"vumela imodi yemoto"</string>
<string name="permdesc_enableCarMode" msgid="5673461159384850628">"Ivumela uhlelo lokusebenza ukuvumela imodi yemoto."</string>
<string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"bulala izinqubo zasemuva"</string>
- <string name="permdesc_killBackgroundProcesses" msgid="2908829602869383753">"Ivumela uhlelo lokusebenza ukubulala izinqubo zasemuva zezinye izinhlelo zokusebenza, ngisho noma inkumbulo iphansi kakhulu."</string>
+ <string name="permdesc_killBackgroundProcesses" msgid="2908829602869383753">"Ivumela uhlelo lokusebenza ukubulala izinqubo zasemuva zezinye izinhlelo zokusebenza, ngisho noma imemori iphansi kakhulu."</string>
<string name="permlab_forceStopPackages" msgid="1447830113260156236">"phoqelela ukumisa ezinye izinhlelo zokusebenza"</string>
<string name="permdesc_forceStopPackages" msgid="7263036616161367402">"Ivumela uhlelo lokusebenza ukumisa ngokuphoqelela ezinye izinhlelo zokusebenza."</string>
<!-- no translation found for permlab_forceBack (1804196839880393631) -->
@@ -385,6 +385,10 @@
<string name="permdesc_readInputState" msgid="5132879321450325445">"Ivumela izinhlelo zokusebenza ukufunda izinkinobho ozicindezela ngisho noma uxhumana nolunye uhlelo lokusebenza (njengokufaka iphasiwedi). Akusoze kwadingeka ezinhlelweni zokusebenza ezivamile."</string>
<string name="permlab_bindInputMethod" msgid="3360064620230515776">"hlanganisa indlela yokufakwayo"</string>
<string name="permdesc_bindInputMethod" msgid="3734838321027317228">"Ivumela isimeli ukuhlanganisa uxhumano nomsebenzisi wezinga eliphezulu lendlela yokufaka. Ayisoze yadingeka kwizinhlelo ezivamile."</string>
+ <!-- no translation found for permlab_bindTextService (7358378401915287938) -->
+ <skip />
+ <!-- no translation found for permdesc_bindTextService (172508880651909350) -->
+ <skip />
<string name="permlab_bindWallpaper" msgid="8716400279937856462">"hlanganisa kwiphephadonga"</string>
<string name="permdesc_bindWallpaper" msgid="5287754520361915347">"Ivumela umbambi ukuhlanganisa uxhumano nomsebenzisi kwezinga eliphezulu lwephephadonga. Akusoze kwadingeka kwezinhlelo zokusebenza ezivamile."</string>
<!-- no translation found for permlab_bindRemoteViews (5697987759897367099) -->
@@ -422,8 +426,8 @@
<string name="permdesc_installPackages" msgid="526669220850066132">"Ivumela uhlelo lokusebenza ukufaka amaphakheji amasha noma abuyekeziwe. Izinhlelo ezinonya zingasebenzisa lokhu ukufaka izinhelo zokusebenza ezintsha ngezimvume zomthetho onamandla."</string>
<!-- no translation found for permlab_clearAppCache (4747698311163766540) -->
<skip />
- <string name="permdesc_clearAppCache" product="tablet" msgid="3097119797652477973">"Ivumela uhlelo lokusebenza ukukhulula ukugcina kwethebhulethii ngokususa amafayela kwisiqondiso sesilondolozi sesikhashana sohlelo lokusebenza. Ukufinyelele ngokuvamile kuvinjelwe enqubweni yohlelo."</string>
- <string name="permdesc_clearAppCache" product="default" msgid="7740465694193671402">"Ivumela uhlelo lokusebenza ukukhulula ukugcina kwefoni ngokususa amafayela kwisiqondiso sesilondolozi sesikhashana sohlelo lokusebenza. Ukufinyelele ngokuvamile kuvinjelwe enqubweni yohlelo."</string>
+ <string name="permdesc_clearAppCache" product="tablet" msgid="3097119797652477973">"Ivumela uhlelo lokusebenza ukukhulula isitoreji sethebhulethi ngokususa amafayela kwisiqondiso sesilondolozi sesikhashana sohlelo lokusebenza. Ukufinyelele ngokuvamile kuvinjelwe enqubweni yesistimu."</string>
+ <string name="permdesc_clearAppCache" product="default" msgid="7740465694193671402">"Ivumela uhlelo lokusebenza ukukhulula isitoreji sefoni ngokususa amafayela kwisiqondiso sesilondolozi sesikhashana sohlelo lokusebenza. Ukufinyelele ngokuvamile kuvinjelwe enqutshweni yesitimu."</string>
<string name="permlab_movePackage" msgid="728454979946503926">"Hambisa izinsiza zohlelo lokusebenza"</string>
<string name="permdesc_movePackage" msgid="6323049291923925277">"Ivumela uhlelo lokusebenza ukukhipha izinsiza zohlelo lokusebenza kwimidiya yangaphakathi iziyisa kweyangaphandle nangokuguquka."</string>
<string name="permlab_readLogs" msgid="6615778543198967614">"funda idatha yefayela lokungena ebucayi"</string>
@@ -454,7 +458,7 @@
<!-- no translation found for permlab_broadcastSticky (7919126372606881614) -->
<skip />
<string name="permdesc_broadcastSticky" product="tablet" msgid="6322249605930062595">"Ivumela uhlelo lokusebenza ukuthumela imisakazo enamathelayo, esala emva kokuba ukusakaza kuphelile. Izinhlelo zokusebenza ezinonya zingenza ithebhulethii ingasheshi futhi ingahlaliseki ngokuyibangela ukuba isebenzise inkumbulo eningi kakhulu."</string>
- <string name="permdesc_broadcastSticky" product="default" msgid="1920045289234052219">"Ivumela uhlelo lokusebenza ukuthumela imisakazo enamathelayo, esala emva kokuba ukusakaza kuphelile. Izinhlelo zokusebenza ezinonya zingenza ifoni ingasheshi futhi ingahlaliseki ngokuyibangela ukuba isebenzise inkumbulo eningi kakhulu."</string>
+ <string name="permdesc_broadcastSticky" product="default" msgid="1920045289234052219">"Ivumela uhlelo lokusebenza ukuthumela imisakazo engazwakali kahle, esala emuva kokuthi ukusakaza kuphelile. Izinhlelo zokusebenza ezinonya zingenza ifoni ingasheshi futhi ingasebenzi kahle ngokuyibangela ukuthi isebenzise imemori eningi kakhulu."</string>
<!-- no translation found for permlab_readContacts (6219652189510218240) -->
<skip />
<string name="permdesc_readContacts" product="tablet" msgid="7596158687301157686">"Ivumela uhlelo lokusebenza ukufunda yonke idatha yothintana naye (ikheli) egcinwe kwithebhulethi yakho. Izinhlelo zokusebenza ezinonya zingase zisebenzise lokhu ukuthumela idatha yakho kwabanye abantu."</string>
@@ -516,19 +520,19 @@
<string name="permdesc_reboot" product="default" msgid="7914933292815491782">"Ivumela uhlelo lokusebenza ukuphoqelela ifoni ukuqalisa phansi."</string>
<!-- no translation found for permlab_mount_unmount_filesystems (1761023272170956541) -->
<skip />
- <string name="permdesc_mount_unmount_filesystems" msgid="6253263792535859767">"Ivumela izinhlelo ukukhweza nokukwehlisa izinhlelo zefayela zokugcina okukhiphekayo."</string>
- <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"fometha ukugcina kwangaphandle"</string>
- <string name="permdesc_mount_format_filesystems" msgid="574060044906047386">"Ivumela uhlelo lokusebenza ukufometha ukugcina okukhiphekayo."</string>
- <string name="permlab_asec_access" msgid="3411338632002193846">"thola ukwaziswa ekugcineni kwangaphakathi"</string>
- <string name="permdesc_asec_access" msgid="8820326551687285439">"Ivumela uhlelo lokusebenza ukuthola ukwaziswa ekugcineni kwangaphakathi."</string>
- <string name="permlab_asec_create" msgid="6414757234789336327">"dala ukugcina kwangaphakathi"</string>
- <string name="permdesc_asec_create" msgid="2621346764995731250">"Ivumela uhlelo lokusebenza ukwenza ukugcina kwangaphakathi."</string>
- <string name="permlab_asec_destroy" msgid="526928328301618022">"yonakalisa ukugcina kwanaphakathi"</string>
- <string name="permdesc_asec_destroy" msgid="2746706889208066256">"Ivumela uhlelo lokusebenza ukonakalisa ukugcina kwangaphakathi."</string>
- <string name="permlab_asec_mount_unmount" msgid="2456287623689029744">"khweza / yehlisa ukugcina kwangaphakathi"</string>
- <string name="permdesc_asec_mount_unmount" msgid="5934375590189368200">"Ivumela uhlelo lokusebenza ukukhuphula / ukwehlisa ukugcina kwangaphakathi."</string>
- <string name="permlab_asec_rename" msgid="7496633954080472417">"qamba kabusha ukugcina kwangaphakathi"</string>
- <string name="permdesc_asec_rename" msgid="2152829985238876790">"Ivumela uhlelo lokusebenza ukuqamba kabusha ukugcina kwangaphakathi."</string>
+ <string name="permdesc_mount_unmount_filesystems" msgid="6253263792535859767">"Ivumela izinhlelo ukukhweza nokukwehlisa amasistimu wefayela lesitoreji esikhiphekayo."</string>
+ <string name="permlab_mount_format_filesystems" msgid="5523285143576718981">"fometha isitoreji sangaphandle"</string>
+ <string name="permdesc_mount_format_filesystems" msgid="574060044906047386">"Ivumela uhlelo lokusebenza ukufometha isitoreji esikhiphekayo."</string>
+ <string name="permlab_asec_access" msgid="3411338632002193846">"thola ulwazi ngesitoreji sangaphakathi"</string>
+ <string name="permdesc_asec_access" msgid="8820326551687285439">"Ivumela uhlelo lokusebenza ukuthola ulwazi ngesitoreji sangaphakathi."</string>
+ <string name="permlab_asec_create" msgid="6414757234789336327">"dala isitoreji sangaphakathi"</string>
+ <string name="permdesc_asec_create" msgid="2621346764995731250">"Ivumela uhlelo lokusebenza ukudala isitoreji sangaphakathi."</string>
+ <string name="permlab_asec_destroy" msgid="526928328301618022">"yonakalisa isitoreji sangaphakathi"</string>
+ <string name="permdesc_asec_destroy" msgid="2746706889208066256">"Ivumela uhlelo lokusebenza ukonakalisa isitoreji sangaphakathi."</string>
+ <string name="permlab_asec_mount_unmount" msgid="2456287623689029744">"khweza / yehlisa isitoreji sangaphakathi"</string>
+ <string name="permdesc_asec_mount_unmount" msgid="5934375590189368200">"Ivumela uhlelo lokusebenza ukukhweza / ukwehlisa isitoreji sangaphakathi."</string>
+ <string name="permlab_asec_rename" msgid="7496633954080472417">"yetha kabusha isitoreji sangaphakathi"</string>
+ <string name="permdesc_asec_rename" msgid="2152829985238876790">"Ivumela uhlelo lokusebenza ukwetha kabusha isitoreji sangaphakathi."</string>
<!-- no translation found for permlab_vibrate (7768356019980849603) -->
<skip />
<string name="permdesc_vibrate" msgid="2886677177257789187">"Ivumela uhlelo lokusebenza ukulawula isidlidlizi."</string>
@@ -550,8 +554,8 @@
<!-- no translation found for permlab_callPrivileged (4198349211108497879) -->
<skip />
<string name="permdesc_callPrivileged" msgid="244405067160028452">"Ivumela uhlelo lokusebenza ukushayela noma iyiphi inombolo yocingo, kuhlanganise izinombolo eziphuthumayo, ngaphandle kokungenela kwakho. Izinhlelo zokusebenza ezinonya zingase zenze izincingo ezingadingeki nezingekho ezimthethweni kwizinsizakalo eziphuthumayo."</string>
- <string name="permlab_performCdmaProvisioning" product="tablet" msgid="4842576994144604821">"ngokuqondile qalisa ukuhlela ithebhulethi nge-CDMA"</string>
- <string name="permlab_performCdmaProvisioning" product="default" msgid="5604848095315421425">"ngokuqondile qalisa ukuhlela ifoni nge-CDMA"</string>
+ <string name="permlab_performCdmaProvisioning" product="tablet" msgid="4842576994144604821">"ngokuqondile qalisa ukumisa ithebhulethi nge-CDMA"</string>
+ <string name="permlab_performCdmaProvisioning" product="default" msgid="5604848095315421425">"ngokuqondile qalisa ukumisa ifoni nge-CDMA"</string>
<string name="permdesc_performCdmaProvisioning" msgid="6457447676108355905">"Ivumela uhlelo lokusebenza ukuqalisa amalungiselelo e-CDMA. Izinhlelo ezinonya ngokungadingekile zingaqalisa amalungiselelo e-CDMA."</string>
<!-- no translation found for permlab_locationUpdates (7785408253364335740) -->
<skip />
@@ -667,12 +671,12 @@
<string name="permdesc_readDictionary" msgid="1082972603576360690">"Ivumela uhlelo lokusebenza ukufunda noma yimaphi amagama ayimfihlo, amagama nemisho leyo umsebenzisi ayigcine kwisichazamazwi somsebenzisi."</string>
<string name="permlab_writeDictionary" msgid="6703109511836343341">"bhala kwisichazamazwi esicacisiwe somsebenzisi"</string>
<string name="permdesc_writeDictionary" msgid="2241256206524082880">"Ivumela uhlelo lokusebenza ukubhala amagama amasha kwisichazamazwi somsebenzisi."</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"guqula/susa okuqukethwe kokugcina nge-USB"</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"guqula/susa okuqukethwe isitoreji se-USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"guqula/susa okuqukethwe kwekhadi le-SD"</string>
- <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6594393334785738252">"Ivumela uhlelo lokusebenza ukubhala ekugcineni nge-USB."</string>
+ <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6594393334785738252">"Ivumela uhlelo lokusebenza ukubhala kwisitoreji se-USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="6643963204976471878">"Ivumela uhlelo lokusebenza ukubhala ekhadini le-SD."</string>
- <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"guqula/susa okuqukethwe kokugcina imidiya yangaphakathi"</string>
- <string name="permdesc_mediaStorageWrite" product="default" msgid="8232008512478316233">"Ivumela uhlelo lokusebenza ukuguqula okuqukethwe kokugcina kwemidiya yangaphakathi."</string>
+ <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"guqula/susa okuqukethwe kwisitoreji semidiya yangaphakathi"</string>
+ <string name="permdesc_mediaStorageWrite" product="default" msgid="8232008512478316233">"Ivumela uhlelo lokusebenza ukuguqula okuqukethwe kwisitoreji semidiya yangaphakathi."</string>
<string name="permlab_cache_filesystem" msgid="5656487264819669824">"finyelela kunqolobane yesistimu yefayela"</string>
<string name="permdesc_cache_filesystem" msgid="1624734528435659906">"Ivumela uhlelo lokusebenza ukufunda nokubhala uhlelo lwesistimu lwenqolobane."</string>
<string name="permlab_use_sip" msgid="5986952362795870502">"yena/thola amakholi e-Inthanethi"</string>
@@ -705,7 +709,7 @@
<string name="policydesc_setGlobalProxy" msgid="6387497466660154931">"Misa iphrokzi jikelele yedivaysi ukusebenzisa ngenkathi inqumbomgomo ivunyelwa. Idivaysi yokuqala kuphela yokuphatha emisa ummeleli jikelele esebenzayo."</string>
<!-- outdated translation 2314569545488269564 --> <string name="policylab_expirePassword" msgid="885279151847254056">"Hlela ukuphelelwa isikhathi kwephasiwedi."</string>
<!-- outdated translation 7276906351852798814 --> <string name="policydesc_expirePassword" msgid="4844430354224822074">"Lawula ukuthi iphasiwedi yokuvala isikrini kumele ishintshwe nini"</string>
- <string name="policylab_encryptedStorage" msgid="8901326199909132915">"Setha umbhalo wemfihlo wokugcina"</string>
+ <string name="policylab_encryptedStorage" msgid="8901326199909132915">"Setha umbhalo wemfihlo yesitoreji"</string>
<string name="policydesc_encryptedStorage" msgid="2504984732631479399">"Idinga ukuba idatha yohlelo lokusebenza olugciniwe ibhalwe ngokufihlekileyo"</string>
<!-- no translation found for policylab_disableCamera (6395301023152297826) -->
<skip />
@@ -962,6 +966,10 @@
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="945571990357114950">"Ivumela izinhlelo zokusebenza ukuguqula umlando Wesiphequluli noma amabhukimakhi agcinwe efonini yakho. Izinhlelo zokusebenza ezinonya zingase zisebenzise lokhu ukwesula noma ukuguqula idatha yakho Yesiphequluli."</string>
<string name="permlab_setAlarm" msgid="5924401328803615165">"misa i-alamu ewashini le-alamu"</string>
<string name="permdesc_setAlarm" msgid="5966966598149875082">"Ivumela uhlelo lokusebenza ukumisa i-alamu kuhlelo lokusebenza lewashi le-alawmu elifakiwe. Ezinye izinhlelo zokusebenza zewashi le-alamu zingase zingasebenzisi lesi sici."</string>
+ <!-- no translation found for permlab_readWriteOwnVoicemail (8861946090046059697) -->
+ <skip />
+ <!-- no translation found for permdesc_readWriteOwnVoicemail (7343490168272921274) -->
+ <skip />
<string name="permlab_writeGeolocationPermissions" msgid="4715212655598275532">"Gugula izimvume zendawo Yesiphequluli"</string>
<string name="permdesc_writeGeolocationPermissions" msgid="4011908282980861679">"Ivumela uhlelo lokusebenza ukuguqula izimvume zendawo Yesiphequluli. Izinhlelo ezinonya zingase zisebenzise lokhu ukuvumela ukuthumela ukwaziswa kwendawo kwamanye amasayithi ewebhu."</string>
<!-- no translation found for save_password_message (767344687139195790) -->
@@ -1118,8 +1126,8 @@
<string name="editTextMenuTitle" msgid="4909135564941815494">"Izenzo zombhalo"</string>
<!-- no translation found for low_internal_storage_view_title (1399732408701697546) -->
<skip />
- <string name="low_internal_storage_view_text" product="tablet" msgid="4231085657068852042">"Isikhala sokugcina sethebhulethi siya ngokuphela."</string>
- <!-- outdated translation 4231085657068852042 --> <string name="low_internal_storage_view_text" product="default" msgid="635106544616378836">"Isikhala sokugcina sethebhulethi siya ngokuphela."</string>
+ <string name="low_internal_storage_view_text" product="tablet" msgid="4231085657068852042">"Isitoreji sethebhulethi siya ngokuphela."</string>
+ <!-- outdated translation 4231085657068852042 --> <string name="low_internal_storage_view_text" product="default" msgid="635106544616378836">"Isitoreji sethebhulethi siya ngokuphela."</string>
<!-- no translation found for ok (5970060430562524910) -->
<skip />
<!-- no translation found for cancel (6442560571259935130) -->
@@ -1216,6 +1224,22 @@
<item quantity="one" msgid="1634101450343277345">"Vula inethiwekhi ye-Wi-Fi etholakalayo"</item>
<item quantity="other" msgid="7915895323644292768">"Vula amanethiwekhi we-Wi-Fi atholakalayo"</item>
</plurals>
+ <!-- no translation found for wifi_watchdog_network_disabled (6398650124751302012) -->
+ <skip />
+ <!-- no translation found for wifi_watchdog_network_disabled_detailed (4659127251774069612) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_dialog_title (97611782659324517) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_turnon_message (2804722042556269129) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_failed_message (6467545523417622335) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pbc_go_negotiation_request_message (3170321684621420428) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_go_negotiation_request_message (5177412094633377308) -->
+ <skip />
+ <!-- no translation found for wifi_p2p_pin_display_message (2834049169114922902) -->
+ <skip />
<string name="select_character" msgid="3365550120617701745">"Faka uhlamvu"</string>
<!-- no translation found for sms_control_default_app_name (7630529934366549163) -->
<skip />
@@ -1248,27 +1272,27 @@
<skip />
<string name="perms_hide" msgid="7283915391320676226"><b>"Fihla "</b></string>
<string name="perms_show_all" msgid="2671791163933091180"><b>"Bonisa konke"</b></string>
- <string name="usb_storage_activity_title" msgid="2399289999608900443">"Ukugcina Okukhulu nge-USB"</string>
+ <string name="usb_storage_activity_title" msgid="2399289999608900443">"Isitoreji Sokukhulu se-USB"</string>
<!-- no translation found for usb_storage_title (5901459041398751495) -->
<skip />
- <string name="usb_storage_message" product="nosdcard" msgid="6631094834151575841">"Uxhumeke kwikhompyutha yakho nge-USB. Thinta inkinobho engenzansi uma ufuna ukukopisha amafayela phakathi kwekhompyutha yakho nokugcina nge-Android USB yakho."</string>
+ <string name="usb_storage_message" product="nosdcard" msgid="6631094834151575841">"Uxhumeke kwikhompyutha yakho nge-USB. Thinta inkinobho engenzansi uma ufuna ukukopisha amafayela phakathi kwekhompyutha yakho nesitoreji se-Android USB yakho."</string>
<string name="usb_storage_message" product="default" msgid="4510858346516069238">"Uxhume kwikhompyutha yakho nge-USB. Thinta inkinobho engenzansi uma ufuna ukukopisha amafayela phakathi kwekhompyutha yakho nekhadi lakho le-SD."</string>
- <string name="usb_storage_button_mount" msgid="1052259930369508235">"Vula ukuginca nge-USB"</string>
- <string name="usb_storage_error_message" product="nosdcard" msgid="3276413764430468454">"Kunenkinga yokusebenzisa ikhadi lakho le-SD lokugcina nge-USB."</string>
- <string name="usb_storage_error_message" product="default" msgid="120810397713773275">"Kunenkinga yokusebenzisa ikhadi lakho le-SD lokugcina nge-USB."</string>
+ <string name="usb_storage_button_mount" msgid="1052259930369508235">"Vula isitoreji se-USB"</string>
+ <string name="usb_storage_error_message" product="nosdcard" msgid="3276413764430468454">"Kunenkinga yokusebenzisa ikhadi lakho le-SD njengesitoreji se-USB."</string>
+ <string name="usb_storage_error_message" product="default" msgid="120810397713773275">"Kunenkinga yokusebenzisa ikhadi lakho le-SD njengesitoreji se-USB."</string>
<!-- no translation found for usb_storage_notification_title (8175892554757216525) -->
<skip />
<!-- no translation found for usb_storage_notification_message (7380082404288219341) -->
<skip />
- <string name="usb_storage_stop_notification_title" msgid="2336058396663516017">"Vala ukugcina nge-USB"</string>
- <string name="usb_storage_stop_notification_message" msgid="2591813490269841539">"Khetha ukuvala ukugcina nge-USB."</string>
- <string name="usb_storage_stop_title" msgid="660129851708775853">"Ukugcina nge-USB kuyasebenza"</string>
- <string name="usb_storage_stop_message" product="nosdcard" msgid="1368842269463745067">"Ngaphambi kokuvala ukugcina nge-USB, qiniseka ukuthi wehlise (\"ukhiphe\") ukugcina nge-USB ye-Android yakho kwikhompyutha yakho."</string>
- <string name="usb_storage_stop_message" product="default" msgid="3613713396426604104">"Ngaphambi kokuvala ukugcina nge-USB, qiniseka ukuthi wehlise (\"ukhiphe\" ikhadi lakho le-Android SD kwikhompyutha yakho."</string>
- <string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"Vala ukugcina nge-USB"</string>
- <string name="usb_storage_stop_error_message" msgid="143881914840412108">"Kube nenkinga yokuvala ukugcina nge-USB. Hlola ukuqiniseka ukuthi wehlise isikhungo se-USB, bese uzama futhi."</string>
- <string name="dlg_confirm_kill_storage_users_title" msgid="963039033470478697">"Vula ukugcina nge-USB"</string>
- <string name="dlg_confirm_kill_storage_users_text" msgid="3202838234780505886">"Uma uvula ukugcina nge-USB, ezinye izinhlelo zokusebenza ozisebenzisayo zizoma futhi zingase zingatholakali kuze kube yilapho uvala ukugcina nge-USB."</string>
+ <string name="usb_storage_stop_notification_title" msgid="2336058396663516017">"Vala isitoreji se-USB"</string>
+ <string name="usb_storage_stop_notification_message" msgid="2591813490269841539">"Khetha ukuvala isitoreji se-USB."</string>
+ <string name="usb_storage_stop_title" msgid="660129851708775853">"Isitoreji se-USB siyasebenza"</string>
+ <string name="usb_storage_stop_message" product="nosdcard" msgid="1368842269463745067">"Ngaphambi kokuvala kwisitoreji se-USB, qiniseka ukuthi wehlise (\"ukhiphe\") isitoreji se-USB se-Android yakho kwikhompyutha yakho."</string>
+ <string name="usb_storage_stop_message" product="default" msgid="3613713396426604104">"Ngaphambi kokuvala isitoreji se-USB, qiniseka ukuthi wehlise (\"ukhiphe\" ikhadi lakho le-Android SD kwikhompyutha yakho."</string>
+ <string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"Vala isitoreji se-USB"</string>
+ <string name="usb_storage_stop_error_message" msgid="143881914840412108">"Kube nenkinga yokuvala isitoreji se-USB. Hlola ukuqiniseka ukuthi wehlise isikhungo se-USB, bese uzama futhi."</string>
+ <string name="dlg_confirm_kill_storage_users_title" msgid="963039033470478697">"Vula isitoreji se-USB"</string>
+ <string name="dlg_confirm_kill_storage_users_text" msgid="3202838234780505886">"Uma uvula isitoreji se-USB, ezinye izinhlelo zokusebenza ozisebenzisayo zizoma futhi zingase zingatholakali kuze kube yilapho uvala isitoreji se-USB."</string>
<string name="dlg_error_title" msgid="8048999973837339174">"Umsebenzi we-USB wehlulekile"</string>
<string name="dlg_ok" msgid="7376953167039865701">"KULUNGILE"</string>
<!-- no translation found for usb_mtp_notification_title (3699913097391550394) -->
@@ -1277,11 +1301,13 @@
<skip />
<!-- no translation found for usb_cd_installer_notification_title (6774712827892090754) -->
<skip />
+ <!-- no translation found for usb_accessory_notification_title (7848236974087653666) -->
+ <skip />
<!-- no translation found for usb_notification_message (4447869605109736382) -->
<skip />
- <string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Fometha ukugcina nge-USB"</string>
+ <string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"Fometha isitoreji se-USB"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"Fometha ikhadi le=SD"</string>
- <string name="extmedia_format_message" product="nosdcard" msgid="8296908079722897772">"Fometha ukugcina nge-USB, usule wonke amafayela agcinwe lapho? Isinyathelo asikwazi ukuguqulwa?"</string>
+ <string name="extmedia_format_message" product="nosdcard" msgid="8296908079722897772">"Fometha isitoreji se-USB, usule wonke amafayela agcinwe lapho? Isinyathelo asikwazi ukuguqulwa?"</string>
<string name="extmedia_format_message" product="default" msgid="3621369962433523619">"Uqinisekile ukuthi ufuna ukufometha ikhadi le-SD? Yonke idatha esekhadini lakho izolahleka."</string>
<string name="extmedia_format_button_format" msgid="4131064560127478695">"Ifomethi"</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Ukulungisa iphutha le-USB kuxhunyiwe"</string>
@@ -1292,28 +1318,28 @@
<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>"abahlanganyeli"</u></string>
- <string name="ext_media_checking_notification_title" product="nosdcard" msgid="3449816005351468560">"Ilungiselela ukugcina nge-USB"</string>
+ <string name="ext_media_checking_notification_title" product="nosdcard" msgid="3449816005351468560">"Ilungiselela isitoreji se-USB"</string>
<string name="ext_media_checking_notification_title" product="default" msgid="5457603418970994050">"Ilungisa ikhadi le-SD"</string>
<string name="ext_media_checking_notification_message" msgid="8287319882926737053">"Ihlola amaphutha"</string>
- <string name="ext_media_nofs_notification_title" product="nosdcard" msgid="7788040745686229307">"Ukugcina nge-USB okungenalutho"</string>
+ <string name="ext_media_nofs_notification_title" product="nosdcard" msgid="7788040745686229307">"Isitoreji se-USB esingenalutho"</string>
<string name="ext_media_nofs_notification_title" product="default" msgid="780477838241212997">"Ikhadi le-SD elingenalutho"</string>
- <string name="ext_media_nofs_notification_message" product="nosdcard" msgid="8623130522556087311">"Ukugcina nge-USB akunalutho noma kunohlelo lwefayela olungasekelwa."</string>
+ <string name="ext_media_nofs_notification_message" product="nosdcard" msgid="8623130522556087311"></string>
<string name="ext_media_nofs_notification_message" product="default" msgid="3817704088027829380">"Ikhadi le-SD alinalutho noma lunohlelo lwesistimu olungasekelwa."</string>
- <string name="ext_media_unmountable_notification_title" product="nosdcard" msgid="2090046769532713563">"Ukugcina nge-USB okonakele"</string>
+ <string name="ext_media_unmountable_notification_title" product="nosdcard" msgid="2090046769532713563">"Isitoreji se-USB esonakele"</string>
<string name="ext_media_unmountable_notification_title" product="default" msgid="6410723906019100189">"Ikhadi le-SD elonakele"</string>
- <string name="ext_media_unmountable_notification_message" product="nosdcard" msgid="529021299294450667">"Ukugcina nge-USB konakele. Kungase kudingeke ukufa ulifomethe futhi."</string>
+ <string name="ext_media_unmountable_notification_message" product="nosdcard" msgid="529021299294450667">"Isitoreji se-USB konakele. Kungase kudingeke ulifomethe kabusha."</string>
<string name="ext_media_unmountable_notification_message" product="default" msgid="6902531775948238989">"Ikhadi le-SD lonakele. Kungase kudingeke ukuba uyifomethe futhi."</string>
- <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"Ukugcina nge-USB kukhishwe ngokungalindelekile"</string>
+ <string name="ext_media_badremoval_notification_title" product="nosdcard" msgid="1661683031330951073">"Isitoreji se-USB sikhishwe ngokungalindelekile"</string>
<string name="ext_media_badremoval_notification_title" product="default" msgid="6872152882604407837">"Ikhadi le-SD likhishwe ngokungalindelekile"</string>
- <string name="ext_media_badremoval_notification_message" product="nosdcard" msgid="4329848819865594241">"Yehlisa ikhadi le-SD ngaphambi kokukhipha ukugwema ukulahleka kwedatha."</string>
+ <string name="ext_media_badremoval_notification_message" product="nosdcard" msgid="4329848819865594241">"Yehlisa ikhadi le-SD ngaphambi kokukhipha isitoreji se-USB ukugwema ukulahleka kwedatha."</string>
<string name="ext_media_badremoval_notification_message" product="default" msgid="7260183293747448241">"Yehlisa ikhadi le-SD ngaphambi kokukhipha ukugwema ukulahleka kwedatha."</string>
- <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"Kuvikelekile ukukhipha ukugcina nge-USB"</string>
+ <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"Sekuphephile ukukhipha isitoreji se-USB"</string>
<string name="ext_media_safe_unmount_notification_title" product="default" msgid="6729801130790616200">"Kuphephile ukukhipha ikhadi le-SD"</string>
- <string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"Ungakhipha ngokuvikelekile ukugcina nge-USB."</string>
+ <string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"Ungakhipha ngokuvikelekile isitoreji se-USB."</string>
<string name="ext_media_safe_unmount_notification_message" product="default" msgid="568841278138377604">"Ungakhipha ngokuphephile ikhadi le-SD."</string>
- <string name="ext_media_nomedia_notification_title" product="nosdcard" msgid="4486377230140227651">"Ukugcina nge-USB kukhishiwe"</string>
+ <string name="ext_media_nomedia_notification_title" product="nosdcard" msgid="4486377230140227651">"Isitoreji se-USB sikhishiwe"</string>
<string name="ext_media_nomedia_notification_title" product="default" msgid="8902518030404381318">"Ikhadi le-SD elikhishiwe"</string>
- <string name="ext_media_nomedia_notification_message" product="nosdcard" msgid="6921126162580574143">"Ukugcina nge-USB kukhishiwe. Faka imidiya entsha."</string>
+ <string name="ext_media_nomedia_notification_message" product="nosdcard" msgid="6921126162580574143">"Isitoreji se-USB sikhishiwe. Faka imidiya entsha."</string>
<string name="ext_media_nomedia_notification_message" product="default" msgid="3870120652983659641">"Ikhadi le-SD likhishiwe. Faka elisha."</string>
<string name="activity_list_empty" msgid="4168820609403385789">"Ayikho imisebenzi efanayo etholakele"</string>
<string name="permlab_pkgUsageStats" msgid="8787352074326748892">"buyekeza izibalo zokusebenzisa ingxenye"</string>
@@ -1321,7 +1347,7 @@
<string name="permlab_copyProtectedData" msgid="1660908117394854464">"Ivumela uhlelo lokusebenza ukucelela insizakalo yesiqukathi esimisiwe ukukopisha kokuqukethwe. Ayisebenziswa izinhlelo zokusebenza ezivamile."</string>
<string name="permdesc_copyProtectedData" msgid="537780957633976401">"Ivumela ukucelela insizakalo yesiqukathi esimisiwe ukukopisha kokuqukethwe. Ayisebenziselwa izinhlelo zokusebenza ezivamile."</string>
<string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Thepha kabili ukuthola ukulawula ukusondeza"</string>
- <string name="gadget_host_error_inflating" msgid="2613287218853846830">"Iphutha lesinqunjwana"</string>
+ <string name="gadget_host_error_inflating" msgid="2613287218853846830">"Iphutha lewijethi"</string>
<string name="ime_action_go" msgid="8320845651737369027">"Iya"</string>
<string name="ime_action_search" msgid="658110271822807811">"Sesha"</string>
<string name="ime_action_send" msgid="2316166556349314424">"Thumela"</string>
@@ -1341,7 +1367,7 @@
<string name="input_method_binding_label" msgid="1283557179944992649">"Indlela yokufakwayo"</string>
<string name="sync_binding_label" msgid="3687969138375092423">"Vumelanisaa"</string>
<string name="accessibility_binding_label" msgid="4148120742096474641">"Ukufinyeleleka"</string>
- <string name="wallpaper_binding_label" msgid="1240087844304687662">"Iphepha donga"</string>
+ <string name="wallpaper_binding_label" msgid="1240087844304687662">"Iphephadonga"</string>
<string name="chooser_wallpaper" msgid="7873476199295190279">"Shintsha iphephadonga"</string>
<!-- no translation found for vpn_title (8219003246858087489) -->
<skip />
@@ -1373,17 +1399,17 @@
<item quantity="other" msgid="4641872797067609177">"<xliff:g id="INDEX">%d</xliff:g> ku-<xliff:g id="TOTAL">%d</xliff:g>"</item>
</plurals>
<string name="action_mode_done" msgid="7217581640461922289">"Kwenziwe"</string>
- <string name="progress_unmounting" product="nosdcard" msgid="535863554318797377">"Yehlisa ukugcina nge-USB..."</string>
+ <string name="progress_unmounting" product="nosdcard" msgid="535863554318797377">"Yehlisa isitoreji se-USB..."</string>
<string name="progress_unmounting" product="default" msgid="5556813978958789471">"Yehlisa ikhadi le-SD..."</string>
- <string name="progress_erasing" product="nosdcard" msgid="4183664626203056915">"Isula ukugcina nge-USB."</string>
+ <string name="progress_erasing" product="nosdcard" msgid="4183664626203056915">"Isula isitoreji se-USB."</string>
<string name="progress_erasing" product="default" msgid="2115214724367534095">"Isula ikhadi le-SD..."</string>
- <string name="format_error" product="nosdcard" msgid="4320339096529911637">"Yehlulekile ukusula ukugcina nge-USB"</string>
+ <string name="format_error" product="nosdcard" msgid="4320339096529911637">"Yehlulekile ukusula isitoreji se-USB"</string>
<string name="format_error" product="default" msgid="1343380371925238343">"Yehlulekile ukususa ikhadi le-SD."</string>
<string name="media_bad_removal" msgid="7960864061016603281">"Ikhadi le-SD likhishwe ngaphambi kokuba lehliswe."</string>
- <string name="media_checking" product="nosdcard" msgid="418188720009569693">"Ukugcina nge-USB okwamanje kusahlolwa."</string>
+ <string name="media_checking" product="nosdcard" msgid="418188720009569693">"Isitoreji se-USB sisahlolwa."</string>
<string name="media_checking" product="default" msgid="7334762503904827481">"Ikhadi le-SD okwamanje liyahlolwa."</string>
<string name="media_removed" msgid="7001526905057952097">"Ikhadi le-SD likhishiwe."</string>
- <string name="media_shared" product="nosdcard" msgid="5830814349250834225">"Ukugcina nge-USB okwamanje kusetshenziswa ikhompyutha."</string>
+ <string name="media_shared" product="nosdcard" msgid="5830814349250834225">"Isitoreji se-USB sisasetshenziswa yikhompyutha."</string>
<string name="media_shared" product="default" msgid="5706130568133540435">"Ikhadi le-SD okwamanje lisetshenziswa ikhompyutha."</string>
<string name="media_unknown_state" msgid="729192782197290385">"Imidiya yangaphakathi kwisimo esingaziwa."</string>
<string name="share" msgid="1778686618230011964">"Yabelana"</string>
@@ -1465,4 +1491,6 @@
<skip />
<!-- no translation found for share_action_provider_share_with (1791316789651185229) -->
<skip />
+ <!-- no translation found for status_bar_device_locked (3092703448690669768) -->
+ <skip />
</resources>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 88ab983..f80f27d 100755
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -616,6 +616,14 @@
buttons. actionBarStyle is still used for the primary
bar. -->
<attr name="actionBarSplitStyle" format="reference" />
+ <!-- Reference to a theme that should be used to inflate widgets
+ and layouts destined for the action bar. Most of the time
+ this will be a reference to the current theme, but when
+ the action bar has a significantly different contrast
+ profile than the rest of the activity the difference
+ can become important. If this is set to @null the current
+ theme will be used.-->
+ <attr name="actionBarWidgetTheme" format="reference" />
<!-- Size of the Action Bar, including the contextual
bar used to present Action Modes. -->
<attr name="actionBarSize" format="dimension" >
@@ -711,9 +719,6 @@
<!-- Variation of textEditSidePasteWindowLayout displayed when the clipboard is empty. -->
<attr name="textEditSideNoPasteWindowLayout" format="reference" />
- <!-- Layout of a the view that is used to create the text suggestions popup window in an
- EditText. This window will be displayed below the text line. -->
- <attr name="textEditSuggestionsWindowLayout" format="reference" />
<!-- Layout of the TextView item that will populate the suggestion popup window. -->
<attr name="textEditSuggestionItemLayout" format="reference" />
@@ -3079,9 +3084,6 @@
<!-- Variation of textEditSidePasteWindowLayout displayed when the clipboard is empty. -->
<attr name="textEditSideNoPasteWindowLayout" />
- <!-- Layout of a the view that is used to create the text suggestions popup window in an
- EditText. This window will be displayed below the text line. -->
- <attr name="textEditSuggestionsWindowLayout" />
<!-- Layout of the TextView item that will populate the suggestion popup window. -->
<attr name="textEditSuggestionItemLayout" />
diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml
index 631d8c6..aee7ea4 100644
--- a/core/res/res/values/colors.xml
+++ b/core/res/res/values/colors.xml
@@ -18,8 +18,8 @@
*/
-->
<resources>
- <drawable name="screen_background_light">#ffffffff</drawable>
- <drawable name="screen_background_dark">#ff000000</drawable>
+ <drawable name="screen_background_light">#ffffffff</drawable>
+ <drawable name="screen_background_dark">#ff000000</drawable>
<drawable name="status_bar_closed_default_background">#ff000000</drawable>
<drawable name="status_bar_opened_default_background">#ff000000</drawable>
<drawable name="search_bar_default_color">#ff000000</drawable>
@@ -75,7 +75,7 @@
<drawable name="dialog_holo_dark_frame">@drawable/dialog_full_holo_dark</drawable>
<drawable name="dialog_holo_light_frame">@drawable/dialog_full_holo_light</drawable>
-
+
<drawable name="input_method_fullscreen_background">#fff9f9f9</drawable>
<drawable name="input_method_fullscreen_background_holo">@drawable/screen_background_holo_dark</drawable>
@@ -109,14 +109,14 @@
<color name="keyguard_text_color_decline">#fe0a5a</color>
<!-- keyguard clock -->
- <color name="lockscreen_clock_background">#b3ffffff</color>
- <color name="lockscreen_clock_foreground">#7affffff</color>
+ <color name="lockscreen_clock_background">#e5ffffff</color>
+ <color name="lockscreen_clock_foreground">#e5ffffff</color>
<color name="lockscreen_clock_am_pm">#ff9a9a9a</color>
<color name="lockscreen_owner_info">#ff9a9a9a</color>
<!-- For holo theme -->
- <drawable name="screen_background_holo_light">#fff3f3f3</drawable>
- <drawable name="screen_background_holo_dark">#ff000000</drawable>
+ <drawable name="screen_background_holo_light">#fff3f3f3</drawable>
+ <drawable name="screen_background_holo_dark">#ff000000</drawable>
<color name="background_holo_dark">#ff000000</color>
<color name="background_holo_light">#fff3f3f3</color>
<color name="bright_foreground_holo_dark">@android:color/background_holo_light</color>
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml
index 0ed8076..b3e50ea 100644
--- a/core/res/res/values/dimens.xml
+++ b/core/res/res/values/dimens.xml
@@ -35,7 +35,7 @@
<!-- Height of the system bar -->
<dimen name="system_bar_height">48dip</dimen>
<!-- Height of notification icons in the status bar -->
- <dimen name="status_bar_icon_size">25dip</dimen>
+ <dimen name="status_bar_icon_size">24dip</dimen>
<!-- Size of the giant number (unread count) in the notifications -->
<dimen name="status_bar_content_number_size">48sp</dimen>
<!-- Height of notification icons in the system bar -->
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index b2b7025..0555d10 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -1715,7 +1715,6 @@
<public type="attr" name="switchPreferenceStyle" />
<public type="attr" name="textSuggestionsWindowStyle" />
- <public type="attr" name="textEditSuggestionsWindowLayout" />
<public type="attr" name="textEditSuggestionItemLayout" />
<public type="attr" name="suggestionsEnabled" />
@@ -1782,6 +1781,11 @@
<public type="attr" name="actionModeStyle" />
+ <public type="attr" name="minResizeWidth" />
+ <public type="attr" name="minResizeHeight" />
+
+ <public type="attr" name="actionBarWidgetTheme" />
+
<public type="style" name="TextAppearance.SuggestionHighlight" />
<public type="style" name="Theme.Holo.SplitActionBarWhenNarrow" />
<public type="style" name="Theme.Holo.Light.SplitActionBarWhenNarrow" />
@@ -1820,7 +1824,4 @@
<public type="color" name="holo_orange_dark" />
<public type="color" name="holo_purple" />
<public type="color" name="holo_blue_bright" />
-
- <public type="attr" name="minResizeWidth" />
- <public type="attr" name="minResizeHeight" />
</resources>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index e1a31f4..147fff0 100755
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -2405,8 +2405,8 @@
<!-- Item on EditText context menu. This action is used to paste from the clipboard into the eidt field -->
<string name="paste">Paste</string>
- <!-- Text displayed in a popup dialog in TextEdit when the clipboard is empty. 'paste' is used otherwise. [CHAR LIMIT=20] -->
- <string name="pasteDisabled">Nothing to paste</string>
+ <!-- Item on EditText context menu. This action is used to replace the current word by other suggested words, suggested by the IME or the spell checker -->
+ <string name="replace">Replace</string>
<!-- Item on EditText context menu. This action is used to copy a URL from the edit field into the clipboard. -->
<string name="copyUrl">Copy URL</string>
@@ -3001,6 +3001,30 @@
<!-- Description of the button to decrement the NumberPicker value. [CHAR LIMIT=NONE] -->
<string name="number_picker_decrement_button">Decrement</string>
+ <!-- CheckBox - accessibility support -->
+ <!-- Description of the checked state of a CheckBox. [CHAR LIMIT=NONE] -->
+ <string name="checkbox_checked">checked</string>
+ <!-- Description of the not checked state of a CheckBox. [CHAR LIMIT=NONE] -->
+ <string name="checkbox_not_checked">not checked</string>
+
+ <!-- RadioButton/CheckedTextView - accessibility support -->
+ <!-- Description of the selected state of a RadioButton. [CHAR LIMIT=NONE] -->
+ <string name="radiobutton_selected">selected</string>
+ <!-- Description of the not selected state of a RadioButton. [CHAR LIMIT=NONE] -->
+ <string name="radiobutton_not_selected">not selected</string>
+
+ <!-- Switch - accessibility support -->
+ <!-- Description of the on state of a Switch. [CHAR LIMIT=NONE] -->
+ <string name="switch_on">on</string>
+ <!-- Description of the off state of a Switch. [CHAR LIMIT=NONE] -->
+ <string name="switch_off">off</string>
+
+ <!-- ToggleButton - accessibility support -->
+ <!-- Description of the pressed state of a ToggleButton. [CHAR LIMIT=NONE] -->
+ <string name="togglebutton_pressed">pressed</string>
+ <!-- Description of the not pressed state of a ToggleButton. [CHAR LIMIT=NONE] -->
+ <string name="togglebutton_not_pressed">not pressed</string>
+
<!-- Content description for the action bar "home" affordance. [CHAR LIMIT=NONE] -->
<string name="action_bar_home_description">Navigate home</string>
<!-- Content description for the action bar "up" affordance. [CHAR LIMIT=NONE] -->
@@ -3034,6 +3058,15 @@
<!-- Notification body when data usage has exceeded limit threshold, and has been disabled. [CHAR LIMIT=32] -->
<string name="data_usage_limit_body">tap to enable</string>
+ <!-- Notification title when 2G-3G data usage has exceeded limit threshold. [CHAR LIMIT=32] -->
+ <string name="data_usage_3g_limit_snoozed_title">2G-3G data limit exceeded</string>
+ <!-- Notification title when 4G data usage has exceeded limit threshold. [CHAR LIMIT=32] -->
+ <string name="data_usage_4g_limit_snoozed_title">4G data limit exceeded</string>
+ <!-- Notification title when mobile data usage has exceeded limit threshold. [CHAR LIMIT=32] -->
+ <string name="data_usage_mobile_limit_snoozed_title">Mobile data limit exceeded</string>
+ <!-- Notification body when data usage has exceeded limit threshold. [CHAR LIMIT=32] -->
+ <string name="data_usage_limit_snoozed_body"><xliff:g id="size" example="3.8GB">%s</xliff:g> over specified limit</string>
+
<!-- SSL Certificate dialogs -->
<!-- Title for an SSL Certificate dialog -->
<string name="ssl_certificate">Security certificate</string>
diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml
index 9b6c442..5aa47b7 100644
--- a/core/res/res/values/styles.xml
+++ b/core/res/res/values/styles.xml
@@ -423,7 +423,6 @@
<item name="android:textEditNoPasteWindowLayout">?android:attr/textEditNoPasteWindowLayout</item>
<item name="android:textEditSidePasteWindowLayout">?android:attr/textEditSidePasteWindowLayout</item>
<item name="android:textEditSideNoPasteWindowLayout">?android:attr/textEditSideNoPasteWindowLayout</item>
- <item name="android:textEditSuggestionsWindowLayout">?android:attr/textEditSuggestionsWindowLayout</item>
<item name="android:textEditSuggestionItemLayout">?android:attr/textEditSuggestionItemLayout</item>
<item name="android:textCursorDrawable">?android:attr/textCursorDrawable</item>
</style>
@@ -624,6 +623,7 @@
<item name="android:completionThreshold">2</item>
<item name="android:dropDownSelector">@android:drawable/list_selector_background</item>
<item name="android:popupBackground">@android:drawable/spinner_dropdown_background</item>
+ <item name="textCursorDrawable">@android:drawable/text_cursor_holo_light</item>
</style>
<style name="Widget.TabWidget">
@@ -712,16 +712,6 @@
<item name="android:quickContactWindowSize">modeLarge</item>
</style>
- <style name="Widget.ActivityChooserViewButton">
- <item name="android:layout_width">wrap_content</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:layout_gravity">center</item>
- <item name="android:background">?android:attr/selectableItemBackground</item>
- <item name="android:adjustViewBounds">true</item>
- <item name="android:scaleType">fitCenter</item>
- <item name="android:padding">@android:dimen/action_bar_icon_vertical_padding</item>
- </style>
-
<!-- Text Appearances -->
<eat-comment />
@@ -1075,14 +1065,10 @@
</style>
<!-- Style for the popup window that contains text suggestions. -->
- <style name="Widget.TextSuggestions">
- <item name="android:popupAnimationStyle">@android:style/Animation.TextSuggestions</item>
- </style>
-
- <!-- Animation effects when showing/hiding the text suggestions popup window. -->
- <style name="Animation.TextSuggestions">
- <item name="windowEnterAnimation">@android:anim/fade_in</item>
- <item name="windowExitAnimation">@android:anim/fade_out</item>
+ <style name="Widget.TextSuggestionsPopupWindow">
+ <item name="android:dropDownSelector">@android:drawable/list_selector_background</item>
+ <item name="android:popupBackground">@android:drawable/text_edit_suggestions_window</item>
+ <item name="android:dropDownWidth">wrap_content</item>
</style>
<style name="Widget.ActionBar">
@@ -1552,7 +1538,7 @@
<style name="Widget.Holo.TextSelectHandle" parent="Widget.TextSelectHandle">
</style>
- <style name="Widget.Holo.TextSuggestions" parent="Widget.TextSuggestions">
+ <style name="Widget.Holo.TextSuggestionsPopupWindow" parent="Widget.TextSuggestionsPopupWindow">
</style>
<style name="Widget.Holo.AbsListView" parent="Widget.AbsListView">
@@ -1983,6 +1969,9 @@
<style name="Widget.Holo.Light.TextSelectHandle" parent="Widget.TextSelectHandle">
</style>
+ <style name="Widget.Holo.Light.TextSuggestionsPopupWindow" parent="Widget.TextSuggestionsPopupWindow">
+ </style>
+
<style name="Widget.Holo.Light.AbsListView" parent="Widget.AbsListView">
</style>
diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml
index 93ccfe3..3e7c5ca 100644
--- a/core/res/res/values/themes.xml
+++ b/core/res/res/values/themes.xml
@@ -189,8 +189,7 @@
<item name="textEditNoPasteWindowLayout">@android:layout/text_edit_no_paste_window</item>
<item name="textEditSidePasteWindowLayout">@android:layout/text_edit_side_paste_window</item>
<item name="textEditSideNoPasteWindowLayout">@android:layout/text_edit_side_no_paste_window</item>
- <item name="textSuggestionsWindowStyle">@android:style/Widget.TextSuggestions</item>
- <item name="textEditSuggestionsWindowLayout">@android:layout/text_edit_suggestions_window</item>
+ <item name="textSuggestionsWindowStyle">@android:style/Widget.TextSuggestionsPopupWindow</item>
<item name="textEditSuggestionItemLayout">@android:layout/text_edit_suggestion_item</item>
<item name="textCursorDrawable">@null</item>
@@ -291,6 +290,7 @@
<item name="actionModePopupWindowStyle">?android:attr/popupWindowStyle</item>
<item name="actionMenuTextAppearance">@android:style/TextAppearance.Holo.Widget.ActionBar.Menu</item>
<item name="actionMenuTextColor">?android:attr/textColorPrimary</item>
+ <item name="actionBarWidgetTheme">@null</item>
<item name="dividerVertical">@drawable/divider_vertical_dark</item>
<item name="dividerHorizontal">@drawable/divider_vertical_dark</item>
@@ -954,7 +954,7 @@
<item name="textSelectHandleRight">@android:drawable/text_select_handle_right</item>
<item name="textSelectHandle">@android:drawable/text_select_handle_middle</item>
<item name="textSelectHandleWindowStyle">@android:style/Widget.Holo.TextSelectHandle</item>
- <item name="textSuggestionsWindowStyle">@android:style/Widget.Holo.TextSuggestions</item>
+ <item name="textSuggestionsWindowStyle">@android:style/Widget.Holo.TextSuggestionsPopupWindow</item>
<item name="textCursorDrawable">@android:drawable/text_cursor_holo_dark</item>
<!-- Widget styles -->
@@ -1043,6 +1043,7 @@
<item name="actionBarStyle">@android:style/Widget.Holo.ActionBar</item>
<item name="actionBarSize">@dimen/action_bar_default_height</item>
<item name="actionModePopupWindowStyle">@android:style/Widget.Holo.PopupWindow.ActionMode</item>
+ <item name="actionBarWidgetTheme">@null</item>
<item name="actionModeCutDrawable">@android:drawable/ic_menu_cut_holo_dark</item>
<item name="actionModeCopyDrawable">@android:drawable/ic_menu_copy_holo_dark</item>
@@ -1250,7 +1251,7 @@
<item name="textSelectHandleRight">@android:drawable/text_select_handle_right</item>
<item name="textSelectHandle">@android:drawable/text_select_handle_middle</item>
<item name="textSelectHandleWindowStyle">@android:style/Widget.Holo.TextSelectHandle</item>
- <item name="textSuggestionsWindowStyle">@android:style/Widget.Holo.TextSuggestions</item>
+ <item name="textSuggestionsWindowStyle">@android:style/Widget.Holo.Light.TextSuggestionsPopupWindow</item>
<item name="textCursorDrawable">@android:drawable/text_cursor_holo_light</item>
<!-- Widget styles -->
@@ -1339,6 +1340,7 @@
<item name="actionBarStyle">@android:style/Widget.Holo.Light.ActionBar</item>
<item name="actionBarSize">@dimen/action_bar_default_height</item>
<item name="actionModePopupWindowStyle">@android:style/Widget.Holo.Light.PopupWindow.ActionMode</item>
+ <item name="actionBarWidgetTheme">@null</item>
<item name="actionModeCutDrawable">@android:drawable/ic_menu_cut_holo_light</item>
<item name="actionModeCopyDrawable">@android:drawable/ic_menu_copy_holo_light</item>
@@ -1400,6 +1402,7 @@
<style name="Theme.Holo.Light.SolidActionBar.Inverse">
<item name="android:windowContentOverlay">@android:drawable/title_bar_shadow</item>
<item name="android:actionBarStyle">@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse</item>
+ <item name="actionBarWidgetTheme">@android:style/Theme.Holo</item>
<item name="actionDropDownStyle">@android:style/Widget.Holo.Spinner.DropDown.ActionBar</item>
<item name="actionButtonStyle">@android:style/Widget.Holo.ActionButton</item>